总体设计过程

总体设计过程通常由两个主要阶段组成:系统设计阶段, 确定系统的具体实现方案;结构设计阶段, 确定软件结构。典型的总体设计过程包括下述9个步骤。

1. 设想供选择的方案
如何实现要求的系统呢?在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。在总体设计阶段开始时只有系统的逻辑模型,分析员有充分的自由分析比较不同的物理实现方案,一旦选出了最佳的方案,将能大大提高系统的性能/价格比。

需求分析阶段得出的数据流图是总体设计的极好的出发点。

设想供选择的方案的一种常用的方法是,设想把数据流图中的处理分组的各种可能的方法,抛弃在技术上行不通的分组方法(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。

2. 选取合理的方案
应该从前一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中成本和高成本的3种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。

对每个合理的方案,分析员都应该准备下列4份资料:

  • 系统流程图
  • 组成系统的物理元素清单
  • 成本/效益分析
  • 实现这个系统的进度计划

3. 推荐最佳方案
分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并且为推荐的方案指定详细的实现计划。

用户和有关的技术专家应该认真复查分析员所推荐的最佳系统,如果应系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批。在使用部分的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段–结构设计。

4. 功能分解
为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:首先进行结构设计,然后进行过程设计。结构设计确定程序由哪些模块组成,以及这些模块之间的关系;过程设计确定每个模块的处理过程。结果设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。

为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当分解成一系列比较简单的功能。一般来说,经过分解之后应该使每个功能对大多数程序员而言都是明显易懂的。功能分解导致数据流图的进一步细化,同时还应该用IPO图或其他适当的工具简要苗虎细化后每个处理的算法。

5. 设计软件结构
通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘。

如果数据流图已经细化到适当的层次,则可以直接从数据流图映射出软件结构。

6. 设计数据库
对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库。

7. 制定测试计划
在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。

8. 书写文档
应该用正式的文档记录总体设计的结果,在这个阶段应该完成的文档通常有下述几种。

  • 系统说明
    主要内容包括用系统流程图描绘得系统构成方案,组册很难过系统的物理元素清单,成本/效益分析;对最佳方案的概括描述,精化的数据流图,用层次图或结构图描绘得软件结构,用IPO图或其他工具(例如,PDL语言)简要描述的各个模块的算法,模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系等。

  • 用户手册
    根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。

  • 测试计划
    包括测试策略,测试方案,预期的测试结果,测试进度计划等。

  • 详细的实现计划

  • 数据库设计结果

9. 复查和复审

最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由客户从管理角度进行复核。

软件工程--总体设计过程详解相关推荐

  1. hadoop作业初始化过程详解(源码分析第三篇)

    (一)概述 我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程.在作业到达JobTracker之后初始化之前,JobTracker会通过submit ...

  2. Hadoop学习之Mapreduce执行过程详解

    一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...

  3. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  4. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  5. JetBrains DataGrip工具配置数据库过程详解

    JetBrains DataGrip工具配置数据库过程详解 DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql.创建表.创建索引以及导出数据等. DataGrip 是 Je ...

  6. Apache+PHP配置过程详解

    Apache+PHP配置过程详解 经过两晚上的奋斗终于将Apache配置PHP成功,安装配置过程中走了不少弯路,特记录之. 1.Apache配置PHP个人认为首先要注意的是Apache和PHP的版本信 ...

  7. Mysql加锁过程详解(3)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  8. 理论经典:TCP协议的3次握手与4次挥手过程详解

    理论经典:TCP协议的3次握手与4次挥手过程详解 https://blog.csdn.net/omnispace/article/details/52701752 转载于:https://www.cn ...

  9. python画动图-Python绘制动态水球图过程详解

    先来看看绘制的动态水球图: 没有安装PyEcharts的,先安装PyEcharts: # 安装pyecharts模块,直接安装就是最新的版本pip install pyecharts 安装好PyEch ...

最新文章

  1. Move to Another Changelist
  2. html 和jsp 引入jquery_不用jsp怎么实现前后端交互?给萌新后端的ajax教程(1)
  3. 欢乐纪中A组周六赛【2019.4.13】
  4. 使用Flyway在Java EE中进行数据库迁移
  5. SQLite学习手册
  6. PHP 文件与目录操作
  7. iis php日志查看工具,教你如何查看IIS日志
  8. 数组循环移动 空间复杂度O(1)
  9. 18.布隆过滤器的实现及应用
  10. 京东商品评论的文本主题分析
  11. mysql case when in_MySQL case when 使用
  12. #web前端技术使用总结
  13. 大数据处理系统,分布式存储系统和分布式计算框架介绍
  14. 11.03 CSS的基本使用
  15. 他忽悠了马云 10 个亿,10 年后还给马云 4500 亿
  16. SSL_read: Failure in SSL library (protocol error?)
  17. [ioredis] Unhandled error event: Error: connect ETIMEDOUT报错的解决办法
  18. linux hudson svn,Hudson Maven SVN快速搭建持续集成环境
  19. 论文阅读笔记 | 目标检测算法——SAPD算法
  20. 学习java核心技术第3章的读书笔记

热门文章

  1. 什么是DOM(个人理解)
  2. 安卓10源码开发定制(29)手电筒控制源码分析
  3. w ndows正常启动,正常运行WNDOWS所需的文件已被替换成无法识别的版本.要保持系统的稳定,必须还原这些文件的原有版本.doc...
  4. 高压电控产品电气设计入门与进阶(下)
  5. 1.2 webstorm设置pug自动编译
  6. Flutter 十六进制颜色转换
  7. Snipaste——一款强大又实用的截图工具
  8. 使用Python3采集小说网站
  9. windows server ----域(D)的创建
  10. 1.Windows server 2022 AD域的安装与如何加入域中