0% found this document useful (0 votes)
59 views

Unit 1: Introduction To Software Engineering: Anju K. Kakkad Asst. Professor Scholl of Engineering RK-University-Rajkot

The document provides an overview of software engineering as a layered technology consisting of quality focus, processes, methods, and tools. It describes the three main phases of a generic software engineering process - definition, development, and support. The definition phase involves requirements gathering. The development phase focuses on design and implementation. The support phase is for maintenance through error correction, adaptation, enhancement and prevention. The document also discusses the waterfall and incremental software development models, outlining their phases, advantages, and disadvantages.

Uploaded by

Krishna Antala
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views

Unit 1: Introduction To Software Engineering: Anju K. Kakkad Asst. Professor Scholl of Engineering RK-University-Rajkot

The document provides an overview of software engineering as a layered technology consisting of quality focus, processes, methods, and tools. It describes the three main phases of a generic software engineering process - definition, development, and support. The definition phase involves requirements gathering. The development phase focuses on design and implementation. The support phase is for maintenance through error correction, adaptation, enhancement and prevention. The document also discusses the waterfall and incremental software development models, outlining their phases, advantages, and disadvantages.

Uploaded by

Krishna Antala
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

UNIT 1:

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?

All the questions can be answered through


1. System Analysis
2. Software Project Planning
3. Requirement Analysis
DEVELOPMENT PHASE
Development phase focus on “How” questions. In this phase developer attempts to answer

1. How data structure and software architecture are to be designed?


2. How procedural details are to be implemented?
3. How design will be translated into a programming language?
4. How testing will be performed?

All the previous questions can be answered through


1. Software Design
2. Coding and
3. Software Testing
SUPPORT/MAINTANANCE PHASE
The Support phases focus on “change” that is associated with:

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.

2. Adaptation (variation, revision)

Over time, the original environment (e.g. CPU, OS, Business Rules
etc.) for which the software was developed is likely to change.

Adaptive maintenance results in modification to the software to


accommodate changes to its external environment.
3. Enhancement

As software is used, the customer/user will recognize additional functions


that will provide benefit.
Perfective maintenance extends the software beyond its original
functional requirements.

4. Prevention

Computer software deteriorate due to change, and because of this,


preventive
maintenance often called software reengineering must be conducted to
enable the software to serve the needs of its end users.
WHAT IS A SOFTWARE PROCESS MODEL?
Software Processes is a coherent set of activities for specifying, designing,
implementing and testing software systems. A software process model is an abstract
representation of a process that presents a description of a process from some
particular perspective. There are many different software processes but all involve:
Specification – defining what the system should do;
Design and implementation – defining the organization of the system and
implementing the system;
Validation – checking that it does what the customer wants;
Evolution – changing the system in response to changing customer needs.
TYPES OF SOFTWARE PROCESS MODEL
1)Waterfall Model
2) Incremental Model
3) Evolutionary Model
WATERFALL MODEL
The Waterfall Model was the first Process Model to be introduced. It is also
referred to as a linear-sequential life cycle model. It is very simple to
understand and use.

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.

The waterfall Model illustrates the software development process in a linear


sequential flow. This means that any phase in the development process begins
only if the previous phase is complete. In this waterfall model, the phases do
CONT..
In "The Waterfall" approach, the whole process of software development is
divided into separate phases.

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

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.
CONT..
THE VARIOUS PHASES OF INCREMENTAL MODEL ARE AS
FOLLOWS:
1. Requirement analysis: In the first phase of the incremental model, the product
analysis expertise identifies the requirements. And the system functional requirements
are understood by the requirement analysis team. To develop the software under the
incremental model, this phase performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the
design of the system functionality and the development method are finished with
success. When software develops new practicality, the incremental model uses style
and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of
each existing function as well as additional functionality. In the testing phase, the
various methods are used to test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the
development system. It involves the final coding that design in the designing and
development phase and tests the functionality in the testing phase. After completion
of this phase, the number of the product working is enhanced and upgraded up to the
final system product
INCREMENTAL MODEL- APPLICATION

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.
ADVANTAGE OF INCREMENTAL MODEL

Errors are easy to be recognized.


Easier to test and debug
More flexible.
Simple to manage risk because it handled during its iteration.
The Client gets important functionality early.
DISADVANTAGE OF INCREMENTAL MODEL

Need for good planning


Total Cost is high.
Well defined module interfaces are needed
More management attention is required.
Not suitable for smaller projects.
EVOLUTIONARY PROCESS MODEL
Evolutionary models are iterative type models.
They allow to develop more complete versions of the software.
Following are the evolutionary process models.

1. The prototyping model


2. The spiral model
3. Concurrent development model
1. THE PROTOTYPING 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.

2. Quick design: Quick design is implemented when requirements are known.


It includes only the important aspects like input and output format of the software.
It focuses on those aspects which are visible to the user rather than the detailed plan.
It helps to construct a prototype.
3. Modeling quick design: Thhis phase gives the clear idea about the development of software
because the software is now built.
It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.

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.

Disadvantages of Spiral Model


It can be costly to develop a software model.
It is not used for small projects.
THE CONCURRENT DEVELOPMENT MODEL
The concurrent development model is called as concurrent model.
The communication activity has completed in the first iteration and exits
in the awaiting changes state.
The modeling activity completed its initial communication and then go to
the underdevelopment state.
If the customer specifies the change in the requirement, then the
modeling activity moves from the under development state into the
awaiting change state.
The concurrent process model activities moving from one state to
another state.
Advantages of the concurrent development model
This model is applicable to all types of software development processes.
It is easy for understanding and use.
It gives immediate feedback from testing.
It provides an accurate picture of the current state of a project.

Disadvantages of the concurrent development model


It needs better communication between the team members. This may not be
achieved all the time.
It requires to remember the status of the different activities.
THANK YOU

You might also like