构架思考(3)-构架的原则
在讨论这些原则之前,我们先讨论一下什么是构架需求,我们都知道有系统需求,那么系统需求和构架需求之间有什么联系和差别,什么是构架需求。根据RUP的定义:
A requirement describes a condition or capability to which a system must conform; either derived directly from user needs, or stated in a contract, standard, specification, or other formally imposed document.
构架需求指的是指对构架层次上有重要意义的需求,任何高风险,高优先级别和不稳定的需求都可以看成是对构架有重要意义的需求。在《Capturing Architectural Requirements》一文中对什么是构架需求和如何捕获构架需求进行了一个详细的描述,这里就不多加说明了。关于软件质量属性的描述可以参见《软件构架实践》中质量属性一章,SEI网站上的ATA方面的文章论述了如何将用户需求归纳整理为不同的质量属性,更为明确的路径是用户需求->构架需求->质量属性。归纳的目的是希望能够有更为一致的方法来进行构架设计的指导,同样在《软件构架实践》中的单元操作一章说明了不同的操作是如何的影响构架最终对不同的质量属性的满足程度。
我一直认为构架的原则就是在构架需求上整理总结出来的对系统的质量属性要求,包括技术上的要求和一些商业上的要求。这些的要求最终影响构架的设计。
另外一个需要进行讨论的是构架原则的表述,在描述系统需求的时候,我们经常会看到这样的话:“系统要求有良好的可扩展性和可更改性。”,包括在一些电子政务的需求说明书中也是这样。基本上来说,这句话说了等于没说,谁也不知道到底什么才算是良好可扩展性。在构架原则描述中有很多的时候就会涉及到诸如这中可扩展性等的质量属性问题,我个人认为在描述一个构架原则的时候必须包含以下的部分:原则的名称,选择该原则的原因说明,重新描述过的归属于该原则的构架需求。