第8章(软件设计基础).ppt

上传人:bao****ty 文档编号:143836281 上传时间:2020-09-02 格式:PPT 页数:80 大小:1.18MB
返回 下载 相关 举报
第8章(软件设计基础).ppt_第1页
第1页 / 共80页
第8章(软件设计基础).ppt_第2页
第2页 / 共80页
第8章(软件设计基础).ppt_第3页
第3页 / 共80页
第8章(软件设计基础).ppt_第4页
第4页 / 共80页
第8章(软件设计基础).ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《第8章(软件设计基础).ppt》由会员分享,可在线阅读,更多相关《第8章(软件设计基础).ppt(80页珍藏版)》请在金锄头文库上搜索。

1、2020/9/2,安徽工程大学计算机与信息学院,1,第八章 软件设计基础,软件设计是软件需求分析的后续工作,是对软件的需求模型的进一步具体化,是软件工程的重要阶段。 简单地讲,软件设计把软件的需求模型转化为软件的设计模型,向目标软件更前进一步。 本章讨论与软件设计有关的主要概念, 介绍几个具体的软件设计方法。,2020/9/2,安徽工程大学计算机与信息学院,2,8.1 软件设计过程,软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程。 软件设计 将产生系统的总体结构设计(architectural design)、系统的数据设计(data design)和系统的过程设计

2、(procedural design)( 图81)。,第八章 软件设计基础,2020/9/2,安徽工程大学计算机与信息学院,3,8.1软件设计过程,2020/9/2,安徽工程大学计算机与信息学院,4,软件设计过程,数据设计把信息描述转换为实现软件所要求的数据结构。 总体结构设计旨在确定程序各主要部件之间的关系。 过程设计要完成每一部件的过程化描述。 软件设计结果是编制代码的依据。 设计阶段的重要性 影响软件质量,没有良好的设计就没有稳定的、具备适应性的系统,也不会有易维护的软件。例如,房子的建筑、设计。 统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用(不包括维护阶段)的75%以上

3、。,8.1软件设计过程,2020/9/2,安徽工程大学计算机与信息学院,5,软件设计过程,从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。 概要设计是根据需求确定软件和数据的总体框架 详细设计是将其进一步精化成软件的算法表示和数据结构。 概要设计和详细设计由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。,8.1软件设计过程,2020/9/2,安徽工程大学计算机与信息学院,6,8.2 软件设计基本概念,软件设计基本概念是过去三十年里陆续提出的。 软件设计者根据这组概念进行设计决策,如: 划分子部件的标准;,第八章 软件设计基

4、础,2020/9/2,安徽工程大学计算机与信息学院,7,8.2.1 抽象与逐步求精,抽象是管理、控制复杂性的基本策略 。使用抽象技术便于人们用“问题域”的概念和术语描述问题,而无须过早地转换为那些不熟悉的结构。 软件设计过程是,在不同抽象级别上考虑、处理问题的过程。 ()在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式。 ()不断地具体化,不断地用面向过程的语言描述问题。 ()在最低的抽象级别上给出可直接实现的“问题解”,即程序。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,8,抽象与逐步求精,软件工程过程的每一步都是对较高一级抽象的解作一次较

5、具体化的描述。 在系统定义阶段, 软件系统被描述为基于计算机的大系统的一个组成部分; 在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达; 从概要设计过渡到详细设计时,抽象级再一次降低; 编码完成后,达到了抽象的最低级。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,9,抽象与逐步求精,在由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。 过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用此过程; 数据抽象把一个数据对象的定义(或描述 )抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。,

6、8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,10,例8.1 不同级别的过程抽象,例81考虑适用于低级CAD的图形软件包。 抽象1 该CAD软件系统配有能与作图员进行可视化通讯的图形界面。 能用鼠标替代作图板和直尺画各种直线和曲线。 能完成所有几何计算及所有截面视图和辅助视图的设计。 图形设计的结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。 在这一抽象级别上,问题的解用问题域本身的术语描述。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,11,不同级别的过程抽象,抽象2 CAD 软件任务; 用户界面任务; 创建二维图

7、形任务; 显示图形任务; 管理图形文件任务; end CAD. 在这一抽象级别上,给出了组成CAD软件任务的所有子任务,术语与问题域有所不同,但仍然不是实现用的语言。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,12,不同级别的过程抽象,抽象3 例“创建二维图形任务” PROCEDURE 创建二维图形 REPEATUNTIL DOWHILE 数字仪接口任务; 判断作图请求: 线:画线任务; 圆:画圆任务; END;,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,13,不同级别的过程抽象,DOWHILE 键盘接口任务; 选择分析或计算: 辅助

8、视图:辅助视图任务; 截面视图:截面视图任务; END; END REPETITION; END PROCEDURE 在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软件(比如采用do while结构)并且模块结构也开始明朗。求精过程还可继续下去,直至产生源代码。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,14,不同级别的数据抽象,数据抽象与过程抽象一样,能使设计者按不同的详细程度表示数据对象。 例 为CAD软件定义drawing(图)的数据对象: TYPE drawing IS STRUCTURE DEFINED number IS STRING

9、LENGTH(12); geometry DEFINED notes IS STRING LENGTH(256); bom DEFINED END drawing TYPE; drawing被表示为一种结构,各组成部件又可为某种数据抽象,如geometry 和bom。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,15,不同级别的数据抽象,抽象数据类型drawing定义完毕,即可用类型名直接说明数据对象,而不必涉及其内部构造的细节,如,可用语句 blueprint IS INSTANCE OF drawing; 或 schematic IS INSTANCE OF d

10、rawing; 说明blueprint和schematic具有drawing的特性。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,16,不同级别的数据抽象,在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操作。 以抽象数据类型drawing为例,可以定义擦除(erase)、存储(save)、分类(catalog)和拷贝(copy)等操作。 若干程序设计语言(如Ada,Modula,CLU)都提供了对抽象数据类型的支持,Ada的程序包机制是对数据抽象和过程抽象的双重支持。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息

11、学院,17,不同级别的数据抽象,由N.Wirth提出的“逐步求精”概念,与“抽象”密切相关,是早期的自顶向下设计策略。 “逐步求精” 求精的每一步都是用更为详细的描述替代上一层次的抽象描述。 层次结构的上一层是下一层的抽象,下一层是上一层的求精。 在过程求精的同时,伴随着数据求精,无论是过程还是数据,每个求精步都蕴含着某些设计决策,设计人员必须掌握一些基本的准则和各种可能的候选方法。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,18,8.2.2模块化与信息隐藏,模块化的概念 把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足

12、问题需要的一个解。 软件总体结构体现了模块化思想。 “模块化是软件唯一能使程序获得智能化管理的一个属性”,没有模块的程序控制路径错综复杂,变量被远距离引用等难于被人掌握。 优点体现在:1)可以降低问题的复杂性;2)系统方便修改;3)系统容易实现,即并发实现。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,19,模块化与信息隐藏,求解问题的过程 假设函数C(X)定义了问题X已被觉察到的复杂性, 函数E(X)定义了求解问题X所要求的工作量(按时间计),对于问题P1和P2, 如果C(P1)C(P2)(81a) 则E(P1)E(P2)(81b) C(P1+P2)C(P1)+C

13、(P2)(82) E(P1+P2)E(P1)+E(P2)(83) 解决一个复杂问题,比解决一个简单问题耗费多。 由P1、P2组合而成的问题复杂性,比单个问题复杂性的和更大。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,20,模块化与信息隐藏,“分治法” 一个复杂问题分割成若干个可管理的小问题后更易于求解。 当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。 如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和不足。 这些问题涉及信息隐藏、内聚度与藕合度的概念。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算

14、机与信息学院,21,模块化与信息隐藏,怎样保证模块数“在M附近”? 依据什么标准划分模块? 高内聚,底藕合,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,22,1信息隐藏,模块独立的概念 模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问; 每个模块只完成一个相对独立的特定功能; 模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。 采用信息隐藏原理指导模块设计优点: 支持模块的并行开发 减少软件测试和软件维护的工作量。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,23,2内聚度,内聚度 模块内部各成

15、分彼此结合的紧密程度。内聚度按其高低程度可分为七级,内聚度越高越好。 低级内聚度 ()偶然性内聚(Coincidental Cohesion)。 模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。 ()逻辑性内聚(Logical Cohesion) 模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输出。 ()时间性内聚(Temporal Cohesion) 模块包含的诸任务必须在同一时间段内执行,如一个初始化模块。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,24,模块化与信息隐藏,中级内聚度 ()过程性内聚(Procedural

16、 Cohesion) 模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次序执行; ()通信性内聚(Communicational Cohesion) 模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,25,模块化与信息隐藏,高内聚度 ()顺序性内聚(Sequential Cohesion) 模块内的各处理成份均与同一功能相关,且这些处理必须顺序执行,则称顺序内聚。 ()功能性内聚(Functional Cohesion) 模块内所有成分形成一个整体,完成单个功能。设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性,8.2软件设计基本概念,2020/9/2,安徽工程大学计算机与信息学院,26,3 耦合度,耦合度软件结构中模块间关联程度的一种度量。 耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。 设计软件应追求尽可能松散耦合的系统。 松散耦合系统中,任一模块的设计、测试和维护都相对独立。 松散耦合系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号