软件工程第三章节结构化方法

需求技术的基本特征:

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

一.需求分析中的基本术语

1、数据:客观事物的一种表示 2、信息:具有特定语义的数据 3、数据是信息的载体 4、数据流:数据的流动 5、加工:数据变换单元6、数据存储 7、数据源和数据潭

 

  • 系统功能模型表示方法
  1. 数据流图(DFD图)

   一种表示数据变换的图形化工具

  1. 数据流成图的元素

  数据源/数据潭 ,数据流,数据加工,数据存储

1.建模过程:

    1.自顶向下、逐步求精

    2、建立系统环境图

    3、0层图:从0层图开始对流程图中的要素编号 1,2,3,。。。

    4、1层图 1.1 1.2 1.3 1.4 .....

2.建模过程-数据字典

 数据字典:定义数据流成图中所有数据流和数据存储的数据结构

  。顺序结构 +

  。选择结构 |

  。重复结构 { }

  。子界 m..n

3.建模过程-加工的描述

  1. 判定表  其也成为决策表,是二维表,它说明了每一种条件组合所产生的结果。
  2. 判定树

         判断树( Decision Tree)也称为决策树,是用来描述在一组不同的条件下,决策的行动是根据不同条件及其取值来选择的处理过程。业务规则的描述通常可以使用判断树这一过程描述工具。

   3.结构化语言

   若逻辑关系比较简单,可以用结构化自然语言来描述.

   

四、应用中注意的问题

   1.模型平衡问题 DFD图与数据字典的一致 底层加工的处理逻辑描述,与数据字典一致

   2、信息的复杂性控制问题 上层数据流可以打包 下层模块个数:7±2 每个加工的数据流不能太多:增加层次

五、需求验证

     1、验证:必要性、无歧义性、可测性、可跟踪性、可测量性

     2、需求中发现的错误类型

         不正确的事实:40% 遗漏:31% 不一致;13% 歧义性:5% 错放:2% 其它:9%

六.发现错误的方法

     审查:65% 单元测试:10% 评估:10% 集成:5%

第二节:结构化设计

一.总体设计

二.详细设计

结构化设计的任务

1、定义满足需求所需要的结构 2、确定“怎么做”的问题

3、划分为:

总体设计:以系统为对象

详细设计:以模块为对象

一、总体设计

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

2、引入了两个概念:

模块:软件中具有特定标识的独立成分 模块调用:模块之间的一种使用关系

如何表达模块和模块条用

         1.模块结构图 2.层次图 3.HIPO图  H:层次图 IPO:输入/处理/输出图

 

 含有编号

  1. 总体设计的步骤

       将DFD图映射为设计层面的模块及模块调用。

           (1)将DFD图转换为初始的模块结构图

          (2)基于“高内聚、低耦合”的软件设计原理通过模块化,将初始的模块结构图转化为最终的模块结构图。

 二、两种映射方法

(1)变换设计

        基于变换的数据流程图是一个线性的顺序结构,由输入、输出和变换中心三部分组成。

(2)事务设计

           基于事务的数据流程图中有一个事务处理中心,它将输入分为许多相互平行的加工路径,然后根据输入的属性,选择某一加工路径。

(1)变换设计

           变换型数据流程图是一个线性的顺序结构,由输入臂、输出臂和变换中心三部分组成。其中变换中心使系统数据发生本质的变化,输入臂将物理输入变换成逻辑输入,而输出臂则将逻辑输出变换成物理输出。

2.事务设计

   如果模块为逻辑凝聚的模块,可以将其分为一个检查业务类型的模块和一个调度的模块,根据不同的业务类型,调度模块调用不同的下层模块。

 

3、模块化及其启发式规则

(1)模块

      执行一个特殊任务的一个过程以及相关的数据结构。模块通常由两部分组成:模块接口和模块体。

(2)模块化的两个问题

       ①如何将系统分解成软件模块 ②如何设计模块

如何将系统分解成软件模块

        分而治之”和“抽象” 自顶向下,逐步求精 形成模块层次结构

4、模块化

         把一个待开发的软件分解成若干个简单的具有高内聚低耦合的模块,这一过程称为模块化。

(1)模块耦合

        耦合( coupl ing)是对两个模块之间相互依赖程度的一种度量。模块间的依赖程度越大,则其耦合程度也就越大;反之,模块间的依赖程度越小,则其耦合程度也就越小。

模块间耦合类型:

       内容耦合:一个模块直接修改或操作另一模块数据

      公共耦合:两个模块共同引用一个全局数据项

      控制耦合:一个模块向另一模块传递控制信号

      标记耦合:一个模块向两个模块传递一个公共参数

      数据耦合:模块之间通过参数来传递数据

2)模块内聚

        是指一个模块内部个成分之间相互关联程度的度量。也就是说,内聚是对模块内各处理动作组合强度的一种度量。很显然,一个模块的内聚越大越好。

内聚的类型:

       1.偶然内聚:模块的各成分没有任何关系 2.逻辑内聚:逻辑上相关的处理放在一起 3.时间内聚:模块内的功能在同一时间完成

  4.过程内聚:模块内的处理以特定的次序执行 5.通信内聚:操作同一数据集 6.顺序内聚:一个成分的输出作为另一成分的输入

  7.功能内聚:模块的所有成分完成单一的功能

(3)启发式规则

     高内聚、低耦

      ①改进软件结构,提高软件独立性。模块分解 ②模块规模适中 ③力求深度、宽度、扇出、扇入适中。深度:表示其控制的层数。

    宽度:同一层次上模块总数的最大值。扇出:一个模块直接控制的下级模块的数目 扇入:有多少个上级模块直接调用它。

4尽量使模块的作用域在其控制域内。

模块的控制域:这个模块本身以及所有直接或间接从属它的模块的集合。

模块的作用域:受该模块内一个判断所影响的所有模块的集合。

5尽力降低模块接口的复杂度 ⑥力求模块功能可以预测

二.详细设计

        具体描述模块结构图中的每一模块,即给出实现模块功能的实施机制,包括一组例程和数据结构详细设计的目标:将总体设计阶段产生的系统高层结构映射为以相关术语表达的低层结构,也是系统的最终结构。

1、结构化程序设计方法

        是一种基于结构的编程方法,即采用顺序结构、选择结构和重复结构进行编程,其中每一结构只允许一个入口和一个出口。结构化程序设计的本质是:使程序的控制流程线性化,实现程序动态执行顺序符合静态书写的结构,提高程序的可读性。

2、详细设计工具

(1)程序流程图

程序流程图:程序流程图又称为程序框图,它是历史最悠久使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。

(2)盒图

     出于要有一种不允许违背结构程序设计精神的图形设计工具的考虑,设计除了盒图 又称为:N-S图。

  (3) PAD

      图PAD是问题分析图( Problem Ana lys isDi agr am)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。下图给出PAD图的基本符号。

4)类程序设计语言PDL

PDL也称为伪码,它是用正文形式表示数据和处理过程的设计工具。PDL具有严格的关键字外部语法,用于定义控制结构和数据结构般说来PD是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另种语言(某种结构化的程序设计语言)的语法。

3、设计规约

完整准确地描述满足需求规约所要求的所有功能模块,以及伴随功能模块而出现的非功能机制设计规约包括概要设计规约和详细设计规约。

1)概要设计规约

       指明高层软件体系结构

       1系统环境 2软件模块的结构 3模块描述 4文件结构和全局数据文件的逻辑结构 5测试需求

(2)详细设计规约

      详细设计规约主要作为软件设计人员与程序员之间交流的媒体。

      1.各处理过程的算法 

      2.算法所涉及的全部数据结构的描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值