基本信息
- 原书名:ASPECT-ORIENTED SOFTWARE DEVELOPMENT WITH USE CASES
- 原出版社: Addison Wesley/Pearson
- 作者: IvarJacobson,Pan-Wei Ng
- 译者: 徐锋
- 出版社:电子工业出版社
- ISBN:7121018314
- 上架时间:2005-11-11
- 出版日期:2005 年11月
- 开本:16开
- 页码:500
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 面向对象
编辑推荐
作者Ivar Jacobson博士,是许多技术“之父”,这包括组件及基于组件的软件架构,用例,现代业务工程,以及Rational统一过程。他还是统一建模语言(UML)的三位创始之一。不管你在多少面向方面编程的经验,本书都将教会你如何开发范例转变到AOSD,开发出更好的软件。
内容简介
计算机书籍
面向方面编程(AOP)是对软件工程的一种革新性思考。引入AOP的目的是解决诸如安全性、日志、持久化、调试、跟踪、分布式处理、性能监控以及更有效地处理异常等问题的。与常规的开发技术不同的是,常规技术会将这些不同的关注点实现于多个类中,而面向方面编程将使它们局部化。
面向方面软件开发(AOSD)使用这一方法,为功能需求、非功能需求、平台特性等创造了更好的模块性,使你开发出更易于理解的系统,也更易于配置和扩展,以满足和解决涉众的需求。
在这本期望值很高的新书中,Ivar Jacobson博士和Pan—WeiNg博士展示了如何应用用例技术(一种成熟的聚焦干涉众关注点的系统化方法)和面向方面技术来构建健壮、易于扩展的系统。在本书中,作者使用了一个现实世界中的酒店管理信息系统的例子,使得理论和实践的描述更加具体化、更加易于理解。
作者们说明了如何识别、设计、实现、测试和重构用例模块,以及如何扩展它们。还展示了如何使用统一建模语言(UML)--强调了UML2 0中的增强内容——来设计用例模块;以及如何使用方面技术,特别是AspectJ来实现用例的模块化。
关键的主题包括:
·描述用例和方面的课题
·基于用例对关注点进行捕获和建模
·基于用例模块使关注点保持分离
·使用最新的UML符号扩展来对用例切片和方面进行建模
·在项目中使用用例和方面
不管你有多少面向方面编程的经验,《AOSD中文版--基于用例的面向方面软件开发》都将教会你如何将开发范型转变到AOSD,开发出更好的软件。
作译者
Pan-Wei Ng博士,在Ivar Jacobson Consulting公司(IJC)扮演了多个角色。Pan—Wei博士负责针对软件架构、用例、迭代开发、方面技术等相关技术的最佳实践定义、开发相关素材。这些工作通常需要基于实践进行,才能够确保归纳的最佳实践切实、实用。Pan—Wei博士还积极地和客户一起工作,以确保这些公司和项目团队能够,陕速、安全地采用这些最佳实践。
目录
Preface.
Acknowledgments.
List of Sidebars.
I. THE CASE FOR USE CASES AND ASPECTS.
1. Problem to Attack.
2. Attacking the Problem with Aspects.
3. Today with Use Cases.
4. Tomorrow with Use Case Modules.
II. MODELING AND CAPTURING CONCERNS WITH USE CASES.
5. Modeling Concerns with Use Cases.
6. Structuring Use Cases.
7. Capturing Concerns with Use Cases.
III. KEEPING CONCERNS SEPARATE WITH USE CASE MODULES.
8. Keeping Peer Use Case Realizations Separate with Aspects.
9. Keeping Extensions Separate with Pointcuts.
10. Building Systems with Use Case Modules.
IV. ESTABLISHING AN ARCHITECTURE BASED ON USE CASES AND ASPECTS.
11. Road to a Resilient Architecture.
12. Separating Functional Requirements with Peer Application Use Cases.
译者序
虽然本书的主题是面向方面,但我们在书中所提倡的概念并不局限于采用面向方面技术实现的软件系统。例如,最小化设计、基础结构用例等,以及我们在书中涉及到的其他概念,也都是能广泛运用于任何面向对象系统的。事实上,我们已经成功地帮助许多客户采用“面向方面的思维方式”将用例驱动方法运用于他们的系统当中——甚至是面向对象的系统,这些系统包括了从基于Web的业务交易系统到实时电信系统等等。这非常清晰地表明了本书中的概念具有普遍适用性。此外,我们还发现,许多读者通过阅读本书,使他们对于关注点分离和模块化等概念有了全新的理解,而这些正是实现优秀软件系统的关键因素。
为广大软件开发人员培育良好的开发习惯是我们的一贯使命和目标,写作本书仅仅是其中的一个“方面”。中国一直是,也将会是一支更加强大的软件开发力量。中国的专业软件开发人员总是乐于学习新的概念。随着本书中文版的出版,我们诚挚邀请你们来阅读本书,并期望我们能一起探讨学习并共同成长。
但我们能够并且希望做得更多。我们为此在中国设立了分公司,为专业开发人员提供培训,为项目团队提供辅导,并全方位地改善软件开发组织的能力。我们诚挚邀请您参加我们的面向方面以及其他的软件开发最佳实践的课程。
Ivar Jacobson 博士
Pan-wei Ng 博士
2000年以前,笔者在软件需求实践中,一直对如何有效地标识、组织、管理用户的需求感到十分的困惑。纷繁复杂而且拖沓冗长的“软件需求规格说明书”似乎一直没有起到它应该起的作用,如何才能够使得用户和开发团队之间建立更好的需求沟通呢?Ivar Jacobson先生“用例驱动方法”让我找到了解决的方法。它使得我们站到“用户的视角”来观察“将要开发的系统”,通过对零散的软件需求进行合并,抽象出参与系统地不同角色(Actor),将一系列的使用场景进行抽象形成“用例”,从而清晰地勾勒出系统地框架模型。这样总结出来的需求,往往能够与用户产生了共鸣,在笔者的实践中也深受其益。
然而,不久第二个困惑又摆在了眼前,如何在“用例模型”(分析模型)的基础上进行设计呢?在从“用例描述”到“顺序图”、“活动图”的转换中,一直感到力不从心。万幸的是,Ivar先生提出的“Robustness分析方法” 又让我走出了这块新的沼泽。通过边界类、控制类、边界类,以及简明、随意的Robustness图,使得这种转换变得streamline(流线型)起来 。遗憾的是,UML对Robustness图的舍弃,不知对多少实践者带来了这种困难。
但当我对“用例驱动方法”的应用越来越自如的时候,又遇到了新的困惑。在实际的系统分析和设计实践中,我突然发现类、组件与用例之间的对应关系是交错的。也就是一个用例可能会涉及多个类或组件,而一个类或组件也可能参与了多个用例。这种交错与缠绕一度让我一度感到心力憔悴。我们刚刚通过用例实现的“松耦合”设计,却又在具体到类的层面、实现的环节再次“耦合”在一起了。怎么办?如何解决?虽然从《软件复用:结构、过程和组织》中能够领会到一些解决的方法,但是总感觉实践应用中还是有很大的局限性。
正是在这个时候,我从亚马逊网站上看到了本书,基于自己对AOP的了解,一看书名就让我感到无比的兴奋,心里念叨着“找到答案了,找到了!”。当找到了一些更详细的资料和部分章节时,我确认了自己的想法,因此毫不犹豫地向CSDN的熊妍妍推荐了本书,在她的大力支持下,我终于看到了本书的全貌,答案浮出了水面:
·AOP为你提供了一个手段,可以将横切关注点的实现代码分离,并模块化成为“方面”。面向方面提供了一种组合机制,使得在编译时甚至是运行时,再将横切行为组合到预期的操作和类中成为可能。而在操作和类的源代码中则可以摆脱横切关注点,从而使得程序更易于理解和维护。
·为了推进AOP的发展,本书作者提出了AOSD,其目标主要围绕着如何使整个系统更好地模块化,它包括使功能性需求、非功能需求、平台特性等许多不同的关注点更好地模块化,从而使它们之间相互独立。保持所有的关注点相互独立,将使你构建的系统具有更易于理解的结构,并且更易于配置和扩展,以满足涉众各种洐生的需求。
·如何进行AOSD?如何识别方面?什么时候用类而非方面?如何详细说明方面?这需要一个明确和系统的方法来帮助你进行AOSD。而事实上,已经有一种成熟的系统化方法。它就是用例驱动方法。它提供了一种明确的、聚焦于实现涉众关注点并给最终用户传递价值的开发方法。
哈,和我的预想一样。用例驱动方法与AOP的结合,必将会引发一场软件开发范型的革命。而通过阅读本书,你可以清除用例驱动方法的认识误区,了解方面技术的基本概念,掌握应用用例(application use cases)、基础结构用例(infrastructure use case)及用例模块等新手段的应用,了解如何结合二者实现弹性的体系结构设计。而且本书还为你指出了一条实践AOSD的通途,可以说这是一本从实践中来,又回到实践中去的好书。相信阅读过本书的读者一定也会和笔者有相同的感受,一定不要错过这本经典的好书。
在此,我必须感谢参与了本书部分章节初译工作的周松奕(第11-14章)和吴兰陟(第15-16章)两位同仁;感谢CSDN的熊妍妍、博文视点的责任编辑陈兴璐,感谢她们无微不至的工作;同时也对参与了审校工作的Ivar Jacobson中国公司的专家们、UMLChina的潘加宇表示衷心的感谢,他们的工作使本书的质量大大得到了提高。最后要感谢我的父母和妻子许高芳对我多年来的默默支持与鼓励。
鉴于笔者水平有限,因此在此必须感谢每一位读者,希望能够得到您的反馈与批评,欢迎来信(xf@csai.cn)与我一起交流与本书相关、与用例分析技术、需求工程、系统分析与设计等软件开发相关的话题。
徐 锋
2005年10月于厦门紫荆园