? 从概要设计过渡到详细设计时,抽象级再一次降低; ? 编码完成后达到了抽象的最低级。
软件设计过程应当是在不同抽象级别上考虑和处理问题的过程。最初,应在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式,而后不断地具体化,不断地用面向过程的语言描述问题,最后,在最低的抽象级别上给出可直接实现的“问题解”,即程序。
在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。 过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表; 数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名。
求精也称为细化,细化与抽象是互补的概念,因分级抽象的过程也是逐步求精的过程。细化的本质是分解,表现就是分层。
(7)信息隐蔽
信息隐蔽:模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。 信息隐蔽目的(优点):它不仅支持模块的并行开发,而且还可减少测试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐蔽可以减少错误向外传播。此外,整个系统欲扩充功能亦只需“插入”新模块,原有的多数模块无须改动。 (8)模块独立性
模块独立性指每个模块只完成独立的子功能,并且与其它模块的联系最少且接口简单。 模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 1.模块独立性的重要性
(1)具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简
化,当许多人分工合作开发同一个软件时,这个优点尤其重要。
(2)独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量
比较小,错误传播范围小,需要扩充功能时能够“插入”模块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。
模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
模块独立性原则同样适用于面向对象方法。 2.耦合
耦合是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。 具体区分模块间耦合程度的强弱的标准如下: (1) 非直接耦合 (2)数据耦合 (3)特征耦合 (4)控制耦合 (5)外部耦合 (6)公共耦合 (7)内容耦合
总之,耦合是影响软件复杂程度的一个重要因素。应该采取的原则是:尽量使用数据耦合,
11
少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。 3.内聚
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。 (1)偶然内聚 (2)逻辑内聚 (3)时间内聚 (4)过程内聚 (5)通信内聚 (6)顺序内聚
(7)功能内聚
按问题找答案: 1. 什么是软件设计?该阶段的基本任务是什么? 2.软件设计的基本原理要掌握和贯穿哪些概念? 3.从软件开发过程来理解抽象与精化
最高抽象是哪个阶段,对谁抽象?用什么表达? 逐步精化目标是指什么?用什么表达? 4.模块独立给软件开发和维护带来什么好处?
5.衡量模块独立性的两个标准是什么?各表示什么含义?
6.什么是模块的作用域、控制域?它们之间应建立什么关系?什么是模块的深度、宽度、扇出和扇入?这些概念对软件设计有何用途?
第六章 面向结构的从分析到设计
第七章 面向对象的从分析到设计
一、重点掌握的内容:
面向对象的基本概念和特征 二、一般掌握内容:
面向对象分析与设计方法 三、考核知识点:
(1)面向对象的基本概念:
面向对象的几个重要概念:对象、消息、方法性、继承性、封装性等。
12
①从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。
②事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。 ③对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节(称作封装)。 ④对事物进行分类。把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。
⑤通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。 ⑥复杂的对象可以用简单的对象作为其构成部分,称作聚合。 ⑦对象之间通过消息进行通信,以实现对象之间的动态联系。 ⑧通过关联表达对象之间的静态关系。 (2)面向对象的优点:
①自然性。按照人类的自然思维方式,追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。有利于对问题域和系统责任的理解,有利于人员交流。
②阶段衔接平滑。 面向对象的方法改进了在生存期各个阶段之间的接口,各阶段开发出来的“部件”都是类。各阶段是对各个类进行逐步的细化,类成为分析、设计和实现的基本单元。因此,填平了语言之间的鸿沟,使得开发活动之间平滑过渡。下图显示了传统的软件工程方法与面向对象方法的比较。
③实现复用。 对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用。对象类可以派生出新类,类可以产生实例对象,从而实现了对象类的数据结构和操作代码的软构件的复用。另外,面向对象程序设计语言的开发环境一般预定义了系统动态连接库,提供大量公用程序代码
④维护性好。 在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,容易定位和修改,系统的可维护性好。
(2) 面向对象的分析
? 掌握统一方法使用特点: 1)支持用例驱动
用例成为系统分析、设计、测试、编写文档的基础。 2)以体系结构为中心
以系统的体系结构为核心,在开发过程中对系统进行抽象、构造、管理和改进。 3)遵循迭代的或增量的开发过程(RUP)
这种开发过程使软件开发人员渐进地开发和逐步完善软件系统,其每一次迭代都产生比上一次发布有所改善的新发布,而每一次发布都努力处理和降低对项目成功影响最为显著的风险。
? 分析过程
? 采用Actor+Use Case来建立问题领域模型(发现角色和用例,用例描述)。 ? 发现和定义对象与类(边界类、业务类\\逻辑类、实体类)。 ? 为对象定义属性和分配行为(通过时序图或协作图)。
? 识别对象的外部联系(一般与特殊;整体与部分;实例连接(关联性);消息连接)。
13
7.3.1 统一方法的OOA过程3. 基于UML统一方法OOA?基本步骤:①获取和描述系统的用户需求;②识别角色和用例,画UseCase;Actor用例1用例2③从用例图中找类;④为类封装属性和操作;类1类1类2**类2⑤定义类的结构和层次;⑥建造动态模型;⑦评审;关联类1状态1 OOA分析模型formOOA模型用例模型类模型Model用例Entity角色视图模型逻辑模型实体模型
(4)面向对象设计:
OOA与OOD的职责划分是:
OOA针对问题域运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统的具体实现有关的因素(例如采用什么编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体的实现。
OOD则是针对系统的一个具体的实现环境对OOA进行细化。其中包括两方面的工作,一是体系结构设计,既软件系统运行环境设计;二是针对具体实现环境中对OOA细化,既对分析中的领域问题的三个模型细化,分为四个子系统:
? 问题域—直接负责实现客户需求的子系统
? 人机交互—实现用户界面的子系统(包括可复用的GUI子系统) ? 任务管理—负责控制和协调并发任务的子系统,任务可能被包装在一个子系统中或不同
的子系统间;
? 数据管理—负责对象的存储和检索的子系统
14
4)从OOA得到OOD模型OOOOAA模模型型OOOODD模模型型?
详详细细设设计计系系统统结结构构设设计计7.4.1 OOD概述formModel用例Entity用例模型用例模型角色类模型类模型领域结构领域结构(底层设计)(底层设计)视图模型逻辑模型实体模型用户界面子系统用户界面子系统领域问题子系统领域问题子系统数据管理子系统数据管理子系统任务管理任务管理(高层设计)(高层设计)事件的驱动管理事件的驱动管理网络传输及安全管理网络传输及安全管理对象生命周期管理对象生命周期管理多线程并发管理多线程并发管理异常管理异常管理OR映射管理OR映射管理事务管理事务管理数据安全管理数据安全管理缓冲机制管理缓冲机制管理任务管理子系统任务管理子系统
(6)面向对象方法与传统软件工程方法的区别 ①都经过分析-设计-编码-测试-维护过程
②传统:以数据加工为驱动;对象:以用例为驱动
③传统:对客观事物进行分解,破坏了客观事物的整体性;对象:从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。 ④传统:分析和设计采用不同的工具和方法,过渡困难;对象:分析与设计过渡平滑。
*** 复习课件中的“学生注册课程系统”
按问题找答案: 1. 面向对象方法相比结构化方法有何优点?
2. 建立用户需求的业务模型用Actor+UseCase图就可以了吗? 3. 活动图有何用途?
4. 如何利用Actor+UseCase图来发现和定义类?
5. 一般来说类的属性分配比较容易,但如何分配类的行为? 6. 类间的外部联系有几种类型? 7. OOA最终形成哪两大结构图?
8.OOD如何从OOA衔接?OOD仅仅是对OOA得到的类模型进行细化吗?
辨析:
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库TOP - 2011年软件工程复习(3)在线全文阅读。
相关推荐: