计算机辅助软件工程的发展趋势

来源:互联网 发布:火淘宝挖客专家 编辑:程序博客网 时间:2024/06/10 01:57
在本期专题综述栏目里,我们为关心计算机软件工程的读者准备了以下几篇文章。文章作者结合自己从事软件开发活动的体会,对计算机辅助软件工程、软件开发方法、信息系统设计规范等方面的问题进行了探讨。
1.计算机辅助软件工程的发展趋势
2.集成化的CASE环境
3.走向信息系统设计的规范化
4.信息系统可塑理论研究
5.对软件工程中某些问题的重新认识
本期技术纵横:商用可视计算宣言计算机辅助软件工程(Computer Aided Software Engineering,即CASE)技术,是目前计算机界研究的热点之一。进入90年代以来,IBM、DEC、Oracle等各大公司纷纷推出应用于各种不同类型计算机的CASE产品,其发展速度呈直线上升趋势,几乎主宰了整个软件市场。学术界的研究与讨论也异常活跃。从1988年3月IEEE SOFTWARE杂志出了一期专刊以后,五年来,国际上各大学术刊物纷纷发表有关CASE技术及CASE产品的文章。国内
的许多学者在这方面也有较深入的研究和见解。
一、CASE技术的发展历史
CASE技术是软件技术发展的产物。它既起源于软件工具的发展,又起源于软件开发方法学的发展,同时还受到实际应用发展的驱动。
1.应用
CASE是用以支持应用系统开发的,新的应用必然驱动系统开发方法的演变。由于新的开发方法越来越复杂,因而需要强有力的开发工具的支持;反过来,由于使用工具,又使新的开发方法和新的应用系统的开发更加简便。70年代,绝大部分应用系统是用第三代语言写成的批处理系统。随着数据库技术的成熟,更复杂的数据密集型的交互处理系统应运而生,同时出现了帮助用户分析数据的决策支持系统。
80年代,专家系统和基于知识的应用引起第四代语言(4GL)和第四代技术(4GT)的发展,应用系统要求自动推理和自动生成。
90年代,为了使企业适应激烈多变的市场竞争且取得成功,应用系统的开发必须适应企业对功能不断增加和修改的需求,甚至要建立在某一领域内覆盖所有组织层次和各种功能需求的系统。这就需要更加复杂的应用技术,如组合建模、交互图形用户界面的实现等等,这成为CASE技术发展的主要驱动力量。
2.方法
软件开发方法的发展,是沿着结构化方法、面向对象的方法和快速原型法这样一条轨迹进行的。
结构化方法出现于70年代,是支持系统最早的努力之一。由于在系统开发生命周期前期错误所产生的代价太高,因而用于需求分析和设计的结构化技术(SADT)得以产生和发展。但是,许多结构化方法只处理信息系统模型的一个或几个方面,描述问题不太精确并且有二义性。
在80年代中后期,实时系统的设计与面向对象的分析和设计方法的出现,弥补了结构化技术的一些缺陷。面向对象(客体)的程序设计(OOP)其基本观点就是把世界上的一切事物高度抽象为若干客体,每种客体都有自身的特性和活动,各客体因互通信息而相互作用。在数据处理中,客体与活动分别对应数据及其处理。过去传统的方法是将数据与处理截然分割,而这种方法将两者合并于客体概念之中,这样设计出的软件必然是模块化的、可扩充的、可重用的、可移植的,克服了过去由于分析设计与实施割裂所造成的程序编制必须到设计后期才能进行的程序“沉淀”现象。
快速原型法的出现缩短了软件开发周期,提高了软件开发效率。这种方法使用户在大规模的软件开发之前,能够尽快看到未来系统的全貌,了解系统功能及效果,使开发人员可以及时对模型修改、补充,为用户展开新的模型,直到用户为满意为止,形成最终用户产品。
采用原型法开发系统具有众多的优点,但要快速生成原型,必须有软件开发工具的支持,这就进一步推动了CASE工具的发展。
3.工具
70年代早期,第一代CASE工具一般是基于文件的,如系统分析辅助工具PSL/PSA,它可以通过PSL正确地完整地把用户需求描述出来,存入文本文件。然后,通过PSA对该文件进行分析,自动生成需要的各种文件。它不但有助于结构化方法的使用,而且使人们意识到使用自动化工具的必要性。
随着PC机和工作站上图形用户界面的出现,支持结构化方法的前端工具不断出现。但这些早期工具所获取的信息,储存于工具的自身,而在工具之间一般不能进行信息转移。
80年代早期开发的第二代CASE工具,不但能支持使用图形的结构化方法(如支持用于结构化分析的数据流图和用于结构化设计的结构图表),而且通过工程字典的方式使开发信息在不同的CASE工具中共享,但局限于同一制造商的工具。
80年代晚期出现的基于数据库的CASE产品可提供某一业务领域和某一工程水平的信息库。在库中集成一套工具箱,用以规划、分析、设计、编程、测试和维护。但是,这些产品的许多部分,过分地依赖于所使用的方法和仅支持某一特定形式的应用开发。
90年代将是一个CASE系统集成时期,CASE工具发展为CASE环境。
二、CASE工具简介
究竟什么是CASE工具?眼下,几乎把支持软件开发的所有的工具都称作是CASE工具,这是不对的。CASE不可能,也不会离开软件工程而存在,因而一个真正的CASE工具必须是一个软件工程工具。软件工程包括软件的整个生存期,从系统分析、系统设计、代码生成、软件测试到系统维护等各个阶段。CASE工具可以支持生存期中一个阶段的特定活动(如分析、设计或测试等),也可以支持跨越整个生存期的活动(如项目管理和费用估计等)。下面分别介绍一些CASE工具。
1.CASE分析与设计工具
Yourdon公司的Cradle工具是支持Yourdon结构化方法的、用于开发实时信息系统的CASE工具,它不仅支持结构化分析与设计,还支持代码生成及工程管理。
Jackson CASE工具集支持Jackson系统开发方法,从规格说明到建立代码,它包含了四个工具模块。Speedbuilder根据Jackson结构化设计的逻辑和方法用于数据结构分析与定义;JSP Tool和Adaeode支持程序设计与代码自动生成;JSP Workbench用于生成代码的测试。
Curleton大学的Time Bench,Ready Systems的Card Tools都是针对实时系统开发的。Time Bench CASE工具利用图形界面工具与图形语言定义设计结构,然后生成高质量的执行代码,十分直观和方便。
基于图形的CASE工具还有Mark V系统公司的Adagen。它支持面向对象的及传统的Ada开发,它可以通过Buhr图形流程生成代码。而Index Technoiogy公司的Excelerator,不但包括图形界面还与字处理功能相联,支持屏幕报告表设计、图形、字典的输入输出、结构分析、文档生成等,是一个前端工具。
Insoft公司的Prosa CASE工具不仅支持Demarco结构化分析及设计方法学,同时还支持Bachman和Chen的记号和方法用于建模。
2.代码生成工具
代码生成工具以某种抽象形式设计或直接与系统交互的方式从程序员处取得输入,并输出实现一个应用细节的源程序。
Teledyne Brown Engineering公司的Tahs使用抽象去描述实时控制系统,只要设计者详细地提供某些功能,同步代码的细节就可生成。Syscorp International公司的Microstep也是一个类似的工具,用于数据处理领域。
达姆斯达特技术大学的PSG用于生成程序设计环境,用户给它一个语言的非过程描述,它能为该语言生成一个集成化的程序设计环境。
3.测试工具
软件测试是软件开发过程中工作量最大的阶段(约为开发总工作量的40~50%),也是保障软件质量的关键阶段。要实现软件开发自动化,软件测试必须有CASE工具的支持,目前,支持测试过程的工具共有三类:
第一类是为测试提供一个受控的环境。如通用电气公司的RUTE,是通过宿主机来模拟目标系统;而美国科学基金会的TDCAda所采用的思想,是支持特定程序执行的精确的重现。
第二类是测试数据控制。主要思想是决定输入值的何种组合能最彻底地走过系统,而且最大可能地发现缺陷。普陀大学的Mothra就是采用启发式和公共故障模型来产生测试用例的工具。
第三类工具是通过实际执行测试、捕捉与组织所产生的输出。大多数工具在可执行代码上工作,监督它的执行是否符合规格说明。MicrotelResearch公司的Xray/Dx就属于这一类。
4.维护工具
维护工作的关键是如何理解和弄懂别人编写的程序。许多著名的学者指出,理解大程序的工具和技术将是90年代主要的挑战之一。
一种是利用可视化技术,将代码转换为程序设计语言。Tural软件工业公司的Seela就是通过逆向工程实现这种可视化,并生成描述代码结构的高级文档资料。Auburn大学的Gtasp/Ada则从Ada源程序或Ada设计语言提取和生成图形表示,而达到可视化的目的。Mccabe&Associates公司的BattleMap和Act可以图形化所有的控制路径,从而使用户能很快又方便地看到控制流和相应的复杂性。
另一种技术是在一个小的视框中对程序切片进行代码或结构描述。如Array Systems Computing公司的EDSA是一个静态分析器,它能使用户识别感兴趣的结构,然后除去夹在中间的多余代码,使用户能看清程序的大的脉络。
5.用户界面开发工具
用户界面开发工具的任务在于帮助界面设计者进行交互图形界面的说明、设计、产生快速原型、实现、运行、评价、修改和维护。
用户界面开发工具始于UIMS(用户界面管理系统)概念的提出。UIMS的基本思想是,软件的用户界面和应用部分应完全分开,从而可提供专门对用户界面进行管理的系统。
已实现的UIMS系统的功能主要集中于用户界面的屏幕设计和对话控制设计,如Domain/Dialogue、Menulay、Rapid/Use、Syngraph、University of Alberta UIMS:等等。
6.管理工具
“管理”可以有很广的含意,它可以包括项目管理、开发人员管理、以及开发好的或正在开发的软件的管理。
用于软件管理的工具有计划工具和报告工具两类。计划工具是提供和以前完成的工程项目有关的信息,完成诸如成本计算机和关键路径分析这样的繁琐计算工作,从而协助管理人员一项新的工程项目制定计划。报告工具分析机器能够阅读的文档,并且产生某种标准形式的报告。
南加州大学的CASE-PM特别强调项目管理,帮助考虑费用估计、调度和资源管理等问题。
三、集成化发展趋势
工具的集成与提高工具的互操作性代表了当前CASE发展的主要趋势。90年代,CASE工具逐渐发展成为集成化的CASE环境。
1.CASE集成环境的定义
“集成”的概念首先用于术语IPSE(集成工程支持环境),而后用于术语ICASE(集成计算机辅助软件工程)和ISEE(集成软件工程环境)。工具集成是指工具协作的程度。集成在一个环境下的工具的合作协议,包括数据格式、一致的用户界面、功能部件组合控制和过程模型。
(1)界面集成
界面集成的目的是通过减轻用户的认知负担而提高用户使用环境的效率和效果。为达到这个目的,要求不同工具的屏幕表现与交互行为要相同或相似。表现与行为集成,反映了工具间的用户界面在词法水平上的相似(鼠标应用、菜单格式等)和语法水平上的相似(命令与参数的顺序、对话选择方式等)。更为广义的表现与行为定义,还包含两个工具在集成情况下交互作用时,应该有相似的反映时间。
界面集成性的好坏还反映在不同工具在交互作用范式上是否相同或相似。也就是说,集成在一个环境下的工具,能否使用同样的比喻和思维模式。
(2)数据集成
数据集成的目的是确认环境中的所有信息(特别是持久性信息)都必须作为一个整体数据能被各部分工具进行操作或转换。衡量数据的集成性,我们往往从通用性、非冗余性、一致性、同步性、交换性五个方面去考虑。
(3)控制集成
控制集成是为了能让工具共享功能。我们给出了两个属性来定义两个工具之间的控制关系。
供给:一个工具的服务在多大程度上能被环境中另外的工具所使用。
使用:一个工具对环境中其它工具提供的服务能使用到什么程度。
(4)过程集成
过程为开发软件所需要的阶段、任务和活动序列,许多工具都是服务于一定的过程和方法的。我们说的过程集成性,是指工具适应不同过程和方法的潜在能力有多大。很明显,那些极少做过程假设的工具(如大部分的文件编辑器和编译器)比起那些做过许多假设的工具(如按规定支持某一特定设计方法或过程的工具)要易于集成。在两个工具的过程关系上,具有三个过程集成属性:过程段、事件和约束。
2.集成CASE的框架结构
这里给出的框架结构是基于美国国家标准技术局和欧洲计算机制造者协会开发的集成软件工程环境参照模型以及Anthony Wasseerman CASE工具集成方面的工作。
(1)技术框架结构
一个集成CASE环境必须如它所支持的企业、工程和人一样,有可适应性、灵活性以及充满活力。在这种环境里,用户能连贯一致地合成和匹配那些支持所选方法的最合适的工具,然后他们可以将这些工具插入环境并开始工作。我们采用了NIST/ECMA参考模型来作为描述集成CASE环境的技术基础。
在参考模型里定义的服务有三种方式的集成:数据集成、控制集成和界面集成。数据集成由信息库和数据集成服务进行支持,具有共享设计信息的能力,是集成工具的关键因素。
控制集成由过程管理和信息服务进行支持,包括信息传递、时间或途径触发开关、信息服务器等。工具要求信息服务器提供三种通信能力,即工具-工具、工具-服务、服务-服务。界面集成由用户界面服务进行支持,用户界面服务让CASE用户与工具连贯一致地相互作用,使新工具更易于学会和使用。
(2)组织框架结构
工具在有组织的环境下是最有效的。上述技术框架结构没有考虑某些特定工具的功能,工具都嵌入一个工具层,调用框架结构服务来支持某一特殊的系统开发功能。组织框架结构就是把CASE工具放在一个开发和管理的环境中。该环境分成三个活动层次:①在企业层进行基本结构计划和设计;②在工程层进行系统工程管理和决策;③在单人和队组层进行软件开发过程管理。组织框架结构,能指导集成CASE环境的开发和使用,指导将来进一步的研究,帮助CASE用户在集成CASE环境中选择和配置工具,是对技术框架的实际执行和完善。
3.集成CASE环境的策略
集成CASE环境的最终目的是支持与软件有关的所有过程和方法。一个环境由许多工具和工具的集成机制所组成。不同的环境解决集成问题的方法和策略是不同的。Susan Dart等给出了环境的四个广泛的分类:
(1)以语言为中心的环境,用一个特定的语言全面支持编程。
(2)面向结构的环境,通过提供的交互式机制全面地支持编程,使用户可以独立于特定语言而直接地对结构化对象进行加工。
(3)基于方法的环境,由一组支持特定过程或方法的工具所组成。
(4)工具箱式的环境,它由一套通常独立于语言的工具所组成。
这几种环境的集成,多采用传统的基于知识的CASE技术,或采用一致的用户界面,或采用共同的数据交换格式,来支持软件开发的方法和过程模型。目前,一种基于概念模型和信息库的环境设计和集成方法比较盛行,也取得了可喜的成果。
DADIA是一个实验性的信息系统环境,它作为欧洲共同体的ESPRIT系统的一部分来研究CASE环境的集成。它基于概念模型,并通过以过程为中心的开发形成高质的应用系统。概念建模,用面向对象的形式说明、高层文件式界面技术以及自动化原型来实现;以过程为中心的开发是通过过程模型,在概念定义过程中抽象出开发对象,并获得系统如何进行开发的知识。DADIA有一个称作概念库的信息(Concept Base),它在两个层次上考虑集成。在形式说明层次上,它用模型通过对象结构、规则和限制来使语言、方法和工具相关联。在实施层次上,它用从数据库技术引出的触发概念来集成外部工具。
信息库是CASE环境的核心部分,它在整个CASE集成策略中具有极其重要的作用。信息库一般是传统字典系统的扩充和发展,它不但保留了传统字典存储各种实体(主要指数据和数据定义)的功能,而且还增加了存储对象和方法的信息。
这方面的典型产品有DEC公司推出的集成化CohesionCASE,其中的信息库(Digital Reposition)可支持DEC数据库系统的定义、建立、应用程序原码的生成及对所有工具提供的接口服务。Oracle公司推出的CASE*Method,其中的信息库是一个分布式多用户资料库。它可帮助系统开发者收集、管理、存储系统开发过程中的信息,如数据定义、功有需求、设计分析、决策处理和实现的细节。
在国内,华东化工学院开发的EASYCODE是一个基于概念模型的集成CASE环境。它提供了三个方面的模型:应用模型、过程模型和信息模型。其中的信息模型就是一个综合的软件信息库,用于存放应用开发和维护中所需要的各种信息,包含有四个子库:软件知识库、软件配置库、环境工具库和应用数据库。该集成环境适用于事务处理及管理信息系统(DP/MIS)领域的应用开发,并已投入使用。
从1991年开始,我们利用约20个人年,开发研制了“管理信息系统集成化生成工具——MISIGT”。MISIGT是一个交互式的软件生成系统,它提供了一个机界面极其友好的控制框架,支持应用系统的描述定义和自动生成。其总体结构(系统模型)主要由系统定义、系统生成器、例行程序包(构件库)、数据库、信息库(语义表)五部分组成。它包含了生成工具集成系统所具备的三种方式的集成:即数据集成、控制集成和界面集成。数据集成由信息库和数据库进行支持,具人共享设计信息的能力,是集成工具的关键因素。信息库提供了许多基本服务,包括对象、实体和链路描述的语义,以及关系的存储和管理等。
界面集成由用户界面服务进行,它相当于交互系统的命令接收器,完成数据库定义和表语义定义。这里说的表是一个广义的表。MISIGT认为凡是在计算机终端显示或打印的具有一定格式和功能的数据操作过程即为一个表。这些表分为八类,即菜单表、简单输入表、简单输出表、辅助输入表、辅助输出表、图形表、网络服务表和复合表。它们是经过对MIS软件进行领域分析而抽出来的概念。对应着事务处理中的具体对象,具有公共性和基本性。表定义的信息以语义表的形式存入信息库备用。定义中包括图形设计、表域线识别、文字与表达式输入等,靠图、表、文编辑器支持。
控制集成由过程管理和系统生成器进行支持,它包括信息传递,时间、途径或顺序的触发开关,以及工具使用与构件调度机制等。系统生成器由各构件的调度工具和基于语言环境的可重用例行程序库组成。当触发生成开关时,构件调度工具扫描定义部分生成的各语义表,按照一定的策略选取合适的例行程序构件,调用语言环境及其支持程序库生成一个能独立运行的MIS。
0 0
原创粉丝点击