谈及架构,源于建筑。

一想到建筑,就能想到一块空间,有墙,有门,有窗。

用墙围住的一块密闭的盒子空间,通过门窗与外界保持沟通。

空间内根据住户的生活需求不同,划分为各个房间,有不同的功用。

然后人们对建筑的需求也就越来越多,空间的切分也会变成很多种,组合的方式也会有很多种。当要去设计这些建筑的时候,架构师就发挥作用了。

做好架构,首先需要做的就是识别出需要解决的问题

建筑进行如此复杂的设计有什么用呢?提升住户的生活质量,满足住户的生活需求。

纵观远古到今,人类从原始居住方式(住山洞,住在树上)到现今居住摩天大楼中,这一过程也是根据了人类需求的变化而变化。

(1)过去是人类生活的环境有很多不好因素(猛兽的攻击,风吹雨打),就创生了修建隔离空间的设施,那时候的建筑很简单,只是单纯解决这些问题;

(2)到后来人类群居生活,区分物质财产、个人隐私之类的问题,修建的房子变得坚固,有了围墙;

(3)到如今,和平年代,人口骤多,地域狭小,建筑以纵向扩张,形成了高楼大厦,人们以密集的方式居住,随着物质生活的发展,个人的居住空间的需求也就提高了,房间的形式安排关系到住户的生活质量。

不同时期有着不同的问题,了解到了需要解决的问题,才能有方向地去找解决方案

利益的调整

人们对需求的期盼,也就涉及到了人自己对利益的获取。

软件架构师最核心的考虑就在于此了:考虑涉众的利益。

考虑涉众的利益,进行对人的利益的调整。

具体一点,对员工的分工调整、对客户利益调整。

服务的对象,都是人,都以人为本,让各方达到利益最大化。

问题的方向

软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来。

具体一点:

(1)要思考业务在没有这个软件的支持下,它所进行的流程是什么样的,而软件的介入,能带来什么改变,真的解决问题了么(提高工作效率,降低成本)?

(2)软件是在硬件的基础上进行的,需要哪些硬件设施才能满足软件的要求,软件能否进行后期扩展壮大。(能否实现软件功能、如何实现、能否可持续地发展)

软件计划

基于上面的几个方面,就可以制定一些计划去完成:

一、虚拟化义务:

1、学习业务知识,了解业务运作的流程,有哪些权利和责任,如何满足利益诉求。(了解)

2、对业务进行建模,清晰整个业务结构。(构建理解)

3、学习涉众如何与业务进行交流的,了解交流渠道。(交流)

4、如何将业务运行的结果持久化,更长久地发展。(发展)

二、代码如何运营:

1、需要哪些硬件设备完成软件功能。

2、代码要分成多少组件部署到哪些硬件设备上。

3、代码与代码之间如何通过硬件设备进行连接。

4、能否通过部署新增机器的方式扩大对业务的支撑。

5、硬件设备失效时,是否影响用户对软件的访问。

6、能否对软件进行数据采集,帮助后续业务发展。

三、角色安排

1、安排哪些角色来完成如上所列的事情

2、如何保证角色之间的交流不会有损失,如何快速纠正

3、角色是如何协调,来共同完成任务

代码的功用

当面对软件的功能时,我们需要将其解析,在代码这一层面上,将功能细分两个部分。

所要考虑的是:承担的责任。

(1)逻辑

(2)数据

简言之,什么地方是面向用户的,什么地方是进行运算判定的,什么地方是存储数据的。它们各自承担的责任是最好是单一的。

比如一个网页,面向用户的部分,最好就只是单一的用户界面,没有运算(因为运算会让用户加载网页变慢),而运算就只需要甩给后台,有关的数据只需要给数据库。否则,这样一个代码杂乱的系统,若遇到的问题就可能是修改一处,牵动所有。

架构师

(1)作为架构师,首先心中有个观念:解决别人的问题。

不再以完成自己工作为目标,而是以完成别人工作当成自己的最大利益。

(2)当在解决问题的时候,要考虑涉众的利益:问题不解决,谁会有利益的损失;问题解决了,谁会有收益,谁的收益最大。

(3)将技术作为工具来解决问题,采用长期总体成本最低的方案,不要着眼于眼前的短期成本。

——————————————————————————————————————————————————————————————————————————————————

本文只是我读了《架构漫谈》后的理解,《架构漫谈》并没有讲解有什么具体的架构方案,但以建筑作为引子,从软件的发展谈到了软件的构架,方面很多,内容略杂,却易理解。

前半部多为解决一些需求,架构师从宏观角度所要考虑的问题,考虑涉众利益、考虑真正问题、考虑解决方向。

以生活中的网络支付为例,以前付现金,有着付现金找零钱的问题,忘了带钱的问题,带钱麻烦的问题等等,买家麻烦,卖家也觉得麻烦。手机人人都有,人人随身都带,那就在手机上添加支付功能。这下,一个手机就可以游玩全城。

后半部为软件上讲解,软件在什么硬件上运行,怎么运行,用什么技术,安排什么角色,代码怎么安排等。

以我自己编写的网页为例:初学网页时候,就直接将用户界面和数据运算写在同一个页面,问题也就多了,运行慢,修改一处,就要牵扯到其它功能的代码,BUG也不易发现,总的来说,就是为了完成功能而形成的大杂烩,什么菜都有,但无味、无相。

软件架构师是什么呢?以大体的来说,他掌控着整个大的方向,知道什么地方采用什么技术,知道真正的问题所在,知道要达到的目的,在众多利益矛盾中寻求平衡。

转载于:https://www.cnblogs.com/maplely/p/6491809.html

《架构漫谈》阅读感想相关推荐

  1. 【书虫录】富爸爸穷爸爸

    前言 笔者文章以及前端技术文合集详见Github:Nealyang/PersonalBlog 关注我公众号的都知道,我们在 2020 年初约定了彼此的 Flag. 一时冲动... 但是话都说出去了,总 ...

  2. 如果想赚钱,先学理财吧,那么入门书籍有哪些?富爸爸穷爸爸 名副其实NO1

    花了一个周末,读完<富爸爸穷爸爸>这本书.我读的是四川出版社出版,富爸爸财商教育系统20周年修订版. 相信很多人都读过,但不一定是这版.如何记住或吃透一本书,并理解它.我觉得读书笔记是个不 ...

  3. 《富爸爸穷爸爸》摘录

    第一章 富爸爸穷爸爸 富人之所以越来越富,穷人之所以越来越穷,中产阶级之所以总是在债务的泥潭中挣扎,其中一个主要原因就是,他们对金钱的认识不是来自学校,而是来自家庭.大多数人都是从父母那了解赚钱是怎么 ...

  4. 财商密码——《富爸爸.穷爸爸》读后感

    前引 本来是只想写一个<富爸爸.穷爸爸>的书评的,但是有一件事情,让我开始对于这本书的态度有了很大的转变,同时对川普的认识有了一定的转变.转变观点的原因是看了<undercover ...

  5. 读书笔记——《富爸爸穷爸爸》

    <富爸爸穷爸爸>,以前不屑读这种书.这种书就是那种走进书店放在门口展销位的成功学著作,一眼看上去没什么实在的内容,看上去很不靠谱,感觉就是骗一些社会底层又做着暴富梦的人来买的,但是由于自身 ...

  6. 富爸爸穷爸爸害了我_这是我必须告诉爸爸的-在我们的时间用完之前

    富爸爸穷爸爸害了我 by Bram Bos 通过Bram Bos 这是我必须告诉爸爸的-在我们的时间用完之前 (This is what I must tell my dad - before our ...

  7. 读《富爸爸,穷爸爸》后感(三)

    虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 时长:27:38 主播:一个靠前排的90后帅小伙 撰文 ...

  8. 《富爸爸,穷爸爸》思维导图

    富爸爸穷爸爸 富爸爸穷爸爸 富爸爸穷爸爸 <富爸爸穷爸爸>读书笔记 富爸爸穷爸爸 富爸爸穷爸爸的读书笔记,思维导图 富爸爸穷爸爸 该书讲述了清崎有两个爸爸:"穷爸爸"是 ...

  9. 读书笔记之富爸爸穷爸爸

    富爸爸穷爸爸 作者:罗伯特.T.清崎 莎伦.L.莱希特 序言 本书献给全世界的父母--孩子们最重要的老师 一代一代重复"老鼠赛跑" 跳出"老鼠怪圈"的唯一方法是 ...

  10. 读后感《富爸爸穷爸爸》

    我的书评 这本书确实是一本很好的财务自由的入门书. 非常喜欢和赞同书中的一些思想,比如,不能说"我付不起它",而要说"我该怎么支付它":要终身学习:唯一不变的就 ...

最新文章

  1. 腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)
  2. 如何评价马云和马斯克在世界人工智能大会的对话?
  3. hsf 架构_HSF 服务
  4. DAMS2019中国数据智能管理峰会将于7月在上海召开!
  5. mysql delete exists用法_自学MySQL第五天
  6. SharePoint Workflow 基础
  7. SAP Spartacus Reference App Structure
  8. [总结]DataGrid 固定表头实现(纵向和横向滚动条滚动,而Header不动)
  9. 会计基础模拟练习一(3)
  10. Spring DI(依赖注入)注解篇
  11. linux启动mysql_允许远程连接到MySQL数据库服务器的步骤
  12. CSS3知识点总结---transitionend
  13. 用中位数代替平均数来衡量民生指标
  14. 频域卷积定理的证明 乘积的傅里叶变换等于分别做傅里叶变换的卷积乘1/2pi
  15. 数据结构视频|408视频|计算机组成原理视频|计算机网络视频
  16. 十天学会单片机和c语言编程,十天学会单片机和C语言编程
  17. c语言调用aida64温度,关于aida64软件cpu温度的问题
  18. gcode2pointClound
  19. 定积分证明题例题_一个广义积分不等式证明(送给数学分析同学)
  20. 计算机l符号代表什么意思,衣服sml代表什么意思 分别是什么的标记

热门文章

  1. centos内核引导参数
  2. 十分钟学会Flask
  3. 数据库中Select For update语句的解析
  4. Ceph使用块设备完整操作流程
  5. Linux_CentOS-服务器搭建 五 补充
  6. 在3D场景中显示汉字
  7. 用vs命令提示符来使用 Installutil.exe来安装和卸载Windows服务
  8. ASP.NET生成验证码
  9. PAT1003. 我要通过!
  10. Dijkstra算法 最短路径