目录
1,第一节 结构化需求分析
2,第二节 结构化设计
第一节 结构化需求分析
- 需求分析面临的挑战
(1) 问题空间理解
(2) 人与人之间的通信,“有效沟通”
(3) 需求的变化性 - 结构化分析中的基本术语及表示方法
(1) 数据流
(2) 加工
(3) 数据存储
(4) 数据源和数据潭 - 数据流图DFD图 ★
用于建立系统功能模型。
是一种描述数据变换的图形化工具,其中包含的元素可以是数据流、数据存储、加工、数据源和数据潭等。 - 建模过程(绘制流程图的过程)
自顶向下、功能分解
(1) 建立系统环境图
(2) 0层图:从0层图开始对流程图中的要素编号
(3) 1层图
(4) …… - 数据字典
定义数据流程图中所有数据流和数据存储的数据结构。
顺序结构:+
选择结构:|
重复结构:{ }
子界:m…n - 加工的描述 ★
(1) 判定表
判断表(Decision Table)也称为决策表,是一个二维表,它说明了每一种条件组合所产生的结果。
该表分为四个象限(quadrants)。
a) 左上限代表所有的条件
b) 左下限代表可能的结果
c) 右上限代表每一种条件的取值(用Y和N来表示)
d) 右下限用X表示所对应的条件组合所产生的结果 - 需求验证
(1) 验证每一个需求满足5个性质
(2) 验证需求规格说明书满足4个性质
第二节 结构化设计
分为总体设计和详细设计
- 总体设计的任务
把系统的功能需求分配到一个特定的软件体系结构中。 - 表达软件体系结构的工具
(1)模块结构图
(2)层次图
(3)HIPO图 - 模块结构图 ★
结构图(Structure Chart)是对软件总体结构的一种图形描述,它显示了软件的层次结构、组织和通讯。也就是说,在结构图中,显示了软件是由哪些模块组成的,这些模块按照什么样的层次结构组织在一起以及模块之间通过什么接口联系在一起。
结构图也称之为控制结构图、模块结构图或系统结构图。
(1) 模块符号
(2) 模块调用关系
(3) 模块间的数据传递
(4) 模块间的控制信息传递
(5) 循环调用结构
(6) 选择调用结构
(7) 数据存储
4. 层次图
层次图中一个矩形框代表一个模块,框间的连线表示调用关系(位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块)。
-
HIPO图
HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。为了使HIPO图具有可追踪性,在H图(即层次图)里除了顶层的方框之外,每个方框都加了编号。
H图+IPO图
-
总体设计步骤
将DFD图映射为设计层面的模块及模块调用。
(1) 变换流(Transform Flow)。基于变换流的数据流程图是一个线性的顺序结构,由输入臂、输出臂和变换中心三部分组成。其中变换中心使系统数据发生本质的变化,输入臂将物理输入变换成逻辑输入,而输出臂则将逻辑输出变换成物理输出。
(2) 事务流(Transaction Flow)。事务流的数据流程图中有一个事务处理中心,它将输入分为许多相互平行的加工路径,然后根据输入的属性,选择某一加工路径。如下图所示。
业务中心完成以下任务:
⑴接收事务(即输入数据);
⑵分析每个事务并确定它的类型;
⑶根据事务的类型选取一条活动通路。
总结:任何处理都可以划分为两种转换类型之一:以转换为中心的分解和以业务为中心结构的分解。
7. 模块
执行一个特殊任务的一个过程以及相关的数据结构。模块通常由两部分组成:模块接口和模块体。
8. 模块化
“分而治之”和“抽象”。
把一个待开发的软件分解成若干个简单的、具有高内聚低耦合的模块,这一过程称为模块化。
模块化是系统设计基本原理/原则之一。
- 内聚(Cohesion)
是指一个模块内部个成分之间相互关联程度的度量。也就是说,凝聚是对模块内各处理动作组合强度的一种度量。很显然,一个模块的内聚越大越好。
(1)偶然凝聚 可维护性最差
(2)逻辑凝聚
(3) 时间凝聚
(4)过程内聚
(5)通信内聚
(6)顺序凝聚
(7)功能凝聚 可维护性最好 - 模块耦合
耦合(coupling)是对两个模块之间联接程度的一种度量。模块间的依赖程度越大,则其耦合程度也就越大;反之,模块间的依赖程度越小,则其耦合程度也就越小。
很显然,为了使软件具有较好的可维护性和可修改性,模块间的关联程度即耦合程度应越小越好。因为耦合程度越小,表明模块间的独立程度越大,这样在修改一个模块时,对其它模块的影响程度就越小,从而使模块的修改工作局限于一个最小范围之内。
(1) 内容耦合
(2) 公共耦合
(3) 数据耦合
(4) 控制耦合
(5) 标记耦合
原则是:尽量用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。 - 启发式规则
高内聚、低耦合。
(1) 改进软件结构,提高软件独立性。模块分解
(2) 模块规模适中
(3) 力求深度、宽度、扇出、扇入适中。
深度:表示其控制的层数。
宽度:同一层次上模块总数的最大值。
扇出:一个模块直接控制的下级模块的数目。
扇入:有多少个上级模块直接调用它。
原则:顶层模块扇出比较大,中间层模块扇出较小,底层模块具有较大的扇入。
(4) 尽量使模块的作用域在其控制域内。
模块的控制域:这个模块本身以及所有直接或间接从属它的模块的集合。
模块的作用域:受该模块内一个判断所影响的所有模块的集合。
(5) 尽力降低模块接口的复杂度
(6) 力求模块功能可以预测 - 详细设计
具体描述模块结构图中的每一模块,即给出实现模块功能的实施机制,包括一组例程和数据结构。 - 结构化程序设计方法
一种基于结构的编程方法,即采用顺序结构、选择结构和重复结构进行编程,其中每一结构只允许一个入口和一个出口。
三种基本的控制结构:
(a) 顺序结构,先执行A再执行B;
(b) IF-THEN-ELSE型选择(分支)结构;
©DO-WHILE型循环结构
- 详细设计工具
(1) 程序流程图
程序流程图:程序流程图又称为程序框图,它是历史最悠久使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。
(2) 盒图(N-S图)
出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。
(a) 顺序;(b) IF-THEN-ELSE型分支;© CASE型多分支;
(d) 循环;(e) 调用子程序A
(3) PAD图
PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。下图给出PAD图的基本符号。
(4) 类程序设计语言PDL
PDL也称为伪码,它是用正文形式表示数据和处理过程的设计工具。
PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。因此,一般说来PDL是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。
可以作为注释工具直接插在源程序中间。
- 设计规约
完整准确地描述满足需求规约所要求的所有功能模块,以及伴随功能模块而出现的非功能机制。
设计规约包括概要设计规约和详细设计规约。
(1) 概要设计规约
指明高层软件体系结构。
系统环境
软件模块的结构
模块描述
文件结构和全局数据文件的逻辑结构
测试需求
(2) 详细设计规约
各处理过程的算法
算法所涉及的全部数据结构的描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)