关键需求决定架构

软件架构师没有时间对‘所有需求’进行深入分析,这既是策略,也是现实。

 

需求是任何促成设计决策的因素,但是很少有开发者可以拥有一个稳定的需求集,所以,关键的第一步就是要缩小范围,范围的标准是具有重要性、可能性并且数量要少。

 

从需求转向架构的过程中,存在的几个问题:

  1. 抱怨留给架构的时间太短,而不是接受项目节奏普遍加快的现实。一般来说,新的商业应用的开发周期最多不能超过9个月。
  2. 认为必须详细分析所有的需求,只有这样才能设计出满足所有需求的软件架构。我们采取的策略是:在架构设计期间,关键需求决定架构,其余需求验证架构。
  3. 认为软件架构必须是完美的技术解决方案。实际上,由于时间紧张,架构并不是要求完美,而是要求够用。

 

关键需求决定架构的必要性和影响

  1. 把所有需求确定后再进行架构设计往往是不现实的。
  2. 由于项目工期一般不是由开发方来确定,所以时间上也是有限制的。
  3. 可以用有限的精力深入分析最重要的需求。
  4. 需求的变更可能会引起架构设计不再合适,因此,我们可以通过所有需求的一个子集来‘驱动’我们的架构决策过程,可以减少需求对架构设计带来的冲击,使架构设计趋于稳定。

 

什么是软件架构的关键需求?

一般可以从功能需求、质量需求和商业需求三方面来进行分类。

 

任何功能需求,都是由一条特定的‘模块协作链’完成的。所谓图案件架构就是关于如何构建软件的一些重要决策,这些决策往往是围绕着将系统分为哪些部分、各部分之间如何交互展开的。所以对软件架构关键的功能需求,就是它涉及的模块最多、最典型的功能需求。

 

要达到高质量属性的要求,是有成本的,而且不同的质量属性之间往往具有相互制约性,使得有些质量属性需求同时达到高要求比较困难。对架构至关重要的质量需求是那些经过权衡取舍、最终决定重点支持的质量属性需求。

 

商业需求也称业务需求,一般情况下,商业需求是指“组织或客户高层次的目标”,它关注从客户群、企业现状、未来发展、预算、立项、开发、运营、维护在内的整个软件生命周期涉及到的商业因素,包括了商业层面的目标、期望和限制。

 

如何确定对软件架构关键的需求

可以分为4步:1. 全面整理需求;2. 分析约束性需求;3. 确定关键功能需求;4. 确定关键质量属性需求。

 

全面整理需求后,可以对需求建立通盘认识。因为大多数情况下需求文档未必有软件架构师所需要的所有信息,例如质量需求一般在需求文档中一带而过,这样,架构师只有通盘理解需求后,才能将缺失的、隐藏的需求找出来。

 

约束性需求可以通过3种方式影响架构设计:1. 直接制约设计决策;2. 转化为功能需求;3. 转化为质量属性需求。

 

如何去定关键功能需求

  1. 作为应用程序的核心或实现了系统的主要接口的功能。
  2. 必须被实现的功能。
  3. 覆盖了系统架构的一些方面,但没有被其他重要的用例覆盖到的功能。主要是确保解决了所有的技术风险。

 

确定关键质量属性需求

  1. 考虑为了提高开发的软件系统受认可的程度,应着重提高哪些方面的质量属性要求。
  2. 充分考虑这些质量属性的相互制约或相互促进关系,以调整不同质量属性的要求标准。
  3. 必须满足各种约束性需求。

 

posted @ 2008-08-06 17:26  李潘  阅读(1751)  评论(0编辑  收藏  举报