码,还要包括对这部分架构进行测试的代码,以保证获得高质量的、满足各种功
能和非功能质量属性要求的架构。除了完成概念、模型设计外,软件架构师一定
要参与实际的编码、测试和调试,做一位真正的
hands-on practitioner,这已经成
为了敏捷软件工程所倡导的主流文化。
两个架构
我们在日常的软件产品和系统开发中,实际上会遇到两种、两个部分的软件
架构,即待开发的应用部分的软件架构(简称
“应用架构”),以及既有的基础
平台部分的软件架构(简称
“基础架构”)。这两部分架构之间是互为依赖、相辅
相成的关系,它们共同组成了整个软件产品和系统的架构。
基础架构的例子包括:
.NET 和 J2EE 等主流的基础平台和各种公共应用框
架,由基础库
API、对象模型、事件模型、各种开发和应用的扩展规则等内容组成
我们只有熟悉基础架构的构造细节、应用机理,才能有效地开发出高质量、高性
能的上层应用。然而,开发一个面向最终用户的软件应用系统和产品,仅仅掌握
一般的计算机高级编程语言知识和基础平台架构、
API 的使用知识显然是不够的
我们还需要根据客户应用的类型和特点,在基础架构之上,设计出符合用户要
求的高质量应用软件。
熟悉
OOA、OOD 抽象建模技术、设计原则以及架构模式和设计模式等等方
法技术,不但有助于我们更好地理解和利用基础平台架构,也有助于我们设计
开发出更高质量的应用软件架构。
风险驱动、敏捷迭代的架构设计与开发
软件架构将随着软件产品和系统的生命周期而演化,其生命期往往超过了
一个项目、一次发布,甚至有可能长达数年之久,因而软件架构无论对于客户还
是开发商来说都是一项极其重要的资产。
软件架构的设计应该遵循什么样的开发过程?或者说,有没有更好的、成熟