首页 > 公司新闻
公司新闻

软件工程体系发展的必然性与偶然性

浏览次数:12407/19/2016  

       让我们从软件工程发展趋势的角度,谈谈出现基于复杂性科学的非线性、整体性、全局性、定量与全过程可视化的新一代软件工程体系的必然性, 以及NSE体系成功创立的偶然性。


必然性
1

       从软件工程的理论基础的角度——自从1979年比利时科学家普利高津提出复杂性科学概念之后,越来越多的人认识到,以前所有的科学、产业和商务体系, 都是基于牛顿力学和还原论创立的, 虽然在历史发展的过程中也做出了巨大的贡献, 但进入21世纪后, 已经面临严重的发展瓶颈。


       软件和软件工程体系都是由许多部分组成的非线性系统, 一个小小的局部改变都有可能最终引起整个系统的巨变 -- 蝴蝶效应。而复杂性科学正是研究和处理非线性系统的科学。霍金说:“21世纪是复杂性科学的世纪”!所以, 软件工程体系从基于还原论到基于复杂性科学发展,是必然的趋势。

2

       从构成整体论到生成整体论的角度——关于软件应该是生成的而不应该是构成的这一思想,早在1995年Brooks教授就提出来了:”做好系统要改变的规划……增量开发,每次一个模块,生成,不是构成。”

3

       从定性工程化到定量工程化角度——大家知道, 我们造一座小桥,都不仅要进行量化的度量, 包括多少水泥, 多少沙、多少水,还要经过量化的过程,来保证质量。但遗憾的是,软件工程至今还没有完全做到工程化,例如, 当一个模块被修改时,并不知道这可能会影响几个需求的实现,可能会影响多少别的函数功能的正常工作, 这就很难保证软件修改后的质量。所以,从定性的软件工程化到定量的软件工程化, 是必然的发展,只是大家一时还没有找到实现软件工程量化的关键技术 -- 准确而又精确而且可以自维护的双向可追溯性技术而已。

4

       从利用软件开发工具的角度——大家知道,瀑布模型是不需要使用工具就可以实施的;而第二代的RUP统一过程模型,则需要一系列静态工具的支持。但是,发展到量化软件工程, 就必须使用一系列动态工具, 才能建立起软件需求和文档和测试用例与源码之间的准确而且精确的双向可追溯性机制。软件工程要想提高效率, 就得使用工具。从使用或者不使用静态工具, 到必须使用动态工具, 也是必然的发展趋势。

5

       从软件开发过程的可视化角度——大家知道,软件可视化是理解软件系统的结构和行为的利器。仅仅实现建模过程的可视化是远远不够的。实现软件开发的全过程及其工作产品的可视化, 也是软件工程发展的必由之路。

6

       从人造的无生命非线性系统到具有人工智能的准生命系统角度——大家知道, 今天, 人工智能技术及其发展已经到了登峰造极的地步,这从人机围棋大战Alpha以4:1大胜世界冠军李世石,以及无人驾驶飞机成功袭击ISIS等就可以感受到。而其核心,都是软件在起作用。毫无疑问,软件是一个非线性系统,但它却缺乏自组织与自适应能力。为此, 软件工程师们纷纷努力来赋予软件准生命,包括容错能力和自恢复与自学习能力等。我们在软件的定义和实现过程中,给它配备一系列智能代理来让它适应新的工作环境,并有效地处理软件的可测试性、可靠性、可追溯性、可变性、一致性与可维护性,也是符合赋予软件准生命这一发展趋势的。


偶然性

       NSE体系或者类似的新体系的出现是必然的, 但最终由我并在我的同事的支持下创立成功, 则是偶然的——也许是我比较幸运。我的顿悟发生在2005年, 有一天我在上海博库书城偶然发现了一本关于复杂性科学的新书, 便随手翻了翻,结果是看入了迷,有找到了宝贝似的感觉,于是一口气买了五本相关著作,十多天看完后得出了结论:“复杂性科学是足于颠覆现有基于还原论的整个软件工程体系的利器,为软件工程的未来带来无限的希望和光明”。于是,我便遵照复杂性科学的原则,逐一完成软件工程各个组成部分的革命性改造,并通过完成改造后的各个组成部分的相互作用, 使得我们所期待的软件工程新体系的整体行为与特性涌现, 开创了一条多、快、好、省开发软件的新途径。


       当然, 不管谁来创立NSE体系, 都不是一件轻而易举的事。 因为, 这需要以复杂性科学为纲首先完成软件工程各个部分的革命性改造, 再通过改造后的软件工程各个部分的相互作用使得我们所期待的整体特性涌现。 这关系到上百个高效率的算法的创新,以及上百万行的新体系的实施支撑平台的设计,需要有上百个经验丰富而且指挥得动的软件工程师的通力编码合作,而且创立者还得一直活跃在软件开发的第一线,而不是高高在上脱离软件工程的具体实践,才能真正体会到软件工程师的难处和问题的严重性, 倾听到他们日益强烈的、改造整个落后的软件工程体系的呼声。


       现有软件工程之父C. V. Ramamoorthy在推荐NSE体系的推荐信中指出:“那么,软件工程的出路到底在哪里?NSE 非线性软件工程体系的诞生正是其时!我相信,NSE体系不仅打破了软件开发的瓶颈,而且还有可能在相关的组织间形成新的非线性与定量软件工程产业链, 包括非线性与定量方法、技术、工具、软件建模服务、软件设计、软件测试、软件质量保证、软件文档化、软件可视化、软件项目管理、软件维护、软件开发与测试服务等。总言之,软件工程将不会死亡,反而会更加年轻而健壮成长!”-- 我深信,NSE体系不仅不会挤压许许多多软件工程专家和研究人员的空间, 相反将为大家开创更加宽广的发展空间,使得更多的软件工程新成果更快地涌现。



       下面,请大家看NSE体系的实施支撑平台的一些应用案例, 包括对960万行源码和26万个函数的Linux内核的深度剖析和千倍高效(与传统方法相比)的可视化:


图1对含250万行源代码和3.9万个函数的GCC编译器的深度剖析与可视化


图2 可显示函数的环复杂度(含分支语句的数目)并浏览其控制流程图


图3 对含有960万行源代码和26万个函数的Linux内核的深度剖析与可视化


图4 可选择一个函数生成调用它和被它调用的子树(可生成26万个子树)

我要评论
内容 *
验证码*
Copyright © 2016 常州伯文软件科技有限公司 版权所有 网站地图    常州网络公司中环互联网网站建设