第5章总体设计_第1页
第5章总体设计_第2页
第5章总体设计_第3页
第5章总体设计_第4页
第5章总体设计_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第5章 总体设计25.1 设计过程5.2 设计原理5.3 启发规则5.4 描绘软件结构的图形工具5.5 面向数据流的设计5.6 小结主要内容主要内容软件过程模型软件生命周期5 总体设计4软件设计 阶段需求开发体系结构设计界面设计数据设计过程设计编程与测试总体设计详细设计5678DFD91、模块化2、抽象3、逐步求精4、信息隐藏和局部化5、模块独立5.2 设计原理105.2.1 模块化(Modularity)模块模块:由边界元素限定边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。(本质:本质:具有相对独立性的程序段)E.g.,PASCAL语言中的BeginEnd,或者C、C+与J

2、ava中的对,都是边界元素。注:注:过程、函数、子程序、宏等都可作为模块。模块是构成程序的基本构件模块是构成程序的基本构件。模块化:模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成用户指定的功能以满足用户的需求。为什么采用模块化u经验:一个大问题拆成多个小问题解决更容易u但是也不要无限的细分模块12各个击破各个击破结构清晰可修改性好易测试和调试13 模块化和成本的关系接口成本接口成本图5.1 模块化和软件成本规模145.2.2 抽象什么是抽象?认识复杂事物的思维工具抽取事物的本质特性,暂时不考虑它们的细节 处理处理复杂系统复杂系统

3、的唯一有效的方法是用的唯一有效的方法是用层次层次的方式构造和分析它的方式构造和分析它。 一个复杂的动态系统首先可以用一些一个复杂的动态系统首先可以用一些高级的抽象概念高级的抽象概念构造和理解构造和理解 高级概念又可以用一些较高级概念又可以用一些较低级的概念构造低级的概念构造和理解,如此进行下去,和理解,如此进行下去,直至直至最低层次最低层次的具体元素。的具体元素。 在最高的抽象层次上,以概括的方式概括的方式叙述问题的解法;在较低的抽象层次上,则采用过程化的方法过程化的方法;在最低抽象层次上,以直接直接实现的方式实现的方式叙述问题的解法。上下级关系的层次结构上下级关系的层次结构 15在软件工程过

4、程中,从系统定义到实现,每进展一步都可以看做是对软件解决方案的抽象化过程的一次细化。5.2.2 抽象 可行性研究阶段可行性研究阶段,软件作为系统的一个完整部件完整部件;需求分析期间需求分析期间,软件解法是使用在问题环境内熟悉的方式描述;由总体设计向详细设计过渡总体设计向详细设计过渡时,抽象的程度也就随之减少减少了;源程序源程序写出来以后,也就达到了抽象的最低层最低层。逐步求精逐步求精16可以把逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”求精是细化过程。5.2.3 逐步求精 逐步求精:抽象-具体u忽略细节,u分层理解问题,u自顶向下层层加细175.2.3 逐步求精

5、进门进门走到门前走到门前;摸到把手摸到把手;开门开门;走进去走进去;关门关门;while(门没打开门没打开) 转动把手转动把手; if(把手转不动把手转不动) 掏出钥匙掏出钥匙; 找到正确的钥匙找到正确的钥匙; 插入锁孔插入锁孔; 转动钥匙转动钥匙; 推推/拉拉门门;18Miller法则:一个人在任何时候都只能把注意力集中在(72)个知识块上。但是,在开发软件的过程中,软件工程师在一段时间内需要考虑的知识块数远远多于7。例如,一个程序通常不止使用个数据,一个用户也往往有不止7个方面的需求。逐步求精方法的强大作用就在于,它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上,而忽略目前还

6、不需要考虑的细节,这些细节将留到以后再考虑。5.2.3 逐步求精19 应用模块化原理时,自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解软件呢?”信息隐藏原理指出信息隐藏原理指出:应该这样设计和确定模块:一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。5.2.4 信息隐藏20局部化局部化的概念和信息隐藏概念是密切相关的。所谓局部化局部化是指把一些关系密切关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数据元素是局部化的一个例子。局部化有助于实现信息隐藏。隐藏的一般是模块的实现细节,故又称隐藏的一般是模块的实现细节,故又称“细节隐藏细节隐藏”21

7、接口模块5.2.4 信息隐藏“秘密”用户 算法算法 数据结构数据结构 外部接口的实现细节外部接口的实现细节 资源分配方式资源分配方式 .接口225.2.4 信息隐藏为什么要信息隐藏?u减少局部设计对全局的影响u强调通过接口来进行通信u不鼓励使用全局数据u有助于实现封装u有助于提高软件的质量23模块化、抽象、信息隐藏和局部模块化、抽象、信息隐藏和局部化的直接结果化的直接结果?模块独立模块独立245.2.5 模块独立 开发具有独立功能而且和其他模块间没有过多的相互作用的模块,就可以做到模块独立。即:每个模块有相对独立的特定功能,与其他模块间的关系较为简单. 模块独立性的重要性:(1)具有独立模块的

8、软件容易开发;(2)独立的模块容易测试与维护。 模块独立是好设计的关键,而设计又是决定软件质量的关键环节。 模块的独立程度可由两个定性标准度量:(1)耦合耦合:衡量不同模块间相互依赖的紧密程度;(2)内聚内聚:衡量一个模块内部各个元素彼此结合的紧密程度25耦合程度越低,模块之间的独立性越好26数据耦合 定义:定义:如果两个模块间通过参数交换信息,而且交换的信息仅仅是数据,属于低耦合低耦合范畴 系统中至少必须必须存在这种耦合; 一般来说,一个系统内可以只包含只包含数据耦合27main()int sum (int result, int n) int i; int sum = 0; for (i

9、= 0; i n; i +) sum += resulti; return sum;float division (int sum, int n) if (n!=0) return sum/n;学生成绩人数成绩之和平均成绩成绩和,人数28控制耦合一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,属于中等程度中等程度的耦合。2930A:.A1=V1+V2.B:.V1 = B1.Global: V1 、 V2Global: V1、V2A:.V1 +.B:.V2 = B1+V1.32导致的问题导致的问题公共环境耦合特点公共环境耦合特点:公共部分的改动公共部分的改动将影响所有调

10、用它的模块公共部分的数据存取无法控数据存取无法控制系统复杂程度系统复杂程度随耦合模块的个数增加而增加33ABA:.goto label.C:.lable: .DC34影响耦合强弱因素:3536内聚标志一个模块内,各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。设计目标:高内聚高内聚理想的内聚模块只做一件事。模块内的高内聚往往意味着模块间的松耦合内聚 Cohesion37在偶然内聚的模块中,各种元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,在另一种应用场合又不允许这种修改,从而陷入困境。如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的38 或者

11、一组语句在两处或多处出现(作为一个模块以节省内存):ABACAcall ABcall AC39如果一个模块完成的任务,在逻辑上属于相同或相似的一类40int ReadInputs (int device) switch (device) case 0: return ReadFromDisk(); case 1: return ReadFromTape(); case 2: return ReadFromKeyboard(); . 把逻辑上功能相似的数据和代码放在同一把逻辑上功能相似的数据和代码放在同一个模块里个模块里41void Initialize() InitScreen(); Init

12、Memery(); InitLogFile(); .void Failure() CancelAllServices(); NotifyOperator(); RecordFailure(); .42根据程序程序流程图流程图确定的模块划分,这样得到的往往是过程内聚的模块4344顺序内聚:顺序内聚:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行通常一个处理元素的输出数据作为下一个下一个处理元素的输人输人数据数据根据数据流数据流图图划分模块时,得到的往往是顺序内聚的模块int average (int result, int n) int i; int sum = 0; i

13、nt ave; for (i = 0; i 描绘软件结构的层次图结构的层次图定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。64背景材料Edward Yourdonu软件领域最有影响力的人士之一u被选入计算机名人堂u超过25本专著,包括结构化方法的开山之作结构化方法的开山之作 Structured Design、面向对象方法的经典面向对象方法的经典Object Oriented Analysis和Object Oriented Design,项目管理名著项目管理名著Death Marchu创立创立了结构化方法结构化方法和Coad/Yourdon方法u建立建立并领导了YOUR

14、DON咨询公司65背景材料结构化方法u即SASD方法,也称为面向功能的开发方法或面向数据流的开发方法u1978年,由Yourdon和L. L. Constantine提出u1979年,Tom DeMarco对此方法进行了完善u它首先用结构化分析结构化分析(SA)进行需求分析需求分析,然后用结构化设计结构化设计(SD)方法进行总体设计总体设计,最后是结构化编程结构化编程(SP)u该方法开发步骤明确,SA-SD-SP一气呵成,而且给出了两类典型的软件结构两类典型的软件结构(变换型和事务型),便于参照,使得开发成功率大大提高665.5.1 概念数据流分类:变换流事务流 5.5 面向数据流的设计方法6

15、7信息沿输入通路进入系统,同时由外部形式变换成内部形式外部形式变换成内部形式,进入系统的信息通过变换中心变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。1. 变换流事实上所有的信息流都可归结为变换流68这种数据流是“以事务为中心的以事务为中心的”,即数据沿输入通路到达一个处理处理T,这个处理T根据输入数据的类型,在若干个动作序列中选出一个来执行。处理处理T称为事务中心称为事务中心,完成下述任务:(1) 接收输入数据(输入数据又称为事务);(2) 分析每个事务以确定它的类型;(3) 根据事务类型选取选取一条活动通路。2 事务流69是一系列设计步骤的总称总称,经过这些步骤,把具有变

16、换流特点的数据流图,按预先确定的模式,映射映射成软件结构成软件结构。下面通过一个例子说明变换分析的方法。701.例子: 汽车数字仪表板的设计。5.5.2 变换分析智能产品设计包含软件设计71假设的仪表板将完成下述功能功能:(1) 通过模数转换实现传感器和微处理机接口;(2) 在发光二极管面板上显示数据;(3) 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4) 指示加速或减速;(5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。软件需求分析阶段(需求分析阶段(SA)-每条要求以及系统的其他特点进行全面的分析评价-建立起必要的文档资料(数据流图数据流

17、图DFD).结构化设计结构化设计SD(面向数据流设计)(面向数据流设计)结构化编程结构化编程SP72设计步骤设计步骤第第1步步 复查基本系统模型,确保输入数据和输出数据符合实际。第第2步步 复查并精化数据流图精化数据流图。第第3步步 确定数据流图具有变换特性变换特性还是事务特性事务特性。第第4步步 确定输入流和输出流的边界边界,从而孤立出变换中心变换中心。第第5步步 完成“第一级分解一级分解”。第第6步步 完成“第二级分解第二级分解”。第第7步步 使用设计度量设计度量(耦合与内聚)(耦合与内聚)和启发式规则启发式规则对第一次分割得到的软件结构进一步精化。73功能功能:(1) 通过模数转换实现传

18、感器和微处理机接口;(2) 在发光二极管面板上显示数据显示数据;(3) 指示每小时英里数每小时英里数(mph),行驶的里程行驶的里程,每加仑油行驶每加仑油行驶的英里数的英里数(mpg)等等;(4) 指示加速或减速加速或减速;(5) 超速警告超速警告:如果车速超过55英里/小时,则发出超速警告铃声。75输入流和输出流的边界边界,从而孤立出变换中心变换中心76设计步骤设计步骤 . 输入信息处理控制模块Ca,协调对所有输入数据的接收协调对所有输入数据的接收; 变换中心控制模块Ct,管理管理对内部形式的数据的所有操作操作; 输出信息处理控制模块Ce,协调输出信息协调输出信息的产生过程。能够完成控制功能

19、并且保持好的耦合和内聚特性的前提下,尽量使第一级控制中的模块数目取最小值第一级控制中的模块数目取最小值。第第一一级级分分解解77第二级分解第二级分解7879两条输入通路(第二层分解)两条输入通路(第二层分解)80五条输出通路(第二层分解)五条输出通路(第二层分解)81变换中心(第二层分解)变换中心(第二层分解)82第二级分解第二级分解进一步精化进一步精化83使用设计度量(耦合与内聚)和启发式规则,进一步精化(修改)使用设计度量(耦合与内聚)和启发式规则,进一步精化(修改)输入结构中的模块“转换成转换成rpm”和和“收集收集sps”可以合并;模块“确定加速确定加速/减速减速”可以放在模块可以放在模块“计算计算mph”下面,以减少耦合;模块“加速加速/减速显示减速显示”可以相应地放在模块“显示显示mph”的下面的下面。84注:每个模块应附一简要说明描述u进出该模块的信息(接口描述)u模块内部的信息u过程陈述,包括主要判定点及任务等u对约束和特殊特点的简短讨论总体设计与写程序的区别:软件的整体结构全局的高度评价和精化软件程序代码是对某个功能模块的实现,不能体现全局高度855.5.3 事务分析86图5.20 事务分析的映射方法l接收分支接收分支l发送分支发送分支发送分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论