知识卡片
架构实践中的四大威胁及应对策略
内容
好的架构设计本身并不保证软件项目一定成功,因为即使架构设计得再好,实际执行过程中也会遇到各种困难。书中总结了四类主要威胁。产品线一致性威胁:越来越多公司注重产品线开发,产品线架构要在具体产品架构之前完成,单个产品的架构设计要遵循整个产品线架构并引入个性化设计——这导致产品线架构的维护异常困难,对产品线架构的任何改动都可能牵动产品线上大量具体产品架构同步变化,这是一个规模效应带来的巨大威胁。大规模软件架构腐蚀威胁:大规模软件结构复杂、架构本身往往也被设计得很复杂,但真正的问题更多出现在维护阶段——随着不断维护,架构经历不断修改,逐渐变得混乱;对于大规模系统的复杂架构,腐蚀会更加严重,在不断修改中失去架构的可理解性、以及架构与代码之间清晰的对应关系。大团队开发中的架构一致性威胁:架构是团队开发的基础,需要整个开发团队对架构有充分准确的理解才能保障项目顺利推进,但大规模项目往往需要大团队协作、团队可能分布在不同地区,沟通效果得不到保障时,无法确保整个团队对架构有相同的理解。旧产品软件架构缺失威胁:企业接受”重视架构”这件事本身有一个过程,未必所有旧产品在开发之初都得到了架构层面的足够重视,但到了维护阶段架构的重要性开始凸显——这里分两种情形:原本开发过程中就没有架构,此时需要提取架构;或者开发中的架构信息因故未能及时维护,此时需要修正架构;无论哪种情形,只要产品仍需要维护,其架构问题迟早都要解决,这是企业无法回避的历史遗留问题。书中把这四类威胁背后的根本原因归纳为三点:架构方案对系统灵活性与可维护性考虑不足、缺少来自架构的足够指导与限制、历史遗留问题。应对策略上,书中提倡以”实用主义”为指导,充分认识威胁带来的风险、有针对性地做出决策——Fairbanks等人提出的风险驱动架构开发模型正是这一思路的代表;对具体威胁,本书第9章的软件演化技术、第10章的架构恢复技术都能提供直接帮助;而针对大团队一致性这类”人”的问题,则需要从制度和技术两方面同时着手,采取一系列促进沟通、验证沟通效果的活动,来保障整个开发团队对架构的充分理解。