何谓成功的软件架构设计

       所谓成功的架构设计,就是设计出的软件架构是高质量的,并且在所花费的时间、技术决策等方面也都满足具体开发情况的要求。

好的软件架构应当具有如下品质:

        1. 良好的模块化。每个模块职责明晰,模块之间松耦合,模块内部高聚合并合理地实现了信息隐藏;
        2. 适应功能需求的变化,适应技术的变化。典型地,应该保持应用相关模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块相分离,从而达到"隔离变化"的效果;
        3. 对系统的动态运行有良好的规划。标识出哪些是主动模块,哪些是被动模块--面向对象中往往是主动类和被动类,明确这些模块之间的调用关系和加锁策略,并说明关键的进程、线程、排队、消息等机制;
        4. 对数据的良好规划。不仅应包括数据的持久化存储方案、还可能包括数据传递、数据复制和数据同步等策略;
        5. 明确、灵活的部署规划。还往往涉及到可移植性、可伸缩性、持续可用性和互操作性等大型企业软件特别关注的质量属性的架构策略。

       面对时间紧迫的压力,我们有理由置疑那种不顾时间花销、一味追求软件架构高质量的作法。软件架构是软件系统质量的核心,必须足够重视,但在不适当的时候"用时间换完美"会毁掉整个项目。我们可以反过来思考这个问题:之所以要在绝大部分技术细节都不清楚的情况下定义出软件架构,除了可以对性能、稳定性等系统整体质量属性进行综合考虑以外,还有非常重要的一点就是要搭建一个团队协作开发的基础,主不同小组分头对不同的系统模块深入下去,团队并行工作最终意味着缩短了项目工期。对此,Philippe Kruchten曾一针见血地指出:"时间就是系统架构设计的生命。"

        同时,架构设计并非"好的就是成功的",而是"适合的才是成功的"。在架构设计过程中,架构师没有绝对的技术选择的自由,而是要充分考虑经济性、技术复杂性、发展趋势和团队水平等多方面的因素,制定出合适的架构决策。最终,软件架构师的工作成果要为整个软件开发团队的工作提供足够的指导和限制,使他们能够沿着正确的方向进行下去。

——摘自温昱的《软件架构设计》第7章"如何进行成功的架构设计"第7.1节"何谓成功的软件架构设计"

出自:http://www.cnblogs.com/seaskycheng/archive/2009/11/30/1613396.html

猜你喜欢

转载自lobo12.iteye.com/blog/1944943