计算机应用研究
APPLICATION RESEARCH OF COMPUTERS
2000　Vol.17　No.2　P.79-81



一个支持进化式软件开发的集成环境：MHSC/IDE
吴明晖　应晶　何志均
摘 要 简要地介绍了MHSC方法论(Methodology of High-level SpecificationConstruction)，并提出了它的集成开发环境MHSC/IDE。文中详细介绍了MHSC/IDE的组成部分及其相互间的关系，利用该环境，进化式原型系统的开发得到了有效地支持。
关键词 IDE 可执行定义 变换方法 进化
1 引言
　　由于软件本身固有的复杂性(不仅仅是偶发的复杂性)，使得软件开发，特别是大型复杂软件系统的开发陷入一种失控状态。研究表明：软件工程领域存在着需求分析的瓶颈问题[1]。传统的瀑布式开发方法因其假设需求的不变性使其难以满足用户要求，在不明白需求工程的原理时盲目采用面向对象技术和CASE工具都使问题得不到合理的解决。事实上软件系统只有到可执行状态才能被证实，而在开发后期的变更，特别是需求变更将因其影响范围过大而导致项目失控，可见在需求阶段的早期能够检测出错误是很重要的。作者提出以一种可执行定义语言为需求分析的中间语言，为它提供一个集成开发环境，通过基于知识的变换和求精，可以形成一个可执行的软件原型，通过原型系统的演示，就能够实现对需求定义的验证，从而实现在定义层和实现层上的一致性。通过原型的不断进化，最终满足用户的实际需求。
2 背景
　　为实现软件需求的早期验证和定义层与实现层间的一致性，作者根据多年来知识处理技术与软件工程相互结合的研究工作，提出了一种支持软件定义高层构造的方法论MHSC[2～4]，方法论从软件开发的需求分析和定义层入手，提出一种宽谱的支持多维语义描述的软件定义语言，运用语言来构造实际领域的合一化功能模型，以此为需求分析的中间结果通过进化方法(基于知识的变换方法、基于可视技术的求精、基于模拟机制的软件定义和系统功能验证)，逐步过渡到设计阶段的软件实现，以支持软件的自动开发过程，从本质上改变现有软件生产过程，达到需求定义层到设计层的平滑过渡。整个开发流程可由图1来说明。

图1　支持MHBC方法的开发流程
　　根据MHSC方法论，目前，主要针对实时系统领域，通过对PSDL语言[5～8]的扩展和运用，我们建立了一个支持原型进化的集成开发环境MHSC/IDE。
3 MHSC/IDE
　　作为一个集成开发环境，MHSC/IDE为一个软件系统的需求获取、设计和实现提供了良好的支持，尤其因为MHSC方法论自身的特点，使得系统需求的变更和维护处于一种有序状态，减小了项目失控的可能。整个环境如图2所示，可分为六个部分，但它们之间并不完全独立，而是相互作用的。下面加以讨论。

图2　MHSC/IDE
3.1 协同支持环境
　　大型复杂软件系统的需求分析和设计实现过程不是个人在短期内能够完成的，它必然是多个人协同工作的结果，其设计过程就是参与者们共同讨论并解决问题的一系列过程。基于此，H.Rittel提出了IBIS(Issue-Based Information System)模型[9]且有许多研究人员对它进行了扩展和运用，如gIBIS模型等。根据MHSC方法论及其开发流程，我们对IBIS模型进行了如下扩展：
　　●基于网络、分布式环境，支持多人协同并行工作。
　　●多重视图的表示形式(图形、描述文本、可执行定义语言)。
　　●引入基于知识的推理系统，提供参照机制，实现节点冲突检测、归并能力。
　　●多级权限、版本控制机制。
　　整个协同开发环境不仅包含传统的Email、文档共享、多媒体信息等电子会议方式的信息协同，最主要的是为项目的并行开发提供了支持。在我们的开发环境中，系统的生成实际上就是组成系统的各个角色(或称为构件，有着原子和组合两类)的产生及其间相互关系的建立。我们采用如图3所示的层次化网状结构作为系统的体系结构，构成图的角色根据其属性通过接口程序转化成相应数据存储在数据库中，以Client/Server模式支持分布式计算，数据的并发、共享和一致性和安全性经规则约束由DBMS控制。

图3　体系结构示意图
3.2 重用库管理系统
　　软件重用思想自1968年Mcllroy在NATO软件工程会议上提出后就成为一个研究热点。软件重用技术能够利用以前开发软件系统的各种资源和成果，避免了不必要的重复劳动，提高了软件的开发效率和质量，这也使得它成为快速原型系统开发中不可或缺的手段。
　　重用是MHSC方法论的重要组成，当为重用提供了相对完备的环境时，某个特定领域的软件生产将可能实现自动化。在MHSC中重用的对象不仅包括了传统的库函数，还有PSDL描述模块、基于CORBA或COM标准的组件和设计模式、体系结构等。为有效地支持重用，主要针对PSDL描述模块，我们开发了重用库管理系统，该系统为构件的获取、加入、分类、检索及组装提供了支持。在MHSC/IDE中，重用库分为两类：公共库和私有库，公共库中存放的是经过严格测试的成熟产品，为所有开发人员只读共享，完全控制权由系统管理员掌握。私有库则由每个开发人员独立控制。一般当开发人员认为某个部件有重用价值时，他就可以将其加入私有库并可向公共库管理小组推荐，经测试完善后可加入公共库。构件的分类以刻面分类法[10]为主，主要包括应用领域、应用平台、生成语言、功能描述和关键字等。检索时把检索条件按刻面填入并设置刻面的优先权值，选择检索模式(完全或是模糊)，结果将按匹配程度列出。根据构件间的相互关系，本系统还支持导航式查询。构件的组装、进化和版本控制由进化控制系统和装配系统实现。
3.3 知识库管理系统
　　系统的进化过程是通过基于知识的变换和求精来实现的，只有在领域知识相对完备的情况下软件自动化才成为可能。领域知识和推理公式存放在推理数据库(DDB-Deductive Data Base)中。领域知识的获取主要由领域专家和以前系统的开发设计人员实现，随着领域知识的积累，为原型系统的开发所提供的决策支持和自动化程度也就越高。
3.4 过程控制系统
　　由进化控制系统和装配系统组成。
　　系统的生成过程是一个进化过程。每个开发人员可以负责一个或多个构件的生成，但由于构件间的相互作用(组合、引用、进化)，使得一个构件的变动可能会影响到其它构件，导致了相关构件的相应变换，这就是变动相关性的级联问题。为解决该问题，我们提出了一个进化式的开发模型MHSC/DM，根据变换的类型确立了构件的状态转移和版本控制规则[11]。该模型从需求分析开始，以数据图的模式记录了软件进化过程中的各环节、实例间的相互依赖关系，通过AffectedBy、Scope、Induce等规则的建立和应用，能自动追踪因需求变动而诱发的变动构件集合，根据领域知识和推理机制，为变动方案的选择提供了决策支持并实现了级联变动的自动或半自动的完成，同时，对项目的计划、调度、构造管理等方面提供了自动支持。
　　装配系统提供了原型系统的变换归并。由于分布式团队开发，可能有多个开发小组对同一版本的构件同时进行变换以满足各自的需求。但最终系统装配时这些变换需组合起来，形成一个新版本的构件，这样就必须对每个小组的变换进行检测分析，消除矛盾冲突，归并冗余。最终目标系统可视为这些归并后构件的组合，为系统分解的逆过程。
3.5 多维视图编辑系统
　　系统提供多种形式的编辑工具，包括用户界面编辑器、PSDL编辑器和C++编辑器。用户通过编辑系统输入，最终通过执行支持系统来生成可执行原型。用户可以通过图形或是文本两种方式来完成对目标系统的PSDL描述，并可以自由地在这两种方式之间切换。下面我们以PSDL图模式编辑器为例加以讨论。如图4所示，PSDL图模式编辑器以图元来表示PSDL语言中的类型，主要有：操作(Operator)、入口(Entry)、出口(Exit)、流(Stream)、定时器(Timer)等。通过对图元的拖放操作，设置它们间的关系、属性和约束，将其实例化，经过翻译器就可以生成符合PSDL语法的定义框架。组成PSDL描述框架的构件一般有两种来源：直接由用户设计产生或通过对构件库的检索引入符合要求的可重用构件。在系统开发初期前者居多，但随着重用库的充实，后者所占比例将逐步增大。

图4　PSDL图模式编辑器
3.6 执行支持系统
　　执行支持系统包括两级翻译系统(PSDL图模式和PSDL文本模型间的转换、PSDL语言到C++语言的转换)、C++的编译系统及模拟调度系统。由用户定义生成的PSDL语言定义可能是不完备的，甚至是有矛盾的，这就需要根据领域知识自动或半自动的进行处理。通过PSDL到C++的转换器，可以生成C++的代码框架，当所描述的细节充分时，产生的C++代码经过编译后将形成可执行系统。
　　模拟调度系统在MHSC中起着重要的作用，尤其在实时系统中，当用户完成对目标系统PSDL描述时，一般不会对具体细节加以填充，只是一个高层的设计。这时确定系统间的资源分配和时序关系能否满足假定约束是很关键的。我们实现了一个基于扩展Petri网的定义模拟调度系统，利用网图对各组成构件进行冲突检测并提供相应的报告，指出关键问题所在，为解决问题提供参考方案。当这个高层设计通过检测后，就可以进一步求精，直至用户满意的目标系统生成。
4 小结
　　针对支持可执行定义的进化式软件系统开发，根据MHSC方法论，本文给出了相应的集成开发环境MHSC/IDE。该环境为大型复杂软件系统的开发提供了良好的支持，实现了软件需求的高层构造和早期验证，较好地实现了需求定义层到实现层的平滑过渡。
本项目获国家自然科学基金(No. 69703005)资助
本项目获浙江省自然科学基金(No. 697006)资助
吴明晖（浙江大学计算机系 杭州 310027）
应晶（浙江大学计算机系 杭州 310027）
何志均（浙江大学计算机系 杭州 310027）
参考文献
1，Pei Hsia, et al. Status Report: Requirement Engineering, IEEE Software, Vol.10, No.6, Nov.1993
2，Ying Jing, He Zhijun, Wu Zhaohui et al. A Methodogy for High-level Software Specification Construction. ACM Software Engineering Notes, April 1995, 20(2):48～54
3，应 晶. 一种新的软件系统开发方法论研究[博士论文]. 浙江大学, 1995
4，应 晶, 何志均, 吴朝晖. 支持软件开发的可执行定义方法. 软件学报, l997(5), 350～359
5，Luqi. A Graph Model for Software Evolution. IEEE Trans. Software Engineering, Aug, 1990, 917～927
6，Luqi, et al. Software Evolution Through Rapid Prototyping. IEEE Software, May, 1995
7，V.Berzins, Luqi. Using Transformations in Specification-based Prototyping. IEEE Trans. Software Engineering, May,1993
8，Luqi,et al. A Prototyping Language for Real-time Software. IEEE Software, Oct, 1988
9，J.Conklin and M.Begeman. gIBIS: a Hypertext Tool for Exploratory Policy Discussion. ACM Trans. Office Inform. Syst., Vol.6, Oct, 1988,303～331
10，吴明晖, 应 晶, 何志均. 支持可执行定义的进化式软件开发模型. http:\\www.ise.zju.edu.cn\papers
11，杨芙清, 梅 宏, 李克勤等. 支持构件复用的青鸟Ⅲ型系统概述. 计算机科学, 1999(5)
收稿日期：1999年6月20日
