软件工程第三章(第一部分)

第三章 结构化方法

**大家想一起学习交流的可以加群,QQ:755422568。**

结构化方法,可用于定义需求,建立待建系统的功能模型,可用于定义满足需求的结构,给出一种特定的软件解决方案。

一、结构化需求分析

1)、 在进行软件系统/产品的需求工作中,通常面临三大挑战。

1、空间问题。
2、人与人之间的通信。
3、需求的变化性。

2)、为了应对以上三大挑战,好的需求技术应具有以下基本特征:

1、提供方便通信的机制。
2、鼓励需求分析人员使用空间的术语思考问题,编写文档。
3、提供定义系统边界的方法。
4、提供支持抽象的基本机制。
5、为需求分析人员提供多种可供选择的方案。
6、提供特定的技术,适用需求的变化。

(1)、基本术语

1)、数据流,在结构化分析方法中,数据流是数据的流动

用于表达在分析中所要使用的、用于表达“客体”的信息。

2)、加工,在结构化分析方法中,加工是数据的变换单元,即它接受输入的数据,进行处理并产生输出。(选择题、填空题

用于表达在分析中所要使用的、用于表达“处理”的信息。

3)、数据存储,数据存储是数据的静态结构(选择题、填空题

用于表达在分析中所要使用的、用于表达“结构化客体”的信息。

4)、数据源和数据潭,数据源是数据流的起点;数据潭是数据流的归宿地

使用的目的:为了表示系统的环境,使用它们和相关数据流来定义系统的边界。用于表达系统/产品“边界”的信息。

(2)、系统功能模型表示

需求分析的任务是建立系统功能模型。结构化分析方法出一种表达功能模型的工具,即数据流图,简称DFD图

1)、DFD图是一种描述数据变换的图形化工具。
2)、使用DFD图来表达系统/产品功能模型,应注意;

1、在DFD图中,数据流起到连接其他实体(加工、数据存储、数据源和数据潭)。
2、加工之间可以有多个数据流,数据流之间可以没有任何关系,不表明它们的先后次序。
3、对于一个比较大的软件系统,往往采用多层次的数据流图。

(3)、建模过程

1)、建立系统环境图,即系统顶层数据流图,确定系统语境
2)、自顶向下,逐步求精,建立系统的层次数据流图,直到底层的加工足够简单,不必分解。
3)、定义数据字典,定义其中包含的所有数据流和数据存储的数据结构,并给出各数据项的基本数据类型。

数据流条目给出DFD图中所有数据流的结构定义。
数据存储条目给出DFD图中所有数据存储的结构定义。
数据项条目给出所有数据项的类型定义。

注:描述加工,使用结构化自然语言,判定表,判定树

(4)、需求验证

需求阶段的主要任务是完整地定义问题,确定系统的功能和能力。该阶段主要任务一般包括需求发现、需求分析和需求验证,最终形成系统的软件需求规格说明书。

1、需求规格说明书中每一单一需求需要满足五个性质:
必要性、无歧义性、可测性、可跟踪性和可测量性
2、验证需求规格说明是否满足4个性质:
重要性和稳定性程度、可修改性、完整性和一致性

二、结构化设计

结构化设计分为:
1)、总体设计
目标是建立系统的模块结构,即系统实现所需要的软件模块——系统中可标识的软件成分,以及模块间调用关系.
2)、详细设计

在总体设计中引用两个模块
1、模块:指软件中具有特定标识的独立成分
2、模块调用:指模块之间的一种使用关系

(1)、总体设计
总体设计任务:把系统的功能需求分配到一个特定的软件体系结构中

1)、表达软件体系结构的工具

1)、Yourdon提出的模块结构图。 尾部是空心圆的箭头线标明传递的是数据信息; 尾部是实心圆的箭头线标明传递的是控制信息;
2)、层次图,主要描述软件的层次结构,适用自顶向下的设计软件
3)、HIPO图,H图(层次图)+IPO图
IPO图,左边框中是输入数据,右边框中是输出数据。

2)、总体设计步骤

1、基本步骤:

①、将系统的DFD图转化为初始的模块结构图
②、基于“高内聚低耦合”软件色设计原理,将初始的模块结构图转化为最终的、可供详细设计使用的模块结构图(MSD)。
③、对前两个阶段所得到的高层软件结构进行复审。

3)、变换型数据流图和事务型数据流图

1、变换数据流图:有输入部分和变换部分之间的界面、变换部分和输出部分之间界面的数据流图。
在这里插入图片描述
2、事务型数据流图:数据到达一个加工T,该加工T根据输入数据的值,在其后的若干动作序列(称为一个事务)中选出一个来执行。

处理T称为事务中心:
接收输入数据
分析并确定对应的事务
选取与该事物对应的一条活动路径

事务型数据流图的数据处理模式:”集中—发散“式

在这里插入图片描述

4)、变换设计和事务设计

1、变换设计:将变换型数据流图转换为系统的模块结构图。
第一步:设计准备——复审并精华系统模型
第二步:确定输入、变换、输出这三部分之间的边界。
第三步:第一级分解——系统模块结构图顶层和第一层的设计。

变换型数据流图对应的软件结构有一个主模块和由它控制的3个部分:
主模块或主控模块:位于顶层,协调并控制第一层模块。
输入模块部分:协调对所有输入数据的接受,为主模块提供加工数据。
变换模块部分:接受输入模块部分的数据,对其进行加工,产生输出数据。
输出模块部分:协调对所有输出数据的产生过程,将变换模块产生的输出数据,以用户可视的形式输出。

第四步:“第二级分解”——自顶向下,逐步求精

第二级分解:通过一个自顶向下逐步细化的过程,为每一个输入模块、变换模块和输出模块设计它们的从属模块

通过以上步骤,可将变换型数据流图转换为初始的模块结构图。

2、事务设计:
第一步:设计准备——复审并精华系统模型。
第二步:确定事务处理中心。
第三步:第一级分解——系统模块结构图顶层和第一层的设计。
第四步:“第二级分解”——自顶向下,逐步求精

5)、模块化及启发式规则
1、模块化:是执行一个特殊任务的一个过程以及相关的数据结构。
(基于高内聚低耦合的设计原则)

结构化软件设计是一种典型的模块化方法。

2、耦合:耦合是指不同模块之间相互依赖程度的度量。

模块间耦合类型由强到弱的顺序:
内容耦合 > 公共耦合 > 控制耦合 > 标记耦合 > 数据耦合

①、内容耦合:一个模块直接修改或操作另一个模块的数据,或者不通过正常入口而转入到另一个模块。
②、公共耦合:两个或两个以上的模块共同引用一个全局数据项。
③、控制耦合:一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值进行恰当的动作。
④、标记耦合:一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和模块C之间存在一个标记耦合。
⑤、数据耦合:模块之间通过参数来传递数据。

3、聚合:指一个模块内部各成分之间相互关联程度的度量。

模块间内聚类型由低到高的顺序:
偶然内聚 < 逻辑内聚 < 时间内聚 < 过程内聚 < 通信内聚 < 顺序内聚 < 功能内聚

①、偶然内聚:一个模块的各成分之间基本不存在任何关系。
②、逻辑内聚:几个逻辑上相关的功能被放在同一个模块中。
③、时间内聚:一个模块完成的功能必须在同一时间内执行,但这些功能只是因为时间因素关联在一起。
④、过程内聚:一个模块内部的处理成分是相关的,这些处理必须以特定的次序执行。(和程序流程图有关联性)
⑤、通信内聚:一个模块的所有成分都操作同一个数据集或生成同一个数据集。
⑥、顺序内聚:一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入。
⑦、功能内聚:模块的所有成分对于完成单一的功能都是基本的。(最理想内聚)

3、启发式规则(选择、填空、简单题)

①、改进软件结构,提高模块独立性。
②、力求模块规模适中。
③、力求深度、宽度、扇出和扇入适中。
④、尽力使模块的作用域在其控制域之内。
⑤、尽力降低模块接口的复杂度。
⑥、力求模块功能可以预测。

深度:表示其控制的层数,粗略地标志一个系统的规模和复杂程度。(填空题
宽带:指同一个层次上模块总数的最大值。
扇出:指一个模块直接控制(调用)的下级模块数目。(选择题、填空题
扇入:指一个模块可以有多少个上级模块直接调用它。(选择题、填空题
模块的作用域:指受该模块内一个判定所影响的所有模块的集合。(选择题
模块的控制域:指这个模块本身以及所有直接或间接从属于它的模块的集合。(选择题

发布了31 篇原创文章 · 获赞 4 · 访问量 1528

猜你喜欢

转载自blog.csdn.net/qq_38471554/article/details/99479953