传统的软件工程方法与面向对象的软件工程方法比较_第1页
传统的软件工程方法与面向对象的软件工程方法比较_第2页
传统的软件工程方法与面向对象的软件工程方法比较_第3页
传统的软件工程方法与面向对象的软件工程方法比较_第4页
传统的软件工程方法与面向对象的软件工程方法比较_第5页
全文预览已结束

下载本文档

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

文档简介

传统的软件工程方法与面向对象的

软件工程方法比较刘红霞,刘红艳(大同市职业技术学院计算机系,山西大同037008)摘要:该文介绍了软件工程方法的主要内容,并且对传统的软件工程方法与面向对象的软件工程方法进行比较。关键词:软件工程学;软件工程方法;软件的生存周期;需求分析AContrastBetweentheTraditionalandtheObject-Oriented

MethodologiesofSoftwareEngineeringLIUHongxia,LIUHongyan(ComputerDepartment,DatongVocationalCollege,DatongShanxi,037008)Abstract:Thisarticleisanintroductionofthecontentofthemethodologyofsoftwareengineering,andalsoacontrastbetweenthetraditionalandtheobject-orientedmethodologiesofsoftwareengineering.Keywords:softwareengineering,methodologyofsoftwareengineering,existancecycleofsoftware,demandanalysis,object-oriented自然语言和编程语言之间的鸿沟,是软件开发过程中最难跨越的阶段•早期的软件开发所面临的问题域比较简单•从认识清楚要解决的问题,到把这种认识用程序表达出来,还不是很困难的事情•随着计算机应用领域的拓广,问题域的复杂性急剧膨胀,系统的规模和复杂度空前扩大.无论是对问题域的认识和理解,还是用一种编程语言来描述,其难度都很大,软件的复杂性和其中包含的错误达到了开发人员无法控制的程度,因此出现了

“软件危机”•软件危机的出现,促进了软件工程学的形成和发展•大型软件系统的开发需要包括分析、设计、编程、测试、维护在内的一整套的软件工程理论与技术体系.软件开发是对问题域的认识和描述.从认识事物方面看,软件工程学在分析阶段提供了一些对问题域的分析认识方法•从描述事物方面看,它在分析和设计阶段提供了一些从问题域逐步过渡到编程语言的描述手段.1传统软件工程方法传统的软件工程方法主要指结构化软件工程方法,其主要内容如图1所示:问题域「旨両韵——「旨両韵——需求分折I 分析与设计的鸿沟总体设计详细设计编程语育图1传统软件工程方法示3803一个软件从开始计划起,到废弃不用止,称为软件的生存周期•从上图可以看出,在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段.下面分别就每个阶段进行讨论:1・1需求分析软件工程学中的需求分析具有两方面的意义.在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略.这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效.在描述事物方面,它具有一套表示体系和文档规范.但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析.这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合.因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难.1.2总体设计和详细设计在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,包括决定模块的划分,模块间的数据传送及调用关系•详细设计是在总体设计的基础上考虑每个模块的内部结构及算法•最终将产生每个模块的程序流程图.经过总体设计和详细设计,开发人员对问题域的认识和描述越来越接近于系统的具体实现一一编程•但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致.所谓“从分析到设计的转换”,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而埋藏下隐患.1.3编程和测试编程阶段,是利用一种编程语言产生一个能够被机器理解和执行的系统•测试是发现和排除程序中的错误,最终产生一个正确的系统•但是由于分析方法的缺陷很容易产生对问题域的错误理解,而分析与设计的鸿沟很容易造成设计人员对分析结果的错误转换,所以在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生与他们不同的理解•在实际开发过程中常常看到,后期开发阶段的人员不断地发现前期阶段中的错误,并按照他们的新的理解进行工作,所以每两个阶段之间都会出现不少变化,其文档不能很好的衔接.1.4软件维护这个阶段的工作,一是对使用中发现的错误进行修改,二是因需求发生了变化而进行修改•前一种情况需要从程序逆向追溯到发生错误的开发阶段.由于程序不能映射问题域以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍•第二种情况是一个从需求到程序的顺向过程,它也存在初次开发时的那些困难,并且又增加了理解每个阶段原有文档的困难•无论如何,各种传统的软件工程方法都为自然语言和编程语言之间的鸿沟铺设了一些平坦的路段.它们的优点和缺点,也为面向对象方法提供了有益的借鉴.2面向对象的软件工程方法何谓“面向对象”呢?直接面对问题域中客观存在的事物来进行软件开发,就是面向对象.它符合人们在日常生活中习惯的思维方式和表达方式•面向对象方法是软件理论的返朴归真.面向对象的软件工程方法是面向对象方法在软件工程领域的全面运用•其主要内容,如图2所示.问题域自然语言一-OOA面向对象OOD的编辑语言OOPOO! 计算机图2面向对彖的软件工程方法示竄图下面就其包括的主要内容进行讨论:面向对象的分析OOA(Object-OrientedAnalysis)OOA强调直接针对问题域客观存在的各项事物设立OOA模型中的对象•问题域有哪些值得考虑的事物,OOA模型中就有哪些对象.OOA对问题域的观察、分析和认识是很直接的,对问题域的描述也是很直接的•它所采用的概念及其术语与问题域中的事物保持了最大程度的一致,不存在语言上的鸿沟.面向对象的设计OOD(Object-OrientedDesign)OOD是针对系统的一个具体的实现运用OO方法.它与OOA采用相同的表示法和模型结构.OOA与OOD采用一致的表示法是面向对象的分析与设计优于传统的软件工程方法的重要因素之一•这使得从OOA到OOD不存在转换,只有很局部的修改或调整,并增加几个与实现有关的独立部分,因此OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接,大大降低了从OOA到OOD的难度、工作量和出错率.面向对象的编程OOP(Object-OrientedPrograming)OOP工作就是用同一种面向对象的编程语言把OOD模型中的每个成分书写出来.即用具体的数据结构来定义对象的属性,用具体的语句来实现服务流程图所表示的算法.OOP阶段产生的程序能够紧密地对应OOD模型;OOD模型中一部分对象类对应OOA模型,其余部分的对象类对应与实现有关的因素;OOA模型中全部类及对象都对应问题域中的事物.这样的映射关系提高了开发工作的效率和质量.面向对象的测试OOT(Object-OrientedTest)OOT指对于用OO技术开发的软件,在测试过程中继续运用OO技术,进行以对象概念为中心的软件测试.在测试过程中发掘并利用与OO方法的概念、原则及技术机制有关的语法与语义信息.可以更准确地发现程序错误并提高测试效率.对于用00A和00D建模并由00PL编程的软件,00T可以通过捕捉00A600D模型信息,检查程序与模型不匹配的错误.这一点传统的软件工程方法很难达到.2.5面向对象的软件维护面向对象的软件工程方法为改进软件维护提供了有效的途径.程序与问题域是一致的,各个阶段的表示是一致的,从而大大减少了理解的难度.通过以上的比较,我们可以看到面向对象方法的出现,是人类认识事物的一个返朴归真的过程•面向对象方法不论是从软件开发阶段的开发效率上说,还是从软件维护阶段的系统维护成本考

温馨提示

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

评论

0/150

提交评论