第五讲软件系统概要设计•模块化设计的基本原理•表示软件结构的几种方法•软件设计的启发规则•概要设计的主要任务•概要设计评审————为什么要采用模块化设计方法用层次化的概念方式构造和分析软件5.1模块化设计的基本原理几个重要的概念模块的独立性模块之间相互依赖关系少,最好是没有。耦合模块之间相互关系制约程度的一种度量。如:处理的对象——数据耦合判别的对象——控制耦合等内聚同一模块内部各个元素之间相互关系制约程度的一种度量。理想的内聚是指模块只完成一个功能。“封装”或“隐藏”——一个模块,意味着什么呢?模块将独立地进行编写和调试。与其他程序段的关系将是调用和被调用的关系,或者是通过彼此相关的数据发生联系。除非通过接口,这个程序段所包含的所有信息是不可见的。既对这些信息做到了“封装”或“隐藏”。——它使得软件的变动只涉及少数的几个相关模块,所以模块化能够提高软件的可修改性。几个重要的概念一个矩形框代表一个模块;模块调用关系是上方的调用下方的。模块扇出数目:是一个模块直接控制(调用)的模块数目。模块扇入数目:是指直接调用它的上级模块的多少。————模块层次图:5.2表示软件结构的几种方法————模块IOP表:HIPO图:在模块层次图的基础上,为每一个模块增加一张IPO表。1、高内聚性、低耦合性,增强模块独立性:模块之间相互依赖关系少,最好是没有2、模块规模应该适中:编码角度:最好不超过60行心理学角度:最好不超过30行3、“扇出”和“扇入”要适当:扇出通常是3或4;9扇入越大上级模块数目越多,有好处5.3软件设计的启发规则(7条)4、作用范围应该小于或等于控制范围:作用范围:该模块内输出结果可能影响到的所有模块。控制范围:该模块本身以及所有那些直接或间接由它调用或涉及的所有模块。5、降低模块接口的复杂度:保正传递的信息简单,并且和模块的功能一致6、单入口单出口原则:7、模块功能应该可以预测只要输入的数据相同就产生同样的输出,这个模块的功能就称作是可以预测的——黑盒子通过仔细分析软件需求规格说明,对软件功能进行适当地分解,划分出各个功能模块,由这些模块组建出实现目标功能的体系结构。——建造软件模型事实上,在任何软件系统的设计中,一定存在那样一个或一组相互制约的功能模块,它们之间界限的划分、它们与其它功能模块的界限的划分影响了整个系统的体系结构。5.4概要设计的主要任务“汽车仪表盘”设计案例•车轮转动信号(转/秒)-速度增减=f(1秒前平均转/秒,当前(转/秒))•当前燃料存量信号(升)-公里/升=f(启动时油存量,当前油存量,公里/小时)•当前燃料存量信号(升)-当前油存量=f(存量信号,10秒内有效采样的均值)•车轮转动信号(转/秒)-公里/小时=f(转/秒);•车轮转动信号(转/秒)-总里程=f(累加基数,转/秒)•车轮转动信号(转/秒)-超速否=f(公里/小时,55公里/小时)数据输入与目标需求(输出)的换算关系:数据流图如下包括:1)、在系统目标约束范围内,从技术和工程过程管理的思想角度,确认用户的要求能否实现。2)、在设计方案完成时,要制定相应的方案实施工作计划,明确方案各部分的进程性关系及其必要的风险控制原则。(如工程里程碑)3)、设计方案最终将撰写成规范的设计文档(文档模板及其体系、图形符号标准等)。概要设计需要完成的主要任务有3个方面(1)、制定规范(管)系统体系结构设计的工作内容:1、依据软件需求,将系统功能划分成模块的层次结构。2、划分模块的同时,确定模块涉及的数据及算法所必需的数据逻辑结构。3、描述模块之间的调用和协同关系,由此确定模块之间的接口。4、设计并优化数据处理算法。5、努力提高软件系统的可维护性能。(2)、系统体系结构设计(技)3个层次:系统初始层α专用功能层β公用功能层γ包括:《概要设计说明书》。采用目标系统领域熟悉的语言和方式,与面向编程技术的语言和方式相结合,撰写出目标系统解决问题的总体功能目标、分解后的功能模块体系和与之对应的运行界面设计、数据(库)设计、数据处理方式和算法设计、出错处理算法和消息设计等。(3)、撰写概要设计文档(管、技)概要设计文档(管、技)还包括:《数据库设计说明书》。《用户手册》。《测试计划》。内容包括:1)确认对软件需求的全面覆盖;其方案的风险在哪里。2)确认方案是否实用,其他方案怎样,模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内——技术评审3)确认软件系统方案之维护性能是否方便、可行,是否满足了目标需求。5.5概要设计的评审4)确认内部接口与外部接口是否已经明确定义并恰当地进行了说明。5)确认团队成员理解方案文档并进行编程实现没有障碍,否则改进。6)确认方案的可测试性、能否保证软件具有良好的质量特征。7)确认现有技术条件下和预算范围内能否按时完成,明确进度的、质量的、商务合同的等等方面的里程碑。认识过程包括:感觉、知觉、记忆、思维、想象等。课程小结第一:第二:系统分析与设计阶段是有预定目的、有计划的主动知觉过程。讨论课任务第八周(周三前-10月19日)交:“戴尔公司某业务流程图与该业务的数据流图”周三讨论课,我们将讨论业务流程图与数据流图的描述方法;“某业务流程”是指某一个比较有代表性的、比较复杂的业务,一般应该包含3个以上不同部门的数据处理功能(包括数据的增加、修改、删除、查询、保存等功能),具有多个软件操作界面、多个数据存储文件(不同用户被限定不同的使用权限)的业务流程。