《软件工程笔记chapter 5 软件设计工程》由会员分享,可在线阅读,更多相关《软件工程笔记chapter 5 软件设计工程(8页珍藏版)》请在金锄头文库上搜索。
1、Chapter 5 软件设计工程软件设计:处于需求分析阶段及软件构造(或编码)阶段的中间位置。需求分析的主要任务是明确做什么,在完成了需求分析之后,就进入了软件设计阶段。软件设计既是过程又是模型:1)设计过程:迭代步骤,目标系统的各个侧面。2)设计模型:一系列不同的视图。软件设计的目标:涉及性能、可靠性、成本、维护等方面。软件设计的准则:1. 性能准则:包含系统速度和空间需求。2. 可靠性准则:指定时间内,成功的概率。3. 成本准则:包括开发、配置、管理系统的成本。4. 维护准则:完成开发后再次改变系统的困难度。5. 最终用户准则:从用户视点出发所需的属性。软件设计的任务:基于需求分析的结果建
2、立各种设计模型,给出问题解决的方案。软件设计概念:包括一套原理、概念和实践,可以指导高质量的系统或产品开发。软件设计的分类:(1)从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。 概要设计:1)将软件需求转化为软件体系结构2)确定系统级接口3)全局数据结构或数据库模式。 详细设计:1)确立每个模块的实现算法和局部数据结构2)用适当方法表示算法和数据结构的细节(2)从技术观点来看1)传统的结构化方法将软件设计分为 :数据设计、体系结构设计、接口设计、过程设计。2)面向对象方法则将软件设计划分为:体系结构设计、类设计/数据设计、接口设计、构件级设计。总的来说软件设计有6个:体系结构设计
3、,类设计,数据设计,接口设计,构件级设计,过程设计。软件设计的过程:制定规范软件系统结构的总体设计处理方式设计数据结构设计可靠性设计编写概要设计文档概要设计评审(8) 详细设计软件设计的目的是通过设计的结果和设计后续阶段的活动,生成高质量的软件产品。软件设计主要的技术目标:软件设计过程的主要产品,即软件设计说明书应完全体现软件需求规格说明的全部技术要求,同时实现这些要求的解决方案是可行的、有效的。软件设计的管理目标:软件设计过程应是在满足规定的约束下进行和完成的,这些约束来自于时间、人员、资金和环境。模块化是将程序划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责。每个模块可
4、独立地开发、测试,最后组装成完整的软件。模块化的依据:规律一:如果问题A的复杂性大于问题B,则解决问题A要的工作量大于解决问题B需要的工作量。即若C(A)C(B),则 E(A)E(B)。规律二:如果一个问题Q分别由A和B组成而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和。则工作量也大于分别解决问题的复杂度。即若C(A+ B)C(A)+C(B),则E(A+ B)E(A)+E(B)。结论:划分模块可以降低解决问题的复杂度和工作量。模块化两方面的问题:工作量 和 模块的数/大小。抽象是对事物共同的本质特性进行抽取和概括,忽略次要因素。两种常用的抽象手段::过程抽象和数据抽象。信息隐藏和信
5、息局部化不光适用于总体设计阶段,而是适用于整个软件开发阶段。(1)信息隐藏是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据)对于不需要这些信息的模块来说是不能访问的。符合信息隐藏的原则的例子:是对缓冲区资源设置专门的管理者。(例如缓冲管程,由它专管缓冲区的分配和释放,进程要求分配缓冲区时,唯一要做的工具是向管程发送一个消息“请求管程分给一个缓冲区”。)符合信息隐藏原则的优点:便于修改,可靠性改善,理解性好。(2)信息局部化是指在设计和确定模块时,把一些关系密切的软件元素,物理地放得彼此靠近(即最好是放在同一个模块内)。其优点是可维护性好、可靠性好、可理解性好。模块的独立性:模块的独
6、立性是指软件系统中的每个模块只涉及软件要求的具体子功能,而与软件中其它模块的接口是简单的,若一个模块只有单一的功能,且与其它的模块没有太多的联系,则称此模块为独立的。两个标准来度量模块的独立性:模块的耦合和模块的内聚。内聚是指模块内部各个成分之间的关系,又称为块内联系,是模块功能相对强度的度量。耦合是指一个模块与其它模块之间的联系,又称为块间联系,是模块之间相对独立性的度量。模块间传递的信息有两种:一种是数据信息,一种是控制信息。模块接口的复杂性包括三个因素:一是传送信息的数量,即有关的公共数据与调用参数的数量;二是联系方式;三是传送信息的结构。时间内聚又称为经典内聚。设计:复用性设计、灵活性
7、设计、可移植性设计、可测试性设计、防御性设计。结构化设计方法:结构化设计(structured design,SD)是一种面向数据流的设计方法,即根据系统的处理过程进行设计,故亦称为过程驱动的设计。结构化设计工作(软件设计阶段)与结构化分析方法(软件需求分析阶段)相衔接,可以很方便地将用数据流图表示的信息转换成程序结构的设计描述。结构化设计与结构化分析的关系:软件结构及表示工具:软件结构:用结构化设计方法进行设计,得到两类软件结构:软件的模块结构 和 软件的数据结构。(1)模块结构:树状结构和网状结构模块的树状结构:在模块的树状结构中,位于最上层的根是程序的主模块。与其联系的有若干下属模块。模
8、块的网状结构:任意两个模块之间都可以有调用关系。由于不存在上级模块和下属模块的关系,也就分不出层次来。工具:1) 结构图:它作为软件文档的一部分,清楚地反映出软件模块之间的层次调用关系和联系。结构图的主要成分包括:模块:在结构图中,模块用矩形框表示,并用模块的名字标记它。模块的调用关系和接口:在结构图中,两个模块之间用单向箭头连接。箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。 调用关系:箭头表示,A指向B:表示A调用B。 接口:用数据信息和控制信息来说明模块间接口。模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。(
9、控制信息,数据信息)重复(循环)调用和选择调用的符号。结构图的形态特征。扇入:作为被调用模块。表明该模块为基本模块,子功能模块。影响模块的复用性。扇出:作为调用模块。扇出数:511,即每层功能选择不可太多,多则复杂。结构图的深度、宽度。(2)数据结构数据结构是数据的各个元素之间逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度以及信息的不同处理方法。面向数据流的设计方法将数据流映射成软件的模块结构,数据流的类型决定了映射的方法。典型的数据流类型有变换流型和事务流型。分别映射成变换流型结构图和事务流型结构图。软件模块结构改进的方法:1. 模块功能完善化2.消除重复功能,改善软件
10、结构3. 模块的作用范围应在控制范围之内4. 尽可能减少高扇出结构5. 避免或减少使用病态联接6. 模块的大小要适中7. 设计功能可预测的模块8软件包应满足设计约束和可移植性接口设计接口设计的主要依据是数据流图中的系统边界。接口设计主要包括三个方面:模块或软件构件之间的接口设计;软件与其他软/硬件系统之间的接口设计;软件与人(用户)之间的交互设计。面向对象的系统设计:面向对象的系统设计的主要活动是进行子系统分解,并在此基础上定义子系统构件之间的接口。封闭体系结构的例子就是应用层开放系统互联参考模型(OSI模型),它由七层构成。开放体系结构的一个例子是Java的Swing用户接口包。它允许人们绕
11、过高层 AWT数据链层 数据帧直接访问低层接口以克服性能瓶颈。子系统之间的两种交互方式:客户-供应商关系;平等伙伴(Peer to Peer)关系。组织系统的两种方案:(1)水平层次组织、(2)垂直块状组织、(3)混合使用层次组织和块状组织。典型的面向对象系统的分层结构一般由三层组成,即数据库层、业务逻辑层及用户界面层。用户界面应具备的特性:可使用性、灵活性、可靠性。任务管理部分的设计:任务是进程的别称,是执行一系列活动的一段程序。任务管理上要包括任务的选择和调整。1 识别事件驱动任务2 识别时钟驱动任务3 识别优先任务4 识别关键任务5 识别协调任务6 审查每个任务7 定义每个任务数据管理部
12、分的设计:数据管理的方法主要有3种:文件管理、关系数据库管理和面向对象数据库管理。对象设计:对象设计的主要任务是追加解空间的对象和对已有对象进行细化。对象设计包括:复用服务规格说明重构对象模型优化对象模型。处理过程设计:过程设计的目的是为软件结构图中的每个模块确定采用的算法和数据结构。工具有:图形工具、表格工具和语言工具。结构化程序设计的主要原则有两条:1) 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。2) 按照自顶向下、逐步求精的原则,从程序的整体框架入手,逐步引入实现逻辑。图形工具:程序流程图N-S图问题分析图(PAD)语言工具:程序设计语言PDL :一种伪码。表格工具:
13、判定表(决策表):用于表示程序的静态逻辑。包括两部分,条件和动作。条件部分:给出所有的两分支判断的列表;动作部分:给出相应的处理。面向数据结构的设计方法:(1)在面向数据流的方法中,数据流是考虑一切问题的出发点。在分析阶段:数据流图DFD(表示软件的逻辑模型);在设计阶段:软件结构图SC。(2)面向数据结构的设计是以数据结构作为工作的基础。由一个问题的数据结构,导出它的程序结构,这就是面向数据结构设计方法的根据与基本思想。换言之,在概要设计阶段,首先用SD方法(面向数据流方法)确定软件的结构,然后在详细设计阶段用面向数据结构的方法确定部分或全部模块的逻辑过程。Jackson方法JSD方法(Jackson System Development)Jackson图:与Jackson方法配套使用的表达工具。只有三类逻辑数据结构:顺序、选择和重复。Jackson图顺序结构选择结构重复结构改进的Jackson图:软件设计规格说明: