在我看来软件体系架构师就相当于房子的大致骨架的设计师,房子的稳定性取决于架构是否稳定是否满足需求,所以软件体系架构师首先要做的就是对软件的需求进行认识和分析,因为需求对于整体构架的设计至关重要,所以软件体系架构师要在软件需求分析阶段的适当时宜尽早介入,在一些软件过程能力成熟度较低而软件项目重要性较高的软件项目团队,软件体系架构师可以在概念化阶段介入。在这一阶段软件体系架构师与软件需求人员一起将所有的需求从不同的级别分层数理列表归纳总结建立跟踪矩阵,并划分为不同的类型进行数理列表归纳总结建立影响分析表,找出不同需求类型之间的相互支持、相互制约关系的影响。
第二步是确定对架构关键的需求,软件体系架构师将所有的需求进行筛选,在深思熟虑之后做出合适的需求权衡和取舍,最终确定对软件架构其关键作用的子集,控制架构设计时需要详细分析的用例个数,找到架构的重点非功能需求。要根据需求确定架构目标(即是组成设计过程、确定使用范围并确定什么时候该结束的因素)。并且要了解架构的消费者。要确定架构是否会被其他设计师、开发人员、测试人员、业务人员或管理人员使用。确定架构受众的需求,以让架构更为成功、更有影响力。了解条件限制。了解技术限制、使用限制、和部署限制。从一开始就要了解这些限制,这样你才不会在将来遇到一些意想不到的麻烦。
第三步进行概念性架构设计,首先分析关键用例和有用例规约,运用鲁棒图(检查用例规约是否正确和完善)等方法构造系统理想化的职责模型(如分层),然后明确架构模式(如MVC),确定交互机制,形成初步的概念性架构,最后通过质量属性分析,制定出满足非功能性需求的高层设计决策,并根据这些决策对之前的工作成果进行增强、调整,以保证概念性架构体现这些设计决策。设计架构的时候还应该对应用进行一定的了解,因为了解应用在完成的时候的大概情况。这将会使架构更实际,并与具体的条件限制和决定有更密切的联系。创建应用的大概视图应该包括以下步骤:决定应用的类型。了解部署限制。确定重要的架构特点。确定相关的技术。还要确定出主要的危险区域即容易出错的区域,可以可以通过质量属性和交叉问题对危险区域进行整理。然后找出对于应用和场景很重要的质量属性。
对于架构设计过程中的用例有一系列的标准:
1.这些用例对应用部署的成功和验收非常重要。
2.能够对设计进行足够的检验。
在该过程中还应该找出关键场景包括使项目获得成功的最重要的场景,还有能突出架构特点的用例,场景也有一系列的标准:
1.这些场景是业务关键的,比其它功能具有更高的使用要求,或者具有很高的技术/工艺风险。
2.关系到功能属性和质量属性两个方面,或者具有交叉性的影响。
3.它们是最重要的场景,贯穿应用的各层(级),或者对应用整体都有重要的影响。
第四步是细化软件架构,考虑具体技术的运用,设计出实际架构。概念性架构所关注的关键设计要素、交互机制、高层设计决策与具体技术无关,而最终的软件架构设计方案必须和具体技术结合,为开发人员提供足够的指导和限制。必须从系统如何规划、如何开发、如何运行等角度揭示软件系统的结构和机制。一般分别从逻辑架构、开发架构、运行架构、物理架构、数据架构等不同架构视图进行设计。在设计的时候可以使用质量属性帮助设计。
最后,软件架构设计过程的第五步,需要验证软件架构。不管软件体系架构师有多优秀,都不能保证软件架构是完全符合要求符合标准的,所以要验证软件架构。进行验证的时候要根据架构框架来计划并整理架构测试。