Comp 468 Lecture Slide Chapter 01 (Introduction To Software Engineering)
Comp 468 Lecture Slide Chapter 01 (Introduction To Software Engineering)
Conclusions
◦ Demand for software is high and rising
◦ Much software has poor design and is getting worse
◦ We are in a perpetual ‘software crisis’
◦ We have to learn to ‘engineer’ software
What is Software Engineering?
Software engineering is an engineering activity. It is not
algorithmic. It requires experimentation, the reuse of pattern
solutions, and the incremental evolution of the system
toward a solution that is acceptable to the client.
It is the process of solving customers’ problems by the
systematic development and evolution of large, high-quality
software systems within cost, time and other constraints
Cont…
Solving customers’ problems
◦ This is the goal of every software engineering
◦ Engineers search for an appropriate solution, often by trial and error,
evaluating alternatives empirically, with limited resources and
incomplete knowledge.
◦ Sometimes the solution is to buy, not build
◦ Adding unnecessary features does not help to solve the problem
◦ Software engineers must communicate effectively to identify and understand
the problem
◦ Includes five steps: formulate the problem, analyze the problem, search for
solutions, decide on the appropriate solution and specify the solution
Cont…
Systematic development and evolution
◦ An engineering process involves applying well understood
techniques in an organized and disciplined way
◦ Many well-accepted practices have been formally
standardized
E.g. by the IEEE or ISO
◦ Most development work is evolution
Cont…
Advantages
◦ No administrative overhead
◦ Signs of progress (code) early
◦ Low expertise, anyone can use it!
◦ Useful for small projects.
Cont…
Disadvantage
Dangerous!
◦ No visibility/control
◦ No resource planning
◦ No deadlines
◦ Mistakes hard to detect/correct
◦ Impossible for large projects
communication breakdown
Waterfall process model
It is a sequential approach, where each fundamental
activity of a process is represented as a separate phase and arranged
in linear order.
The following phase should not start until the previous phase has
finished: no feedback
It is a plan-driven process
Waterfall development model phases:
Requirement gathering→ Analysis → Design → Implementation →
Testing → Maintenance
But in practice, phases overlap and may return to a previous phase.
Diagrammatic representation
Cont…
When to use waterfall model
In principle, waterfall model should only be applied
when requirements are well understood and
unlikely to change radically during development
Application is not complicated and big
• Environment is stable
• Technology and tools used are not dynamic and is
stable
• Resources are available and trained
Advantage
Easy to use, understand and implement.
Widely used and known (in theory!)
Fits other engineering process models: civil,
mechanical etc.
Reinforces good habits: define-before- design,
design-before-code
Each stage has well defined deliverable or milestone.
Suited for smaller projects where requirements are
well defined
Disadvantage
You cannot go back a step; if the design phase has gone wrong,
things can get very complicated in the implementation phase.
Requires that requirements are well-specified and unchanging.
Clients valuable feedback cannot be included with ongoing
development phase
Error can be fixed only during the phase
It is not desirable for complex project where requirement
changes frequently
Incremental process model
It is based on the idea of developing an initial implementation,
exposing this to user feedback, and evolving it through several
versions until an acceptable system has been developed.
Incremental software development is better than a waterfall approach
for most business, e-commerce, and personal systems.
it is not a separate model. It is essentially a series of waterfall
cycles.
The requirements are divided into broken down into multiple
standalone modules of software development cycle..
The SDLC life cycle process is repeated and each subsequent release of the system
adds more functionality until all requirements are met/all designed functionality
has been implemented.
Cont…
When to use incremental approach?
• Requirements of the system are clearly understood
• When high-risk features and goals are involved
• There’s high demand for the product, so you need fast
market entry
• When software engineering team are not very well skilled
or trained
• Such methodology is more in use for web application and
product based companies
Cont…
Iterative development process model
Advantages
◦ Testing and debugging during smaller iteration is easy.
◦ It allows feedback to proceeding stages.
◦ Risks are identified and resolved during iteration
Disadvantages
◦ Requirement changes can cause over budget.
◦ Design can be changed again and again because of imperfect
requirements.
◦ Not suitable for smaller projects
◦ Project completion date not confirmed because of changing
requirements
Incremental Model Vs Iterative Model
Incremental is where you build a complete feature of
the software component, but at the end of each phrase or
section.
◦ You have nothing to review or feedback on.
while in iterative, it builds small portions of all the
features.
When you move from one version to another, you decide
(based on feedback) what you need in the new version
as a better choice and what you need to discard.
Incremental
Iterative
Spiral process model
It is a combination of waterfall model and iterative model.
It is a risk-driven software development process model.
where the process is represented as spiral rather than a
sequence of activities
The software is developed in a series of incremental releases.
Thus, the first loop might be concerned with system
feasibility, the next loop might be concerned with the
requirements definition, the next loop with system design,
and so on.
Cont…
Con…
Cont…
When to use spiral model?
• when project is large
• When releases are required to be frequent
• When creation of a prototype is applicable
• When risk and costs evaluation is important
• Spiral methodology is useful for medium to high-risk
projects
• When requirements are unclear and complex
• When changes may require at any time
• When long term project commitment is not feasible due to
changes in economic priorities
Advantage of spiral model
Risk reduction
Functionality can be added
Software produced early
Drawbacks
◦ Need for specialised skills and training to apply the technique
◦ Difficult to formally specify some aspects of the system such as the
user interface.
Advantage
◦ The resulting software will have high quality
Applicability
◦ Critical systems especially those where a safety or security case
must be made before the system is put into operation
Reuse-based development process model