Business Analyst Training

Requirements elicitation, writing, analysis, and modeling by IIBA Endorsed Education Provider.

www.requirementssolutions.com

Business System Analysis Bookstore
In Association with Amazon.com
Help PicoSearch
Looking for Business Analysis Training

Unified Software Development Process (Addison-Wesley Object Technology Series)

Buy the Book
Summary TOC Back Cover Preface Author Look Inside Comments Reviews
Ivar Jacobson, Grady Booch, James Rumbaugh
January 1999, Addison-Wesley Pub Co, Hardcover, 512 pages, ISBN 0201571692

Instructor-led, virtual, and self-paced training for Business Analysts What Do Business Analysts Do?
How to Elicit (Gather), Write, and Analyze Business Requirements
How to Model, Analyze, and Improve Business Processes
How to Model, Analyze, and Improve Business Data
How to Define and Document Use Cases
How to Test an Application using Business Requirements
How to Elicit Business System Requirements
How to Define and Document Use Cases
e-Learning, virtual workshops and webinars Try our new Virtual Workshops and e-Coaching
for today's Business System Analysts (BA's) and Subject Matter Experts (SME's)

Summary
Buy the book

The Objectory Software Development Process is a new software analysis and design process derived primarily from the three market leading OOA&D methods, Booch, OOSE (Use-Case), and OMT with ideas drawn from many other methods and input from many other parties. It is a component-based, use case driven, architecture centered, iterative and incremental developmental process that uses the Unified Modeling Language (UML) to represent models of the software system to be developed.

The Objectory Software Development Process book describes, apart from the unified generic process and the different activities in developing a software system, the different models developed and evolved during the lifecycle of a system. It describes in an easy-to-understand way the different higher-level constructs -- notation as well as semantics -- used in the models. Thus stereotypes such as use cases and actors, packages, classes, stereotypes, interfaces, active classes, processes and threads, nodes, and most relations will be described in tuitively in the context of a model. The Objectory Software Development Process will go further then most OO A&D methods by describing a family of processes that incorporate the complete life-cycle of software development.

 
analysis bookstore top
BA books: Table of Contents
Buy the book

Preface xvii

 

Part I: The Unified Software Development Process 1

 
Chapter 1: The Unified Process: Use-Case Driven, Architecture-Centric, Iterative, and Incremental 3
1.1 The Unified Process in a Nutshell 4
1.2 The Unified Process Is Use-Case Driven 5
1.3 The Unified Process Is Architecture-Centric 6
1.4 The Unified Process Is Iterative and Incremental 7
1.5 The Life of the Unified Process 8
1.5.1 The Product 9
1.5.2 Phases within a Cycle 11
1.6 An Integrated Process 13
 
Chapter 2: The Four Ps: People, Project, Product, and Process in Software Development 15
2.1 People Are Crucial 16
2.1.1 Development Processes Affect People 16
2.1.2 Roles Will Change 17
2.1.3 Turning "Resources" into "Workers" 18
2.2 Projects Make the Product 19
2.3 Product Is More Than Code 20
2.3.1 What Is a Software System? 20
2.3.2 Artifacts 21
2.3.3 A System Has a Collection of Models 21
2.3.4 What Is a Model? 22
2.3.5 Each Model Is a Self-Contained View of the System 22
2.3.6 Inside a Model 23
2.3.7 Relationships between Models 23
2.4 Process Directs Projects 24
2.4.1 Process: A Template 24
2.4.2 Related Activities Make Up Workflows 25
2.4.3 Specializing Process 26
2.4.4 Merits of Process 27
2.5 Tools Are Integral to Process 28
2.5.1 Tools Impact Process 28
2.5.2 Process Drives Tools 28
2.5.3 Balance Process and Tools 29
2.5.4 Visual Modeling Supports UML 29
2.5.5 Tools Support the Whole Life Cycle 30
2.6 References 31
 
Chapter 3: A Use-Case-Driven Process 33
3.1 Use-Case-Driven Development in Brief 35
3.2 Why Use Cases? 37
3.2.1 To Capture the Value Adding Requirements 37
3.2.2 To Drive the Process 38
3.2.3 To Devise the Architecture and More... 39
3.3 Capturing the Use Cases 40
3.3.1 The Use-Case Model Represents the Functional Requirements 40
3.3.2 Actors Are the Environment of the System 41
3.3.3 Use Cases Specify the System 41
3.4 Analysis, Design, and Implementation to Realize the Use Cases 42
3.4.1 Creating the Analysis Model from the Use Cases 43
3.4.2 Each Class Must Fulfill All Its Collaboration Roles 48
3.4.3 Creating the Design Model from the Analysis Model 48
3.4.4 Subsystems Group Classes 51
3.4.5 Creating the Implementation Model from the Design Model 53
3.5 Testing the Use Cases 55
3.6 Summing Up 57
3.7 References 57
 
Chapter 4: An Architecture-Centric Process 59
4.1 Architecture in Brief 60
4.2 Why We Need Architecture 62
4.2.1 Understanding the System 62
4.2.2 Organizing Development 63
4.2.3 Fostering Reuse 63
4.2.4 Evolving the System 64
4.3 Use Cases and Architecture 65
4.4 The Steps to an Architecture 69
4.4.1 The Architecture Baseline Is a "Small, Skinny" System 69
4.4.2 Using Architecture Patterns 71
4.4.3 Describing Architecture 74
4.4.4 The Architect Creates the Architecture 76
4.5 Finally, an Architecture Description! 77
4.5.1 The Architectural View of the Use-Case Model 78
4.5.2 The Architectural View of the Design Model 78
4.5.3 The Architectural View of the Deployment Model 81
4.5.4 The Architectural View of the Implementation Model 83
4.6 Three Interesting Concepts 83
4.6.1 What Is Architecture? 83
4.6.2 How Is It Obtained? 83
4.6.3 How Is It Described? 83
4.7 References 84
 
Chapter 5: An Iterative and Incremental Process 85
5.1 Iterative and Incremental in Brief 86
5.1.1 Develop in Small Steps 87
5.1.2 What Iteration Is Not 88
5.2 Why Iterative and Incremental Development? 89
5.2.1 Mitigating Risks 89
5.2.2 Getting a Robust Architecture 91
5.2.3 Handling Changing Requirements 91
5.2.4 Allowing for Tactical Changes 92
5.2.5 Achieving Continuous Integration 92
5.2.6 Attaining Early Learning 93
5.3 The Iterative Approach is Risk-Driven 94
5.3.1 Iterations Alleviate Technical Risks 95
5.3.2 Management Is Responsible for Nontechnical Risks 97
5.3.3 Dealing with Risks 97
5.4 The Generic Iteration 98
5.4.1 What an Iteration Is 98
5.4.2 Planning the Iterations 100
5.4.3 Sequencing the Iterations 100
5.5 The Result of an Iteration Is an Increment 101
5.6 Iterations over the Life Cycle 102
5.7 Models Evolve from Iterations 105
5.8 Iterations Challenge the Organization 106
5.9 References 106

 

Part II: The Core Workflows 109

 
Chapter 6: Requirements Capture: From Vision to Requirements 111
6.1 Why Requirements Capture Is Difficult 112
6.2 The Purpose of the Requirements Workflow 113
6.3 Overview of Requirements Capture 113
6.4 The Role of Requirements in the Software Life Cycle 118
6.5 Understanding the System Context Using a Domain Model 119
6.5.1 What Is a Domain Model? 119
6.5.2 Developing a Domain Model 121
6.5.3 Use of the Domain Model 121
6.6 Understanding the System Context Using a Business Model 122
6.6.1 What Is a Business Model? 122
6.6.2 How to Develop a Business Model 124
6.6.3 Find Use Cases from a Business Model 126
6.7 Supplementary Requirements 128
6.8 Summary 130
6.9 References 130
 
Chapter 7: Capturing the Requirements as Use Cases 131
7.1 Introduction 131
7.2 Artifacts 133
7.2.1 Artifact: Use-Case Model 133
7.2.2 Artifact: Actor 134
7.2.3 Use Case 135
7.2.4 Artifact: Architecture Description (View of the Use-Case Model) 139
7.2.5 Artifact: Glossary 139
7.2.6 Artifact: User-Interface Prototype 140
7.3 Workers 140
7.3.1 Worker: System Analyst 140
7.3.2 Worker: Use-Case Specifier 141
7.3.3 User-Interface Designer 142
7.3.4 Worker: Architect 142
7.4 Workflow 143
7.4.1 Activity: Find Actors and Use Cases 144
7.4.2 Activity: Prioritize Use Cases 153
7.4.3 Activity: Detail a Use Case 153
7.4.4 Activity: Prototype User Interface 160
7.4.5 Activity: Structure the Use-Case Model 166
7.5 Summary of the Requirements Workflow 171
7.6 References 172
 
Chapter 8: Analysis 173
8.1 Introduction 173
8.2 Analysis in Brief 176
8.2.1 Why Analysis Is not Design or Implementation 176
8.2.2 The Purpose of Analysis: Summary 177
8.2.3 Concrete Examples of When to Employ Analysis 178
8.3 The Role of Analysis in the Software Life Cycle 179
8.4 Artifacts 181
8.4.1 Artifact: Analysis Model 181
8.4.2 Artifact: Analysis Class 181
8.4.3 Artifact: Use-Case Realization--Analysis 186
8.4.4 Artifact: Analysis Package 190
8.4.5 Artifact: Architecture Description (View of the Analysis Model) 193
8.5 Workers 194
8.5.1 Worker: Architect 194
8.5.2 Worker: Use-Case Engineer 194
8.5.3 Worker: Component Engineer 195
8.6 Workflow 196
8.6.1 Activity: Architectural Analysis 196
8.6.2 Activity: Analyze a Use Case 203
8.6.3 Activity: Analyze a Class 207
8.6.4 Activity: Analyze a Package 211
8.7 Summary of Analysis 213
8.8 References 214
 
Chapter 9: Design 215
9.1 Introduction 215
9.2 The Role of Design in the Software Life Cycle 216
9.3 Artifacts 217
9.3.1 Artifact: Design Model 217
9.3.2 Artifact: Design Class 218
9.3.3 Artifact: Use-Case Realization--Design 221
9.3.4 Artifact: Design Subsystem 224
9.3.5 Artifact: Interface 226
9.3.6 Artifact: Architecture Description (View of the Design Model) 226
9.3.7 Artifact: Deployment Model 227
9.3.8 Artifact: Architecture Description (View of the Deployment Model) 228
9.4 Workers 229
9.4.1 Worker: Architect 229
9.4.2 Worker: Use-Case Engineer 230
9.4.3 Worker: Component Engineer 230
9.5 Workflow 231
9.5.1 Activity: Architectural Design 232
9.5.2 Activity: Design a Use Case 249
9.5.3 Activity: Design a Class 255
9.5.4 Activity: Design a Subsystem 263
9.6 Summary of Design 265
9.7 References 266
 
Chapter 10: Implementation 267
10.1 Introduction 267
10.2 The Role of Implementation in the Software Life Cycle 268
10.3 Artifacts 269
10.3.1 Artifact: Implementation Model 269
10.3.2 Artifact: Component 269
10.3.3 Artifact: Implementation Subsystem 272
10.3.4 Artifact: Interface 274
10.3.5 Artifact: Architecture Description (View of the Implementation Model) 275
10.3.6 Artifact: Integration Build Plan 276
10.4 Workers 277
10.4.1 Worker: Architect 277
10.4.2 Worker: Component Engineer 277
10.4.3 Worker: System Integrator 279
10.5 Workflow 279
10.5.1 Activity: Architectural Implementation 280
10.5.2 Activity: Integrate System 283
10.5.3 Activity: Implement a Subsystem 285
10.5.4 Activity: Implement a Class 288
10.5.5 Activity: Perform Unit Test 289
10.6 Summary of Implementation 293
10.7 References 293
 
Chapter 11: Test 295
11.1 Introduction 295
11.2 The Role of Testing in the Software Life Cycle 296
11.3 Artifacts 297
11.3.1 Artifact: Test Model 297
11.3.2 Artifact: Test Case 297
11.3.3 Artifact: Test Procedure 300
11.3.4 Artifact: Test Component 302
11.3.5 Artifact: Plan Test 302
11.3.6 Artifact: Defect 302
11.3.7 Artifact: Evaluate Test 302
11.4 Workers 303
11.4.1. Worker: Test Designer 303
11.4.2 Worker: Component Engineer 303
11.4.3 Worker: Integration Tester 303
11.4.4 Worker: System Tester 304
11.5 Workflow 304
11.5.1 Activity: Plan Test 305
11.5.2 Activity: Design Test 306
11.5.3 Activity: Implement Test 309
11.5.4 Activity: Perform Integration Test 310
11.5.5 Activity: Perform System Test 311
11.5.6 Activity: Evaluate Test 311
11.6 Summary of Testing 313
11.7 References 313

 

Part III: Iterative and Incremental Development 315

 
Chapter 12: The Generic Iteration Workflow 317
12.1 The Need for Balance 318
12.2 The Phases Are the First Division of Work 319
12.2.1. Inception Phase Establishes Feasibility 319
12.2.2 Elaboration Phase Focuses on "Do-Ability" 320
12.2.3 Construction Phase Builds the System 321
12.2.4 Transition Phase Moves into the User Environment 322
12.3 The Generic Iteration Revisited 322
12.3.1 Core Workflows Repeat in Each Iteration 322
12.3.2 Workers Participate in the Workflows 323
12.4 Planning Precedes Doing 324
12.4.1 Plan the Four Phases 325
12.4.2 Plan the Iterations 326
12.4.3 Think Long Term 327
12.4.4 Plan the Evaluation Criteria 327
12.5 Risks Affect Project Planning 328
12.5.1 Manage a Risk List 328
12.5.2 Risks Affect the Iteration Plan 329
12.5.3 Schedule Risk Action 329
12.6 Use-Case Prioritization 330
12.6.1 Risks Specific to a Particular Product 331
12.6.2 Risk of Not Getting the Architecture Right 331
12.6.3 Risk of Not Getting Requirements Right 332
12.7 Resources Needed 333
12.7.1 Projects Differ Widely 334
12.7.2 A Typical Project Looks Like This 335
12.7.3 Complex Projects Have Greater Needs 335
12.7.4 New Product Line Calls for Experience 336
12.7.5 Paying the Cost of the Resources Used 337
12.8 Assess the Iterations and Phases 338
12.8.1 Criteria Not Achieved 338
12.8.2 The Criteria Themselves 339
12.8.3 The Next Iteration 339
12.8.4 Evolution of the Model Set 340
 
Chapter 13: Inception Launches the Project 341
13.1 The Inception Phase in Brief 341
13.2 Early in the Inception Phase 342
13.2.1 Before the Inception Phase Begins 342
13.2.2 Planning the Inception Phase 343
13.2.3 Expanding the System Vision 344
13.2.4 Setting the Evaluation Criteria 344
13.3 The Archetypal Inception Iteration Workflow 346
13.3.1 Introduction to the Five Core Workflows 346
13.3.2 Fitting the Project into the Development Environment 348
13.3.3 Finding Critical Risks 348
13.4 Execute the Core Workflows, Requirements to Test 348
13.4.1 Capture the Requirements 350
13.4.2 Analysis 352
13.4.3 Design 353
13.4.5 Test 354
13.5 Make the Initial Business Case 354
13.5.1 Outline Business Bid 354
13.5.2 Estimate Return on Investment 356
13.6 Assess the Iteration(s) in the Inception Phase 356
13.7 Planning the Elaboration Phase 357
13.8 The Deliverables for the Inception Phase 358
 
Chapter 14: The Elaboration Phase Makes the Architectural Baseline 359
14.1 The Elaboration Phase in Brief 359
14.2 Early in the Elaboration Phase 360
14.2.1 Planning the Elaboration Phase 361
14.2.2 Building the Team 361
14.2.3 Modifying the Development Environment 361
14.2.4 Setting Evaluation Criteria 361
14.3 The Archetypal Elaboration Iteration Workflow 362
14.3.1 Capture and Refine Most of the Requirements 363
14.3.2 Develop the Architectural Baseline 364
14.3.3 Iterate While the Team Is Small 364
14.4 Execute the Core Workflows--Requirements to Test 364
14.4.1 Capture the Requirements 365
14.4.2 Analysis 367
14.4.3 Design 372
14.4.4 Implementation 374
14.4.5 Test 376
14.5 Make the Business Case 377
14.5.1 Prepare the Business Bid 378
14.5.2 Update Return on Investment 378
14.6 Assess the Iterations in the Elaboration Phase 378
14.7 Planning the Construction Phase 379
14.8 The Key Deliverables 380
 
Chapter 15: Construction Leads to Initial Operational Capability 381
15.1 The Construction Phase in Brief 382
15.2 Early in the Construction Phase 382
15.2.1 Staffing the Phase 383
15.2.2 Setting the Evaluation Criteria 383
15.3 The Archetypal Construction Iteration Workflow 384
15.4 Execute the Core Workflows--Requirements to Testing 385
15.4.1 Requirements 387
15.4.2 Analysis 388
15.4.3 Design 389
15.4.4 Implementation 390
15.4.5 Test 391
15.5 Controlling the Business Case 393
15.6 Assess the Iterations and the Construction Phase 393
15.7 Planning the Transition Phase 393
15.8 The Key Deliverables 394
 
Chapter 16: Transition Completes Product Release 395
16.1 The Transition Phase in Brief 396
16.2 Early in the Transition Phase 397
16.2.1 Planning the Transition Phase 397
16.2.2 Staffing the Transition Phase 399
16.2.3 Setting the Evaluation Criteria 399
16.3 The Core Workflows Play a Small Role in this Phase 400
16.4 What We Do in the Transition Phase 401
16.4.1 Getting the Beta Release Out 401
16.4.2 Installing the Beta Release 402
16.4.3 Responding to the Test Results 402
16.4.4 Adapting the Product to Varied User Environments 403
16.4.5 Completing the Artifacts 404
16.4.6 When Does the Project End? 404
16.5 Completing the Business Case 405
16.5.1 Controlling Progress 405
16.5.2 Review of the Business Plan 405
16.6 Assess the Transition Phase 406
16.6.1 Assess the Iterations and the Phase 406
16.6.2 Postmortem of the Project 407
16.7 Planning the Next Release or Generation 407
16.8 The Key Deliverables 407
 
Chapter 17: Making the Unified Process Work 409
17.1 The Unified Process Helps You Deal with Complexity 409
17.1.1 The Life Cycle Objectives 410
17.1.2 The Life Cycle Architecture 410
17.1.3 Initial Operational Capability 411
17.1.4 Product Release 411
17.2 The Major Themes 411
17.3 Management Leads Conversion to Unified Process 412
17.3.1 The Case for Action 413
17.3.2 The Reengineering Directive Persuades 413
17.3.3 Implementing the Transition 414
17.4 Specializing the Unified Process 416
17.4.1 Tailoring the Process 416
17.4.2 Filling in the Process Framework 417
17.5 Relate to the Broader Community 418
17.6 Get the Benefits of the Unified Process 418
17.7 References 419
 
Appendix A: Overview of the UML 421
A.1 Introduction 421
A.1.1 Vocabulary 422
A.1.2 Extensibility Mechanisms 422
A.2 Graphical Notation 423
A.2.1 Structural Things 423
A.2.2 Behavioral Things 424
A.2.3 Grouping Things 425
A.2.4 Annotational Things 425
A.2.5 Dependency Relationships 425
A.2.6 Association Relationships 425
A.2.7 Generalization Relationships 426
A.2.8 Extensibility Mechanisms 426
A.3 Glossary of Terms 426
A.4 References 433
 
Appendix B: The Unified Process-Specific Extensions of the UML 435
B.1 Introduction 435
B.2 Stereotypes 435
B.3 Tagged Values 438
B.4 Graphical Notation 439
B.5 References 439
 
Appendix C: General Glossary 441
C.1 Introduction 441
C.2 Terms 441
 
Index 451
 
analysis bookstore top
Back Cover
Buy the book

This landmark book provides a thorough overview of the Unified Process for software development, with a practical focus on modeling using the Unified Modeling Language (UML). The Unified Process goes beyond mere object-oriented analysis and design to spell out a proven family of techniques that supports the complete software development life cycle. The result is a component-based process that is use-case driven, architecture-centric, iterative, and incremental.

The Unified Process takes full advantage of the industry-standard Unified Modeling Language. This book demonstrates how the notation and process complement one another, using UML models to illustrate the new process in action. The authors clearly describe the semantics and notation of the different higher-level constructs used in the models. Constructs such as use cases, actors, subsystems, classes, interfaces, active classes, processes, threads, nodes, and most relations are described in the context of a model. Object technology practitioners and software engineers familiar with the authors' past work will appreciate The Unified Software Development Process as a useful means of learning the current best practices in software development.

 
analysis bookstore top
Preface
Buy the book

There is a belief held by some that professional enterprises should be organized around the skills of highly trained individuals. They know the work to be done and just do it! They hardly need guidance in policy and procedure from the organization for which they work.

This belief is mistaken in most cases, and badly mistaken in the case of software development. Certainly, software developers are highly trained, but the profession is still young. Consequently, developers need organizational guidance, which, in this book, we refer to as the "software development process." Moreover, because the process we set forth in this book represents the bringing together of previously separate methodologies, we feel justified in calling it the "Unified Process." It not only unifies the work of the three authors but incorporates the numerous contributions of other individuals and companies that contributed to the UML, as well as a significant number of key contributors at Rational Software Corporation. It draws significantly from the on-the-spot experience of hundreds of user organizations working with early versions of the process at customer sites.

A symphony orchestra conductor, for example, does little more during a performance than tell the players when to start and help them stay together. He or she can do so little because the conductor has guided the orchestra during rehearsals and preparation of the score, and because each musician is highly skilled on his own instrument and actually plays it independently of the other orchestra members. More importantly for our purpose, each musician follows a "process" laid out long ago by the composer. It is the musical score that provides the bulk of the "policy and procedure" that guides the performance. In contrast, software developers do not play independently. They interact with each other and the users. They have no score to follow--until they have a process.

The need for process promises to become more critical, particularly in companies or organizations in which the software systems are "mission-critical," such as financial, air traffic control, defense, and telecommunications systems. By this we mean that the successful conduct of the business or execution of the public mission depends upon the software that supports it. These software systems are becoming more complex, their time to market needs to shrink, and their development, in turn, is becoming more difficult. For reasons such as these, the software industry needs a process to guide developers, just as an orchestra needs a composer's score to guide a performance.

What Is a Software Development Process?

A process defines who is doing what when and how to reach a certain goal. In software engineering the goal is to build a software product or to enhance an existing one. An effective process provides guidelines for the efficient development of quality software. It captures and presents the best practices that the current state of the art permits. In consequence, it reduces risk and increases predictability. The overall effect is to promote a common vision and culture.

We need such a process to serve as a guide for all the participants--customers, users, developers, and executive managers. Any old process will not do; we need one that will be the best process the industry is capable of putting together at this point in its history. Finally, we need a process that will be widely available so that all the stakeholders can understand its role in the development under consideration.

A software development process should also be capable of evolving over many years. During this evolution it should limit its reach at any given point in time to the realities that technologies, tools, people, and organizational patterns permit.

  • Technologies. Process must be built on technologies--programming languages, operating systems, computer systems, network capabilities, development environments, and so on--that are usable at the time the process is to be used. For example, twenty years ago visual modeling was not really mainstream. It was too expensive. At that time, a process builder almost had to assume that hand-drawn diagrams would be used. That assumption greatly limited the degree to which a process originator could build modeling into the process.
  • Tools. Process and tools must develop in parallel. Tools are integral to process. To put it another way, a widely used process can support the investment that creates the tools that support it.
  • People. A process builder must limit the skill set needed to operate the process to the skills that current developers possess or target ones that developers can be quickly trained to use. In many areas it is now possible to embed techniques that once required extensive skill, such as checking model drawings for consistency, in computer-based tools.
  • Organizational patterns. While software developers may not be as independently expert as symphony musicians, they are far from the automaton workers on whom Frederick W. Taylor based "scientific management" one hundred years ago. The process builder has to adapt the process to today's realities--the facts of virtual organization; working at a distance through high-speed lines; the mix of partial owners (in small start-ups), salaried employees, contract workers, and outsourcing subcontractors; and the continuing shortage of software developers.

Process engineers need to balance these four sets of circumstances. Moreover, the balance must exist not just now but into the future. The process builder must design the process so it can evolve, just as a software developer tries to develop a system that not only works this year but evolves successfully for years to come. A process needs to mature for several years before it achieves the level of stability and maturity that will enable it to stand up to the rigors of commercial product development while holding the risk of its use to a reasonable level. Developing a new product is risky enough by itself without adding to it the risk of a process insufficiently tested by actual experience. Under these circumstances, a process can be stable. Without this balance of technologies, tools, people, and organization, using the process would be quite risky.

Goals of the Book

This book presents the software process that was constantly on our minds when we developed the Unified Modeling Language. While UML gives us a standard way to visualize, specify, construct, document, and communicate the artifacts of a software-intensive system, we of course recognize that such a language must be used within the context of an end-to-end software process. UML is a means, not an end. The ultimate end is a robust, resilient, scaleable software application. It takes both a process and a language to get there, and illustrating the process portion is the goal of this book. While we provide a brief appendix on the UML, it is not intended to be comprehensive or detailed. For a detailed UML tutorial refer to The Unified Modeling Language User Guide [11]. For a comprehensive UML reference refer to The Unified Modeling Language Reference Manual [12].

Audience

The Unified Software Development Process can be used by anyone involved in the development of software. It is primarily addressed to members of the development team who deal with the life-cycle activities requirements, analysis, design, implementation, and testing--that is, in work that results in UML models. Thus, for instance, this book is relevant to analysts and end users (who specify the required structure and behavior of a system), application developers (who design systems that satisfy those requirements), programmers (who turn those designs into executable code), testers (who verify and validate the system's structure and behavior), component developers (who create and catalogue components), and project and product managers.

This book assumes a basic grasp of object-oriented concepts. Experience in software development and in an object-oriented programming language is also helpful, but not required.

Approach of the Book

We give the most space in this book to those activities--requirements, analysis, and design--on which UML places primary emphasis. It is in these fields of emphasis that the process develops the architecture of complex software systems. We do, however, treat the entire process, although in less detail. Still, it is the executable program that finally runs. To get there, a project depends on the efforts of every member of its team as well as the support of the stakeholders. As you will see, the process rests on a tremendous variety of activities. Many artifacts must be produced and kept track of. All the activities must be managed.

A complete account of a comprehensive, full life-cycle process is beyond the scope of any one book. Such a book would have to cover design guidelines, templates for artifacts, quality indicators, project management, configuration management, metrics, and more--much more! With the development of on-line access, that "more" is now available, and it can be updated as new developments dictate. For this, we refer you to the Rational Unified Process, a new Web-enabled software product that guides software development teams to more effective software development practices. (See http://www.rational.com for more information.) In covering the full software life cycle, the Rational Unified Process extends the Unified Process beyond areas described in this book and provides additional workflows that are not covered in this book or are mentioned only in passing, such as business modeling, project management, and configuration management.

History of the Unified Process

The Unified Process is balanced because it is the end product of three decades of development and practical use. Its development as a product follows a path from the Objectory Process (first released in 1987) via the Rational Objectory Process (released in 1997) to the Rational Unified Process (released in 1998). Its development has been influenced by many sources. We don't intend to try to identify them all (we actually don't know what they all are) and leave that for software archeologists to research. However, we will describe the impact of the Ericsson and Rational approaches to the product as well as several other sources.

The Ericsson Approach

The Unified Process has deep roots. To employ the language of Peter F. Drucker, it is a "knowledge-based innovation." "There is a protracted span between the emergence of new knowledge and its distillation into usable technology," he advises us. "Then there is another long period before this new technology appears in the marketplace in products, processes, or services." [1]

One reason for this long lead-time is that knowledge-based innovation is grounded on the bringing together of many kinds of knowledge, and this takes time. Another reason is that the people who have to make the new idea effective need time to digest it and spread it to others.

As a first step toward illuminating the development of the Unified Process, let us go back to 1967 and outline more specifically what Ericsson achieved [14], [15], [16]. Ericsson modeled the whole system as a set of interconnected blocks (in UML these are known as "subsystems" and implemented as "components"). They assembled the lowest-level blocks into higher-level subsystems to make the system more manageable. They found the blocks by working through the previously specified traffic cases--now called "use cases." For each use case, they identified the blocks that cooperate to realize it. Knowing the responsibilities of each block, they prepared a specification for it. Their design activities resulted in a set of static block diagrams with their interfaces, and groupings into subsystems. These block diagrams correspond directly to a simplified version of UML class or package diagrams--simplified in that it only showed associations used for communications.

The first work product in the design activities was a software architecture description. It was based on understanding the most critical requirements. It described briefly each block and their groupings into subsystems. A set of block diagrams described the blocks and their interconnections. Over the interconnections, signals, that is, a kind of message, were communicated. All messages were described one by one in a message library. The software architecture description and the message library were key documents that guided the development work, but they were also used to present the system to customers. At that time (1968) customers were not used to having software products presented to them by means similar to engineering blueprints.

For each use case, the engineers prepared either a sequence diagram or a collaboration diagram (now further developed in the UML). These diagrams showed how the blocks dynamically communicate to realize the use case. They prepared a specification in the form of a state graph (including states and transitions only) and a state-transition graph (a simplified version of the UML activity diagrams). This approach, designing with blocks with well-defined interfaces, was key to the success. Now a new configuration of the system could be created--for instance, for a new customer--by exchanging a block with another one that provided the same interfaces.

Now, the blocks were not just subsystems and source-code components; they were compiled into executable blocks, they were installed in the target machine one by one, and it was established that they worked with all the rest of the executable blocks. Beyond that, they must be able to install each new or changed executable block in the field in a running system while it was executing calls for telephone systems operating 100% of the time. One does not shut down such a system just to make changes. It is like changing tires while a car is moving 60 miles an hour.

In essence, the approach used was what we today call component-based development. Ivar Jacobson was the originator of this development method. He guided its evolution into a software development process over the many years of the pre-Objectory period.

The Specification and Description Language

A significant development during this period was the issuance in 1976 by CCITT, the international body for standardization in the telecommunications field, of the Specification and Description Language (SDL) for the functional behavior of telecommunications systems. This standard, significantly influenced by the Ericsson approach, specified a system as a set of interconnected blocks that communicated with each other solely through messages (called "signals" in the standard). Each block owned a set of "processes," which was the SDL term for active classes. A process had instances much as classes do in object-oriented terms. Process instances interacted by messages. It recommended diagrams that were specializations of what UML now calls class diagrams, activity diagrams, collaboration diagrams, and sequence diagrams.

Thus, SDL was a specialized object-modeling standard. Periodically updated, it is still in use by more than 10,000 developers and supported by several tool vendors. Developed originally more than 20 years ago, it was far ahead of its time. However, it was developed at a time when object modeling had not matured. SDL will likely be supplanted by the Unified Modeling Language, which was standardized in November 1997.

Objectory

In 1987 Ivar Jacobson left Ericsson and established Objectory AB in Stockholm. During the next eight years he and his associates developed a process product called Objectory ("Objectory" is an abbreviation of "Object Factory."). They extended it to industries outside of telecommunications and to countries beyond Sweden.

Although the concept of the use case had been present in the work at Ericsson, it now had a name (which was introduced at the OOPSLA conference in 1987), a diagramming technique was developed, and the idea was extended to embrace a variety of applications. That it is use cases that drive development became more clear. That it is architecture that guides the developers and informs the stakeholders came to the fore.

The successive workflows were represented in a series of models: requirements-use cases, analysis, design, implementation, and test. A model is a perspective of a system. The relationships between the models in this series were important to developers as a way of following a feature from one end of the model series to the other end. In fact, traceability became a prerequisite of use-case-driven development. Developers could trace a use case through the model sequence to the source code or, when problems arose, back again.

Development of the Objectory process proceeded in a series of releases, from Objectory 1.0 in 1988 to the first on-line version, Objectory 3.8, in 1995 (an overview of Objectory is presented in [2]).

It is important to note that the Objectory product itself came to be viewed as a system. This way of describing the process--as a system product--provided a better way to develop a new version of Objectory from an earlier one. This way of designing Objectory made it easier to tailor it to meet the particular needs of different development organizations. The fact that the Objectory software development process itself was engineered was a unique feature.

The experience in developing Objectory also provided insights into how to engineer the processes on which a business in general operates. The same principles were applicable and were incorporated in a 1995 book [3].

The Rational Approach

Rational Software Corporation acquired Objectory AB in the fall of 1995 and the task of unifying the basic principles underlying the existing software development processes gained new urgency. Rational had developed a number of software development practices, many of which were complementary to those embodied in Objectory.

For example, "In 1981, Rational set out to produce an interactive environment that would improve productivity for the development of large software systems," James E. Archer Jr. and Michael T. Devlin recalled in 1986 [4]. In this effort, object-oriented design, abstraction, information hiding, reusability, and prototyping were important, they went on to say.

Scores of books, papers, and internal documents detail Rational developments since 1981, but perhaps the two most important contributions to process were the emphases on architecture and iterative development. For instance, in 1990 Mike Devlin wrote a vision paper on an architecture-driven iterative development process. Philippe Kruchten, in charge of the Architecture Practice within Rational, authored papers on iteration and architecture.

We cite one, an article on an architectural representation in four views: the logical view; the process view; the physical view; and the development view, plus an additional view that illustrates the first four views with uses cases or scenarios [6]. The value of having a set of views, rather than trying to cram everything into one type of diagram, grew out of Kruchten's experience on several large projects. Multiple views enabled both stakeholders and developers to find what they needed for their diverse purposes in the appropriate view.

Some have perceived iterative development as somewhat chaotic or anarchic. The four-phase approach (inception, elaboration, construction, and transition) was devised to better structure and control progress while iterating. The phases impose order on the iterations. The detailed planning of the phases and ordering of the iterations within phases was a team effort with Walker Royce and Rich Reitman, as well as the continuing participation of Grady Booch and Philippe Kruchten.

Booch was on the scene from the very beginning of Rational, and in 1996 in one of his books he cited two "first principles" that bear upon architecture and iteration:

  • "An architecture-driven style of development is usually the best approach for the creation of most complex software-intensive projects."
  • "A successful object-oriented project must apply an incremental and iterative process." [7]

Rational Objectory Process: 1995-1997

At the time of the merger, Objectory 3.8 had shown how a software development process as a product could be developed and modeled. It had designed the original architecture of a software development process. It had identified a set of models that recorded the outcome of the process. In areas such as use-case modeling, analysis, and design, it was well developed. In other areas--requirements management other than use cases, implementation, and test--it was less well developed. Moreover, it contained little on project management, configuration management, deployment, and the preparation of the development environment (tools and process procurement).

Now Rational's experience and practices were added to form the Rational Objectory Process 4.1. The phases and the controlled iterative approach, in particular, were added. Architecture was made explicit in the form of an architecture description--the "bible" of the software development organization. A precise definition of architecture was developed. It treated architecture as being the significant parts of the organization of the system. It depicted the architecture as architectural views of the models. Iterative development was advanced from a relatively general concept to a risk-driven approach that put architecture first.

At this time UML was in development and was used as the modeling language of the Rational Objectory Process (ROP). The authors of this book contributed as the original developers of UML. The process development team, headed by Philippe Kruchten, alleviated some of the weaknesses in ROP by strengthening project management, for instance, based on contributions from Royce [8].

Unified Modeling Language

The need for a uniform and consistent visual language in which to express the results of the rather numerous object-oriented methodologies extant in the early 1990s had been evident for some time.

During this period Grady Booch, for example, was the author of the Booch method [9]. James Rumbaugh was the principal developer at the General Electric Research and Development Center of OMT (Object Modeling Technique) [10] When he joined Rational in October 1994, the two began an effort, in concert with many of Rational's customers, to unify their methods. They released version 0.8 of the Unified Method in October 1995, about the same time that Ivar Jacobson joined Rational.

The three, working together, released Unified Modeling Language 0.9. The effort was expanded to include other methodologists and a variety of companies, including IBM, HP, and Microsoft, each of which contributed to the evolving standard. In November 1997 after going through the standardization process, the Unified Modeling Language version 1.1, was promulgated as a standard by the Object Management Group. For detailed information refer to the User Guide [11] and the Reference Manual [12].

UML was used for all models in the Rational Objectory Process.

Rational Unified Process

  • During this period Rational acquired or merged with other software tool companies. Each brought to the mix expertise in process areas that further expanded the Rational Objectory process:
  • Requisite Inc. brought experience in requirements management.
  • SQA Inc. had developed a test process to go with its test product, adding to Rational's long experience in this field.
  • Pure-Atria added its experience in configuration management to that of Rational.
  • Performance Awareness added performance testing and load testing
  • Vigortech added expertise in data engineering.

The process was also expanded with a new workflow for business modeling, based on [3], that is used to derive requirements from the business processes the software was to serve. It also was extended to design user interfaces driven by use cases (based on work done at Objectory AB).

By mid-1998 the Rational Objectory Process had become a full-fledged process able to support the entire software development life cycle. In so doing, it unified a wide variety of contributions, not only by the three present authors but by the many sources from which Rational and the UML were able to draw upon. In June, Rational released a new version of the product, the Rational Unified Process 5.0 [13]. Many elements of this proprietary process now become available to the general public for this first time in the form of this book.

The name change reflects the fact that unification had taken place in many dimensions: unification of development approaches, using the Unified Modeling Language, and unification of the work of many methodologists--not just at Rational but also at the hundreds of customer sites that had been using the process over many years.

 
analysis bookstore top
Author info
Buy the book

Dr. Ivar Jacobson,Vice President of Business Engineering, is the inventor of the OOSE method, and he is also the founder of Objectory AB in Sweden, which recently merged with Rational Software Corporation. Dr. Jacobson is the principal author of two influential and best-selling books Object-Oriented Software Engineering--A Use Case Driven Approach (Computer Language Productivity award winner in 1992) and The Object Advantage--Business Process Reengineering with Object Technology. He has also authored several widely referenced papers on object technology. One of the most famous papers is his first OOPSLA '87 paper entitled "Object-Oriented Development in an Industrial Environment," which presented the first truly object-oriented method ever published. Ivar Jacobson's use-case driven approach has had a very strong impact on the entire OOAD industry, and he himself has become one of its "icons." Consequently, he is a frequently invited keynote speaker and panelist, debating OOAD topics with colleagues and methodologists such as Grady Booch, Jim Rumbaugh, Steven Mellor, and Rebecca Wirfs-Brock at major OO conferences around the world.

He is well known for his pioneering work and more than 20 years of experience in using object methods for the design of large real-time systems. His early object-based design technique has evolved into the international standard ITU(formerly CCITT)/SDL.

Dr. Jacobson also regularly serves on the OOPSLA, ECOOP, and TOOLS program committees, and he is a member of the advisory board of the Journal of Object-Oriented Programming.

In 1994, Ivar Jacobson received the first Swedish Computer Association (SCA) award (the Kjell Hultman prize) for "extraordinary achievement in promoting efficiency and productivity in the development and use of information technology."

 
analysis bookstore top
Business System Analysis Books: Reviews
Buy the book

Amazon.com
A software process defines the steps required to create software successfully. Written by the same authors who brought you the Unified Modeling Language (UML), The Unified Software Development Process introduces a new standard for creating today's software that will certainly be useful for any software developer or manager who is acquainted with UML.

Early sections introduce four basic principles of the unified process: that software should stress use cases (which show how it interacts with users), that the process is architecture-centric, and that it is iterative and incremental. The authors then apply these principles to their software process, which involves everything from gathering system requirements to analysis, design, implementation, and testing. The use-case examples are excellent and include concrete examples drawn from such areas as banking and inventory control.

The authors point out the connection between UML document types (like use cases, class diagrams, and state transition diagrams) with various models used throughout the software process. They provide very short, real-world examples that illustrate how their ideas have been successfully applied. The straightforward tour of the new unified software process gets extra elaboration--along with some advice--in later chapters that further describe the author's ideas on design. With the weight of these three expert authors behind it, readers can expect The Unified Software Development Process to be an important book and one that will be valuable to any working designer or manager. --Richard Dragan

 
analysis bookstore top
 
Requirements
  Business Rules
Prototyping
Requirements Analysis
Requirements Definition
Requirements Documentation
Requirements Engineering
Requirements Management
Requirements Traceability
User Interfaces
Miscellaneous
Requirements Validation
  Acceptance Testing
Test Cases
Test Data Engineering
Test Planning
Testing Tools
Business Process Modeling (BPM)
  Data Flow Diagrams
Decision Tables
Process Analysis
Process Improvement (BPI)
Process Models
Facilitation
  Conducting Meetings
JAD
Miscellaneous
Data Analysis
  Data Models
Miscellaneous
NEW RELEASES
Business Systems Analysis
Best Practices
Interviewing Techniques
Methodologies
Problem Analysis
Request for Proposal (RFP)
Requirements Elicitation
Task Analysis
Unified Modeling Language (UML)
Use Cases
Workflow Analysis
Search:
Keywords:
Home Links Add a book Request Link Exchange BA Skills Test Training Needs Assessment