模块化设计modulardesign_第1页
模块化设计modulardesign_第2页
模块化设计modulardesign_第3页
模块化设计modulardesign_第4页
模块化设计modulardesign_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、4.1 软件设计基础软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。从技术观点来看,软件设计包括数据设计、体系结构设计、接口设计、过程设计。从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计将软件需求转化为软件体系结构确定系统级接口全局数据结构或数据库模式。详细设计确立每个模块的实现算法和局部数据结构用适当方法表示算法和数据结构的细节将分析模型转换为设计数据字典数据流图实体关系图状态转换图加工规格说明控制规格说明数据对象描述过程设计接口设计体系结构设计数据设计软件设计的重要性 软件设计是后续开发步骤及软件维护工作的基础。

2、如果没有设计,只能建立一个不稳定的系统结构。设计编码测试维护测试编码维护有软件设计 没有软件设计4、1软件设计基础任务数据结构设计划分模块确定软件结构4.1.1软件设计阶段的任务编写概要设计文档审查软件设计高可靠性高可维护性高可理解性高效率 软件设计的目标4.1.2软件设计的目标4、1、4 软件设计的原则设计对于分析模型应该是可跟踪的;设计应该尽量采用可重用设计构件方法;软件的结构应该尽可能模拟问题域的结构;设计应该表现出一致性和集成性;设计的构造应能适应修改;区别设计与编码的关系;在构造设计时就应该能够评估质量;复审设计以减少概念性错误。软件设计内容1、设想供选择的方案;2、选取合理的方案;

3、3、推荐最佳方案; 4、功能分解;5、设计软件结构; 6、设计数据库;7、制定测试计划; 8、书写文档;9、审查和复查。4.1.5 概要设计过程检查需求说明书及数据要求数据库设计改编已有软件概要结构设计分配需求安排进度鉴定已有软件设计接口检查数据流确定模块功能分析确定系统数据结构和文件结构设计数据库模式与子模式编写概要设计文档评审顶层1层2层ABCDEFGHIJKLMN深度扇入为2扇出为3扇入为33层4层宽度宽度宽度 程序模块示意图有关指标:深度:表示软件结构中从顶层模块到最底层模块的层数。宽度:表示控制的总分布。扇出数:指一个模块直接控制下属的模块个数。扇入数:指一个模块的直接上属模块个数。

4、1、程序结构图:表示软件的系统结构,它是软件模块间关系的表示,软件之间的各种关系,均可表示为层次结构。如图所示。4.2 软件设计的概念和原理4.2.1、软件体系结构软件的树状结构和网状结构由模块连接而得到的软件结构最普通的形式就是树状结构和网状结构。顶层1层2层3层 软件的树状结构ABCDEFGHIKLMABCDEFGH 网状结构4.2.2、模块化设计: 模块化设计(modular design):把大型软件按照规定的原则划分为一个个较小的、相对独立但又相关的模块的设计方法。 模块(module):是数据说明和可执行语句等程序对象的集合,每个模块单独命名并且可以通过名字对模块进行访问。ABCD

5、EFGHIJKLM4.2 软件设计的概念和原理 实现模块化设计的重 要指导思想是分解、信息隐藏和模块独立性。一、分解设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x所需要的工作量(时间)。对于两个问题Pl和P2, 如果 C(P1)C(P2), 显然 E(P1)E(P2)根据人类解决一般问题的经验,如果一个问题由Pl和P2两个问题组合而成,那么它的复杂程序大于分别考虑每个问题时的复杂程度之和, 即C(PlP2)C(P1)C(P2) 综上所述,可得到下面的不等式 E(PlP2)E(Pl)E(P2)模块化降低软件复杂度的简单证明 注意:并非模块分得越小越好,因为模块之间接口的复杂度和工

6、作量增加。显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。上图描述了模块化与软件成本的关系。软件总成本 模块化与软件成本的关系图成本模块数目模块成本接口成本最小成本区M模块化与软件成本的关系 抽象:在现实世界中,事物、状态或过程之间总存在某些共性,把这些共性集中、概括起来,而暂时忽略它们之间的差异。高级别抽象较低级别抽象较低级别抽象较低级别抽象注意:抽象过程是一个命名的指令序列,它具有特定的、有限的功能。 逐步求精:是一个推敲的过程,与抽象是互补的,有助于设计者在数据处理过程中揭示底层的细节。二、抽象和逐步求精例:开发一个CAD软件时的三种抽象层次抽象层次. 用问题所处环境的

7、术语来描述这个软件: 该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现。抽象层次. 任务需求的描述。CAD SOFTWARE TASKS user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。抽象层次. 程序过程表示。以2-D (二维

8、)绘图生成任务为例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer interaction occurs) digitizer interface task; DETERMINE drawing request CASE; line: line drawing task; rectangle:rectangle drawing task; circle: circle drawing task; 信息隐蔽原理指出:模块内部的数据与过程,应该对不

9、需要了解这些数据与过程的模块隐藏起来。也就是说,模块中所包括的信息不允许其它不需要这些信息的模块调用。局部化是指把一些关系密切的软件元素物理地放得彼此靠近。三、信息隐藏和局部化1、基本概念 “模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:4.2.2、 有效的模块设计基本属性状态逻辑功能2、模块独立性的度量标准是两个定性准则: 耦合性 用于描述模块之间联系的紧密程度。 内聚性 用于描述模块内部联系的紧密程度。 模块独立性比较强的模块应该是具有高内聚性和的低耦合度。 模块的独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口

10、是简单的。即功能专一,模块之间无过多的相互作用的模块。一、耦合性(Coupling)耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:数据方式作用少多数据控制混合直接调用过程调用衡量指标信息数量相互作用联系方式模块间的耦合的分类 如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。(1)非直接耦合(Nondirect Coupling) 如果一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变

11、量)来交换输入、输出信息的,则称这种耦合为数据耦合。(2)数据耦合 (Data Coupling)p0 (x0, y0) p1 (x1, y1)数据耦合 LINE ( x0, y0, x1, y1) 如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。(3)标记耦合 (Stamp Coupling)p0 (x0, y0) p1 (x1, y1)标记耦合 LINE ( p0, p1) 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。(4)控制耦合 (Control Coupling)FlagFlagf1f2

12、fn 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。(5)外部耦合(External Coupling)common公共数据区ABcommon公共数据区AB松散的公共耦合紧密的公共耦合 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。(6)公共耦合(Common Coupling) 如果发生下列情形,两个模块之间就发生了内容耦合(1) 一个模块直接访问另一个模块的内部数据;(2) 一个模块不通过正常入口转到另一模块内部;(3) 两个模块有一部

13、分程序代码重迭(只可能出现在汇编语言中);(4) 一个模块有多个入口。(7)内容耦合 (Content Coupling)c AB进入另一模块内部模块代码重叠ABentry1 entry2 模块多个入口二、内聚性(cohesion)内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度量模块间的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。 c 巧合 逻辑 时间 过程 通信 信息 功能内聚 内聚 内聚 内聚 内聚 内聚 内聚内聚性功能独立性 一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧

14、密联系,不可分割的。则称该模块为功能内聚模块。(1)功能内聚 (Functional Cohesion) 这种模块完成多个功能,各个功能相互独立但都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。(2)信息内聚 (Informational Cohesion)初始化插入删除查找修改符 号 表 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。(3)通信内聚 (Communication Coh

15、esion)打印检验结果读文件文件计算A计算B合并修改文件新文件A结果B结果加工记录 使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。(4)过程内聚(Procedural Cohesion) 时间内聚模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。(5)时间内聚(Classical Cohesion) 这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功

16、能。(6)逻辑内聚(Logical Cohesion )写一个记录读一个记录判定调用模块被调用模块 当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联系,或联系很松散。(7)巧合内聚(Coincidental Cohesion)ABCM STORE REC() TO N READ MASTER FILE ADD 1 TO x 4.3 结构化设计(SD)方法 结构化设计方法(Structured Design, SD )是结构化开发方法的核心,与SA法密切联系,主要完成软件系统的总体结构设计。4.3.1面向数据流的设计方法基本

17、概念:数据流是软件开发人员考虑问题的 出发点和基础。目标:给出设计软件结构的一个系统化途径。任务:在需求分析的基础上,把用DFD表示的 系统逻辑模型转换成软件结构的初始设 计描述,即将DFD映射为软件系统的结构。映射工具:SD法。SD方法的步骤细化、修改DFD图事务型变换型映射为初始结构图获得最终结构图4.3.2 数据流图的分类与典型的系统结构中心变换型(transform center) 变换分析其特点是:DFD图可以明显分为“输入-处理-输出”三部分。变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系

18、统。如右图所示。检查顺序(物理输入)检查合理性扩充代码核对检查和修改压缩代码检查(逻辑输入)(逻辑输出)输 入主加工输 出卡 片 旧文件(物理输出)新文件相应于取得数据、变换数据、给出数据,变换流型系统结构图由输入、变换中心和输出等三部分组成。主模块B变换成C输入B输出CA变换成B输入AC变换成D输出DAABBBCCCDD分类报名付款注销查询复审数据沿输入通路到达一个处理T时,这个处理根据输入数据的类型在若干动作序列中选择一个来执行。组成:至少一条接受路径; 一个事务中心; 若干动作路径。任务:接受输入数据(事 务); 分析每个事务确定 类型; 根据事务类型选取 一条活动通路。事务处理型(tr

19、ansaction) 事务分析事务中心分派模块输出结果事务1输入作业信息事务2事务3事务4作业信息作业信息结果结果操作1操作2操作3操作4操作5操作6细节1细节2细节3细节4细节5细节6精化数据流图流类型区分事务中心和数据接收通道映射成事务结构区分输入和输出分支映射成变换结构运用模块设计原则精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析面向数据流方法设计过程4.3.3系统结构图的组成一、SD方法的主要表达工具 SC:用来显示软件的组成模块及其调用关系。二、模块的表示符号 完全因子分解的系统:如果一个系统的全部实际加工由原子模块来完成,而其他原子模块只执行控制和协调工作。系统结构图的基本符号模块调用数据控制信息转接符号系统结构图的基本符号选择(判断)重复模块

温馨提示

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

评论

0/150

提交评论