软件相关设计第四章_第1页
软件相关设计第四章_第2页
软件相关设计第四章_第3页
软件相关设计第四章_第4页
软件相关设计第四章_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

软件相关设计第四章上一章小结:需求分析是软件工程过程中的第一个技术步骤,通过该步骤,软件需求被描述为具体的规约,为软件设计奠定了基础;需求分析旨在描述“做什么”,必须关注问题的信息域、功能域和行为域。用创建模型、划分问题、描述需求要素的方法来表示需求细节;结构化分析依赖于数据建模和流建模来创建全面的需求分析模型。ERD描述系统中的数据对象,DFD描述控制转换,它们共同创建系统的功能模型。STD创建行为模型,DD描述数据内容。开发阶段的工作流程是:设计阶段完成:数据与结构设计和过程设计;设计阶段的任务是回答:怎么做?本章要解决的问题:软件需要“怎么做”?如何描述“怎么做”?如何衡量软件设计的质量?即:软件设计的基本概念、任务、原则、方法和标准是什么?软件设计的目标与任务软件设计的概念与原理模块独立启发规则软件结构的图形工具面向数据流的设计方法人机界面设计过程设计及工具面向数据结构的设计方法第四章软件设计§4-1软件设计的目标和任务根据分析模型(数据、功能、行为)所描述的软件需求,以及功能和性能需求,使用某一种设计方法进行:数据设计系统结构设计接口设计过程设计。数据设计:将分析时创建的信息域模型(ERD)变换成实现软件所需的数据结构。体系结构设计:定义程序的主要结构元素之间的关系。接口设计:描述了软件内部、软件和协作系统之间的以及软件同人之间如何通信。过程设计:将程序体系结构元素变换为对软件构件的过程描述。将分析模型转换为软件设计数据字典数据流图E-R图状态变迁图加工规约控制规约数据对描述象数据设计体系结构设计接口设计过程设计分析模型设计模型开发阶段的信息流软件设计过程从工程管理的角度来看,软件设计分两步完成。概要设计,将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。软件设计的重要性:软件工程过程的技术核心软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构基本概念:为“使程序正确”提供了框架软件设计概念力求解决以下问题:使用什么标准将软件系统划分为单个构件(独立成分)在各构件内,功能细节和数据结构细节如何表示用什么标准对软件设计的技术质量做统一衡量?§4-2软件设计概念与原理模块化抽象化逐步求精信息隐蔽一、模块化软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块(构件)。这些模块可以被组装起来以满足整个问题的需求。优点:降低复杂度、方便修改、并行开发模块用矩形框表示,并用模块的名字标记它。模块定义的五个标准:模块的可分解性模块的可组装性模块的可理解性模块的连续性模块的保护性模块化是好的软件设计的一个基本准则高层模块——从整体上把握问题,

隐蔽细节复杂问题分解较小问题

构造低层模块

如何进行模块化设计?抽象是一个重要的概念!二、抽象

什么是抽象?概念:抽象出事物的本质特性而暂时不考虑它们的细节。软件设计为什么要用抽象概念?处理复杂系统的惟一有效的方法是用层次的方法构造和分析它。软件系统进行模块设计时,可有不同的抽象层次。模块化与抽象用自顶向下由抽象到具体的方式分配控制,其优点:简化了设计与实现;提高了软件的可理解性和可测试性;使软件更易于维护。三、逐步求精逐步求精是人类解决复杂问题时采用的基本技术定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑求精抽象四、信息隐蔽信息隐蔽(parnas)方法:每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。§4-3模块的独立性如何度量模块的独立性?如何设计具有独立性的模块?一、模块的基本概念模块(Module)

“模块”,又称“组件”。它一般具有如下三个基本属性:功能:描述该模块实现什么功能逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件模块的特性描述模块的外部特性模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响。模块的内部特性完成其功能的程序代码和仅供该模内部使用的数据基本概念模块的独立性例如:若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性。模块的独立性是模块化、抽象化和信息隐藏概念的直接结果,是完成有效设计的基本标准。基本概念模块独立的优点:

易于开发

易于测试和维护度量模块独立性的两个质量标准:耦合内聚耦合是模块之间的互相连接的紧密程度的度量。内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。基本概念二、模块间的耦合中度耦合与外部环境联系

(1)非直接耦合(NondirectCoupling)

AB无直接耦合(2)数据耦合(DataCoupling)

如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数)来交换输入、输出信息的,则称这种耦合为数据耦合。(3)标记耦合(StampCoupling)

如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。(4)控制耦合(ControlCoupling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。举例:到货检验任务核准单记录信息简单变量检验产生到货通知付款产生错误通知控制信息(5)外部耦合(ExternalCoupling)

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。(6)公共耦合(CommonCoupling)

若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。(7)内容耦合(ContentCoupling)

如果发生下列情形,两个模块之间就发生了内容耦合:

(1)一个模块直接访问另一个模块的内部数据;

(2)一个模块不通过正常入口转到另一模块内部;

(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);

(4)一个模块有多个入口。

c

内容耦合如何降低模块间的耦合度?(1)如果模块必须存在耦合,则要选择适当的耦合类型。原则:尽量使用数据耦合少用控制耦合限制公共耦合的范围避免使用内容耦合(2)降低接口的复杂性

c

三、模块内聚(1)偶然内聚(低内聚)

如果一个模块完成一组任务,这些任务彼此间即使有关系关系也是松散的。例如:写完一个程序后,发现一组语句在两处或多处出现,把这些语句作为一个模块,为偶然内聚。(2)逻辑内聚(低内聚)

一个模块所完成的任务属于相同或相似的一类称为逻辑内聚(一个模块产生各种类型的全部输出)(3)时间内聚(低内聚)如果一个模块包含的任务必须在一个时间段内完成,成为时间内聚。例如初始化模块(4)过程内聚(中内聚)

如果一个模块处理元素是相关的,必须顺序执行,则称为过程内聚。通过划分程序流程图来完成。(5)通信内聚(中内聚)模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,称为通信内聚(6)顺序内聚(高内聚)

如果一个模块处理元素和同一个功能相关,并且必须顺序执行,则称为顺序内聚。通常一个的输出是另一个的输入。通过划分数据流图。(7)功能内聚(高内聚)模块中所有元素都属于一个整体,完成一个单一功能,称为功能内聚。提高模块独立性。评估程序结构的第一次迭代,以降低耦合提高内聚;模块规模适中(60行)。高扇3~4(上限5~9),当深度增加时争取提高扇入;将模块的作用域限制在模块的控制范围内(作用域是控制域的子集);降低模块接口的复杂程度并提高一致性(传递的信息与功能的一致性);例:Q_ROOT(TBL,X)不易理解,改:Q_ROOT(A,B,C,X1,X2)定义功能可以预测的模块,但要避免模块功能过分局限;(黑盒模块可预测)设计单入口单出口模块,避免“病态连接”(内容耦合)。数组传递参数§4-4有效模块化的设计启发规则模块化的设计启发规则A影响B状态标记状态标记控制耦合解决方法:判定点上移(AM)B移到控制域内(BA下面)A的控制域§4-5表示软件结构的图形工具三种表示软件结构的图形工具:层次图(Hierachy)

HIPO图(HierachyInputProcessOutput)结构图(Yourdon)1、层次图和HIPO图IBM公司发明的HIPO图:

层次图

+输入/处理/输出图

(H图)+(IPO图)(HierachyInputProcessOutput)(1).层次图(H图)正文加工系统输入输出编辑加标题存储检索编目录添加删除插入修改合并列表带编号的层次图(H图)

正文加工系统输入

1.0输出

2.0编辑

3.0加标题

4.0存储

5.0检索

6.0编目录

7.0添加

3.1删除

3.2插入

3.3修改

3.4合并

3.5列表

3.6(2).HIPO图H图中每一方框(模块)均有一张IPO图对应。输出输入处理读口令请求口令文件1取得输入2口令确认3请求确认请求记录权限文件4更新处理权限记录状态报告响应命令监控器(1.0)的IPO图改进的IPO图格式IPO图系统:模块:编号:作者:日期:被调用:调用:输出:输入:处理:局部数据元素:注释:命令监控器输入1.0方华2002-3-2命令监控器主控菜单模块命令监控器主控模块取得输入、口令确认、请求确认、口令更新处理。输出正确性判断标志。接收键盘口令口令正确性判断标志口令、标志改进的IPO图格式IPO图系统:模块:编号:作者:日期:被调用:调用:输出:输入:处理:局部数据元素:注释:人事档案管理系统打印2.1方华2002-3-2人事档案管理模块“打印全体人员”模块“打印部分人员”模块“打印个人:模块将全体、按部门、个人的档案数据加工成要求的表格形式,进行输出、现示人事档案数据和打印选择打印全体人员、部分人员、个人的档案2、结构图SC(StructureChart)

精确表达程序结构的图形表示不加区分的数据数据信息控制信息编辑学生记录读学生记录学生数据无此学生学号结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。模块的调用关系和接口模块之间用单向箭头联结,箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。结构图模块间的信息传递

当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。模块调用方式在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。条件调用循环调用为什么用面向数据流的设计方法?选择软件设计方法的重要因素是应用范围,“面向数据流的设计”方法可以应用于大量的应用领域(数值分析、过程控制、MISS系统),但不包括专家系统、用户界面。方法起源模块化、自顶向下逐步细化、结构化程序设计的基本概念,是基于“数据在系统中的流动”而发展起来的。§4-6面向数据流的设计方法变换型结构由输入、变换中心和输出三部分组成。基本模型:信息时间变换流外部表示输入流输出流变换流内部表示信息流特征:具有明确的输入、变换(或称主加工)和输出界面事务型结构特征:具有在多种事物中选择执行某类事物的能力。基本模型:事务中心接受路径动作路径大型系统DFD中,变换型和事务型结构往往共存:T事务中心传入变换传出面向数据流设计方法的设计步骤(1)精化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构设计出模块结构的上层(4)基于DFD逐步分解高层模块设计出下层模块(5)根据模块独立性原理,精化模块结构(6)模块接口描述4、软件模块结构的改进(设计优化)精化软件结构,导出不同的软件结构,评价和比较找出最优的。有效模块化的前提下,保持最少的模块,满足信息要求的前提下使用最简单的数据结构设计优化的方法:不考虑时间因素的情况下精化软件结构详细设计选出最耗时的模块,仔细设计提高效率使用高级语言编程软件中孤立出大量占用处理机资源的模块必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以求提高效率§4-7用户界面设计技术问题

系统响应时间用户与计算机的交互问题

用户帮助信息出错信息处理命令交互§4-8过程设计(详细设计)及其工具任务:设计程序“蓝图”衡量程序的质量不仅要看它的逻辑是否正确,性能是否符合要求,更主要的是看它是否容易阅读和理解。程序流程图程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:

示例

程序流程图的标准符号循环的标准符号注解的使用多出口判断N-S图N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。示例N-S图的嵌套定义形式

PAD也设置了五种基本控制结构的图式,并允许递归使用。问题分析图(PAD)

PAD描述的示例

对应于增量型循环结构

fori:=n1ton2stepn3do

在PAD中有相应的循环控制结构PAD的扩充控制结构判定表判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理要求将程序流程图中的多分支判断都改成两分支判断

无多分支判断结构

建立判定表的步骤列出与一个具体过程(或模块)有关的所有处理。列出过程执行期间的所有条件(或所有判断)。将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。

PDL(ProgramDesignLanguage)PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。

示例:拼词检查程序PROCEDUREspellcheckIS

BEGIN

splitdocumentintosinglewords

lookupwordsindictionary

displaywordswhicharenotindictionary

createanewdictionary

ENDspellcheck

PDL的特点提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。有数据说明机制,包括简单的(如标量和数组)与复杂的

温馨提示

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

评论

0/150

提交评论