软件工程及软件方法学
-
Rational统一过程(美)Per Kroll,(美)Philippe Kruchten著;徐正生,陈逸,邓启威译;徐正生译每个软件开发团队都有意或无意地遵循某种过程。在一两个人或几个人组成的开发团队中,过程是很简单的。他们只产生很少的文档,分析和设计也不是很正规,项目的源代码在所有制品中占有很重要的地位。在几十人甚至上百人的开发团队中,团队成员通常分布在不同的大厦甚至是世界各地,因而过程也有更多规定。?且嘈锤嗟恼轿牡担蜕嬷诤献饕黄鹛致巯钅康姆治龊蜕杓疲⑼ü嵋椤⒄故尽⑽牡岛推渌破凡鞣治龊蜕杓啤O钅康拇胨淙灰埠苤匾皇窍低持诙嘀破分械囊桓鲎槌刹糠帧<虻サ墓毯透丛拥墓滩⒉皇嵌粤⒌模好恳桓鑫侍饬煊颉⒚恳恢挚⒎绞胶兔恳桓龅ザ赖南钅慷夹枰屎咸囟ㄐ枨蟮目⒐獭?也就是说,无论规模大小,所有成功的项目都有一些共同特征。相反,不成功的项目都不具备这些特征。通过观察一个成功的项目就会发现:团队成员合作得很好,每个开发人员都努力完成自己的活动和制品,同时与其他团队成员协调一致地工作。这种项目通常都很灵活、易于适应需求变更,并且它具有可预测性、可靠性,能够产生高质量的代码。总而言之,这些项目遵循的过程是开发工作方式的一部分,这个过程是不可见的,但是它的精神却通过团队成员生产的制品不断传递下去。Rational统一过程(或叫做RUP)的灵魂体现了这个不可见的过程。RUP不断地发展,它浓缩了不同领域数以千计的项目经验。PerKroll和PhilippeKruchten是最有资格以有效、务实的方法介绍RUP的人,他们在Rational软件公司创立并在世界范围内推广RUP的过程中起到了十分重要的作用。有些开发人员抵制使用RUP,他们认为RUP只不过用来减少代码。事实上,RUP并非他们想像的那样,它可以帮助开发团队成员更好地配合,把主要精力放到开发有价值的代码上。Per和Philippe首先介绍了RUP的灵魂,然后阐明如何在不同类型和规模的项目中应用RUP。在介绍了如何应用RUP后,本书讨论了更实际的问题,包括如何把RUP引入开发组和要避免哪些问题。本书首先让不同涉众接受RUP,然后分别从项目经理、系统分析员、系统架构师、开发人员和测试人员的角度介绍RUP。成功项目的开发过程看起来很简单,但实际上有很多深层次的思想蕴含在其中。在本书中,Per和Philippe以易懂、实用的方法阐述了这些思想。读完本书,相信你的项目也将会体现RUP的灵魂。GradyBoochRational软件公司首席科学家2003年2月虽然目前有数以千计的项目有效的使用Rational统一过程,但是一些开发团队仍然不敢轻易使用它。他们认为实施一个新的软件开发过程可能会很困难。本书的目的就是要告诉读者RUP实际上是很简单的。本书解释了RUP的基本软件开发原理,并指导读者在自己的开发组织中应用它。通过阅读本书,读者将会学到:·Rational统一过程的根本原理,数以百计的成功软件项目证明它是有效的;·在实践中如何通过遍历RUP项目的各个阶段应用这些原理;·在RUP项目中,项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师担当的角色和职责;·如何以最小的风险不断采用并配置统一过程;·如何辨别失败项目的特征,如何避免失败。Rational统一过程(RationalUnifiedProcess,或RUP)①是由Rational软件公司研发并推广的一套软件工程过程框架。它凝结了众多领域成功的软件开发最佳实践经验的精华,很多计算机科学家曾为之共同努力。RUP在多年的实际应用过程中,被广泛应用在不同领域。它提供了一整套严格的方法来分配并管理软件开发组织中的任务和责任。通过应用RUP,软件开发团队可以生产出满足最终用户需求的高质量的软件产品,并且可以有效地控制项目的进度和预算。RUP指导软件开发者如何有效地应用现代软件最佳实践:迭代开发、以架构为中心进行开发的方法、在开发过程的每一个阶段化解风险及持续地验证软件质量等。虽然有数以千计的项目正有效地使用RUP,但是一些开发团队仍然不敢轻易使用它,他们认为实施一个新的软件开发过程?赡芑岷芾选J导噬希琑UP并不困难也不复杂。编写本书的目的就是要告诉读者RUP实际上是很简单的。本书解释了RUP的基本软件开发原理,并指导读者在自己的开发组织中应用它。本书还告诉读者如何在一个开发组织或项目中量身定制RUP过程配置。为什么写这本书在帮助软件企业应用RUP的十几年时间和开发RUP产品的六年时间中,我们有机会了解到RUP中哪些部分是很有效的,哪些不是。我们看到过很多成功应用RUP的例子,同时也看到了一些项目和开发团队在应用它时遇到的挑战。我们有幸与很多软件开发实践的先行者一同工作,并且通过日常的工作从他们身上学到了很多宝贵的经验。最近,我们看到了很多软件公司“过分地”应用了RUP。是的,事实确实是这样。我们觉得有必要写一本关于RUP的书,不仅要告诉读者应该去做什么,生产什么样的产品,并且要告诉读者如何正确地应用它,应该避免做什么。我们要给读者解释如何在实践中应用RUP,在一个特定项目中什么时候应用RUP的哪些部分。我们想帮助读者理解如何在不同规模和不同类型的项目中应用RUP。在这本书中,我们想和读者分享我和同事们在多年的实践中积累的宝贵经验。我们的目的是为项目经理、系统分析员、系统架构师、开发人员、测试人员、过程工程师和其他的团队成员以及涉众提供一个易懂的关于RUP的指导。我们通过提炼使用RUP的多年实际经验来达到这个目的,告诉每个角色要了解哪些最本质的内容,解释在RUP中如何扮演他们的角色。这本书不是RUP产品自身的替代品。这本书提供了几百页的实际开发指南,而RUP产品提供了长达几千页的指导,包括关于角色和活动的诸多方面的指导,同时还提供了可以加快开发进度的模板。并且它紧密地结合了开发工具、搜索引擎、图形导航和其他一些基于网络的特性。与本书不同的是,RUP是不断发展的,始终为应用项目提供最新的指导。最后,本书还指导读者结合特定的需求定制RUP的框架。从本书中可以学到什么通过阅读本书,读者将会学到:·RUP的基本原理,数以百计的成功软件项目证明它是有效的;·在实践中如何通过遍历RUP项目的各个阶段应用这些原理;·在RUP项目中,项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师担当的角色和职责;·如何以最小的风险不断采用并配置RUP;·如何辨别失败项目的特征,如何避免失败。读者对象本书是为下列读者编写的:·正在使用或准备使用RUP的开发团队的所有成员,包括需要引入并大致了解RUP概念的管理人员和想要了解RUP的实际应用的管理人员·软件项目的实践者:要深入了解RUP并结合其特定角色应用RUP的项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师·要了解如何将RUP应用在其组织中的管理人员和过程工程师本书的结构和内容本书分为四个部分:介绍、浏览、应用和基于角色的指导。第一部分介绍RUP。第1章解释了什么是RUP及开发和应用RUP的动机。第2章“RUP的灵魂”介绍了RUP的基本原理,它是通过总结很多成功的开发案例而得到的,并被精炼为几个简单的方针。理解这些原理有助于在项目中更好地应用RUP。第3章提供了一个比较不同过程的方法,并用这个方法对RUP和其他敏捷过程、传统的过程和像SEICMM和SPICE这样的过程评估框架进行比较。这些比较有助于理解针对不同的项目选用什么样的RUP配置。第4章提供了一个应用RUP的小项目的例子:一个人在一个星期内完成的项目。抛开大型项目的规范,可以更好地认识RUP的本质。第二部分通过讲述RUP的四个阶段更深入地描述了RUP。这四个阶段是:初始阶段、细化阶段、构造阶段和移交阶段。第5章介绍?绾斡τ玫椒ǎ赋稣馑母鼋锥沃谐<奈蠼狻5?6~9章分别对这四个阶段做了详细的介绍。我们把注意力集中到每个阶段的目的上,并且指导读者如何达到这些目的。这有助于在实际项目中集中精力完成最重要的活动。另外,从时间顺序——应用在实际项目中的顺序——的角度描述了RUP的活动,让读者理解在一个项目中,什么时候执行哪些活动。采用RUP需要开发组织有一些预备知识。第三部分提供了支持流水线型实现的一些重要领域的基础知识。第10章介绍RUP产品,解释如何对其进行扩展和配置以适用于特定的项目或开发团队。第11章简要介绍了有助于实现包含增量展示、试验性项目和培训课程的过程的一些策略。经验表明,项目经理完成从瀑布模型到迭代开发的转变是很困难的。第12章指导项目经理如何计划RUP项目。这么多年以来,我们见过很多使用RUP的成功案例和失败案例。第13章描述了一些失败的案例,并指导开发者避免重蹈覆辙。RUP产品提供广泛的软件开发活动的指导。第四部分,第14~18章对软件项目中的五种主要角色分别提供指导,这五种角色是:项目经理、系统分析员、系统架构师、开发人员和测试人员。分别站在每种角色的角度上解释RUP,描述他们的任务、需要具备的素质和主要活动,并推荐相应的读物和培训教材。本书没有一个独立的章节介绍过程工程师的工作:这个角色的描述包含在第10章和第11章中。如何阅读本书根据读者在软件组织中的角色和希望从本书学到的内容来分,我们推荐下面的阅读方法:·如果只是想对RUP有一个基本的认识,阅读第1、2、4章。·如果想对RUP有一个全面的了解,通读第1~9章。·如果想根据特定的角色详细了解RUP:——项目经理,阅读第1~14章。——系统分析员,阅读第1~9、13和15章(可选读第8、9章)。——系统?芄故Γ亩恋?1~9、13和16章。——开发人员,阅读第1~9、13、17章(可选读第6章)。——测试人员,阅读第1~9、13、18章。——过程工程师,阅读第1~11、13章。·对于执行官(executive)如果想对RUP有一个大概的认识,并了解采用RUP需要做哪些工作,阅读第1、2、4章和第11章。更多的信息本书的最新信息,包括更新、相关文章、论坛和作者演讲时间表可以在以下网址找到:brhttp://www.rupmadeeasy.com。RUP产品的附加信息,包括数据表和产品演示版本可以在Ratioanl软件公司的主页上找到:http://www.rational.com/products/rup。对于已经使用RUP产品的读者,在Rational开发者网络(RationalDeveloperNetwork,RDN)的RUP知识中心上可以找到更多资源:http://www.rational.net。研究机构可以联系Rational软件公司索取关于RUP的软件工程课程的信息:http://www.rational.com/corpinfo/college_relations/seed/index.jsp致谢Ratioanl统一过程集中了数以千计的天才软件开发实践者经验的精华。我们能有机会和他们在一起工作来开发RUP产品并编写这本书,感到非常荣幸。本书离不开RUP产品及其当前产品开发小组,他们是:MikeBarnard、AmandaBrijpaul、SusanBuie、MargaretChan、FionnaChong、ErinCurtis、PhilipDenno、CarlosGoti、DebraGray、BjörnGustafsson、SigurdHopen、KelliHouston、LarsJenzer、JohnLambert、BruceMacIssac、BrysantMacy、GlenysMacIsaac、JohnRingoen、DanShiffman、PaulSzymkowiak和ChinhVo。Rational小组和技术专家在很多年的研发及使用RUP的过程中积累了宝贵的经验。他们指出了RUP中哪些部分有效,哪些部分无效。我们很感谢这些专家提出的精辟见解,在这里特别感谢:GoranBegic、ThomasBichler、KurtBittner、AnthonyCrain、SamCourtenay、JérômeDesquilbet、MariaEricsson、CarlosGoti、JimHeumann、JoeMarasco、Pan-WeiNg、AndyPhillipson、GaryPollice、LesleeProbasco、WalkerRoyce、JohnSmith和IanSpence。还要感谢GradyBooch,他审阅了本书并为本书作序。当一个法国人和一个瑞典人在一起写书时,书稿的语言必然有许多需要改进之处。Rational软件公司的编辑CatherineSouthwood、MikePerrow和MarleneEllin以极大的热情和专业精神帮助我们解决了这个问题,还要感谢我们的编辑KellySweeney和JosephFatton。我们还要特别感谢我们的妻子SusanKroll和SylvieKruchten,她们耐心地陪伴我们度过很多个用于编写此书的周末和夜晚。最后,要感谢出版社的朋友:MaryO’Brien,Addison-Wesley产品与市场部的人员,其中包括TyrrellAlbaugh和ChristopherGuzikowski,他们帮助本书顺利出版。 -
OOD启思录(美)Arthur J.Riel著;鲍志云译本书提供了改进面向对象设计的真知灼见。全书共11章,总结出了60多条面向对象设计(OOD)的指导原则。这些经验原则涵盖了从类到对象(主要强调它们之间的关系,包括关联、使用、包含、单继承、多继承)到面向对象物理设计的重要主题。本书将帮助你理解经验原则和“设计模式”这一流行概念之间的相互作用。你可以借助经验原则发现设计中所存在的某一方面的问题,而设计模式则提供了解决方案。本书对各个层次的开发者都有价值。新手能借助本书走上通向面向对象编程的快车道;想提升自己的面向对象开发水准的老手则会受益于本书深具洞察力的分析。《OOD启思录》提供了让你成为更好的软件开发者的途径。 -
嵌入式系统的实时概念(美)李庆(Qing Li)著;王安生译;王安生译嵌入式系统无所不在,并且在现代日常生活中扮演着重要的角色。嵌入式系统也是多样化的,在消费类电子产品中,如数码相机、DVD播放器和打印机;在工业机器人中;在先进的航空航天器中,如导弹制导系统和飞行控制系统;在医疗设备中,如强心剂无节律监视器和强心剂心律调整器;在汽车设计中,如燃料加注系统和自动刹闸系统,到处可以找到嵌入式系统。嵌入式系统深深地改变了我们今天的生活方式,也将继续改变我们明天的生活方式。嵌入式系统编程是一门特殊的学科,要求嵌入式系统的开发者具有多种技术领域的工作知识。这些领域覆盖从低层的硬件设备、编译技术和调试技术,到实时操作系统的内部工作和多线程应用设计。这些要求可以难倒新进入嵌入式世界的程序员,学习过程很长而且强度很大。这样,我感到有责任通过实践的讨论和演示,分享我的知识经验,使你跳过嵌入式系统项目的起始阶段。有些书用更传统的方法,主要集中在控制基本硬件设备的低层的驱动程序和软件上。另一些书提供使用面向对象的方法和建模语言的高层抽象方法。然而,本书架起了嵌入式系统开发的高层抽象建模概念和低层的基本编程方面的桥梁。贯穿本书的讨论来自于多年商业嵌入式系统的设计和实现、从先前的错误中学到的经验、从他人处获得的才智以及学术研究的结果。这些因素聚在一起,形成了非常有用的且可以在实时嵌入式项目中实际应用的洞察力、指导和建议。本书用详细的实例说明了实时嵌入式系统的关键概念,并提供了与设计问题和解决方案相关的工业化知识。本书提供了丰富的可立即用于嵌入式建造的模块集合,以便加快你的开发工作和提高生产效率。我希望当你开始着手开发时,《嵌入式系统的实时概念》一书能成为你的一本关键参考书。如果你希望通过E-mail得到消息的更新,请发E-mail到:rtconcepts@news.cmpbooks.com。如果对本书有建议、纠错或其他问题,请发E-mail到:qingli@speakeasy.net。 -
小型团队软件开发(美)Gary Pollice等著;宋锐,张静,张煜译;宋锐译本书不是一本关于RUP、敏捷开发过程或者项目管理的教材,而是一份来源于实际工作的“战地”报告。它记录了一个小型的分布式团队,经历许多变化最终成功地完成任务,向用户交付一个有价值的、可用的软件产品的过程。在本书中,这些“战士们”以直述的方式讲述了他们的故事,没有试图去“执导”有关的内容。我经常听到:“我们不需要采用一个开发过程,因为我们的项目又小又简单。”可能你也有类似的感觉。但是,实际上你总会采用某种开发过程,而且这一过程很可能是临时发明出来的。在我们的行业中有一种普遍存在的印象,就是一个预先描述好的开发过程只适合于大公司、用于大型项目、管理几百个开发人员;而对于小型项目来说,这种开发过程只会使开发人员过得更加痛苦。在本书中,你将会看到一个很小的团队在解决一个中等的项目时,如何按照他们的需要采用和剪裁RUP这样一个描述化的开发过程。他们并没有因为采用这一开发过程而增加过多的正规性。他们只选择了那些对自己有用的要素,甚至采用了类似PSP(PersonalSoftwareProcess,个体软件开发过程)、极限编程(eXtremeProgramming)以及其他一些敏捷开发方法。我也经常听到:“让我看看你到底是如何做的。”成功项目的例子和某些不成功项目的反例常常是导致开始采用一个新开发过程的关键。仅仅埋头于书本中或者网站上,苦读一页页有关某种理想处理方法的描述,对于我们大多数人来说都太抽象了。包装好的、与理论严格匹配的完美示例没有太多的说服力。本书最大的价值在于,它带领读者接触到一个实际项目中的真实经历,包括了其中的失败、错误的开始以及各种限制;而作者以批判的眼光来分析他们所采取的做法,以及这些做法为什么会成功或者失败。我们从自己的经验以及与别人经验的对比中进行学习。“噢,是的,我知道这种模式;我也曾经处于这种境地。啊,你是这样解决的。”本书讨论了在传统的开发过程(包括RUP)中都没有涉及到的问题。作者大胆地探索了关于开发人员、关于形成一个团队的力量、关于分布式环境中的通信联系、关于使用基于Internet的协作工具等方面的内容,而所有这些要素都是当前许多小型开源软件项目的组成部分。最后,本书强调了一个常常在计划中标明了,而在赶着完成任务的过程中通常被遗忘的关键性的实践步骤:自省(self-reflection),有时也被称为事后分析(post-mortem)或者回顾(retrospective)。这一步骤就是暂时停下,回头看看我们做过的、我们是如何做的,看看哪些做法有效,哪些做法无效,以及导致这种结果的原因。而这整本书就是一个非常完整的事后分析的极好例子,坦白而谦虚。本书不能代替你没有做的那些事后分析和回顾,但是可以让你意识到可能错过了哪些东西。那么,哪些人需要使用这本书以及何时需要这本书?可能性有很多:如果你刚接触现代的开发过程,如RUP、敏捷开发方法、PSP等等,那么本书可以让你了解它们的精髓,而不用深入到细节中去。如果你不确定该如何处理小型的分布式项目,你将可以学到极有价值的内容,这些内容的作者也曾经问过自己那些你可能会提出的问题。他们对这些问题曾经做出过选择,这些选择的对与错都通过最终的结果反映了出来。你很可能发现一些熟悉的模式,从书中的解答和解决方案中学会一些东西;这意味着在你自己的项目中犯的错误会更少。如果你是这些方法的专家,那么本书将为你打开新的途径——如何结合不同的方法或者缩减一个开发过程,并告诉你自省的价值。我从这本书中学到了许多关于RUP的知识,并学会了从不同的角度来看待它。感谢Gary、Jas、Liz和Chris与我们分享他们的经验。——PhilippeKruchten于加拿大温哥华在本书中,GaryPollice、LizAugustine、ChrisLowe和JasMadhur四位作者以自己的亲身经历说明了如何在一个小型团队、小型项目中应用Rational统一过程。其中包含了对开发过程中各种做法的原因和结果的全面分析,说明了开发团队如何对开发过程与开发环境进行动态的调整。本书的主要内容包括:如何在开发人员、开发过程和开发工具之间寻求平衡,并且在软件开发的整个过程中动态地维持这种平衡;如何组合RUP和敏捷开发原则中的多征方法来建立团队自身的开发过程,并且在项目进程中对开发过程进行适当的调整;如何选择适当的开发工具来对团队的活动提供支持,尤其是对于一个小型的分布式团队需要考虑哪些问题;客户的参与和意见关系到软件产品最终能否有效地满足客户需求。对本书的赞誉“我向所有那些希望在小型项目中实施RUP的人强烈推荐此书。Pollice和他的伙伴们揭开了笼罩着RUP的神秘面纱,并且在保证不遗失其精华的基础上进行了有效的缩减。此书是所有RUP使用者的必备书籍。”——丰田汽车销售公司过程工程学顾问ChrisSoskin“许多RUP使用者都在寻找其实际应用的例子,此书恰恰为如何在小型项目中实际应用RUP提供了非常好的示例。它将引导你穿越从项目启动到项目完成的不同阶段。作者非常成功地强调了他们所遭遇的困难以及他们所取得的成功。”——IBM公司Rational软件公司RUP部门经理PerKroll“这本书明了易读,且有许多对软件开发人员有帮助的好东西,所以我很喜欢它。它描述了一个小型团队如何有效地使用RUP——一种通常被认为只适用于大型的、规范度高的团队的开发过程。作者以直截了当的方式表达了许多严肃的事实与建议。每个人的书架上都应该有一本这样的书。”——NetObjectives公司高级顾问DanRawsthorne博士软件开发的目标是向用户交付具有一定价值的产品。为了提高工作效率,你必须在开发人员、开发过程与开发工具之间维持适度的平衡。每个人似乎都有自己最喜欢的开发工具、技巧和开发过程。软件公司把开发工具和方法卖给你,帮助你提高构建软件时的效率。顾问们向你宣讲他们的方法,试图让你相信他们知道如何帮助你的机构和项目团队做得更好。而我们开发人员则不停地学习新的技术、采用新的工具,来帮助我们在更短的时间里以更高的质量完成更多的工作。我们这些作者在各种软件项目中工作和对之进行观察的时间累计起来超过了七十五年。根据这些年中所得到的经验,我们得出一个结论,很可能一些聪明的读者也已经想到了:每一个项目都不一样,那些帮助某个团队取得了巨大成功的方法如果不具有通用性,可能会导致另一个团队的惨痛失败。每个团队都需要确定如何使用一个特定的开发过程,然后不断地进行调整才能取得进步。而在这种不会停止的变化面前,一个项目团队如何知道改变哪些做法可以获得最大的效果?我们的答案是,依靠学习尽可能多的技术,依靠学习有效使用支持不同技术的开发工具,然后确定哪些组合可以工作得最好,以及它们在什么情况下最有效。这也意味着一个不断学习的过程。好的程序员从其他的程序员那里学习。他们通过查看代码和阅读关于不同编程方法的书籍进行学习。测试人员通过学习测试专家的技巧、研究测试设计方案和学习如何使用新技术与新工具来获得提高。实际上,每一个独立的实践者都可以从其他从事相同工作的人那里,或者通过观察范例来学到知识。每个实践者都需要形成自己高效工作的风格,既作为独立的个人也作为一个更大的团队的一员。团队也一样需要利用其他团队如何工作的范例,来形成自己团队协同工作的风格。本书是关于一个小型团队如何开发一个软件工具的例子。它是关于我们做了什么以及为什么这样做的一本大事记。我们尝试着解释了为什么某些做法有效(或者无效),并讨论了下一次我们会改变些什么。在此过程中,我们特别指出了所获得的经验和教训,并提供了一些将这些经验通用化的思路。读者所要做的,就是观察我们所做的工作并汲取我们的经验。如果你正在从事小型的软件开发项目,你将立刻根据我们的经历发现一些问题。你可能已经面临一些我们曾遭遇的问题,并按照自己满意的方式解决了,或者你仍在试图找到合适的解决方法。我们希望本书能够为你提供一些有用思路,帮助你选择和使用合适的开发工具,与他人一起有效地工作,并选择最适合你个人和所在团队风格的技术。本书的所有作者都曾在软件行业的不同类型项目中工作了许多年,从很小的项目到很大的项目都曾涉及。我们对自己的工作都充满热情。我们在为Rational软件公司(现已被IBM公司收购)工作时相互结识。启动此项目的Gary曾经在第一个RationalSuite项目中工作,然后转到RationalUnifiedProcess,即RUP团队工作。Liz和Chris曾和Gary一起在RationalSuite团队中工作,而Jas是RUP团队的成员。我们看到过采用RUP或者其他开发过程并取得成功的项目,我们也看到过同样采用这些开发过程却失败了的项目。我们希望?彩龅恼飧鱿钅磕苋〉贸晒ΑN颐侨衔约喝肥党晒α恕8匾氖牵颐堑目突衔颐浅晒α耍饩褪俏颐堑墓适拢M隳芄幌不端?关于本书在本书中,我们讲述了我们如何作为一个团队一起工作的故事。我们谈及了面对的一些技术障碍以及克服它们的方法。我们描述了遇到的一些模式以及我们如何将它们应用于自己的团队、项目以及代码。我们说明了这个小团队如何发展了一种在成员之间以及与用户之间进行有效交流的方法。我们还讨论了所采用的不同技术和方法,并根据不同的开发方法学,如RUP、极限编程(XP)等等,进行了调整。本书并不包含任何一种特定软件开发技术的全部技术细节。它并没有描述一个开发过程。它并不是关于编写高效的代码、调试方法、测试技巧、需求管理或者过程工程的书。不过本书涉及了所有上述主题。PSPTools项目本书是关于我们开发一个软件项目——PSPTools的经历的大事记。PSPTools的目标是为WattsHumphrey的PSP(PersonalSoftwareProcess,个体软件开发过程)提供自动化的支持。在版本1中,我们为支持PSP等级1实现了计时器和数据收集工具。(关于PSP的更多内容,请参见附录B。)本书包含了屏幕截图、表格以及其他反映我们工作进展的材料片段。为了使读者可以了解我们的实际工作方式,我们据实地展现了自己的经历以及最终的软件,而不是理想化地解释我们希望如何工作。在本书的网站www.awprofessional.com/titles/0321202945,包含了我们的所有代码、其他一些非代码的项目制品、到其他有用网站的链接以及其他后来发生的新闻。我们也很希望能够听到大家的意见,无论是对此书的反映,还是关于你自己的软件开发经历。我们的电子邮件地址是psptools@yahoo.com。本书的组织结构本书的组织结构如下:第1~3章介绍此项目的相关情况。我们介绍了自己进行软件开发的方法;对于在开发人员、开发过程与开发工具之间维持平衡的重要性的观点;及对PSPTools项目的描述。第4、5、6、8、10和11章分别从团队和过程的角度说明了这个项目。我们讨论了RUP的不同阶段以及我们在每一阶段中做了什么。第7章和第9章提供了有关我们所处理的代码和使用的技术的详细情况。这两章并不是对整个应用的全面展示,而是用于体现一些代码的风格并解释我们所做的一些技术决策。我们希望这两章能够鼓励你从本书的网站下载整个项目内容来进行更深入的研究。附录中提供了一些主题的信息,如RUP、PSP和XP,我们假设你对它们已经有一定程度的了解。谁需要阅读此书?如果你是下列人士之一,那么你应该阅读此书:一个正在寻求有关的技术指南,以使得团队整体以及其中的个人都能更有效率工作的项目领导者。书中也讨论了我们所使用的开发工具以及它们的替代产品,还提供了关于如何使用类似RUP之类的开发过程来帮助、促进交流的实践性建议。一个工作于小型项目的独立实践者(一个程序员、一个测试员或者一个分析师)。本书可以帮助你学会如何在不增加无理负担的情况下,与团队中的其他成员进行交流。这里推荐了一些可能会有帮助的工具,并展示了如何有效地应用一种开发过程来指导、帮助你集中注意力,而不是给你增加负担。一个工作于开源项目的独立实践者。本书没有专门讨论开源开发,但确实提供了一些类似于开源项目的经验。它提供了一个如何组织分布于不同地点的团队开展工作的范例。显示了这个团队如何调整其工作风格与使用的开发工具,以适应地理的分隔、完全不同的开发工具以及在相互独立的网络上进行工作。其他对小型项目或者敏捷开发技术感兴趣,并对它们如何与其他开发过程(如RUP)结合感到好奇的独立实践者。致谢如果没有很多人的努力与贡献,本书将不可能得以出版。然而对于文中出现的任何错误,我们将承担相关责任。我们要感谢以下人士,他们的工作使得本书内容更为丰满、有趣和可信。Gary感谢整个开发团队。你们中的每一个人都在整个项目过程中提供了自己的见解、知识、努力与支持。RajSrinivasan在我们急需测试人员的时候加入进来,提供了有所侧重的、有益的问题报告。我要特别感谢PhilippeKruchten和PerKroll,从他们那里我领会了RUP的精神,从而形成了我自己在小型项目中使用RUP的风格。敏捷开发社区中的许多活跃分子教会了我很多事情,我试图将它们包含于我个人的开发过程中。我尤其感谢与BobMartin、RonJeffries和RandyMiller的交流。我确信其他的作者和我一样感谢为本书提供了极有价值的见解的审阅者们。除了PerKroll和PhilippeKruchten,我们很荣幸地请JamesDunion、MagnusLyckå、BobMartin、DanRawsthrone和ChrisSoskin对我们的工作进行了审阅。我们也很感谢来自于Rational软件公司的支持。最后,我们感谢Addison-Wesley出版公司那些过去和现在帮助我们完成本书的人们,他们是:PaulBecker、MaryO’Brien、BrendaMulligan、AmyFleischer、PatrickCash-Peterson,以及我们有才华的、仁慈的编辑RebeccaGreenberg。感谢你们付出的时间和无尽的耐心。Liz非常感谢我的经理KarlHakkarainen,他支持并鼓励我在此项目中进行工作。感谢Gary领导了这一项目,同时感谢其他作者——Chris、Jas和Gary——在完成项目的过程中与他们一起工作非常开心。最后,我还要感谢本书的审阅者们,他们充满理解力的、大量而风趣的评论促使此项目富有成果。Jas真诚地感谢Gary、Liz和Chris,感谢你们的善意、友好、见解与支持。Chris我想感谢与我同一办公室的SteveZerfas。他一直忍受着作为PSP项目一个组成部分的大量会议电话。他也比任何人更多地听我说:“在PSP项目中,我们……”。如果没有我的经理DaveZygadlo的宽宏许可,我将无法在此项目中工作。他即使在“午夜项目”不时地延伸到白天后仍保持着活力。最后,我希望感谢我的妻子Carmen,她对我写程序到深夜或长途旅行去拜访Gary从无怨言,而且始终欢迎Gary在来参加编程讨论时访问我们家。 -
UML高级应用(德)Sinan Si Alhir著;韩宏志译编辑推荐:UML是一种通用建模语言,得到多种工具的支持,已经被视为行业标准。UML用于指定,显现,构建和记录系统密集过程的工作。本书详细介绍了UML的相关知识,既可用作教材,也可作为参考书。路标是本书的一个重要主题,它提供了一个综合性架构来解决关键决策点及其关系,将UML和过程紧密联系在一起。本书重点讨论UML的使用规则,组合原理和实用示例。本书围绕UML结构分析使用UML、构建UML模型的基本准则。分析如何在路标上下文中有效使用UML,选出一个成熟方案,而不是过早采用特定过程。提供详细实例,以便您在系统开发生命周期建模时进行参考并作出正确决策。阐释UML元素之间的依赖方式,并分析UML如何支持生命周期过程的可跟踪性和可伸缩性。图表清晰明畅,有助您理解UML核心概念及技术。本书观点新颖,论述精辟,编排精当,内容翔实准确,既可作为软件工作及相关专业的教材,又可供UML软件项目的设计、开发和管理人员参考使用。 -
软件工程辅导与提高王小铭,林拉编著本书以专题讨论的形式介绍了软件工程的概念、技术与方法。内容包括软件工程与软件过程、软件工程方法学、软件项目管理和软件工程新方法等四个部分的十八个专题,每个专题都通过对主要知识点的提问和解答,详细地向读者讲述问题的背景,以及如何去理解和掌握问题的要点,达到课程辅导与提高的目的。本书内容与形式新颖,注重对概念和方法的理解,结合软件开发实践总结了课程学习的重点和难点,编有各部分内容的思考与练习,既可作为高等学校计算机专业软件工程的教学参考书与学习辅导材料,也可供软件工程师,软件工程项目管理与开发人员学习参考。 -
软件工程冷英男主编本书介绍了软件工程的基本概念、技术与方法,内容包括:软件开发模型,系统分析,需求分析,软件设计,编码,软件测试,维护,软件配置管理,软件度量和软件体系结构与软件设计模式等。本书取材精练,各章配有习题并有比较具体的示例,便于学习和自学。本书注重原理,结合实践,兼顾传统技术与新技术,繁简适当,逻辑清楚,可作为高职高专院校计算机专业和相关专业的教材,也可作为软件技术人员的参考书。 -
过程模式(美)Scott W. Ambler著;王海鹏译;王海鹏译本书延续了《过程模式(上册)》的内容,描述了软件开发生命周期的后半部分。在这本书中,作者通过一组成熟的过程模式,描述了交付和维护复杂的企业级系统的工作。本书提供了许多图表,有助于读者理解书中的内容。本书与《过程模式(上册)》一起,为软件开发经理提供了目前能得到的最完整的过程模式系统,这些过程模式经过了顶级的面向对象技术人员和教师的实践验证。本书是一本软件开发的优秀书籍,适合于软件开发人员、项目管理人员阅读参考,对相关专业的研究人员也有很好的参考价值。·对面向对象软件开发过程的概述。·对软件开发过程的细分,将其细分为四个阶段,并描述了所有必需的跨项目任务。·基于UML方法学的详细指导意见,说明了如何完成、测试和维护执行关键任务的应用。 ·一些从实际出发、经过验证的建议,针对如何管理人员、项目、风险、复用、基础设施、提交产物和质量。·大量图表展示了所有的概念和过程。 -
软件测试求生法则(美)威廉·派瑞(William E.Perry),(美)兰德尔·莱斯(Randall W.Rice)著;周震译;周震译成功的软件测试仅仅凭借技术能力是远远不够的,软件测试还需要技术以外的东西——人际沟通和交往能力。作者积累数十年软件开发和测试经验,揭示出软件测试面临的几大人际挑战,包括获得软件培训、与开发人员保持良好关系、争取管理人员的支持、与客户保?纸涣鳌⒙悴欢媳浠男枨笠约叭绾窝Щ崴挡弧ǜ嫒砑馐缘幕迪⒌龋⑶彝ü咛宓陌咐彩隽私饩稣庑┨粽降牟呗孕苑椒ā?软件中的错误几乎总会导致开发成本、进度和质量的失控。当所有的人都认为软件可以投入生产的时候,测试却通不过,于是项目延期、成本超支等问题都来了,测试人员就成为责无旁贷的受过者。现实中,测试人员总会处于开发人员和管理人员的“两败俱伤”的困境。成功的软件测试仅仅凭借技术能力是远远不够的,软件测试还需要技术以外的东西——人际沟通和交往能力。作者积累数十年软件开发和测试经验,揭示出软件测试面临的几大人际挑战,包括获得软件培训、与开发人员保持良好关系、争取管理人员的支持、与客户保持交流、满足不断变化的需求以及如何学会说不——报告软件测试的坏消息等,并且通过具体的案例讲述了解决这些挑战的策略性方法。本书的特色在于强调软件测试中所需要的人际沟通以及谈判能力,教给测度人员处理“办公室政治”的技巧。从而保证按时高效地交付软件项目。本书是广软件开发和测试人员的必备指南。 -
基于构件的产品线工程(德)Colin Atkinson等著;顾剑[等]译;顾剑译本书特点:●通过可运行的实例,以集成的方式举例说明KobrA方法中的关键理念。●附录中提供了KobrA元模型和KobrA过程的参考指南。本书系统地描述了KobrA方法,该方法支持模型驱动的、基于UML的构件表示;并描述了能够支持软件开发和演进的产品线方法。这就使得在软件的整个生命周期,都可以充分利用基于构件的开发方式的优势,极大地提高构件的可重用性。本书提供以下技术:●开发模型驱动的架构(MDA),此架构中系统的特点与具体实施平台无关。●有效地、可验证地将模型转换为代码。●系统地将COTS构件重用于新的应用中。●提高构件的质量以及提高由构件组装的系统的质量。本书重点讲述了怎样通过将基于构件的开发与产品线方法相结合,最大程度地改善和提高构件的可重用性和软件生产效率。全书分为五部分:第一部分大致介绍了背景知识以及KobrA方法,第二部分介绍构件建模;第三部分讲述构件的具体化;第四部分讲述产品线工程及其相关概念;最后一部分是项目监控。本书主要适合于致力于构件重用和MDA研究的软件工程师,以及希望进一步了解基于构件进行开发或者产品线工程的关键原则及其之间相互关系的学者和学生。
