http://blog.youkuaiyun.com/sunwill_chen/article/details/7864904
笔者声明:本文讲述笔者浅薄的观点,意在抛砖引玉,望网友一起发表观点共同切磋。
目前网络上的概要设计格式繁多,质量也是参差不齐,许多人更是为了设计而设计,模板找来套一套填一填,写出来的设计文档只能当欣赏用,也有许多人分不清概要设计和详细设计的区别。对于比较没有设计经验的人在网络上搜索范本时可能会很迷惘,到底哪个才是好的概要设计模式?其实当这个时候你只要问自己两个问题便可以判断出这是不是一个好的设计文档:我想要从概要设计中获取哪些东西?它讲清楚了吗?
首先我想说下我对概要设计和详细设计的理解。概要设计的依据应该是需求说明书,从需求演化为设计,意在使读者能理解整个系统框架和系统功能。而详细设计的依据则是概要设计,针对概要设计中划分的各个模块如何实现他们的功能进行设计。也就是说概要设计描述的是框架性的东西,它告诉你这是个什么系统,这个系统都哪些功能,实现过程中要遵循哪些约定;而详细设计则告诉你这个系统的每个功能以什么样的方式来实现。从测试角度来讲,可以根据概要设计制定黑盒测试用例(功能测试),根据详细设计制定白盒测试用例(单元测试)。
现在我们开始来考虑如何进行概要设计:
一、 明确概要设计要传达的信息;
1) 系统的外部框架
将本系统当成一个黑盒,这是一个什么系统,这个系统有哪些功能,其与其他哪些系统(模块)有关系,之间的接口是什么?
(好比建一栋房子你必须先知道房子要干什么用,位于哪里,房子周边都有哪些相关的事物?)
2) 系统的内部框架
将本系统当成一个白盒,其内部具有哪些模块,每个模块实现哪些功能,各个模块之间关系是什么,各个模块之间的接口是什么?
(好比确定房子格局要几层楼,几房几厅几卫,接口就好比楼梯、门、过道)
3) 程序运行设计(主流程)
各个模块之间如何配合完成系统的功能。
4) 系统环境
系统的开发环境是什么,运行环境是什么?
5) 相关约定
系统开发过程遵循哪些约定?
6) 数据库设计
使用哪种数据库,都有哪些数据项,这些数据项的关系如何?
7) 维护计划
该系统的维护会有哪些约定,比如修订记录位置、版本规范等。
二、 如何有效描述要传达的信息;
1) 采用框架图来辅助描述系统框架
图标描述系统框架式最有效的方式,你说的再多再详细都没有一个图直观和清晰。
如下就是一个结构图例子,
2) 采用流程图来辅助描述程序运行设计
采用图标来描述程序运行流程是很有效果的,一个好的流程图能让读者对程序运行一目了然。如下是一个流程图例子,
3) 站在读者的角度将所有需要传达的信息描述清楚。