Unit 1 - PRK
Unit 1 - PRK
Presentation
on
Software
Engineering
Presented by-
Prashant Kothari (36174)
Software Engineering
TEXT BOOKS
Software Engineering:
A Practitioner's Approach, by R.S.Pressman published
by TMH.
Reference Books:
1. Software Engineering, 8th Edition by Sommerville, Pearson.
2. Software Engineering 3rd Edition by Rajiv Mall, PHI.
3. An Integrated Approach to Software Engineering by Pankaj Jalote
Wiley India, 2009.
CHAPTER-1
Introduction
ENGINEERING
Definition:
Software Engineering is an engineering branch related to the evolution of
software product using well-defined scientific principles, techniques, and
procedures. The result of software engineering is an effective and reliable
software product.
Functionality:
Required functions are:
Accuracy
Suitability
Interpretability
Security
CHARACTERISTICS
Reliability:
Its ability to perform its functions correctly and consistently over time.
Factors that can affect the reliability of software include:
• Bugs and errors in the code
• Lack of testing and validation
• Poorly designed algorithms and data structures
• Inadequate error handling and recovery
• Incompatibilities with other software or hardware
CHARACTERISTICS
Reliability:
To improve the reliability of software, various techniques, and methodologies
can be used, such as testing and validation, formal verification, and fault
tolerance.
Required functions are:
Recoverable
Fault tolerance
Maturity
CHARACTERISTICS
Efficiency:
It refers to the ability of the software to use system resources (such as memory,
processing power, and network bandwidth) in the most effective and efficient
manner.
Factors that can affect the efficiency of software include:
• Poorly designed algorithms and data structures
• Inefficient use of memory and processing power
• High network latency or bandwidth usage
• Unnecessary processing or computation
• Unoptimized code
CHARACTERISTICS
Efficiency:
To improve the efficiency of software, various techniques, and methodologies
can be used, such as performance analysis, optimization, and profiling.
Required functions are:
Times
Performance
CHARACTERISTICS
Usability:
It refers to the extent to which the software can be used with ease the amount of
effort or time required to learn how to use the software.
Required functions are:
Understandability
Learnability
Operatability
CHARACTERISTICS
Maintainability:
It refers to the ease with which modifications can be made in a software system
to extend its functionality, improve its performance or correct errors.
Required functions are:
Testability
Stability
Changeability
CHARACTERISTICS
Portability:
A set of attributes that bears on the ability of software to be transferred from one
environment to another, without minimum changes.
Required functions are:
Adaptability
Install-ability
Replace-ability
THE CHANGING NATURE OF SOFTWARE
Image source :
Software Applications
1. System Software
Operating Systems (Windows, macOS, Linux, etc.), Utilities (antivirus, disk
cleanup, backup and recovery, etc.)
2. Real Time Software
Aircraft navigation programs, Multimedia broadcasts, Multi-player video games,
Data analysis programs and Stock-trading applications
3. Business Software
CRM (customer relationship management), ERP (Enterprise Resource Planning)
software, Microsoft Dynamics 365
Image source :
Software Applications
Image source :
Software Applications
Image source :
A Layered Technologies
Planning is a crucial step in everything. In this same stage, requirement analysis is also
performed by the developers of the organization. This is attained from customer inputs,
and sales department/market surveys.
Step 1 . Planning & Requirements
In this stage, problem of the software targets is clearly defined. Planning for the quality
assurance requirements and identification of the risks associated with the project is also
done in the planning stage.
This is accomplished through "SRS"- Software Requirement Specification document
which contains all the product requirements to be constructed and developed during the
project life cycle.
Step 2 . Information Gathering & Analysis
During this phase, All the relevant information is collected from the customer to develop
a product as per their expectation. Any ambiguities must be resolved in this phase only.
Analysis includes understanding of software product limitations, learning system related
problems or changes to be done in existing systems beforehand, identifying and
addressing the impact of project on organization and personnel etc. The project team
analyzes the scope of the project and plans the schedule and resources accordingly.
Step 3 . Designing
Next step is to bring down whole knowledge of requirements and analysis on the desk
and design the software product. The inputs from users and information gathered in
requirement gathering phase are the inputs of this step. The output of this step comes in
the form of two designs- logical design and physical design. Engineers produce meta-
data and data dictionaries, logical diagrams, data-flow diagrams and in some cases
pseudo codes.
Step 4 . Development
In this phase of SDLC, the actual development begins and the programming is built. The
implementation of design begins concerning writing code. Developers have to follow the
coding guidelines described by their management and programming tools like compilers,
interpreters, debuggers, etc. are used to develop and implement the code.
Step 5 . Testing
It needs a prior testing environment by the test engineers to check for bugs and run-time
errors and they check in this phase whether the functionality of the product is working as
per the requirement or not. During this stage unit testing, integration testing, system
testing, acceptance testing are done. The bugs or defects which are encountered in the
test phase are reported to the developers, who fix the bug and revert to the test engineers
for further testing. This is an iterative process that continues until your application is free
from bugs and defects and works stably.
Step 6 . Implementation
After testing, all the required implementation done by the software developer and the
product is ready for deployment, it is released for customers to use. The size of the
project determines the complexity of the deployment. The users are then provided with
the training or documentation that will help them to operate the software.
Step 7 . Maintenance
When the client starts using the developed systems then the real issues come up and
requirements to be solved from time to time. This procedure where the care is taken for
the developed product is known as maintenance.
Generic View Of Software Engineering
The waterfall model is one of the oldest and most straightforward approaches to
software development.
The Waterfall model follows a linear and sequential approach to software development.
Each phase in the development process must be completed before moving on to the next
one.
Phases of Waterfall SDLC Models:
Requirements: The first phase involves gathering requirements from stakeholders and
analyzing them to understand the scope and objectives of the project.
1. Waterfall Model
Design: Once the requirements are understood, the design phase begins. This involves
creating a detailed design document that outlines the software architecture, user
interface, and system components.
Development: The Development phase includes implementation involves coding the
software based on the design specifications. This phase also includes unit testing to
ensure that each component of the software is working as expected.
Testing: In the testing phase, the software is tested as a whole to ensure that it meets the
requirements and is free from defects.
1. Waterfall Model
Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
Maintenance: The final phase of the Waterfall Model is maintenance, which involves
fixing any issues that arise after the software has been deployed and ensuring that it
continues to meet the requirements over time.
1. Waterfall Model
Advantages of the Waterfall SDLC Models:
Simple and easy
Clear Documentation
Base model
Small projects
Disadvantages of the Waterfall SDLC Models:
Rigid & No experiment
No feedback & No Parallelism
High Risk & Limited Client Involvement
60% efforts maintenance
2. Iterative Model
2. Iterative Model
The Iterative Waterfall Model is a software development approach that combines the
sequential steps of the traditional Waterfall Model with the flexibility of iterative
design. It allows for improvements and changes to be made at each stage of the
development process, instead of waiting until the end of the project.
2. Iterative Model
Advantages of the Iterative SDLC Models:
Simple, easy, flexible & Improved Quality
Base model & Clear Documentation
Big projects
Feedback
Disadvantages of the Iterative SDLC Models:
Rigid & not suitable for smaller projects
More Resources may be required.
Limited Client Involvement
Project completion date not confirmed because of changing requirements.
3. Prototype Model
3. Prototype Model
The Prototyping Model is one of the most popularly used SDLC models. This model is
used when the customers do not know the exact project requirements beforehand.
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system.
The system is partially implemented before or during the analysis phase thereby
allowing the customers to see the product early in the life cycle.
3. Prototype Model
The process starts by interviewing the customers and developing the incomplete
high-level paper model. This document is used to build the initial prototype
supporting only the basic functionality as desired by the customer.
Once the customer figures out the problems, the prototype is further refined to eliminate
them. The process continues until the user approves the prototype and finds the working
model to be satisfactory.
3. Prototype Model
Advantages of the Prototype SDLC Models:
Reduce the risk of incorrect user requirement
Good where requirement are changing/uncommitted
Regular visible process aids management
Reduce Maintenance cost.
Errors can be detected much earlier as the system is made side by side.
3. Prototype Model
Disadvantages of the Prototype SDLC Models:
It is a time-consuming process.
Prototyping tools are expensive.
Special tools & techniques are required to build a prototype.
Difficult to know how long the project will last.
4. Incremental Model
4. Incremental Model
4. Incremental Model
According to the incremental model, the software is divided into separate
modules(components)/increments and each of these modules has a separate set of SDLC
activities including requirements gathering, analysis, design, coding, Testing,
deployment, and maintenance.
When any component is ready, then the component is delivered to the customer and
when remaining components become ready than delivered to the customer one by one
by integrating new components with old once.
• System development is broken down into many mini components.
• Partial systems are successively built to produce a final software or product.
• Highest priority requirement is tackled first.
4. Incremental Model
When we use the Incremental Model?
i. Requirements of the system are clearly understood
ii. When demand for an early release of a product arises
iii. When software engineering team are not very well skilled or trained
iv. When high-risk features and goals are involved
v. Such methodology is more in use for web application and product based companies
4. Incremental Model
Advantages of the Incremental SDLC Models:
Changes are easy to implement.
Prepares the software fast.
Provides risk handling support because of its iterations.
Throughout the development stages changes can be done.
This model is less costly compared to others.
A customer can respond to each building.
Errors are easy to be identified.
4. Incremental Model
Disadvantages of the Incremental SDLC Models:
It requires a good planning designing.
Each iteration phase is rigid.
Total Cost is high because of its continuous iterations.
Every iteration step is distinct and does not flow into the next.
5. Evolutionary Model
5. Evolutionary Model
In software engineering, Evolutionary model is a combination of Iterative and
Incremental model of software development life cycle, where the software system is
constantly refined and improved through feedback from users, testing, and
experimentation. This approach aims to create more robust, flexible, and adaptable
software systems that can evolve with changing requirements and environments.
5. Evolutionary Model
Advantages of the Evolutionary SDLC Models:
• Customer requirements are clearly specification.
• Risk analysis is better.
• It supports changing environment.
• Initial operating time is less.
• Better suited for large mission-critical project.
Disadvantages of the Evolutionary SDLC Models:
• Not suitable for smaller projects.
• Cost
• Highly skilled resources are required.
6. Spiral Model
6. Spiral Model
6. Spiral Model
The Spiral Model is a combination of the waterfall model and the iterative model. It
provides support for Risk Handling. The Spiral Model was first proposed by Barry
Boehm. During the early iterations, the additional release may be a paper model or
prototype.
In its diagrammatic representation, looks like a spiral with many loops. The exact
number of loops of the spiral is unknown and can vary from project to project. Each
loop of the spiral is called a phase of the software development process.
6. Spiral Model
When we use the Spiral Model?
1. Risk handling
2. Radius of spiral (cost)
3. Angular Dimension (progress)
4. Meta Model (combination of waterfall, Iterative, prototype)
5. When the project is large
6. When requirements are unclear and complex
7. When changes may require at any time
8. Large and high budget projects
6. Spiral Model
Advantages of the Spiral SDLC Models:
• Risk handling
• Good for large projects
• Flexible in Requirements
• Customer satisfaction
• Emphasis on Risk Management
• Improved Communication
• Improved Quality
6. Spiral Model
Disadvantages of the Spiral SDLC Models:
• Complex
• Expensive
• Difficulty in time management
• Too much dependability on Risk Analysis
• Time-Consuming
• Resource Intensive
7. Agile Model
7. Agile Model
7. Agile Model
Agile means Move Quickly. The Agile Model was primarily designed to help a
project adapt quickly to change requests. the main aim of the Agile model is to
facilitate quick project completion. To accomplish this task, agility is required. The
Agile Model refers to a group of development processes.
It refers to a software development approach based on iterative development. Agile
methods break tasks into smaller iterations, or parts do not directly involve long term
planning. The project scope and requirements are laid down at the beginning of the
development process. Plans regarding the number of iterations, the duration and the
scope of each iteration are clearly defined in advance.
7. Agile Model
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller
parts helps to minimize the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and
testing before a working product is demonstrated to the client.
7. Agile Model
When we use the Agile Model?
1. When frequent modifications need to be made, this method is implemented.
2. When a highly qualified and experienced team is available.
3. When a customer is ready to have a meeting with the team all the time.
4. when the project needs to be delivered quickly.
5. Projects with few regulatory requirements or not certain requirements.
6. projects utilizing a less-than-strict current methodology
7. Those undertakings where the product proprietor is easily reachable
8. Flexible project schedules and budgets.
7. Agile Model
Advantages of the Agile SDLC Models:
• Frequent Delivery
• It reduces total development time.
• Anytime changes are acceptable.
• Face to face communication with client.
• Efficient design and fulfills the business requirement.
5
•Image source : Ian 7
Sample Task cards
5
•Image source : Ian 8
Incremental planning, small release, simple design
Test First Development
•Image source:
https://pixabay.co
m/
Pair Programming
Refactoring
Continuous integration
•practice of merging all developers' working
copies
•shared mainline is used
•Performed several times a day.
•E.g. GitHub etc
On Site customer
•Alpha testing
•Early system trial by user
•Instant feedback
•Less rework
•Saves time
www.paruluniversity.ac.in