架构笔记六

什么是软件?

软件的历史,实际上可以说是用机器模拟人的历史, 从冯诺依曼结构开始到图灵机,都是以模拟人为目标,冯诺依曼结构是程序逻辑开始脱离硬件,采用二进制编码。加上存储,配合输入输出相当于一个简易大脑,图灵机则是模拟人的大脑的计算,一切直觉上能行可计算的函数都可用图灵机计算,这也是电脑这个名字的由来,在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。

软件的发展

最早的软件是有二进制编写的,软硬件成本非常之高,随着半导体的进步,硬件的成本越来越低,性能越来越高,硬件上的摩尔定律:当价格不变时,集成电路上可容纳的元器件数目,约每隔18-24个月增加一倍,性能提升一倍,软件方面也有了发展,开始采用更加容易一点的汇编语言,后来有出现的高级语言,更加与人的语言相类似,计算机与人之间的交互也越来越简单,软件工程师慢慢越来越多,开发软件的成本也越来越低,计算机就好像是一个不需要休息、无休无止的工作的人。人们越来越愿意事情交给计算机来做,结果就导致软件越来越多,成本也越来越低。使用软件,可以节省大量的人员培训,降低成本,随着互联网的发展,人类社会也开始软件化了。通过软件,每个人能够负担更多的工作,成本越来越低,软件因为成本的降低而快速发展起来

软件架构

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

软件开发架构演变

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

参看:架构漫谈

原文地址:https://www.cnblogs.com/wj1998/p/11022355.html