软件设计的目标和任务.ppt

上传人:牧羊曲112 文档编号:6441982 上传时间:2023-10-31 格式:PPT 页数:119 大小:2.37MB
返回 下载 相关 举报
软件设计的目标和任务.ppt_第1页
第1页 / 共119页
软件设计的目标和任务.ppt_第2页
第2页 / 共119页
软件设计的目标和任务.ppt_第3页
第3页 / 共119页
软件设计的目标和任务.ppt_第4页
第4页 / 共119页
软件设计的目标和任务.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《软件设计的目标和任务.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.改进软件结构提高模块独立性,分析初步设计结构,通过合并或分解以降低模块之间的耦合、提高模块的内聚。例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度。

21、,5.3 启发规则,1.改进软件结构提高模块独立性,5.3 启发式规则,软件结构图反映了整个系统的功能实现,控制层次体系,往往用树状或网状结构的图形来表示。,(a)树状结构(b)简单网状结构(c)复杂网状结构,2.模块规模应该适中,模块规模过大,降低可理解程度;模块过小,模块开销大于有效操作,且系统的接口复杂。过大模块 进一步分解(保证模块独立性)过小模块 几个合并(尤其只被一个模块调用时)每个模块最好控制在60行语句以内。语句数超过30以后,模块可理解性迅速下降,5.3 启发规则,软件设计的两个阶段,设计原理,模块化抽象逐步求精信息隐藏和局部化模块独立,5.2 设计原理,五.模块独立1.耦合

22、性,5.2 设计原理,五.模块独立2.内聚性,5.2 设计原理,七条启发式规则,1、模块的划分:高内聚,低耦合,保持相对独立性2、模块的大小:模块规模应该适中3、形成的结构:深度、宽度、扇出和扇入都应适当“顶层扇出较高,中间扇出较小,底层模块高扇入”4、模块的控制:模块的作用域应该在控制域之内5、模块的接口:简单、清晰、含义明确6、设计单入口单出口的模块7、模块功能应该可以预测,5.3 启发规则,3.深度、宽度、扇入、扇出都应该适中,5.3 启发规则,3.深度、宽度、扇入、扇出都应该适中,分解或合并模块以调整扇入、扇出数,5.3 启发规则,4.模块的作用域应该在控制域之内,作用域:受该模块内的

23、一个判定影响的所有模块的集合控制域:模块本身及所有直接或间接从属于它的模块的集合,A的控制域为:A,B,C,D,E,F,5.3 启发规则,4.模块的作用域应该在控制域之内,“”表示判定条件,它可影响另一个模块中用到的 全局变量 或静态变量,例1:例2:,4.模块的作用域应该在控制域之内,例3:例4:,5.3 启发规则,4.模块的作用域应该在控制域之内,作用域不在控制域内的修改方法:1.将判定点上移到足够高的位置,5.3 启发规则,4.模块的作用域应该在控制域之内,2.将那些在作用域内但不在控制域内的模块下移 到控制域内。,5.3 启发规则,5.力争降低模块接口的复杂度,目标:仔细设计模块接口,

24、使得信息传递简单并且和模块的功能一致,标记耦合,数据耦合,5.3 启发规则,6.设计单入口单出口模块,每个模块只有唯一入口和唯一出口,5.3 启发规则,7.模块的功能应该可以预测,同样的输入可以产生同样的输出带有内部“存储器”(如:静态变量)的模块,其输出可能取决于内部存储器的状态(当前值)即:静态变量的当前值=模块的功能不可预测。如上例:在另一个类的方法中 创建一个counter类的对象。这个方法的功能就不可预测但不应过分强调功能的可预见性而使模块失去灵活性(无法重用模块),5.3 启发规则,一.层 次 图,5.4 描绘软件结构的图形工具,层次图用来描绘软件的层次结构,矩形框代表模块,方框之

25、间的连线表示调用关系。,图5.3 正文加工系统的层次图,一.层 次 图,层次图 层次方框图 层次图:模块方框之间的连线表示 调用关系。用于设计阶段 层次方框图:模块方框之间的连线表示 组成关系。用于需求分析阶段,第3.7节,5.4 描绘软件结构的图形工具,二.HIPO 图(Hierarchy Input-Process-Output Diagram),HIPO图=层次图(H图)+IPO图(输入/处理/输出)除最顶层的方框外,所有的方框加编号(编号规则同数据流图中的编号)对层次图中的各个模块,采用IPO图的方式说明该模块的处理功能。每张IPO图内应标出该模块在H图中的编号。,5.4 描绘软件结构

26、的图形工具,二.HIPO 图(Hierarchy Input-Process-Output Diagram),5.4 描绘软件结构的图形工具,三.结 构 图,由Yourdon提出结构图 层次图 调用信息方框:模块的名字或功能 箭头(或直线):模块的调用关系;通常用直线带注释的箭头:模块调用过程中来回传递的信息尾部是空心圆:传递的是数据尾部是实心圆:传递的是控制信息,5.4 描绘软件结构的图形工具,图 结构图的例子,5.4 描绘软件结构的图形工具,三.结 构 图,另外的附加符号模块的选择调用或循环调用,每个传递的数据是否必需?,完成模块功能所必须的数据是否都传递到了?,传输的数据是否只与单一的功

27、能有关?是否目的明确?,三.结 构 图,结构图一般不入文档,仅用于检查设计的正确性和模块的独立性。若图上模块间的联系不容易解释,则应考虑设计上是否有问题入文档的通常为层次图。再加上IPO图和数据字典,就可导出结构图,5.4 描绘软件结构的图形工具,5.5 面向数据流的设计方法,需求分析阶段:结构化分析SA(Structural Analysis)是面向数据流自顶向下逐步求精进行需求分析的方法。设计阶段:结构化设计SD(Structured Design)是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,也称为面向数据流的设计方法。,一.信息流的类型1.变换流,5.5 面向数据流

28、的设计方法,信息流映射成软件结构事实上所有信息流都可归结为变换流,一.信息流的类型1.变换流,5.5 面向数据流的设计方法,信息流的类型2.事务流,5.5 面向数据流的设计方法,数据沿输入通路到达事务中心,该中心根据输入数据的类型在若干个动作序列中选择一个来对该数据进行处理。具有这种特征的数据流称为事务流。事务中心任务:接收输入数据。分析每个事务,确定类型。根据事务类型选取一活动通路。,事务中心,T,活动通路,面向数据流方法的设计过程,变换分析的设计步骤1.复查基本系统模型。2.复查并精化数据流图3.确定数据流图具有变换特性还是事务特性4.确定输入流和输出流的边界,从而划分出变换中心5.完成第

29、一级分解6.完成第二级分解7.使用设计度量和启发式规则对第一次分割得到的软件结构进行精化,二.变换分析,5.5 面向数据流的设计方法,二.变换分析,5.5 面向数据流的设计方法,1.复查基本系统模型(指0层数据流图和第1层数据流图)确保系统的输入数据和输出数据符合实际。2.复查并精化数据流图确保给出了正确的逻辑模型,而且每个处理都代表一个规模适中相对独立的子功能。,四.实例分析实例1,5.5 面向数据流的设计方法,汽车数字仪表板的设计主要功能:1.通过模数转换实现传感器和微处理机接口;2.在发光二级管面板上显示数据;3.指示每小时英里数mph、行驶的里程、每加仑 油行驶的英里数mpg;4.指示

30、汽车正处于加速或减速状态;5.超速警告:车速超过55英里/小时,响警告铃声,图5.11数字仪表板系统的数据流图,3.确定数据流图具有变换特性还是事务特性 一般来说所有数据流图都可认为具有变换特性,但当具有明显的事务特性时采用事务分析。,二.变换分析,5.5 面向数据流的设计方法,4.确定输入流和输出流的边界,从而划分出变换中心,具有边界的数据流图,5.完成第一级分解:确定顶层模块和由顶层直接控制的模块,通常分为输入模块、变换模块和输出模块。方法:设计三个模块CI:输入控制模块CP:变换控制模块CO:输出控制模块,二.变换分析,5.5 面向数据流的设计方法,顶层模块的基本功能是控制,协调输入模块

31、、变换模块、输出模块。,变换部分,输入部分,输出部分,二.变换分析,5.5 面向数据流的设计方法,图5.14数字仪表板系统的第一级分解,二.变换分析,5.5 面向数据流的设计方法,6.完成第二级分解:将数据流图中的每个处理映射成软件结构中的一个适当模块。I:由边界向外回溯,将每个遇到 的处理映成相应的层模块。P:每个处理直接对应一个下层模块O:由边界向外推,方法与 I 类似,A,D,C,B,未精化的数字仪表板系统的软件结构,5.5 面向数据流的设计方法,数据转换控制,驱动仪表板,接收传感器信号,计算gph,读燃料流,转换成rpm,收集sps,读旋转信号,确定加/减速,计算mph,计算mpg,计

32、算里程,加/减速显示,显示mph,显示mpg,显示里程,发出铃声,发光二极管显示,二.变换分析,模块的简要说明进出该模块的信息(接口描述);模块内部的信息;过程陈述,包括主要判定点及任务等;对约束和特殊特点的简短讨论。7、根据设计度量和启发式规则对第一次分割得到的软件结构进行精化。,5.5 面向数据流的设计方法,图5.19精化后的数字仪表板系统的软件结构,5.5 面向数据流的设计方法,二.变换分析,5.5 面向数据流的设计方法,整个过程并不复杂,画好后根据实际情况对软件结构进行优化,也就是进行必要的合并或分解。以求设计出高内聚低耦合的模块组成的、具有良好特性的软件结构。,2-5 北京某高校可用

33、的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。请用定义数据字典的方法,定义上述的电话号码。,作业及解答(第2章),2-5 北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。请用定义数据字典的方法,定义上述的电话号码。,

34、作业及解答(第2章),定义数据的方法 符 号 含 义 举 例 被定义为 与 x=ab.,.或.|.或 x=a,b,x=a|b.或 m.n 重复 x=a,x=3a8(.)可选 x=(a)“.”基本数据元素 x=“a”.连结符 x=1.9,作业及解答(第2章),电话号码=校内电话号码|校外电话号码/电话号码分为校内电话和校外电话两类校内电话号码=非零数字+3 位数字/校内电话号码由4位数字组成,第1位数字不是0校外电话号码=本市号码|外地号码/校外电话又分为本市电话和外地电话两类本市号码=数字零+8位数字/拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),作业及解答(第2章),外

35、地号码=数字零+3位数字+8位数字/拨校外电话需先拨0,若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)非零数字=1|2|3|4|5|6|7|8|9数字零03位数字3数字3/3至3个数字8位数字=非零数字+7位数字7位数字=7数字7数字0|1|2|3|4|5|6|7|8|9,作业及解答(第2章),3-3 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存

36、款时未留密码,则系统计算利息并印出利息清单给储户。请用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。,作业及解答(第3章),作业及解答(第3章),作业及解答(第3章),ER模型本问题中共有两类实体,分别是“储户”和“储蓄所”,在它们之间存在“存取款”关系。因为一位储户可以在多家储蓄所存取款,一家储蓄所拥有多位储户,所以“存取款”是多对多(M:N)关系。储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,而数额、类型、到期日期、利率和密码则是关系类型存取款的属性。,作业及解答(第3章),作业及解答(第3章),设计原理,模块化抽象逐步求精信息

37、隐藏和局部化模块独立,5.2 设计原理,五.模块独立1.耦合性,5.2 设计原理,五.模块独立1.耦合性,在软件设计中,提高模块的独立性,建立模块间尽可能松散的系统,是模块化设计的目标。为了降低模块间的耦合度,可以采取以下措施:(1)在耦合方式上降低模块间接口的复杂性。(2)在传递信息类型时的设计原则:尽量采用数据耦合,避免使用控制耦合,慎用或有控制地使用公共耦合,完全不用内容耦合。在实践中要根据实际情况综合考虑。,5.2 设计原理,五.模块独立2.内聚性,5.2 设计原理,五.模块独立3.总结,耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚,低耦合,提高模块的

38、独立性。内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。,5.2 设计原理,七条启发式规则,1、模块的划分:高内聚,低耦合,保持相对独立性2、模块的大小:模块规模应该适中3、形成的结构:深度、宽度、扇出和扇入都应适当“顶层扇出较高,中间扇出较小,底层模块高扇入”4、模块的控制:模块的作用域应该在控制域之内5、模块的接口:简单、清晰、含义明确6、设计单入口单出口的模块7、模块功能应该可以预测,5.3 启发规则,一.层次图,5.4 描绘软件结构的图形工具,二.HIPO图,三.

39、结构图,变换分析的设计步骤1.复查基本系统模型。2.复查并精化数据流图3.确定数据流图具有变换特性还是事务特性4.确定输入流和输出流的边界,从而划分出变换中心5.完成第一级分解6.完成第二级分解7.使用设计度量和启发式规则对第一次分割得到的软件结构进行精化,二、变换分析,5.5 面向数据流的设计方法,三.事务分析,5.5 面向数据流的设计方法,1、基本过程与变换分析类似,差别在于由数据流图到 软件结构的映射方法不同。2、事务型软件结构一个顶层模块(总控模块M)下一层包括2个分支:接收分支:负责接收数据并根据设计要求的格式实现输入数据的交流(同变换分析)。发送分支:包括一个调度模块,控制下层的所

40、有的事务处理模块(对应数据流图上的事务种类数目)。功能:接收事务数据,根据事务类型调度相应处理模块。,三.事务分析,5.5 面向数据流的设计方法,总 控,A,B,C,I,S,R,变换分析是软件结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用变换分析为主,事务分析为辅的方式进行软件结构的设计。,三.事务分析,5.5 面向数据流的设计方法,三.事务分析,5.5 面向数据流的设计方法,没有明显的事务特征,按变换分析进行机械性遵循映射规则,可能会得到一些不必要的控制模块,此时可将这些控制模块与下层模块合并;如果一个控制模块功能太复杂,可以分解成两个或多个模块,注意!,五 设计优化,“一个不能工作的最佳设计的价值是值得怀疑的”在有效的模块化的前提下使用最少量的模块;在能够满足信息要求的前提下使用最简单的数据结构。对时间起决定性作用的软件进行优化的方法。“先使它能工作,然后再使它快起来”,5.5 面向数据流的设计方法,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号