他在活动上主要对大数据时代软件开发模式的变化、特征及其发展趋势进行了讨论,除一系列新的概念外,还对一些具体的实现方法,技术及工业实践经验进行了介绍。
随着信息时代、互联网时代、人工智能时代、大数据时代的到来,传统的软件工程面临新的机遇与挑战,未来即将会迎来软件时代。在大数据时代,软件资源非常巨大,且软件需求比过去任何时候都多,加之很好的技术开发软件。在这个时代,软件质量和效率的提升有很大的发展空间。
一、什么是数据
1.数据一般被认为是信息的载体
世界上的一切事物都是信息的载体。大量的数据是很难处理的,包括大数据也是很难处理的。一般而言,只能处理数字化的数据,只有数字化的数据才能被计算处理。
2.软件即数据
另一个说法是,软件即数据。一方面,软件是信息载体;另一方面,软件是数字化。过去认为软件是处理数据的,事实上,这里的软件是作为数据来处理的。
3.软件资源即数据
软件资源是指用于开发软件的资源。例如开发软件过程中积累的内容。长期以来我们所使用的软件资源是静态的。大数据时代,还包括动态的软件资源。即可以运行的软件资源,典型的如网上的服务。原来的软件是指以软件为主的组件,如今还包括硬件、数字化资源等等。任何东西一旦被软件定义都可以被看作软件资源。如出租车、手机端、PC等。构造软件的能力也随之越来越强,数据库等都可以作为软件的子系统。总之,我们所谈到的软件资源与过去的不同在于,过去的软件资源是指静态软件,现在的软件资源是静态软件加动态软件。
和其他数据相比,软件作为数据有以下两大特点:知识密集型和资本密集型。一个软件系统往往是由大量的智力与复杂的方法和程序。同时,软件开发可能是非常耗时的,存在高成本和大的业务风险。
就软件的开发与重用而言,在过去的几十年中,从无到有的软件开发越来越少,对现有资源的重用越来越多,大量的软件资源已经产生。软件重用在提高软件开发的质量和效率方面明显提高,支持软件复用,也是逆向工程,软件维护的传统技术在目前软件开发中扮演着重要的角色,而目前的软件开发模式是逆正向工程。因此,软件开发的流程发生了变化,概念也发生了变化。软件数据挖掘的概念原先是不存在的,为此提出了面向关系的软件架构、静态或动态的软件资源等新概念,过去的系统是代码开发、高级语言开发,如今是架构开发系统,效率得以提高。
二、软件开发的趋势
大规模软件重用。从大规模软件复用走向更大规模的复用,以前包括静态软件,如今既包括静态也包括动态。
以服务为基础的软件开发。很多情况下是利用运行的软件来构造,而不是过去的静态软件库。
软件的计划生产。也就是批量生产,在同一领域,软件挖掘支持计划生产,典型的案例是软件生产线。
以生命周期为基础的软件开发。有望解决软件维护的危机。
总之,新的软件开发模式首先需要软件数据挖掘,第二是数据资源管理,最后是软件开发与维护。
三、数据挖掘的实践经验
这方面仅限于静态数据挖掘,将软件程序作为输入,架构作为输出,其中架构与开发是最核心的内容,将组件管理起来,为此提出了管理模型和操作模型,最后进行逐步开发。在大数据时代,有巨大的软件资源可用,包括处理资源的技术,这使得软件开发具有很大的重用性,软件开发的质量得以改进。
四、面向关系的软件架构
一个软件系统如果被使用,则需要被不断改变。将混乱的软件变为容易理解的软件,系统的混乱主要是指结构的混乱,为结构带来了很大的麻烦。为此,我们提出三步方法:架构从代码中提取出来,从别的程序输出架构,并将其转换成整齐语序,最后再放入架构中。
这里有三个最基本的概念需要明确:什么是架构;什么是系统;什么是重构。
1.什么是架构
架构就是蓝图。蓝图即设计,架构便是一个软件高层的总体设计。具体用各种视图来描述。如功能、性能等视角。
站在历史角度来看,一个软件的架构包括面向功能的架构、面向对象的架构、面向服务的架构与面向对象的架构四个方面。
2.什么是系统
系统被定义为架构加组件,系统是一组组件,需要组织起来去实现外传功能。在架构基础上重装系统。
3.什么是重构
重构是一个过程,整理软件的组织结构以找到最合适的。
我们正处于一个软件工业大变革的前夜。随着软件资源的大量积累与有效利用,软件生产的集约化、智能化与自动化程度都将迅速提高,软件生产质量与效率的大幅度改进将成为可能。