《软件设计工程》PPT课件.ppt
《《软件设计工程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件设计工程》PPT课件.ppt(84页珍藏版)》请在三一办公上搜索。
1、1,设计工程,软件工程(Software Engineering),2,内容摘要,软件设计工程概述软件设计准则 软件体系结构设计部件级设计技术 设计规约与设计评审,3,正如任何工程项目一样,在生产之前要做设计,软件编码前,也必须先进行软件设计。软件设计是软件开发的关键步骤,直接影响软件质量。软件需求分析解决“做什么”的问题,软件设计过程则解决“怎么做”的问题,4.1 软件设计工程概述,4,软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:软件体系结构设计阶段和部件级设计;有称为总体设计和详细设计两个阶段。其工作流程可用下图表示:,1、设计阶段结束要交付的文档是设计说明书,根据设计方
2、法的不同,有不同的设计文档。2、每个设计步骤完成后,都应进行复审。常用的设计方法有:SD法、Jackson法、OOD法、层次式输入-处理-输出法(又称HIPO法)、Parnas法、Warnier法等。,软件设计阶段,5,设计任务:使用一种设计方法,将分析阶段获得的需求说明的软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息传送给设计阶段,完成系统的数据/类设计、体系结构设计、接口设计、部件级设计 最后得到软件设计说明书。,1.软件设计阶段的任务,6,软件设计的目标就是构造一个高内聚低耦合的软件设计模型。提高可靠性;提高可维护性;提高可理解性;提高效率。衡量该目标的准则:1、软件实体有
3、明显的层次结构,利于软件元素间控制。2、软件实体应该是模块化的,模块具有独立功能。3、软件实体与环境的界面清晰。4、设计规格说明清晰、简洁、完整和无二义性。,2.软件设计的目标,7,3.软件设计的过程,选取合理的系统体系结构推荐最佳方案、技术选型划分模块,确定软件结构 数据结构和算法设计设计用户界面编写文档审查和复查,8,一、选取合理的系统体系结构,软件体系结构确定了系统的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。常见的软件体系结构单主机结构C/S(
4、Client/Server)结构B/S(Browser/Server)结构,3.软件设计的过程,9,一、选取合理的系统体系结构,选取体系 针对以下问题考虑:是单机还是客户机/服务器系统是应用开发还是低层开发(是否有单片机)客户机最大点数是否提供给第三方接口网络(数据通信)连接方式胖客户机还是瘦客户机数据文件的保存方式(文本、本地数据库、大型数据库),3.软件设计的过程,10,二、推荐最佳方案、技术选型,技术选型,明确以下信息:主要硬件环境操作系统应用系统内的各种服务器软件开发语言及开发工具CASE软件,3.软件设计的过程,三、划分模块,确定软件结构 开发方法不同,确定软件结构的方法也不同。例如
5、SD法,是从分层的DFD图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图。一般包括确定系统的软件结构,分解模块,确定系统的模块层次关系。,11,四、确定系统的数据结构、算法 数据结构的建立对于信息系统而言尤为重要。要确定数据的类型,组织、存取方式,相关程度及处理方式等。,五、设计用户界面 作为人机接口的用户界面起着越来越重要的作用,它直接影响到软件的寿命。,3.软件设计的过程,六、编写文档设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。七、审查和复查每个设计步骤完成后,都应进行复审。,12,抽象化与逐步求精 模块化准则信息隐蔽准则模块独立性准则,4.2
6、 软件设计准则,软件设计是软件开发过程的重要阶段,对保证软件系统的质量起着关键作用。但是如何保证软件设计的质量呢?有以下经过长期考验的设计准则:,13,抽象,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述,一、抽象化与逐步求精准则,软件设计中主要抽象手段有:过程抽象和数据抽象 过程抽象(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的数据抽象是指定义数据类型
7、和施加于该类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数据,逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有助于设计者在设计过程中揭示低层的细节,14,模块(Module)是程序对象有名字的集合。又称“构件”,一般指用一个名字可调用的一段程序。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。它一般具有如下三个基本属性:功能 即指该模块实现什么功能,做什么事情。必须注意,这里所说的模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。逻辑 即描述模块内部怎么做
8、。状态 即该模块使用时的环境和条件。,二、模块化准则,4.2 软件设计准则,15,模块化:所谓模块化就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。,二、模块化准则,4.2 软件设计准则,16,模块化降低软件复杂度的简单证明,令:C(X)表示问题 X 的复杂度函数;E(X)解决问题 X 所需工作量的复杂度函数;若:有问题 P1,P2;C(P1)C(P2);显然:E(P1)E(P2)由经验:C(
9、P1+P2)C(P1)+C(P2)于是:E(P1+P2)E(P1)+E(P2)将问题(P1+P2)划分为两个问题P1和P2后,其工作量和复杂度都降低。,并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。右上图描述了模块化与软件成本的关系。,17,三、信息隐蔽准则,4.2 软件设计准则,由parnas方法提倡的信息隐蔽如下:每个模块的实现细节对于其他模块来说是隐蔽的。也就是说,模块中所包含的信息(数据和过程)不允许其他不需要这些信息的模块使用。通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制,18,该
10、原则有利于提高模块的内聚性。由于一个软件系统在整个软件生存期内要经过多次修改,在划分模块时要采取措施,使得大多数过程和数据对软件的其他部分是隐蔽的。这样,在将来修改软件时,可将偶然引入错误所造成的影响限制在一个局部范围之内,不致波及到软件的其他部分。,例如:定义栈(stack)操作模块makenull(置空栈);push(进栈);pop(出栈);gettop(取栈顶)empty(判栈空)其操作均被封装,无需了解模块内部的实现过程。对外实现了信息隐蔽。,三、信息隐蔽准则,4.2 软件设计准则,19,四、模块独立性准则,软件模块独立性的含义是指开发具有功能专一,模块之间无过多相互作用的模块。又称为
11、模块独立性准则。软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。提高模块质量在于提高模块独立性。模块的独立性的度量标准是用耦合性和内聚性两个定性指标来衡量。独立性比较强的模块应该是具有高内聚性和低耦合度,4.2 软件设计准则,20,耦合性(Coupling),模块分解的一个目标是使块间联系尽可能小,达到这个目标可通过以下措施。每个模块用过程语句(或函数方式等)调用其他模块。模块间传送的参数为数据型。模块间公用的信息(如参数等)尽量少。,耦合性是指软件结构中模块相互连接的紧密
12、程度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:,方式 块间联系方式有“直接引用”或“用过程语句调用”。作用 块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型)。数量 块间传送的共用信息的数量。,21,模块间耦合的类型:,模块独立性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),外部耦合公共耦合,内容耦合,无直接耦合数据耦合标记耦合,高,低,耦合性,控制耦合,22,(1)无直接耦合,两个模块没有直接关系(模块1和模块2),模块独立性最强。,23,(2)数据耦合,数据耦合(Data Coupl
13、ing):一个模块传送给另一个模块的参数是一个单个的数据项。一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。,数据耦合举例,24,(3)标记耦合(复合型耦合),复合耦合(Stamp Coupling)(标记,特征耦合)一个模块传送给另一个模块的参数是一个复合的数据结构。例如,包含几个数据单项的记录。如果两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。,25,标记耦合举例,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生
14、依赖关系,它们之间也是标记偶合.,26,将标记耦合修改为数据耦合举例,27,(4)控制耦合(Control Coupling),控制耦合 一个模块传递给另一模块的信息是用于控制该模块内部逻辑的控制信号。显然,对被控制模块的任何修改,都会影响控制模块。,一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。,28,控制耦合举例,(控制信号),29,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块,去除模块间控制耦合的方法,30,改控制耦
15、合为数据耦合举例,31,(5)外部耦合,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。,32,(6)公共耦合(公共数据区耦合),公共耦合(Common Coupling)若干模块访问一个公共的数据环境,则它们之间的耦合称为公共耦合。公共环境可为全局数据结构、共享的通信区、内存的公共覆盖区等。显然,公共数据区的变化,将影响所有公共耦合模块,严重影响模块的可靠性和可适应性,降低软件的可读性。一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构 共享通讯区 内存
16、公共覆盖区等,33,公共耦合举例,34,(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题,35,(7)内容耦合,内容耦合(content coupling)一个模块直接访问另一模块的内部数据。一个模块不通过正常入口转到另一模块的内部。一个模块有多个入口。两个模块有部分代码重迭。,最不好的耦合形式!,36,如何降低模块间耦合度:,耦合是影响软件复杂程度和设计质量的重要因素模块化设计的目标:建立模块间耦合度尽可能松散的系统(1)尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内
17、容耦合(2)降低接口的复杂性,37,内聚性(cohesion),内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度量模块内的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。,38,低,偶然内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚,模块独立性,弱(功能分散),强(功能单一),模块的内聚性类型:,内聚性,高,39,模块T中的三条语句毫无关系,A、B、C、D都不在文件CARD FILE 中。模块P、Q、R分别与三条语句有关。,又称为巧合型,为了节约空间,将毫无关系(或者联系不多)的各成分放在一个模块中。这样的模块显然不易理解,不易修改。缺点:可理解性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计工程 软件设计 工程 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4861279.html