Software Development - Lecture 3
Software Development - Lecture 3
Process
Software Engineering
Lecture
Software Process
• Fundamental Assumption:
– Good processes lead to good software.
– Good processes reduce risk.
– Good processes enhance visibility.
– Good processes enable teamwork.
• Software products are very varied and therefore, there is
no standard process for all software engineering projects.
• Successful software development projects all need to address
similar issues.
• This creates a number of process steps that should be part of all
software projects.
Basic Process Steps in all Software Development
• Acceptance testing
– The system is tested against the requirements by
the client, often with selected customers and
users.
• Delivery and release
– After successful acceptance testing, the system is
delivered to the client and released into
production or marketed to customers.
Process Step: Operation and Maintenance
• Operation:
– The system is put into practical use.
• Maintenance:
– Errors and problems are identified and fixed.
• Evolution:
– The system evolves over time as requirements change, to
add new functions, or adapt to a changing technical
environment.
• Phase out:
– The system is withdrawn from service.
• This is sometimes called the Software Life Cycle.
Sequence of Processes
• Every software project will include these basic processes, in some
shape or form, but:
– The steps may be formal or informal.
– The steps may be carried out in various sequences.
• Major alternatives
– In this course, we will look at three categories of software
development processes:
– Sequential:
• As far as possible, complete each process step before beginning
the next.
Waterfall model.
– Iterative:
• Go quickly through all process steps to create a rough system, then repeat
them to improve the system. Iterative refinement.
– Incremental:
• An variant of iterative refinement in which small increments of software are
placed in production (sprints). Agile development.
Heavyweight and Lightweight Software Development
Heavyweight Lightweight