0% found this document useful (0 votes)
29 views90 pages

Unit 1 - PRK

Uploaded by

Gunjan Patil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views90 pages

Unit 1 - PRK

Uploaded by

Gunjan Patil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 90

PARUL UNIVERSITY

Parul Institute of Technology


Computer Science & Engineering

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.

Image source : Google


ENGINEERING

The term is made of two words - Software and Engineering.


 The software is a collection of integrated programs.

Software subsists of carefully-organized instructions and code written by


developers on any of various particular computer languages.
 Engineering is the application of scientific and practical knowledge
to invent, design, build, maintain, and improve frameworks, processes,
etc.
Goal of software engineering is to produce software that is efficient, easy to use,
Image source : Google

and easy to maintain


REQUIREMENT

Software Engineering is required due to the following reasons:


 To manage Large software
 For more Scalability
 Cost Management
 To manage the dynamic nature of software
 To decrease time
 For better quality Management

Image source : Google


COMPONENTS OF SOFTWARE CHARACTERISTICS

There are 6 components of Software Characteristics-


CHARACTERISTICS
Functionality:
Functionality refers to the set of features and capabilities that a software program
or system provides to its users.
functionality in software include:
1. Data storage and retrieval
2. Data processing and manipulation
3. User interface and navigation
4. Communication and networking
5. Security and access control
6. Reporting and visualization
7. Automation and scripting
CHARACTERISTICS

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 : Google


LEGACY SOFTWARE
Software Applications

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

4. Engineering & Scientific Software


AutoCAD (for design), MATLAB (for data analysis and modeling), SolidWorks
(for 3D design), ANSYS (for simulation), SPSS Statistics (for statistical analysis),
and LabVIEW (for data acquisition and control systems)
5. Embedded Software
Calculators, Image processing systems in medical imaging equipment, Traffic
control systems in traffic lights, Control functions of a video game controller
6. Personal Computer Software
Operating systems, Internet browsers, Spreadsheets, Bitmap graphics editors

Image source :
Software Applications

7. Web Based Software


Google Docs, Gmail, Facebook, Twitter, Amazon, and Netflix
8. Artificial Intelligence Software
ChatGPT, Google Assistant, Chatbots, Grammerly, Amazon Alexa, Face
Recognition

Image source :
A Layered Technologies

Image source : Google


A Layered Technologies
Software engineering is a fully layered technology, to develop software we need to go
from one layer to another. All the layers are connected and each layer demands the
fulfillment of the previous layer.
Layered technology is divided into four parts:
1. A quality focus
2. Process
3. Method
4. Tools

Image source : Google


A Layered Technologies
1. A quality focus:
It defines the continuous process improvement principles of software. It provides integrity
that means providing security to the software so that data can be accessed by only an
authorized person, no outsider can access the data. It also focuses on maintainability and
usability.
2. Process:
Process defines a framework that must be established for the effective delivery of software
engineering technology. The software process covers all the activities, actions, and tasks
required to be carried out for software development.

Image source : Google


A Layered Technologies
Process activities are listed below:-
i. Communication: It is the first and foremost thing for the development of software.
Communication is necessary to know the actual demand of the client.
ii. Planning: It basically means drawing a map for reduced the complication of
development.
iii. Modeling: In this process, a model is created according to the client for better
understanding.
iv. Construction: It includes the coding and testing of the problem.
v. Deployment:- It includes the delivery of software to the client for evaluation and
feedback.
Image source : Google
A Layered Technologies
3. Method:
During the process of software development the answers to all “how-to-do” questions are
given by method. It has the information of all the tasks which includes communication,
requirement analysis, design modeling, program construction, testing, and support.
4. Tools:
Software engineering tools provide a self-operating system for processes and methods.
Tools are integrated which means information created by one tool can be used by another.

Image source : Google


Software Development Life Cycle (SDLC)
A software life cycle model (also termed process model) is a pictorial and diagrammatic
representation of the software life cycle. A life cycle model represents all the methods
required to make a software product transit through its life cycle stages. It also captures
the structure in which these methods are to be undertaken.
OR
Software development life cycle (SDLC) is a structured process that is used to design,
develop, and test good-quality software.

Image source : Google


Need of SDLC
SDLC consists of a precise plan that describes how to develop, maintain, replace, and
enhance specific software. The life cycle defines a method for improving the quality of
software and the all-around development process.
Without using an exact life cycle model, the development of a software product would not
be in a systematic and disciplined manner.

Image source : Google


SDLC
Step 1 . Planning & Requirements

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

Image source : Google


Cntd….
Cntd….
SDLC Models
1. Waterfall Model
1. Waterfall Model

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.

Disadvantages of the Agile SDLC Models:


• Less documentation
• Maintenance problem
Extreme Programming
Extreme Programming
5
•Image source : Ian 5
5
•Image source : Ian 6
Sample
story

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

You might also like