软件是在代码之外发生的一切事情。
如何继续学习过程你将从本章学到什么?两千年后(P2K)的软件环境是什么样的?P2K软件环境中的技术和技能是什么?有关P2K技能和技术有哪些概述性的资源?软件专家在面向对象项目中充当什么角色/职位?如何继续面向对象的学习过程?为什么需要阅读本章?你的技能,以及如何使用它们,是能否成为成功的软件专家的重要决定性因素。
通过阅读本书,你会获得学习对象技术和技巧所需的基本知识,本章也给你提供了继续进一步学习过程的建议。
至此,你已经了解了面向对象的全部内容,现在你已经是一名准备开发大型、关键性任务软件的对象专家。
好吧,现在你还不全是。
实际上,你已经掌握了一些有用的概念和技能,也明白了它们如何一起使用,在浏览复习题以及案例学习的过程中,你已经使用了它们。
目前你正处在有利地位,可以继续你的学习过程,这个过程将很可能贯穿你的整个职业生涯。
本章给出了对软件业目前的状况以及将来的发展方向的见解,在接下来的几年中将会需要什么样的技能,要如何才能获得这些技能。
11.1 P2K 环境在你的整个职业生涯中一直要学习新的技能。
软件业在20世纪90年代后半期被Y2K危机严重影响了,新的开发被耽搁下来或者干脆取消,以转移资源解决Y2K危机,结果,许多企业都推迟了对采用新的技术和技能的投资。
现在Y2K危机已经过去了,我们正面对着两千年后(P2K)的软件环境,一个使用本书中描述的技术支配的环境。
在P2K环境中,你将会应用新的方法,例如面向对象的和基于组件的方法,采用迭代和增量方法的新的开发过程,像Java和CORBA这样新的技术,以及像用况建模这样新的技术。
本书概述了对象开发技术,本节也总结了用于P2K环境的关键技术和技能。
要理解P2K环境,必需考虑下面几项内容:新的软件策略。
使能技术。
领先的开发技术。
现代软件过程。
对象编程语言。
如何获得P2K技能。
11.1.1 新的软件策略21世纪初期将会由两项关键的软件策略来统治:企业应用集成(EAI )和电子商务。
EAI 把全异的软件应用集成为一个整体以支持新的和复杂的业务过程。
中间件和组件技术,例如下面这节里描述的CORBA和兼容COM+的工具也用于支持EAI。
了解EAI的一个好去处是,也可以参考《Enterprise Application Integration » (Linthicum,2000)一书。
包装技术是《Building Object Applications That Work » (Ambler ,1998a)一书详细讲述的主题,对于EAI的开发者来说它也是一项重要的技能。
电子商务也称为基于In ternet的商务,它关注于使用电子技术支持产品销售和服务。
电子商务成功的机构有,戴尔公司()一一个计算机软硬件零售商;亚马逊()一一个销售书、录像带、音乐CD的零售商;Ebay网()一一个在线拍卖网站。
电子商务最好的资源是杂志《The Industry Standar» (),它以报纸和在线两种形式出版发行。
11.1.2 使能技术除了11.1.5节描述的对象编程语言外,还有好几个使能技术也是P2K环境中占主导地位的技术。
这些技术有:CORBACOM+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•持久层。
持久层(也称做持久框架),通过映射元数据使得从永久存储(例如关系数据库)中存储、检索和删除对象得以自动化。
如果关系数据库用来存储对象,那么映射元数据会把对象的一条属性与存储对象的数据库表列联系起来。
持久层向对象隐藏了数据模式,这会大量减少持久对象所需编写的代码数量,从而增强软件的健壮性并增加开发生产力。
在《BuildingObject Applications That Work》(Ambler , 1998a)—书中我详细讨论了持久层,这本书是本系列的第二本书。
你可能想下载描述持久层设计的白皮书,我已经把它放在网站/persiste nceLayer.html 上了。
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章的内容,如果想要了解得更详细一点,请参考《BuildingObject 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关注于与用户一起工作、简单但一流的开发以及测试等。