软件工程与CASE工程综述_第1页
软件工程与CASE工程综述_第2页
软件工程与CASE工程综述_第3页
软件工程与CASE工程综述_第4页
软件工程与CASE工程综述_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程综述论文软件工程概论论文:软件工程与CASE工程综述摘要:首先介绍了自60年代末期以来软件工程中采用的结构化方 法、面向对象方法学、实体关系方法、面向事件方法、形式化方法以 及近年来多种方法的结合研究,然后介绍了自80年代中期以来软件工程中采用的CASE技术的发展情况,最后指出今后的软件工程应该 是“方法学+CASE技术”的结合,并且很有可能在今后的软件工程 中,CASE技术将占据主导地位。关键词:软件工程计算机辅助软件工程结构化方法面向对 象方法学实体关系方法面向事件方法形式化方法1软件危机的出现和软件工程的提出40年代中期到60年代中期是计算机系统发展的第一个时期。在 这一时期中,

2、通用的计算机硬件已经相当普遍,软件则是为每个具体 的应用问题而专门编写的。这一时期的软件通常是规模比较小的程 序,编写者和使用者往往是同一个人或同一组人,软件开发具有明显的个体化特征。60年代中期到70年代中期为计算机系统发展的第二个时期。 这一时期的一个重要特征是出现了 “软件作坊”,广泛使用产品软件。 但是,“软件作坊”基本上还是沿用早期形成的个体化的软件开发方 法。随着计算机应用的不断扩展,软件数量不断膨胀,并出现了许多 始料不及的问题:要花费大量的时间和精力去修改程序中的错误,要 忙于修改程序以满足用户提出的新的需求, 为了跟上硬件平台的改变 或操作系统的更新而不得不修改程序以适应新的

3、环境。凡此种种维护工作在整个计算机系统中所占的比重越来越大。更为严重的是:许多软件的个体化特征使得它们最终成为不可维护的。这样,就开始出现了软件危机(Software Crisis)。为了摆脱软件危机的困境,北大西洋公约组织(NA-TO)的科学委员会于1968年召开了有关的研讨会,首次提出了 “软件工程” (Software Engineering)的概念,其主要思路是:要把人类长期以来从 事各种工程项目所积累起来的行之有效的原理、概念、技术和方法, 特别是人类从事计算机硬件研究和开发的经验教训,应用到软件的开发和维护中来。下面介绍软件工程方法学的发展过程。2软件工程方法学的历史发展自从196

4、8年首次提出并使用“软件工程”这个术语以来,研究 软件工程的专家和学者们相继提出了100多条有关软件工程的准则或信条。著名的软件工程专家B.W.Boehm综合这些专家和学者们的意见并总结了 TRW公司多年来开发软件的经验,于1983年在他的1篇论文中提出了软件工程的7条基本原理。这7条基本原理是确保软件产品质量和开发效率的原理的最小集合,而且可以证明在此之前已经提出的100多条软件工程原理都可以由这7条原理的任意组合蕴含或派生。以下是Boehm提出的软件工程的7条基本原理:1用分阶段的生命周期计划严格管理。2坚持进行阶段评审。3实施严格的产品控制。4采用现代程序设计技术。5结果应能清楚地审查。

5、6开发小组的成员应该少而精。7承认不断改进软件工程实践的必要性。Boehm指出:遵循前6条基本原理,就能够按照当代软件工程基 本原理实现软件的工程化生产,但是,仅有前6条原理并不能保证软 件开发与维护的过程能赶上时代前进的步伐和跟上技术的进步。因 此,他提出应把承认不断改进软件工程实践的必要性作为软件工程的 第7条基本原理。按照第7条原理,我们不仅要积极主动地采纳新的 软件技术,而且要注意不断总结经验。经过近30年的软件工程实践,人们已经成功地采用了多种软件 工程方法。软件工程方法学是一组思路、规范、过程、方法、工具和 环境的集成。一个好的方法学应该能为软件开发过程从头到尾提供一 整套提高效率

6、的途径。采用好的方法学可以为随后的整个软件工程带 来好的结构、好的可靠性和可维护性。从方法论的基本理论思路来看, 目前已有如下几种方法:1. 结构化方法(StructuredM ethods)。2. 面向对象方法学(Object-Oriented Methodology)。3实体关系方法(Entity-Relationship Approach)。4. 面向事件方法(Event-Oriented Approach)。5. 形式化方法(Formal Methods)。下面首先对这几种方法进行简单介绍,然后对结构化方法、面向 对象方法和形式化方法的结合研究进行简单讨论。2.1结构化方法结构化方法是

7、基于软件工程生命周期的概念基础之上的。目前根据软件工程生命周期中的不同阶段已形成了一整套的结构化方法系 列,即结构化分析方法(StructuredAnalysis)、结构化设计方法 (Structured D esigning)和结构化程序设计方法(Structured Programming),简写为SA-SD-SP方法。结构化方法是一种传统的开 发方法。它的本质是功能分解,这种方法是围绕实现处理功能的“过 程”来构造软件系统的。传统的结构化方法假定开发人员一开始就能 确定系统的需求,而且这些需求不会发生变化(或只允许有很少的变 化)。也就是说,传统的结构化方法是从软件开发人员的观点出发,

8、它忽略了最终用户的观点。由于软件逐渐变得容易使用,现在人们已 能使用更好的方法将用户的领域知识和分析人员的技术知识结合起 来以实现有效的软件系统,如采用下面要介绍的面向对象方法。2.2面向对象方法近年来,人们对面向对象方法进行了广泛的研究,面向对象方法学也日益受到人们的重视。使用这种方法学能够开发出稳定性好、可重用性好和可维护性好的软件(采用传统的SA-SD-SP方法开发出的 软件的稳定性、可重用性和可维护性都比较差)。面向对象方法学的出发点和基本原则是,尽可能模拟人类习惯的思维方式,使开发软件 的方法与过程尽可能接近人类认识世界的方法与过程,也就是说,要使得描述问题的问题空间与在计算机上解决

9、问题的问题空间在结构 上尽可能一致。概括地说,面向对象方法有下列几个要点:1客观世界是由各种对象组成的,任何事物都是对象,复杂的对 象可以由比较简单的对象以某种方式组合起来。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对 象由比较简单的对象组合而成。2把所有的对象都划分为各种类(Class),每个类都定义了一组数 据和一组方法。数据用于表示对象的静态属性,描述对象的状态信息; 方法是对象所能执行的操作,也就是类中所能提供的服务。3按照子类(也称为派生类)和父类(也称为基类)的关系,把若干个 类组成一个层次结构的系统(也称为类等级)。在这种类层次结构中, 通常下层

10、的派生类具有和上层的基类相同的特性(包括数据和方法),我们把这一特性称为继承(Inheritanee)。4对象与对象之间只能通过传递消息互相联系。以上4个要点概括了面向对象方法学的精华。面向对象方法学可 用一个公式概括为:ObjectOrie nted=Objects+Classes+l nherita nces+Com muni catio n With Messages面向对象方法学现已形成了一整套的开发方法,它由面向对象分析(Object-Oriented Analysis)、面向对象设计(Object-Oriented Designing)、面向对象程序设计(Ob-ject-Orien

11、ted Programming)等组 成。面向对象方法学中的概念和表示符号可以适用于整个软件开发过程(在传统的结构化方法中,在开发过程的不同阶段要转换概念和表 示符号)。实际上,在面向对象方法学中,软件开发阶段的划分是比较模糊的,通常要在分析、设计与实现等阶段间多次迭代。面向对象 方法学既适用于线性的“瀑布模型”,也适用于“螺旋模型”和“渐 增模型”(结构化方法一般采用“瀑布模型”)。2.3实体关系方法实体关系方法最初是1976年由P.S.Cher提出的一种数据库逻辑 设计方法。实体关系方法使用实体关系(ER)模型对来自现实世界问题 中的信息进行分析。ER方法涉及如下一些基本的抽象概念:1.

12、实体(Entity):是现实世界中可以相互区别的事物。它可以是实际 存在的事物(如人、物等);也可以是抽象的和概念性的事物(如一笔存、 取款交易等);还可以是实体与实体之间的联系(即下面要介绍的“关 系”)。实体可以用属性,也可以用关系来定义。2. 属性(Attribute):指实体具有的某种或多种特性。3. 关系(Relatio nship):指实体与实体之间的某种联系。ER方法虽然最初是为进行数据库系统设计提出来的,但其主要 思路是如何建立现实世界的信息模型,因此,它对于信息系统的抽象和开发具有广泛的指导意义。2.4面向事件方法面向事件方法的核心概念是“刺激一反应”这一概念。事件(Even

13、t) 是对系统的“刺激”,而系统由受刺激而产生的动作及其输出则是 “反 应”。我们可以说“反应”是系统状态的迁移,引起系统状态改变的 条件或动作(即“刺激”)就是事件。一个状态迁移还可以引起另一个 状态迁移,即刺激产生反应,反应又可以成为新的刺激。按照这种思想建立的系统也称为事件驱动的系统(Event-Driven Sys-tem)。面向 事件方法是实时系统常用的开发方法。2.5形式化方法计算机被越来越多地用于解决那些故障可能会导致严重后果(包括危及生命)的一些任务当中。计算机在控制宇宙飞船、航天器、火 车、汽车、核反应堆和医疗设备等等的应用中起着重要的作用。在这 些系统中,要求计算机系统是完

14、全可靠的是非常重要的。提高计算机软件可靠性的一种重要技术是使用形式化方法(Formal Methods)。近年来,国外对形式化方法在软件开发中的研究与应用进行了大量的实 践工作,形式化方法已不再只是一种研究所里的学术研究工作,而是已经开始被工业界接受并用于开发实际的系统(real systems),国外已有包括形式化方法、形式化语言和形式化工具在内的比较成熟的形 式化系统,如VDM系统、Z系统、RAISE系统等。下面对RAISE 系统进行简单介绍。RAISE(Rigorous Approach to In dustrial SoftwareE ngin eeri ng)翻译 成中文就是“面向工

15、业软件工程的严格方法” RSL(RAISE Specification Lan guage)是 一种适于工业界使用的功能强大、应用面很 广的规范说明语言。RSL与其相关的开发方法(即RAISE)和支持工具 (Tool) 一起,最初是作为丹麦和英国的一些公司的一项合作项目 (1985-1990年间的RAISE ESPRIT项目)开发出来的。这一方法和技 术后来在6个欧洲国家的一些公司的 LaCos ESPRIT项目(1990-1995 年)中得到进一步完善和发展。当前这一方法和技术已被工业界采用,在欧洲和北美的其它一些公司和研究机构也开始使用和讲授RSL语言。下面介绍使用RAISE形式化方法开发

16、软件的几个主要的阶段。1形式化分析(Formal Analysis)。形式化分析阶段根据用户需求 (Requirements得到最初的规范说明(initialspecification)。形式化分析 一般米用自然语言如英语书写,得到 RSL描述。2形式化设计(Formal Design)。形式化设计阶段从最初的规范说明逐步演进到最终的规范说明(final speci-fication)。从最初的规范说 明到最终的规范说明之间可能要经过若干步骤。每前进一个步骤,规范说明由抽象变得更为具体,但总是与最初的规范说明保持一致。在形式化设计阶段,相关的一项很重要的工作就是要做若干“证明” 6ustifi

17、cation)。在RAISE中,一个“证明”是表示某一条件为真的判 断。这样一个判断可以是完全形式化的,也就是说,它是一个基于RSL证明规则的一个数学证明。在 RAISE中,一个“证明”也可以 用非形式化的方式给出,这时要求它对于相关的工业应用来说满足实 际的或是经济上的约束条件。这时,我们假定:这样的条件理所当然 是正确的。当然,如果有人提出怀疑,我们应该也能给出完全的形式 化证明。这也是RAISE这种方法为什么称为Rigorous俨格的)的原因。3翻译(Translation)。翻译阶段将最终规范说明转换为计算机上可 执行的程序。一旦有了用 RSL语言表示的最终规范说明,我们就可 以采用某

18、种程序设计语言产生实现代码。原则上讲,实现语言可以是 任何一种语言,可以是逻辑程序设计语言如Prolog语言,可以是函数式语言如Lisp语言,可以是传统的过程式语言如Ada语言,也可 以是现今流行的面向对象语言如 C+语言等。在RAISE系统中,现 已在将最终规范说明翻译为 Ada语言和C+语言方面做了大量卓有 成效的工作。2.6结构化方法、面向对象方法和形式化方法的结合研究传统的结构化方法是软件工程中最为成熟的方法。对于能够预先 指定需求的系统的开发,采用传统的结构化方法非常有效;但是,对于需求是模糊的或随时间变化的系统开发,实践证明这种方法不能适 应。因此,结构化方法还不能完全克服软件危机

19、。对于需求不能预先 指定的系统的开发,人们又提出 T原型化(Prototyping)的开发方法。 原型化方法便于系统开发者与最终用户进行沟通,因而能够开发出最 终真正满足用户需求的系统。从实用的角度出发,原型化方法一般与 新型的面向对象方法结合,那样就能够结合面向对象方法所具有的稳 定性好、可重用性好和可维护性好的特点。 对于安全性要求很高的应 用(近年来这类应用系统的开发不断增多,特别是实时系统和并发系 统),则近年来提出了许多形式化方法(形式化规范说明和证明技术)。 形式化方法具有定义完备的语义,可以使用数学方法对其进行分析, 尤其是能够采用一致性和完备性技术识别潜在的说明问题。软件工程的

20、理论和实践发展到今天,已经有各种各样的软件开发 方法可以采用。如何利用各种方法的长处,从而实现优势互补,则是 摆在我们面前的一个新的课题。现在已经有人开始对各种方法的结合 进行研究。文献S)提出了一门 SOFL (Structured -Object -based -FormalLa nguage)语言和一种集成了结构化方法、面向对象方法和形 式化方法于一体的SOFL开发方法学。SOFL方法学在需求分析和规 范说明阶段采用结构化方法,在设计和实现阶段采用面向对象方法, 在软件开发过程中一些对软件质量有重要影响的部分采用形式化方 法。文献5还给出了实际系统的开发实例,证明了 SOFL方法是 一种

21、行之有效的方法。3 CASE的诞生及其发展CASE(Computer Aided Software En gi neeri ng)即计算机辅助软件 工程,旨在实现软件开发自动化,是进入90年代以来计算机行业中发展最快的行业之一。如果说起源于 60年代后期的“软件工程”经 过20多年的发展,完成了将软件开发从“手工作坊”的软件开发方 式转变为“工程化”的作业方式,这是软件生产的第一次变革的话, 那么,以CASE代替仍然处于手工作业方式的软件工程开发方法,可 以说是软件生产的第二次变革。CASE技术的意义不仅在于使得软件 工程过程自动化,它还关系到软件工程的进一步发展。 软件工程方法 学有可能有突

22、破性发展的一些技术和方法学领域,如面向对象方法 学、软件重用技术、原型化和模拟仿真技术、可视化开发技术、第四 代语言等等,都需要 CASE的支持。CASE这个术语是1986年才开 始使用的。但是,由于软件工程从一开始就是软件工程方法学与相应 工具的集成,所以,实际上,早 (上接第6页)在CASE这个术语使用之前,CASE就已经存在,只是 80年代中期以来它的发展越来越快,作用也越来越大罢了。下面对 CASE技术的发展历史作一简单介绍。要追溯CASE技术的发展历史是离不开软件工程的发展过程的70年代以前的软件工程成果主要是在程序开发方面确定了结构化方 法及其标准。70年代以后,为了解决程序员不足

23、的“人员恐慌”的 问题,不仅进一步改进了软件工程开发方法学,而且开始出现了以简化程序编制工作为宗旨的第四代语言(4GL),大大提高了编程效率。 下面是从进人80年代开始CASE技术发展的四个时期的简要描述。1第一个时期:80年代初期。这一时期从软件自动化工具的特点 而言,可称其为“孤立型”,即各工具大多是孤立存在,彼此没有信 息交换,且以分析、设计阶段的辅助工具为主,例如文档自动生成器、 图表自动生成器等。2第二时期:80年代中期。这一时期最重大的成果是系统信息中 心库(Repository)概念的引人,这使得彼此孤立的工具开始有了信息交 换环境的支持,推动了从分析到设计的软件工程上游阶段开发

24、工具的 一体化,即CASE上游工具的集成。人们将这一特征的CASE称为“扩 充型”的CASE。3第三个时期:80年代后期。这一时期有代表性的是把应用程序 开发、维护自动化与项目管理工具结合起来的重视标准化的“接口型”的工具集成环境。4第四个时期:90年代初期开始到现在。这一时期明确了CASE的最终目标是“以结构化方法学为基础,统一使用开发支持工具,实 现软件开发全过程的自动化”,开始了逼近终点的全面挑战。例如在 解决软件工程各阶段间信息交换和信息一致性问题上引人了“百科全书”(En-cyclopedia),在使结构化方法可视化上使用图形工具,在软 件工程开发方法学与CASE工具统一化上使用了人工智能(AI)技术等 等。总之,90年代以后软件工程与CASE的基本动向就是二者的统 一,即方法学和自动化工具的统一,故称为“统一型”。4展望CASE技术的发展有待于软件工程方法学的发展, 但CASE技术 的发展又促进着软件工程方法学的进一步发展。 今后的软件工程应该 是“方法学+CASE技术”,而且,随着CASE技术在软件工程中的作 用不断扩大和深化,很有可能在今后的软件工程中,CASE技术将占据主导地位。参考文献1张海藩软件工程导论(第三版)北京:清华大学出版社,19982赵晓华软件开发自动化技术

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论