第四章 面向过程的软件设计方法

软件设计的概念与原则:
    将软件划分为若干独立成分的依据
    怎样表示不同的成分内的功能细节和数据结构
    怎样统一衡量软件设计的技术质量
软件设计过程
    制定规范
    软件系统结构的总体设计
    处理方式设计
    数据结构设计
    可靠性设计
    编写概要设计阶段的文档
    概要设计评审

软件设计基础:
    自顶向下,逐步细化
    软件结构
    程序结构  网状结构 树形结构 (纵向叫深度,横向叫宽度)
    结构图
    模块化
    抽象化
    信息隐蔽
   

模块化:模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可通过名字来访问。例如过程、函数、子程序、宏等

            等都可作为模块

模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果
模块独立的重要性:具有独立的模块的软件比较容易开发出来
                           独立的模块比较容易测试和维护
模块的独立程度可以由两个定性标准度量,内聚和耦合。耦合衡量不同模块彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素此

                   结合的紧密程度
                  耦合是影响软件复杂程度的一个重要因素。应该采取的原则是,尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用

                        内容耦合
模块内聚:功能内聚  信息内聚  通信内聚  过程内聚  时间内聚  逻辑内聚  巧合内聚 

 

结构化设计方法
   首先研究、分析和审查数据流图
   然后根据数据流图决定问题的类型、数据处理问题典型的类型有两种:变换型和事务型
   针对两种不同的类型分别进行分析处理

变换分析有以下四部组成
     重画数据流图
     区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分
     进行以及分解,设计上层模块
     进行二级分解,设计输入、输出和中心变换部分的中、下层模块

事务分析:
     识别事务源
     规定适当的事务型结构
     识别各种事物和他们定义的操作
     注意利用公共模块
     对每一事物,或对联系密切的一组事务,建立一个事务处理模块
     对事物处理模块规定他们全部的下层操作模块
     对操作模块规定他们全部细节模块

软件模块结构的改进
     模块功能的完善化
              执行规定的功能的部分
              出错处理部分
              给它的调用者返回一个结束状态标识
     消除重复功能,改善软件结构
              完全相似
              局部相似
     模块的作用范围应在控制范围之内
     模块的控制范围包括它本身及其所有的从属模块
     模块的作用范围是模块内一个判定的作用范围,凡是受这个判定的所有模块都属于这个判定的作用范围
     尽可能的减少高扇出结构,随着深度增大扇入
     避免或减少使用病态连接
          直接病态连接
          公共数据域病态连接
          通信模块病态连接
      模块的大小要适中
      涉及功能可预测的模块,但要避免过分受限制的模块
      软件包应满足设计约束和可移植性
 
设计的后处理
     为每一个模块写一份处理说明
     为每一个模块提供一份接口说明
     确定全局变量结构和局部数据结构
     指出所有的设计约束和限制
     进行概要设计的评审

 

数据设计及文件设计
数据设计的原则
   用于软件的系统化方法也适用于数据
   确定所有的数据结构和在每种数据结构上施加的操作
   应当建立一个数据词典并用它来定义数据和软件的设计
   底层数据设计的决策应推迟到设计过程的后期进行
   数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道
   应当建立一个存放有效数据结构及相关操作的库
   软件设计和程序设计语言应当支持抽像数据类型的定义和实现

文件设计分两个阶段
  文件的逻辑设计主要在概要设计中完成
  文件的物理设计主要在详细设计中完成
文件设计步骤:
  整理必须的数据元素
  分析数据间的关系
  确定文件的逻辑设计
  理解文件的特性
  确定文件的组织形式
      顺序文件:每个记录是等长的,操作简单,查找方便。查找最后一个记录,时间较长
      直接存取文件:其基本数据记录按顺序文件组织,记录排列顺序按关键字值升序或降序安排,且具有索引部分,也按统一关键字进行索

                           引
      分区文件:这类文件主要用于存放程序
      虚拟存储文件:这是基于操作系统的请求页式存储管理功能而建立的索引顺序文件
      倒排文件:按候选属性建立索引表
   确定文件的存储介质
   确定文件的记录格式
   骨算存取时间和存储容量

 

过程设计
  程序流程图
     不提倡使用,因为它过早的考虑了控制流
  盒式图(N-S图)
      特点:功能域表示的比较明确
            不可能实现任意转移
            很容易确定局部和全局的作用域
            很容易的表示嵌套结构,也可表示模块间的层次结构
            可以表示模块之间的变换关系
            控制关系比较隐含
            循环次数隐含
            程序流程图去掉控制流的一种变换
  问题分析图(PAD图)
      使用PAD图设计的程序一定是结构化程序
      用PAD图描述的流程图比较清晰
      表示的程序结构易懂且便于记忆
      可以很容易的将PAD图转换为高级语言的程序
      可以描述数据结构
      支持自顶向下逐步求精的一种方法的使用
  判定表
      用于表示程序的静态逻辑
      在判定表中的条件部分给出所有的两分支判断的 列表,动作部分给出相应的处理
      要求将程序流程图中的多分支判断够改成两分支判断
  PDL(program design language)
      是一种用于描述功能模块的算法设计和加工细节的语言。成为设计程序用语言。它是一种伪码
      具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言词

            汇
     特点:提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解
           为了区别关键字,规定关键字一律大写,其他单词一律小写。或者规定关键字加下划线,或者规定他们为黑体字
            不如图形工具直观
            描述复杂的条件组合和与动作之间的关系,不如判定表清晰

   面向数据结构的分析设计方     

   Jackson系统开发方法(jsd):jackson系统开发方法(jsd)是一种典型的面向数据结构的分析设计法, 

         它是以信息驱动的,是将信息转换称软件的程序结构

   Warnier方法:又一种面向数据结构的设计方法

 

posted @ 2010-09-12 11:18  转航  阅读(381)  评论(0编辑  收藏  举报