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

基于用例的面向方面软件开发(英文版)
作 者: 雅各布森
出版社: 机械工业出版社
丛编项: 经典原版书库
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 面向对象
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  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版)

内容简介

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, th...

图书目录

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