3、软件设计与结构化设计方法0

发布于:2021-09-23 22:28:25

1 总体设计的目的
0、总体设计:概要设计、初步设计。 1、总体设计的基本目的:回答“概括的说,系统应该如何 实现”这个问题。划分形成系统的物理元素:程序、文 件、数据库、人工过程和文件等等。确定系统的结构: 模块和模块之间的关系(黑合子)。 2、任务:寻找不同的实现方案、制作系统流程图、推荐 最佳方案、设计软件结构 3、必要性:可以站在全局高度、花较少的时间和成本, 从较抽象的层次上分析对比多种可能的实现方案和软件 结构,从中选出最佳方案和最合理的软件结构,从而用 较低成本开发出较高质量的软件系统。

2 设计原则
一、模块化 模块:模块是程序的基本结构。 模块化就是把程序划分成独立命名且独立访问的模 块,每个模块完成一个子功能,把这个模块集成 起来构成一个整体,可以完成指定的功能满足用 户的需求。 优点:使得软件结构清晰、容易阅读和理解;容易 测试和调试、有助于提高软件的可靠性;可修改 性;有助于软件开发组织管理。

3 设计原则
二、抽象 认识复杂事物和现象的强有力工具:抽象。 现实世界中,事物、现象、状态和过程之间存在 着某些相似的方面(共性),把这些共性集中 和概括起来、暂时忽略他们之间的差异,这就 是抽象。 抽象:抓住事物的本质(要素)。软件工程过程 的每一步都是对软件抽象层次的一次精化。

3 设计原则
三、逐步求精 解决复杂问题时采用的基本方法,也是许多软件工 程技术的基础。 为了能够集中精力解决主要问题,而尽量推迟对问 题细节的考虑。
求精是个细化过程。 抽象和求精是一对互补的概念。

3 设计原则
四、信息隐藏和局部化 信息隐藏原理:设计和确认模块时,使得一个模块内部包 含的信息(过程和数据)对于不需要这些信息的模块来 说,是不能访问的。 隐藏的不是一切信息,而是实现细节。 局部化原理:把一些关系密切的软件元素物理地放得彼此 靠*。 局部化和信息隐藏的概念关系密切。

3 设计原则
五、模块独立 模块独立是模块化、抽象、信息隐藏和局部化的直接结果。 开发具有独立功能而且和其他模块之间没有过多的相互作用 的模块,就可以做到模块独立。 重要性:
1、有效模块化的软件比较容易开发出来。 2、独立的模块化比较容易测试和维护。

模块独立程度的两个定性度量标准:偶合与内聚。
耦合:不同模块之间相互依赖程度的度量。 内聚:一个模块之内各成分之间相互依赖程度的度量。

设计原则:低偶合高内聚。

3 设计原则
1、耦合:不同模块之间相互依赖程度的度量。模块间的偶合程度强 烈影响系统的可理解性、可测试性、可靠性和可维护性。 耦合类型: (1)内容耦合:一个模块访问另外一个模块的内部数据;一个 模块不通过正常的入口而转到另外一个模块的内部;两个模块有 一部分代码重叠;一个模块有多个入口。 (2)公共耦合,也称公共环境偶合:两个以上的模块共同引用 一个全局数据项。 (3)控制耦合:一个模块向另一模块传递一个控制信号, 接受信号的模块将依据该信号值进行必要的活动。 (4)特征偶合,也称标记耦合:两个模块至少有一个通过界面 传递公共结构的参数。 (5)数据耦合:模块间通过参数传递基本类型的数据。一般说 来,一个系统可以只包含数据偶合。 原则:尽量使用数据偶合,少使用控制偶合和特征偶合,限制公 共环境偶合的范围,完全不使用内容偶合。

3 设计原则
2、内聚:一个模块之内各成分之间相互依赖程度的度量。标志着一个模块内 各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。 设计时尽力做到高内聚,中等程度的内聚也可以使用,避免低内聚的使用。 理想内聚的模块,一个模块只做一件事情。 内聚和偶合关系密切,模块内的高内聚往往意味着模块间的松偶合。内聚和 偶合是进行模块化设计的有力工具,内聚更应该重视。 内聚类型: 0) (1)偶然内聚:一个模块之内各成分之间没有任何关系。(低 )偶然内聚:一个模块之内各成分之间没有任何关系。(低0 1) (2)逻辑内聚:几个逻辑上相关的功能放在同一模块中。(低 )逻辑内聚:几个逻辑上相关的功能放在同一模块中。(低1 (3)时间内聚:一个模块完成的功能必须在同一时间内完成,而 3) 这些功能只是因为时间因素关联在一起。(低 这些功能只是因为时间因素关联在一起。(低3 5) (4)过程内聚:处理成分必须以特定的次序执行。(中 )过程内聚:处理成分必须以特定的次序执行。(中5 (5)通信内聚:各成分都操作在同一数据集或生成同一数据集。(中 7) )通信内聚:各成分都操作在同一数据集或生成同一数据集。(中7 (6)顺序内聚:各成分与一个功能相关,且一个成分的输出作为 9) 另一成分的输入。(高 另一成分的输入。(高9 (7)功能内聚:模块的所有成分对完成单一功能是最基本的,且 10 ) 该模块对完成这一功能而言是充分必要的。(高 该模块对完成这一功能而言是充分必要的。(高10 10)

4 描绘软件结构的工具
一、层次图和 HIPO图 层次图用来描绘软件结构。层次图中的一个矩形框代表一个模块,方 框间的连线表示调用关系而不是表示组成关系。

文件加密
文件输入 文件输出

选择算法

选择

新建

4 描绘软件结构的工具
HIPO,IMB公司发明的“输入/处理/输出图”,为了获得HIPO图的可跟 踪性,在层次图中,除了最顶层外,为每个方框添加编号。和层 次图的每一个方框对应,绘制一个代表方框的处理过程模块表。

文件加密
文件输入1.0 选择算法2.0 文件输出3.0

选择1.1

新建1.2

4 描绘软件结构的工具
二、结构图 1、和层次图类似 2、用带注释的箭头表示模块调用过程中回传的信息(尾部空心,数 据信息;尾部实心,控制信息)。 3、描述控*峁购脱方峁

M A B A

M B

5 面向数据流的设计方法
面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。 面向数据流的设计方法定义了一些不同的 “映射”,利用这些映射可以把数 据流图转变成软件结构。因为任何软件系统都可以用数据流图表示,所 以面向数据流的设计方法理论上可以设计任何软件的结构。通常所说的 结构化设计方法,也就是基于数据流的设计方法。 面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映 射的方法:变换流和事务流

5 面向数据流的设计方法
?数据流图分类
:信息以“外部 变换型 变换型: 世界”的形式进入系 统,经过处理以后再 以“外部世界”的形式 离开系统。 事务型: a c
1 2

e
4

g f
5

6 7

x 8 z y

d
3

b

h

a

c
1

2 3 d

e
5

4

g f
6

y

b

信息沿着通路到达一个处理,根据数据类型选择一个操作

5 面向数据流的设计方法
--》变换分析 变换型数据流图 变换型数据流图-----》变换分析 --》事务分析 事务型数据流图 事务型数据流图-----》事务分析 面向数据流方法的设计过程: 变换分析是一系列设计步骤的总称,经过这些步骤把具有 变换流特点的数据流图按照预先确定的模式影射成软件 结构。 变换设计步骤: 1、复查基本系统模型(输入和输出符合实际) 2、复查并精化数据流图(逻辑正确,功能适中)

5 面向数据流的设计方法
3、确定数据流图具有变换特征还是事务特征。 4、确定输入和输出的边界,从而孤立出变换中心。 5、完成第一级分解。 6、完成第二级分解。 7、使用设计度量和启发规则对第一次分割得到的软件结 构进一步精化

5 面向数据流的设计方法
事务分析: 事务分析的设计步骤和变换分析的设计步骤大部分相同或 类似,主要差别在于有数据流图到软件结构的映射方法 不不同。 注意:如果数据流不具有显著的事务特征,就使用变化分 析,因:个人判断力和创造精神,往往凌驾于方法的规 则之上。

6 设计优化
一个不能工作的“最佳设计”是没有价值的。 1、应该致力于开发能够满足所以功能和性能要求 ,而且按照设计原理和启发式设计规则衡量是 值得接受的软件。 2、设计早期尽量对软件设*峁菇芯?梢 导出不同的软件结构,然后对他们进行评价和 比较,力求得到“最好”的结果。 3、对于时间是决定性因素的应用场合,可以在有 必要的详细设计或编程阶段进行优化。

7 详细设计
详细设*锥蔚母救挝瘢喝范ㄓΩ迷跹咛迨迪炙 的系统,也就是说,经过这个阶段的设计工作,应该得 出对目标系统的精确描述,从而在编码阶段可以把这个 描述直接翻译成用某种设计语言书写的程序。 详细设计不是编写程序,设计出程序蓝图,根据这个蓝图 写出实际的程序代码,决定了程序代码的质量。 程序质量:逻辑正确、性能满足要求、易于阅读和理解。 程序结构设计技术是实现上述目标的关键技术,因此是详 细设计的逻辑基础。

8 结构程序设计
1966年B?hm和Jacopini证明了,只使用三 种基本控*峁梗ㄋ承颉⒀≡窈脱罚 ,就能够实现任何单入口单出口的程序 。 实际上,使用顺序和循环结构(又称 DO_WHILE结构)完全可以实现选择结构 因此,理论上 (又称IF_THEN_ELSE), ),因此,理论上 ,最基本的控*峁怪挥辛街帧

8 结构程序设计
1972年,IBM公司的Mills进一步提出,程序应该只有一个入口和一个 出口,从而补充了结构化程序设计的规则。 结构程序设计:一个程序的代码块,仅仅通过顺序、选择和循环这三 种基本控*峁菇辛樱⑶颐扛龃肟橹挥幸桓龀隹诤鸵桓 入口,则称这个程序是结构化的。 经典的结构程序设计:顺序、 IF_ELSE_THEN型分支和 DO_WHILE型循 环。 扩展的结构程序设计:补充 DO_CASE型多分支结构和 DO_UNTIL型循环 结构。 修正的结构程序设计:再补充 LEAVE(或BREAK)结构

9 过程设计工具
程序设计工具:描述程序处理过程的工具; 可以分为图形、表格和语言3类。 基本要求:能提供对设计的无歧义的描述,也就是应该指 明控制流程、处理功能、数据组织以及其他方面的实现 细节,从而在编码阶段把对设计的描述直接翻译成程序 代码。 几种表示工具 流程图、PAD、N-S图、伪码等

9 过程设计工具
一、程序流程图:程序框图、框图 20世纪40年代末—70年代中期,一直是软件设计中的主要工具。 优点:直观、便于学*。 缺点: 1、本质上不是逐步求精的好工具,使程序员过早的考虑程序的控制流程,而不 是全局结构。 2、箭头代表控制流、不受约束、不顾结构化设计精神,随意转移控制。 3、不容易表示数据结构。

s1 s2 s1

. . .

s2

s

9 过程设计工具
N-S 图 二、 二、N-S N-S图
S1

顺序:

选择 :
条件 T F S1 S2

循环:
循环条件 循环体

T

X>5

F

S3 S2 N:=1..10 S4 S5 S6

T

X>10&Y>3

F

S7

S8 S9 S10

功能域明确,不可随意转移控制, 容易确定局部全局数据的作用域 ,容易表示嵌套、模块层次

支持逐步求精设计举例

9 过程设计工具
三、PAD图(problem analysis diagram),1973年,日 本日立公司发明。它用二维树形结构的图来表示程序的 控制流程,翻译成代码比较容易。控*峁谷缦拢 顺序:
S1 S2 S3
X≥5 X<5

选择 :

循环:

S1 S2

S

注:支持逐步求精设计

9 过程设计工具
PAD图的优点: 1、使用表示结构化控*峁沟腜AD符号所设计出来的程 序必然是结构化程序。 2、结构清晰。 PAD图中的竖线总数就是程序的层次数。 3、易读、易懂、易记。 4、转换成源程序可用自动工具完成。 5、用于描述程序逻辑,也可以描述数据结构。 6、支持逐步求精的方法使用。

9 过程设计工具
四、伪码(过程设计语言) 伪码是一种混合语言。外部采用形式语言的控*峁 ,内部使用自然语言。有严格的关键字外部语法,用于 定义控*峁购褪萁峁梗槐硎臼导什僮骱吞跫哪诓 语法通常又是灵活自由的,可以适应各种工程项目的需 要。 Begin a,b,c; 输入一元二次方程的系数 输入一元二次方程的系数a,b,c; if b ↑2-4ac≥o then 计算两实根 else 输出无实根; end.

9 过程设计工具
PDL ) 四、伪码(过程设计语言 四、伪码(过程设计语言PDL PDL) 具有的特点: PDL PDL具有的特点: 1、关键字固定语法,提供了结构化控*峁埂⑹菟得骱湍?榛奶氐恪 2、自然语言的自由语法,它描述处理特点。 3、数据说明的手段。应该既包括简单的数据结构和复杂的数据结构说明手段 。 4、模块定义和调用的技术,应该提供各种接口描述模式。 的优点: PDL PDL的优点: 1、可以作用注释直接插入到源代码中去。 2、可以使用普通的文本编辑和文字处理系统书写和编辑工作。 PDL 自动生成程序代码。 3、可以使用自动处理程序,把 、可以使用自动处理程序,把PDL PDL自动生成程序代码。

9 过程设计工具
五、判定表 一张判定表由四个部分组成:左上部列出所有条件;左下部是所以可 能做的动作;右上部是表示各种条件组合的一个矩阵;右下部是 和每种条件组合相对应的动作。判定表右半部的每一列实质上是 一个条件规则,规定了与特定的条件组合相对应的动作。 确定:不能一目了然,当数据元素值多于两个时判定表的简洁度下降 。 六、判定树 是判定表的变种,能清晰地表示负责条件的组合与应对的动作之间的 关系,优点是形式简单,一目了然,易于掌握和使用。一直受到 注重,是一种比较常用的系统分析和设计的工具。


相关推荐

最新更新

猜你喜欢