Unit 1 : INTRODUCTION OF
SOFTWARE & SOFTWARE
ENGINEERING
Questions asked in GTU
1. Distinguish between a program and a software product(W-20)
2. Explain Waterfall process model. (Summer 2018, Summer
2019,Winter 2019,w-20) ( 7 marks )
3. What is Software Engineering? What is Process? What is Product?
(Summer 2019) ( 3 marks )
4. Explain Software Engineering as a Layered Technology. ( Summer
2018,winter 2018) ( 4 marks )
5. Compare Prototype and RAD Process Model. ( Summer 2019,winter
2018) ( 3 marks )
6. Explain Incremental Model ( winter 2017/18) ( 7 marks)
7. Explain Spiral Model in brief with suitable diagram. (winter 2018) ( 4
marks )
8. What is the importance of Process Model in development of
Software System? Explain Prototype Process Model. (winter 2018) (
7 marks )
2
Outline
• What is software?
• Software Engineering
• Need of software engineering
• Importance of software engineering
• Software Engineering as a layered technology
• SDLC Models
-Waterfall Model
- Incremental Model
- Spiral Model
- Prototype Model
3
- RAD Model
What is Software ???
• Software, in its most general sense, is a set of instructions or
programs instructing a computer to do specific tasks.
4
Types of software
5
What is software Engineering?
• The term software engineering is the product of two
words, software, and engineering.
Software Engineering
It is a collection of It is the application
integrated programs. of scientific and practical knowledge to invent,
design, build, maintain, and improve
frameworks, processes, etc.
• Software engineering is the systematic application of
engineering approaches to the development of software.
6
7
Need of software Engineering
• To manage Large software
• For more Scalability
• Cost Management
• For Better quality Management
8
Importance of software
Engineering
9
Software Engineering as a layered
technology
10
▪ Quality Focus
• Main principle of Software Engineering is Quality Focus.
• An engineering approach must have a focus on quality.
• Total Quality Management (TQM), Six Sigma, ISO 9001, ISO
9000-3, CAPABILITY MATURITY MODEL (CMM), CMMI & similar
approaches encourages a continuous process improvement
culture
▪ Process layer
• It is a foundation of Software Engineering
• It defines a framework with activities for effective delivery of
software engineering technology
▪ Method
• It provides technical how-to’s for building software
• It encompasses many tasks including communication,
requirement analysis, design modeling, program construction,
testing and support
▪ Tools
• This layer contains automated or semi-automated tools that
offer support for the framework and the method each software
engineering project will follow.
• Computer-aided software engineering (CASE) is the scientific
application of a set of tools and methods to a software system
which is meant to result in high-quality, defect-free, and
maintainable software products.
• CASE tools automate many of the activities involved in various
life cycle phases.
SDLC
• The Software Development Life Cycle (SDLC) refers to a
methodology with clearly defined processes for creating
high-quality software
• The SDLC methodology focuses on the following phases of
software development:
13
List of SDLC models
14
Waterfall Model
• It is also called as linear sequential model.
• In this model whole application is developed in a
sequential approach.
• In this model each phase must be completed fully before
the next phase begin.
15
Waterfall Model
16
Where to use the waterfall model??
• Requirements are very well known.
• Product definition is stable.
• Technology is understood.
17
Advantages
• This model is simple
• Easy to understand and use.
• In this model phases are processed and completed one at
a time. Phases do not overlap.
• Waterfall model works well for smaller projects where
requirements are very well understood.
18
Disadvantages
• It is only suitable for the small size projects.
• Constant testing of the design is needed.
• If requirements may change the Waterfall model may not
work.
• High amounts of risk and uncertainty.
• Once an application is in the testing stage, it is very
difficult to go back and change something that was not
well-thought out in the concept stage.
19
Incremental Model
20
• Incremental Model is a process of software development
where requirements divided into multiple standalone
modules of the software development cycle.
• In this model, each module goes through the
requirements, design, implementation and testing phases.
Every subsequent release of the module adds function to
the previous release.
• The process continues until the complete system achieved.
21
22
▪ For example, word-processing software developed using
the incremental model
• It might deliver basic file management, editing and
document production functions in the first increment
• more sophisticated editing in the second increment;
• spelling and grammar checking in the third increment;
and
• advanced page layout capability in the fourth
increment.
23
When to use ?
• When the requirements are superior.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the
product.
• You can develop prioritized requirements first.
24
Advantages
• Errors are easy to be recognized.
• Easier to test and debug
• More flexible.
• The Client gets important functionality early.
25
Disadvantages
• It requires a good planning
• Problems might cause due to system architecture as such
not all requirements collected up front for the entire
software lifecycle
• Rectifying a problem in one unit requires correction in all
the units and consumes a lot of time
• Total cost is higher than waterfall
26
Evolutionary Process Models
▪ In Evolutionary model, the software requirement is first broken
down into several modules (or functional units) that can be
incrementally constructed and delivered.
▪ Evolutionary Process Models are specially meant for that which
produce an increasingly more complete version of the software
with each iteration.
▪ Evolutionary Models are iterative.
▪ Evolutionary models are
• Prototyping Model
• Spiral Model
The Spiral Model
• The spiral model combines the idea of iterative
development with the systematic, controlled aspects of
the waterfall model.
• This Spiral model is a combination of iterative
development process model and sequential linear
development model
• It allows incremental releases of the product or
incremental refinement through each iteration around the
spiral.
• The spiral model has five phases. A software project
repeatedly passes through these phases in iterations
called Spirals.
• The spiral model is a risk-driven software development
process model.
29
▪ When to use Spiral Model?
• For development of large scale / high-risk projects.
• When costs and risk evaluation is important.
• Users are unsure of their needs.
• Requirements are complex.
• Significant (considerable) changes are expected.
▪ Advantages
• High amount of risk analysis hence, avoidance of Risk
is enhanced.
• Strong approval and documentation control.
• Additional functionality can be added at a later date.
• Software is produced early in the Software Life Cycle.
31
▪ Disadvantages
• Can be a costly model to use.
• Risk analysis requires highly specific expertise.
• Project’s success is highly dependent on the risk analysis phase.
• Doesn’t work well for smaller projects.
• Not suitable for low risk project.
Prototyping model
▪ Prototyping model is appropriate when
• Customers have general objectives of software but do not have
detailed requirements for functions & features.
• Developers are not sure about efficiency of an algorithm &
technical feasibilities.
▪ It serves as a mechanism for identifying software requirements.
▪ Prototype can be serve as “the first system”.
▪ Both stakeholders and software engineers like prototyping model
• Users get feel for the actual system
• Developers get to build something immediately
Deployment & Communication
Feedback
Construction
of Prototype Quick Plan
Modeling Quick
Design
▪ It works as follow
• Communicate with stockholders & define objective of Software
• Identify requirements & design quick plan
• Model a quick design (focuses on visible part of software)
• Construct Prototype & deploy
• Stakeholders evaluate this prototype and provides feedback
• Iteration occurs and prototype is tuned based on feedback
▪ Problem Areas
• Customer demand that “a few fixes” be applied to make the
prototype a working product, due to that software quality suffers
as a result
• Developer often makes implementation in order to get a
prototype working quickly; without considering other factors in
mind like OS, Programming language, etc.
▪ Advantages
• Users are actively involved in the development
• Since in this methodology a working model of the system is
provided, the users get a better understanding of the system
being developed
• Errors can be detected much earlier
Disadvantage
• This model is costly.
• It has poor documentation because of continuously
changing customer requirements.
• There may be too much variation in requirements.
• Customers sometimes demand the actual product to be
delivered soon after seeing an early prototype.
37
Rapid Application Development
Model (RAD)
Team - 1
Modeling
Construction
Integration
Communication Delivery
Team - 2 Feedback
Planning Modeling
Deployment
Construction
Team - 3
Modeling Component Reuse
Business Modeling Automatic Code
Data Modeling Generation
Construction
Process Modeling Testing
▪ It is also know as RAD Model
▪ It is a type of incremental model in which; components or
functions are developed in parallel.
▪ Rapid development is achieved by component based construction
▪ This can quickly give the customer something to see and use and
to provide feedback.
▪ Communication
• This phase is used to understand business problem.
▪ Planning
• Multiple software teams work in parallel on different
systems/modules.
▪ Modeling
• Business Modeling: Information flow among the business.
• Ex. What kind of information drives (moves)?
• Who is going to generate information?
• From where information comes and goes?
• Data Modeling: Information refine into set of data objects that
are needed to support business.
• Process Modeling: Data object transforms to information flow
necessary to implement business.
▪ Construction
• It highlighting the use of pre-existing software component.
▪ Deployment
• Deliver to customer basis on subsequent iteration.
▪ When to Use ?
• There is a need to create a system that can be modularized in 2-3
months of time.
• High availability of designers and budget for modeling along with
the cost of automated code generating tools.
• Resources with high business knowledge are available.
▪ Advantages
• Reduced development time.
• Increases reusability of components.
• Quick initial reviews occur.
• Encourages customer feedback.
• Integration from very beginning solves a lot of integration issues.
▪ Drawback
• For large but scalable projects, RAD requires sufficient human
resources.
• Projects fail if developers and customers are not committed in a
much shortened time-frame.
• Problematic if system can not be modularized.
• Not appropriate when technical risks are high (heavy use of new
technology).
43