
软件工程综述论文软件工程概论论文:软件工程与CASE工.doc
13页软件工.程综述论文软件工程概论论文:软件工程与CASE工程综述摘要:首先介绍了自60年代末期以来软件工程中采用的结构化方法、面向对象方法学、实体关系方法、面向事件方法、形式化方法以 及近年来多种方法的结合研究,然后介绍了自80年代中期以来软件 工程中采用的CASE技术的发展情况,最后指出今后的软件工程应该 是“方法学+CASE技术”的结合,并且很有可能在今后的软件工程 中,CASE技术将占据主导地位关键词:软件工程计算机辅助软件工程结构化方法面向对 象方法学实体关系方法面向事件方法形式化方法1软件危机的出现和软件工程的提出40年代中期到60年代中期是计算机系统发展的第一个时期在 这一时期中,通用的计算机硬件已经相当普遍,软件则是为每个具体 的应用问题而专门编写的这--时期的软件通常是规模比较小的程 序,编写者和使用者往往是同一个人或同一组人,软件开发具有明显 的个体化特征60年代中期到70年代中期为计算机系统发展的第二个时期 这一时期的一个重要特征是出现了 “软件作坊”,广泛使用产品软件 但是,“软件作坊”基本上还是沿用早期形成的个体化的软件开发方 法随着计算机应用的不断扩展,软件数量不断膨胀,并出现了许多 始料不及的问题:要花费大量的时间和精力去修改程序中的错误,要 忙于修改程序以满足用户提出的新的需求,为了跟上硬件平台的改变 或操作系统的更新而不得不修改程序以适应新的环境。
凡此种种维护 工作在整个计算机系统中所占的比重越来越大更为严重的是:许多 软件的个体化特征使得它们最终成为不可维护的这样,就开始出现 了 软件危机(Software Crisis)o为了摆脱软件危机的困境,北大西洋公约组织(NA-TO)的科学委 员会于1968年召开了有关的研讨会,首次提出了 “软件工程” (Software Engineering)的概念,其主要思路是:要把人类长期以来从 事各种工程项目所积累起来的行之有效的原理、概念、技术和方法, 特别是人类从事计算机硬件研究和开发的经验教训,应用到软件的开 发和维护中来下面介绍软件工程方法学的发展过程2软件工程方法学的历史发展自从1968年首次提出并使用“软件工程”这个术语以来,研究 软件工程的专家和学者们相继提出了 100多条有关软件工程的准则 或信条著名的软件工程专家B.W.Boehm综合这些专家和学者们的 意见并总结了 TRW公司多年来开发软件的经验,于1983年在他的1 篇论文中提出了软件工程的7条基本原理这7条基本原理是确保软 件产品质量和开发效率的原理的最小集合,而且可以证明在此之前已 经提出的100多条软件工程原理都可以由这7条原理的任意组合蕴含 或派生。
以下是Boehm提出的软件工程的7条基本原理:1 .用分阶段的生命周期计划严格管理2 .坚持进行阶段评审3.实施严格的产品控制4 .采用现代程序设计技术5 .结果应能清楚地审查6 .开发小组的成员应该少而精7 .承认不断改进软件工程实践的必要性Boehm指出:遵循前6条基本原理,就能够按照当代软件工程基 本原理实现软件的工程化生产,但是,仅有前6条原理并不能保证软 件开发与维护的过程能赶上时代前进的步伐和跟上技术的进步因 此,他提出应把承认不断改进软件工程实践的必要性作为软件工程的 第7条基本原理按照第7条原理,我们不仅要积极主动地采纳新的 软件技术,而且要注意不断总结经验经过近30年的软件工程实践,人们已经成功地采用了多种软件 工程方法软件工程方法学是一组思路、规范、过程、方法、工具和 环境的集成一个好的方法学应该能为软件开发过程从头到尾提供一 整套提高效率的途径采用好的方法学可以为随后的整个软件工程带 来好的结构、好的可靠性和可维护性从方法论的基本理论思路来看, 目前巳有如下几种方法:1 .结构化方法(Structured M ethods)2. 面向对象方法学(Object-Oriented Methodology) o3 .实体关系方法(Entity-Relationship Approach)。
4 .面向事件方法(Event-Oriented Approach) o5 .形式化方法(Formal Methods)下面首先对这儿种方法进行简单介绍,然后对结构化方法、面向对象方法和形式化方法的结合研究进行简单讨论2.1结构化方法结构化方法是基于软件工程生命周期的概念基础之上的目前根据软件工程生命周期中的不同阶段已形成了一整套的结构化方法系 列,即结构化分析方法(StructuredAnalysis)、结构化设计方法 (Structured D esigning)和结构化程序设计方法(Stroctured Programming),简写为SA-SD.SP方法结构化方法是一种传统的开 发方法它的本质是功能分解,这种方法是围绕实现处理功能的“过 程”来构造软件系统的传统的结构化方法假定开发人员一开始就能 确定系统的需求,而且这些需求不会发生变化(或只允许有很少的变 化)也就是说,传统的结构化方法是从软件开发人员的观点出发, 它忽略了最终用户的观点由于软件逐渐变得容易使用,现在人们已 能使用更好的方法将用户的领域知识和分析人员的技术知识结合起 来以实现有效的软件系统,如采用下面要介绍的面向对象方法。
2.2面向对象方法近年来,人们对面向对象方法进行了广泛的研究,面向对象方法 学也日益受到人们的重视使用这种方法学能够开发出稳定性好、可 重用性好和可维护性好的软件(采用传统的SA-SD-SP方法开发出的 软件的稳定性、可重用性和可维护性都比较差)面向对象方法学的 出发点和基本原则是,尽可能模拟人类习惯的思维方式,使开发软件 的方法与过程尽可能接近人类认识世界的方法与过程,也就是说,要 使得描述问题的问题空间与在计算机上解决问题的问题空间在结构 上尽可能一致概括地说,面向对象方法有下列几个要点:1 .客观世界是由各种对象组成的,任何事物都是对象,复杂的对 象可以由比较简单的对象以某种方•式组合起来因此,面向对象的软 件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对 象由比较简单的对象组合而成2. 把所有的对象都划分为各种类(Class),每个类都定义了一组数 据和一组方法数据用于表示对象的静态属性,描述对象的状态信息; 方法是对象所能执行的操作,也就是类中所能提供的服务3. 按照子类(也称为派生类)和父类(也称为基类)的关系,把若干个 类组成一个层次结构的系统(也称为类等级)。
在这种类层次结构中, 通常下层的派生类具有和上层的基类相同的特性(包括数据和方法), 我们把这一特性称为继承(Inheritance)4 .对象与对象之间只能通过传递消息互相联系以上4个要点概括了面向对象方法学的精华面向对象方法学可 用一个公式概括为:0bject0riented=0bjects4-Classes+Inheritances+Communication With Messages面向对象方法学现已形成了一整套的开发方法,它由面向对象分 析(Object-Oriented Analysis)、面向对象设计(Object-Oriented Designing)> 面向对象程序设计(Ob-ject-Oriented Programming)等组 成面向对象方法学中的概念和表示符号可以适用于整个软件开发过 程(在传统的结构化方法中,在开发过程的不同阶段要转换概念和表 示符号)实际上,在面向对象方法学中,软件开发阶段的划分是比 较模糊的,通常要在分析、设计与实现等阶段间多次迭代面向对象 方法学既适用于线性的“瀑布模型”,也适用于“螺旋模型”和“渐 增模型”(结构化方法一般采用“瀑布模型”)。
2.3实体关系方法实体关系方法最初是1976年由P.S.Chen提出的一种数据库逻辑 设计方法实体关系方法使用实体关系(ER)模型对来自现实世界问题 中的信息进行分析ER方法涉及如下一些基本的抽象概念:1 .实体(Entity):是现实世界中可以相互区别的事物它可以是实际 存在的事物(如人、物等);也可以是抽象的和概念性的事物(如一笔存、 取款交易等);还可以是实体与实体之间的联系(即下面要介绍的“关 系”)实体可以用属性,也可以用关系来定义2 .属性(Attribute):指实体具有的某种或多种特性3 .关系(Relationship):指实体与实体之间的某种联系ER方法虽然最初是为进行数据库系统设计提出来的,但其主要 思路是如何建立现实世界的信息模型,因此,它对于信息系统的抽象 和开发具有广泛的指导意义2.4面向事件方法面向事件方法的核心概念是“刺激一反应”这一概念事件(Event) 是对系统的“刺激”,而系统由受刺激而产生的动作及其输出则是“反 应”我们可以说“反应"是系统状态的迁移,引起系统状态改变的 条件或动作(即“刺激”)就是事件一个状态迁移还可以引起另一个 状态迁移,即刺激产生反应,反应又可以成为新的刺激。
按照这种思 想建立的系统也称为事件驭动的系统((Event-Driven Sys-tem)面向 事件方法是实时系统常用的开发方法2.5形式化方法计算机被越来越多地用于解决那些故障可能会导致严重后果(包 括危及生命)的一些任务当中计算机在控制宇宙飞船、航天器、火 车、汽车、核反应堆和医疗设备等等的应用中起着重要的作用在这 些系统中,要求计算机系统是完全可靠的是非常重要的提高计算机 软件可靠性的一种重要技术是使用形式化方法(Formal Methods)□近 年来,国外对形式化方法在软件开发中的研究与应用进行了大量的实 践工作,形式化方法已不再只是一种研究所里的学术研究工作,而是 已经开始被工业界接受并用于开发实际的系统(real systems)o国外 已有包括形式化方法、形式化语言和形式化工具在内的比较成熟的形 式化系统,如VDM系统、Z系统、RAISE系统等下面对RAISE 系统进行简单介绍RAISE(Rigorous Approach to Industrial SoftwareEngineering)盖羽译 成中文就是“面向工业软件工程的严格方法"RSL(RAISE Specification Language)是一种适于工业界使用的功能强大、应用面很 广的规范说明语言。
RSL与其相关的开发方法(即RAISE)和支持工具 (Tool)一起,最初是作为丹麦和英国的一些公司的一项合作项目 (1985-1990年间的RAISE ESPRIT项目)开发出来的这一方法和技 术后来在6个欧洲国家的一些公司的LaCos ESPRIT项目(1990-1995 年)中得到进一步完善和发展当前这一方法和技术已被工业界采用, 在欧洲和北美的其它一些公司和研究机构也开始使用和讲授RSL语 言下面介绍使用RAISE形式化方•法开发软件的几个主要的阶段1 .形式化分析(Formal Analysis) □形式化分析阶段根据用户需求 (Requirements)得到最初的规范说明(initialspecification)形式化分析 一般采用自然语言如英语书写,得到RSL描述2 .形式化设计(Formal Design) □形式化设计阶段从最初的规范说 明逐步演进到最终的规范说明(final speci-fication)□从最初的规范说 明到最终的规范说明之间可能要经过若干步骤每前进一个步骤,规 范说明由抽象变得更为具体,但总是与最初的规范说明保持一致在 形式化设计阶段,相关的一项很重要的工作就是要做若干“证明” 6ustification)o在RAISE中,一个“证明”是表示某一条件为真的判 断。
