在需求明确、准备开始编码之前,要做概要设计,而详细设计可能大部分公司没有做,有做的也大部分是和编码同步进行,或者在编码之后。因此,对大部分的公司来说,概要设计文档是唯一的设计文档,对后面的开发、测试、实施、维护工作起到关键性的影响。
问题的提出
- 概要设计写什么?
- 概要设计怎么做?
- 如何判断设计的模块是完整的?
- 为什么说设计阶段过于重视业务流程是个误区?
- 以需求分析文档还是以概要设计文档来评估开发工作量、指导开发计划准确?
- 结构化好还是面向对象好?
概要设计的目的
- 将 软件 系统需求转换为未来系统的设计;
- 逐步开发强壮的系统构架;
- 使设计适合于实施环境,为提高性能而进行设计;
- 结构应该被分解为模块和库。
概要设计的任务
制定规范
代码体系、接口规约、命名规则。这是项目小组今后共同作战的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式方法,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。
总体结构设计:
- 功能(加工)->模块:每个功能用那些模块实现,保证每个功能都有相应的模块来实现;
- 模块层次结构:某个角度的软件框架视图;
- 模块间的调用关系:模块间的接口的总体描述;
- 模块间的接口:传递的信息及其结构;
- 处理方式设计:满足功能和性能的算法
- 用户界面设计;
- 数据结构设计:
- 详细的数据结构:表、索引、文件;
- 算法相关逻辑数据结构及其操作;
- 上述操作的程序模块说明(在前台?在后台?用视图?用过程?······)
- 接口控制表的数据结构和使用规则
- 其他性能设计
概要设计写什么
- 结构化软件设计说明书结构(因篇幅有限和过时嫌疑,在此不作过多解释)
- 任务:目标、环境、需求、局限;
- 总体设计:处理流程、总体结构与模块、功能与模块的关系;
- 接口设计:总体说明外部用户、软、 硬件 接口;内部模块间接口(注:接口≈系统界面)
- 数据结构:逻辑结构、物理结构,与程序结构的关系;
- 模块设计:每个模块“做什么”、简要说明“怎么做”(输入、输出、处理逻辑、与其它模块的接口,与其它系统或硬件的接口),处在什么逻辑位置、物理位置;
- 运行设计:运行模块组合、控制、时间;
- 出错设计:出错信息、处错处理;
- 其他设计:保密、维护;