《软件工程-概要设计全解ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程-概要设计全解ppt课件.ppt(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、系统设计4.1 概述4.2 任务4.3 设计原理4.4 模块独立性4.5 图形工具4.6 面向数据流的设计方法4.7 数据库设计4.8 小结4.1 概述软件设计分为两个阶段:总体设计(又称概要设计)通过仔细分析软件规格说明,适当地对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。详细设计详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。4.1 概述软件分析软件分析映射软件设计软件设计4.1 概述4.2 任务1. 制定规范确定设计的目标和优先顺序选定设计方法规定设计文档的编制标准文档体系、详细程度、图形画法、纸张样式编码形式接口约定、命名规则4
2、.2 任务2. 系统的结构设计划分层次结构确定模块功能确定模块调用关系确定模块的接口评估模块划分的质量、导出模块结构规则4.2 任务3. 数据结构设计确定输入、输出文件的结构数据库设计4. 可靠性设计(质量设计)5. 书写文档概要设计说明书、 数据库设计说明书、 用户手册、 初步的测试计划4.2 任务6. 评审可追溯性确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险确认该设计在现有技术条件下和预算范围内是否能按时实现4.2 任务实用性确认该设计对
3、于需求的解决方案是否实用技术清晰度确认该设计是否以一种易于翻译成代码的形式表达可维护性确认该设计是否考虑了方便未来的维护质量确认该设计是否表现出良好的质量特征4.2 任务各种选择方案看是否考虑过其它方案,比较各种选择方案的标准是什么限制评估对该软件的限制是否现实,是否与需求一致其它具体问题对于文档、可测试性、设计过程等进行评估4.3 设计原理模块化抽象逐步求精信息隐藏4.3.1 模块化什么是模块?模块是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符来代表它。过程、函数、子程序和宏等,都可作为模块。面向对象范型中的对象是模块,对象内的方法也是模块。模块
4、是构成程序的基本构件。4.3.1 模块化什么是模块化?就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。图: 模块化和软件成本4.3.1 模块化五条标准模块可分解性把问题分解为子问题模块可组装性可复用模块可理解性无需参考其他模块,易于构造和修改模块连续性微小修改只导致对个别模块模块保护性异常影响局限在模块内部人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就
5、是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。4.3.2抽象4.3.3 逐步求精求精实际上是细化过程。我们从在高抽象级别定义的功能陈述(或信息描述)开始。也就是说,该陈述仅仅概念性地描述了功能或信息,但是并没有提供功能的内部工作情况或信息的内部结构。求精要求设计者细化原始陈述,随着每个后续求精(细化)步骤的完成而提供越来越多的细节。4.3.4 信息隐藏设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。模块内部的数据与过程,应该对不需要了解这些数据与过程的模块隐藏起来。只有那些为了完成软件的总体功能而必需在模块间交换的信息,才允
6、许在模块间进行传递。4.4 模块独立性模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准。模块的独立性可以由两个定性标准度量:耦合用于衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚用于衡量一个模块内部各个元素间彼此结合的紧密程度。4.4.1 耦合耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。在软件设计中应该追求模块间尽可能松散耦合的系统。4.4.1 耦合耦合的七种类型1. 非直接耦合2. 数据耦合3. 特征耦合4. 控制耦合5. 外部耦合6. 公共耦合7. 内容耦合4.4.1 耦合
7、1、非直接耦合(Nondirect Coupling)如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。4.4.1 耦合2、数据耦合 (Data Coupling)如果一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的,则称这种耦合为数据耦合。4.4.1 耦合3、标记耦合 (Stamp Coupling)如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。4.4.1 耦合4、控制耦合 (Control Co
8、upling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。4.4.1 耦合5、外部耦合(External Coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。6、公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。4.4.1 耦合公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧
9、密公共耦合。4.4.1 耦合7、内容耦合 (Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭(只可能出现在汇编语言中);一个模块有多个入口。4.4.1 耦合耦合性应采取下述设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。4.4.2 内聚七种内聚:1. 偶然内聚2. 逻辑内聚3. 时间内聚4. 过程内聚5. 通信内聚6. 顺序内聚7. 功能内聚信息内聚4.4.2 内聚1、偶然内聚(Coincidental Cohesion
10、)又称巧合内聚当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为偶然内聚模块。它是内聚程度最低的模块。4.4.2 内聚2、逻辑内聚(Logical Cohesion)这种模块把逻辑相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。例如一个模块读取各种不同类型外设的输入。4.4.2 内聚3、时间内聚(Classical Cohesion)时间内聚又称为经典内聚,或瞬时内聚(TemporalCohesion) 。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。问题:一般在某个系统中什
11、么模块会是时间内聚的?答案:程序的初始化模块和终止模块。4.4.2 内聚4、过程内聚(Procedural Cohesion)如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。问题:请大家举个生活中 必须遵照特定次序 的例子?答案:排队买饭( 队列,要求先进先出) 。4.4.2 内聚5、通信内聚 (Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据
12、,或产生了相同的输出数据,则称之为通信内聚模块。A打印报告1打印报告2打印B存入打印C修改删除打印报告2其他定义:如果一个模块的所有成分都操作同一数据集或生成同一数据集 。4.4.2 内聚4.4.2 内聚6、顺序内聚 (Sequence Cohesion)这种模块要求各个成分顺序执行,并且通常上一个输出是下一个输入。读入编辑A数据累加打印B结果4.4.2 内聚信息内聚 (Informational Cohesion)模块多个功能在同一数据结构上操作,每一项功能有一个唯一的入口点。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此它是一个信息内聚的模块。4.4.2 内聚7、功能内聚 (
13、Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。4.4.2 内聚内聚度设计内聚原则:设计时应力争做到高内聚,并且能够辨认出低内聚的模块,并采取措施进行修改,以提高模块的内聚程度、降低模块间的耦合程度,从而获得较高的模块独立性。4.5 图形工具层次图HIPO图结构图4.5.1 层次图也称H图是在总体设计阶段最常使用的图形工具之一,它常用于描绘软件的层次结构。层次图中的每个方框代表一个模块,方框间的连线表示模块间的调用关系。4.5.2 HIPO
14、图由H图和IPO图两部分组成4.5.3 结构图4.5.3 结构图结构图中的每个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块间的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中模块之间传递的信息。注释箭头尾部是空心圆表示传递的是数据。注释箭头尾部是实心圆则表示传递的是控制信息。4.5.3 结构图大学职业介绍系统4.5.3 结构图模块模块用矩形框表示,并用模块的名字标记它。4.5.3 结构图模块的调用关系和接口模块之间用单向箭头联结,箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。4.5.3 结构图条件调用循环调用4.5.3 结构图4.6
15、面向数据流的设计方法目标是给出设计软件结构的一个系统化的途径。面向数据流的设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。通常所说的结构化设计方法,也就是基于数据流的设计方法。4.6.1 概念面向数据流的设计方法把数据流映射成软件结构,数据流的类型决定了映射的方法。数据流有两种类型:变换流事务流图:变换流54图:事务流图:混合型整体?中间?2022-6-6目标系统的DFDSC 图 - Structured Chart 该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。 SD目标系统的SC2022-6-6ASC 图中的主
16、要内容图中的主要内容1、模块-在SC图中用矩形框表示,并用名字来标记它- 模块调用关系2、模块的调用关系和接口B被调用模块调用模块A(查询学生)B(查找学生记录)数据信号控制信号学号查找成功信号- 模块间接口的表示2022-6-6产生最佳解产生最佳解得到好的输入得到好的输入计算最佳解计算最佳解输出结果输出结果读输入读输入编辑输入编辑输入好输入好输入解解原始输入原始输入编辑结果结果格式化结果格式化显示结果显示结果解格式化的解SC 图的一般格式图的一般格式2022-6-61、在系统结构图中的模块一、典型的系统一、典型的系统结构形式结构形式原子模块: 在系统结构图中通常是指不能再分割的底层模块 完全
17、因子分解系统 如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而其它所有非原子模块仅仅执行控制或 协调功能。2022-6-6传入模块AA传入模块 从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。 在系统结构图中有四种类型的模块:逻辑输入数据流成绩录入成绩录入 2022-6-6传出模块 从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。 传出模块DD逻辑输出数据流成绩输出成绩输出 2022-6-6变换模块 也叫加工模块。它是从上级模块获得数据,进行
18、特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。 变换模块CB变换数据流2022-6-6协调模块 对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。协调模块YXYX2022-6-62、典型的系统结构形式之一(变换型系统结构图)取得数据iaeo变换数据给出数据传入部分变换中心传出部分- 具有变换型数据流图2022-6-6主模块C变换成D取得C给出D取得BB变换成CD变换成E给出E取得AA变换成BAABBBCCDCDED取得数据CD变换数据给出数据协调模块变换模块传出模块- 具有变换型系统结构图DFD-SC传入模块2022-6-6
19、3、典型的系统结构形式之二(事务型系统结构图)“事务” 引起、触发或启动某一动作或一串动作的任何数据、控制信号、事件或状态的变化。 由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出结果。2022-6-6输入- 事务型 数据流图ABCDEFGH中心变换输出逻辑输入物理输入逻辑输出物理输出2022-6-6ABCDEFGHMT3逻辑输入逻辑输出CDCD,E,F- 事务型 数据流图(DFD)- 事务型 系统结构图(SC)2022-6-6事务中心输入已分析的作业内部表示的作业结果- 事务型系统结构(层次)图输出结果调度作业信息读入作业分析作业事务1事务2事务3事务4操作2
20、操作3 操作4 操作5操作6操作1细节2细节3 细节4 细节5细节6细节1细节7结果2022-6-6-简化的事务型系统结构图事务中心得到作业 作业结果输出结果分析 调度事务1事务2事务32022-6-6二、从二、从 DFD 图导出图导出 SC图的步骤图的步骤开 始细化修改SRS中的DFD图判断DFD图的结构类型 是变换型吗?F事务分析变换分析完善SC 图T对最终的SC 图进行评审结束2022-6-61、变换分析-是将具有变换型的DFD图导出SC图2022-6-6在 图上标出逻辑输入、逻辑输出和变换中心的分界abdvrp变换中心变换中心c,e 逻辑输入w,u 逻辑输出- 具有变换型数据流图202
21、2-6-6完成第第一级分解abvrpdeMcMAMTMEC,eC,eU,wU,w变换中心变换中心顶层第一层第一级分解后的 SC 图协调模块YXYX2022-6-6abvrpde第一级分解后的 SC 图(另一种画法)McMA1ME1C eU MA2QPRME2e c,p pr r w,uw2022-6-6完成第第二级分解abvrpdeMA变换中心变换中心对逻辑输入的分解CEBADabdeccbaABCMAEDde 逻辑输入模块的调用与执行过程2022-6-6MACEBADabdecMAGet CGet EBtoCAtoBDtoEaecReadDGet BRead Ac,eabbbcde2022-
22、6-6abvrpdeME变换中心变换中心对输出的分解WUVvuwMTQPR eC,prU,w对变换中心加工的分解 prw,u2022-6-6MACBAEDMTQPR从变换分析导出的初始 SC 图MEWUVMCc, eW,uW,uC,e获得完整的 图2022-6-6运用变换分析方法建立系统的SC时需注意以下几点: 2022-6-6主模块主模块ABCA1A2A3A11A12A132022-6-6低功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合性内聚 高强弱 内聚性模块独立性低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合 高弱 强耦合性模块独立性 具有高内聚低耦合的模块才是模块独
23、立性比较强的模块。2022-6-6 具有高内聚低耦合的模块才是模块独立性比较强的模块。模块A模块D模块C模块B非直接耦合通过参数通过参数传递传递数据数据( (数据耦合数据耦合) )通过参数表通过参数表传递传递数据结构数据结构( (标记耦合标记耦合) ) 具有松散型 的耦合类型 2022-6-6请将上列给出的具有变换型的DFD图导出它的SC图a1a2b1c1c1p1P2 2022-6-62、事务分析-是将具有事务型的DFD图导出SC图事务中心事务源2022-6-6主模块给出H取得ALMNA GHBECF D2022-6-6发送部分书库保管员F2F1F5F6F72022-6-6发送部分- 采购子系
24、统的 SC 图 -2022-6-6三、软件模块结构的改进三、软件模块结构的改进一、模块功能的完善化2022-6-6 二、消除重复功能,改善软件结构。消除重复功能,改善软件结构完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。2022-6-6物理输入相似部分相似模块的各种合并方案的示意图2022-6-6 三、模块的作用范围应在控制范围之内。如果一个判定的作用范围包含在这个判定所在模块如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构是简单的,否则,它
25、的控制范围之内,则这种结构是简单的,否则,它的结构是不简单的。的结构是不简单的。2022-6-62022-6-6 一个模块的作用范围,是指受这个模块中的判定所影响的模块 。 关于模块的作用范围/控制范围的关系示意图 2022-6-6 理想的情况,应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。对于一个理想 SC图中的模块设计, 所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。2022-6-6计算实发工资取得工资数据工人实发工资工人实发工资人员实发工资计时制工资额税收扣款薪金制工资额常
26、规扣款编外人员 工资编外人员税款编外人员扣款2022-6-6 四、尽可能地减少高扇出结构,随着深度增大扇入。扇入:指模块的上级模块数。 (即共有多少个模块需要 调用这个模块)扇出:指模块调用其下属模块 数目。调用的下属模块数应控制在小于3-4个模块。2022-6-6PP1P2Q1Q2Q3Q一个 设计得好的软件模块结构,通常上层扇出比较高,中间层扇出较少,底层扇入到有高扇入的公用模块中。2022-6-6 五、模块的大小要适中。模块的大小,可以用模块中所含语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。通常规定其语句行数在50100左右,保持在一页纸之内,最多不超过500行。体积大的模块
27、往往是由于分解不充分,因此可以对功能进一步分解,生成一些下级模块或同级模块。反之,对于体积过小的模块也可以考虑是否可能与调用它的上级模块合并。2022-6-6 六、应设计出功能可预测的模块,但要避免过分受限制的模块。例如,A为不及格成绩处理模块,对于数组长度的使用限制,在成绩处理中,由于要处理各班级人数不等,所以数组长度的定义应该随着学生人数的不同而确定。一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果将不可预测。避免或减少使用病态联接直
28、接病态联接即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部。公共数据域病态联接模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级模块。这种方式将使得模块间的耦合程度剧增。它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块。通信模块联接即模块A和模块B通过通信模块TABLEIT传送数据。从表面看,这不是病态联接,因为模块和模块B都未涉及通信模块TABLEIT 的内部。然而,它们之间的通信(即数据传送)没有通过它们的上级模块。从这个意义上讲,这种联接是病态的。2022-6-62022-6-6发送部分请完成下列描述的DFD图,导出它的SC图 美国某大
29、学共有美国某大学共有200200名教师,校方与工会刚刚签定一名教师,校方与工会刚刚签定一 项协议按照协议,所有年工资项协议按照协议,所有年工资=$26,000=$26,000的教师工资将保的教师工资将保 持不变,年工资持不变,年工资$26,000$26,000的教师将增加工资,的教师将增加工资, 所增加的所增加的 工资数按下述方法计算:工资数按下述方法计算: 给每个由此教师所赡养的人给每个由此教师所赡养的人( (包括教师本人包括教师本人) ) 每年补每年补 助助$100$100,此外,教师满一年工龄的再多补助,此外,教师满一年工龄的再多补助$50$50,但是增,但是增 加后的年工资总额不能多于加后的年工资总额不能多于$26,000$26,000。 教师的工资档案储存在行政办公室的磁带上,教师的工资档案储存在行政办公室的磁带上, 档案档案 中有目前的年工资、赡养人数、雇用日期等信息。中有目前的年工资、赡养人数、雇用日期等信息。2022-6-6发送部分请将上列给出的 DFD图导出它的SC图4.7 数据库设计E-R映射关系数据库为每个实体类型建立一张表;为每个表选择一个主键;对1:1关系,把对方的主键作为自己的属性;对1:N关系,把1的主键作为N的外键为每个M:N关系建立一张新表,字段由双方主键和关系本身的属性组成;定义完整性约束;评价并改进模式的质量;选择字段数据类型和值域;