面向对象软件开发教程

上传人:无*** 文档编号:130790555 上传时间:2022-08-05 格式:DOCX 页数:14 大小:41.91KB
收藏 版权申诉 举报 下载
面向对象软件开发教程_第1页
第1页 / 共14页
面向对象软件开发教程_第2页
第2页 / 共14页
面向对象软件开发教程_第3页
第3页 / 共14页
资源描述:

《面向对象软件开发教程》由会员分享,可在线阅读,更多相关《面向对象软件开发教程(14页珍藏版)》请在装配图网上搜索。

1、软件是在代码之外发生的一切事情。第11章如何继续学习过程你将从本章学到什么?两千年后(P2K)的软件环境是什么样的?P2K软件环境中的技术和技能是什么?有关P2K技能和技术有哪些概述性的资源?软件专家在面向对象项目中充当什么角色/职位?如何继续面向对象的学习过程?为什么需要阅读本章?你的技能,以及如何使用它们,是能否成为成功的软件专家的重要决定性因素。通过阅读本书,你会获得学习对象技术和技巧所需的基本知识,本章也给你提供了继续进一步学习过程的建议。至此,你已经了解了面向对象的全部内容,现在你已经是一名准备开发大型、关键性任务软件的对象专家。好吧,现在你还不全是。实际上,你已经掌握了一些有用的概

2、念和技能,也明白了它们如何一起使用,在浏览复习题以及案例学习的过程中,你已经使用了它们。目前你正处在有利地位,可以继续你的学习过程,这个过程将很可能贯穿你的整个职业生涯。本章给出了对软件业目前的状况以及将来的发展方向的见解,在接下来的几年中将会需要什么样的技能,要如何才能获得这些技能。11.1 P2K环境在你的整个职业生涯中一直要学习新的技能。软件业在20世纪90年代后半期被Y2K危机严重影响了,新的开发被耽搁下来或者干脆取消,以转移资源解决Y2K危机,结果,许多企业都推退了对采用新的技术和技能的投资。现在Y2K危机已经过去了,我们正面对着两千年后(P2K)的软件环境,一个使用本书中描述的技术

3、支配的环境。在P2K环境中,你将会应用新的方法,例如面向对象的和基于组件的方法,采用迭代和增量方法的新的开发过程,像Java和CORBA这样新的技术,以及像用况建模这样新的技术。本书概述了对象开发技术,本节也总结了用于P2K环境的关键技术和技能。要理解P2K环境,必需考虑下面几项内容:新的软件策略。使能技术。领先的开发技术。现代软件过程。对象编程语言。如何获得P2K技能。定义两千年后(P2K)环境(post-2000environment):机构在IT部门内部部署的一系列技术和技能(大部分是基于面向对象和组件技术的)。2000年(Y2K)危机(year2000crisis):软件组织在20世纪

4、90年代未期要更新或替代那些使用两位数而不是四位数来存储年份的软件。11.1.1 新的软件策略21世纪初期将会由两项关键的软件策略来统治:企业应用集成(EAI)和电子商务。EAI把全异的软件应用集成为一个整体以支持新的和复杂的业务过程。中间件和组件技术,例如下面这节里描述的CORBA和兼容COM+的工具也用于支持EAI。了解EAI的一个好去处是,也可以参考EnterpriseApplicationIntegration(Linthicum,2000)书。包装技术是BuildingObjectApplicationsThatWork(Ambler,1998a)书详细讲述的主题,对于EAI的开发者

5、来说它也是一项重要的技能。电子商务也称为基于Internet的商务,它关注于使用电子技术支持产品销售和服务。电子商务成功的机构有,戴尔公司()一一个计算机软硬件零售商;亚马逊()一一个销售书、录像带、音乐CD的零售商;Ebay网()一一个在线拍卖网站。电子商务最好的资源是杂志TheIndustryStandard(),它以报纸和在线两种形式出版发行。11.1.2 使能技术除了11.1.5节描述的对象编程语言外,还有好几个使能技术也是P2K环境中占主导地位的技术。这些技术有:CORBACOM+EJB(企业Java组件模型)XML持久层/框架.CORBA(公共对象请求代理体系结构)。CORBA是一

6、种由对象管理组(OMG)制定的支持和维护分布式对象的一种标准结构,在20世纪80年代晚期引入。在20世纪90年代早期,CORBA承诺要成为最好的面向对象开发的标准环境,实际上,业已证明CORBA是21世纪初中间件竞技中的一支重要力量。学习CORBA的一个好地方是beginners.htmlo1 .COM+。这是微软组件对象模型(COM)的最新体现。COM是微软的对象链接和嵌入(OLE)以及ActiveX技术的演化,后来COM变成分布式COM(DCOM),现在变成了COM+。COM+是一项专有方法,用于微软平台的分布式组件开发。访问com可以得到一系列基于COM技术的白皮书、演示文稿以及案例学习

7、的链接。.EJB。EJB是一种组件结构,用于开发和部署基于组件的分布式业务应用。遵照EJB结构编写的应用程序是可升级的、可进行事务处理的并且是多用户安全的。这些应用程序可以编写一次,然后就部署到任意支持EJB标准的服务器平台上。EJB让开发人员获得并使用企业类服务来创建关键任务应用。开始学习EJB最好的地方是在线MasteringEnterpriseJavaBeans(Roman,1999)书。.可扩展标记语言(XML)。进行数据共享的一种工业标准方法,对于EAI和电子商务来说这是一种重要的使能技术。网站是开始学习XML最好的地方。.持久层。持久层(也称做持久框架),通过映射元数据使得从永久存

8、储(例如关系数据库)中存储、检索和删除对象得以自动化。如果关系数据库用来存储对象,那么映射元数据会把对象的一条属性与存储对象的数据库表列联系起来。持久层向对象隐藏了数据模式,这会大量减少持久对象所需编写的代码数量,从而增强软件的健壮性并增加开发生产力。在BuildingObjectApplicationsThatWork(Ambler,1998a)书中我详细讨论了持久层,这本书是本系列的第二本书。你可能想下载描述持久层设计的白皮书,我已经把它放在网站/persistenceLayer.html上了。定义中间件(middleware):使得软件可以部署到各不相同的硬件系统中,从而互相通信的一种技

9、术。对象管理组(ObjectManagementGroup,OMG):一个工业认可的标准化实体,负责像统一建模语言(UML)和公共对象请求代理体系结构(CORBA)这样的标准。领先的开发技术作为工作在P2K环境中的开发人员,你很可能会用到下面大多数或所有的开发技术:基于组件的开发(CBD)。增量开发。迭代开发。面向对象。模式。统一建模语言(UML)。以应用为中心的设计。用况建模。.基于组件的开发(CBD)。一种开发方法,其中软件可以作为系列交互组件来部署,每个组件都封装一套预定义的行为。包括面向对象和结构化语言在内的任何一种技术都可能用来实现组件。常见的组件方法包括OMG的CORBA组件模型(

10、CCM),Sun公司的EJB和微软的COM+。开始学习CBD的最好的地方是ComponentSoftware:BeyondObject-OrientedProgramming(Szyperski,1998)书和网站。.增量开发。一种软件开发方法,它把项目组织成几个小的发布版本,而不是以一次“大爆炸”版本发行。这使你能较早地把软件交付给用户,并通过用户对最初版本的反馈来减小项目风险。增量开发已经在第10章中详细讨论过了。.迭代开发。这是软件开发中的一种非顺序方法。换句话说,可以做一点儿需求工程,一点建模,一点实现,一点测试,再一点建模,再一点实现,再一点需求工程,等等。使用迭代开发方法,执行活动

11、的顺序并不是一成不变的。通过把技术用到项目当中它们最起作用的地方,迭代开发减少了项目风险和开发时间。迭代开发已经在第10章中详细讨论过了。.面向对象。软件范型基于下面的概念:软件应该从表示状态(数据)和行为(过程)的对象上创建。面向对象的概念在20世纪60年代后期引入;在20世纪80年代,使用Smalltalk和C+这样的语言后面向对象开始流行;至ij20世纪90年代,C+和Java已经变成了事实上的开发标准。对于对象开发人员来说,网上最有价值的资源是Cetus中对象和组件的链接,。下一步,我推荐阅读ApplyingUMLandPatterns(Larman,1998),它关注于面向对象分析和

12、设计,这些内容分别是本书第6章和第7章的内容,如果想要了解得更详细一点,请参考BuildingObjectApplicationsThatWork(Ambler,1998a)书,这本书从对象开发人员的角度详细讲述了一系列面向对象的专题。.模式。模式是考虑到相关因素的通用问题的解决方案,支持复用经过验证的其他开发人员的技术和方法。模式有许多不同的类型,包括设计模式、分析模式、过程模式、结构模式、组织模式、编程习语甚至还有反模式(经过验证不能起作用的那些方法)。分析模式在第6章中已经讨论过,设计和结构模式在第7章中也讨论过,编程习语在第8章中讨论过,过程模式在第10章中讨论过了。在对象建模世界中,

13、模式组成了建模人员间通用语言的基础。例如,听到“那是Singleton”或“这是一种策略实现”这样的话,你要明白他们所说的Singleton和“策略”设计模式是很常见的。你可以在网站中找到一系列有用的并与模式相关的资源,包括概述和高级主题。.统一建模语言(UML)。UML是一种工业标准建模语言,它定义了面向对象建模的符号和语义。UMLDistilled(Fowler和Scott,1997)是一本极好的对UML技术进行介绍的书,如果对UML有兴趣的话,它也是你在读完本书之后需要阅读的一本书。在BuildingObjectApplicationsThatWork(Ambler,1998a)和Pro

14、cessPatterns(Ambler,1998b)这两本书里,我概述了这些技术以及它们如何配合使用,这与本书中每一个建模章节(第3、6、7章)中我给出的概述概念上相似。如果需要更详细的信息,请访问。我也维护着一个网页,在它上面有一些重要资源的网络链接。7.以应用为中心的设计。一种流线型的系统化的方法,用于设计真正紧密适应用户需求的软件,这些软件不仅更有用也更易使用,并且也更简单更容易创建。本质用况和本质用户界面原型(实物模型)在第3章中讲述过,它们是以应用为中心的设计技术的一些例子,学习这些技术最好的开始是SoftwareforUse(Constantine和Lockwood,1999)一书

15、。1998) 8.用况建模。用况建模是一种需求工程技术,在20世纪90年代早期开始在面向对象开发团体内部流行。正如在第三章中所见,用况模型由用况图和一系列用况组成,用以归档系统需求行为。我所读过的关于用况的最好的书籍是ApplyingUseCases(Schneider和Winters,;我强烈推荐阅读本书。11.1.3 现代软件过程P2K环境的技术和技能很复杂,正如在第10章中所见,要想有效地使用它们,开发人员就需要能够反映这种复杂性的现代软件过程。这些过程包括:极限编程(XP)。面向对象软件过程(OOSP)。OPEN过程。统一过程。.极限编程。一种周密计划的软件开发方法,强调沟通、简化、反

16、馈和自信。XP关注于与用户一起工作、简单但一流的开发以及测试等。学习XP,最好从ExtremeProgrammingExplained(Beck,2000)一书以及网站开始。.面向对象软件过程。第10章中详细讨论过的OOSP是一系列过程模式,它们一起描述用于开发、维护和支持软件的完整过程。OOSP基于下面的概念,大型、关键性任务的软件在整体上是顺序的,局部是迭代的,在Internet时代要交付增量发布版本。OOSP是我的ProcessPatterns(Ambler,1998b)和MoreProcessPatterns(Ambler,1999)两本书的主题。我维护着过程模式资源网页”(Page.

17、html),它对过程模式及其相关资源建立了索引。.OPEN过程。一种复杂而综合的软件过程,由OPEN协会()支持,用于进行有效的软件开发。如果想了解OPEN过程,我建议从TheOPENProcessSpecification(Graham、Henderson-Sellers和Younessi,1997)一书开始。1999) .统一过程。统一过程是一种基于迭代和增量软件开发方法的过程。统一过程的增强生命周期在第10章中已经详细讲过了,它把统一过程技术扩展成一种完整的软件过程,适用于大型、关键性任务的软件。要了解更多关于统一过程的内容,从TheRationalUnifiedProcess(Krut

18、chten,一书开始,然后接着看TheUnifiedSoftwareDevelopmentProcess(JacobsonBooch和Rumbaugh,1999)以及我编写的关于增强生命周期的系列书(Ambler2000a;Ambler2000b;Ambler2000c)。11.1.4 对象编程语言对象编程语言,包括面向对象和基于对象的语言,到目前为止是P2K开发当中用得最多的语言。这些语言包括:C+EiffelJavaObjectCOBOLObjectPascalSmalltalkVisualBasic1.C+。一种混合面向对象编程语言,它在C语言中增加了面向对象的特性。C+用于处理密集型软

19、件应用程序,尤其是系统编程和电子商务开发。C+是P2K开发的一个主要的语言。你可以参阅一系列介绍C+的书,它们当中大部分都贴在上面。对于高级C+,我建议阅读AdvancedC+(Coplien,1992)、EffectiveC+(Meyers,1992)及MoreEffectiveC+(Meyers,1996)等书,因为它们可以教你如何使用C+编写程序。.Eiffel。一种“纯粹的”面向对象编程语言。Eiffel是一种在小范围内流行语言,它只占很小一部分市场份额,常被慎重思考软件工程的机构使用。在eiffel.html可以找到多种Eiffel资源。Eiffel:TheLanguage(Meye

20、r,1992)书是有关Eiffel语言定义的书。.Java。基于概念“WORA”(一次编写,随处运行)的一种面向对象语言。Java软件运行于标准Java虚拟机(JVM)上,这使得不同平台上的移植变为可能。因为Java有着很好的可移植性和多样性(Java代码可以部署在浏览器、应用服务器甚至数据库中),它很可能会成为P2K开发的主要语言。你可以在找到许多有关Java的资源,这些资源包括介绍性的和高级话题。一个很好的在线教程也贴在.ObjectCOBOL。一种混合面向对象编程语言,用面向对象的概念扩展了COBOL。ObjectCOBOL在20世纪90年代一直都不是很稳定,因为COBOL团体过分关注于

21、Y2K危机,而没有关注于先进的技术发展。ObjectCOBOL可能会在供应商引入新的P2K开发工具后重新流行起来。时间会告诉我们一切的。你可以在上找到ObjectCOBOL资源的分类。尤其在你还不是一个有经验的COBOL开发人员时,我觉得Object-OrientedCOBOL(Arranga和Coyle,1996)和StandardObject-OrientedCOBOL(Chapin,1997)这两本书会是开始学习COBOL的好地方。(我在20世纪80年代后期用COBOL语言写程序。嘘千万不要告诉其他人哟!).ObjectPascal。一种混合面向对象编程语言,用面向对象的概念扩展了Pas

22、cab虽然ObjectPascal用得稍微多一点儿,在两千年后发展也可能会继续走好,但它仍是一种小范围使用的语言,不可能在P2K语言市场中成为一个强劲的对手。ObjectPascal的资源可以在找到。2 .Smalltalk。一种纯粹的面向对象编程语言。Smalltalk在20世纪70年代由XeroxParc(Xerox公司的一个研发部门)开发,在20世纪80年代后期开始流行,20世纪90年代开始用于商业软件的开发。Smalltalk由于C+和Java而黯然失色,由于市场而不是技术的关系,在20世纪90年代后期直到现在也只是一种小范围语言。Smalltalk会不会东山再起,这一点是值得怀疑的。

23、你可以在上找到许多与Smalltalk相关的资源。在20世纪90年代中期和早期,我也是一名Smalltalk开发人员,我觉得DiscoveringSmalltalk(Lalonde,1994)和SmalltalkBestPracticePatterns(Beck,1997)两书也是很不错的选择。.VisualBasic。由微软公司开发的一种面向对象编程语言,它使用好几个面向对象的概念扩展了Basic语言。VisualBasic是微软应用程序开发环境的主力军,有些版本可以作为宏语言用于一系列微软自己的产品当中。VisualBasic是P2K环境中一门重要的语言,至少对于编写微软平台的应用程序来说

24、确是如此。开始学习VisualBasic最好的地方在微软的VisualBasicStartPage”网页上:定义Java虚拟机(JavaVirtualMachine,JVM):支持一套已定义指令的抽象计算机器。JVM使得Java可以移植;Java代码被编译成可以在拥有JVM的任意平台上运行的标准字节码。对象编程语言(objectprogramminglanguage):面向对象或基于对象的任意一种编程语言。基于对象的编程语言(object-basedprogramminglanguage):本质上支持一些但并不支持全部面向对象语言特性的任意一种编程语言。例如:VisualBasico面向对象的

25、编程语言(object-orientedprogramminglanguage):本质上支持继承、类、对象、多态和消息传递等面向对象概念的任意一种编程语言。例如:Java和C+。编写一次,随处运行(WriteOnce,RunAnywhere,WORA):关于Java语言的一种市场推销方式,指出Java语言跨平台的本质。11.1.5 Internet开发语言要进行基于Web和电子商务开发,你很可能会用到下面的语言:HTMLPerlCGI脚本.HTML(超文本标记语言)。一种独立于平台的、有着工业标准定义的文件格式,用于共享信息,HTML页是WWW网事实上的标准用户接口方法。NCSA有一个极好的H

26、TML初学者指南贴在网上,它的网址是。.Perl(practicalextractionandreportlanguage,实用信息提取与报告语言)。Perl是一种脚本语言,最初开发目的是用于UNIX系统管理任务的自动化,现在一般用于基于Web的软件开发。Perl包含报表创建设施、编辑和数据操作功能、图形用户界面(GUI)功能、语言功能以及调用其他程序的能力。网页是关于Perl编程语言的一个在线教程,它是开始学习Perl的一个极好的地方。1 .CGI(公共网关接口)。CGI是一种用于在Web表单与程序之间通信的一种简单的协议。网页提供了关于CGI的一个特别好的综述以及使用CGI的方法。定义图形

27、用户界面(GraphicalUserInterface,GUI):由图形组件组成的一种用户界面风格,例如窗口和按钮。11.2 适于特定职位的技能在第10章中看到,软件过程复杂性给开发人员提供了一系列的机会。在本节中,我讨论了某夭你可能会充当的角色以及为了成为这种角色所需要必备的技能。这些角色如下所示:业务分析员(Businessanalyst)IT高级经理(ITseniormanager)对象建模员(Objectmodeler)持久管理员(Persistenceadministrator)持久建模员(Persistencemodeler程序员(Programmer)项目经理(Projectma

28、nager)质保工程师(Qualityassuranceengineer11.2.1 软件架构师(Softwarearchitect)测试工程师(Testengineer业务分析员业务分析员需要需求收集和确认技能,也需要面向对象分析的技能。一名业务分析员要与系统的未来用户一起工作,确定他们的基本业务问题,系统需求,他们可能会怎样使用系统,他们可能需要系统随着时间如何进行演化等。第3章、第4章和第6章(分别讨论了需求收集、需求确认和面向对象分析),描述了业务分析员每天要用到的技术。11.2.2 IT高级经理IT(信息技术)高级经理监督机构内部的工作。他们需要对机构内部使用的技术有一个基本的了解,

29、尤其要对技术蕴含的业务要有所了解,他们必须牢固地掌握机构内部选用的软件过程。IT高级经理必须在可交付品、过程、所需资源、新旧做法之间的区别以及转变到P2K软件开发环境时遇到的风险等方面得到训练。首先,许多IT高级经理实行迭代开发时都遇到了困难,因为大部分开发制品,例如需求模型和软件设计等,是整个项目过程演化出来的,而不是以顺序方式在定义里程碑处交付的。IT高级经理需要训练P2K软件环境中的基本技术和技能,这在11.1节中已经讲述过。理解电子商务对于IT高级经理来说也很关键,因为它很可能就是机构内部关键业务的驱动器。11.2.3 对象建模员对象建模员需要大量建模技能,包括UML和以应用为中心的设

30、计技术以及底层的实现技术。对象建模员负责面向对象软件的分析和设计;这样,他们必须具备熟练的、本书中介绍过的一系列建模技能。过去,看到软件专家专注于某种建模,例如数据建模或过程建模等,这是很常见的现象,但经验表明这种策略不再有效,甚至会产生功能紊乱。统一建模语言定义了许多种模为,因为没有哪个模型单独一个就足够完成所有的需求。只关注于一种类型的模型而不管其他模型,会忽略掉许多关键的建模问题,做出来的软件运行起来也很差或者难以维护。对象建模员必须理解一系列建模技能以及如何综合使用它们。除此之外,他们也需要学会如何有效地应用设计模式、分析模式、结构模式。建模人员必须学会像CORBA、EJB和/或微软的

31、COM+这样的分布式开发技术。建模人员也需要了解以应用为中心的设计技能或至少初步掌握用户界面设计技能。11.2.4 持久建模员持久建模员,在结构化世界里通常称为数据建模人员(datamodeler),负责物理持久模型的开发和维护。对于新的应用,如在第7章中见到的那样,持久建模员需要基于面向对象模型为软件开发物理持久模型。对于与遗留数据模式相关的开发来说,大多数软件项目的准则都是,开发数据模式的模型可能会需要持久建模员(如果他们还没有存在)帮助在对象中做好所需的数据存储映射。持久建模员需要理解UML面向对象模型,如何开发基于面向对象模型的持久模型,如何把对象映射到关系数据库,以及了解用于持久对象

32、的永久存储机制的细微差别。如何把对象映射到关系数据库上在本系列丛书第二本书BuildingObjectApplicationsThatWork(Ambler,1998a)中有描述。11.2.5 持久管理员持久管理员,在结构化世界中也称做数据库管理员(DBA),负责管理支持永久存储机制,因此他们就需要这些产品中的专业知识。持久管理员这个角色的功能,经常扩展到包含由持久层使用的对象-关系映射的管理。由于对象世界中持久建模员责任在逐步减少,持久管理员与持久建模员的角色之间的界限,常常比较模糊。11.2.6 程序员软件程序员的工作是实现及启动测试基于系统模型的源代码。程序员多多少少会要紧密地与建模人员

33、和测试工程师一起工作,这意味着他们至少需要理解面向对象和基于组件建模和测试的基本知识。除此之外,程序员需要在所使用的设计模式、编程习惯用语、编程语言、软件工程基础(例如耦合和内聚这样的概念)等方面接受培训和教育。11.2.7 项目经理项目经理需要对大量技能拥有相关知识。项目经理负责软件项目的机构和管理。他们在工作中面对着复杂的环境:迭代和增量开发技术应用中出现了许多复杂现象。除此之外,更糟糕的是,由于缺乏熟练的软件专家,项目经理发现,组建小组以及人员管理的技能(而不仅仅是进度与估测技能一这些是大多数软件项目管理书籍中的焦点)对于项目的成功来说变得越来越重要了。项目经理需要广泛了解一系列技能,尤

34、其是软件过程中以及人员管理方面的技能。学习项目管理要阅读的一本比较好的书是SoftwareProjectManagement(Royce,1998)。定义永久存储(permanentstorage):一种物理介质,其中的数据可以被保存、检索并删除。对象永久存储机制有可能包括关系数据库、文件和对象数据库。物理存储模型(physicalpersistencemode。:一种模型,也称做物理数据模型(physicaldatamodel),描述你在永久存储机制中要实现的物理数据模式。11.2.8 质保工程师质保工程师需要有开放的思想,以有效遵循迭代和增量开发实践。质保工程师负责保证开发人员根据机构内部

35、公认的标准和过程创建软件。质保工程师要在他们评审的交付品使用的技术方面以及通用软件过程方面接受培训。通用模式的培训也很重要,这样质保工程师就可以检测出模型或文档是否与公认的开发方法相符。11.2.9 软件架构帅存在两种类型的软件架构师:项目软件架构师和企业软件架构师。项目软件架构师关注于基于初始需求的系统软件体系结构的确认和验证,以及机构内部业已存在的企业结构。企业软件体系结构关注机构的软件体系结构,它考虑诸如下面的这类问题:企业应用集成(EAI)、可复用框架以及通用软件基础结构。软件架构师需要在下列方面接受培训和教育:P2K环境中的技术和技能,人员的技能(他们将会支持项目小组及影响高级业务管

36、理),机构的业务基础。要接受与模式(明显的是结构模式)相关的培训,设计、分析、过程模式方面的培训也很重要。你会遇到的一本好书是SoftwareArchitectureinPractice(Bass、Clements和Kazman,1998)。11.2.10 测试工程帅测试工程师需要传统的和面向对象的测试技能,并要具备编写代码使用的开发语言的技能。测试工程师检验软件是否按照需求来构建。测试工程师需要学习大量测试技术,例如第9章给出的全生命周期面向对象测试(FLOOT)方法学等。由于软件变得越来越复杂,机构内部用来验证软件的测试工具和技术变得也越来越复杂。测试工程师需要接受面向对象测试和传统测试技

37、术的培训。他们也需要进行相关编程语言的培训,以使他们可以开发测试套件(并可以看出开发人员的错误,他们常常宣称可以对对象和组件少做一些测试)。需要阅读的一本书是TestingObject-OrientedSystem(Binder,1999),从这本书中你可以得到关于对象测试技术基础的详细介绍。定义设计模式(designpattern):描述通用设计问题解决方案的一种模式。习语(idiom):习语描述如何实现模式中某个部件、该部件的功能或在设计中与其他部件的关系。习语常常特定于某种编程语言。模式(pattern):模式是考虑到相关因素时通用问题的解决方案,它可以有效支持复用其他开发者已经过验证的

38、技术及方法。11.3 继续整个学习过程在软件工业中,准则之一就是软件专家要在工作中学习,这对于你来说也是一种很重要的暗示。尽管一些软件专家足够幸运,可以在愿意为人员培训和教育投资的机构工作,但许多人却没有这样的机会。在本节中,我讨论了可用来继续学习过程的一系列技术方法:参加介绍性培训。获得第一手经验。获得指导。阅读、阅读、再阅读。参加高级培训。定义软件体系结构(softwarearchitecture):包括关于软件系统组织、选择系统结构化元素及其接口的一套重要决策;以及这些元素的结构和行为的定义,元素间关联和交互的定义;元素组合进日益增大的子系统内;引导软件架构师形成结构风格的定义。11.3

39、.1 参加介绍性培训如果可能的话,应该参加一些面向对象技术介绍性质的培训课程。表11-1指定了几门课程及它们的描述,以及按照你考虑参加的顺序进行排列的平均时间长度(假定按一天八小时计算)。考虑到你在机构内部充当的角色,你也可以选择不参加其中的某些课程(例如,业务分析员可以不参加程序课程)表11-1我推荐的简介性面向对象培训课程:介绍面向对象的概念概述第5章中讨论的概念以及本书中给出的技术12天介绍ABC过程概述先进的软件过程(也就是OOSP、统一过程或XP)的基础知识1天介绍面向对象需求和分析应用像用况、建模、用户界面原型、顺序图和类图(在第3章、第4章、第6章中给出)这样技术的面对面培训课程

40、35天介绍面向对象设计应用第7章中讲述的像类建模、状态图建模、协作图建模及持久性建模这样技术的面对面培训课程35天介绍XYZ语言覆盖与你的环境相适应的编程语言(即,Java或C+)基本知识的面对面培训课程510天介绍面向对象测试描述面向对象测试基本知识的面对面培训课程25天11.3.2 获得第一手经验应用在课堂和书中学到的技能。你可以读想读的或者应该读的东西,参加大量培训课程,但只有在尝试它们时你才会真正学到一些东西。如果现在你并没有在使用面向对象技术的项目中工作,那么要么你要转到机构内部别的项目中去,或者找到另一个公司的工作,要么干脆呆在自己家里用对象技术工作。11.3.3 获得指导对象导师

41、是对面向对象很有经验的一部分人,他们可以在学习过程中指导新手,给新手们展示如何使用对象技术和技能。最好的导师有着好多年使用对象技术与技能工作的经验,以及指导经验和良好的沟通技巧。如果你的机构并没有正式的指导过程,实际上很少有机构是这样做的,那么考虑一下自己找个专家,与他们一起紧密工作或寻求他们帮助,学习你所需要的新技能。多数人会很高兴你问他们问题,帮助他人会让他们更加高兴。定义教育(education):教授一般适用于整个学生生涯的技能和知识。指导(mentoring):让有经验的专家直接传授其专业知识给新手的过程。培训(training):给人们(这些人一般都会马上适应充当学生)教授特定的、

42、相对集中的一些技能。提示:理解供应商与客户的工作我的经验是你应该对人们(向你提供输入的和你提供输入的)的工作有一个基本认识。因此,面向对象的设计人员应该理解面向对象分析和面向对象设计的基本知识。提示:参加培训前先阅读你是否曾经注意过,参加课程前做出准备的人(他在参加课程前知道材料的一部分内容)会比不太主动的人学的东西要多呢?我的意见是利用这种观察,在参加任何课程前都要先进行准备。因为培训和教育过程是迭代的,这意味着你将会很快进入“读一些书”、“参加一些培训”、“再读一些书”这样的循环。我在上维护了一个阅读列表,其中包含了支持面向对象入门级、中级、高级课程的图书。在你开始接受培训前,你应该先问一

43、下培训指导教师他们推荐的书籍。11.3.4 以学习小组进行工作学习小组是这样一小组人,他们被指定学习特定的主题。掌握新技能的一种有效方法是以学习小组进行工作,分配好工作的一小组人一起学习某个主题。学习小组常常也会被公司,也可能是人力资源或市场部门请来制作小的应用程序。他们通常花费20%50%的工作时间在小项目上,把剩余的时间投入到当前的职责工作中去。最好的学习小组由不同技能的人组成,他们可能分散在不同地域的系统部门。其中某个人有可能是个经理,另一个人是系统程序员,下一个是分析员,等等。不同领域的技能和背景使得小组可以从几个不同的方向入手来完成学习过程,这样就增加了学习的机会。提示:以前你肯定没

44、做过让他们从一开始就相信自己一直都在从事这些新事情,这对于有经验的程序员,尤其是那些真正做得好的程序员来说很常见。这是因为面向对象软件技术包含了以前你可能已经用到过的非常重要的结构化软件工程原则。熟悉背后的一些原则,这些原则通常会在介绍性的课堂和像本书一样的介绍性书籍中讲授,会使你很容易相信自己一直都在做这件事情,尽管可能事实并不是那样的。1135阅读、阅读、再阅读每个月内至少要读上一本书和几本杂志。我不能强调说为学习付出努力就一定会成功,你必须阅读、阅读、再阅读。应该广泛地阅读书籍。我建议一个月内读完一本书以跟上不断变化的IT工业。我建议阅读一些杂志,例如SoftwareDevelopmen

45、t(我为SD对象专栏撰写文章)和JournalofObject-OrientedProgramming以及JavaDeveloperSJournalo最后,像“Cetus对象和组件链接()这样的网站也提供了面向对象相关信息的大量链接。提示:养成学习的习惯IT工业的变化速度实在是太快了,这使你再也不能仅接受一次培训就坐享其成。应该不断地阅读、参加课程以更新你的技能和经验。11.3.6 参加高级培训经过有实际经验的导师几个月的亲自指导后,在你有了第一手经验的时候,下一步要做的就是回到培训班中参加特定技能的更高级的培训。这些课程或者是表11-1中列出课程的高级版本,或者是专业技术或技能的课程。例如,

46、一门高级建模课程可能关注于设计和分析模式,高级编程课程也会讲述一系列编程技巧。你获得的经验让你了解到,要理解和吸收高级课程中提供的资料。11.4你学到了些什么P2K软件环境很复杂,其中会用到一系列技术和技能。本章介绍了主要的P2K技术和技能,提供了一些很好的信息资源索引,你可以从中了解更多的技术。我也介绍了软件专家在今天的机构内部可能充当的角色,提供了如何择业的看法。最后,给出了继续学习过程的几个策略,同时也给出了增加面向对象和P2K技术等知识的其他方法。11.5告别演说对于今天的软件开发来说,对象技术和面向对象开发技术是标准,而不是特例。本书中介绍了一系列技术,你如果喜欢面向对象的话很容易就会采纳它;但它很复杂。我的一项基本信条是选择通往成功之路是你所做出的最艰难的决定之一。对于软件专家来说,在选择面向对象的同时,你就已经选择了成功。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!