杨芙清 北京大学教授
杨芙清教授是中国计算机软件领域著名专家,中国科学院院士。她现任北京大学软件学院理事长、软件工程国家工程研究中心主任,致力于构件技术的研究和应用推介。
软件工程的发展对于一个国家的软件产业有着至关重要的意义,推进卓越软件工程,推
动我国软件产业的发展更是一个非常紧迫的任务。
软件解决的是逻辑问题
在上个世纪八十年代初期,业界就曾对大型复杂软件系统开发的关键问题展开了讨论。经过近二十年的发展和探索,解决这些问题的关键主要集中在以下三个方面。
首先,必须有好的软件开发风范,也就是要确定软件开发不同的抽象层次;
其次,需要先进的软件开发方法和技术,就是要解决整个开发过程的途径问题,通常也被称为实现不同抽象层次之间的样式;
其三,进行全面和合理的规划与控制,通过过程的规划和控制,来提高软件产品的质量和软件项目的开发效率。这需要一种高效的管理方法,以及实际工作中贯彻执行的能力。
从1970年开始,软件市场上出现了各式各样的软件开发风范,如:瀑布风范、迭代风范等。整体而言,开发软件的主要目的是解决逻辑的问题,软件开发的一系列基本活动,就构成了软件生命周期。
在需求分析阶段,软件开发组织要建立正确的系统模型;软件设计阶段,则要实现需求所需要的结构,解决系统结构和框架的问题。而所谓的需求实现,实际上就是代码的转换,这是贯穿整个软件开发生命周期的行为。而要最终设计形成一个成熟的软件产品,还需要测试、变更和维护等许多工作。
软件技术的发展,也是这样一个活动和变化的过程。从软、硬件角度来看,软件开发风范是要解决概念和处理逻辑之间的问题,要屏蔽不同操作系统之间的异构性,屏蔽架构在操作系统之上的不同应用软件之间的异构性。于是,就发展形成了各种软件框架、设计模式等相关技术。总体而言,软件风范是为了使得开发活动更符合人性化,提高开发质量。
就操作系统发展的角度而言,从单机操作系统、网络操作系统到并行操作系统,再到嵌入式操作系统,这个不断发展和演变的进程支撑着所有软件开发技术发展过程。因此,发展软件产业,应该尽可能多地提炼其中的共性,并且加以复用,从而降低开发应用软件的复杂度,提高软件开发的效率,改善软件产品的质量。毕竟软件开发不应该是个体劳动和手工劳动的结果,更应该是一种工业化了的生产活动。这就要求产业内部形成提倡软件开发过程及软件产品高效、可信的氛围。
从面向数据的开发方法到面向对象的开发方法,再到如今基于构件的开发方法,所有这些都提出了不同的开发技术,支持软件开发者能够实现不同抽象层次之间的映射。
从软件工程技术的发展过程可以分析,每个时期都有不同的特点和重点。但是,总体上仍然存在两条共性:其一,一贯重视方法与技术的研究,使得软件开发结构元素的力度不断增大;其二,就是重视过程的管理,不仅重视开发的结果,更重要的是开发过程管理和控制领域的研究。
软件作品不是产品
卓越软件工程作为软件工程的一种理念,拥有一定的内涵。作品不等于产品。如果单个用户提出应用需求之后,软件公司或者其它专业开发组织在与用户沟通之后开发出一个软件。这样的软件仅仅是实验室里面的一个原型、一个作品,并不是可以推而广之的产品。
把作品变成产品,必须执行标准化和规范化的流程,经过不断和反复的测试和修改工作,才能把软件作品最终变成软件产品。
如果把作品的形成比作技术创新的话,那么产品形成的过程就不仅要有技术创新,更要有工程创新。因此,成功的软件产品,不仅要符合必需的标准规范,还应该拥有结构合理的组织团队以及团队之间的良好合作。只有这几个要素齐备,才有可能获取一个成熟的软件产品。
软件的本质特性是构造性和演化性。客观世界本身是有结构的,软件是一个知识性的产品,所以软件具有更加严谨的结构性。要把客观事物的活动用软件表达出来,就是必须把客观活动的结构性提炼出来。和其它客观事物一样,软件系统也就具有演变性,并在不断的演化中促使技术不断发展。同样,技术的发展会反作用于系统,促进系统的演化。
软件也有“美”的特性,美的软件是指一个成熟的而且能够贴近应用需求的软件。从产业角度讲,软件之美体现在三个方面:
第一,软件系统结构之“美”。对于软件设计人员而言,软件设计的本质是为现实问题提炼一个清晰而又简洁的结构。如何把复杂的问题简单化,这就是一个技术创新,也是在卓越软件过程本身要做到的一个事情。而这样一个体系结构,必须使得软件产品易于扩展和演化,只有能够随需应变的结构才是最美的。
第二,人机交互之“美”。软件的应用者是人,所以必须要从用户出发。“美”的软件应该能够进行良好的人机交互。对于用户来说,软件是要通过直观简单的界面,提供自然化、个性化的功能。
第三,团队文化之“美”。软件开发和管理团队,必须强调标准、研究和实践的有机结合。只有组建一个完美的团队,才能做出完美的软件产品。
软件之美要求的三个方面,正是卓越软件工程所期望达到的效果。可以说,卓越软件工程的内涵就是通过软件之美的三个方面,开发“美”的软件。
在理解了卓越软件工程的理念和内涵之后,我们必须找到实现途径才能真正享受软件工程的卓越成果。途径之一是采用软件复用和软件构件技术,其二是要实现软件生产方式的变革,另外,还要重视软件产业基础设施的建设,最后就是要形成良好的软件产业组织模式。
任何一个软件都是代表一个客观世界特性的提炼,那么任何一个软件都有其领域特征。所有领域的特征和系统基本需求决定了软件的结构性。实现软件生产方式变革,即软件必须从手工作坊式转变为工业化的生产方式,要有工业化的开发方法和工业化的生产技术。生产过程中不但要有支撑环境和工具,更要有标准规范和体系。重视软件基础设施建设,也就是要为软件的实施创建优良的产业发展环境。因为软件工程需要有一定的平台。既然软件不仅是作品,更要成为用户所用的产品。那么,就要求有良好的产业组织模式,只有这样才能够真正的形成软件产业,才能够有产品。只有这样,中国软件产业才能够得到真正的发展,才能够取得巨大成就。
相关链接
2004年12月16日,来自国内软件行业的100多位企业高级管理人员及高校软件学院、计算机学院的院长们参加了微软亚洲工程院成立一周年的庆祝活动及“卓越软件工程” 论坛,就如何将中国打造成“一流软件产品原创国” 进行了积极的、富有建设性的探讨。
微软亚洲工程院目前已吸纳了110位来自国内外优秀的软件工程人员;所从事的短期及中长期大型软件工程项目达15项;并已促成30项技术向微软产品的转化。
自建院以来,微软亚洲工程院一直严格贯彻“卓越软件工程”的理念及配套体系,其目标是通过科学、规范、高效的产品开发流程设置,提升软件研发人员的素质,提升软件产品的品质与研发效率。
谈到微软亚洲工程院过去一年来所取得的成就,张宏江院长表示,微软总部对于亚洲研究院的工作给予了高度的认可。过去一年中,该研究院协助微软亚洲研究院完成了30项技术产品化,其成果有很多已运用到微软的产品中,如微软最新的媒体中心“MCE 2005”。据悉,微软亚洲工程院还将成为微软公司下一版SmartPhone操作系统核心技术的开发基地。