第四章 总体设计 PPT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


软件结构;用IPO图或其他工具(例如,PDL语言) 简要描述的各个模块的算法;模块间的接口关系;

需求、功能和模块三者之间的交叉参照关系等等。
设 用户手册

修改更正在需求分析阶段产生的初步的用户手册。

测试计划

包括测试策略,测试方案,预期的测试结果,测试 进度计划等等。

详细的实现计划
在总体设计阶段分析员应该考虑各种可能的实现方案,
并且力求从中选出最佳方案。
5.1 需求分析阶段得出的数据流图是总体设计的极好的出

发点。数据流图中的某些处理可以逻辑地归并在一个
体 设
自动化边界内作为一组,另一些处理可以放在另一个
自动化边界内作为另一组。这些自动化边界通常意味 着某种实现策略。
计 设想把数据流图中的处理分组的各种可能的方法,抛

无法控制各个模块对公共数据的存取,严重影响
软件模块的可靠性和适应性。
**
公共数据名的使用,明显降低了程序的可读性。

5.1.7 制定测试计划
5.1
在软件开发的早期阶段考虑测试问题,能促使软

件设计人员在设计时注意提高软件的可测试性。






5.1.8 书写文档
系统说明
用系统流程图描绘的系统构成方案;组成系统的物
理元素清单;成本/效益分析;对最佳方案的概括
5.1
描述;精化的数据流图;用层次图或结构图描绘的
5.1.5 设计软件结构
通常程序中的一个模块完成一个适当的子功能。
应该把模块组织成良好的层次系统,顶层模块
5.1
调用它的下层模块以实现程序的完整功能,每

个下层模块再调用更下层的模块,从而完成程

序的一个子功能,最下层的模块完成最具体的

功能。

软件结构(即由模块组成的层次系统)可以用

层次图或结构图来描绘。(5.4节)
E(P1+P2)> E(P1)+ E(P2)
**
“各个击破”的结论——把复杂的问题分解成许多
容易解决的小问题,原来的问题也就容易解决了
最适当的模块数目
5.2 软 件 设 计 原 理
**
模块化的优点
5.2
可以使软件结构清晰,不仅容易设计也容易阅读

和理解;

可以使软件容易测试和调试,因而有助于提高软
部分。
5.2.5 模块独立
5.2 模块独立的概念是模块化、抽象、信息隐

蔽和局部化概念的直接结果。
件 设
为什么模块的独立性很重要呢?

有效的模块化(即具有独立的模块)的软件

比较容易开发出来。

独立的模块比较容易测试和维护。
模块的独立程度可以由两个定性标准度量,
**
这两个标准分别称为耦合和内聚。
▪ 用户界面设计 ▪ 数据结构与算法设计
系统实现
▪ 编码和单元测试
▪ 综合测试
第5章 总体设计
本章主要内容:软件设计的概念与原则; 总体设计的步骤和方法;面向数据流的 设计方法;总体设计的文档与评审。
本章重点:总体设计的步骤和方法;面 向数据流的设计方法
本章难点:软件设计的原则,内聚和耦 合,系统结构图 。

**
(6)公共耦合
若一组模块都访问同一个公共数据环境,则它们之
5.2
间的耦合就称为公共耦合。
软 件 设
公共的数据环境可以是全局数据结构、共享的通信 区、内存的公共覆盖区等。
这种耦合会引起下列问题:
所有公共耦合模块都与某一个公共数据环境内部

各项的物理安排有关,若修改某个数据的大小,

将会影响到所有的模块。
序、文件、数据库、人工过黑盒程子和,不文需要档等等,但是每个物理
元素仍然处于黑盒子级,这知道些里黑面盒是怎子么里的具体内容将在以
后仔细设计。
处理的。
总体设计阶段的另一项重要任务是设计软件的结构,也就 是要确定系统中每个程序是由哪些模块组成的,以及这些 模块相互间的关系。
总体设计的意义
在详细设计之前进行总体设计可以站在全局高度上,花较 少成本,从较抽象的层次上分析对比多种可能的系统实现 方案和软件结构,从中选出最佳方案和最合理的软件结构, 从而用较低成本开发出较高质量的软件系统。
设 计
近。局部化有助于实现信息隐蔽。
信息隐蔽和局部化的优点 测试期间和软件维护期间需要修改软件,使用信息

隐蔽原理作为模块化系统设计的标准就会带来极大

好处。
因为绝大多数数据和过程对于软件的其他部分而言
**
是隐蔽的(也就是“看”不见的),在修改期间由 于疏忽而引入的错误就很少可能传播到软件的其他
功能分解导致数据流图的进一步细化同时还应该用ipo图或其他适当的工具简要描述细化后每个处理的算法51515设计软件结构应该把模块组织成良好的层次系统顶层模块调用它的下层模块以实现程序的完整功能每个下层模块再调用更下层的模块从而完成程序的一个子功能最下层的模块完成最具体的功能
用户界面就如同人的外表,最容易让人
模块是数据说明、可执行语句等程序对象的集合,
它是单独命名的而且可通过名字来访问,例如,过
5.2
程、函数、子程序、宏等等都可作为模块。

模块化就是把程序划分成若干个模块,每个模块完

成一个子功能,把这些模块集中起来组成一个整体,

可以完成指定的功能,满足问题的要求。
计 模块化的根据

不等式

C(P1+P2)> C(P1)+ C(P2)


5.1.6 数据库设计
如需使用数据库,分析员应该在需求分析阶段对
系统数据要求所做的分析的基础上进一步设计数
5.1
据库。包括下述四个步骤:

模式设计: 模式设计的目的是确定物理数据

库结构。

子模式设计:子模式是用户使用的数据视图。
计 的 过
完整性和安全性设计。
优化:主要目的是改进模式和子模式以优化 数据的存取。

有关的细节,而实现逐步求精的方法.
**
5.2.4 信息隐蔽和局部化
信息隐蔽原理:应该这样设计和确定模块,使得一个
模块内包含的信息(过程和数据)对于不需要这些信
5.2
息的模块来说,是不能访问的。

“隐蔽”意味着模块彼此间仅仅交换那些为了完成系统功能而 必须交换的信息。

“局部化”是指把一些关系密切的软件元素物理地放得彼此靠

每种方案准备四份资料:


系统流程图;

组成系统的物理元素清单;

成本/效益分析;

实现这个系统的进度计划。

大家有疑问的,可以询问和交流
可以互相讨论下,但要小声点
5.1.3 推荐最佳方案
分析员应该综合分析对比各种合理方案的利
弊,推荐一个最佳的方案,并且为推荐的方
5.1

案制定详细的实现计划。

的操作全部集中在一个模块中,就可以消除这种
耦合。
**
(4)控制耦合
如果一个模块通过传送开关、标志、名字等控制
5.2
信息,明显地控制选择另一模块的功能,就是控

制耦合。

这种耦合的实质是在单一接口上选择多功能模

块中的某项功能。

对所控制模块的任何修改,都会影响控制模块。

另外,控制耦合也意味着控制模块必须知道所控
数据库设计结果
5.1.9 审查和复审
5.1
最后应该对总体设计的结果进行严格的技术审
总 体
查,在技术审查通过之后再由使用部门的负责 人从管理角度进行复审。





在软件设计过程中应该遵循的基本
5.2
原理和相关概念

模块化

抽象

逐步求精

信息隐蔽和局部化
原 理
模块独立
**
5.2.1 模块化

件的可靠性;

能够提高软件的可修改性;

有助于软件开发工程的组织管理。

**
5.2.2 抽象
抽象就是抽出事物的本质特性上而下级暂关时系不的层考次虑结它构们
5.2
的细节。
顺序相邻关系的层次结构

处理复杂系统的唯一有效的方法是用层次的方式

构造和分析它。
设 计
一个复杂的动态系统首先可以用一些高级的抽象 概念构造和理解,这些高级概念又可以用一些较 低级的概念构造和理解,如此进行下去,直至最
设 计
过程设计:过程设计是详细设计阶段的任务。过程 设计确定每个模块的处理过程。

为确定软件结构,首先需要从实现角度把复杂的功能

进一步分解。一般说来,经过分解之后应该使每个功

能对大多数程序员而言都是明显易懂的。功能分解导
致数据流图的进一步细化,同时还应该用IPO图或其
他适当的工具简要描述细化后每个处理的算法
第五章 总体设计
5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法
总体设计的基本目的
总体设计的基本目的就是回答“概括地说,系统应该 如何实现?”这个问题。
总体设计又称为概要设计或初步设计。
总体设计阶段的任务
通过这个阶段的工作将划分把对出象组当成作一系个统的物理元素——程

在使用部门的负责人接受了分析员所推荐的

方案之后,将进入总体设计过程的下一个重

要阶段——结构设计。



5.1.4 功能分解
程序(特别是复杂的大型程序)的设计,通常分为两
个阶段完成:
5.1
结构设计:结构设计是总体设计阶段的任务。结构

设计确定程序由哪些模块组成,以及这些模块之间

的关系。
5.1 总 体 设 计 的 过 程
总体设计过程通常由两个主要阶段组成: 系统设计:确定系统的具体实现方案。 结构设计:确定软件结构。
9个步骤: 设想供选择的方案 选取合理的方案 推荐最佳方案 功能分解 设计软件结构 设计数据库 制定测试计划 书写文档 ① 审查和复审
5.1.1 设想供选择的方案
第二部分、开发阶段 一见钟情或一见恶心。象人类追求心灵 美和外表数美据那结样构,与软算件法系就统如也同追人求的(血内脉和神
在的)功经能,强它大体让和系器(结官外构具表就有的如生)同命界人并面的能友骨发好架挥。。功能。
系统设计
▪ ▪
总 详▪▪ 体 细体模设设系块结 设计计构 计设计但趣U么狸作n随去W精浪ix干使i着品。,系模能手的一n的之d生味想占数块的但“话说是统块。,事是o几无w活深不去据中耳如啊的话十比就人手情嘴s种法系节藏到大结,朵果”功。分作如体只。巴功并统奏不半W如子美不构它和耳“能人神是同中有人,能行就i的露市果,容会与将嘴朵,体奇呜健人最几体嘴n如处d象加的场某那,成算协巴失可的并”壮的出种中巴o吃 理w妩快内。个么他为法调虽聪人数且的的器 色 动 最 将s饭,媚系,在家无始人分系然了们据十声汉官的作糟最、真的统人美伙论终。布统是,却结分音子,模,糕有说乃小竟们。的怎都在的相嘴又构可,和具块却的价话人白然已如骨样是体各对巴能与笑等妇有设能模值混类脸能少果架喂猴系个独就用算。于人特计做块但为之和兴有把是养子结功立只手法丧,定之无设毫一不狐风兴猴和,构能的能势设失那的一限计无体幸和。器发代计了功是多之相,。模人官出替真说,


这种耦合的模块独立性最强。


**
(2)数据耦合
5.2
如果一个模块访问另一个模块时,彼此之间是通

过数据参数(不是控制参数、公共数据结构或外

部变量)来交换输入、输出信息的,则称这种耦

合为数据耦合。

按数据耦合开发的程序界面简单、安全可靠。

数据耦合是松散的耦合,模块之间的独立性比较

强。在软件程序结构中至少必须有这类耦合。
**
(3)标记耦合
如果一组模块通过参数表传递记录信息,就是标
5.2
记耦合。

事实上,这组模块共享了这个记录,它是某一数

据结构的子结构,而不是简单变量。这要求这些

模块都必须清楚该记录的结构,并按结构要求对

此记录进行操作。

如果采取“信息隐蔽”的方法,把在数据结构上
耦合性(Coupling)
5.2
耦合性是对一个软件结构中不同模块之间互连程

度的度量。

模块间的耦合程度强烈影响系统的可理解性、可

测试性、可靠性和可维护性。



**
(1)非直接耦合
5.2
如果两个模块之间没有直接关系,它们之间的联

系完全是通过主模块的控制和调用来实现的,这

就是非直接耦合。

弃在技术上行不通的分组方法(例如,组内不同处理

的执行时间不相容),余下的分组方法代表可能的实

现策略,并且可以启示供选择的物理系统。
在总体设计的该步骤中分析员仅仅一个边界一个边界
地设想并且列出供选择的方案,并不评价这些方案。
5.1.2 选取若干个合理的方案
5.1
至少选取低成本、中等成本和高成本三种方案。

制模块内部的一些逻辑关系,这些都会降低模块
的独立性。
**
(5)外部耦合
5.2
一组模块都访问同一全局简单变量而不是同一全

局数据结构,而且不是通过参数表传递该全局变

量的信息,则称之为外部耦合。

外部耦合引起的问题类似于公共耦合,区别在于

在外部耦合中不存在依赖于一个数据结构内部各

项的物理安排。

低层次的具体元素。

**
5.2.3 逐步求精
5.2
逐步求精是许多软件工程技术(如规格说明技术、

设计和实现技术)的基础--为了能集中精力解
件Leabharlann 决主要问题而尽量延迟对问题细节的考虑.

抽象和求精是一对互补的概念.抽象使得设计者

能够说明过程和数据、同时却忽略底层细节.可

以把抽象看成一种通过忽略多余的细节同时强调
相关文档
最新文档