Unit 1: Introduction To Software Engineering: Anju K. Kakkad Asst. Professor Scholl of Engineering RK-University-Rajkot
Unit 1: Introduction To Software Engineering: Anju K. Kakkad Asst. Professor Scholl of Engineering RK-University-Rajkot
INTRODUCTION TO SOFTWARE
ENGINEERING
Anju K. Kakkad
Asst. Professor
Scholl of Engineering
RK-University- Rajkot
SOFTWARE ENGINEERING AS A LAYERED
TECHNOLOGY
SOFTWARE ENGINEERING AS A LAYERED
TECHNOLOGY
A 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:
It is a foundation of Software Engineering
It is the glue the holds the technology layers
It defines a framework with activities for effective delivery of software engineering
technology
Methods:
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:
Software Engineering Tools allows automation of activities which helps to perform
systematic activities. A system for the support of software development, called
computer-aided software engineering (CASE).
Examples: Testing Tools, Bug/Issue Tracking Tools etc…
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
A GENERIC VIEW OF SOFTWARE ENGINEERING,
The work associated with software engineering can be categorized into three generic
phases, regardless of application area, project size, or complexity. Following
flowchart encompasses the phases.
1.Definition phase
2. Development phase
3. Support phase
DEFINITION PHASE
Definition phase focuses on “what” questions that is during the definition the software
developers attempts to identify.
1.What information is to be processed?
2.What function and performance are desired?
3.What validation conditions are required?
4.What types of interfaces are to be established?
5.What design constraints exists?
1. Error correction
2. Adaptation required
3. Enhancement
4. Prevention
1. Error Correction
- It is likely that the customer will uncover defects in the
software.
- Corrective maintenance changes the software to correct
defects.
Over time, the original environment (e.g. CPU, OS, Business Rules
etc.) for which the software was developed is likely to change.
4. Prevention
In a waterfall model, each phase must be completed before the next phase
can begin and there is no overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for software
development.
In this Waterfall model, typically, the outcome of one phase acts as the input for
the next phase sequentially.
Requirement Gathering and analysis − All possible requirements of the system to
be developed are captured in this phase and documented in a requirement
specification document.
System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
Implementation − With inputs from the system design, the system is first developed
in small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions
are released. Maintenance is done to deliver these changes in the customer
environment.
WATERFALL MODEL - APPLICATION
Requirements are very well documented, clear and fixed.
Product definition is stable.
Technology is understood and is not dynamic.
There are no ambiguous requirements.
Ample resources with required expertise are available to support the product.
The project is short.
WATERFALL MODEL - ADVANTAGES
Simple and easy to understand and use
Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
Phases are processed and completed one at a time.
Works well for smaller projects where requirements are very well understood.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well documented.
WATERFALL MODEL - DISADVANTAGES
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
It is difficult to measure progress within stages.
Cannot accommodate changing requirements.
Adjusting scope during the life cycle can end a project.
Integration is done as a "big-bang. at the very end, which doesn't allow identifying
any technological or business bottleneck or challenges early.
INCREMENTAL MODEL / ITERATIVE MODEL
Prototype is defined as first or preliminary form using which other forms are copied
or derived.
Prototype model is a set of general objectives for software.
It does not identify the requirements like detailed input, output.
It is software working model of limited functionality.
In this model, working programs are quickly produced.
The different phases of Prototyping model are:
1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.
5. Deployment, delivery, feedback: If the user is not satisfied with current prototype then it
refines according to the requirements of the user.
The process of refining the prototype is repeated until all the requirements of users are met.
When the users are satisfied with the developed prototype then the system is developed on
the basis of final prototype.
ADVANTAGES OF PROTOTYPING MODEL
Prototype model need not know the detailed input, output, processes, adaptability of
operating system and full machine interaction.
In the development process of this model users are actively involved.
The development process is the best platform to understand the system by the user.
Errors are detected much earlier.
Gives quick user feedback for better solutions.
It identifies the missing functionality easily. It also identifies the confusing or difficult
functions.
DISADVANTAGES OF PROTOTYPING
MODEL
The client involvement is more and it is not always considered by the
developer.
It is a slow process because it takes more time for development.
Many changes can disturb the rhythm of the development team.
It is a thrown away prototype when the users are confused with it.
THE SPIRAL MODEL
Spiral model is a risk driven process model.
It is used for generating the software projects.
In spiral model, an alternate solution is provided if the risk is found in
the risk analysis, then alternate solutions are suggested and
implemented.
It is a combination of prototype and sequential model or waterfall
model.
In one iteration all activities are done, for large project's the output is
small.
The framework activities of the spiral
model are as shown in the following
figure.
ADVANTAGES OF SPIRAL MODEL
It reduces high amount of risk.
It is good for large and critical projects.
It gives strong approval and documentation control.
In spiral model, the software is produced early in the life cycle
process.