正文

前言~第一章2006-12-28 14:31:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/newstorm/22023.html

分享到:

前言
        面向对象的技术是当前计算机界所关心的重点,是目前软件发展的主流。面向对象的概念来自面向对象的程序设计语言,实际上,面向对象的概念和应用已经超越了程序设计语言,扩展到很宽的范围,如面向对象的数据库系统、面向对象的系统分析与设计、CAD技术、人工智能以及其他广泛的应用范围。本书针对广大软件工作者最为关心的面向对象的技术进行了讨论,从面向对象的理论与应用实践相结合的角度系统地论述了面向对象的基本概念、面向对象的程序设计、UML、设计模式以及面向对象的数据库系统。 
    通过本书的研读,广大读者能够获得面向对象的基本概念、基本原理以及应用技术,了解面向对象的基本应用范围,尤其是对本书所论述的问题有深刻的理解,为涉足上述几个领域奠定雄厚的基础并提供一定的技能。 
本书共由下列部分组成: 
    第一部分:面向对象方法的引入与发展 
    第二部分:面向对象的基本概念及程序设计语言。该部分的主要目的是在于论述面向对象的基本概念,而不是论述面向对象的程序设计语言本身。由于面向对象的基本概念源于面向对象程序设计语言,该部分不可避免地涉及到面向对象的程序设计语言。 
第三部分:面向对象的方法与UML。本章介绍了统一建模语言UML,探讨了利用UML建立静态和动态模型。 
第四部分:面向对象的设计模式。 
过去几年,在面向对象的领域的一个重要突破就是提出了设计模式的概念。设计模式由于实用而受欢迎,他们能够表达和重用专家技术和经验,能进行系统框架设计。本本书介绍了面向对象的设计模式的相关内容以及典型的设计模式。
    第五部分:持久对象:主要探讨如何将对象持久化,如何实现对象和关系的映射。
第一章 面向对象的引入和发展
本书专门讨论面向对象的方法及有关的主要问题。因此,在本章一开始,首先要讨论为什么要引入面向对象的方法及其讨论范围,之后,再讨论面向对象的书四个主要方面:面向对象基础及面向对象程序设计语言,利用UML进行面向对象的分析与设计、面向对象的设计模式、及面向对象的数据库。
1.1 面向对象方法的发展历程
面向对象的方法的研究正在引起全世界越来越强烈地关注和高度重视,被誉为“研究最新技术的好方法”。针对日趋复杂的软件需求的挑战,软件业界开始崇尚利用面向对象的方法和思想进行软件开发。 
与人类发明史上的许多创举不同,面向对象不是瞬间出现的。面向对象不是某个人的突发奇想,而是许多人经历多年研究积累的产物。
    面向对象的方法起源于面向对象的程序设计语言。在20世纪60年代中期Simula-67的设计者Dahl和Nygaard 提出对象(object)的概念,在程序设计语言中开始使用数据封装(data encapsulation)的概念。在20世纪70年代,Liskov使用抽象数据类型(ADT)的理论和实现有了重大的进展,奠定了面向对象的基础。Liskov最著名的研究成果是CLU语言,支持隐藏内部数据表示方法。从20世纪70年代起,Xerox公司的 Palo Alto 研究中心经过对Smalltak72、74、几经连续不断地研究、改革后,在1980年推出了Smalltalk-80,它在系统设计中强调对象概念的统一,引入对象、对象类、方法、实例等概念及术语,采用了动态联编及单继承机制,体现了面向对象方法的许多重要概念,对面向对象方法学的形成和发展起了重大作用。 
于此同时,Bell实验室的B.Stroustrup着手在C语言的基础之上加以扩展,使之成为一个面向对象的语言,定名为C++。由于C语言在80年代已成为通用的开发语言,它不仅可以用于微机,而且可以用于范围很宽的计算机结构及环境,因此在C语言的基础上扩展而成的C++虽然不是纯粹的面向对象语言,却继承了C的语言构造,易学易用,不需特殊的计算机平台。这些比Smalltalk-80明显的优点,受到计算机界的普遍欢迎。许多C++商业版本和工具相继出现,原来阻碍面向对象程序设计语言推广使用的性能价格比问题也顺利地得以解决。所以,C++的问世,促进了面向对象技术的发展。 
java语言与internet有着直接的关系,它采用了类C++的风格,是一个比较严格的面向对象的语言,并且可以跨平台运行。SUN公司的JAVA 2的J2ME、J2SE、J2EE不同的标准,可使得JAVA可以应用在任何平台之上。
    另外,还有一些其它的面向对象的程序设计语言也在80年代相继出现,如objective-C、Eiffel、CommonLOOPS等。 
许多基于框架(Frame-based)的知识表达系统提供了面向对象的特征;Tertronix和Data General公司提供了面向对象辅助设计和工程系统。
象O2、ITASCA及ObjectStore等面向对象的数据库系统,已日趋成熟并已进入商品化。
许多Client/Server数据库开发工具都采用了面向对象的方法与技术,如BORLAND INTERNATIOAL公司的DELPHI、Sybase公司的POWER BUILDER等。
随着互联网技术的不断发展,出现了XML、Webservice等技术,这些互联网技术的技术都是建立在面向对象技术之上的。
在20世纪90年代后期,Grady Booch、Ivar jacobson及Jim Rumbaugh三人尽管他们在面向对象领域各有各自的主张,但是他们通力合作将面向对象用合理的符号表示产生了统一建模语言(Unified Modeling Language, UML),这个图形化的建模语言既有可视的表达形式又有严谨的语义支撑。
1.2 引入面向对象方法的动机
之所以面向对象的方法被广泛采用,部分原因是源于人们长久以来的一个希望:希望面向对象的方法象以前其它的软件开发技术一样,能够满足软件开发对于生产效率、可靠性、易维护性、易管理等方面更高、更快更强的迫切要求。除此之外还有许多原因都促使了它的流行。 
面向对象的方法强调从问题域的概念到软件程序和界面的直接映射;心理学的研究也表明,把客观世界看成许多对象更接近人类的自然思维方式,因此面向对象方法非常易于理解,解决问题更加具有针对性,因此利用面向对象开发的软件具有很好的可维护性、可扩展性和可重用性。因此软件的实现就不是那么复杂了。在面向对象的方法中将数据和功能并在一起考虑,这样的表述非常自然,因此在分析和实现的隔阂变得非常小。 
从另一方面考虑,面向对象的方法取代的过程化的方法而广泛应用,是因为面向对象的方法却是有明显的优点。下面我们探讨一下过程化的方法与面向对象方法的差别。 
在过程化的方法中,系统是围绕着过程来组织的,系统的运行通过过程间的数据传送来实现的,在该方法中过程和数据清除地分开,因此重点分别集中在数据结构、算法和顺序步骤上,因此过程非常难以重用。过程化方法还缺乏强有力的可视化建模技术。该方法在分析和实现不同阶段的概念的差别很大,因此需要进行概念上的转换,因此造成了分析、设计和实现间的范畴移位。设计模型离实现还有很长的一步。 
而面向对象的方法中系统是围绕着对象组织的,系统的运行是通过对象间的消息传递而运行的,相关的数据和行为捆绑在对象中。将问题域建模为对象使得在实现时非常自然地反应现实问题。可视化的模型表达能力非常强使得人们易于理解。支持强有力的概念例如抽象、封装、继承、多态等。可视化的问题模型可以演变为问题解决模型。设计模型距离实现只有很小的一步。
1.3 面向对象方法的益处
面向对象的方法是实用的,但不是万能的,它还不够完美。面向对象的方法虽然充满挑战,但的确是一种有效的软件开发方法。我们不能以一种极端地方式对待面向对象的方法,而应该认真研究面向对象方法,并将面向对象的方法纳入开发软件及其研究的长期计划中去。
下面讨论面向对象对软件开发的主要软件活动的内在影响。
1.3.1 需求分析
结构化技术的过程分析和数据分析之间的边界从未解决。数据流图的过程世界与实体关系图的数据世界难以共存。过程和数据分析在某些场合可以满足要求,而在某些场合就会发生冲突。这种冲突在实时系统模型中尤为突出,如控制过程与数据模型的对应关系经常变得不清晰。
面向对象方法在生命周期的早期就将过程和数据融合在一起。尽管不能明确地称为“过程和数据分析”,但是在谈论面向对象时称“动态和静态分析”更为妥当,使用面向对象概念将这两方面的分析很好地协调起来。所以有人将面向对象中过程和数据的融合比喻成爱因斯坦的相对论中空间和时间的融合,当然这种比喻不太恰当。
1.3.2 系统设计
在系统设计时,面向对象的方法既有优势,又有不足。
面向对象的优势是使设计者将软件中棘手的问题利用封装特性隐藏起来,这些问题包括难以理解的数据结构、复杂的组合逻辑、详细的过程和数据间的关系、高深的算法及关键的设备驱动程序等。面向对象方法的缺点是应用封装和继承性是结构本身变得复杂。缺点与优点相比,缺点反而并不是太突出了。
由于需求分析采用了面向对象的方法,因此系统设计采用面向对象的方法非常自然,这样结合面向对象的开发工具,就可以实现整个软件生命周期的可追踪性。
尽管面向对象的系统设计是非常艰辛的,但一旦完成他,对处理大量复杂单元所带来的益处要多于采用其它设计技术。
1.3.3 软件构造
采用面向对象方法建立系统最长考虑的质量要素是:可重用性、可靠性、健壮性、可扩展性和可维护性等。
(1)    可重用性
   面向对象方法在类的级别上而不是在各子程序级别上提高代码重用来改进软件的可重用性。可以通过开发和建立合适的类库进行重用,这种方法实际上是一种新的符合特定需求的非常高层的语言。
    实际上对象类是一个足够复杂的有机体,可以作为独立的软件单元从公司中的一个应用移植到另一个应用。
(2)    可靠性
 可靠代码的运行具有可重复性和一致性。仅当能用某种方法证明代码的正确性时,代码才可以达到这些质量要求。面向对象的代码采用类的不变式可以断言,借助自身进行验证。类的不变式是指给定类中的每一个对象必须满足条件,例如类Person的不变式可能为dateOfBirth<=todaysDate。
类的不变式使得彻底地验证代码成为可能。在静态分析或检查中,可以验证设计或其结果代码是否满足设想的不变式条件。虽然不可能证明代码绝对正确,但面向对象确实使检查代码的行为变得更加容易。
(3)    健壮性
软件的健壮性是指软件发生故障时的完全恢复能力。典型故障为语句错误、内存错误、外部设备错误及算法溢出。健壮的软件可以捕获异常并执行故障恢复程序。
许多现代的面向对象语言和环境都支持错误检测和处理功能,因此有利于开发健壮的软件。获得健壮的面向对象代码的有效方法是将推断和恒定条件的概念和异常处理的概念相接合。
(4)可扩展性
软件的可扩展性简单地描述为“说明域与实现域之间是同构的”。用通俗的话来说就是解决问题的模型应该满足问题的模型。用户的一些小的改变不会导致主要系统灾难性的后果。当修改面向对象代码时很少会引发其它部分产生的莫名奇妙的问题。由于面向对象基于更高层次上建立软件单元,它更接近与生活的抽象,因此比传统的技术更容易建立同构。
可扩展性经常和继承性一起使用。用户常在已经声明的主题中增加变量对系统进行扩展。使用面向对象技术,可以在已由的超类下增加继承子类的方法实现扩展。
(5)    可维护性
前面四个特性是可维护性的基础。面向对象的方法可以提高前四个方面的质量,因此能够在以下一个方面降低系统的维护开销。
。可重用性降低了企业整个代码维护的费用。
。可靠性减少了用户的不满意和对修改问题的抱怨。
。健壮性确保了软件可维护而不致于在桌面上瘫痪。
。可扩展性迎合了用户修改系统的渐近式倾向,因此用户可以不断地对软件寻求更多的较小的修改。
1.3.4 分布式对象
1989年,面向对象管理组织(OMG)承担了一个十分艰巨的任务;将几十个主要硬件和软件厂商统一在面向对象的可互操作标准上。
其最为显著的成果是公共对象请求代理体系结构(CORBA),这种软件体系结构支持分布在多个平台上的面向对象系统。CORBA可以使对象“互相交谈”,不仅可以在类似的机器上,而且可以运行在不同操作系统或连接不同网络的机器上进行通信。
在CORBA环境中,甚至可以用不同的语言编写类,然后用不同的编译程序编译的方式建立对象。此外最重要的是CORBA提供了各种标准服务,这样省去了编写许多分布式系统必须的冗长代码。
Microsoft公司也推出了类似的标准,叫作COM和DCOM,但是目前只能运行在WINDWS平台。
SUN公司的J2EE标准中的EJB是一个日益被重视的标准。它可以运行在所有的平台之上。
如果两个应用分别使用DCOM分布式对象,而另一个应用使用另一个EJB分布式对象,那么这两个应用是很难进行交互的。为了解决这个问题,出现了Web Service,利用Web Service可以实现将不同的分布式对象进行互相访问。一般来说,Web Service由SOAP(Simple Object Access Protocal)、WSDL(Web Service Description Language)和UDDI(Universal Description, Discovery and Integration)组成。
一个Web Service是一个能够使用XML消息通过网络来访问的Interface, 这个Interface描述了一组可访问的操作。其中SOAP – XML格式的消息交换协议,它描述了消息/文档交换协议以及Web Service对象的面向对象的访问界面。WSDL是基于XML的组件描述,UDDI是可通过Web访问的注册中心,它使用SOAP Message来访问,而WSFL是Web Service间工作流描述。
网格技术,有时又也称网格计算,利用互联网把分散在不同地理位置上的多个计算资源,通过逻辑关系组成一台“虚拟的超级计算机”。这台机器把每一台参与其中的、包括个人电脑在内 的计算机都作为自己的一个“结点”,成千上万个这样的“结点”并联起来,就组成了“一张有超级计算能力的网格”。而每一位将自己的计算机连接到网格上的用 户,也就“拥有了”这架超级计算机,可以随时随地调用其中的计算和信息资源,在获得一体化信息服务的同时,最大程度地实现资源共享。
网格有着非常广泛的应用领域。在科学计算领域,网格可以从分布式超级计算、高吞吐率计算、数据密集型计算等方 面得到应用,解决以前由于高性能计算机规模所限,而不能解决的大规模挑战性问题;在商用计算领域,网格可以在基于广泛信息共享的人与人交互等方面得到应用。未来针对不同的应用目标,会出现不同类型的网格,如计算网格(Computing Grid)、信息网格(Information Grid)、知识网格(Knowledge Grid)、数据网格(Data Grid)、访问网格(Access Grid)、万维网服务(Web Services)等等。
由全球网格论坛(GGF)下属Globus项目组成员联合开发的Globus Toolkit标准工具包,已被公认为当前建立网格系统和开发网格软件事实的参考标准。
2005年发布的Globus Toolkit 4(GT4),实现了WSRF标准。GT4提供API来构建有状态的Web服务,其目标是建立分布式异构计算环境。
1.3.5 面向对象的数据库
建立任何面向对象应用,面向对象的数据库系统都非常有用,特别是对存储非格式化的数据例如声音、图像是更为重要,因为这些数据不适合用标准的表格形式存储。
面向对象的数据库系统可以存储任意的对象类,而且还提供面向对象的封装、继承、多态及其它重要的面向对象特征。大多数面向对象数据库系统提供查询语言。
1.3.6 XML 
XML是标准通用建模语言(SGML)的一个子集。XML在W3C(http://www.w3c.org)网站上都有详细描述。XML只是分层表示文本数据和定义元数据的一种标准化方法。从程序员的观点来看,XML是一种由原数据支持的数据表示,还有一系列解析数据的标准化技术。数据存储在称为XML文档的结构中,元数据用DTD和XML schema定义存储。提供了XML文档的一个简单例子。
<Book>
<Title>Effective C++</Title> 
<Author>
  <Name>Scott Meyers</Name> 
  <Gender>Male</Gender> 
  <Nationality>USA</Nationality> 
  </Author>
  <Publisher>Addison-Wesley</Publisher> 
  </Book>

    当应用系统跨越多个物理服务器时,常常会用XML在应用系统中传递数据。XML还用在企业应用集成(EAI)中,作为在应用之间共享数据的一种方法。在数据文件的持久化存储中,同样会用到XML。而且,在JAVA EE和 .NET中,把XML作为配置文件的做法也很常见,优势甚至也会用在数据库中。
XML最常用的解析方法是DOM,Ducument object model。DOM(文档对象模型)是对XML数据的描述体系,它用树型结构的文档来保存XML数据。所有的XML单元,无论是文档、元素还是属性、文本,在 DOM中都是一个Node(节点)。每个Node都可以包容其他的Node,于是很轻松地就构成了一个树型结构。
1.3.7 Web Service
根据W3C的定义,Web Service是“一项由统一资源标识符确定的软件应用,它使用XML制品来确定、描述和发现界面与绑定、支持在互联网上传送基本XML的消息来与其他软件应用进行交互”。简单地说, Web Service是一种想把全世界的Internet/Intranet变成一个虚拟计算环境的观念和技术。 在由Web Service组成的虚拟环境中使用者可以任何的客户端软件,例如浏览器,一般的Window或是Java应用程序或是电子行动设备等,来调用Web Service提供的服务。而Web Service本身则可以由任何的技术编写,例如开发者可以使用Delphi,Java,C/C++或是C#等的语言和工具来开发。
Web Service是建立在开放和标准的规格之上,允许异质的客户端调用以使用它提供的服务。因此各种异质的客户端必须使用一种共通的沟通标准才能够顺利的和由各种不同技术编写的Web Service互通。目前最流行而且最具潜力的沟通标准当属SOAP了。
SOAP (Simple Object Access Protocol)是由Don Box起草,并且获得IBM,Microsoft,Lotus和UserLand等大型公司支持而成为W3C标准之一的通讯协议规格。从SOAP的名称中我们便可以知道它是让客户端调用远程对象服务的一种机制。SOAP以XML标准封装调用远程服务的格式,有别于其它分布式对象模型调用特定的调用格式,例如CORBA的GIOP以及DCOM的ORPC。由于SOAP以XML封装调用格式,因此它可以使用任何的实体传输层来传送,例如HTTP,TCP或是 SMTP等。
随着通信协议和消息格式在Web中的标准化,以某种格式化的方法描述通信变得越来越重要,其实现的可能性也越来越大。用WSDL定义的一套XML语法描述的网络服务方式满足了这种需求。WSDL把网络服务定义成一个能交换消息的通信端点集。WSDL服务为分布式系统提供了帮助文档,同时该服务也可作为自动实现应用间通信的解决方案。
UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
1.3.8 模型驱动的开发MDA
    MDA(Model Driven Architecture)是模型驱动架构,它是由OMG定义的一个软件开发框架。它是一种基于UML以及其他工业标准的框架,支持软件设计和模型的可视化、存储和交换。和UML相比,MDA能够创建出机器可读和高度抽象的模型,这些模型独立于实现技术,以标准化的方式储存。MDA把建模语言用作一种编程语言而不仅仅是设计语言。MDA的关键之处是模型在软件开发中扮演了非常重要的角色。
    MDA源自于众所周知的把系统操作的规范从系统利用底层平台能力的方式细节中分离出来的思想,MDA提供了一种途径(通过相关的工具)来规范化一个平台独立的系统、规范化平台、为系统选择一个特定的实现平台,并且把系统规范转换到特定的实现平台。MDA的三个主要目标是:通过架构性的分离来实现轻便性、互操作性和可重用性。
     模型驱动架构(MDA)是OMG组织近年来一直热炒的一个新的技术体系,同时也是众多搞软件模型研究人员的一个新热点。MDA(模型驱动)核心的思路是希望通过对商业模型(比如企业信息化或建筑领域的解决方案)的领域研究。进而提炼出一个相对核心的领域模型,同时抽象出一个PIM(平台无关模型)。之后根据不同的开发平台(例如.net或J2EE),应用平台(windows或unix)形成相应的 PSM(平台相关模型)。依照相应的工具,例如 ArcSTyler可以完整地生成相应的代码和软件系统。当然这里只是罗列出一个大致的思路和方法。
MDA中关键性的概念是:模型是由计算机工具转换的,而不是手工转换的。PSM转换成代码的过程是很常见的。例如Together CC从对象模型生成java代码,ERWin从物理数据模型生成定义语言(DDL)。从PIM创建PSM是MDA的创新。
MDA是非常深奥复杂的建模方法,只有少数的优秀开发者才能接受这种方法。对于开发者来说在编码之前就创建形式化模型是很困难的,让他们生成蓝图则更加困难。
    
1.3.9软件使用
图形应用一直是面向对象的主要选择。通常人们通过面向对象实现图形用户界面(GUI),这样做有两个原因,其一是概念,其二是实现。
在概念上面向对象的隐喻较好地符合典型的窗口/鼠标/图形界面。多态性也可以出现在用户界面上。
在实现上,允许用户可以建立窗口/鼠标/图标界面的许多商用软件库都是面向对象语言编写的。由于窗口本身具有许多面向对象的属性,因此大多数窗口界面的开发工具都有通过窗口运行面向对象的痕迹。
如果说面向对象本身增加了软件的易用性不太准确,但可以准确地说,好的图形用户界面增加了软件的易用性,而面向对象的方法是建立支持GUI软件库的最佳途径。
1.3.10 软件项目管理
一般人们都认为,面向对象的方法只是针对软件没技术人员的。其实面向对象的技术对于软件管理者也是非常重要的,例如降低维护开销的技术可以释放管理者的资源,将其投入到待处理的应用中。从软件管理者的角度来看,面向对象的方法不是纯技术的,面向对象的方法既能给组织机构也能给其管理者的工作带来变化。
当一个组织机构采用了面向对象的方法,其组织将发生变化。类的重用需要类库和类库管理人员。每个程序员都要加入两个组中的一个:一个是设计和编写新类组,另一个是应用类创建新应用程序组。面向对象不太强调编程,需求分析相对地将变得更加重要。
作为转向面向对象方法的组织机构的管理者应该意识到组织的变化。让职员适应新的角色,在这些角色中需要管理参与工作的人员,鼓励重用而不主张重复编码。需要给技术人员充足的时间考虑类的设计使得构造的类可以满足重用的要求。总之,应该使用不同的术语、不同的工具和不同的生命周期以及新的目标来管理项目。
如果管理者将面向对象作为一种方法而不是作为一种目标,会取得良好的效果。而面向对象的可维护性、可扩展性健壮性等特点会减少交付时间等诸多益处。作为软件管理者应始终确立目标,并将面向对象作为一种技术来达到预定的目标。
如果在头脑中没有目标,那么面向对象所有事物开销似乎都是昂贵的代价。如果管理者不仅知道做什么而且知道为什么这样做,则一定能实现所追求的面向对象目标。
1.4面向对象潜在的缺点
    面向对象的方法也不是完美的,也有一些不方便的地方:
1.4.1 面向对象需要更关注于需求、分析和设计
    和结构化方法类似,如果要构建出符合用户需要的系统,必须了解用户到底需要什么,因此要做出需求分析,然后根据需求的结构进行分析和实际。利用面向对象的方法必须在分析和实际上下功夫。
1.4.2 面向对象需要完全改变每个人的思想
系统现在都是由相互作用的对象组成的,这完全和结构化的方法不同。千万不要低估这两种方法之间巨大的差异。
1.4.3 面向对象需要改变软件开发文化
    每个开发人员思想的变化实际上反映了开发文化总体上的变化。每个开发人员都是用新的方法,做更多的分析和设计,与自己的用户进行更多的交流。如果这些变化在你的机构里还没有发生,那么当面向对象引入到开发部门时就会经历巨大的企业文化变迁。
1.4.4 面向对象不仅仅是编程
    在改变开发文化的过程中,应更加注重整个系统的开发过程,尤其是分析和实际工作,需要学习如何正确地使用面向对象的方法。这样做起来不容易也不快。
1.4.5 面向对象许多优点是长期的
    增加重用性和可扩展性有助于减少开发时间和成本,当需要扩展和完善软件系统时面向对象的优点就显示出来了。这意味着有些优点所带来的好处必须等待好几年的时间。
1.4.6 面向对象要求先在培训、教育和工具上投资
    软件开发机构必须对开发人员进行培训,要购买面向对象的开发工具、书籍及杂志。这些都需要预先进行一部分投资。这些短期投资和面向对象带来长期回报。
1.4.7 面向对象技术不能保证能构造出正确的系统
    面向对象提供了增加项目成功的可能性,但这仍依靠参与人员的能力。开发人员、用户和管理者每个人都有义务协同工作,营造出适于面向对象开发的一个氛围。
1.4.8 面向对象要求更多的测试工作
面向对象开发本质上就是迭代的,因为可能正在使用对象开发复杂的软件,最终结果可能要花更多的时间来测试。迭代开发需要更侧重于回归测试以及验证老软件在改动后仍能正常工作上。软件越复杂就越需要下力气来验证它。
1.4.9 面向对象仅是解决方案的一部分
    面向对象并不能包含一切事情。要使用计算机辅助软件工程来帮助建模,还需要质量保证活动来确保系统达到用户要求,并且a还要制作出方便用户有效使用系统的界面出来。面向对象不是包治百病的万灵药,它仅是解决方案的一部分。

阅读(2779) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册