《信息系统分析与设计》第6章PPT课件下载推荐.ppt
《《信息系统分析与设计》第6章PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《《信息系统分析与设计》第6章PPT课件下载推荐.ppt(33页珍藏版)》请在冰豆网上搜索。
包括分析对象模型,设计对象与类的属性,设计对象与类的实现结构,以及设计消息与事件的内容和格式。
(2)设计系统结构。
设计系统结构阶段的主要任务是设计组件与子系统以及它们之间的静态和动态关系。
对于人机界面、数据管理、任务管理等问题,在面向对象分析阶段一般不提及,而是等到面向对象设计阶段再进行分析。
6.1从面向对象分析到面向对象设计从面向对象分析到面向对象设计6.1.16.1.1从面向对象分析到面向对象设计从面向对象分析到面向对象设计5/28面向对象系统设计的主要工作包括以下几个方面的内容:
(3)设计人机交互子系统。
此阶段的主要任务是设计用户界面,设计人机交互操作命令和操作顺序,设计详细交互过程,设计工作的内容包括用户分类,设计人机交互类等。
(4)设计数据管理子系统。
此阶段主要是确定数据管理方法,设计数据库与数据文件的逻辑结构和物理结构。
面向对象的分析设计方法注重的是问题涉及的对象以及对象的相互关系和相互作用,并在此基础上构造这些问题的模型,以期将要解决的实质问题模型化。
6.1从面向对象分析到面向对象设计从面向对象分析到面向对象设计6.1.16.1.1从面向对象分析到面向对象设计从面向对象分析到面向对象设计6/28简单与复杂简单与复杂
(1)小规模和小团队开发的系统在整体框架选择和层次结构上应尽量简单,而大规模的系统,要考虑到众多模块的合理配置,需要构建更多的层次,选用成熟的框架体系。
(2)在系统资源有限的硬件平台上运行的系统,例如嵌入式系统,在设计时应尽量简单,以提高运行效率;
而在PC机以及服务器上运行的系统,可以采用复杂设计,已获得更好的扩展性。
(3)对于运行性能要求高的系统,例如需要提供并发服务的服务器系统,则在访问频繁的模块设计上应遵循简单的原则。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则7/28简单与复杂简单与复杂(4)对于开发水平参差不齐的团队,在开发方案的选择上注意选取简单的方案,减少内部培训和交流的代价。
而成熟的开发团队,则可以根据设计目标灵活地选择设计方案。
(5)在一个系统的设计中,简单和复杂的原则可能是交替作用的,在整体结构复杂的系统中,可能在关键性能模块的设计上追求简单。
而在整体结构简单的系统中,对于某些通用性较强的模块可能采用复杂设计。
(6)即使确定了简单和复杂的原则,也需要考虑到“度”,过度设计只会使得某些超前的设计方案被废弃。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则8/28模块化模块化u模块化是软件设计方法不断演变所追求的目标之一,软件的模块化使得软件的各个功能在设计时相对独立,能够降低软件设计的复杂度。
u面向对象软件开发方法,对象就是模块。
它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。
u对象与单元的区别在于:
对象是数据与操作紧密结合的,在软件运行中有一定生命周期的实体。
而单元只是一组函数功能的集合。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则9/28抽象化抽象化u面向对象方法不仅支持过程抽象,而且支持数据抽象。
u在类的设计中要考虑各种类的关系,需要从具体类中抽象出具有共同特性的父类或者接口,子类继承父类的方法,并可以重构不同的实现。
类实际上是一种抽象数据类型,它对外开放的公共接口(interface)构成了类的规格说明,这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类实例中包含的数据进行操作。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则10/28弱耦合与信息隐藏弱耦合与信息隐藏u对象间的耦合可分为两大类:
(1)交互耦合。
如果对象间的耦合是通过消息连接来实现,则这种耦合属于交互耦合。
交互耦合应该尽可能松散。
(2)继承耦合。
继承是一般化类与特殊类间耦合的一种形式,从本质来看,是一种通过继承关系结合起来的基类和派生类,构成了系统中粒度更大的模块。
它们之间是结合得越紧密越好。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则11/28信息隐藏实现弱耦合的重要手段,在面向对象方法中,信息隐藏通过对象的封装性实现.对象的封装有两种形式:
源代码级的封装;
二进制代码级的封装。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则12/28可重用可重用u软件重用是提供高软件开发生产率和目标系统质量的重要途径。
派生和继承是代码重用的基础。
u重用有两方面的含义:
一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类),二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。
6.2面向对象系统设计的准则面向对象系统设计的准则6.2.16.2.1面向对象系统设计准则面向对象系统设计准则13/28设计结果应该清晰易懂设计结果应该清晰易懂
(1)用词一致
(2)使用已有的协议(3)减少消息模式的数目(4)避免模糊的定义使类等级中包含的层次数适当使类等级中包含的层次数适当应该使类等级中包含的层次数适当,一般来说,在一个中等规模(大约包含100个类)的系统中,类等级层次数应保持为72。
6.3启发规则启发规则14/28设计简单的类设计简单的类
(1)
(1)避免包含过多的属性;
避免包含过多的属性;
(2)
(2)有明确的定义;
为了使类的定义明确,分配给每个类的任有明确的定义;
为了使类的定义明确,分配给每个类的任务应该简单,最好能用一两个简单语句描述它的任务。
务应该简单,最好能用一两个简单语句描述它的任务。
(3)(3)尽量简化对象之间的合作关系;
对象间的合作关系应尽可尽量简化对象之间的合作关系;
对象间的合作关系应尽可能的简单。
能的简单。
(4)(4)不要提供太多服务;
不要提供太多服务;
一个类提供的公共服务不超过一个类提供的公共服务不超过77个;
个;
在开发大型软件系统时,解决这个问题的办法,是把系统在开发大型软件系统时,解决这个问题的办法,是把系统中的类按逻辑分组。
中的类按逻辑分组。
(5)(5)使用简单的协议;
一般消息中的参数不要超过使用简单的协议;
一般消息中的参数不要超过33个。
个。
(6)(6)使用简单的服务;
使用简单的服务;
(7)(7)把设计变动减至最小。
把设计变动减至最小。
6.3启发规则启发规则15/28面向对象方法的一个主要目标,就是提高软件的可重用性。
软件重用就是将已有的软件成分用于构造新的软件系统。
可以被重用的软件成分一般称作可重用构件,无论对可重用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作重用。
重用级别:
u代码的重用u设计的重用u分析的重用u测试信息的重用6.4软件重用软件重用16/28设计复杂应用系统时,会首先根据功能对系统进行分解,然后再分别设计各子系统。
各子系统间通过接口进行连接和信息传递,接口确定了子系统间的交互形式和需传递的信息。
划分和设计子系统时,应该尽量减少子系统间的耦合度。
6.5系统分解系统分解17/28问题域子系统设计;
可能对面向对象分析所得出的问题域模型做的补充或修改。
(1)调整需求
(2)重用已有类(3)组合问题域类(4)增添一般化类以建立协议(5)调整继承层次6.6典型的面向对象设计典型的面向对象设计18/28人机交互子系统设计人机交互子系统设计在面向对象设计过程中,应该对人机交互子系统进行详细设计,以确定人机交互的细节,其中包括指定窗口和报表的形式、设计命令层次等内容。
u设计人机交互子系统的策略
(1)分类用户
(2)描述用户(3)设计命令层次(4)设计人机交互类6.6典型的面向对象设计典型的面向对象设计19/28任务管理子系统设计任务管理子系统设计u分析并发性u设计任务管理子系统确定事件驱动型任务确定时钟驱动型任务睡眠状态。
确定优先任务确定关键任务确定协调任务尽量减少任务数确定资源需求6.6典型的面向对象设计典型的面向对象设计20/28数据管理子系统,是系统存储或检索对象的基本设施,它建立在某种数据存储管理系统之上,并且隔离了数据存储管理模式的影响。
u选择数据存储管理模式优点缺点文件管理系统成本低、简单级别低,必须编写额外的代码,不同操作系统的文件管理系统差异明显关系数据库管理系统提供了各种最基本的数据管理功能,提供了一致的接口,标准化的语言运行开销大,不能满足高级应用的需求,与程序设计语言的连接不自然面向对象数据库管理系统扩展的关系数据库管理系统,扩展的面向对象程序设计语言6.6典型的面向对象设计典型的面向对象设计21/28设计数据管理子系统u设计数据格式,存储管理模式的设计方法:
文件系统:
定义1NF表;
为每个1NF表定义一个文件;
关系数据库管理系统:
定义3NF表;
为每个3NF表定义一个数据库表;
面向对象数据库管理系统:
扩展的关系数据库途径;
扩展的面向对象程序设计语言途径。
u设计相应的服务如果某个类的对象需要存储起来,则在这个类中增加一个“隐含”的属性和服务,用于完成存储对象自身的工作。
6.6典型的面向对象设计典型的面向对象设计22/28下面介绍使用不同数据存储管理模式时的设计要点。
被存储的对象需要知道打开哪些文件,怎样把文件定位到正确的记录上,怎样检索出旧值,以及怎样用现有值更新它们;
应该定义一个ObjectServer类,并创建它的实例,该类提供下列服务:
通知对象保存自身,检索已存储的对象。
被存储的对象,应该知道访问哪些数据库表,怎样访问所需要的行,怎样检索出旧值,以及怎样用现有值更新它们;
应该定义一个ObjectServer类,并声明它的对象,该类提供下列服务:
通知对象保存自身,检索已存储