书籍详情

基于用例的面向方面软件开发(英文版)

基于用例的面向方面软件开发(英文版)

作者:(美)雅各布森 等著

出版社:机械工业出版社

出版时间:2006-01-01

ISBN:9787111177715

定价:¥55.00

购买这本书可以去
内容简介
  Aspect-oriented programming (AOP) is a revolutionary new way to think about software engineering.AOP was introduced to address crosscutting concerns such as security, logging, persistence, debugging, tracing, distribution, performance monitoring, and exception handling in a more effective manner. Unlike conventional development techniques, which scatter the implementation of each concern into multiple classes, aspect-oriented programming localizes them..Aspect-oriented software development (AOSD) uses this approach to create a better modularity for functional and nonfunctional requirements, platform specifics, and more, allowing you to build more understandable systems that are easier to configure and extend to meet the evolving needs of stakeholders.In this highly anticipated new book, Ivar Jacobson and Pan-Wei Ng demonstrate how to apply use cases:a mature and systematic approach to focusing on stakeholder concerns:and aspect-orientation in building robust and extensible systems. Throughout the book, the authors employ a single, real-world example of a hotel management information system to make the described theories and practices concrete and understandable.The authors show how to identify, design, implement, test, and refactor use-case modules, as well as extend them. They also demonstrate how to design use-case modules with the Unified Modeling Language (UML):emphasizing enhancements made in UML 2.0:and how to achieve use-case modularity using aspect technologies, notably AspectJ...Key topics include·Making the case for use cases and aspects·Capturing and modeling concerns with use cases·Keeping concerns separate with use-case modules·Modeling use-cases slices and aspects using the newest extensions to the UML notation·Applying use cases and aspects in projects...Whatever your level of experience with aspect-oriented programming, Aspect-Oriented Software Development with Use Cases will teach you how to develop better software by embracing the paradigm shift to AOSD.
作者简介
  lvarJacobson博士,是许多技术“之父”,这包括组件及基于组件的软件架构,用例,现代业务工程,以及Ratlonal统一过程。他还是统一建模语言(UML)的三位创始人之一。同时他也是关于这些方法和技术的五本畅销书籍的作者,以及两本关于UML的引领性书籍的合著者。lvar博士是JaczoneAB公司的创始人,在该公司他与其女儿、合作者AgnetaJacobson共同开发一套开创性的新产品,它将包括支持软件开发的智能代理。同时他还是lvarJacobsonConsulting公司(IJC)的创始人,其目标是向全世界的开发团队推广优秀的软件开发实践。Pan-WeiNg博士,在lvarJacobsonConsulting公司(1JC)扮演了多个角色。Pan-Wel博士负责针对软件架构、用例、迭代开发、方面技术等相关技术的最佳实践定义、开发相关素材。这些工作通常需要基于实践进行,才能够确保归纳的最佳实践切实、实用。Pan-Wel博士还积极地和客户一起工作,以确保这些公司和项目团队能够,快速、安全地采用这些最佳实践。相关图书软件过程改进(英文版)80X86汇编语言与计算机体系结构计算机体系结构:量化研究方法:第3版计算机科学概论(英文版·第2版)分布式系统概念设计调和分析导论(英文第三版)人工智能:智能系统指南(英文版)第二版电力系统分析(英文版·第2版)面向计算机科学的数理逻辑:系统建模与推理(英文版·第2版)数学规划导论英文版抽样理论与方法(英文版)Java2专家导引(英文版·第3版)复分析基础及工程应用(英文版.第3版)机器视觉教程(英文版)(含盘)支持向量机导论(英文版)电子设计自动化基础(英文版)Java程序设计导论(英文版·第5版)数据挖掘:实用机器学习技术(英文版·第2版)UML参考手册(第2版)Java教程(英文版·第2版)软件需求管理:用例方法(英文版·第2版)数字通信导论离散事件系统仿真(英文版·第4版)复杂SoC设计(英文版)基于FPGA的系统设计(英文版)UML参考手册(英文版·第2版)计算理论导引实用软件工程(英文版)计算机取证(英文版)EffectiveC#(英文版)UNIX教程(英文版·第2版)软件测试(英文版第2版)设计模式精解(英文版第2版)Linux内核编程必读-经典原版书库实分析和概率论-经典原版书库(英文版.第2版)
目录
Preface vii
Acknowledgments xxi
PART I The Case for Use Cases and Aspects 1
Chapter 1 Problem to Attack 3
1.1 The Use of Components Today 3
1.1.1 Building a System with Components 4
1.1.2 Benefits of Components 6
1.2 Limitation of Components 6
1.2.1 Inability to Keep Peers Separate 8
1.2.2 Inability to Keep Extensions Separate 9
1.3 Approaching a Solution 11
1.3.1 Early Support for Extensions 12
1.3.2 Support for Extensions in UML 15
1.4 Keeping Concerns Separate 16
Chapter 2 Attacking the Problem with Aspects 17
2.1 Approaching a Solution with Aspects 17
2.2 Keeping Peers Separate with Aspects 19
2.3 Keeping Extensions Separate with Aspects 21
2.4 Need for Methodological Guidance 26
Chapter 3 Today with Use Cases 29
3.1. Use Cases in Brief 29
3.2 Use-Case-Driven Development 32
3.3 Roles and Benefits of Use Cases 34
3.4 Gaps in the Use-Case Technique 34
3.5 Bridging the Gaps with Aspects 35
Chapter 4 Tomorrow with Use-Case Modules 37
4.1 Building Systems in Overlays with Use-Case Slices 38
4.2 Keeping Peer Use Cases Separate 40
4.3 Keeping Extension Use Cases Separate 42
4.4 Developing with Use-Case Modules 45
PART II Modeling and Capturing Concerns with Use
Cases 49
Chapter 5 Modeling Concerns with Use Cases 51
5.1 Use-Case Modeling 51
5.2 Use-Case Instances and Flows of Events 53
5.3 Describing Use Cases 54
5.4 Visualizing Use-Case Flows 57
5.5 Summary and Highlights 60
Chapter 6 Structuring Use Cases 61
6.1 Use-Case Relationships 61
6.2 Use-Case Extend Relationship 63
6.3 Use-Case Include Relationship 70
6.4 Use-Case Generalization 73
6.5 Utility Use Cases 77
6.6 Summary and Highlights 79
Chapter 7 Capturing Concerns with Use Cases 81
7.1 Understanding Stakeholder Concerns 81
7.1.1 Understanding the Problem Domain 82
7.1.2 Eliciting System Features 83
7.1.3 Dealing with Functional and Nonfunctional Requirements 84
7.2 Capturing Application Use Cases 86
7.2.1 Identifying Use-Case Variability 87
7.2.2 Handling Use.Case Variability 88
7.2.3 Dealing with Extension Use Cases 91
7.3 Capturing Infrastructure Use Cases 93
7.3.1 The Perform Transaction Use Case 94
7.3.2 Structuring Infrastructure Use Cases 96
7.3.3 Describing Infrastructure Use Cases 98
7.3.4 Dealing with Systemwide Concerns 100
7.4 Summary and Highlights 101
PART III Keeping Concerns Separate with Use-Case Modules 103
Chapter 8 Keeping Peer Use-Case Realizations Separate with Aspects 105
8.1 Realizing Peer Use Cases 106
8.1.1 Collaborations 106
8.1.2 Realizing a Use Case 108
8.1.3 Overlap between Peer Use-Case Realizations 110
8.2 Keeping Use-Case Specifics Separate 111
8.2.1 Composing Use-Case-Specific Classes 113
8.2.2 Composing Use-Case-Specific Class Extensions 115
8.2.3 Collaborations in Use-Case Slices 117
8.3 Dealing with Overlap 118
8.3.1 Included Use.Case Slice 119
8.3.2 Generalized Use-Case Slice 121
8.3.3 Non-Use-Case-Specific Slice 123
8.4 Summary and Highlights 125
Chapter 9 Keeping Extensions Separate with Pointcuts 127
9.1 Realizing Extension Use Cases 128
9.2 Keeping Modularity of Extension Use-Case Realizations 129
9.2.1 Operation Extensions 130
9.2.2 Pointcuts 133
9.3 Parameterizing Pointcuts 135
9.3.1 Identifying Parameters 136
9.3.2 Defining Parameters 137
9.3.3 Parameterizing Pointcuts in AOP 138
9.4 Generalizing Extension Use-Case Realizations 139
9.5 Templating Use-Case Slices 142
9.6 Summary and Highlights 144
Chapter 10 Building Systems with Use-Case Modules 145
10.1 A System Comprises Models 146
10.2 Use-Case Model 147
10.3 Analysis Model 148
10.3.1 Language of Analysis 149
10.3.2 Conducting Analysis 150
10.4 Design and Implementation Models 152
10.4.1 Language of Design and Implementation 152
10.4.2 Conducting Design and Implementation 154
10.5 Use-Case Modules Cut Across Models 154
10.5.1 Preserving the Structure of the Use-Case Model 155
10.5.2 A Use-Case Module Contains Use-Case Slices 157
10.5.3 Use-Case Module Relationships 158
10.6 Composing and Configuring Use-Case Modules 159
10.7 Summary and Highlights 161
PART IV Establishing an Architecture Based on Use Cases and Aspects 163
Chapter 11 Road to a Resilient Architecture 167
11.1 What Is Architecture? 168
11.2 What Is a Good Architecture? 168
11.3 Steps to Establish an Architecture Baseline 170
11.4 Begin with a Platform-Independent Structure 174
11.4.1 Element Structure 174
11.4.2 Use-Case Structure 177
11.5 Overlay Platform Specifics on Top 179
11.5.1 Choosing the Platform 179
11.5.2 Keeping Platform Specifics Separate 181
11.6 Summary and Highlights 184
Chapter 12 Separating Functional Requirements with Application Peer Use Cases 187
12.1 Analyzing Application UseCases 188
12.1.1 Identifying Classes 189
12.1.2 Allocating Use-Case Behavior to Classes 190
12.2 Keeping Application Use Cases Separate 195
12.2.1 Element Structure 195
12.2.2 Use-Case Structure 196
12.3 Designing Application Use Cases 199
12.3.1 Identifying Design Elements 200
12.3.2 Identifying Components and Interfaces 203
12.4 Refining Design Elements 205
12.4.1 Keeping Class Extensions Separate 205
12.4.2 Keeping Operation Extensions Separate 207
12.4.3 Keeping State Transitions Separate 209
12.5 Summary and Highlights 211.
Chapter 13 Separating Functional Requirements with Application-Extension UseCases 213
13.1 Analyzing Application-Extension Use Cases 214
13.1.1 Identifying Classes 215
13.1.2 Identifying Pointcuts 216
13.1.3 Allocating Use-Case Behavior to Classes 218
13.2 Keeping Application-Extension Use Cases Separate 220
13.2.1 Structuring Alternate Flows 221
13.2.2 Keeping Alternate Flows Separate 222
13.3 Designing Application-Extension Use Cases 224
13.3.1 Designing Operation Extensions 224
13.3.2 Identifying Component Interfaces from Use-Case Extensions 225
13.3.3 Dealing with Multiple Extensions to a Use Case 226
13.3.4 Extending Multiple Use Cases 229
13.4 Dealing with Changes in the Base 230
13.4.1 Applying Reflection 232
13.4.2 Applying Design Patterns 232
13.4.3 Applying Adaptive Programming 235
13.5 Summary and Highlights 236
Chapter 14 Separating Nonfunctional Requirements with Infrastructure Use Cases 239
14.1 Analyzing an Infrastructure Use Case 240
14.1.1 Identifying Classes 241
14,1.2 Identifying Pointcuts 242
14.1.3 Allocating Use-Case Behavior to Classes 245
14.2 Keeping Infrastructure Use Cases Separate 247
14.3 Designing Infrastructure Use Cases 250
14.3.1 Applying the Infrastructure Use-Case Slice with Aspects 251
14.3.2 Applying the Infrastructure Use-Case Slice with Filters 252
14.3.3 Identifying Components in the Infrastructure Layer 255
14.4 Dealing with Multiple Infrastructure Use Cases 256
14.5 Summary and Highlights 261
Chapter 15 Separating Platform Specifics with Platform-Specific Use-Case Slices 263
15.1 Keeping Platform Specifics Separate 264
15.1.1 Three-Tier Systems 264
15.1.2 Tier Packages 266
15.1.3 Modeling Tiers with Infrastructure Use Cases 268
15.2 Overlaying User Interfaces 269
15.2.1 Minimal Use-Case Design without Presentation Specifics 270
15.2.2 A Web Presentation Mechanism in J2EE 271
15.2.3 Designing the Presentation Mechanism 273
15.2.4 Applying the Presentation Mechanism 275
15.3 Overlaying Distdbution 276
15.3.1 Minimal Use-Case Design without Distribution 277
15.3.2 An EJB Distribution Mechanism 278
15.3.3 Designing the Distribution Mechanism 281
15.3.4 Applying the Distribution Mechanism 286
15.4 Overlaying Persistency 290
15.4.1 Minimal Use-Case Design without Persistence 291
15.4.2 A Relational Persistency Mechanism in J2EE 292
15.4.3 Designing Persistency Mechanism 293
15.4.4 Applying the Persistency Mechanism 297
15.5 Preserving the Use-Case Structure 298
15.6 Summary and Highlights 299
Chapter 16 Separating Tests with Use-Case Test Slices 301
16.1 Test-First Approach 301
16.2 Identifying Test Cases from Use Cases 303
16.2.1 Identifying Test Cases from Use-Case Flows 304
16.2.2 Identifying Test Cases from Use-Case Variables 305
16.2.3 Identifying Test Cases across Multiple Application Use Cases 306
16.2.4 Identifying Test Cases for the Infrastructure and the Platform Specifics 306
16.2.5 Identifying Performance Test Cases 307
16.3 Identifying Elements to Be Tested 308
16.4 Designing and Implementing Tests 310
16.4.1 Designing a Test Infrastructure 312
16.4.2 Designing a Test Case 316
16.5 Summary and Highlights 317
Chapter 17 Evaluating the Architecture 319
17.1 Putting It Together 319
17.2 Evaluating Separation of Concerns 324
17.2.1 Evaluating Design Elements 325
17.2.2 Evaluating Design Packages 325
17.2.3 Evaluating Use-Case Structures 327
17.2.4 Automating the Evaluation 329
17.2.5 Enforcing the Separation of Concerns 330
17.3 Evaluating and Achieving Systemwide Concerns 332
17.3.1 Evaluating and Achieving Maintainability 332
17.3.2 Evaluating and Achieving Extensibility 332
17.3.3 Evaluating and Achieving Portability 333
17.3.4 Evaluating and Achieving Reusability 334
17.3.5 Evaluating and Achieving Performance and Reliability 334
17.4 Summary and Highlights 336
Chapter 18 Describing the Architecture 339
18.1 Architecture Description Comprises Architectural Views 340
18.2 Architectural View of the Use-Case Model 342
18.3 Architectural View of the Analysis Model 344
18.3.1 Architecturally Significant Analysis Elements 344
18.3.2 Architecturally Significant Use-Case Analysis Slices 346
18.4 Architectural View of the Design Model 347
18.4.1 Architecturally Significant Deployment Elements 348
18.4.2 Architecturally Significant Process Elements 348
18.4.3 Architecturally Significant Design Elements 349
18.4.4 Architecturally Significant Use-Case Design Slices 351
18.5 Summary and Highlights 352
PART V Applying Use Cases and Aspects in a Project 355
Chapter 19 Running a Project 357
19.1 Iterative Development 357
19.1.1 Phases in a Project 358
19.1.2 Activities in an Iteration 359
19.2 Estimating Development Effort 359
19.2.1 Estimation at the Beginning of a Project 360
19.2.2 Refining the Estimates 362
19.3 Planning and Controlling the Project 363
19.3.1 Estimating Project Delays 363
19.3.2 Keeping the Project on Track 364
19.4 Productivity Gains by Keeping Concerns Separate 365
19.5 Summary and Highlights 367
Chapter 20 Tailoring the Approach 369
20.1 Achieving the Right Balance 369
20.2 Selecting Disciplines to Apply 370
20.3 Adopting at Different Phases of a Project 373
20.4 Summary and Highlights 374
Chapter 21 Aspects and Beyond 375
21.1 Building a System in Extensions 375
21.2 Balancing Best Practices 376
21.3 The Road Ahead 377
Appendix A Modeling Aspects and Use-Case Slices in UML 379
Appendix B Notation Guide 387
References 395
Glossary 399
Index 407
猜您喜欢

读书导航