软件架构I:基础概念

本书讨论如下内容:

  • 架构模式:许多架构决策的技术基础。
  • 组件:识别、耦合、内聚、分区和粒度。
  • 软技能:有效的团队管理、会议、谈判、演示等。
  • 现代性:在过去几年中发生了根本性变化的工程实践和操作方法。
  • 架构作为一门工程学科:可重复的结果、指标和具体的评估为软件体系结构增加了严格性。

"软件架构师"职位出现在众多最佳职位列表的顶部。但却没有科学的方法教授如何成为架构师的原因?

  • 首先,业界对软件架构本身没有很好的定义。
  • 第二,软件架构师的角色的职责范围不断地扩大。
  • 第三,由于快速发展的软件开发生态系统,软件架构的目标不断发生变化。
  • 第四,关于软件架构的许多材料都已成为过去时。

软件架构由系统的结构(表示支持架构的粗黑线)和系统必须支持的架构特征(``-ilities'')、架构决策以及最终的设计原则组成。

软件架构组成

系统的结构是指系统所实现的架构样式的类型(如微服务,分层或微内核)。 仅通过结构来描述架构并不能完全阐明架构。

系统的结构

架构特征是定义软件架构的另一个维度。 架构特征定义了系统的成功标准,该标准通常与系统的功能正交。 请注意,列出的所有特征都不需要了解系统功能,但是它们是使系统正常运行所必需的。

架构特征

架构决策定义了应如何构建系统的规则。

架构决策

如果由于某种条件或其他约束而无法在系统的某个部分中实施特定的体系结构决策,则可以通过称为方差的方法打破该决策(或规则)。 大多数组织都有架构审查委员会(ARB)或首席架构师使用的差异模型。 这些模型将寻求与特定标准或架构决策的差异的过程形式化。 ARB将分析特定架构决策的例外情况(如果没有ARB,则由首席架构师进行分析),并根据理由和权衡取舍批准或拒绝该例外情况。

设计原则与体系结构决定的不同之处在于,设计原则是一种准则,而不是一成不变的规则。

与给定的角色,职务或职位描述无关,对软件架构师有八项核心期望

  • 制定架构决策
    期望架构师定义用于指导团队、部门或整个企业的技术决策的架构决策和设计原则。
  • 持续分析架构
    期望架构师不断分析架构和当前技术环境,然后提出改进建议。
  • 紧跟最新趋势
    希望建筑师能够了解最新的技术和行业趋势。
  • 确保遵守决定
    期望架构师确保遵守架构决策和设计原则。
  • 多样的曝光和经验
    架构师应具有多种多样的技术、框架、平台和环境。
  • 具有业务领域知识
    架构师应具备一定水平的业务领域专业知识。
  • 具有人际交往能力
    建筑师应具备出色的人际交往能力,包括团队合作、促进和领导才能。
  • 了解和驾驭政治
    期望架构师了解企业的政治氛围并能够驾驭政治。
image.png

架构交叉点

  • 工程实践
    传统上,软件体系结构与用于创建软件的开发过程是分开的。 存在数十种流行的方法来构建软件,包括瀑布式和许多敏捷的风格(例如Scrum方法、极限编程、精益和Crystal方法),这些方法大部分不会影响软件体系结构。
  • 运维/DevOps
    由于对架构公认的一些重新思考,DevOps的出现是架构与相关领域之间最近最明显的交集。 多年以来,许多公司都将运维视为与软件开发分开的功能。 他们通常将运维外包给另一家公司以节省成本。 在1990年代和2000年代设计的许多架构都假定架构师无法控制运维,并且围绕该限制进行防御性的构建。
  • 流程
    另一个公理是,软件架构通常与软件开发过程正交。构建软件(过程)的方式对软件架构(结构)的影响很小。因此,尽管团队使用的软件开发过程对软件架构有一定影响(特别是在工程实践方面),但从历史上看,它们大多是分开的。大多数有关软件架构的书都忽略了软件开发过程,对可预测性等问题做出了虚假的假设。但是,团队开发软件的过程会影响软件架构的许多方面。例如,由于软件的性质,在过去的几十年中,许多公司都采用了敏捷开发方法。敏捷项目中的架构师可以进行迭代开发,因此可以更快地反馈决策。反过来,这使架构师可以更加积极地进行实验以及依赖反馈的其他知识。
  • 数据
    应用程序开发中有很大一部分包括外部数据存储,通常是关系数据库(或越来越多的NoSQL)。 但是,许多有关软件架构的书都只包含对架构这一重要方面的简要介绍。 代码和数据具有共生关系:没有其他代码,一个代码就无用。

软件架构法则

软件体系结构中的所有内容都是一个折衷方案。 ——软件架构第一定律
为什么比如何更重要。 ——软件架构第二定律

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容