所谓成功的架构设计,就是设计出的软件架构是高质量的,并且在所花费的时间、技术决策等方面也都满足具体开发情况的要求。
好的软件架构应当具有如下品质:
- 良好的模块化。每个模块职责明晰,模块之间松耦合,模块内部高聚合并合理地实现了信息隐藏;
- 适应功能需求的变化,适应技术的变化。典型地,应该保持应用相关模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块相分离,从而达到"隔离变化"的效果;
- 对系统的动态运行有良好的规划。标识出哪些是主动模块,哪些是被动模块--面向对象中往往是主动类和被动类,明确这些模块之间的调用关系和加锁策略,并说明关键的进程、线程、排队、消息等机制;
- 对数据的良好规划。不仅应包括数据的持久化存储方案、还可能包括数据传递、数据复制和数据同步等策略;
- 明确、灵活的部署规划。还往往涉及到可移植性、可伸缩性、持续可用性和互操作性等大型企业软件特别关注的质量属性的架构策略。
面对时间紧迫的压力,我们有理由置疑那种不顾时间花销、一味追求软件架构高质量的作法。软件架构是软件系统质量的核心,必须足够重视,但在不适当的时候"用时间换完美"会毁掉整个项目。我们可以反过来思考这个问题:之所以要在绝大部分技术细节都不清楚的情况下定义出软件架构,除了可以对性能、稳定性等系统整体质量属性进行综合考虑以外,还有非常重要的一点就是要搭建一个团队协作开发的基础,主不同小组分头对不同的系统模块深入下去,团队并行工作最终意味着缩短了项目工期。对此,Philippe Kruchten曾一针见血地指出:"时间就是系统架构设计的生命。"
同时,架构设计并非"好的就是成功的",而是"适合的才是成功的"。在架构设计过程中,架构师没有绝对的技术选择的自由,而是要充分考虑经济性、技术复杂性、发展趋势和团队水平等多方面的因素,制定出合适的架构决策。最终,软件架构师的工作成果要为整个软件开发团队的工作提供足够的指导和限制,使他们能够沿着正确的方向进行下去。
——摘自温昱的《软件架构设计》第7章"如何进行成功的架构设计"第7.1节"何谓成功的软件架构设计"
出自:http://www.cnblogs.com/seaskycheng/archive/2009/11/30/1613396.html
相关推荐
通过这样的培训,未来的微软软件架构师不仅能够精通技术,还能在复杂的企业环境中发挥领导作用,推动技术创新,确保项目的成功实施。这个过程既需要扎实的技术功底,也需要不断的学习和实践经验积累。对于有志于成为...
以MySQL数据库的基础及维护为切入点,重点介绍了MySQL数据库应用系统的性能调优,以及高可用可扩展的架构设计。 ●基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识 ●性能优化...
追寻软件架构大师设计思路,高屋建瓴,廓清Framework设计要义。 告诉您何谓Framework,VCL是一种什么样的Framework,未来 VCL Framework将走向何方。它是Delphi程序员不可不读的一部大书。 <br>☆剖析VCL之...
追寻软件架构大师设计思路,高屋建瓴,廓清Framework设计要义。 告诉您何谓Framework,VCL是一种什么样的Framework,未来 VCL Framework将走向何方。它是Delphi程序员不可不读的一部大书。 <br>☆剖析VCL之...
追寻软件架构大师设计思路,高屋建瓴,廓清Framework设计要义。 告诉您何谓Framework,VCL是一种什么样的Framework,未来 VCL Framework将走向何方。它是Delphi程序员不可不读的一部大书。 <br>☆剖析VCL之...
13.3 性能测试工具的体系架构 64 13.4 虚拟用户产生器 Vugen 65 13.5 Proxy 二次捕获的问题 67 13.6 关联的问题 68 13.7 脚本的问题 70 13.8 Conductor 和 Player 部分 71 13.9 Conductor 和 Player 的技术...
- **设计变更**:有时,某些设计上的改动很难仅仅通过重构来实现,可能需要重新考虑整个架构。 ### 结论 重构是软件开发中不可或缺的一部分,它不仅能提高代码的质量,还能加速开发进程。通过遵循最佳实践和使用...
13.3 性能测试工具的体系架构 64 13.4 虚拟用户产生器 Vugen 65 13.5 Proxy 二次捕获的问题 67 13.6 关联的问题 68 13.7 脚本的问题 70 13.8 Conductor 和 Player 部分 71 13.9 Conductor 和 Player 的技术...
追寻软件架构大师设计思路,高屋建瓴,廓清Framework设计要义。告诉您何谓Framework,VCL是一种什么样的Framework,未来VCL Framework将走向何方。它是Delphi程序员不可不读的一部大书。• 剖析VCL之精妙大架构...
这些瓶颈可能出现在多个层面,包括但不限于硬件配置、软件架构、数据库设计以及网络传输等方面。 **确定性能瓶颈** 一旦识别出潜在的瓶颈,就需要进一步分析这些瓶颈对系统性能的影响程度,并确定哪些是最关键的...
云电脑的核心在于其独特的架构设计,主要包括以下几个方面: - **服务器端系统虚拟机**:这是云电脑的基础,由强大的服务器硬件支持,能够根据用户需求分配虚拟化的计算资源。 - **客户端访问**:任何可以联网并且...
- **定义**:应用框架是一种软件架构,它提供了一套预定义的规则和结构,用于构建应用程序。在Android中,这种框架主要由Java和Kotlin编写,包括各种类库和服务。 - **作用**:简化开发过程,提高代码复用率,并帮助...