2 - Software Dev Process Flashcards
What are the steps in managing a software project?
Inception
Elaboration
Construction
Continued Support
Product Retirement
What is the inception stage?
Project starting point, has brief description of need for system and scope
Generates business case for undertaking project:
Project cost, how much it will bring in, how long it will take
What are the steps in elaboration?
Finding requirements
Evaluating risks
Producing a baseline architecture
Planning and setting priorities
What is a use case?
A typical interaction between user and system to achieve a simple goal
E.g. in a word processor: making text bold or generating index for a document
Use cases focus on simple task (from users POV), engineering effort can vary greatly
Important part of designing a system is to discover all potential use cases
Not possible to find all immediately
Use cases complexity and interaction
Systems have large number of small use cases
Each should be as simple as possible, but no simpler
More complex = more scope of ambiguity
Many use cases will interact, this should be described in a use case diagram
There will typically be many different user roles associated with these use cases
Some use cases will be clear and unambiguous, others will be difficult to describe accurately and so pose a requirements risk
What is a Domain Model?
Description of all the different parts of the system
It is the big picture of how the system will operate, and the world it will support
Different from use cases in that it tries to describe complete domain in which the system will operate
In OOD we look for things that make up domain of interest, e.g. words like customer, site, service, bill form basis of OOD model
What is Elaboration: Risk Analysis?
4 types of risk in most project:
Requirements Risk
Technology Risk
Skills Risk
Political Risk
What is Political Risk?
Projects need funding
- Write a project proposal
- Sell it to people with money
- Protect it from threats
Amount of politics varies across company size, government agency etc
Each project needs someone will political skill
What is Skills Risk?
Common attitude that someone having learned to program can do any programming task
Can lead to situation where X language programmers are using Y language without training
What is Technical Risk?
Technology moves fast
Most important technique to deal with new tech is to experiment with it, using new ideas in simplified way
- Code wont be used in project
- Will make project code easier to write
Usually a choice between several similar technologies
- Not immediately apparent which is best
- Experiment to compare
Connecting parts can also be difficult
What is Requirements Risk?
Most common failure to to build wrong system
- May work perfectly but bad if it does not do what is required
Two main causes:
- Cultural problem between way engineers and customers think about system
- Natural language is ambiguous, words can have different meanings to different people, accurate communication is difficult
Risk from engineer’s perspective is we don’t know what customer really wants
How to deal with requirements risk?
Use Cases or User Stories to precisely describe what system should do, what requirements are
Use Prototyping to quickly build parts of system so customer can see requirements in practise
What is Elaboration: Baseline Architecture?
Simple description of how complete system may be structured
- E.g. 3-tier architecture with client, server and database
Can be described in simple way with component diagram
Can also partition code into manageable chunks using a package (module) diagram
What is Elaboration: Planning?
Use cases are built in batches through several iterations
Planning stage assigns use cases to successive iterations
Time to complete each use case needs to be estimated at this stage
What numbers are associated with use cases?
Priority (must have, should have, could have etc)
Understanding of use case
- Low value indicates high requirements risk
Confidence in time estimate
- Low value indicates high scheduling risk
Planning should assign high risk items to early iterations if possible