软件设计的目标和任务.ppt
《软件设计的目标和任务.ppt》由会员分享,可在线阅读,更多相关《软件设计的目标和任务.ppt(119页珍藏版)》请在三一办公上搜索。
1、软件设计的目标和任务,软件需求:解决“做什么”软件设计:解决“怎么做”软件设计的任务:以软件需求规格说明书为依据,进行数据设计系统结构设计过程设计,软件设计的目标和任务,数据设计侧重于数据结构的定义系统结构设计定义软件系统各主要成分之间的关系过程设计则是把结构成分转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。软件设计的重要性:是软件开发时期的第一个步,最终影响软件实现的成败和软件维护的难易程度。,软件设计的两个阶段,从工程管理的角度来看,软件设计分两步完成。总体设计:将软件需求转化为数据结构和软件的系统结构。详细设计:即过程设计。通
2、过对结构表示进行细化,得到软件的详细的数据结构和算法。,软件设计的两个阶段,第 5 章,总体设计,第5章 总体设计,5.1 设计过程5.2 设计原理5.3 启发规则5.4 描绘软件结构的图形工具5.5 面向数据流的设计方法5.6 小结习题,重点和难点,重点:软件设计过程中应遵循的基本原理面向数据流设计方法难点:变换分析、事务分析法过程和应用,总体设计的步骤,5.1 设计过程,5.1 设计过程,设想供选择的方案选取合理的方案系统流程图组成系统的物理元素清单成本/效益分析实现这个系统的进度计划推荐最佳方案功能分解设计软件结构(模块化思想),总体设计的步骤,设计数据库制定测试计划书写文档系统说明用户
3、手册测试计划详细的实现计划数据库设计结果审查和复审,5.1 设计过程,设计原理,模块化抽象逐步求精信息隐藏和局部化模块独立,5.2 设计原理,一.模 块 化,模块:模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。如:OO的对象、方法。模块化思想:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。“分而治之”是模块化思想的依据:把复杂的问题分解为若干个易于处理的小问题。,5.2 设计原理,一.模 块 化,令C(X):问题X的复杂程度,E(X):解决X问题
4、所需的工作量规律1:若两个问题P1,P2 C(P1)C(P2),则E(P1)E(P2)规律2:某问题P可以分成P1,P2,PP1P2 则:C(P1+P2)C(P1)+C(P2)所以:E(P1+P2)E(P1)+E(P2),5.2 设计原理,一.模 块 化,结论:分而治之,各个击破?将模块无限分割下去?单个模块的开发成本小,几乎可忽略不计;模块之间接口的开发成本呢?,5.2 设计原理,一.模 块 化,模块数目为M时,软件开发成本最小,模块数目与软件成本的关系,5.2 设计原理,二.抽 象,抽象:把一定事物、状态或过程中共性的方面集中和概括起来,暂时忽略它们之间的差异。抽象的思想:处理复杂系统的惟
5、一有效的方法是用层次的方式构造和分析它。抽象层次:软件设计中的两类抽象:过程抽象:功能 过程、函数数据抽象:数据对象定义、描述数据类型名,最高抽象级别面向问题的语言较低抽象级别面向问题和实现的语言最低抽象级别面向实现的语言,5.2 设计原理,二.抽 象,CAD图形软件包可以画各种直线和曲线,能完成所有几何图形的计算图形设计的结果存于图形文件中,图形文件可包含几何的、正文的和其它各种设计信息。,抽象1总体结构层次 的抽象图形软件包软件任务图形用户界面创建 二维图形任务显示 图形任务管理 图形文件任务End 图形软件包,例子:讨论一个在不同抽象级别上的软件设计所具有 的形式。,5.2 设计原理,二
6、.抽 象,抽象2过程层次的抽象(仅以管理图形文件任务为例)PROCEDURE drawing file management task IF OpenFile THEN input filename;open the file;display the file;ELSE IF SaveFile THEN input save filename;save the file;END IF END PROCEDURE.抽象3实现层次的抽象(程序设计语言描述),5.2 设计原理,二.抽 象,CAD软件中的数据抽象举例:,STRUCT coordinate int x;int y;CLASS Drawi
7、ng/parent class PUBLIC:coordinate startpoint,endpoint;CLASS Line:PUBLIC Drawing;CLASS Curve:PUBLIC Line;CLASS StraightLine:PUBLIC Line;Curve objCurve1;/objCurve1 is a instance of Curve StraightLine objSL2;/objSL2 is a instance of StraightLine,5.2 设计原理,三.逐 步 求 精,逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。逐步求精的思
8、想:对一个事物的认识是一个从高层次抽象向低层次抽象逐步转化和过渡的过程。Miller法则:一个人在任何时候都只能把注意力集中在(7+2)个知识块上。,5.2 设计原理,求精实际上是细化过程 求精要求设计者细化原始陈述,随着每个后续求精(即细化)步骤的完成而提供越来越多的细节。抽象与求精是一对互补的概念 抽象使得设计者能够说明过程和数据,同时却忽略低层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。求精则帮助设计者在设计过程中逐步揭示出低层细节。这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。,三.逐 步 求 精,5.2 设计原理,四.
9、信息隐藏和局部化,信息隐藏思想:模块应该设计得使其所含的信息(过程和 数据)对那些不需要这些信息的模块不可访问,模块之 间仅仅交换那些为完成系统功能所必需交换的信息。隐藏:模块的实现细节,而不是所有信息。优点:1.模块的独立性更好 2.支持模块的并行开发(设计和编码)3.便于测试和维护,减少错误向外传播 4.便于增加新的功能,新增加的模块和原有的 模块关系不大 5.在较高层次上进行软件开发,有助于提高软 件质量和生产效率,5.2 设计原理,四.信息隐藏和局部化,局部化:把一些关系密切的软件元素在物理上放得彼此靠近。例如:在模块中使用局部数据元素有助于信息隐藏,5.2 设计原理,五.模 块 独
10、立,模块独立性:每个模块只完成系统要求的独立的子功能,与其他模块的联系最少且接口简单。模块独立的概念是模块化、抽象、信息隐藏和局部化三个基本原理的直接结果。模块独立重要的理由:有效的模块化的软件比较容易开发独立的模块比较容易测试和维护衡量模块独立程度的标准:耦合、内聚,5.2 设计原理,五.模块独立1.耦合性,耦合:指模块之间联系的紧密程度。模块之间联系越紧密,其耦合性越强,独立性就越差。模块耦合度越低越好:1.独立性;2.减少错误传播。模块的耦合性从低到高可分为以下几种类型:非直接耦合(no direct coupling):二个模块都不依赖对方而独立存在数据耦合(data coupling
11、):二个模块通过参数交换信息,而信息仅限于数据控制耦合(control coupling):二个模块通过参数交换信息,传递的信息中有控制信息,5.2 设计原理,五.模块独立1.耦合性,标记耦合/特征耦合(stamp coupling):二个模块通过传递数据结构加以联系(数据结构以参数形式进行交换),或都与一个数据结构有关当被调模块只使用数据结构中的一部分数据元素时,产生标记耦合.被调模块 可使用的数据多于它所需要的数据,从而导致对数据的访问失去控制,给非法操作提供了机会。,5.2 设计原理,五.模块独立1.耦合性非直接耦合举例,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调
12、用来实现的。这种耦合的模块独立性最强。,5.2 设计原理,五.模块独立1.耦合性数据耦合举例,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合,开发票,计算水费,单价,数量,金额,5.2 设计原理,五.模块独立1.耦合性标记/特征耦合举例,“住户情况”是一个数据结构,图中模块都与之有关。“计算水电费”和“计算水费”传递的是数据结构,它们之间是标记偶合。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。,5.2 设计原理,五.模块独立1.耦合性标记/特征耦合举例,把标记耦合修改为:数据耦合/非直接耦合,5.2 设计原理,五
13、.模块独立1.耦合性控制耦合举例,控制耦合 二个模块通过参数交换信息,传递的信息中有控制信息去除控制耦合的方法:(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块,5.2 设计原理,五.模块独立1.耦合性,公共耦合(common coupling):二个模块通过公共数据环境相互作用全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备如果两个模块共享的数据很多,都通过参数传递可能很不方便,5.2 设计原理,五.模块独立1.耦合性公共耦合举例,公共数据耦合存在的问题:(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,软件可维护性差软
14、件可靠性差,软件可理解性降低诊断错误困难,5.2 设计原理,内容耦合(content coupling):一个模块访问另一个模块的内部数据;一个模块不通过正常入口而转到另一个模块的内部;两个模块有一部分程序代码重叠(只可能出现在汇编程序中);一个模块有多个入口(这意味着一个模块有几种功能)。,五.模块独立1.耦合性,5.2 设计原理,五.模块独立1.耦合性内容耦合举例,5.2 软件设计的概念及原理,最不好的耦合形式!,:一个模块不通过正常入口而进入另一个模块内部,如病毒,:说明这个模块有多个功能许多高级程序设计语言 已经设计成 不允许任何形式的内容耦合,五.模块独立1.耦合性,5.2 设计原理
15、,五.模块独立1.耦合性,例:试指出下述用C语言编写的函数声明 所代表的模块的耦合的类型。void fun0();void fun1(int);void fun2(int*);typedef structDF;*DF fun4(int);void fun5()static x;fun6(x);int fun6(int x)return+x;,内容耦合:fun6可以访问fun5的内部数据,公共耦合,无耦合,数据耦合,标记耦合,5.2 设计原理,五.模块独立1.耦合性,在软件设计中,提高模块的独立性,建立模块间尽可能松散的系统,是模块化设计的目标。为了降低模块间的耦合度,可以采取以下措施:(1)在
16、耦合方式上降低模块间接口的复杂性。(2)在传递信息类型时的设计原则:尽量采用数据耦合,避免使用控制耦合,慎用或有控制地使用公共耦合,完全不用内容耦合。在实践中要根据实际情况综合考虑。,5.2 设计原理,五.模块独立2.内聚性,内聚性:模块内部各个元素彼此结合的紧密程度。它是信息隐藏和局部化概念的自然扩展。高内聚往往以意味着模块间的低耦合。,内聚性,低高,偶然内聚(coincidental cohesion)逻辑内聚(logical cohesion)时间内聚(time cohesion)过程内聚(procedural cohesion)通信内聚(communicational cohesion
17、)顺序内聚(sequential cohesion)功能内聚(functional cohesion),5.2 设计原理,五.模块独立2.内聚性(1)偶然内聚,偶然内聚一个模块内的各处理元素之间没有任何联系。如一个模块内各个成分为完成一组功能而结合在一起,他们相互之间关系松散。,模块M中的三个语句没有任何联系,缺点:可理解性差,可修改性差,5.2 设计原理,逻辑内聚一个模块完成的任务在逻辑上属于相同或相似的一类。如一个模块完成的诸任务逻辑上是相关的;如一个模块产生各种类型的全部输出。缺点:增强了耦合程度(控制耦合)不易修改,效率低,五.模块独立2.内聚性(2)逻辑内聚,5.2 设计原理,五.模
18、块独立2.内聚性(3)时间内聚,时间内聚 一个模块内所包含的诸任务必 须在同一时间段内执行。这些 功能只因素关联因时间在一起。例如:初始化系统模块 系统结束模块 紧急故障处理模块,5.2 设计原理,五.模块独立2.内聚性(4)过程内聚,过程内聚 模块内处理元素彼此相关且必须按特定的次序执行。使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是过程内聚的模块。,5.2 设计原理,五.模块独立2.内聚性(5)通信内聚,通信内聚 模块内所有元素都使用相同的输入数据或者产 生相同的输出数据。,例:产生职工工资报表并计算平均工资模块,5.2 设计原理,五.模块独立2.内聚
19、性(6)顺序内聚(7)功能内聚,顺序内聚一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出数据就是下一处理元素的输入数据。功能内聚模块内所有处理元素属于一个整体,完成一个单一的功能。(最强的内聚!),5.2 设计原理,五.模块独立2.内聚性,5.2 设计原理,五.模块独立3.总结,耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚,低耦合,提高模块的独立性。内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。,5.2 设计
20、原理,七条启发式规则,1、模块的划分:高内聚,低耦合,保持相对独立性2、模块的大小:模块规模应该适中3、形成的结构:深度、宽度、扇出和扇入都应适当“顶层扇出较高,中间扇出较小,底层模块高扇入”4、模块的控制:模块的作用域应该在控制域之内5、模块的接口:简单、清晰、含义明确6、设计单入口单出口的模块7、模块功能应该可以预测,5.3 启发规则,1.改进软件结构提高模块独立性,分析初步设计结构,通过合并或分解以降低模块之间的耦合、提高模块的内聚。例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 目标 任务
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6441982.html