正在加载图片...
许畅等:可成长软件理论方法和实现技术:从范型到跨越 量评估方法和保障机制等重要方面:最后,我们介绍可成长软件理论方法和技术的集成应用,并展望 未来和总结全文 23 软件的可成长性 本节介绍软件的可成长性,分析可成长性问题的由来,以及可成长性概念的内涵和范畴 2.1软件可成长性问题的由来 从以机械化为代表的第一次工业革命,到以电气化为代表的第二次工业革命,一直到近代以自动 化为代表的第三次工业革命,以及当前和未来以智能化为代表的第四次工业革命.软件已逐步成为支 撑我们现代化信息社会的基础设施.其中一个重要原因就是,从第三次工业革命开始出现了电子计算 机,人类的计算能力和工作效率由此大幅提升,计算机软件也因而进入了蓬勃发展的阶段.对此,C++ 语言发明人Bjarne Stroustrup甚至高度评价:“人类文明运行在软件之上”.近年来,云计算、大数据 技术和“人-机-物”三元融合的应用模式正不断加速现代社会的信息化进程,与此相应的,软件也 变得与人类生活越来越息息相关,越来越重要。 但随之而来的,是软件的构建和维护任务日益复杂,不断挑战软件开发者管理和技术的能力界 限.比如说,根据波音和空客的实证数据,习,其软件代码可达三千万行,并且随着其业务复杂度每增 长25%,软件复杂度可相应增长100%.即使软件开发者能顶住巨大压力从事如此复杂的编码工作,也 不得不耗损自身健康作为代价.而另一方面,随着社会的信息化进程加速发展,当前许多软件基础设 施面临着环境、资源和需求的不断变迁,急需重新构建或繁重维护,这进一步加剧了问题的严重性 在这种情况下,软件的长期生存或单纯是生存都变得非常困难.据悉,有苦撑12年,具有600多 万行代码和五万多个类的烂尾开发项目,到后期软件结构已变得异常复杂,即使软件开发者付出极 大努力也无法充分理解,最终不得不在多次追加开发资金之后仍然垮掉).而因为代码难以理解和注 释不规范问题,软件开发者之间也曾发生过矛盾,甚至危及生命的事件,使得软件的构建和维护难以 持续).即使是国际著名Ora©le公司的成熟数据库产品,开发人员也对其生存和维护问题怨声载道: “·你做不到在不破坏成千上万个现有测试的情况下更改产品中的单一行代码·代码中充斥 着各种各样的垃圾内容·顺利的话,会有大约100个失败的测试,倒霉的话,会有大约1000个失 败的测试·再添加几个标志,试图解决问题.”).对这样的问题,美国国防部高级研究计划 局(Defense Advanced Research Projects Agency,DARPA)己经开始规划,期望设计和开发一套资源自 适应软件系统(BRASS),它不仅能够经受一个多世纪的考验,而且还能自行对所在生态系统中的变化 做出安全、动态式的响应,从而彻底解决软件的长期生存难题, 我们认为,软件构建和维护任务的复杂性,实质上反映了软件的可成长性问题.软件难以继续构建 和维护,本质上暗示了软件自身的可成长性比较差甚至缺失.对此,科研人员和软件开发者近几十年 来一直在与软件的可成长性问题进行抗争.并且已经付出大量管理和技术上的努力 比如说,在管理方面,教科书级经典著作《人月神话》B,4很早就提出了软件危机的两点具体表 现.一是软件开发活动不具有可扩展性,难以驾驭大规模系统,二是团队规模和协作效率(或沟通成 本)之间具有两难问题,换言之,软件的复杂性无法简单通过增加人(即人力成本)和月(即时间成本) 1)https://zhuanlan.zhihu.com/p/38973085/. 2)http://finance.sina.com.cn/stock/usstock/c/2018-09-23/doc-ifxeuwwr7514854.shtml. 3)https://www.oschina.net/news/101928/about-oracle-database-code. 4)https://tech.huangiu.com/article/9CaKrnJJO38. 1596 https://engine.scichina.com/doi/10.1360/SSI-2020-0079许畅等: 可成长软件理论方法和实现技术: 从范型到跨越 量评估方法和保障机制等重要方面; 最后, 我们介绍可成长软件理论方法和技术的集成应用, 并展望 未来和总结全文. 2 软件的可成长性 本节介绍软件的可成长性, 分析可成长性问题的由来, 以及可成长性概念的内涵和范畴. 2.1 软件可成长性问题的由来 从以机械化为代表的第一次工业革命, 到以电气化为代表的第二次工业革命, 一直到近代以自动 化为代表的第三次工业革命, 以及当前和未来以智能化为代表的第四次工业革命, 软件已逐步成为支 撑我们现代化信息社会的基础设施. 其中一个重要原因就是, 从第三次工业革命开始出现了电子计算 机, 人类的计算能力和工作效率由此大幅提升, 计算机软件也因而进入了蓬勃发展的阶段. 对此, C++ 语言发明人 Bjarne Stroustrup 甚至高度评价: “人类文明运行在软件之上”. 近年来, 云计算、大数据 技术和 “人 – 机 – 物” 三元融合的应用模式正不断加速现代社会的信息化进程, 与此相应的, 软件也 变得与人类生活越来越息息相关, 越来越重要. 但随之而来的, 是软件的构建和维护任务日益复杂, 不断挑战软件开发者管理和技术的能力界 限. 比如说, 根据波音和空客的实证数据 [1, 2] , 其软件代码可达三千万行, 并且随着其业务复杂度每增 长 25%, 软件复杂度可相应增长 100%. 即使软件开发者能顶住巨大压力从事如此复杂的编码工作, 也 不得不耗损自身健康作为代价. 而另一方面, 随着社会的信息化进程加速发展, 当前许多软件基础设 施面临着环境、资源和需求的不断变迁, 急需重新构建或繁重维护, 这进一步加剧了问题的严重性. 在这种情况下, 软件的长期生存或单纯是生存都变得非常困难. 据悉, 有苦撑 12 年, 具有 600 多 万行代码和五万多个类的烂尾开发项目, 到后期软件结构已变得异常复杂, 即使软件开发者付出极 大努力也无法充分理解, 最终不得不在多次追加开发资金之后仍然垮掉1) . 而因为代码难以理解和注 释不规范问题, 软件开发者之间也曾发生过矛盾, 甚至危及生命的事件, 使得软件的构建和维护难以 持续2) . 即使是国际著名 Oracle 公司的成熟数据库产品, 开发人员也对其生存和维护问题怨声载道: “· · · · · · 你做不到在不破坏成千上万个现有测试的情况下更改产品中的单一行代码 · · · · · · 代码中充斥 着各种各样的垃圾内容 · · · · · · 顺利的话, 会有大约 100 个失败的测试, 倒霉的话, 会有大约 1000 个失 败的测试 · · · · · · 再添加几个标志, 试图解决问题 · · · · · · ” 3) . 对这样的问题, 美国国防部高级研究计划 局 (Defense Advanced Research Projects Agency, DARPA) 已经开始规划, 期望设计和开发一套资源自 适应软件系统 (BRASS), 它不仅能够经受一个多世纪的考验, 而且还能自行对所在生态系统中的变化 做出安全、动态式的响应4) , 从而彻底解决软件的长期生存难题. 我们认为, 软件构建和维护任务的复杂性, 实质上反映了软件的可成长性问题. 软件难以继续构建 和维护, 本质上暗示了软件自身的可成长性比较差甚至缺失. 对此, 科研人员和软件开发者近几十年 来一直在与软件的可成长性问题进行抗争, 并且已经付出大量管理和技术上的努力. 比如说, 在管理方面, 教科书级经典著作《人月神话》[3, 4] 很早就提出了软件危机的两点具体表 现. 一是软件开发活动不具有可扩展性, 难以驾驭大规模系统, 二是团队规模和协作效率 (或沟通成 本) 之间具有两难问题, 换言之, 软件的复杂性无法简单通过增加人 (即人力成本) 和月 (即时间成本) 1) https://zhuanlan.zhihu.com/p/38973085/. 2) http://finance.sina.com.cn/stock/usstock/c/2018-09-23/doc-ifxeuwwr7514854.shtml. 3) https://www.oschina.net/news/101928/about-oracle-database-code. 4) https://tech.huanqiu.com/article/9CaKrnJJO38. 1596 https://engine.scichina.com/doi/10.1360/SSI-2020-0079
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有