面向对象软件开发教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件是在代码之外发生的一切事情。
第11章
如何继续学习过程
你将从本章学到什么?
●两千年后(P2K)的软件环境是什么样的?
●P2K软件环境中的技术和技能是什么?
●有关P2K技能和技术有哪些概述性的资源?
●软件专家在面向对象项目中充当什么角色/职位?
●如何继续面向对象的学习过程?
为什么需要阅读本章?
你的技能,以及如何使用它们,是能否成为成功的软件专家的重要决定性因素。
通过阅读本书,你会获得学习对象技术和技巧所需的基本知识,本章也给你提供了继续进一步学习过程的建议。
至此,你已经了解了面向对象的全部内容,现在你已经是一名准备开发大型、关键性任务软件的对象专家。
好吧,现在你还不全是。
实际上,你已经掌握了一些有用的概念和技能,也明白了它们如何一起使用,在浏览复习题以及案例学习的过程中,你已经使用了它们。
目前你正处在有利地位,可以继续你的学习过程,这个过程将很可能贯穿你的整个职业生涯。
本章给出了对软件业目前的状况以及将来的发展方向的见解,在接下来的几年中将会需要什么样的技能,要如何才能获得这些技能。
11.1 P2K环境
在你的整个职业生涯中一直要学习新的技能。
软件业在20世纪90年代后半期被Y2K危机严重影响了,新的开发被耽搁下来或者干脆取消,以转移资源解决Y2K危机,结果,许多企业都推迟了对采用新的技术和技能的投资。
现在Y2K危机已经过去了,我们正面对着两千年后(P2K)的软件环境,一个使用本书中描述的技术支配的环境。
在P2K环境中,你将会应用新的方法,例如面向对象的和基于组件的方法,采用迭代和增
量方法的新的开发过程,像Java和CORBA这样新的技术,以及像用况建模这样新的技术。
本书概述了对象开发技术,本节也总结了用于P2K环境的关键技术和技能。
要理解P2K环境,必需考虑下面几项内容:
●新的软件策略。
●使能技术。
●领先的开发技术。
●现代软件过程。
●对象编程语言。
●如何获得P2K技能。
定义
两千年后(P2K)环境(post-2000 environment):机构在IT部门内部部署的一系列技术和技能(大部分是基于面向对象和组件技术的)。
2000年(Y2K)危机(year 2000 crisis):软件组织在20世纪90年代未期要更新或替代那些使用两位数而不是四位数来存储年份的软件。
11.1.1 新的软件策略
21世纪初期将会由两项关键的软件策略来统治:企业应用集成(EAI)和电子商务。
EAI 把全异的软件应用集成为一个整体以支持新的和复杂的业务过程。
中间件和组件技术,例如下面这节里描述的CORBA和兼容COM+的工具也用于支持EAI。
了解EAI的一个好去处是,也可以参考《Enterprise Application Integration》(Linthicum,2000)一书。
包装技术是《Building Object Applications That Work》(Ambler,1998a)一书详细讲述的主题,对于EAI的开发者来说它也是一项重要的技能。
电子商务也称为基于Internet的商务,它关注于使用电子技术支持产品销售和服务。
电子商务成功的机构有,戴尔公司()—一个计算机软硬件零售商;亚马逊()—一个销售书、录像带、音乐CD的零售商;Ebay网()—一个在线拍卖网站。
电子商务最好的资源是杂志《The Industry Standard》(),它以报纸和在线两种形式出版发行。
11.1.2 使能技术
除了11.1.5节描述的对象编程语言外,还有好几个使能技术也是P2K环境中占主导地位的技术。
这些技术有:
● CORBA
● COM+
● EJB(企业Java组件模型)
● XML
●持久层/框架
1.CORBA(公共对象请求代理体系结构)。
CORBA是一种由对象管理组(OMG)制定的支持和维护分布式对象的一种标准结构,在20世纪80年代晚期引入。
在20世纪90年代早期,CORBA承诺要成为最好的面向对象开发的标准环境,实际上,业已证明CORBA是21世纪初中间件竞技中的一支重要力量。
学习CORBA的一个好地方是beginners.html。
2.COM+。
这是微软组件对象模型(COM)的最新体现。
COM是微软的对象链接和嵌入(OLE)以及ActiveX技术的演化,后来COM变成分布式COM(DCOM),现在变成了COM+。
COM+是一项专有方法,用于微软平台的分布式组件开发。
访问com可以得到一系列基于COM 技术的白皮书、演示文稿以及案例学习的链接。
3.EJB。
EJB是一种组件结构,用于开发和部署基于组件的分布式业务应用。
遵照EJB 结构编写的应用程序是可升级的、可进行事务处理的并且是多用户安全的。
这些应用程序可以编写一次,然后就部署到任意支持EJB标准的服务器平台上。
EJB让开发人员获得并使用企业类服务来创建关键任务应用。
开始学习EJB最好的地方是在线/products/ejb以及《Mastering Enterprise JavaBeans》(Roman,1999)一书。
4.可扩展标记语言(XML)。
进行数据共享的一种工业标准方法,对于EAI和电子商务来说这是一种重要的使能技术。
网站是开始学习XML最好的地方。
5.持久层。
持久层(也称做持久框架),通过映射元数据使得从永久存储(例如关系数据库)中存储、检索和删除对象得以自动化。
如果关系数据库用来存储对象,那么映射元数据会把对象的一条属性与存储对象的数据库表列联系起来。
持久层向对象隐藏了数据模式,这会大量减少持久对象所需编写的代码数量,从而增强软件的健壮性并增加开发生产力。
在《Building Object Applications That Work》(Ambler,1998a)一书中我详细讨论了持久层,这本书是本系列的第二本书。
你可能想下载描述持久层设计的白皮书,我已经把它放在网站/persistenceLayer.html上了。
定义
中间件(middleware):使得软件可以部署到各不相同的硬件系统中,从而互相通信的一种技术。
对象管理组(Object Management Group,OMG):一个工业认可的标准化实体,负责像统一建模语言(UML)和公共对象请求代理体系结构(CORBA)这样的标准。
11.1.3 领先的开发技术
作为工作在P2K环境中的开发人员,你很可能会用到下面大多数或所有的开发技术:
●基于组件的开发(CBD)。
●增量开发。
●迭代开发。
●面向对象。
●模式。
●统一建模语言(UML)。
●以应用为中心的设计。
●用况建模。
1.基于组件的开发(CBD)。
一种开发方法,其中软件可以作为系列交互组件来部署,每个组件都封装一套预定义的行为。
包括面向对象和结构化语言在内的任何一种技术都可能用来实现组件。
常见的组件方法包括OMG的CORBA组件模型(CCM),Sun公司的EJB和微软的COM+。
开始学习CBD的最好的地方是《Component Software:Beyond Object-Oriented Programming》(Szyperski,1998)一书和网站。
2.增量开发。
一种软件开发方法,它把项目组织成几个小的发布版本,而不是以一次“大爆炸”版本发行。
这使你能较早地把软件交付给用户,并通过用户对最初版本的反馈来减小项目风险。
增量开发已经在第10章中详细讨论过了。
3.迭代开发。
这是软件开发中的一种非顺序方法。
换句话说,可以做一点儿需求工程,一点建模,一点实现,一点测试,再一点建模,再一点实现,再一点需求工程,等等。
使用迭代开发方法,执行活动的顺序并不是一成不变的。
通过把技术用到项目当中它们最起作用的地方,迭代开发减少了项目风险和开发时间。
迭代开发已经在第10章中详细讨论过了。
4.面向对象。
软件范型基于下面的概念:软件应该从表示状态(数据)和行为(过程)的对象上创建。
面向对象的概念在20世纪60年代后期引入;在20世纪80年代,使用Smalltalk 和C++这样的语言后面向对象开始流行;到20世纪90年代,C++和Java已经变成了事实上的开发标准。
对于对象开发人员来说,网上最有价值的资源是Cetus中对象和组件的链接,。
下一步,我推荐阅读《Applying UML and Patterns》(Larman,1998),它关注于面向对象分析和设计,这些内容分别是本书第6章和第7章的内容,如果想要了解得更详细一点,请参考《Building Object Applications That Work》(Ambler,1998a)一书,这本书从对象开发人员的角度详细讲述了一系列面向对象的专题。
5.模式。
模式是考虑到相关因素的通用问题的解决方案,支持复用经过验证的其他开发人员的技术和方法。
模式有许多不同的类型,包括设计模式、分析模式、过程模式、结构模式、组织模式、编程习语甚至还有反模式(经过验证不能起作用的那些方法)。
分析模式在第6章中已经讨论过,设计和结构模式在第7章中也讨论过,编程习语在第8章中讨论过,过程模式在第10章中讨论过了。
在对象建模世界中,模式组成了建模人员间通用语言的基础。
例如,听到“那是Singleton”或“这是一种策略实现”这样的话,你要明白他们所说的Singleton和“策略”设计模式是很常见的。
你可以在网站中找到一系列有用的并与模式相关的资源,包括概述和高级主题。
6.统一建模语言(UML)。
UML是一种工业标准建模语言,它定义了面向对象建模的符号和语义。
《UML Distilled》(Fowler和Scott,1997)是一本极好的对UML技术进行介绍的书,如果对UML有兴趣的话,它也是你在读完本书之后需要阅读的一本书。
在《Building Object Applications That Work》(Ambler,1998a)和《Process Patterns》(Ambler,1998b)这两本书里,我概述了这些技术以及它们如何配合使用,这与本书中每一个建模章节(第3、6、7章)中我给出的概述概念上相似。
如果需要更详细的信息,请访问。
我也维护着一个网页,在它上面有一些重要资源的网络链接。
7.以应用为中心的设计。
一种流线型的系统化的方法,用于设计真正紧密适应用户需求
的软件,这些软件不仅更有用也更易使用,并且也更简单更容易创建。
本质用况和本质用户界面原型(实物模型)在第3章中讲述过,它们是以应用为中心的设计技术的一些例子,学习这些技术最好的开始是《Software for Use》(Constantine和Lockwood,1999)一书。
8.用况建模。
用况建模是一种需求工程技术,在20世纪90年代早期开始在面向对象开发团体内部流行。
正如在第三章中所见,用况模型由用况图和一系列用况组成,用以归档系统需求行为。
我所读过的关于用况的最好的书籍是《Applying Use Cases》(Schneider和Winters,1998);我强烈推荐阅读本书。
11.1.4 现代软件过程
P2K环境的技术和技能很复杂,正如在第10章中所见,要想有效地使用它们,开发人员就需要能够反映这种复杂性的现代软件过程。
这些过程包括:
●极限编程(XP)。
●面向对象软件过程(OOSP)。
● OPEN过程。
●统一过程。
1.极限编程。
一种周密计划的软件开发方法,强调沟通、简化、反馈和自信。
XP关注于与用户一起工作、简单但一流的开发以及测试等。
学习XP,最好从《Extreme Programming Explained》(Beck,2000)一书以及网站开始。
2.面向对象软件过程。
第10章中详细讨论过的OOSP是一系列过程模式,它们一起描述用于开发、维护和支持软件的完整过程。
OOSP基于下面的概念,大型、关键性任务的软件在整体上是顺序的,局部是迭代的,在Internet时代要交付增量发布版本。
OOSP是我的《Process Patterns》(Ambler,1998b)和《More Process Patterns》(Ambler,1999)两本书的主题。
我维护着“过程模式资源网页”(Page.html),它对过程模式及其相关资源建立了索引。
3.OPEN过程。
一种复杂而综合的软件过程,由OPEN协会()支持,用于进行有效的软件开发。
如果想了解OPEN过程,我建议从《The OPEN Process Specification》(Graham、Henderson-Sellers和Younessi,1997)一书开始。
4.统一过程。
统一过程是一种基于迭代和增量软件开发方法的过程。
统一过程的增强生命周期在第10章中已经详细讲过了,它把统一过程技术扩展成一种完整的软件过程,适用于大型、关键性任务的软件。
要了解更多关于统一过程的内容,从《The Rational Unified Process》(Krutchten,1999)一书开始,然后接着看《The Unified Software Development Process》(Jacobson、Booch和Rumbaugh,1999)以及我编写的关于增强生命周期的系列书(Ambler 2000a;Ambler 2000b;Ambler 2000c)。
11.1.5 对象编程语言
对象编程语言,包括面向对象和基于对象的语言,到目前为止是P2K开发当中用得最多的语言。
这些语言包括:
● C++
● Eiffel
● Java
● Object COBOL
● Object Pascal
● Smalltalk
● Visual Basic
1.C++。
一种混合面向对象编程语言,它在C语言中增加了面向对象的特性。
C++用于处理密集型软件应用程序,尤其是系统编程和电子商务开发。
C++是P2K开发的一个主要的语言。
你可以参阅一系列介绍C++的书,它们当中大部分都贴在上面。
对于高级C++,我建议阅读《Advanced C++》(Coplien,1992)、《Effective C++》(Meyers,1992)及《More Effective C++》(Meyers,1996)等书,因为它们可以教你如何使用C++编写程序。
2.Eiffel。
一种“纯粹的”面向对象编程语言。
Eiffel是一种在小范围内流行语言,它只占很小一部分市场份额,常被慎重思考软件工程的机构使用。
在eiffel.html可以找到多种Eiffel 资源。
《Eiffel: The Language》(Meyer,1992)一书是有关Eiffel语言定义的书。
3.Java。
基于概念“WORA”(一次编写,随处运行)的一种面向对象语言。
Java软件运行于标准Java 虚拟机(JVM)上,这使得不同平台上的移植变为可能。
因为Java有着很好的可移植性和多样性(Java代码可以部署在浏览器、应用服务器甚至数据库中),它很可能会成为P2K开发的主要语言。
你可以在找到许多有关Java的资源,这些资源包括介绍性的和高级话题。
一个很好的在线教程也贴在/docs/books/ tutorial/index.html上,我强烈推荐《The Elements of Java Style》(Vermeulen等,2000)一书,这本书也是本系列丛书中的第五本。
4.Object COBOL。
一种混合面向对象编程语言,用面向对象的概念扩展了COBOL。
Object COBOL在20世纪90年代一直都不是很稳定,因为COBOL团体过分关注于Y2K危机,而没有关注于先进的技术发展。
Object COBOL可能会在供应商引入新的P2K开发工具后重新流行起来。
时间会告诉我们一切的。
你可以在上找到Object COBOL资源的分类。
尤其在你还不是一个有经验的COBOL开发人员时,我觉得《Object-Oriented COBOL》(Arranga和Coyle,1996)和《Standard Object-Oriented COBOL》(Chapin,1997)这两本书会是开始学习COBOL的好地方。
(我在20世纪80年代后期用COBOL语言写程序。
嘘……千万不要告诉其他人哟!)5.Object Pascal。
一种混合面向对象编程语言,用面向对象的概念扩展了Pascal。
虽然Object Pascal用得稍微多一点儿,在两千年后发展也可能会继续走好,但它仍是一种小范围使用的语言,不可能在P2K语言市场中成为一个强劲的对手。
Object Pascal的资源可以在找到。
6.Smalltalk。
一种纯粹的面向对象编程语言。
Smalltalk在20世纪70年代由Xerox Parc (Xerox公司的一个研发部门)开发,在20世纪80年代后期开始流行,20世纪90年代开始用于商业软件的开发。
Smalltalk由于C++和Java而黯然失色,由于市场而不是技术的关系,在20世纪90年代后期直到现在也只是一种小范围语言。
Smalltalk会不会东山再起,这一点是值得怀疑的。
你可以在上找到许多与Smalltalk相关的资源。
在20世纪90年代中期和早期,我也是一名Smalltalk开发人员,我觉得《Discovering Smalltalk》(Lalonde,1994)和《Smalltalk
Best Practice Patterns》(Beck,1997)两书也是很不错的选择。
7.Visual Basic。
由微软公司开发的一种面向对象编程语言,它使用好几个面向对象的概念扩展了Basic语言。
Visual Basic是微软应用程序开发环境的主力军,有些版本可以作为宏语言用于一系列微软自己的产品当中。
Visual Basic是P2K环境中一门重要的语言,至少对于编写微软平台的应用程序来说确是如此。
开始学习Visual Basic最好的地方在微软的“Visual Basic Start Page”网页上:/vbasic。
如果你是一名VB开发人员的话,那么你会发现在那之后《Developing Applications with Visual Basic and UML》(Reed,1999)一书也很不错。
定义
Java虚拟机(Java Virtual Machine,JVM):支持一套已定义指令的抽象计算机器。
JVM使得Java 可以移植;Java代码被编译成可以在拥有JVM的任意平台上运行的标准字节码。
对象编程语言(object programming language):面向对象或基于对象的任意一种编程语言。
基于对象的编程语言(object-based programming language):本质上支持一些但并不支持全部面向对象语言特性的任意一种编程语言。
例如:Visual Basic。
面向对象的编程语言(object-oriented programming language):本质上支持继承、类、对象、多态和消息传递等面向对象概念的任意一种编程语言。
例如:Java和C++。
编写一次,随处运行(Write Once,Run Anywhere,WORA):关于Java语言的一种市场推销方式,指出Java语言跨平台的本质。
11.1.6 Internet开发语言
要进行基于Web和电子商务开发,你很可能会用到下面的语言:
● HTML
● Perl
● CGI脚本
1.HTML(超文本标记语言)。
一种独立于平台的、有着工业标准定义的文件格式,用于共享信息,HTML页是WWW网事实上的标准用户接口方法。
NCSA有一个极好的HTML初学者指南贴在网上,它的网址是。
2.Perl(practical extraction and report language,实用信息提取与报告语言)。
Perl是一种脚本语言,最初开发目的是用于UNIX系统管理任务的自动化,现在一般用于基于Web的软件开发。
Perl包含报表创建设施、编辑和数据操作功能、图形用户界面(GUI)功能、语言功能以及调用其他程序的能力。
网页是关于Perl编程语言的一个在线教程,它是开始学习Perl的一个极好的地方。
3.CGI(公共网关接口)。
CGI是一种用于在Web表单与程序之间通信的一种简单的协议。
网页提供了关于CGI的一个特别好的综述以及使用CGI的方法。
定义
图形用户界面(Graphical User Interface,GUI):由图形组件组成的一种用户界面风格,例如窗口和按钮。
11.2 适于特定职位的技能
在第10章中看到,软件过程复杂性给开发人员提供了一系列的机会。
在本节中,我讨论了某天你可能会充当的角色以及为了成为这种角色所需要必备的技能。
这些角色如下所示:
●业务分析员(Business analyst)
● IT高级经理(IT senior manager)
●对象建模员(Object modeler)
●持久管理员(Persistence administrator)
●持久建模员(Persistence modeler)
●程序员(Programmer)
●项目经理(Project manager)
●质保工程师(Quality assurance engineer)
●软件架构师(Software architect)
●测试工程师(Test engineer)
11.2.1 业务分析员
业务分析员需要需求收集和确认技能,也需要面向对象分析的技能。
一名业务分析员要与系统的未来用户一起工作,确定他们的基本业务问题,系统需求,他们可能会怎样使用系统,他们可能需要系统随着时间如何进行演化等。
第3章、第4章和第6章(分别讨论了需求收集、需求确认和面向对象分析),描述了业务分析员每天要用到的技术。
11.2.2 IT高级经理
IT(信息技术)高级经理监督机构内部的工作。
他们需要对机构内部使用的技术有一个基本的了解,尤其要对技术蕴含的业务要有所了解,他们必须牢固地掌握机构内部选用的软件过程。
IT高级经理必须在可交付品、过程、所需资源、新旧做法之间的区别以及转变到P2K软件开发环境时遇到的风险等方面得到训练。
首先,许多IT高级经理实行迭代开发时都遇到了困难,因为大部分开发制品,例如需求模型和软件设计等,是整个项目过程演化出来的,而不是以顺序方式在定义里程碑处交付的。
IT高级经理需要训练P2K软件环境中的基本技术和技能,这在11.1节中已经讲述过。
理解电子商务对于IT高级经理来说也很关键,因为它很可能就是机构内
部关键业务的驱动器。
11.2.3 对象建模员
对象建模员需要大量建模技能,包括UML和以应用为中心的设计技术以及底层的实现技术。
对象建模员负责面向对象软件的分析和设计;这样,他们必须具备熟练的、本书中介绍过的一系列建模技能。
过去,看到软件专家专注于某种建模,例如数据建模或过程建模等,这是很常见的现象,但经验表明这种策略不再有效,甚至会产生功能紊乱。
统一建模语言定义了许多种模型,因为没有哪个模型单独一个就足够完成所有的需求。
只关注于一种类型的模型而不管其他模型,会忽略掉许多关键的建模问题,做出来的软件运行起来也很差或者难以维护。
对象建模员必须理解一系列建模技能以及如何综合使用它们。
除此之外,他们也需要学会如何有效地应用设计模式、分析模式、结构模式。
建模人员必须学会像CORBA、EJB和/或微软的COM+这样的分布式开发技术。
建模人员也需要了解以应用为中心的设计技能或至少初步掌握用户界面设计技能。
11.2.4 持久建模员
持久建模员,在结构化世界里通常称为数据建模人员(data modeler),负责物理持久模型的开发和维护。
对于新的应用,如在第7章中见到的那样,持久建模员需要基于面向对象模型为软件开发物理持久模型。
对于与遗留数据模式相关的开发来说,大多数软件项目的准则都是,开发数据模式的模型可能会需要持久建模员(如果他们还没有存在)帮助在对象中做好所需的数据存储映射。
持久建模员需要理解UML面向对象模型,如何开发基于面向对象模型的持久模型,如何把对象映射到关系数据库,以及了解用于持久对象的永久存储机制的细微差别。
如何把对象映射到关系数据库上在本系列丛书第二本书《Building Object Applications That Work》(Ambler,1998a)中有描述。
11.2.5 持久管理员
持久管理员,在结构化世界中也称做数据库管理员(DBA),负责管理支持永久存储机制,因此他们就需要这些产品中的专业知识。
持久管理员这个角色的功能,经常扩展到包含由持久层使用的对象-关系映射的管理。
由于对象世界中持久建模员责任在逐步减少,持久管理员与持久建模员的角色之间的界限,常常比较模糊。
11.2.6 程序员
软件程序员的工作是实现及启动测试基于系统模型的源代码。
程序员多多少少会要紧密地与建模人员和测试工程师一起工作,这意味着他们至少需要理解面向对象和基于组件建模和测试的基本知识。
除此之外,程序员需要在所使用的设计模式、编程习惯用语、编程语言、软件工程基础(例如耦合和内聚这样的概念)等方面接受培训和教育。
11.2.7 项目经理
项目经理需要对大量技能拥有相关知识。
项目经理负责软件项目的机构和管理。
他们在工作中面对着复杂的环境:迭代和增量开发技术应用中出现了许多复杂现象。
除此之外,更糟糕的是,由于缺乏熟练的软件专家,项目经理发现,组建小组以及人员管理的技能(而不仅仅是进度与估测技能—这些是大多数软件项目管理书籍中的焦点)对于项目的成功来说变得越来越重要了。
项目经理需要广泛了解一系列技能,尤其是软件过程中以及人员管理方面的技能。
学习项目管理要阅读的一本比较好的书是《Software Project Management》(Royce,1998)。
定义
永久存储(permanent storage):一种物理介质,其中的数据可以被保存、检索并删除。
对象永久存储机制有可能包括关系数据库、文件和对象数据库。
物理存储模型(physical persistence model):一种模型,也称做物理数据模型(physical data model),描述你在永久存储机制中要实现的物理数据模式。
11.2.8 质保工程师
质保工程师需要有开放的思想,以有效遵循迭代和增量开发实践。
质保工程师负责保证开发人员根据机构内部公认的标准和过程创建软件。
质保工程师要在他们评审的交付品使用的技术方面以及通用软件过程方面接受培训。
通用模式的培训也很重要,这样质保工程师就可以检测出模型或文档是否与公认的开发方法相符。
11.2.9 软件架构师
存在两种类型的软件架构师:项目软件架构师和企业软件架构师。
项目软件架构师关注于基于初始需求的系统软件体系结构的确认和验证,以及机构内部业已存在的企业结构。
企业软件体系结构关注机构的软件体系结构,它考虑诸如下面的这类问题:企业应用集成(EAI)、可复用框架以及通用软件基础结构。
软件架构师需要在下列方面接受培训和教育:P2K环境中的技术和技能,人员的技能(他们将会支持项目小组及影响高级业务管理),机构的业务基础。
要接受与模式(明显的是结构模式)相关的培训,设计、分析、过程模式方面的培训也很重要。
你会遇到的一本好书是《Software Architecture in Practice》(Bass、Clements和Kazman,1998)。
11.2.10 测试工程师
测试工程师需要传统的和面向对象的测试技能,并要具备编写代码使用的开发语言的技能。