需求分析

对于架构师来说,需求分类、需求折中以及需求变更是日常工作中遇到的最平常的事情。

 

什么是软件需求?

需求描述了系统必须满足的情况或提供的能力,它就可以是直接来自客户需要,也可以来自合同、标准、规范或者其他有正规约束力的文档。

 

需求捕获:获取知识的过程,知识从无到有、从小到多。需求采集者必须理解用户所从事的工作,并且了解用户和客户希望软件系统在哪些方面帮助他们。需求捕获最终会产生一系列的需求采集卡,其中记录了需求类型、需求描述、需求背景、需求提出者以及需求记录者等相关信息。

 

需求分析:挖掘和整理知识的过程。它在已掌握知识的基础上进行。需求分析最终会产生一份需求规格说明书(SRS),它精确描述了系统必须提供的功能,必须达到的质量属性以及它必须遵守的约束。

 

系统分析:针对系统所面临的问题,搜集相关资料,以了解产生问题的原因所在,进而提出解决问题的方法与可行的逻辑方案,以满足系统的需求,实现预定的目标。系统分析最终会产生一个系统设计文档。

 

需求分析关注‘做什么’的问题;系统分析关注‘怎么做’的问题。

 

架构师必须掌握的需求知识

软件需求的分类:软件需求可以分为功能性需求和非功能性需求两类;其中非功能性需求分为质量属性和约束两种;质量属性分为开发期质量属性和运行期质量属性。

 

功能性需求描述了开发的软件系统应该做什么,可以通过‘软件系统应提供什么服务’来进行定义。

 

约束规定了开发软件系统时必须遵守的限制条件。

 

McCall1977年对软件的质量属性做以下分类:

1.       产品操作:正确性、可靠性、效率、完整性、易用性

2.       产品修改:可维护性、灵活性、可测试性

3.       产品改型:可移植性、可重用性、互操作性

 

如果将质量属性分为运行时质量属性和开发期质量属性,可以进行如下分类:

1.       运行时质量属性:性能、安全性、易用性、持续可用性、可伸缩性、互操作性、可靠性、鲁棒性

2.       开发期质量属性:易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性

 

各类需求对软件架构的影响

功能需求影响架构,但不决定架构。质量属性从根本上影响架构。

 

面对频繁的需求变更,应该如何面对?

需求变更的来源

1.       我们要解决的问题发生了变化

2.       我们对问题的理解发生了变化

3.       我们理解问题的过程有错误

 

对于一个软件系统来说,质量属性需求是最小可能发生变化的;其次是各种约束;最容易发生变化的是各种功能需求。

 

 

参考文献

《软件架构设计》  温昱

posted @ 2008-07-20 23:42  李潘  阅读(918)  评论(3编辑  收藏  举报