软件设计

一、简述

1、分两步完成

  概要设计(总体设计):确定系统的具体实现方案,给出软件的模块结构、编写总体设计说明书
  详细设计:对过程中的每一模块给出详细的过程性描述**

2、设计方面

  数据设计:数据结构的定义系统
  结构设计:定义软件系统成分之间的关系
  过程设计:转化成过程性描述

3、设计基础

自顶向下
软件结构:包括模块结构和数据的结构
程序结构:树状结构、网状结构等方式
结构图:反映程序中模块之间的层次和调用关系
抽象化
信息隐蔽

二、概要设计

(得到概要设计说明书、用户文档、测试文档)

1、设计步骤

>   1、设计供选择的方案
    2、推荐最佳实现方案
    3、设计软件结构
    4、数据库设计
    5、制定测试计划
    6、编写总体设计文档
    7、审查与复审总体设计文档

2、模块

又称构件,是指能够单独命名并独立完成一定功能的程序语句的集合。表示模块A有条件的调用另一个模块B(菱形表示有条件的调用)
这里写图片描述

抽象 :把事物之间的共性集中和概括起来,忽略他们之间的差异。模快表示了对软件抽象层次的一次细化。(层次结构的上一层是下一层的抽象,下一层是上一层的求精。)
信息隐蔽:模块中所包含的信息不允许其他不需要这些信息的模块调用。用来定义和实施对模块的过程细节和局部数据结构的存取限制。
模块独立性:指软件系统中每个模块只涉及软件要求的具体的子功能,和系统中其他模块接口是简单的。
  一般采用两个准则度量模块独立性,即模块间耦合和模块内聚
  内聚:模块内部各个元素彼此结合的紧密程度的度量。
  耦合:模块间相互连接的紧密程度的度量。(尽量使用数据耦合,受用控制耦合,限制公共耦合的范围,避免使用内容耦合)
  高内聚低耦合的模块独立性越强
这里写图片描述
这里写图片描述

3、结构设计准则

  A、提高模块独立性
  B、选择合适的模块规模
  C、适当选择模块的深度、宽度、扇入(一个模块有多少上级模块调用它)和扇出(指一个模块直接调用的模块数目)
    优秀的软件结构:顶层扇出高,中层扇出少,底层扇入到公共的使用模块中去
  D、模块的作用范围应在控制范围之内
  E、降低模块接口的复杂程度
  F、设计单入口和单出口且功能可预测的模块

4、结构化设计方法

这里写图片描述

5、结构图类型

  变换型系统结构图:取得数据——变换数据——给出数据
  事物型系统结构图:存在着一个事物中心,根据事物处理的特点和性质,选择分派一个适当的处理单  元,然后给出结果(关键是找出事物处理中心)
  这里写图片描述

      系统结构图中的模块调用:
            简单调用
            选择调用
            循环调用

6、软件模块结构的改进

        模块功能完善化
        消除重复功能,改善软件结构
        模块的作用范围应在控制范围之内
        减少高扇出结构,随着深度增大扇入。
        避免或减少使用病态链接。
        模块大小要适中

7、文件设计

整理必须的数据元素               
分析数据间的关系
确定文件的逻辑设计
理解文件的特性
确定文件的组织方式(顺序文件、直接存取文件)
确定文件的存储介质
确定文件的记录格式
估算存取时间和存储容量

  

三、详细设计

(确定每个模块的内部特征,即每个模块内部的执行过程)

任务:为每个模块确定采用的算法,写出模块的详细过程性描述
   确定模块使用的数据结构
   确定接口细节
   设计测试用例(以便在编码阶段对模块代码进行预订的测试)
过程设计工具
 A、程序流程图(程序框图):
顺序型、选择型、while型循环(先判定型循环)、until循环(后判定型循环)、多情况选择型
这里写图片描述
  
  B、N—S图:也叫盒图。容易确定局部和全局的作用域,看不见转向。有五种基本控制结构
 这里写图片描述
  C、PAT图(问题分析图):允许递归使用,描述的比较清晰,便于记忆,很容易将其转变成编程语言,容易描述数据结构
这里写图片描述

猜你喜欢

转载自blog.csdn.net/molihuakai_118/article/details/79996221