Since there are many different activities that occur during a software development project, it is better to think of a software process as being composed of sub-processes or component software processes. Each of these processes may be performed by different people playing different roles.
The last 5 projects of this size and scope, using this process, cost approximately $1.5M USD. Thus we predict that this current project will cost the same.
yes, otherwise
no
can this software be easily testedand
can this software be easily modified
Requirements | 10% |
---|---|
Design | 10% |
Implementation | 30% |
Testing | 50% |
that few [projects] planned on spending 50% of their time on testing, but most spent 50% of their time on testingand that most of these projects were on schedule when testing began!
embrace changeas a natural part of software development. Processes that encourage iterative development are better suited to handling change, since change requests can be received and scheduled for subsequent development cycles.
Model | Strengths | Weaknesses | Applicability |
---|---|---|---|
Waterfall | Simple Easy to execute Intuitive and logical Easy contractually |
All or nothing — too risky Reqs. frozen early May chose outdated hardware/tech Disallows changes No feedback from users Encourages reqs. bloating |
Well understood problems short duration projects automation of existing manual systems |
Prototyping | Helps reqs. elicitation Reduces risk Better and more stable final system |
Front heavy Possibly higher cost and schedule Encourages reqs. bloating Disallows later change |
Systems with novice users; or areas with reqs. uncertainity Heavy reporting based systems can benefit from UI prototypes |
Iterative | Regular deliveries, leading to business benefit Can accommodate changes naturally Allows user feedback Avoids reqs. bloating Naturally prioritizes reqs. Allows reasonable exit points Reduces risks |
Overhead of planning each iteration Total costs may increase System architecture and design may suffer Rework may increase |
For businesses where time is important, risk of long projects cannot be taken reqs not known and evolve with time |
Timeboxing | All benefits of iterative Planning for iterations somewhat easier Very short delivery times |
Project management becomes more complex Team size is larger Complicated — lapses can lead to losses |
Where short delivery times are very important Where flexibility in grouping features is needed When overall architecture of system is stable |