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

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

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

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

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

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

转载于:https://www.cnblogs.com/seaskycheng/archive/2009/11/30/1613396.html

何谓成功的软件架构设计相关推荐

  1. 《软件架构设计》一书目录

    第一部分  软件架构概念与思想篇 1 第1章  解析软件架构概念 3 1.1  软件架构概念的分类 3 1.1.1  组成派 4 1.1.2  决策派 5 1.2  软件架构概念大观 5 1.2.1  ...

  2. 软件架构设计 温昱著 - 读书笔记

    #读后感#一本实用性很强的架构入门书籍.内容有深有浅,涉及面广,帮我们树立一个架构设计的全局观.  本书已读完,把读后感放在最前面,以下是详细的读书笔记. #读书笔记# 我们将软件架构概念分为两大流派 ...

  3. 《软件架构设计》读书笔记

    前言 春节前后花了将近两个月时间才把<软件架构设计>一书看完.此书紧紧围绕"软件架构设计"这一主题,非常系统地解析了软件架构的概念,阐述了切实可行的软件架构设计方法,给 ...

  4. 转:如何进行软件架构设计?

    上次有幸给大家介绍了软件架构设计的"七种武器",对于这"七种武器"的修炼是一个漫长的过程,除了需要不断的学习理论.原理之外,还要不断的在软件架 构设计的工作中去 ...

  5. 软件架构设计_给非专业人士介绍——软件架构设计工作

    软件架构设计 架构设计是高层设计,是设计决策之上的决策.它为决策引入的额外的约束,这种约束不产生立即可见的效果. 用一个例子来辅助我们的表述.比如你买了一间新房子,有5个房间,你的床放哪里?书柜放哪里 ...

  6. SoC嵌入式软件架构设计之二:虚拟内存管理原理、MMU硬件设计及代码分块管理...

    程序的大部分代码都可以在必要的时候才加载到内存去执行,运行完后可以被直接丢弃或者被其他代码覆盖.我们PC上同时跑着很多的应用程序,每个应用程序使用的虚拟地址空间几乎可以整个线性地址空间(除了部分留给操 ...

  7. 软件架构(5)---软件架构设计的一些总结和理解

    1. 软件架构设计的What & Why ● 啥是软件架构(Software Architecture)? 软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成 ...

  8. SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法

    大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其他代码.我们PC然在同一时间大量的应用,能够整个线性地址空间(除了部分留给操作系统或者预留它用),能够觉得每一个应用程序 ...

  9. 读书笔记 之《软件架构设计: 大型网站技术架构与业务架构融合之道》

    大家好呀,我是小菜~ 帅哥美女,知道你们时间宝贵,那么就由小菜为你读好一本书,读一本好书,取其精华,与你共享~! 本文主要分享 <软件架构设计:大型网站技术架构与业务架构融合之道> 如有需 ...

最新文章

  1. Java判断工作日计算,计算随意2个日期内的工作日
  2. 1081 Rational Sum (20 分)_22行代码AC
  3. 方法重写(重点)-->多态
  4. 重磅盘点!过去一年里最受欢迎的技术干货,全在这里了
  5. Python分析《我们与恶的距离》豆瓣剧评
  6. Makingware调用静态块,实现自定义html内容的常用方法(不需要修改模版部分)...
  7. 洛谷 P1187 3D模型
  8. 关于appium中的Multiaction的用法
  9. [Swift]LeetCode227. 基本计算器 II | Basic Calculator II
  10. AS3 的 2D向量类(Vector2D)
  11. axure rp编辑html模板,AxureRP教程—用模板封装UI标准
  12. Cipher文件加密
  13. 办公室局域网组建计算机网络,如何组建办公室局域网
  14. 架构图解_图解 Docker 架构
  15. SQLyog安装包下载(64位和32位的都有)
  16. Logstash 时区问题
  17. 薅羊毛拼团商城2.5.3小程序源码
  18. html5 audio js控制进度,HTML5多媒体的之audio和video。JavaScript控制进度条播放进度
  19. 2022年茶艺师(初级)考试题模拟考试题库及模拟考试
  20. 验证ssh免密登录_ssh无密码登录认证失败

热门文章

  1. c++ primer 第14章 习题解答
  2. C 库函数 - atoi()
  3. react 判断图片是否加载完成_如何判断图片(img)是否已经加载成功--基于react...
  4. GCC __builtin_expect与kernel指令序列优化
  5. 世界java大神有哪些_JAVA基础复习1:开始Java世界的第一个程序
  6. 美丽的窗花java分形_美丽的窗花教案
  7. winCVS 使用方法
  8. 怎么把PPT变成word文档
  9. 固定收益证券(fixed income)
  10. 【经典问题】maximum subset sum of vectors