【教学课件】第4章软件设计基础.ppt

上传人:牧羊曲112 文档编号:5658881 上传时间:2023-08-06 格式:PPT 页数:53 大小:418.47KB
返回 下载 相关 举报
【教学课件】第4章软件设计基础.ppt_第1页
第1页 / 共53页
【教学课件】第4章软件设计基础.ppt_第2页
第2页 / 共53页
【教学课件】第4章软件设计基础.ppt_第3页
第3页 / 共53页
【教学课件】第4章软件设计基础.ppt_第4页
第4页 / 共53页
【教学课件】第4章软件设计基础.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《【教学课件】第4章软件设计基础.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章软件设计基础.ppt(53页珍藏版)》请在三一办公上搜索。

1、第四章 软件设计基础,软件设计的基本目的就是回答“系统应该如何实现?”这个问题。软件设计的任务,就是把分析阶段产生的软件需求规格说明转换为用适当手段表示的软件设计,并形成软件设计文档。,4.1软件设计的目标和任务,1.软件设计的目标 软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计(或称构件级设计)等设计活动。软件设计的过程和目标就是,根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计。在每个设计活动中,软件开发者应用导致高质量的基本概念和原则,产生软件的数据设计模型、体系结构设计模型、接口设计模型和过程设计模型。,软件设计过程最终目标是产生一个设

2、计规约,该规约包括描述数据、体系结构、接口和构件的设计模型。体系结构设计定义软件主要结构性元素之间的关系。数据设计将分析阶段创建的信息模型转变成实现软件所需的数据结构。接口设计描述软件内部模块之间以及软件与人之间是如何通信的。构件级设计将软件体系结构的结构性元素转变成对软件构件的过程性描述,即描述软件构件的详细内部设计细节。,4.1软件设计的目标和任务,2.软件设计的任务 从工程管理的角度来看,传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,即总体设计。第二阶段是详细设计阶段,即过程设计。,4.2软件设计基本概念,4.2.1 模块与模块化 1模块 模块是指这样一组程序语句,它包括输

3、入、输出和逻辑处理功能、内部信息及其运行计划。模块指可单独命名且可通过名字访问的过程函数、子程序或宏调用。,4.2软件设计基本概念,模块具有以下几种特征:接口,模块的输入输出;功能,指模块实现什么功能,有什么作用;逻辑,描述模块内部如何实现需求及所需数据;状态,该模块的运行环境,模块间调用与被调用关系。,4.2软件设计基本概念,2模块化 模块化就是将程序划分成若干个独立的模块,每个模块完成一个特定子功能,每个模块既是相对独立的,又是相互联系的,它们共同完成系统指定的各项功能。模块化的目的是为了降低软件的复杂性。,4.2软件设计基本概念,模块化论据:C(x)定义为表示问题x复杂性的函数;E(x)

4、定义为解决问题x所需要工作量(以时间计算)的函数;则,对p1和p2两个问题,若 C(p1)C(p2),则 E(p1)E(p2)。,4.2软件设计基本概念,一有趣的特性。即:C(p1+p2)C(p1)+C(p2);E(p1+p2)E(p1)+E(p2)。上述表达式意味着:“分而治之”的结论。,4.2软件设计基本概念,图4.2 软件设计成本与模块数量关系图,4.2软件设计基本概念,4.2.2 抽象与逐步求精 1抽象抽象是指从一些事物中抽取其本质的共同的特性,而忽略其非本质细节的差异。在抽象的最高层次使用问题环境的语言,在较低层次上使用更过程化的方法,把面向问题的术语和面向实现的术语结合起来描述问题

5、的解法。,4.2软件设计基本概念,2逐步求精逐步求精是一种先总体、后局部的思维原则,也就是一种逐层分解、分而治之的方法。从在高抽象级别定义的功能陈述(或信息描述)开始,该陈述概念性地描述了功能或信息,但没有提供有关功能内部工作的情况或信息的内部结构。求精是设计者详细描述的原始声明,在后续求精(详细描述)活动中,提供越来越多的细节。,4.2软件设计基本概念,4.2.3 信息隐藏信息隐蔽是在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。,4.2软件设计基本概念,4.2.4 模块独立性模块独立性(Module Independence)概括了把软

6、件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准,同时也是模块化和抽象及信息隐藏概念的直接产物。坚持模块的独立性,一般认为是获得良好设计的关键。换句话说,希望这样设计软件结构,使得每个模块只完成系统要求的一个相对独立的特定子功能,并且和其他模块之间的关系很简单。,4.2软件设计基本概念,为什么模块的独立性很重要呢?第一,有效的模块化(即具有独立的模块)软件比较容易开发出来。第二,独立模块比较容易测试和维护。独立性可以从两个方面来度量,即模块本身的内聚(Cohesion)和模块之间的耦合(Coupling)。,4.2软件设计基本概念,1内聚这是从功能角度对模块内部聚合能力的量度。按照

7、由弱到强的顺序,Myers把模块内部聚合能力分为7类,在图中,从左到右内聚强度逐步增强。,低内聚 中内聚 高内聚偶然性内聚 Coincidental Cohesion逻辑性内聚 Logical Cohesion时间性内聚 Temporal Cohesion过程性内聚 Procedural Cohesion通信性内聚 Communicational Cohesion顺序性内聚 Sequential Cohesion功能性内聚 Functional Cohesion,4.2软件设计基本概念,偶然性内聚 块内各组成成分在功能上是互不相关的。,4.2软件设计基本概念,逻辑性内聚 这种模块把几种相关、相

8、似功能组合在一起,每次被调用时,由传递给模块的参数来确定该模块应完成哪一种功能。,4.2软件设计基本概念,时间性内聚 如果一个模块所包含的任务必须在同一“时间”内完成,则这个模块的块内联系称为时间性内聚。,紧急意外故障处理,关闭文件报警保留现场.,4.2软件设计基本概念,过程化内聚 当一个模块中包含的一组任务必需按照某一特定的次序执行时,就称为过程性内聚模块。,4.2软件设计基本概念,通信性内聚 模块内部的各个成分都使用同一种输入数据,或者产生同一个输出数据。它们靠公用数据而联系在一起,故称为通信性内聚。,4.2软件设计基本概念,顺序性内聚 如果一个模块内的处理元素和同一个功能密切相关,而且这

9、些处理必须顺序执行,通常一个处理元素的输出数据作为下一个处理元素的输入数据,则成为顺序性内聚。,4.2软件设计基本概念,功能性内聚 如果一个模块包括仅为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起来是为了完成一个具体的任务,此模块则为功能强模块。,4.2软件设计基本概念,2耦合耦合是对软件内部模块之间相互联系的度量。按照Myers的划分,也归纳为7类。,4.2软件设计基本概念,非直接耦合 若两个模块没有直接关系,它们之间的联系完全是通过主程序的控制和调用来实现的,便称这两个模块为非直接耦合,这样独立性最强。,4.2软件设计基本概念,数据耦合 若一个模块访问另一个模块,且被访问模

10、块的输入和输出都是数据项参数,则称这两个模块之间的联系为数据耦合。,4.2软件设计基本概念,特征耦合若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而是用记录传递的方式,这样的耦合称为特征耦合。,模块1与模块2为同级模块,相互之间没有信息传递,属于非直接耦合。模块3、4都是模块1的下属模块。模块1调用它们时,可通过参数表与它们交换数据。如果交换的都是简单变量,便构成数据耦合(如模块1、3之间);如果交换的是数据结构,便构成特征耦合(如模块1与模块4之间)。,4.2软件设计基本概念,控制耦合控制耦合是中等强度的耦合。此时在模块间传递的信息不是一般的数据,而是用作控制信号

11、的开关值或标志量(Flag)。,4.2软件设计基本概念,外部耦合若允许一组模块访问同一个全局变量,可称它们为外部耦合。,4.2软件设计基本概念,公共耦合若允许一级模块访问同一个全局性数据结构,则称之为公共耦合。内容耦合最强的一类耦合称为内容耦合。如果一个模块可以直接调用另一模块中的数据,或者允许一个模块直接转移到另一模块中去。,4.2软件设计基本概念,4.2.5 软件体系结构4.2.6 程序结构程序结构也称作控制层次,它代表了程序构件(模块)的组织(常常是结构化的)并暗示了控制的层次结构。4.2.7 数据结构,4.3软件设计原则,Davis提出了一系列软件设计的原则,下面的内容是在这些原则上的

12、总结和扩充:设计过程应该能够预测和评估。应该是可跟踪的。设计应该重视资源重用。软件设计的结构应该(尽可能)模拟问题域的结构。,4.3软件设计原则,设计应该表现出一致性和集成性。设计应该适应扩展和变更。设计应该考虑软件的容错性和处理错误、异常的能力。设计不是编码,编码也不是设计。在创建设计时就应该能够评估质量,而不是在事情完成之后。应该评审设计以减少概念性(语义性)错误。,4.4软件程序结构的启发式设计准则与优化,1改进软件结构,降低耦合并提高内聚,以提高模块独立性。2模块规模应该适中经验表明,一个模块的规模不应过大,模块的总行数应控制在10到100行的范围内,最好为30至60行,能在一张打印纸

13、内容纳下,这样理解和阅读都较方便。,3保持适当的扇入和扇出一个模块的扇入数表明有多少个上级模块直接调用它。扇出数衡量的是被一个模块直接控制的其他模块的数量。通常扇出数34为宜,最好不超过57。,4模块的作用域应该在控制域内一个模块的控制域,是模块本身及其所有从属以及最终的从属模块(即所有可供它调用的下级模块)。一个模块的作用域,是受这个模块中决策影响的其他模块。只要模块中含有一些依赖于这个判定的操作,这个模块就在这个判定的作用范围之内。,图4.23 判定位置违反了作用域/控制域原则,图4.24 满足作用域/控制域规则的3种方案,5.降低模块接口的复杂程度冗余并提高一致性。模块接口复杂性是软件出

14、现错误的首要原因,接口应该设计成简单地传递信息并且应该同模块的功能保持一致,接口不一致性(看上去无关的数据通过参数表或其他技术传递)是低内聚的表现。有问题的模块应该重新设计。,例如,一个求一元二次方程的根的模块定义为:QUAD_ROOT(TBL,X)其中数组TBL表示方程中的系数,数组X回送求得的根。这种传递信息的方式不便于理解,容易产生错误。可以改为:QUAD_ROOT(A,B,C,ROOT1,ROOT2)其中A,B,C表示方程的系数,ROOT1,ROOT2是算出的根。这样的接口既简单,又与模块QUAD_ROOT的功能一致。,6.定义功能可以预测的模块,但要避免过分限制性的模块。当模块可以作

15、为黑盒对待时就是可预测的;也就是说,同样的外部数据可以在不考虑内部处理细节的情况下生成。7.设计单入口单出口的模块软件设计师不要使模块间出现内容耦合。,4.5设计规格说明书与评审,4.5.1 软件设计规格说明书 在设计阶段,设计人员要完成的文档是软件设计说明书,它是软件设计的最终成果,它既可作为软件设计阶段编码人员书写源程序的依据,也可作为软件测试阶段及维护阶段的一个指南。,4.5设计规格说明书与评审,软件设计说明书通常包括以下内容:作用范围:描述设计工作的整体范围,其大部分内容来自软件需求说明书。参考文档:包括现有的软件文档、系统的文档资料、外购产品文档,包括硬件和软件以及技术参考资料。数据

16、设计:描述数据对象和形成的数据结构、外部文件和数据库结构、内部数据结构等。,4.5设计规格说明书与评审,体系结构设计:说明从需求模型导出的软件体系结构,包括模块的层次结构。接口设计:描述人机界面以及人机界面的设计规则,外部数据、系统或设备接口和内部接口及其设计规则。模块的过程设计:描述每个模块的处理说明、设计语言描述、调用其他模块和内部设计结构等。,4.5设计规格说明书与评审,需求与模块的相互对照表。测试准备:包括测试大纲、整体策略、专门的考虑等。其他:包括设计约束和一些特殊注解等内容。,4.5设计规格说明书与评审,4.5.2 设计复审所谓设计复审(Design Review),其实就是对设计

17、文档的复审。1设计复审方法正规复审 非正规复审,在传统软件设计中,概要设计复审和过程设计复审应该分开进行,不允许合并为一次复审。除软件开发人员外,概要设计复审必须有用户代表参加,必要时还可邀请有关领域的专家到会。过程设计复审一般不邀请用户和其他领域的代表。,2复审的指导原则,既然复审是为了及早揭露错误,参加复审的设计人员应欢迎别人提出批评和建议,不要为设计的缺陷“护短”。但复审的对象是设计文档,不是设计者本身,其他参加者也应为复审创造和谐的气氛,防止把复审变成质讯或辩论。复审中提出的问题应详细记录,但不要谋求当场解决。复审结束前,应作出本次复审能否通过的结论。,复审的标准应包括:可追溯性风险实用性可维护性接口技术清晰度选择方案限制其他具体问题,3复审的标准,4复审的内容,概要设计复审应该把重点放在系统的总体结构、模块划分、内外接口等方面。过程设计复审的重点应该放在各个模块的具体设计上。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号