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

    什么是软件?

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

    软件的发展

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

    软件架构

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

    软件开发架构演变

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

    参看:架构漫谈

  • 相关阅读:
    JNUOJ 1187
    JNUOJ 1184
    HDU 4848
    HDU 4849
    哈夫曼树和哈弗曼编码小记
    HDU 5726
    POJ 3368 & UVA 11235
    2016江苏省CPC省赛 I
    POJ 3928
    POJ 3067
  • 原文地址:https://www.cnblogs.com/wj1998/p/11022355.html
Copyright © 2011-2022 走看看