十多年来,我一直从事研发工作,既做过车联网、平安城市这种大系统,也做过图像处理软件、视频播放器这种小工具,虽然没有架构师之名,却也做了不少架构相关的事。近期想把这一块工作独立出来,同时为了提高认知,做一个关于架构方面的主题阅读,下面分享一下我学习中的一些书籍。

现在大家谈什么都喜欢说认知升级,本文也是从架构认知升级的思路进行,这里引用了孟岩总结的一个认知层次框

层次 名称 描述 举例
L3 认识论 从哲学上分析我们所面对的领域之内是否能够以及为什么可以产生科学的认知,我们认知的边界在哪里 黑箱认识理论
L2 方法论 能够指导我们产生科学方法的方法和思维模式 系统论和系统科学
L1 科学方法 一套具体的、一致的、系统的概念、方法和过程,重复这个过程可以产生局部的或全局的最优解 各领域内仅经过实践检验的框架、方法、流程、规则
L0 实践经验 未经审视和加工的实践经验,包含真知灼见,也包含矛盾、混乱和武断,往往将有效实践编程一种不可重复的艺术行为 各个领域的实践经验、管理艺术、领导艺术、成功学、心灵鸡汤、诸子格言等

L0/L1 软件架构实践和框架

《程序员必读之软件架构》

作者Simon Brown,译者邓钢,人民邮电出版社

工作中,团队里可能每个人都在做设计,做架构,但从来没人说过什么是架构,该如何架构,这应该是大部分团队的现状。为什么没人拿架构做为一个明确的主题去讨论,可能的原因是:架构是关于抽象和经验。你说是好的实践,好的架构,最后的落脚点还是交付、性能、可用性上。如果一个的软件满足了这些,谁又会在意出发点和过程呢?你说未来有风险,互联项目快速迭代,开发换了一波又一波,谁又能做到持续负责?在KPI文化里,没法量化的东西是不被重视的。

本书的主要价值,我认为是提出了一套轻量级的架构方案,看去不那么高大上,但是可操作性强。它对个人的帮助大于团队,有了这些方法论,可以切实解决实际的问题,比如如何画图,用草图而不是UML,用语境、容器、组件层层递进的表达;比如技术选择,从哪些方面,什么角度进行;比如预先设计,怎么判断哪些需要预先设计,哪些不需要。这些都是初识架构最纠结的地方。

本书主要介绍了以下内容:
- 软件架构的本质
- 软件架构的角色
- 开始编码前真正需要思考的事情
- 如何用简单的草图让你的软件可视化
- 为软件生产文档的轻量方法
- 为什么敏捷和架构并不冲突
- “恰如其分”的预先设计是什么
- 如何通过风险风暴来识别风险

《恰如其分的软件架构-风险驱动的设计方法》

作者George Fairbanks,译者张逸、倪健、高翌翔,华中科技大学出版社

本书从方法学的角度分析如何获得“恰如其分”的架构。作者建议根据项目面临的风险来调整架构设计的成本,并从多个视角阐述了软件架构的建模过程和方法,包括用例模型、概念模型、域模型、设计模型和代码模型等。书中提出了风险驱动模型(Risk-Driven Model)分为三步:
- 识别风险并进行优先级排列
- 选择并应用相关技术
- 评估风险是否降低

作者在书中提到了三种设计思路
- 计划式设计:考虑未来的功能扩展,传统的瀑布式采取事先设计的做法,可以认为是计划式设计
- 演进的设计:提倡满足客户现有的需求,敏捷方法学倾向于演进式设计
- 最小计划设计:介乎于演进式设计与计划式设计之间,算是一种中庸之道的选择

作者所谓“恰如其分”,其实就是在权衡计划式与演进式设计中找到一个平衡点,这就是他所推崇的最小计划设计。

其他一些具体应用实践

上面介绍的软件架构设计,不涉及行业和业务,但是在具体的应用领域,也会有一些不同的知识、方法、框架和实践。比如:
- 游戏引擎架构
- 前端架构设计
- 轻量级微服务架构
- 服务器端网络架构
- 5G网络架构
- Hadoop应用架构
- ……

L1/L2 架构设计框架和方法论

《系统架构设计-程序员向架构师的转型之路》

作者:郑天明,人民邮电出版社

这是我偶然发现的一本书,豆瓣上没有评价,全书围绕普通开发人员如何向架构师转型这一课题,从架构师的角色以及转型过程中会遇到的困难及其解决方法切入展开讨论,仔细读来内容非常丰富,很适合搭建自己的架构知识框架

全书从软件架构体系结构、架构设计、技术体系等角度出发,详细介绍了架构师区别于一般开发人员所需要掌握的架构设计方法论与相关实践,包括架构风格与模式、领域驱动设计、类与框架设计、分布式系统架构设计、微服务架构设计、各种主流的技术体系与实践等内容。然后针对软件架构系统工程、业务模型设计、敏捷方法与实践、产品交付模型与质量控制等架构师所必须掌握的系统工程和过程管理知识以及应用进行详细阐述,确保其站在架构师的高度进行系统设计和开发完整生命周期的全局管理。作为技术团队的领导者,架构师同样需要具备相应的综合能力,书籍的最后对架构师所需的各项软能力也做了一些介绍。

L2/L3 架构方法论和认知论

《我的架构思想-基本模型、理论与原则》

作者:周爱民,由北京图灵文化发展有限公司发行数字版

这本书是架构领域的超级大牛周爱民的作品,是从他的代表作《大道至易》拆分出来的,目前只有电子版本。

全书以系统的认识论作为出发点,全面描述了架构的思想、过程、方法。在此基础上,提出并论述了普遍性的架构理论和参考原则。通过全新的观察视角,书中对“架构”以及“架构师角色”提出了新的定义,并主要讨论了形成论与组成论两种架构方法。此外,本书在“架构意图”方面的讨论,既直指架构思想的本质,又为架构决策与实施找到了依据,颇为难得。

这是一本触及了 L3 级认知层次的书。虽然书中并没有明确的引用系统论、控制论、信息论等经典理论,但是从内容来看,作者所强调的正是系统论的认知思维模式。当然主要内容还是在L2层次上介绍方法论,帮助大家提升解决问题的能力。

本书主要内容:
- 系统的过程
- 知识的构建
- 架构师的能力结构
- 系统架构与决策
- 架构的表达与逻辑
- 架构的原则

最后,本书在附录中提供了一个超越软件架构的案例,尝试解决作者早期提出的EHM模型(软件工程中的层状模型)中所蕴含的问题,由此提出了新的组织架构。这是一个非常惊喜的彩蛋,我第一时间就打印出来准备反复研读。

《架构之美》

作者:Till Adam,译者:王海鹏、蔡黄辉、徐锋,机械工业出版社

这本书也是架构领域的经典,但是在豆瓣上评分并不高,我想其中一个可能的原因是,对于没有一定项目经验的人,难以产生共鸣和理解。

本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户应用和编程语言。书中让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。这本书就如同汇集了各个电视频道充斥的各类股评专家(当然是顶尖级的)的析股法则大全,需要你自己结合实践去分辨,去吸收,从而帮助你成为一个成熟的架构师。

什么是成熟的架构师呢?简单来说,就是能够取各家之所长,因地制宜,形成适合自己设计场景的架构设计规律法则。对于有一定项目经验,经历过一些项目体验的人应该能找到共鸣,对于新手暂时不推荐。

《超越软件架构-创建和维护优秀的解决方案》

作者:Luke Hohmann。中国电力出版社出版发行。

这是一本站在更高视野来描述架构的书,探讨了管理业务和技术之间关系的棘手问题。本书是对如何合理管理这一重要关系的实践性指导。在现代经济中,每个软件决策都可能会对业务产生重大影响;反之,大多数业务决策也将影响到软件应用的生存能力。本书在真实业务环境中为创建优秀软件方案提供了深刻的见解和有用的经验。

软件专家Luke Hohmann描述了软件架构决策的业务分枝,并进而指导了如何理解和领会那些为创建成功的软件所必须解决的业务问题,通过业务和技术之间的协作得以创建优秀的技术方案,确保组织获得成功。

架构设计主题阅读书目相关推荐

  1. 《浅谈12306核心模型设计思路和架构设计》阅读有感

    <浅谈12306核心模型设计思路和架构设计>阅读有感 12306的业务复杂度远远比淘宝天猫这种电商网站要复杂.一般的电商网站,购买都是基于商品的概念,每个商品有一定量的库存,用户的购买行为 ...

  2. 《京东虚拟业务多维订单系统架构设计》阅读笔记

    同主站常规实物订单中心一样,京米虚拟订单中心定位于订单数据的汇聚.变更及状态维护等,目前已经聚合了手机充值.加油卡.机票酒店.景点门票火车票.点卡页游等大量虚拟商品和部分非虚拟商品的订单详情数据,同时 ...

  3. 《苏宁易购:商品详情系统架构设计》阅读笔记

    商品详情系统介绍 基本介绍 商品详情系统是一个展示商品基本信息.参数等详情的系统,是商品购买的入口.它是电商平台中访问量最大的系统之一,苏宁易购大促期间PV量和UV量很大,这么大的访问量对系统的并发能 ...

  4. 【2017年第3期】交通大数据:一种基于微服务的敏捷处理架构设计

    杜圣东, 杨燕, 滕飞 西南交通大学信息科学与技术学院,四川 成都 610031 摘要:面对智慧交通广泛的大数据应用场景和技术需求,一般大数据系统难以适应多种处理情况并做出快速响应.针对这一问题,首次 ...

  5. 阅读心得6:《首次公开!菜鸟弹性调度系统的架构设计》

    本周阅读了老师推荐阅读的公众号:架构师中的推文<首次公开!菜鸟弹性调度系统的架构设计>,感想如下: 菜鸟裹裹是一款提供查快递.寄快递的应用软件,主要适用于全网包裹查询,支持淘宝.天猫.京东 ...

  6. 云时代架构阅读笔记十五——架构设计思维(一)

    对于架构设计人们已经提出了许多方法,分类为:工件驱动的方法:用例驱动的法:模式驱动的方法:领域驱动的方法.一个经典的架构设计过程模型,沿用了RUP中迭代增量的思想,由分析.描述.选择.构造和组合5个阶 ...

  7. 企业级系统架构设计技术与互联网应用技术结合主题一 大规模并发性能问题探讨...

    何谓大规模并发,不同层面有不同的理解 企业应用(Intranet):千级强并发,万级弱并发(在线用户),十万级用户 大型企业ERP.供应链,大型企业HR.办公OA 互联网应用(Internet):百万 ...

  8. 小米资深工程师瞿晋萍(男):米聊服务器的技术选型和架构设计

    小米资深工程师瞿晋萍:米聊服务器的技术选型和架构设计 - 资讯频道 - CSDN.NET 小米资深工程师瞿晋萍:米聊服务器的技术选型和架构设计 2012-07-07 11:04 | 238次阅读 | ...

  9. 旷视张祥雨:神经网络架构设计新思路

    智源导读:深度学习模型在很多任务上都取得了不错的效果,但调参却是一项非常痛苦的事情,大量的超参数和网络结构参数会产生爆炸性的组合.因此最近几年神经网络的架构搜索和超参数优化成为一个研究热点.此外,对于 ...

最新文章

  1. XML – E4X概述
  2. 看板中的WIP限制思想
  3. 网站建设想要赢得用户的认可和客户的满意并不容易
  4. TongJI Online Judge预赛(2): LOVE LETTER
  5. 公安网安装mysql 5.7_安装Mysql 5.7.1
  6. 如何在O(1)的时间里删除单链表的结点
  7. mysql外键_mysql系列之存储引擎
  8. jetbrains(IDEA/Pycharm)修改断点的颜色与调试时debugger的颜色
  9. 不使用for完成一段有空格间隔的字符串,分辨长度大于等于4的单词(求各位高人修改,我表示我是菜鸟,这个算法实在太长了)...
  10. Linux Tricks —— 快速清空文本文件内容、文本内容追加(tee)
  11. 9I DATAGUARD备库的MRP0进程shutdown
  12. Process Hacker工具使用
  13. SQL Server2019 Develop版本安装
  14. Eclipse快捷键大全
  15. Jmeter+Grafana+InfluxDB
  16. 安卓插件化框架Shadow原理分析
  17. 更新 mac 系统,clion 不能用
  18. archlinux 罗技K380 F1-F12 功能键锁定
  19. 苹果XR设备多次“跳票” XR行业的未来将如何
  20. 一文搞懂底层mysql 索引那些事

热门文章

  1. 软件测试是吃青春饭的吗?30岁后软件测试该何去何从?
  2. 人人商城手机端添加控制器
  3. linux降内核版本_查看linux版本内核 Linux内核版本的变化
  4. 来自苹果的编程语言——Swift简单介绍【整理】
  5. NOVA温控器参数笔记(十三)
  6. php资产探查,FuelPHP-探查器
  7. C语言 解译电文密码
  8. vue 地图可视化(1)
  9. 利用nginx搭建搭建直播平台中视频点播、直播、HLS服务器
  10. 打开 word 显示内存或磁盘空间不足 ,Word 无法显示所请求的字体