版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4 . 1 软件设计概述软件设计概述4 . 2 模块化设计原理模块化设计原理4 . 3 软件结构软件结构4 . 4 软件体系结构模型软件体系结构模型4 . 5 结构化软件设计结构化软件设计4 . 6 面向对象的设计面向对象的设计4.1.1 软件设计过程软件设计过程软件设计过程主要包括总体设计、详细设计和设计测试3项活动,这3项活动在各具特色的软件设计方法中以不同的过程形式表现。软件设计的第1类活动是总体设计,也称为“概要设计”、“软件结构设计”或“高层设计”。软件设计说明文档是设计规约的模板,描述所有设计信息。表4-1给出了一个软件设计文档标准示例。1 范围1.1系统目标1.2 主要软件需求1
2、.3 软件设计约束、限制2 数据设计2.1 数据对象和形成的数据结构2.2文件和数据库结构2.2.1 外部文件结构 逻辑结构 逻辑记录描述 访问方法2.2.2 全局数据2.2.3 文件和数据交叉索引3 体系结构设计3.1 数据和控制流复审3.2 得出的程序结构4 接口设计4.1 人机界面规约4.2 人机界面设计规约4.3 外部接口设计4.3.1 外部数据接口4.3.2 外部系统或设备接口4.4 内部接口设计规约5 (每个模块)过程设计5.1 处理说明5.2 接口描述5.3 设计语言描述5.4 使用的模块5.5 内部设计结构5.6 注释/约束/限制6 需求交叉索引7 测试部分7.1测试方针7.2
3、 集成策略7.3 特殊考虑8 附录(包括特殊注解)表4-2给出了详细设计说明书模板。1 引言1.1 编写目的:阐明编写详细设计说明书的目的,指明读者对象1.2 项目背景:应包括项目的来源和主管部门等1.3 定义:列出本文档中所用到的专门术语的定义和缩写词 列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源 文档所引用的资料、软件开发的标准或规范1.4 参考资料项目经核准的计划任务书、合同或上级机关的批文项目开发计划;需求规格说明书;概要设计说明书测试计划(初稿)用户操作手册2 总体设计2.1 需求概述2.2 软件结构:如给出软件系统的结构图3 程序描述3.1 逐个模块给出以下说明 性
4、能 输出项目 功能 输入项目3.2 算法:模块所选用的算法3.3 程序逻辑:详细描述模块实现的算法,可采用标准流程图;PDL语言;N-S图;判定表等描述算法的图表3.4 接口 限制条件 存储分配3.5测试要点:给出测试模块的主要测试要求4.2.1 模块化模块化问题总的复杂性和总工作量会随着分解逐步减少。但是如果无限地分解下去,总工作量反而会增加。这是因为一个软件系统的各个模块之间是相互关联的,模块划分的数量越多,模块间的联系也就越多。模块本身的复杂性和工作量虽然随着模块变小而减少,模块的接口工作量却随着模块数增加而增大。软件模块化开发存在一个最小成本区,把模块数控制在一定的范围内可以得到最小的
5、总开发工作量,因此软件模块化必须保证科学、合理地进行模块分解。抽象具有不同的级别,在最高的抽象级上,使用问题所处环境的语言,以概括性的术语描述解决方案;在较低的抽象级上,将提供更详细的解决方案说明。例如,当考虑开始需求时,与用户使用业务描述语言和领域术语交谈,主要目的是了解用户的动机。分解技术是模块化概念的一个基本问题,目的是分解一个软件解决方案以求获得最好的模块集合。信息隐蔽原则建议模块应该具有的特征是每个模块对其他所有模块都隐蔽自己的设计决策。信息隐蔽意味着通过一系列独立的模块可以得到有效地模块化,这些独立的构件或模块之间仅交换那些必须交换的信息,且交互是最简单的。1内聚性内聚性内聚性是从
6、功能的角度对模块内部聚合能力的度量,模块的内聚性按照从弱到强逐步增强的顺序可分成7类,如图4-1所示。高内聚是模块独立性追求的目标。2耦合性耦合性耦合性是对一个软件结构内不同模块之间互连程度的度量,其强弱取决于模块间接口的复杂程度及通过接口的数据类型和数目。模块的耦合度按照从弱到强逐步增强的顺序也可分成7类,如图4-2所示。逐步求精是一种自顶向下的设计策略,通过连续精化层次结构的软件细节实现软件的开发。层次结构的开发将通过逐步分解功能的过程抽象,直至形成程序设计语言的语句。逐步求精是人类采用抽象到具体的过程,把一个复杂问题趋于简单化控制和管理的有效策略,这是一个细化的过程。开发软件时应从在高抽
7、象级上定义的功能陈述或数据描述开始,然后在这些原始陈述上持续细化越来越多的细节。重构是一种重新组织的技术,可以简化构件或模块的设计或编码且无须改变其功能或行为。这是一种改进程序内部结构,但不改变代码或设计的外部行为。软件结构图的主要元素如下。(1)模块:模块用带有名字的方框表示,名称应体现模块的功能。(2)控制关系:控制关系用单向箭头或直线表示模块间的调用关系。(3)信息传递:用带注释的短箭头表示模块调用过程中传递的信息。(4)循环调用和选择调用:在上部模块底部加一个菱形符号表示选择调用,在上部模块的下方加一个弧形箭头,表示循环调用。(5)软件结构图的形态特征如下。(6)画结构图应注意的事项如
8、下。4.4.1 系统构成模型系统构成模型1以数据为中心的结构模型以数据为中心的结构模型大多数使用大量数据的系统都是围绕共享数据库(或者称为“容器”)组织的,所以基于一个共享数据库的系统模型称为“以数据为中心的结构模型”。这个模型适合于数据由一个子系统产生,而其他子系统共享使用的系统结构,这种类型的系统有命令控制系统、管理信息系统、CAD系统和CASE工具集成系统等。图4-4所示所示为基于一个共享数据的CASE工具集成系统的系统结构示例。2数据流体系结构模型数据流体系结构模型当输入数据经过一系列的计算和操作构件或模块的变换形成输出数据时,可以应用数据流体系结构。管道和过滤器体系结构(如图4-5所
9、示)通过一组由管道连接的过滤器变换数据,并向下传递。3客户机客户机/服务器结构模型服务器结构模型客户机/服务器结构模型的主要组成部分如下。(1)一组给其他子系统提供服务的单机服务器。(2)一组向服务器请求服务的客户机。(3)一个连接客户机和服务器的网络(可选)。客户机必须知道可用的服务器的名字及其所提供的服务,并通过远程调用获取服务器提供的服务;反之,服务器没有必要知道客户机的身份,以及到底有多少客户机在运行。图4-6所示为多媒体服务系统。4抽象机模型抽象机模型抽象机模型也称为“分层模型”,是建立子系统的接口模型。它把子系统组织成一系列的层次,每一层提供一组服务,并定义为一个抽象机。例如,网络
10、协议OSI参考模型就是一个有影响的抽象机模型例子,如图4-7所示。1集中式控制集中式控制(1)调用返回模型:这是一个自上而下的子过程模型。控制始于系统的顶层,在子系统(程序)调用过程中,控制逐步传递到更低的层次中。该模型适用于顺序执行的系统。(2)管理者模型:这是一种适用于并发系统的模型,一个系统组件被指定为系统管理者,控制其他系统过程的启动、终止和协调。一个过程就是一个能和其他过程并发执行的子系统或模块。图4-8所示是一个实时系统的集中式控制模型例子。2事件驱动系统事件驱动系统在集中式控制模型中,控制决断通常由一些系统状态变量值决定;相反,事件驱动的控制模型是通过外部产生的事件驱动系统的。有
11、多种不同的基于事件驱动的系统,如电子表格和基于规则的产生式系统等。广播模型和中断驱动模型是两种事件驱动的控制模型。4.5.1 面向数据流的设计方法面向数据流的设计方法1数据流类型数据流类型根据基本系统模型,数据信息必须以“外部”信息形式进入软件系统。例如,键盘输入的数据和鼠标交互的事件等,经过内部处理以后再以“外部”的形式离开系统。根据数据信息的“流动”特点,可分为3种数据流类型,即变换型数据流,事务型数据流和混合型数据流。图4-9所示为变换型数据流模型表示信息的时间“历史”状况。当数据流经过一个具有 “事务中心”特征的数据处理时,它可以根据事务类型,从多条路径的数据流中选择一条活动通路。这种
12、具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称为“事务流”。图4-10所示为具有事务流特征的数据流图示例。在一个大型系统的DFD中,变换流和事务流往往会同时出现。例如,在一个事务型的DFD中,分支动作路径上的信息流也可能会体现出变换流的特征,如图4-11所示。其中以事务流为中心,在分支通路上出现变换型的数据流。有些系统中以变换流为中心,且在变换中以拥有多条通路的事务流形式存在,如图4-12所示。2数据流设计方法数据流设计方法(1)复查基本系统模型,并精化系统数据流图。(2)分析数据流类型,确定数据流具有变换流特征,还是事务流特征。(3)如果是变换流特征,确定输入流和输出流的边界(
13、也分别称为“最高输入/输出抽象点”),该流边界之间就是变换流,也称为“变换中心”。(4)采用自顶向下,逐步求精的方式完成模块分解,确定相应的软件组成结构,并对每一个模块给出一个简要说明,包括模块接口信息,模型内部信息,过程陈述和约束等。(5)根据模块独立性原理和运用设计度量标准,对导出的软件结构进行优化。【案例案例4.1】 统计文件中单词数目的数据流设计统计文件中单词数目的数据流设计统计文件中单词数目系统的数据流图如图4-13所示。根据输入流边界和输出流边界确定了输入、变换、输出数据流,软件可第1次分解成如图4-14所示的3个模块的结构。“读取和验证文件名”、“统计单词数目”和“格式化和显示单
14、词数”模块分别对应数据流图的输入、变换和输出3个部分。“读取和验证文件名”模块把验证标志传给“统计单词数”模块。文件名若无效,则打印错误信息,退出系统;若有效,则统计该文件的单词数目,然后传给“格式化和显示单词数”模块。“读取和验证文件名”及“格式化和显示单词数”模块具有通信内聚性,可分别把各自的功能进一步分解为下属模块功能。图4-15给出了第3次分解后的软件结构图。【案例案例4.2】 自动柜员机(自动柜员机(ATM)事务流设计)事务流设计“自动柜员机(ATM)业务”软件的数据流图如图4-16所示。ATM系统结构应分解为事务分析器与事务调度器两部分,分析器确定事务类型,并将事务类型信息传给调度
15、器,然后由调度器执行该项事务;事务操作部分可以逐步求精,直到给出最基本的操作细节。事务基本操作细节模块往往是被上层模块共享的,这部分结构模式往往被称为“瓮型”结构。图4-17给出了ATM软件结构图。【案例案例4.3】 公司的销售管理系统设计公司的销售管理系统设计一个公司的销售管理系统的数据流图如图4-18所示。在每个功能中都经历了数据输入数据变换,以及分析数据输出这样的变换型数据流程。将销售管理系统的数据流图变换成软件结构图,如图4-19所示。1Jackson图图Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。图4-20给
16、出了Jackson图顺序、选择和重复4种逻辑结构的表示方法示例。JSD方法的设计过程主要有以下5个步骤。(1)分析并确定问题的输入和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。注意对应关系是指有直接的因果关系,有相同的数据单元(重复出现的数据单元必须有相同的重复次序和次数)。(3)根据下述规则从数据结构的Jackson图导出程序结构的Jackson图。(4)列出所有的操作和条件(包括分支条件和循环条件),并把它们分配到程序结构图的适当位置。(5)用某种形式的伪码给出程序结构图对应的过程性描述。【案例案例4.4】 统计文件
17、空格数并输出统计统计文件空格数并输出统计问题描述:一个由若干个记录组成的正文文件,每个记录是一个字符串,要求统计每个记录中空格字符的个数和整个文件中的空格总数。统计输出格式为每复制一行字符串之后,另起一行输出该字符串的空格数,最后输出整个文件的空格总数。分析:用Jackson图描述正文文件和输出表格的数据结构,如图4-21所示。设计:用Jackson图描述统计文件空格数的程序结构,如图4-22所示。把以上所有操作和条件分配到程序结构图的适应位置,得到最终的程序处理结构Jackson图,如图4-23所示。最后,根据图4-23的结构特征给出用伪码描述的程序处理过程如下。统计空格 seq打开文件读入
18、字符串Totalsum = 0程序体 iter until文件结束程序体end打印总数seq 打印出空格总数打印总数end关闭文件停止统计空格end2问题定义和数据流描述问题定义和数据流描述【案例案例4.5】 图书馆管理系统设计图书馆管理系统设计图书馆系统的借/还书功能数据流图在本书3.4.4节的图3-9和图3-10中已经给出,这是一个复杂的混合流类型。对借/还书处理总体是一个事务型数据流,其中可以分为借书、还书、续借和预约4个部分,在每个具体事务处理的时候都涉及变换型的数据流。例如,在借书功能里包括输入书号和借书证号,通过变换处理最后显示借书成功。3系统软件结构图系统软件结构图【案例案例4.
19、5续续】 图书馆管理系统设计图书馆管理系统设计(1)图书馆系统总体结构图(管理员角度)。从图书馆的管理员角度来看,系统主要完成用户管理、图书管理、图书流通和系统设置等子系统。图4-24给出了从管理员角度来看的图书馆系统总体结构图。从图书馆的用户角度来看,系统主要完成图书续借、图书预约、图书查询和个人信息查询等功能。图4-25给出了从图书馆用户的角度来看的图书馆系统总体结构图。(2)图书流通子系统。图书流通子系统的总体软件结构图如图4-26所示。借书管理模块完成图书借阅功能,其软件结构图如图4-27所示。借书界面模块显示用户信息和所借书图书信息。考虑到借书管理模块中的多个子模块都要读取数据库表,
20、因此可以将通用的图区数据表模块加到低层以便调用。这样可以减小模块与数据库的耦合性,提高模块的内聚性。图4-28所示为借书管理模块的软件结构详细图。4.6.1 面向对象设计过程面向对象设计过程1逻辑架构逻辑架构层是对类、包或子系统的甚为粗粒度的分组,具有对系统主要方面加以内聚的职责。并且层按照“较高”层(如用户界面层)可以调用“较低”层的服务,而反之则不行的方式组织。在面向对象的系统中通常包括如下3层。(1)用户界面层:处理用户交互信息。(2)应用逻辑和领域对象层:表示领域概念的软件对象,这些对象实现了应用需求,如计算销售总额。(3)技术服务层:提供支持性技术服务的常用对象和子系统,如数据库接口
21、或错误日志。这些服务通常是独立于应用的,也可以在多个系统中复用。2设计模型设计模型域类描述只是一个“草图”状态,定义的属性和操作不是最后的版本,只是在“当前”看来这些属性和操作是比较合适的,某些域类的状态还需要用状态图进一步分析。图书馆系统商业域类模型描述如图4-29所示。 Item -id: integer +findonTitle() +findonid() +findonReservation() create() destroy Loan -id: integer -borroweddate: date -returndate: date -borrowerid: integer cr
22、eate() destroy be loaned in a Borrower -borrowerid: integer -name: string -borrowednum: integer -fine: number +find() create() destroy has has be reserved in a Title -bookid: string -borrowednum: integer -reservatednum: integer +finde() create() destroy Reservation -reserveddate: date -noticedate:da
23、te -borrowerid:integer -isbn:string +find() create() destroy copy of 包模型的描述工具是包图,包图由包和包之间的联系组成。通常,简单描述包可直接在大矩形中给出包的名称。如果包中还包含了其他子包,则在小矩形中给出包的名称,而大矩形中给出所包含的子包。包之间的关系可以用直线,或者带箭头的直线表示。例如,图4-30和图4-31分别为图书馆系统和图书馆流通子系统体系结构的包图描述。3对象接口描述对象接口描述对象和接口之间没有必要是简单的一对一的关系,同一个对象可能有多个接口。从不同角度观察对象,可以得到不同的接口。设计对象接口关系的目
24、的是如何详细描述一个对象或一组对象的接口细节,这就需要定义服务目标和语义。接口可以用UML中的类图形式描述,但是没有属性部分;另外,UML的格式标记“interface”中必须包含名字部分。例如,图书馆系统中借书者的接口可以描述如下:interface borrowerpublic void borrower();public void setborrower();public void addload();public void getload();public void getnoload();public void removeload();public void write();pub
25、lic void read();/borrower1设计模式概念设计模式概念在软件设计中,主要使用的模式是基于职责设计对象(General Responsibility Assignment Software Patterns,GRASP)。GRASP定义了9个基本OO设计原则或基本设计构件,包括信息专家、创建者、控制器、高内聚、低耦合、多态、纯虚构、间接性和防止变异。2基于职责的设计基于职责的设计对象的行为职责如下。(1)自身执行的一些行为,如创建对象或计算。(2)初始化其他对象中的动作。(3)控制和协调其他对象中的活动。对象的认知职责如下。(1)对私有封装数据的认知。(2)对相关对象的认知。(3)对其他能够导出或计算的事物的认知。如图4-32所示,在POS机系统中,Sale对象具有创建Payment的职责。具体实现时使用makePayment消息向Sale发出请求,Sale在相应的makePayment方法中处理。35种基本的种基本的GRASP模式模式(1)创建者模式。分析一下领域模型就会发现对象Sale
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度股权转让及技术服务合同2篇
- 二零二五版建筑门窗材料采购及安装服务合同3篇
- 二零二五版个人信用担保二手房购买贷款合同样本3篇
- 武汉托管班2025年度教师招聘与素质教育服务合同3篇
- 二零二五版智慧城市基础设施勘察设计服务合同3篇
- 2025年度安全生产应急救援预案合同范本3篇
- 二零二五版智能仓储物流中心设施维护与安全管理合同3篇
- 二零二五年建筑水电安装工程合同风险评估合同2篇
- 深圳市2025年度房地产股权交易合同(含工业地产)3篇
- 二零二五版二手房买卖合同补充协议(历史遗留问题)范本3篇
- 2024年黑河嫩江市招聘社区工作者考试真题
- 第22单元(二次函数)-单元测试卷(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 蓝色3D风工作总结汇报模板
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 小王子-英文原版
- 2024年江苏省导游服务技能大赛理论考试题库(含答案)
- 2024年中考英语阅读理解表格型解题技巧讲解(含练习题及答案)
- 新版中国食物成分表
- 浙江省温州市温州中学2025届数学高二上期末综合测试试题含解析
- 保安公司市场拓展方案-保安拓展工作方案
评论
0/150
提交评论