Intro
Intro
Intro
PGIT104
Module I
Introduction to Software Engineering
What is Software Engineering?
• Software: It is a program or a set of program
containing instructions that performs desired
functionality.
• It also comprises of data structures that
enables the program to manipulate
instructions.
• Engineering- The process of designing or
building something that serves for a particular
purpose.
• Software engineering is the application of
principles used in the field of engineering,
which usually deals with physical systems, to
the design, development, testing, deployment
and management of software systems.
• It is basically a systematic approach to the
design, development, testing and
maintainance of software systems.
Dual Role of a software
1. As a Product-
– Transforms information - produces, manages,
acquires, modifies, displays, or transmits information
– Delivers computing potential of hardware and
networks
2. As a vehicle for delivering a product
– Controls other programs (operating system)
– Effects communications (networking software)
– Helps build other software (software tools &
environments)
Why is software Engineering important?
1. Quality
2. Maintainability
Software engineering-A layered technology
• A software engg. Comprises of a process, a set of
methods for managing and developing the software
and a collection of tools.
• The bedrock that supports S/W engg. Is quality focus.
Software engineering-A layered technology
1. A quality Process
• Any engineering approach must rest on an quality.
• The "Bed Rock" that supports software Engineering is Quality
Focus.
2. Process
• Foundation for SE is the Process Layer
• SE process is the glue that holds all the technology layers
together and enables the timely development of computer
software.
• It forms the base for management control of software project.
Software engineering-A layered technology
3. Methods
• SE methods provide the "Technical Questions" for building
Software.
• Methods contain a broad array of tasks that include
communication requirement analysis, design modeling,
program construction testing and support.
4. Tools
• SE tools provide automated or semi-automated support for
the "Process" and the "Methods".
• Tools are integrated so that information created by one tool
can be used by another.
Software Life Cycle Models (SDLC)
• A software development life cycle (SDLC) model is a
conceptual framework describing all activities in a software
development project from planning to maintenance.
Requirement Phase
Disadvantages
Advantages
• Simple and easy to use • Very inflexible, like the waterfall
• Each phase has specific model.
deliverables. • Adjusting scope is difficult and
• Higher chance of success over expensive.
the waterfall model due to the • The software is developed during
development of test plans the implementation phase, so no
early on during the life cycle. early prototypes of the software
• Works well for where are produced.
requirements are easily • The model doesn’t provide a
understood. clear path for problems found
• Verification and validation of during testing phases.
the product in the early stages • Costly and required more time,
of product development. in addition to a detailed plan
INCREMENTAL MODEL OR ITERATIVE
ENHANCEMENT MODEL
Advantages and Disadvantages
Advantages Disadvantages
• Avoids the problems resulting in • Requires planning at the
risk driven approach in the management and technical level
software • Becomes invalid when there is
• Understanding increases through time constraint on the project
successive refinements. schedule or when the users
• Incrementally grows in effective cannot accept the phased
solution after every iteration deliverables.
• Does not involve high complexity
rate
• Early feedback is generated
because implementation occurs
rapidly for a small subset of the
software.
EVOLUTIONARY MODELS
1. Spiral Model
2. Prototyping model
i. Throwaway/Rapid prototyping
ii. Evolutionary prototyping
iii. Incremental prototyping
iv. Extreme prototyping
PROTOTYPING MODEL
• Prototypes that evolve into the final system
through an iterative incorporation of user
feedback.
❖The usage
• This process can be used with any software
developing life cycle model. While this shall be
chosen when you are developing a system has
user interactions. So, if the system does not
have user interactions, such as a system does
some calculations shall not have prototypes.
Advantages and Disadvantages
Advantages Disadvantages
• Reduced time and costs, but • Insufficient analysis. User
this can be a disadvantage if confusion of prototype and
the developer loses time in finished system.
developing the prototypes. • Developer
misunderstanding of user
• Improved and increased
objectives.
user involvement.
• Excessive development time
of the prototype.
• It is costly to implement the
prototypes
SPIRAL MODEL
• Spiral model works in an iterative nature. It is
a combination of both Prototype development
process and Linear development process
(waterfall model).
• This model place more emphasis on risk
analysis. Mostly this model adopts to the large
and complicated projects where risk is high.
• Every Iteration starts with a planning and ends
with the product evaluation by client.
SPIRAL MODEL
• Each Phase the Spiral Model undergoes has
the following activities-
1. Planning – Requirement Gathering, Cost
Estimation, Resource Allocation
2. Risk Analysis – Identify and resolve various
risks, Classify them into different levels, try to
find alternatives and plan ahead
3. Development and Testing– Coding, Internal
Testing and deployment.
4. Evaluation.
PHASES OF SPIRAL MODEL
1. Phase 1 – Basic Planning or Requirement
Gathering -> analysis risk -> prototype is built ->
customer evaluation.
2. Phase 2 – Prototype refined -> Documentation of
requirements and validate by customers -> final
prototype.
3. Phase 3 – Risk are now known +traditional
approach of development.
• The usage
1. It is used in the large applications and systems
which built-in small phases or segments.
Advantages and Disadvantages
Advantages Disadvantages
• Estimates (i.e. budget, • High cost and time to reach
schedule, etc.) become the final product.
more realistic as work • Needs special skills to
progressed because evaluate the risks and
important issues are assumptions.
discovered earlier. • Highly customized limiting
• Early involvement of re-usability
developers.
• Manages risks and develops
the system into phases.
SOFTWARE REQUIREMENTS ANALYSIS,
IDENTIFICATION AND SPECIFICATION
INPUT OUTPUT
fi
IDENTIFY FUNCTIONAL REQUIREMENTS