您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 面向对象软件工程的特点及发展
面向对象软件工程方法的特点及发展燕玉林244201222016摘要:这篇文章主要论述了面向对象软件工程方法的特点及发展以及面向对象软件工程方法的出发点和基本原则,和建立三种模型——对象模型、动态模型和功能模型等。关键词:软件工程;软件工程方法1软件工程的历史发展及定义1.1软件工程的历史发展在20世纪六、七十年代,由于软件开发的技术、管理和工程化的落后产生了一系列问题,从而最终引发了软件危机。所谓软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有的软件都不同程度地存在这些问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。越来越多的大型程序系统的出现,使“危机”更加严重。大型程序系统与小型程序相比,二者有着本质的区别。小型程序规模小,个人和几个人就能管理和控制其复杂性,因此可以在较短的时间内完成程序的编制并实现预期的目标。但大型程序系统的程序规模大,由几十、几百个模块组成,模块间的接口较为复杂,常常需要几百个程序员工作几年才能完成。因此,大型程序具有程序大、复杂程度高、研制周期长、可靠性低等特点。这样的程序系统往往是不可维护的,而且许多程序中的错误难以纠正。人们对正确可靠、可维护的软件系统的迫切需求与软件研制的手工作坊方式的矛盾日趋尖锐化。为了解决这一矛盾,人们提出了软件工程的概念。1.2软件工程的定义软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术、方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方面结合起来,经济地开发出高质量的软件并有效地维护它,这就是软件工程。软件工程运用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制造规范、评估成本及确定权衡,管理科学用于计划、资源质量、成本等管理。2软件工程方法软件工程包含技术和管理两方面的内容,是管理与技术的紧密结合。所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。通常把在软件生命周期全过程中使用的一整套技术的集合成为方法学,也称为范型。所谓软件生命周期是指一个软件从定义、开发使用和维护,直到最终被废弃所经历的一段漫长的时期。软件生命周期分为三个时期,每个时期又进一步分成若干个阶段。软件生命周期模型如表1所示。2.1软件计划在设计任务确立前,首先要进行调研和可行性研究,理解工作范围和所花费的代价,然后做出软件计划。2.2软件需求分析对用户要求进行具体分析,确定用户要求软件系统做什么,并用软件需求规格说明书表达出来,作为用户和软件人员之间共同的约定。2.3软件设计根据需求说明建立软件系统的“结构”,包括数据结构和模块结构。这部分又分为总体设计和详细设计两个阶段。其中:总体设计,它决定系统的模块结构,给出模块的相互调用关系,产生软件概要说明书;详细设计,它给出模块内部的细节及功能说明,产生详细设计说明书。2.4软件编码按软件设计的要求为每个模块编写程序。2.5软件测试发现和排除程序中留存的错误,经过测试排错,得到可交付运行的软件。软件测试又分为单元测试和综合测试两个阶段。2.6软件维护经过测试的软件仍然可能有错,另外,用户的需求和系统的操作环境也可能发生变化,因此,交付运行的软件仍然需要继续排错、修改和扩充,这就是软件的维护。软件生命周期各阶段的任务、应完成的工作如表2所示3面向对象软件工程方法3.1面向对象软件工程方法要点面向对象软件工程方法的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的空间(也称为求解域)在结构上尽可能一致,因此,这样的程序易于理解和维护。概括地说,面向对象方法具有下述四个要点:3.1.1把对象作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。3.1.2把所有对象都划分成类。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性,是对象的状态信息,而施加于数据上的操作用于实现对象的动态行为。3.1.3按照父类(或称基类)与子类(或称派生类)的关系,把若干个相关类组成一个层次结构的系统(也称类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。3.1.4对象彼此之间仅能通过发送消息互相联系。对象与传统数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须向它发消息,请求它执行它的某个操作以处理它的数据,而不是从外界直接对它的数据进行处理。也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。总之,面向对象就是既使用对象又使用类和继承等机制,且对象之间仅能通过传递消息实现彼此通信。而面向对象方法就是同时使用对象、类、继承和消息的方法。3.2面向对象建模在解决问题之前必须首先理解所要解决的问题,这是大家都知道的。对问题理解得越透彻,就越容易解决它。当我们完全、彻底地理解了一个问题的时候,通常就已经解决了这个问题。为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。更进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。用面向对象方法开发软件,通常需要建立三种形式的模型,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。这三种模型都涉及数据,控制和操作等共同的概念,只不过每种模型描述的侧重点不同。这三种模型从三个不同但又密切相关的角度模拟目标系统,它们各自从不同侧面反映了系统的实质性内容,综合起来则全面地反映了对目标系统的需求。一个典型的软件系统组合了上述三方面的内容:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。用面向对象观点建立系统的模型,能够促进和加深对系统的理解,有助于开发出更容易理解、更容易维护的软件。3.3面向对象软件开发方法的几个阶段实际上,用面向对象方法开发软件时,阶段的划分是十分模糊的,通常在分析、设计、实现等阶段间多次迭代。3.3.1面向对象分析。面向对象分析(通常缩写为OOA),就是抽取和整理用户需求并建立问题域精确模型的过程。面向对象分析的关键,是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。在面向对象分析中,主要由对象模型、动态模型和功能模型组成。在用面向对象观点建立起的三种模型中,对象模型是最基本、最重要、最内核的。3.3.2面向对象设计。从面向对象分析到面向对象设计(通常缩写为OOD)是一个逐渐扩充的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。面向对象设计可再细分为系统设计和对象设计。系统设计确定实现系统的策略和目标系统的高层结构。对象设计确定解空间中的类、关联、接口形式及实现服务的算法。3.3.3面向对象实现。面向对象实现主要包括两项工作:第一项工作是把面向对象设计结果,翻译成用某种程序设计语言书写的面向对象程序(通常此阶段缩写为OOP);第二项工作是测试并调试面向对象的程序。面向对象程序的质量基本上由面向对象设计的质量决定,但是,所采用的程序设计语言的特点和程序设计风格也将对程序的可靠性、可重用性和可维护性产生深远的影响。目前,软件测试仍然是保证软件可靠性的主要措施,对于面向对象的软件来说,情况也是如此。面向对象软件测试的目标,也是用尽可能低的测试成本和尽可能少的测试方案,发现尽可能多的错误。但是,面向对象程序中特有的封装、继承和多态等机制,也给面向对象软件测试带来一些新特点,增加了测试和调试的难度。综上所述,面向对象软件工程方法可概括为如下的过程:分析用户需求,从问题中抽取对象模型;将模型细化,设计类,包括类的属性和类间相互关系,同时考察是否有可以直接引用的已有类或部件;选定一种面向对象的编程语言,具体编码实现上一阶段的设计,并在开发过程中引入测试,完善整个解决方案。4发展趋势众所周知,现在信息技术范围内最具有深远影响的技术进步是Internet的出现,并迅速发展成为当今世界上覆盖面最广、规模最大、信息资源最丰富的计算机信息网络,深刻地改变了传统的技术以及应用、业务和产业模式,也成为影响21世纪至少初期(前20年)的主要因素。Internet计算平台具有开放、动态、多变的特征,节点的高度自治性,节点链接的开放性和动态性,人、设备和软件的多重异构性,实体行为的不可预测性,使用方式的个性化和灵活性,网络连接环境的多样性等特点,也对传统学科提出挑战:传统软件工程基于实体驱动和确定目标、有序控制的开发模式开始让位于Internet下基于协同驱动和动态目标、实体聚合的面向对象软件开发模式。而且,当软件规模较大,或者对软件的需求是模糊的或随时间变化而变化的时候,使用面向对象工程方法来开发软件的优势便更加显现出来。面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。以面向对象的观点来看,所有的面向对象的程序都是由对象来组成,这些对象首先是自治、自怡的,同时它们还可以互相通信、协调配合,共同完成整个程序的任务和功能。对象概念对软件解决方案也具有莫大的好处,在设计优秀合理的情况下尤其如此。你可以只编写一次代码而在今后反复重用,而在非OOP的情况下,你则多半要在应用程序内部各个部分反复多次编写同样的功能代码。OOP的另一优点是对代码结构的影响。像继承之类的面向对象概念通过简化变量和函数的方式而便利了软件的开发过程。OOP可以更容易地在团队之间划分编码任务。同时,由于采用OOP,辨别子类代码的依附关系也变得更简单了(比如说继承对象的代码)。此外,软件的测试和调试也得以大大简化。用面向对象方法开发软件的过程,是一个主动地多次反复迭代的演化过程。面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡。面向对象方法普遍进行的对象分类过程,支持从特殊到一般的归纳思维过程;通过建立等级而获得的继承性,支持从一般到特殊的演绎思维过程。综上所述,由于面向对象软件工程方法的优点越来越被人们所认同和发现,而且基于面向对象的软件工程方法在实际软件开发中有广泛的应用前景和明显的优势,所以以此为基础开发的软件将成为按传统面向过程方法开发的软件的升级换代产品,成为市场的主流。参考文献[1]张海藩著.软件工程导论(第三版).清华大学出版社,1998.[2]郑人杰、殷人昆著.软件工程概论.清华大学出版社,1998.[3]庞丽萍著.软件开发基础——面向对象技术与操作系统虚拟机.高等教育出版社,1999.[4]RogerS.Pressman著,梅宏译.软件工程实践者的研究方法(原书第五版).机械工业出版社,2002.
本文标题:面向对象软件工程的特点及发展
链接地址:https://www.777doc.com/doc-1980995 .html