【细品架构5/100】什么是软件架构

本文主要是继续研读了资深架构师王概凯Kevin执笔的《架构漫谈》系列的《架构漫谈(五):什么是软件》的心得感觉。王概凯Kevin结合本身多年的架构经验,经过不一样的视角,从新审视架构的本质,从而产生一力做《架构漫谈》系列,做者但愿可以抛出本身从实践中得出的一些观点,并引起你们的一些思考,欢迎你们沟通讨论。编程

如须要阅读原文,请关注公众号“聊聊架构”,从历史文章中获取《架构漫谈》系列。架构

本文内容结构图:函数

什么是软件架构

 

  1.  

前几篇重点讲述了,架构产生过程当中的三个阶段:Why-How-What。简单给你们回溯下这三个阶段,这样接下来再将这3W阶段的思考,用到软件当中,才会有更深入的体会。post

Why:为什么会产生架构学习

架构本质其实就是解决人的问题,从而知足人不断更高的需求,产生架构的必须动机测试

1. 必须由人执行的工做;
2. 每一个人的能力有限;
3. 每一个人的时间有限;
4. 人对目标系统有更高的要求;
5. 目标系统的复杂性使得我的独自没法完成这个系统;
复制代码

How:架构中关键步骤编码

概念认知:概念是认识沟通这个世界的基础,天然对概念的认知是很是重要的。设计

1. 概念其实表明其背后解决人的问题而来,不一样的概念表明不一样的功能,不一样的功能解决的问题也不一样;
2. 同一事物在不一样场景下,解决的问题不一样,所表明的功能也不一样,从而概念也不一样;
复制代码

问题识别:当找到真正问题时,问题就已解决了80%。code

1. 肯定问题主体,谁的问题;
2. 肯定问题边界,真正的问题是什么; 
复制代码

架构切分:其实就是相关人的利益调整,这就是原动力;开发

1. 背后的动力,就是每一个人本身的利益,这是切分过程当中必需要考虑到人的利益;
2. 架构切分最终会反应到组织架构上,造成组织树状;
复制代码

What:架构的本质

架构实际上就是指人们根据本身对世界的认识,为解决某个问题,主动地、有目的地去识别问题,总结得出概念,经过概念做为认识沟通的桥梁,对相关事物进行分解、合并,如:人、利益、问题、组织架构等等,解决这个问题的实践活动。

  1.  

什么是软件

软件的历史,实际上能够说是用机器模拟人的历史。无论你们(包括在这个历史过程当中的参与者)有没有意识到,咱们都有意无心的在计算机上模仿人类的行为。从冯诺依曼结构开始,程序逻辑开始脱离硬件,采用二进制编码。加上存储,配合输入输出,一个简化的大脑就出现了。图灵机则是模拟大脑的计算,用数学的方式把计算的过程定义了出来,著名的邱奇-图灵论题:一切直觉上能行可计算的函数均可用图灵机计算,反之亦然。软硬件二者一结合,一个可编程的大脑出现了,这也是如今为何咱们把计算机叫作电脑。在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。

人们愈来愈愿意把原来只有人才能作的事情,交给计算机来作。结果就致使软件愈来愈丰富,可以作的事情也愈来愈多,成本也愈来愈低。能够这么说,成本是咱们为何采用软件的主要动力,能够节省大量的人员培训,减小雇员的数目。随着互联网的发展,人类社会也开始软件化了。原来必须实体店来进行售卖的,搬到互联网上,开店成本更低,而且可以接触到更多的人。想象一下,一个门店天天的人流达到百万级别是很恐怖的,由实体空间大小来决定。可是在互联网上,访问量千万级别都不算什么。最终的结果就变成,每一个人可以负担的工做愈来愈多,成本愈来愈低。这也是为何软件这么热的缘由。

有了软件以后,实际上,咱们是把咱们平常生活中所作的事情,包括咱们本身本人都一块儿虚拟化到了计算机中。而人则演化成了,经过计算机的输入输出设备,控制计算机中的本身,来完成平常的工做,以及与其余人的沟通。也就是说,软件一直以来的动力,始终都是来模拟人和这个社会的

无论如何发展,模拟人的全部行为都是一个大的趋势。也就是说,软件的主要目的,仍是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的仍是人类的生活知识。软件更多的是扮演一个cost center,这也是为何会出现不少的软件代工。

  1.  

软件架构出现

软件工程师是实现这个模拟过程的关键人物,他必须先理解人是怎么在平常生活中完成工做的,才可以很好的把这些工做在计算机中模拟出来。但是软件工程师须要学习大量的计算机语言和计算机知识,还须要学习各行各业的专业知识。软件工程师自己的培养就比较难,同时行业知识也要靠时间的积累,这样就远远超出了软件工程师的能力了。因此软件开发就开始有分工了,行业知识和业务的识别,会交给BA,系统的设计会交给架构师,设计的实现交给架构师,实现的检验交给测试,还有不少其余角色的配合。为了组织这些角色的工做,还有项目经理。这就把原来一我的的连续工做,拆分红了不一样角色的人的连续配合,演化成了不一样的软件开发的模式。而后慢慢演变出专门为别人开发软件的软件公司。

一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不一样的架构。这个背后的动力也是同样的,就是提高参与的人的利益,下降成本。导火索也是软件工程师的任务过重,咱们须要把不少工做拆分出来。拆分的原则也是同样的,如何让权责一致。一样,这个拆分也是须要组织架构的调整,来保证架构的落地。

  1.  

总结一下

以上经过简单的描述计算机和软件的发展历史,阐明软件的本质,其实就是经过把人类的平常工做生活虚拟化,减小成本,提高单我的员的生产力,提高人类本身的利益。软件工程师的职责在这个浪潮中,不堪重负,天然而然就分拆为不一样的角色,造成了一个独特的架构体系。这一切的背后,仍然是为了提高人类本身的利益,解决人类本身的问题。

做者:猿码道 连接:https://juejin.im/post/5b36ed2af265da597f1c8afe 来源:掘金 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

相关文章
相关标签/搜索