理顺软件开发各个环节-10(开发管理-总体设计-1)
5.3软件需求分析
参见需求管理关于软件需求分析的章节,此处不再赘述。
5.4软件总体设计
总体设计,又称为系统设计,其包括架构设计,是软件系统的顶层设计,是软件开发不可逾越的阶段。
总体设计最能体现分析人员的水平,不仅需要良好的综合能力,从总体上把握需求,还需要较宽广的知识面,对流行的架构、插件和组件技术、数据库等能熟知优劣,从而设计出符合软件需求的设计方案。
满足软件需求的设计方案肯定不止一种,但我认为好的设计方案应满足:
- 满足目前已知的需求;
- 具有良好的扩展灵活性;
- 符合技术发展趋势。
5.4.1软件总体设计节点关键信息
责任人:开发项目经理。
执行人:系统分析员、高级程序员或架构师。
关键行为:分析和沟通。
- 分析:对软件需求进行分析,完整把握需求;
- 总体设计:结合团队的技术栈,满足需求集合,有前瞻性;
- 必要时,开发原型来验证设计思想。
输入:
- 产品需求规格书;
- 软件需求规格书(SRS);
- 数据字典(DD);
- UI&UE交互设计原型(如果有);
- 用户故事集合;
- 其它需求资料。
输出:
- 软件产品总体设计文档;
- 系统结构设计(架构设计);
- 子系统/功能模块设计;
- 接口设计;
- UI&UE设计;
- 数据库设计;
- 通信协议设计(如有需求)。
职责要求:
- 完整地分析软件需求;
- 总体设计;
- 尽量基于目前已知需求的最大集合,提高设计方案的扩展灵活性;
- 把握成熟技术与新技术之间的平衡;
- 对性能需求和质量属性有敏感性,系统架构能适应非功能需求;
- 关键技术,必要时,开发原型来验证设计思想;
- 提请软件总体设计评审:
- 系统设计人员:主讲人,负责讲解和答复各种质询和疑问;
- 产品经理:评估产品需求是否被设计的系统完整地满足;包括后期的需求的满足性;非功能需求的支持情况;
- 项目经理:了解有哪些子系统,是否需要跨部门协作;
- 开发项目经理及高级技术人员:关注技术方案的可行性、灵活性;非功能需求的支持情况;
- 开发技术人员:了解软件的设计思路,便于开发实现;
- 测试技术人员:了解软件的设计思路,以及其对测试的影响;
- 运维人员:评审软件部署方案的可行性。