Lec 4 Process Models
Lec 4 Process Models
process models
Dr Hamed Hemeda
What is software engineering process
• Software engineering process (Also called life-cycle) definition:
• A software process is a series of phases of activities performed to construct a
software system. Each phase produces some artifacts that are the input to other
phases. Each phase has a set of entrance criteria and a set of exit criteria.
• Several models exist for software engineering process. A model is a
specific arrangement of phases and activities in the process. A model
may be suitable for a given project than another depending on the
nature of the project. Existing models are:
• Water-fall process model
• Throwaway prototyping process model
• Evolutionary prototyping process model
• Spiral process model
• Rational Unified Process (RUP) model
• Agile processes model
Water-fall process model
Is a straight sequence of development
activities that begin with requirements
analysis, followed by software design,
implementation, testing, deployment,
and maintenance. It is called a waterfall
process because its straight sequence
of activities resembles a waterfall when
the activities are shown vertically one
after another. Suitable for well-specified
systems
Most software
projects are wicked
problem rather tame
being=>water-fall
may not be suitable
Throwaway prototyping process model
In some projects, it is probable that there will be a mismatch between the
software and users’ expectation. As a solution, a prototype of the system
is constructed and used to acquire and validate requirements. Prototypes
are also used in feasibility studies as well as design validation. A simple
prototype shows only the look and feel and a series of screen shots to
illustrate how the system would interact with a user. A sophisticated
prototype may implement many of the system functions.
A throwaway prototype is constructed quickly and economically—just enough to serve its purpose. A
throwaway prototype could be used as a reference implementation to check whether the implementation
produces the correct result. Furthermore, it could be used to train users before the system is released.
Evolutionary prototyping process model
In some projects, it is probable that there will be a mismatch between the
software and users’ expectation. As a solution, a prototype of the system
is constructed and used to acquire and validate requirements. Prototypes
are also used in feasibility studies as well as design validation. A simple
prototype shows only the look and feel and a series of screen shots to
illustrate how the system would interact with a user. A sophisticated
prototype may implement many of the system functions.
Throwaway prototypes imply that much effort is wasted. This is true when sophisticated prototypes are needed for
feasibility study and design validation of large, real-time embedded systems. The evolutionary process model is
aimed at saving the effort by letting the prototype evolve. It lets the users experiment with an initial prototype,
constructed according to a set of preliminary requirements. Feedback from the users is used to evolve the
prototype. This is repeated until no more extensions are required.
Spiral process model
• Agile development values individuals and interactions over processes and tools.
• Agile development values working software over comprehensive documentation.
• Agile development values customer collaboration over contract negotiation.
• Agile development values responding to change over following a plan.
Agile processes model principals
• Active user involvement is imperative
• The team must be empowered to make decisions.
• Requirements evolve, but the timescale is fixed. New and changed requirements
can replaces low priority requirements.
• Capture requirements at a high level; lightweight and visual: story cards,
screenshots,..
• Develop small, incremental releases and iterate.
• Focus on frequent delivery of software products.
• Complete each feature before moving on to the next.
• Apply the 80-20 rule: 80% of the work or result is produced by 20% of the system
functionality. Those 20% are of high priority
• Testing is integrated throughout the project life cycle; test early and often.
• A collaborative and cooperative approach between all stakeholders is essential
• System engineering is an
engineering discipline that deals
with multidisciplinary systems
(systems containing software,
hardware and human resources).
• Such system development is an
interdisciplinary effort. It involves
hardware, software, and human
resource developments.
• The figure shows a process model
for such systems