Software Project Management
Software Project Management
In the past ten years, typical goals in the software process improvement of several companies are to achieve a 2x, 3x, or 10x increase in productivity, quality, time to market, or some combination of all three, where x corresponds to how well the company does now. The funny thing is that many of these organizations have no idea what x is, in objective terms.
"Software Project Management" Walker 2/112
3/112
4/112
6/112
Part 1
Software crisis
The best thing about software is its flexibility
The almost anything characteristic has made it difficult to plan, monitor, and control software development.
7/112
Drawbacks
Protracted integration and late design breakage Late risk resolution Requirements - driven functional decomposition Adversarial stakeholder relationships Focus on document and review meetings
Testing
8/112
Part 1
2.
3.
4.
5.
6.
7.
8. 9.
Finding and fixing a software problem after delivery costs 100 times more than finding and fixing the problem in early design phases. You can compress software development schedules 25% of nominal, but no more. For every $1 you spend on development, you will spend $2 on maintenance. Software development and maintenance costs are primarily a function of the number of source lines of code. Variations among people account for the biggest differences in software productivity. The overall ratio of software to hardware costs is still growing. In 1955 it was 15:85; in 1985, 85:15. Only about 15% of software development effort is devoted to programming. Walkthroughs catch 60% of the errors. 80% of the contribution comes from 20% of contributors.
9/112
10/112
Part 1
Evolution of Software Economics
Most software cost models can be abstracted into a function of five basic parameters:
Size (typically, number of source instructions) Process (the ability of the process to avoid non-valueadding activities) Personnel (their experience with the computer science issues and the applications domain issues of the project) Environment (tools and techniques available to support efficient software development and to automate process) Quality (performance, reliability, adaptability)
11/112
Part 1
Evolution of Software Economics
Three generations of software economics
Cost
Software size
1960s-1970s Waterfall model Functional design Diseconomy of scale Environments/tools: Custom Size: 100% custom Process: Ad hoc 1980s-1990s Process improvement Encapsulation-based Diseconomy of scale Environments/tools: Off-the-shelf, separate Size: 30%component-based, 70% custom Process: Repeatable 2000 and on Iterative development Component- based Return to investment Environments/tools: Off-the-shelf, integrated Size: 70%component-based, 30% custom Process: Managed/measured
12/112
Part 1
Evolution of Software Economics
The predominant cost estimation process
Software manager, software architecture manager, software development manager, software assessment manager
13/112
Part 1
Evolution of Software Economics
Pragmatic software cost estimation
A good estimate has the following attributes: It is conceived and supported by the project manager, architecture team, development team, and test team accountable for performing the work. It is accepted by all stakeholders as ambitious but realizable. It is based on a well defined software cost model with a credible basis. It is based on a database of relevant project experience that includes similar processes, technologies, environments, quality requirements, and people. It is defined in enough detail so that its key risk areas are understood and the probability of success is objectively assessed.
"Software Project Management" Walker 14/112
Part 1
Higher order languages (C++, Java, Visual Basic, etc.) Object-oriented (Analysis, design, programming) Reuse Commercial components
Iterative development Process maturity models Architecture-first development Acquisition reform Training and personnel skill development Teamwork Win-win cultures Integrated tools (Visual modeling, compiler, editor, etc) Open systems Hardware platform performance Automation of coding, documents, testing, analyses Hardware platform performance Demonstration-based assessment 16/112 Statistical quality control
Environment Automation technologies and tools Quality Performance, reliability, "Software accuracy
Part 1
The most significant way to improve affordability and return on investment is usually to produce a product that achieves the design goals with the minimum amount of human-generated source material.
Reuse, object-oriented technology, automatic code production, and higher order programming languages are all focused on achieving a given system with fewer lines of human-specified source directives.
17/112
Part 1
18/112
Part 1
An object-oriented model of the problem and its solution encourages a common vocabulary between the end users of a system and its developers, thus creating a shared understanding of the problem being solved.
Here is an example of how object-oriented technology permits corresponding improvements in teamwork and interpersonal communications.
The use of continuous integration creates opportunities to recognize risk early and make incremental corrections without destabilizing the entire development effort.
This aspect of object-oriented technology enables an architecture-first process, in which integration is an early and continuous life-cycle activity.
An object-oriented architecture provides a clear separation of concerns among disparate elements of a system, creating firewalls that prevent a change in one part of the system from rending the fabric of the entire architecture.
This feature of object-oriented technology is crucial to the supporting languages and environments available to implement object-oriented architectures.
19/112
Part 1
Many-project solution: Operating with high value per unit investment, typical of commercial products
20/112
Part 1
APPROACH
DISADVANTAGES
Frequent upgrades Up-front license fees Recurring maintenance fees Dependency on vendor Run-time efficiency sacrifices Functionality constraints Integration not always trivial No control over upgrades and maintenance Unnecessary features that consume extra resources Often inadequate reliability and stability Multiple-vendor incompatibility
Commercial components
Custom development
Complete change freedom Smaller, often simpler implementations Often better performance Control of development and enhancement
Expensive, unpredictable development Unpredictable availability date Undefined maintenance model Often immature and fragile Single-platform dependency Drain on expert resources
21/112
Part 1
Attributes
Subject Objectives
Metaprocess
Line of business Line-of-business profitability Competitiveness
Microprocess
Iteration Resource management Risk resolution Milestone budget, schedule, quality Subproject managers Software engineers On budget, on schedule Major milestone progress Release/iteration scrap and rework Content vs. schedule 1 to 6 months
Audience
Acquisition authorities, customers Organizational management Project predictability Revenue, market share
Metrics
22/112
23/112
Part 1
The principle of top talent: Use better and fewer people. The principle of job matching: Fit the task to the skills an motivation of the people available. The principle of career progression: An organization does best in the long run by helping its people to selfactualize. The principle of team balance: Select people who will complement and harmonize with one another. The principle of phase-out: Keeping a misfit on the team doesnt benefit anyone.
24/112
Part 1
25/112
Part 1
26/112
27/112
Part 1
3.
4.
5.
6.
7.
8. 9. 10.
Make quality #1. Quality must be quantified and mechanism put into place to motivate its achievement. High-quality software is possible. Techniques that have been demonstrated to increase quality include involving the customer, prototyping, simplifying design, conducting inspections, and hiring the best people. Give products to customers early. No matter how hard you try to learn users needs during the requirements phase, the most effective way to determine real needs is to give users a product and let them play with it. Determine the problem before writing the requirements. When faced with what they believe is a problem, most engineers rush to offer a solution. Before you try to solve a problem, be sure to explore all the alternatives and dont be blinded by the obvious solution. Evaluate design alternatives. After the requirements are agreed upon, you must examine a variety of architectures and algorithms. You certainly do not want to use an architecture simply because it was used in the requirements specification. Use an appropriate process model. Each project must select a process that makes the most sense for that project on the basis of corporate culture, willingness to take risks, application area, volatility of requirements, and the extent to which requirements are well understood. Use different languages for different phases. Our industrys eternal thirst for simple solutions to complex problems has driven many to declare that the best development method is one that uses the same notation through-out the life cycle. Why should software engineers use Ada for requirements, design, and code unless Ada were optimal for all these phases? Minimize intellectual distance. To minimize intellectual distance, the softwares structure should be as close as possible to the real-world structure. Put techniques before tools. An undisciplined software engineer with a tool becomes a dangerous, undisciplined software engineer. Get it right before you make it faster. It is far easier to make a working program run than it is to make a fast program work. Dont worry about optimization during initial coding.
28/112
Part 1
3.
4.
5.
6. 7. 8. 9. 10.
Inspect code. Inspecting the detailed design and code is a much better way to find errors than testing. Good management is more important than good technology. The best technology will not compensate for poor management, and a good manager can produce great results even with meager resources. Good management motivates people to do their best, but there are no universal right styles of management. People are the key to success. Highly skilled people with appropriate experience, talent, and training are key. The right people with insufficient tools, languages, and process will succeed. The wrong people with appropriate tools, languages, and process will probably fail. Follow with care. Just because everybody is doing something does not make it right for you. It may be right, but you must carefully assess its applicability to your environment. Object orientation, measurement, reuse, process improvement, CASE, prototyping-all these might increase quality, decrease cost, and increase user satisfaction. The potential of such techniques is often oversold, and benefits are by no means guaranteed or universal. Take responsibility. When a bridge collapses we ask, what did the engineers do wrong? Even when software fails, we rarely ask this. The fact is that in any engineering discipline, the best methods can be used to produce awful designs, and the most antiquated methods to produce elegant design. Understand the customers priorities. It is possible the customer would tolerate 90% of the functionality delivered late if they could have 10% of it on time. The more they see, the more they need. The more functionality (or performance) you provide a user, the more functionality (or performance) the user wants. Plan to throw one away .One of the most important critical success factors is whether or not a product is entirely new. Such brand-new applications, architectures, interfaces, or algorithms rarely work the first time. Design for change. The architectures, components, and specification techniques you use must accommodate change. Design without documentation is not design. I have often heard software engineers say, I have finished the design. All that is left is the documentation.
29/112
Part 1
8.
9.
10.
Use tools, but be realistic. Software tools make their users more efficient. Avoid tricks. Many programmers love to create programs with tricks- constructs that perform a function correctly, but in an obscure way. Show the world how smart you are by avoiding tricky code. Encapsulate. Information-hiding is a simple, proven concept that results in software that is easier to test and much easier to maintain. Use coupling and cohesion. Coupling and cohesion are the best ways to measure softwares inherent maintainability and adaptability. Use the McCabe complexity measure. Although there are many metrics available to report the inherent complexity of software, none is as intuitive and easy to use as Tom McCabes. Dont test your own software. Software developers should never be the primary testers of their own software. Analyze causes for errors. It is far more cost-effective to reduce the effect of an error by preventing it than it is to find and fix it. One way to do this is to analyze the causes of errors as they are detected. Realize that softwares entropy increases. Any software system that undergoes continuous change will grow in complexity and become more and more disorganized. People and time are not interchangeable. Measuring a project solely by person-months makes little sense. Expert excellence. Your employees will do much better if you have high expectations for them.
30/112
Part 1
Architecture-first approach
The central design element The risk management element The technology element The control element The automation element
31/112
Part 2
32/112
Part 2
Life-Cycle Phases
Engineering and Production Stages Inception Phase Elaboration Phase Construction Phase Transition Phase
Part 2
Activities
Assessment Economics Management
Implementation, testing
Testing Exploiting economics of scale Operations
35/112
Engineering Stage
Inception Elaboration
Production Stage
Construction Transition
Idea
Architecture
Beta Releases
Products
36/112
Essential activities : Formulating the scope of the project (capturing the requirements and operational concept in an information repository) Synthesizing the architecture (design trade-offs, problem space ambiguities, and available solutionspace assets are evaluated) Planning and preparing a business case (alternatives for risk management, iteration planes, and cost/schedule/profitability trade-offs are evaluated)
37/112
Essential activities : Elaborating the vision (establishing a high-fidelity understanding of the critical use cases that drive architectural or planning decisions) Elaborating the process and infrastructure (establishing the construction process, the tools and process automation support) Elaborating the architecture and selecting components (lessons learned from these activities may result in redesign of the architecture)
38/112
During the construction phase : All remaining components and application features are integrated into the application All features are thoroughly tested Essential activities : Resource management, control, and process optimization Complete component development and testing against evaluation criteria Assessment of the product releases against acceptance criteria of the vision
39/112
The transition phase is entered when baseline is mature enough to be deployed in the end-user domain This phase could include beta testing, conversion of operational databases, and training of users and maintainers Essential activities : Synchronization and integration of concurrent construction into consistent deployment baselines Deployment-specific engineering (commercial packaging and production, field personnel training) 1. Assessment of deployment baselines against the complete vision and acceptance criteria in the requirements set
"Software Project Management" Walker 40/112
Life-Cycle Phases
Evaluation Criteria : Is the user satisfied? Are actual resource expenditures versus planned expenditures acceptable?
Each of the four phases consists of one or more iterations in which some technical capability is produced in demonstrable form and assessed against a set of the criteria The transition from one phase to the nest maps more to a significant business decision than to the completion of specific software activity.
Part 2
41/112
Part 2
Design Set
Implementation Set
1.Source code baselines 2.Associated compile-time files 3.Component executables
Deployment Set
1.Integrated product executable baselines 2.Associated run-time files 3.User manual
Operational Artifacts
5.Release descriptions 6.Status assessments 7.Software change order database 8.Deployment documents 9.Enviorement
42/112
Part 2
43/112
Part 2
Two important forms of requirements : vision statement (or user need) - which captures the contract between the development group and the buyer. evaluation criteria defined as management-oriented requirements, which may be represented by use cases, use case realizations or structured text representations.
44/112
Part 2
Environment A robust development environment must support automation of the development process. It should include : requirements management visual modeling document automation automated regression testing
45/112
Part 2
Architecture Description
46/112
Part 2
I.
I. I.
it should include installation procedures, usage procedures and guidance, operational constraints, and a user interface description. It should be written by members of the test team, who are more likely to understand the users perspective than the development team. It also provides a necessary basis for test plans and test cases, and for construction of automated test suites.
47/112
Part 2
Over the past 30 years, the quality of documents become more important than the quality of the engineering information they represented.
48/112
Part 2
49/112
Part 2
A mature process, an understanding of the primary requirements, and a demonstrable architecture are important prerequisites for predictable planning.
Architecture development and process definition are the intellectual steps that map the problem to a solution without violating the constraints.
50/112
Part 2
Design View
Process View
Component View
Deployment View
51/112
Part 2
The design view addresses the basic structure and the functionality
of the solution. The process view addresses the run-time collaboration issues involved in executing the architecture on a distributed deployment model, including the logical software network topology, interprocess communication and state management. The component view describes the architecturally significant elements of the implementation set and addresses the software source code realization of the system from perspective of the project's integrators and developers. The deployment view addresses the executable realization of the system, including the allocation of logical processes in the distribution view to physical resources of the deployment network.
52/112
Part 2
53/112
Part 2
54/112
Part 2
Management Requirements
Design
Implementation Assessment Deployment
Results for the next iteration
55/112
Part 2
Management Requirements
Design
Implementation Assessment Deployment
Transition Phase
Implementation
Assessment Deployment
56/112
Part 2
57/112
Part 2
2. Minor milestones iteration-focused events, conducted to review the content of an iteration in detail and to authorize continued work.
3. Status assessments periodic events provide management with frequent and regular insight into the progress being made.
"Software Project Management" Walker 58/112
Part 3
59/112
Part 3
Process Automation
Tools: Automation Building Blocks The Project Environment
60/112
Part 3
61/112
Part 3
The development of a work breakdown structure is dependent on the project management style, organizational culture, customer preference, financial constraints and several other hard-to-define parameters. A WBS is simply a hierarchy of elements that decomposes the project plan into the discrete work tasks. A WBS provides the following information structure:
A delineation of all significant work A clear task decomposition for assignment of responsibilities A framework for scheduling, budgeting, and expenditure
tracking.
62/112
Part 3
Two simple planning guidelines should be considered when a project plan is being initiated or assessed.
FIRST-LEVEL WBS ELEMENT DEFAULT BUDGET
INCEPTION 5% 10%
The second guideline prescribes the allocation of effort and schedule across the life-cycle phases
The first guideline prescribes a default allocation of costs among the first-level WBS elements
63/112
Part 3
Part 3
Backward-looking:
1. The lowest level WBS elements are elaborated into detailed tasks, for which budgets and schedules are estimated by the responsible WBS element manager. 2. Estimates are combined and integrated into higher level budgets and milestones. 3. Comparisons are made with the top-down budgets and schedule milestones. Gross differences are assessed and adjustments are made in order to converge on agreement between the top-down and the bottom-up estimates.
65/112
Part 3
Production Stage
Construction
Usable iterations
Elaboration
Architecture iterations
Transition
Product releases
Macro-level task estimation for production-stage artifacts Micro-level task estimation for engineering artifacts Stakeholder concurrence Coarse-grained variance analysis of actual vs. planned expenditures Tuning the top-down projectindependent planning guidelines into project-specific planning guidelines.
Micro-level task estimation for production-stage artifacts Macro-level task estimation for engineering artifacts Stakeholder concurrence Fine-grained variance analysis of actual vs. planned expenditures
66/112
Part 3
Infrastructure
Project administration Engineering skill centers Professional development
Process automation
Project A Manager
Project B Manager
Project N Manager
67/112
Part 3
Business case Vision Software development plan Work breakdown structure Status assessments Requirements set
Responsibilities
Life-Cycle Focus
Inception
Elaboration phase planning Team formulating Contract base lining Architecture costs
Resource commitments Personnel assignments Plans, priorities, Stakeholder satisfaction Scope definition Risk management Project control
Transition
Customer satisfaction Contract closure Sales support Next-generation planning
Elaboration
Construction phase planning Full staff recruitment Risk resolution Product acceptance criteria Construction costs
Construction
Transition phase planning Construction plan optimization Risk management
68/112
Part 3
Responsibilities
Requirements trade-offs Design trade-offs Component selection Initial integration Technical risk solution
Life-Cycle Focus
Inception
Architecture prototyping Make/buy trade-offs Primary scenario definition Architecture evaluation criteria definition
Elaboration
Architecture base lining Primary scenario demonstration Make/buy trade-offs base lining
Construction
Architecture maintenance Multiple-component issue resolution Performance tuning Quality improvements
Transition
Architecture maintenance Multiple-component issue resolution Performance tuning Quality improvements
69/112
Part 3
Artifacts
Responsibilities
Component Component Component Component Component
Life-Cycle Focus
Inception
Prototyping support Make/buy trade-offs
Elaboration
Critical component design Critical component implementation and test Critical component base line
Construction
Component Component Component Component design implementation stand-alone test maintenance
Transition
Component maintenance Component documentation
70/112
Part 3
Deployment set SCO database User manual Environment Release specifications Release descriptions Deployment documents
Inception
Infrastructure planning Primary scenario prototyping
Responsibilities
Life-Cycle Focus
Construction
Project infrastructure Independent testing Requirements verification Metrics analysis Configuration control Change management User deployment
Transition
Infrastructure maintenance Release base lining Change management Deployment to users Requirements verification
Elaboration
Infrastructure base lining Architecture release testing Change management Initial user manual
Infrastructure upgrades Release testing Change management User manual base line Requirements verification
71/112
Part 3
Software management 50% Software architecture 20% Software development 20% Software assessment 10% Software architecture 50%
Inception
Transition
Software management 10% Software architecture 5% Software development 35% Software assessment 50%
Elaboration
Construction
Software management 10% Software architecture 10% Software development 50% Software assessment 30%
72/112
Process Automation
Computer-aided software engineering
Part 3
Computer-aided software engineering (CASE) is software to support software development and evolution processes. Activity automation
Graphical editors for system model development; Data dictionary to manage design entities; Graphical UI builder for user interface construction; Debuggers to support program fault finding; Automated translators to generate new versions of a program.
73/112
Process Automation
Computer-aided software engineering (CASE) Technology
Part 3
Case technology has led to significant improvements in the software process. However, these are not the order of magnitude improvements that were once predicted
Software engineering requires creative thought this is not readily automated; Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these.
"Software Project Management" Walker 74/112
Process Automation
CASE Classification
Part 3
Classification helps us understand the different types of CASE tools and their support for process activities. Functional perspective
Process perspective
Integration perspective
75/112
Process Automation
Functional Tool Classification
To y e o l tp P n in to ls la n g o E it gto ls d in o C a gema ae e t to ls hn n g mn o C n u tio m n g m t to ls o fig ra n a a e en o P to p gto ls ro ty in o Mth d p o to ls e o -su p rt o Lag ag-p ce n to ls n u e ro ssi g o P g ma ly to ls ro ra na sis o T st g o ls ein t o D u g gto ls eb g in o D um tato to ls oc en i n o R -e g e gto ls e n inerin o Ea p s x m le P ERT o e to ls, stim io to ls sp a sh et at n o , re d e s T x e to , d g me ito , w rdp c ss rs et di rs ia ra d rs o ro e o R q ire en stracab tyto s,c an e cn l s ste s eu m t e ili ol h g o tro y m V si n m agm n y e , syse u in o ls er o a e e t sst ms t m b n ild g t o V y h h v la g ag , us in e ce e er t o er ig -le el n u es er t rfa g n a rs D sig e to , d tad tio a s,co eg n a rs e n di rs a ic n rie d e er to C p rs in pr t r s omile , ter e e C s re re ceg n a o , s a a ly rs d n m a al s r ros fe n e er t rs t tic na se , y a ic n y e s T st d t a e er to fileco ar to e a g n a rs, mp a rs In a ive b g in sst ms ter ct de u g g y e Pg a o p g a e ly ut ro ramsm a ee it o , i g d rs C s e e e sst msp g mre truc rin s stem ros-rfer nc y e , ro ra -s tu g y s
Part 3
76/112
Process Automation
CASE Integration
Part 3
Tools
Support individual process tasks such as design consistency checking, text editing, etc. Support a process phase such as specification or design, Normally include a number of integrated tools. Support all or a substantial part of an entire software process. Normally include several integrated workbenches.
"Software Project Management" Walker 77/112
Workbenches
Environments
Process Automation
Tools, Workbenches, Environments
CASE te c hnolo gy
Part 3
T ools
W orkbe nche s
Editors
Com pile rs
File c om pa r tor s a
Pr ogra m m ing
T sting e
78/112
Part 3
METRIC
Work and progress
PURPOSE
Iteration planning, plan vs. actuals, management indicator Financial insight, plan vs. actuals, management indicator Resource plan vs. actuals, hiring rate, attrition rate Iteration planning, management indicator of schedule convergence Convergence, software scrap, quality indicator Convergence, software rework, quality indicator
PERSPECTIVES
SLOC, function points, object points, scenarios, test cases, SCOs Cost per month, full-time staff per month, percentage of budget expended People per month added, people per month leaving Software changes
Reworked SLOC per change, by type, by release/component/subsystem Average hours per change, by type, by release/component/subsystem
79/112
Part 3
Straightforward automation, single thread Interactive performance, single platform Many precedent systems, application re-engineering
80/112
Part 3
Rank
1 2 3 4 5 6 7
Deployment
Requirements Assessments Management Environment
Requirements
Assessment Environment Implementation Deployment
81/112
Looking Forward
Part 4
82/112
Looking Forward
Table of Contents
Part 4
83/112
Part 4
84/112
Modern Project Profiles Continuous Integration The continuous integration inherent in an iterative development process enables better insight into quality trade-offs. System characteristics that are largely inherent in the architecture (performance, fault tolerance, maintainability) are tangible earlier in the process, when issues are still correctable.
Part 4
85/112
Part 4
80% of the progress is made by 20% of the people. "Software Project Management" Walker 86/112
Part 4
The artifacts are now intended to evolve along with the process, with more and more fidelity as the life-cycle progresses and the requirements understanding matures. "Software Project Management" Walker 87/112
Part 4
88/112
Part 4
2. Establish an iterative life-cycle process that confronts risk early 3. Transition design methods to emphasize component-based development
4. Establish a change management environment the dynamics
of iterative development, including concurrent workflows by different teams working on shared artifacts, necessitate highly controlled baselines
Part 4
9. Plan intermediate releases in groups of usage scenarios with evolving levels of detail
10. Establish a configurable process that is economically scalable
90/112
Part 4
2. Agreement on interfaces
3. Formal inspections 4. Metric-based scheduling and management 5. Binary quality gates at the inch-pebble level 6. Program-wide visibility of progress versus plan. 7. Defect tracking against quality targets 8. Configuration management 9. People-aware management accountability
91/112
Part 4
function points
quality measures C++ functionally oriented
VERSUS
It will be difficult to improve empirical estimation models while the project data going into these models are noisy and highly uncorrelated, and are based on differing process and technology foundations.
92/112
Part 4
Separation of the engineering stage from the production stage will force estimators to differentiate between architectural scale and implementation size. Rigorous design notations such as UML will offer an opportunity to define units of measure for scale that are more standardized and therefore can be automated and tracked.
93/112
Part 4
1. Finding and fixing a software problem after delivery costs 100 times more than fixing the problem in early design phases
2. You can compress software development schedules 25% of nominal, but no more. 3. For every $1 you spend on development, you will spend $2 on maintenance. 4. Software development and maintenance costs are primarily a function of the number of source lines of code.
94/112
Part 4
8. Software systems and products typically cost 3 times as much per SLOC as individual software programs.
9. Walkthroughs catch 60% of the errors.
10. 80% of the contribution comes from 20% of the contributors. "Software Project Management" Walker 95/112
Part 4
96/112
Part 4
Aim.
Select a critical project. Staff it with the right team of complementary resources and demand improved results.
Fire.
Execute the organizational and project-level plans with vigor and follow-through.
97/112
Appendix
98/112
A sequence of actions a system performs that yields a valuable result for a particular actor. A user or outside system that interacts with the system being designed in order to obtain some value from that interaction
What is an Actor?
Use Cases describe scenarios that describe the interaction between users of the system and the system itself. Use Cases describe WHAT the system will do, but never HOW it will be done.
"Software Project Management" Walker 99/112
Define the start state and any preconditions that accompany it Define when the Use Case starts Define the order of activity in the Main Flow of Events Define any Alternative Flows of Events Define any Exceptional Flows of Events Define any Post Conditions and the end state Mention any design issues as an appendix Accompanying diagrams: State, Activity, Sequence Diagrams View of Participating Objects (relevant Analysis Model Classes) Logical View: A View of the Actors involved with this Use Case, and any Use Cases used or extended by this Use Case
"Software Project Management" Walker 100/112
Appendix
Use Cases describe WHAT the system will do, but never HOW it will be done. Use Cases are Analysis Products, not Design Products.
101/112
Appendix
Use Cases describe WHAT the system should do, but never HOW it will be done Use cases are Analysis products, not design products
102/112
Use cases are the primary vehicle for requirements capture in RUP Use cases are described using the language of the customer (language of the domain which is defined in the glossary) Use cases provide a contractual delivery process (RUP is Use Case Driven) Use cases provide an easily-understood communication mechanism When requirements are traced, they make it difficult for requirements to fall through the cracks Use cases provide a concise summary of what the system should do at an abstract (low modification cost) level.
"Software Project Management" Walker 103/112
As functional decompositions, it is often difficult to make the transition from functional description to object description to class design Reuse at the class level can be hindered by each developer taking a Use Case and running with it. Since UCs do not talk about classes, developers often wind up in a vacuum during object analysis, and can often wind up doing things their own way, making reuse difficult Use Cases make stating non-functional requirements difficult (where do you say that X must execute at Y/sec?) Testing functionality is straightforward, but unit testing the particular implementations and non-functional requirements is not obvious
"Software Project Management" Walker 104/112
The Use Case Model Survey is to illustrate, in graphical form, the universe of Use Cases that the system is contracted to deliver. Each Use Case in the system appears in the Survey with a short description of its main function.
Participants: Domain Expert Architect Analyst/Designer (Use Case author) Testing Engineer
"Software Project Management" Walker 105/112
106/112
In Analysis, we analyze and refine the requirements described in the Use Cases in order to achieve a more precise view of the requirements, without being overwhelmed with the details Again, the Analysis Model is still focusing on WHAT were going to do, not HOW were going to do it (Design Model). But what were going to do is drawn from the point of view of the developer, not from the point of view of the customer Whereas Use Cases are described in the language of the customer, the Analysis Model is described in the language of the developer:
107/112
Why spend time on the Analysis Model, why not just face the cliff?
Appendix
By performing analysis, designers can inexpensively come to a better understanding of the requirements of the system By providing such an abstract overview, newcomers can understand the overall architecture of the system efficiently, from a birds eye view, without having to get bogged down with implementation details. The Analysis Model is a simple abstraction of what the system is going to do from the point of view of the developers. By speaking the developers language, comprehension is improved and by abstracting, simplicity is achieved Nevertheless, the cost of maintaining the AM through construction is weighed against the value of having it all along.
"Software Project Management" Walker 108/112
Boundary classes are used in the Analysis Model to model interactions between the system and its actors (users or external systems) Boundary classes are often implemented in some GUI format (dialogs, widgets, beans, etc.) Boundary classes can often be abstractions of external APIs (in the case of an external system actor) Every boundary class must be associated with at least one actor:
109/112
Entity classes are used within the Analysis Model to model persistent information Often, entity classes are created from objects within the business object model or domain model
110/112
The Great Et Cetera Control classes model abstractions that coordinate, sequence, transact, and otherwise control other objects In Smalltalk MVC mechanism, these are controllers Control classes are often encapsulated interactions between other objects, as they handle and coordinate actions and control flows.
111/112
Literature
Software Project Management A Unified Framework Walker Royce Software Processes Ian Sommerville 2004 Process and Method: An Introduction to the Rational Unified Process
112/112