文档介绍:第三章软件设计§§(SD) §(SD) §§§§:李刚§-总体设计总体设计的基本任务概要地回答系统应该如何实现总体设计的两项任务:划分出组成系统的物理元素----程序、文件、数据库、人工过程和文档设计软件的结构----确定每个程序的模块组成及模块之间的相互关系。总体设计的过程:系统设计:确定系统的具体实现方案。结构设计:确定软件结构。主讲教师:李刚§-总体设计(续)设想供选择的方案数据流图选取合理的方案系统流程图组成系统的物理元素清单成本/效益分析实现系统的进度计划功能分解设计软件结构制订测试计划数据库设计书写文档系统说明用户手册测试计划详细的实现计划数据库设计结果审查和复审推荐最佳方案主讲教师:李刚§(续)详细设计的基本任务详细设计是总体设计的进一步具体化,主要确定每个模块的具体执行过程具体任务如下:1)为每个模块进行详细的算法设计2)为模块内的数据结构进行设计3)对数据库进行物理设计4)界面设计5)其他设计6)编写文档7)评审主讲教师:李刚§(SD)在软件设计中,要遵循一些基本的软件设计原理。1模块化把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的求解。模块是由边界元素限定的相邻程序元素(例如数据说明,可执行的语句)的序列,而且有个总体标识符代表它。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)成本模块数目成本/模块接口成本最小成本区模块化和软件成本主讲教师:李刚§(SD)2模块独立性每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单耦合和内聚两个定性标准度量耦合:一个软件结构内不同模块之间互连程度的度量。数据耦合:模块之间通过参数交换数据信息。控制耦合:模块之间传递的参数含有控制信息。公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。内容耦合:。。。。。。设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。数据耦合控制耦合公共环境耦合内容耦合低高主讲教师:李刚耦合非直接耦合数据耦合特征耦合控制耦合5。公共环境耦合6。内容耦合弱耦合中耦合较强耦合强耦合模块1模块2模块3模块4数据耦合通过简单变量交换数据特征耦合通过数据结构交换数据非直接耦合模块之间没有信息传递模块A模块B模块C模块D模块L模块NFlag=1?S1S2模块1控制耦合模块之间传递的是控制信息TF模块A模块B内容耦合访问其它模块的内部数据直接跳到其他模块内部执行公共环境耦合通过公共数据环境相互作用主讲教师:李刚内聚:一个模块内各个元素彼此结合的紧密程度。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。低内聚中内聚高内聚过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个输出数据。顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必须顺序执行,通常上一个任务的输出是下一个任务的输入。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。ABCS1;S2;ABC模块D模块ABC主讲教师:李刚§(SD)3抽象与细化在抽象的最高层次使用问题环境语言,以概括的方式叙述问题的解法在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法在最低的抽象层次用可以直接实现的方式叙述问题的解法细化与抽象是紧密相关的,在软件过程的每一步都是对软件解法的抽象层次的一次细化主讲教师:李刚§(SD)3信息隐蔽在设计和确定模块时,使一个模块包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。在面向对象方法中,对象的封装性很自然地支持了信息隐蔽地思想。在结构化方法中,要求模块内地信息要局部化4可重用性同一事物不做修改或稍加修改就能够多次重复使用——重用(再生复用)软件复用:数据复用、模块复用、结构复用、设计复用和规格说明书复用主讲教师:李刚