2345技术员联盟

软件应用的发展史

  • 来源:未知 原创
  • 时间:2018-06-06
  • 阅读:
  • 本文标签:

     软件地心引力(Software Gravity),这是一种随着时间发展将功能、复杂性与资源引向软件系统的力量,正是它推动软件发展的力量。软件会随着时间而愈加复杂,正是功能请求与用户期望构成了软件地心引力。这种地心引力为软件带来复杂性,复杂性又对资源形成需求。块魂效应(Katamari Damacy,一款操纵王子通过不断黏住周围的物体来增加自己身前的球状物的大小),就像游戏中那样,功能持续增长,就像滚雪球一样形成了日益复杂的雪球。从小而简单的东西,无可避免地成长为庞然大物。最终,功能雪球可能会被错当成月亮。这个球定期会变得太过复杂,导致工作无法进行下去,只能通过重构来适应现有的可用资源。由于这个原因,软件是按照某种可预测的方式来发展的。


    所有的软件都处于其中的某个阶段。在阶段之间为了处理块魂效应,有一个自然发展的过程。随着系统越来越复杂,需要用不同的方式来解决问题。复杂性决定了系统所处的发展阶段,进化的阶段决定了代码和团队具体的形态,不可反推。在这个过程中,反复出现的主题就是分而治之,各个击破。随着复杂程度增长,最有效的方式就是将大问题拆成较小的问题。


    我经常看到程序员为了哪个工具才是最佳解决方案而争论不休。这与程序员在软件特定复杂度上的经验关系更大,而不是出于具体需求的需要。对所有系统来说,最好的语言、工具、数据库或框架并不存在。随着需求变更,方法也要产生相应的变化,否则只会浪费时间和金钱。初始阶段:人、纸、excel软件最开始并不是软件,大多数软件的存在是为了让现有的过程自动化,或者有效地沟通信息。软件最初的形态就是人们用纸和电子表格,还有其他的沟通手段来解决问题,这也是被我称为初始阶段的系统。


     初始阶段的系统最终会变成软件,就从一个简单的脚本开始。在第一阶段,软件只为单独的目的服务。随着时间推移,软件地心引力吸引了更多功能。这些功能叠加起来,就不是简单的脚本所能解决的了,必须将其拆成一堆文件。这就是第二阶段。我们将代码拆成文件,让它更易懂。大多人无法记住5000行代码,不过却能理解10个不同的500行代码的文件,将其分而治之。


    第三阶段:框架,框架是为解决常见问题并让沟通更顺畅而存在。一个框架就是一系列的约定还有数据库,合在一起来解决常见的问题。框架没什么特别的,只是减轻功能与团队复杂性的工具。以常见模式解决常见问题,团队就能发展地更快。框架让雇人也变得更为简单。第三阶段的项目需要雇用的人才,需要具备的技能会根据框架的不同而不同。大多数专业的软件开发都是在第三阶段。项目基于框架构架不代表就是第三阶段的系统,第一和第二阶段的系统也经常从框架开始。


    第四阶段:超越框架,每个框架都有极限,没有框架能解决所有问题。在某种程度上,功能、团队、数据复杂性都会推动你的系统,超出框架所能处理的范围。在第四阶段中不用改换框架。人们很容易考虑改换框架,不过这样只能让复杂的问题转移。第四阶段的界限很模糊,很难发现进入了第四阶段,下面列举了一些第四阶段的特点。团队开始“创建”或“探索”新的模式,旧的框架中并没有这种模式。这是发展的自然进程,会同时发生在系统的前端和后端。


   第五阶段:模块化,当系统变得足够大,就不能在白板上进行推理了,需要拆分成更小的组件。我们使用一个奇妙的词:模块化,不过这其实并没有什么特别,只是分而治之而已。第六阶段:网络系统,网络系统包括一系列较小的系统,彼此之间通过网络以公共协议的形式来通讯。网络将较小的系统粘贴起来,以达成更大的目标。只要复杂度足够,所有的系统都会成为一系列较小系统组装而成的系统,来完成更大的目标。在第六阶段,我们必须了解构建网络系统的规则。好的网络系统是由公共标准、优秀的文档加上易用性所定义。如果你曾经使用过公共API,就会了解这些东西的重要性。在第六阶段,每个系统都必须被当作公共API来对待。很多决定在制定时都是基于对工具、人群和复杂性的错误理解。理解软件地心引力和块魂的基础概念之后,就能更好地在软件开发中作出决定。


本文来自电脑技术网www.it892.com),转载本文请注明来源.
本文链接:http://www.it892.com/content/opapp/software/20180606/99365.html

无觅相关文章插件,快速提升流量