大话软工笔记—工程分解
1. 设计工程概念
设计工程,是运用软件设计的理论、方法、工具,对需求功能获取的需求按照不同理论和方法进行分阶段、分层的细化,给出满足客户需求和符合软件开发要求的设计资料。
设计工程主要包括业务设计部分(概要设计和详细设计)、应用设计部分(应用设计)和技术设计部分,如下图所示。
1.1 业务设计部分
含概要设计和详细设计两个阶段,业务设计的主要工作是优化、梳理、完善业务,并在此基础上确定业务功能,成果包括设计规范、业务架构、业务功能等。
1.2 应用设计部分
将业务设计的成果转换为系统的功能,成果包括应用架构、系统机制、系统功能等。
1.3 技术设计部分
将业务和应用的设计成果转换为支持编码开发的设计资料,成果包括语言选择、基础框架、数据接口、系统部署、硬件选择、环境构建等。
2. 设计工程作用
在设计工程中,需求工程的成果被设计师进行了进一步的理解、阐释,并融入了设计师的理念、思想,开发完成的产品必须要符合设计师和设计资料的要求,它是所有相关人交流、工作、检查的共同语言和标准。
3. 工程分解阶段
软件工程的工程分解分为三个阶段:概要设计、详细设计、应用设计。
4. 工程分解1-概要设计
概要设计主要负责对系统进行以下四方面的规划:
(1)规范,从顶层设计的视角出发,确定目标、理念、主线、原则、定义、标准等。
(2)架构,基于目标对业务进行优化,确定业务架构、系统、子系统、模块等的划分。
(3)功能,基于架构对业务功能进行分类、规划,确定功能间的关系以及功能一览。
(4)数据,基于架构和功能对数据的范围、内容进行规划,确定功能间的关系以及功能一览。
概要设计完成后,形成概要设计规格书,包含架构、功能和数据三个层次的设计。
5. 工程分解2-详细设计
依据概要设计文档对架构、功能和数据层面的内容进行精细设计,形成详细设计规格书。
6. 工程分解3-应用设计
应用设计是包括业务、技术、UI、美工以及体验等诸多方面知识和技术的集合体,将概要设计和详细设计的成果与系统实现手法结合在一起,给出系统实现后的业务处理、管理控制的操作效果,以及非业务的功能设计。
7. 工程分解4-三个阶段的关系
7.1 三个阶段的重点
- 概要设计重点
从设计的角度出发对需求的定义和解释,经过一系列粗粒度的规划和设计,让后续的设计师大致了解系统的结构和操作模式。
- 详细设计的重点
描述业务涉及的实现细节、方法和函数。
- 应用设计的重点
将前面设计的内容转换为系统的表达方式。
7.2 三个阶段的协同
各个模块之间是有层次关系的,也有先后的逻辑关系。在概要设计中,还必须考虑模块的实现细节,要能够规划和确定出详细设计和应用设计的范围、深度,概要设计、详细设计和应用设计三个设计之间需要反复迭代进行。
7.3 三个阶段的价值
概要设计/详细设计,确定系统中业务方面的最高价值;应用设计确定系统中应用方面的最高价值(也可以称为体验价值)。
8. 管理设计
业务与管理分离,业务是管理的载体,管理是对业务标准执行的保证措施,因此,管理的思想、理念、原则等可以先行规划,但是具体的管理设计要在业务载体的相关设计完成之后才能进行。