njit inception is not the requirements phase chapter 4 applying uml and patterns craig larman

32
NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Post on 22-Dec-2015

235 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

NJIT

Inception is not the Requirements Phase

Chapter 4

Applying UML and Patterns

Craig Larman

Page 2: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Inception is NOT requirements

Purpose is to decide whether to proceed with development, not to define requirements.

Only key requirements are ivestigated.

Page 3: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

A motto for requirements

Le mieux est l’ennemi du bien- Voltaire

(The best is the enemy of the good.) Avoid “Paralysis by Analysis” – it kills the

budget without significantly benefiting the corporation.

Classic Mistake: Too much time and money wasted in the “fuzzy front end.”

Page 4: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Questions during inception

What is the vision for this project? What is the business case? Is the project feasible? Should we buy or build? Rough estimate of cost? At end of inception: Go or No Go?

Page 5: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Inception in one sentence

Determine the product scope, vision, and business case.

Page 6: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Problem statement

Do the stakeholders have basic agreement on the vision of the project, and is it worth investing in serious investigation?

Page 7: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

NJIT

Inception Artifacts

Not all documents are needed for every project.

Page 8: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Vision and Business Case

Describes the high level goals and constraints, the business case, and provides an executive summary.

Usually has an estimate of costs (+/- 100%) and expected benefits stated in financial terms.

Page 9: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Use Case Model

Describes the functional requirements and related non-functional requirements.

Preliminary only, usually the names of most of the expected use cases and actors, but usually only about 10% of the use cases are detailed.

Do not confuse a use case diagram with a use case. It is mostly text.

Page 10: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (1)

A little knowledge is a dangerous thing. I first studied Use Cases with Ivar Jacobsen. At that time I paid a lot of attention to form. Then, after talking with Craig Larman, I started to appreciate that in the early stages of software development, content overwhelms form.

Page 11: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (2)

I look for good naming conventions, abstraction, and the avoidance of premature design or early commitment to specific technologies. For example, why specify a keyboard before you know whether voice input would be more appropriate?

Search the Web for “Alistair Cockburn” for help on writing use cases.

Page 12: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (3)

I have criticized a login use case because a login is a procedure, not a complete user process. While the student argued that Larman encourages creating a separate use case for activities that are shared by many activities, I am still going to insist that early in the process, you must think like an end user, not as a developer.

Page 13: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (4)

While you are working on ESSENTIAL use cases, leave out technical implications and describe only COMPLETE user processes. Later, when you get to the design phase, and you are working or REAL use cases, you can start to think in technical language.

Page 14: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (4) I have also criticized using the word manage in a

Use Case. Larman, on page 67, recommends precisely that term for CRUD use cases. CRUD is usually design, not specification, but I still don't like Larman's suggestion. I strongly prefer Noun Verb phrase names that give clear descriptions of what is happening to ones that use generic terms like information, data, manage, group, etc. Manage would also be more appropriate for activities done by manager than by others, so it is even more ambiguous.

Page 15: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (5) Naming is one of the most critical activities in the

early stages of software development. Names that are chosen tend to determine design more powerfully than almost any other feature.

Larman considers assigning responsibilities to objects the most critical activity in object oriented development. That is why patterns were developed. But naming largely determines what objects are created so that activities can be assigned to them.

Page 16: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (6) An activity I stress more than naming is deferring

decisions. I want you to define the problem fully before you start to define a solution. Any work that you do on the problem domain tends to increase the range of possible solutions, while work in the solution domain limits your choices. You want to be certain that the problem domain is large enough to hold some good solutions and hopefully an ideal solution before you start to narrow your choices.

Page 17: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

About use cases (7) Premature design is a primary cause of mediocre

solutions that may work, but do not give a competitive advantage.

Page 18: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Supplementary Specification

Describes non-functional requirements that do not appear elsewhere.

Functional requirements describe the functionality of the product. All other requirements that must be met are considered non-functional requirements.

Page 19: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Glossary

Describes the key terms in the business domain.

Page 20: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Risk Plan

Contains a list of known and expected risks.

Includes business, technical, resource, and schedule risks identified by probability and severity.

All significant risks should have a response or mitigation plan.

Page 21: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Prototypes / Proof of concepts

These may be developed to clarify the vision, or to validate technical ideas.

Inception phase prototypes are throw away prototypes, not evolutionary prototype that may be evolved into a product. They are often done with a prototyping tool.

Page 22: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Iteration Plan

Describes what to do in the first iteration of the product.

Usually implements the core functionality of the product.

Eliminate biggest risk first. The worst risk is usually that the final product will not meet the most important requirement.

Page 23: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Phase / Software Development Plan

A low precision guess for the duration and effort of the elaboration. Includes tools, people, training and other resources required.

May also be called a Resource Plan.

Page 24: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Development Case

A description of the Unified Process steps and artifacts for the project. Note that the UP is always customized for each project.

Page 25: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

NJIT

You know you don’t understand Inception when…

(signs of trouble)

Page 26: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Schedule

Inception should last a few weeks at most.

Page 27: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Requirements defined

Only key requirements should be described during inception. Save the rest for later phases and later iterations.

Page 28: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Accuracy of estimates

There is a funnel of cost estimates. The earlier the estimate, the less accurate it is.

Inception, Analysis, Design, Construction, next phase, etc…

+/- 100% +/-50% +/- 25% +/-10%

Some inception estimates are +400/-75%

Page 29: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Do not design architecture

Architecture should be done iteratively during elaboration.

Defer decisions as late as possible. The more you know, the less chance that you will make a bad decision.

Page 30: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Path to disaster

The Waterfall method is too risky: Define the requirements

Design the architectureImplement the product

Use iterations instead.

Page 31: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Always needed

The most essential inception document is the Business Case or Vision artifact.

The main purpose is to decide whether or not to proceed with the project. Note that there are usually further Quality Gates that also must revisit the Go/No Go decision. (Just because you wasted $1 million is no reason to waste $10 million.)

Page 32: NJIT Inception is not the Requirements Phase Chapter 4 Applying UML and Patterns Craig Larman

Use Cases and Actors

You should have identified most of the use cases and actors during inception.

Do not detail all of the use cases. Only document the most important ones. About 10 or 20% of the use cases should be detailed enough to estimate the scope of the total project.