需求与设计的界线
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
需求分析与设计是软件开发过程中两个核心环节,它们之间存在着密切的关系和一定的差异。教科书上通常将二者区分为需求关注“做什么”,而设计关注“如何做”。然而,这种说法并不精确,因为需求分析的结果不仅涉及系统的功能(即“做什么”),也可能部分涉及实现方法(即“如何做”)的高层次描述。
客户在提出系统需求时,可能会对实现方式提出一定的约束条件,如采用特定的架构或中间件,这些在需求描述文档中通常被称为“设计约束”。开发人员在进行需求分析后会对系统构成元素进行分解,绘制数据流程图或类图等,实质上也在定义系统的实现方式,但这些描述应该是客户容易理解的。
需求分析包括多个方面:
- 系统的目标、范围以及与外部的接口
- 系统的功能、操作流程、处理规则
- 系统处理的数据属性和数据间关系
- 系统的子系统与模块划分
- 系统的设计约束和运行环境
需求中也包括子系统或模块之间的接口关系,这通常和设计有交集。从功能角度进行的系统分解是逻辑分类,而设计时的系统拆分则是从实现角度出发,比如将系统分为界面层、中间层、数据层。
在需求分析中避免具体描述实现细节是为了不对设计方案做出过多限制,以便有更多的设计选择余地。设计是一种决策和选择行为,一旦需求确定,可能存在多种解决方案。如果需求中过于具体地描述了实现方式,则可能限制设计只能选择特定的方案,而非最优解。
客户提出“做什么”,由系统分析人员进行文档化;而“如何做”则由开发人员确定并记录。这两个过程在实际中是迭代进行,相互交织的。项目立项前的可行性分析涉及初步的需求与设计,而在立项后,收集客户需求、进行需求分析并考虑解决方案时,需求可能还会被修改或增加。
最终,在需求和设计之间划定一条明确界线是有难度的,但理解二者的根本区别有助于企业根据自身情况确定哪些内容应在需求中描述,哪些内容应在设计中描述。
想要了解更多内容?
麦哲思科技(北京)有限公司总经理 敏捷性能合弄模型评估师 认证的Scrum Master 认证的大规模敏捷顾问SPC CMMI高成熟度主任评估师 COSMIC MPC,IAC 成员,中国分部主席