软件工程(六)第一代软件工程(传统软件工程)—— 结构化分析与设计

结构化分析与设计的流程

瀑布模型由传统的生存周期过程演变而来。作为一种系统开发方法,结构化分析与设计是瀑布模型的首次实践。根据瀑布模型的上述流程,需求分析与软件设计是进入编码阶段前必须完成的任务。具体来说,系统开发从需求分析开始,首先建立系统的需求模型;接着通过 SD 方法提供的映射规则,把分析模型转化为初始设计模型;然后再优化为系统最终设计模型

基本任务

  1. 结构化分析

    SA 有两项基本任务,即建立系统分析模型和编写软件需求规格说明书,二者都是分析阶段必须完成的文档。分析模型?包含描述软件需求的一组模型,是形成 SRS 文档、完成软件设计的基础,其中包含功能模型,?待开发系统的功能需求;数据模型,表示待开发系统的数据需求;行为模型,表示待开发系统的行为需求结构化分析的主要指导思想是抽象与分解

  2. 结构化设计

    SD 阶段把分析模型中的 DFD 图转换为最终 SC 图,这仅仅是完成了软件设计的第一步。在随后的详细设计中,还需用适当工具对各个模块采用的算法和数据结构进行足够细致的描述。SC 图需分两步完成,即首先通过 “映射” 获得初始 SC 图;然后通过 “优化” 获得最终 SC 图。结构化设计的主要指导思想是分解与细化


SA 模型

组成

DFD 所表现的范围,可大到整个系统,小到一个模块。在需求分析中,常常用一组 DFD 图由粗到精地表示同一软件在不同抽象级别上的功能模型,并称之为分层数据流图

数据字典

数据字典的作用就是对软件中的每个数据规定一个定义条目

加工规格说明

通常用结构化语言、判定表或判定树作为描述工具。每个加工规格说明可用像字典中的条目一样记在卡片上

SD 模型

组成

SD 模型由 SA 模型映射而来。SA 模型的数据字典可转换为待开发系统的数据设计;数据流图可转换为体系结构设计(SC 图)与接口设计;加工规格说明可转换为模块内部的详细过程设计等等

软件工程(六)第一代软件工程(传统软件工程)—— 结构化分析与设计
在图中,由下至上包含了数据设计、体系结构设计、接口设计与过程设计。体系结构设计是用来确定软件结构的,其描述工具为结构图,简称 SC 图。过程设计主要指模块内部的详细设计

SC 图

在 SC 图中,用矩形框表示模块,带箭头的连线表示模块间调用,并在调用线的两旁标出传入和传出模块的数据流。SC 图允许使用的六种模块分别为传入模块、传出模块、变换模块、漏模块、源模块与控制模块。模块调用关系分别有简单调用、选择调用和循环调用


结构化系统分析

结构化分析就是使用 DFD、DD、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档。这里的结构化说明书就是 SRS

基本步骤

自顶向下对系统进行功能分解,画出分层 DFD 图;向后向前定义系统的数据和加工,编制 DD 和 PSPEC;最终写出 SRS

  1. 画分层数据流图

    从系统的基本功能模型开始,逐层对系统进行分解,每分解一次,系统的加工数量就增加一次,继续重复分解,直到所有加工都足够简单为止。分层 DFD 图为整个系统勾画了一个概貌

  2. 确定数据定义和加工策略

    定义系统的数据、确定加工的策略等问题。一般从数据的终点开始,沿着 DFD 图一步步向数据源点回溯,最终产生 SRS 文档?

  3. 需求分析的复审

    需求分析的文档完成后,应用用户和系统分析员共同进行复审,并吸收设计人员参加


结构化系统设计

从 DFD 图到 SC 图

从 SA 获得的 DFD 图中,所有系统可归结为变换型结构和事务型结构两种类型。按照 SD 方法规定的一组规则,采用变换映射与事务映射,将变换型 DFD 图和事务型 DFD 图事务映射为初始 SC 图

优化初始 SC 图

SD 方法中常用于优化软件初始 SC 图的两条指导规则

  1. 对模块划分的原则

    过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小模块太多也会块间联系变得复杂,增大系统在模块调用时传递信息所花费的开销

  2. 高扇入/低扇出的原则

    扇入高则上级模块多,能够增加模块利用率;扇出低则表示下级模块少,可以减少模块调用和控制的复杂度。设计良好的软件具有瓮形结构,两头小,中间大,这类软件在下部收拢,表明它在低层模块中使用了较多高扇入的共享模块

模块设计

传统软件工程将软件设计分两步走:总体(结构)设计 —— 用最终 SC 图表示;模块设计 —— 逐步细化的方法实现

  1. 目的

    为 SC 图中的每个模块确定采用的算法和块内数据结构,用选定的表达工具给出清晰的描述

  2. 任务

    编写软件的模块设计说明书,为此设计人员应:确定每一模块采用的算法、确定每一模块使用的数据结构、确定模块接口的细节?

  3. 原则与方法

    清晰第一的设计风格
    结构化的控制结构
    逐步细化的实现方法

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月15日
下一篇 2019年11月15日

相关推荐