zoukankan      html  css  js  c++  java
  • 架构笔记六

    什么是软件?

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

    软件的发展

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

    软件架构

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

    软件开发架构演变

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

    参看:架构漫谈

  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/wj1998/p/11022355.html
Copyright © 2011-2022 走看看