版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章总体设计第4章总体设计
可行性分析
--Why?Who?
需求分析
--What?
设计
--Howdo?
总体设计(概要设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系
设计详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。
总体设计的任务划分出组成系统的物理元素—程序、文件、数据库、人工过程和文档等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。4.1设计过程总体设计过程通常由两个主要阶段组成:
--系统设计阶段,确定系统的具体实现方案;
--结构设计阶段,确定软件结构。典型的总体设计过程包括下述9个步骤:1.设想供选择的方案2.选取合理的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.审查和复审总体设计所书写的文档(1)总体设计说明主要内容包括用系统流程图描绘的系统构成方案,组成系统的物理元素清单,成本/效益分析;对最佳方案的概括描述,精化的数据流图,用层次图或结构图描绘的软件结构,用IPO图或其他工具简要描述的各个模块的算法,模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系等等。(2)用户手册根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。(3)测试计划包括测试策略,测试方案,预期的测试结果,测试进度计划等等。(4)详细的实现计划(5)数据库设计结果概要设计说明书(GB8567—88)4.2设计原理模块化抽象逐步求精信息隐藏和局部化模块独立4.2.1模块化模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。
--如:过程、函数、子程序、宏、对象等,都可作为模块。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。问题:模块该如何划分?设:C(x)为复杂程度函数E(x)为决定解决问题x所需的
工作量(时间)函数对于两个问题P1和P2,如果C(P1)>C(P2)则:E(P1)>E(P2)
如果C(P1+P2)>C(P1)+C(P2)则:E(P1+P2)>E(P1)+E(P2)这个不等式导致“各个击破”的结论—把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。最小成本区M模块成本接口成本总成本软件开发工作量
模块数4.2.2抽象人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。--就是抽出事物的本质特性(共性),而暂时不考虑它们的细节。处理复杂系统的惟一有效的方法是用层次的方式构造和分析它。--在抽象的最高层次使用问题环境的语言,以概括的方式叙述问题的解法;在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;最后在最低的抽象层次用可直接实现的方式叙述问题的解法。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。
在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;最后,当源程序写出来以后,也就达到了抽象的最低层。4.2.3逐步求精逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础。逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”MagicalNumberSeven,PlusorMinusTwo,SomeLimitsonOurCapacityforProcessingInformation
ThePsychologicalReview,1956
G.A.Miller奇妙的数字7+2,人类信息处理能力的限度逐步求精最初是由NiklausWirth提出的一种自顶向下的设计策略。他本人的概括说明如下:我们对付复杂问题的最重要的办法是抽象,因此,对一个复杂的问题不应该立刻用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽象语句来表示,从而得出抽象程序。抽象程序对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。对抽象程序做进一步的分解,并进入下一个抽象层次,这样的精细化过程一直进行下去,直到程序能被计算机接受为止。这时的程序可能是用某种高级语言或机器指令书写的。抽象与求精是一对互补的概念。抽象使得设计者能够说明过程和数据,同时却忽略低层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。求精则帮助设计者在设计过程中逐步揭示出低层细节。这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。4.2.4信息隐藏和局部化信息隐藏原理指出:设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化的概念和信息隐藏概念是密切相关的。所谓局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。
--在模块中使用局部数据元素是局部化的一个例子。显然,局部化有助于实现信息隐藏。如果在测试期间和以后的软件维护期间需要修改软件,那么使用信息隐藏原理作为模块化系统设计的标准就会带来极大好处。4.2.5模块独立
模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。----方便开发与维护耦合
模块之间的相对独立性的度量内聚
模块功能强度的度量模块的独立程度可以由两个定性标准度量1.耦合
耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。低非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合
高弱强耦合性模块独立性(1)非直接耦合两个模块没有直接关系(模块1和模块2),模块独立性最强。模块1模块2模块3模块4(2)数据耦合
一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。
开发票计算水费单价数量金额(3)标记耦合(特征耦合)
如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。计算电费计算水费计算住户水电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.(4)控制耦合
A模块flagf1Bf2fn……如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能就是控制耦合。(5)外部耦合一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。(6)公共环境耦合(公共数据区耦合)
一组模块引用同一个公用数据区(也称全局数据区、公共数据环境,如:数据池、军事隔离区等)。公共数据区指:全局数据结构共享通讯区内存公共覆盖区等
ABC公共数据区公共耦合存在的问题:(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!!!(7)内容耦合AB一模块直接访问另一模块的内部信息(程序代码或数据)AB模块代码重叠Entry1……Entry2
……多入口模块不正常转入另一模块最不好的耦合形式!以上给出了7种耦合类型,这只是从耦合的机制上所做的分类,按耦合的强弱程度的排列只是相对的关系。但它给设计人员在设计程序结构时提供了一决策准则。实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共环境耦合的范围,完全不用内容耦合。2.内聚一个模块内部元素在功能上相互关联的强度设计目标:高内聚,模块在软件过程中完成单一的任务(1)功能内聚(FunctionalCohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。内聚性最强如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称为顺序内聚。(2)信息内聚(InformationalCohesion)这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓(3)通信内聚(CommunicationCohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。(4)过程内聚(ProceduralCohesion)模块内各处理成分相关,且必须以特定次序执行读入成绩单审查成绩单统计成绩打印成绩读入并审查成绩单统计并打印成绩单(5)时间内聚(ClassicalCohesion)
时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块,系统结束模块、紧急故障处理模块等均是时间性聚合模块
。(6)逻辑内聚(LogicalCohesion)把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。SXYZWABCDSXYZWABCD(7)巧合内聚(CoincidentalCohesion)当模块内各部分之间没有联系,或者即使有联系,这种联也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合。
设计目标:
力争强内聚、弱耦合耦合、内聚与模块独立性关系:耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。4.3改进设计的启发规则改进软件结构提高模块独立性。模块规模应该适中(30-60行语句)。深度、宽度、扇出和扇入都应适当。模块的作用域应该在控制域之内。5.力争降低模块接口的复杂程度。6.设计单入口单出口的模块。7.模块功能应该可以预测。4.4软件设计过程1.制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:
--阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序
--根据目标确定最合适的设计方法
--规定设计文档的编制标准
--规定编码的信息形式,与硬件,操作系统的接口规约,命名规则2.软件系统结构的总体设计基于功能层次结构建立系统
--采用某种设计方法,将系统按功能划分成模块的层次结构
--确定每个模块的功能--建立与已确定的软件需求的对应关系
--确定模块间的调用关系
--确定模块间的接口
--评估模块划分的质量4.4软件设计过程3.处理方式设计确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式周转时间响应时间吞吐量精度确定外部信号的接收发送形式4.数据结构设计确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包)4.4软件设计过程4.数据结构设计(续)限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能一致性设计:保证软件运行过程中所使用的数据的类型和取值范围不变在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。4.4软件设计过程5.可靠性设计可靠性设计也叫做质量设计在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。6.编写概要设计阶段的文档概要设计阶段完成时应编写以下文档:概要设计说明书数据库设计说明书用户手册制定初步的测试计划4.4软件设计过程7.概要设计评审可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程等进行评估4.5描绘软件结构的图形工具1、层次图和HIPO图IBM公司发明的HIPO图:
层次图
+输入/处理/输出图
(H图)(IPO图)(HiberarchyInputProcessOutput)正文加工系统的层次图2、结构图(SC--StructureChart)
Yourdon提出的结构图是进行软件结构设计的另一个有力工具。结构图和层次图类似,也是描绘软件结构的图形工具。结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。①
模块:模块用矩形框表示,并用模块的名字标记它。②
模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块③
模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。④
在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。程序的系统结构图4.6面向数据流的设计方法
---结构化设计(SD-StructuredDesign)面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。面向数据流的设计要解决的任务,就是在需求分析的基础上,将表示系统逻辑模型的DFD图映射(Mapping)成软件系统结构的初始设计描述。目标系统的DFDSD目标系统的SC结构化设计方法(SD)1)首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。2)然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。3)由数据流图推导出系统的初始结构图。4)利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。5)修改和补充数据词典6)制定测试计划。在系统结构图中的模块传入模块
─从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块
─从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。变换模块
─它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块
─对所有下属模块进行协调和管理的模块。变换型系统结构图变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。事务型系统结构图它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。变换分析变换分析方法由以下四步组成:1)重画数据流图;2)区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;3)进行一级分解,设计上层模块;4)进行二级分解,设计输入、输出和中心变换部分的中、下层模块。(1)在DFD
图上标出逻辑输入、逻辑输出和变换中心的分界AeBaCbDcEdPQRwuvwuvrp变换中心c,e逻辑输入w,u逻辑输出--------具有变换型数据流图(2)完成第一级分解AabcPwuvrpBCDdeEQRWUVMcMAMTMEC,eC,eU,wU,w变换中心顶层第一层第一级分解后的SC图(含协调、传入、变换、传出模块)第一级分解后的SC图(另一种画法)McMA1ME1C
eUMA2QPRME2e
c,p
pr
r
w,uwAabcPwuvrpBCDdeEQRWUV变换中心MA对逻辑输入的分解CEBADabdecAabcPwuvrpBCDdeEQRWUV变换中心ME对输出的分解WUVvuwMT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中控协议书音量加减反向
- 精神分裂症的药物治疗与护理策略
- 大学柔韧素质及其训练
- 甲状腺影像分级解读
- 2026四川安和精密电子电器股份有限公司招聘电控硬件工程师等岗位3人备考题库及一套完整答案详解
- 老年人智能手机社区
- 2026江西省妇幼保健院产科科研助理招聘2人备考题库及答案详解参考
- 2026福建南平市消防救援局招聘政府专职消防员19人备考题库及答案详解【网校专用】
- 骨科护理新思维
- 医学影像技术及临床应用
- 中国农业银行贷款合同
- 大众Polo 2016款说明书
- 高考英语应用文写作之科技篇
- 农机购销合同(6篇)
- 奥林匹克公园下沉花园分析
- YC/T 144-2017烟用三乙酸甘油酯
- GRS供应商绿色环保环境管理体系评估表
- 《清明节安全》教育班会PPT
- 高压水枪清洗除锈防腐施工方案
- 高质量SCI论文入门必备从选题到发表全套课件
- DB32∕T 1712-2011 水利工程铸铁闸门设计制造安装验收规范
评论
0/150
提交评论