SOFTWARE ENGINEERING
Software engineering is defined as a discipline whose aim
is the production of quality software, delivered on time
and within the budget and that satisfies its requirement
Types of software
System software: It controls the internal operations of a computer system. It is a
group of programs, which is responsible for using computer resources efficiently
and effectively. For example, an operating system
• Real-time software: It observes, analyzes, and controls real world events as they
occur An example of real-time software is the software used for weather forecasting
that collects and processes parameters like temperature and humidity
• Business software: It is widely used in areas where management and control of
financial activities is of utmost importance. The fundamental component of a
business system comprises payroll, inventory, and accounting software
• Engineering and scientific software: This class of software has emerged as
a powerful tool in the research and development of next generation
technology
• Artificial intelligence (AI) software: This class of software is used where
the problem-solving technique is non-algorithmic in nature.
• Web-based software: This class of software acts as an interface between
the user and the Internet
• Personal computer (PC) software: This class of software is used for both
official and personal use.
A system software aids the user and the hardware
to function and interact with each other.
It is a type of software that controls particular
hardware which is attached to the system.
BIOS Driver
Display Drivers
Motherboard Drivers
Printer Drivers
ROM Drivers
Sound card Driver
USB Drivers
Firmware is the permanent software that is embedded into a read-only
memory.
Programming Language Translators: These are mediator programs on
which software programs rely to translate high-level language code to
simpler machine-level code.
Utility: Utility software is designed to aid in analyzing, optimizing,
configuring and maintaining a computer system. It supports the computer
infrastructure.
Application Software
Application Software, also known as end-user programs or productivity programs are
software that helps the user in completing tasks such as doing online research, jotting
down notes, setting an alarm, designing graphics, keeping an account log, doing
calculations or even playing games.
Word Processors:
Database Software:
Multimedia Software:
Education and Reference Software:
Graphics Software:
Web Browsers:
The software can also be classified based on their
Availability and Shareability.
1.Freeware
Freeware software is available without any cost. Any user can
download it from the internet and use it without paying any fee.
However, freeware does not provide any liberty for modifying the
software or charging a fee for its distribution.
Adobe Reader
Audacity
ImgBurn
Recuva
Skype
Team Viewer
Yahoo Messenger
2. Shareware
It is a software that is freely distributed to users on a trial
basis. It usually comes with a time limit and when the time
limit expires, the user is asked to pay for the continued
services.
Open-source
These kinds of software are available to users with
the source code which means that a user can freely
distribute and modify the software and add
additional features to the software.
Licensed Software
They are also known as Closed-source software. These types of
applications are usually paid and have intellectual property rights or
patents over the source code.
common skills for software engineer
Communication.
Teamwork.
Computer programming and coding.
Problem-solving.
Multitasking.
Attention to detail.
Software Components
Software components are parts of a
system or application. Components are a
means of breaking the complexity
of software into manageable parts.
Each component hides the complexity of
its implementation behind an interface.
Components of Software:
There are three components of the software:
Program:
A computer program is a list of instructions that tell a computer what to
do.
Documentation:
Source information about the product contained in design documents,
detailed code comments, etc.
Operating Procedures:
Set of step-by-step instructions compiled by an organization to help
workers carry out complex routine operations.
software processes components
Software specification.
Software design and implementation. ...
Software validation. ...
Software evolution.
software processes components
Software Specifications:
In this process, detailed description of a software system to be developed
with its functional and non-functional requirements.
Software Development:
In this process, designing, programming, documenting, testing, and bug
fixing is done.
Software Validation:
In this process, evaluation software product is done to ensure that the
software meets the business requirements as well as the end users needs.
Software Evolution:
It is a process of developing software initially, then timely updating it for
various reasons.
Software Crisis:
Size and Cost:
Day to day growing complexity and expectation out of
software. Software are more expensive and more
complex.
Quality:
Software products must have good quality.
Delayed Delivery:
Software takes longer than the estimated time to
develop, which in turn leads to cost shooting up.
Software engineering is, by all objective measures, one
of the best fields to get into today. The salary is good –
$95,000 a year on average, in the United States.
Software engineering is important because
specific software is needed in almost every industry, in
every business, and for every function. It becomes more
important as time goes on – if something breaks within
your application portfolio, a quick, efficient, and
effective fix needs to happen as soon as possible.
Necessity of Software Engineering
1. Reduces complexity
2. To minimize software cost
3. To decrease time
4. Handling big projects
5. Reliable software
6. Effeteness
Software Characteristics
Software Characteristics are;
Functionality:
It refers to the degree of performance of the software
against its intended purpose . Required functions are:
Reliability:
A set of attribute that bear on capability of software to
maintain its level of performance under the given
condition for a stated period of time. Required functions
are:
Efficiency:
It refers to the ability of the software to use system
resources in the most effective and efficient manner. the
software should make effective use of storage space and
executive command as per desired timing requirement.
Required functions are:
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.
Maintainability:
It refers to the ease with which the modifications can be
made in a software system to extend its functionality,
improve its performance, or correct errors. Required
functions are:
Portability:
A set of attribute that bear on the ability of software to
be transferred from one environment to another, without
or minimum changes. Required functions are:
What is the difference between software
engineer and software programmer
Software Quality Factors
Product operation factors − Correctness, Reliability,
Efficiency, Integrity, Usability.
Product revision factors − Maintainability, Flexibility,
Testability.
Product transition factors − Portability, Reusability,
Interoperability.
Software Development Life Cycle
Software Development Life Cycle (SDLC) is a process used by
the software industry to design, develop and test high quality software.
The SDLC aims to produce a high –quality software that meets or
exceeds customer expectations, reaches completion within times and
cost estimates.
SDLC is a framework defining tasks performed at each step in
the software development process
What is Software Process Model?
A software process model represents the
order in which the activities of software
development will be undertaken. It describes
the sequence in which the phases of the
Software lifecycle will be performed.
When a process involves building a software, the process may be
referred to as software life cycle
Requirements analysis and definition
System (architecture) design
Program (detailed/procedural) design
Writing programs (coding/implementation)
Testing: unit, integration, system (many more..)
System delivery (deployment)
Maintenance
Waterfall
Prototyping
V-Model
Incremental
Iterative
Spiral
RUP
Agile Development
Waterfall
Waterfall model Model
Prepared by
Prepared by
Pragati
Pragatiraghuwanshi
raghuwanshi
INDEX
History of water fall model.
Features of water fall model.
Phase of water fall model.
Brief description of phases.
Advantages.
Disadvantages.
History of Waterfall Model
1) The first formal description of the waterfall model is
often cited as a 1970 article by Winston W. Royce
2) Royce did not use the term "waterfall" in this article.
3) Royce presented this model as an example of a
flawed, non-working model.
Features of Waterfall Model
1) A Water Fall Model is easy to flow.
2) It can be implemented for any size of project.
3) Every stage has to be done separately at the right
time so you cannot jump stages.
4) Documentation is produced at every stage of a
waterfall model allowing people to understand what
has been done.
5) Testing is done at every stage.
Waterfall Model
Phases of Waterfall model
Waterfall model has 5 different phases, Which are
following:-
1)Requirement gathering and Analysis.
2)Design.
3)Coding.
4)Testing.
5)Maintenance.
1) Requirement gathering and Analysis.
This is the first phase of waterfall model which includes a
meeting with the customer to understand his requirements.
This is the most crucial phase as any
misinterpretation at this stage may give rise to validation issues
later.
The software definition must be detailed and accurate with no
ambiguities.
It is very important to understand the customer
requirements and expectations so that the end product
meets his specifications.
2) Design
The customer requirements are broken down into logical
modules for the ease of implementation. Hardware and
software requirements for every module are Identified and
designed accordingly.
Also the inter relation between the various logical modules is
established at this stage. Algorithms and diagrams defining the
scope and objective of each logical model are developed.
In short, this phase lays a fundamental for actual
programming and implementation
3)Coding
Coding is a step in which design is translated into machine-
readable form.
If design is done in sufficient detail then coding can be done
effectively.
Programs are created in this phase.
In this phase all software divided into small module then after
doing coding for that small module rather than do coding whole
software.
According to design programmers do code and make class
and structure of whole software.
4)Testing.
In this stage,both individual components and
the integrated whole are methodically verified to
ensure that they are error- free and fullymeet
the requirements outlined in the first step.
In this phase testing whole software into two parts
1) HARDWARE & 2) SOFTWARE.
Type of testing is 2-types
1) Inside test.
2) Outside test.
5)Maintenance
This is the final phase of the waterfall model, in
which the completed software
product is handed over to the client after alpha, beta
testing.
After the software has been deployed on
the client site, it is the duty of the software
development team to undertake routine maintenance
activities by visiting the client site.
If the customer suggests changes or enhancements the
software process has to be followed all over again right
from the first phase i.e requirement analysis.
Advantages of Waterfall Model
The water fall model is easy to implementation.
For implementation of small systems water fall
model is use full.
The project requires the fulfillment of one
phase, before proceeding to the next.
It is easier to develop various software through
this method in short span of time.
Disadvantages of Waterfall Model
The requirement analysis is done initially
and sometimes it is not possible to state all
the requirement explicitly in the beginning.
The customer can see working model of
the project only at the end.
If we want to go backtrack then it is not
possible in this model.
It is difficult to follow the sequential flow
in software development process.
PROTOTYPE
MODEL
BY
Deep Ali
MSc III Sem
RAD MODEL
(RAPID APPLICATION DEVELOPMENT MODEL)
Presented by
Raina Agnihotri
System Development Life Cycle-
SDLC prescribe the different activities that need to be carried out
to develop a software. SDLC is important because it breaks down
the entire life cycle of software development thus decreases
complexity and time to develop the software.
SDLC MODEL-
SDLC model is a descriptive and diagrammatic representation of
software life cycle.
Types of SDLC model-
RAD Model-
• It was developed by IBM in early 90’s.
• RAD is a method of software development which heavily
emphasizes rapid prototyping and iterative development.
• Prototype- It is a try implementation of the system.
• RAD was proposed to overcome the rigidity of the Waterfall model
which makes it difficult to accommodate any change requested
from the customer.
*This model has extremely short development cycle. (60 to 90 days)
RAD takes place in a series of short cycle or iterations.
It have small teams comprising of developers, designers ,customer
representatives and other IT resources working on their respective
prototype simultaneously.
The team focuses on present iteration only and the time planned for
each iteration is called a ‘Time Box’.
Phases of the RAD Model-
1. Business Modelling- A complete business analysis is performed to find the
information for business, how it can be obtained, how and when is the
information processed and what are factors driving successful flow of
information.
2. Data Modelling- The information gathered in the business modelling phase is
reviewed and analysed to form sets of data objects. The attributes of the data
sets are identified and defined. The relation between these data objects are
established.
3. Process Modelling- The data object sets defined in the data
modelling phase are converted to establish the business
information flow as per the business model.
4. Application Generation- The actual system is built and coding
is done. using automated code generation to convert processes
and data models from above phases into actual prototypes.
5. Testing and Turnover- The overall testing time is reduced in
the RAD model as the prototypes are independently tested during
every iteration. However, the data flow and the interfaces between
all the components need to be thoroughly tested.
Major goals of RAD-
1. Accommodate change request.
2. Quick Development,
3. Increase acceptability of the software.
Applicability of RAD-
1. To make customised software.
2. To make Non-critical software.
3. For projects with very aggressive time schedule.
4. Where user is available on every stage of development.
5. Should only be used if the budget permits use of
automated code generating tools.
6.When software can be modularised.
How RAD actually facilitate fast development-
1. Minimal planning.
2. Reusing existing code.
Advantages-
Changing requirements can be accommodated.
Progress can be measured.
Reduced development time.
Quick initial reviews.
Disadvantages-
. Requires user involvement throughout the life cycle.
. Needs highly skilled developers.
. Only suitable for projects requiring shorter development time.
. Management complexity is more.
. Inapplicable to cheaper projects.
Comparison of RAD with other models
RAD Model Iterative Waterfall Model
The functionalities are The functionalities are
developed incrementally. developed together.
Accommodate requests Doesn’t accommodate
for changes. requests for changes.
Comparatively less Has better quality and
quality and reliability. reliability.
RAD Model Prototyping Model
InRAD, Prototype is Prototype is used to gain
redefined after getting insights into the
customer’s feedback and problem, choose between
evolves into the alternatives and to get
deliverable product. customer feedback and
get usually thrown away
after this.
RAD Model Evolutionary Model
Each increment results Each increment is
in a quick and dirty systematically developed.
prototype.
Incremental functionalities
RAD develops software are fairly large.
in shorter increments.
Topic - Evolutionary Development Model
Presentation by
Ashutosh tiwari
SDLC MODEL ( 10 WORD )
EVOLUTIONARY MODE - 10MIN
● PHASES
WHEN TO USE ● DIAGRAM
INCREMENTAL MODEL - 10 MIN
ADVANTAGE & DISADVANTAGE
● DIAGRAM
DIAGRAM ● WHEN TO USE
● ADVANTAGE AND DISADVANTAGE
RELATED MODELS
SPIRAL MODEL -10 MIN
WHEN TO USE
ADVANTAGE & DISADVANTAGE
DIFFERENCE
SDLC (Software development life cycle ) MODEL
SDLC is nothing but a sequence of strategy which
define roadmap to develop any software .
Evolutionary Development Model
क्रमागत - Development model
Definition
The evolutionary software development model is based on the idea of rapidly
developing an software,
Start with very raw specification and modifying this according to your software
needs/customer needs.
Here we develop many versions on software in which requirements are added with
each versions . like :- beta version, version 1 , version2 ……...
Each version is based upon user’s feedback (customer’s feedback) to produce a
system(or software) which satisfies user’s needs.
https://www.geeksforgeeks.org/software-engineering-evolutionary-model/
Example :-
● Windows 10 S
● Windows 10
● Windows 8/8.1
● Android 4.4 KitKat ● Windows 7 (2009)
● Android 5.0 Lollipop ● Windows Vista (2006)
● Android 6.0 Marshmallow
● Windows XP (2001)
● Windows 2000 (2000)
● Android 7.0 Nougat
● Android 8.0 Oreo
● Android 9.0 Pie
When we use (applicability)
It is used in large projects . where you can easily find
modules.
commonly used when the customer wants to start using
the core features instead of waiting for the full software .
used in object oriented software development .
Advantage of evolutionary
Error reduction
User satisfaction
Business Benefit
High quality
Low risk
Disadvantage
Several version release
Time and cost
Structure
Spiral Model Incremental Concurrent
Model development Model
Spiral Model
Spiral model provides support for Risk Handling.
In its diagrammatic representation, it looks like a spiral with many loops. The exact
number of loops of the spiral is unknown.
Each loop of the spiral is called a Phase of the software development process.
The exact number of phases needed to develop the product can be varied by the
project manager depending upon the project risks.
As the project manager dynamically determines the number of phases, so the
project manager has an important role to develop a product using spiral model.
The Radius of the spiral at any point represents the expenses(cost) of the project so
far, and the angular dimension represents the progress made so far in the current
phase.
Ex:- Evolution of Microsoft Windows operating system.
Evolutionary model
When to use Spiral Model:
● When project is large
● When releases are required to be frequent
● When creation of a prototype is applicable
● When risk and costs evaluation is important
● For medium to high-risk projects
● When requirements are unclear and complex
● When changes may require at any time
● When long term project commitment is not feasible due to changes in
economic priorities
Advantages of Spiral Model :
Risk Handling
● Good for large projects
Flexibility in Requirements
Customer Satisfaction
Disadvantages :
● Complex
Expensive
Too much dependable on Risk Analysis
Difficulty in time management
Difference
Basically consists of four phases :
● Planning
● Risk analysis
● Development /
Engineering
● Evaluation
planning
Risk
Analysis
Evolution Development
INCREMENTAL 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
When to use Incremental models?
Funding Schedule, Risk, Program Complexity, or need for early
realization of benefits.
When Requirements are known up-front.
When Projects having lengthy developments schedules.
Projects with new Technology
Advantages –
Error Reduction (core modules are used by the customer from the
beginning of the phase and then these are tested thoroughly)
Uses divide and conquer for breakdown of tasks.
Lowers initial delivery cost.
Incremental Resource Deployment.
Disadvantages
Requires good planning and design.
Total cost is not lower.
Well defined module interfaces are required
Concurrent Development Model
Concurrent models are those models within which the various activities of
software development
Happen at the same time,
For faster development
For a better outcome.
This type of a model, in which multiple phases are performed
concurrently, can be coined as a concurrent model.
How It Works
Advantages
This model is applicable to all types of software
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.
Disadvantage
It needs better communication between the team members.
It requires to remember the status of the different activities.
Feasibility study
Feasibility study is carried out based on many purposes to analyze
whether software product will be right in terms of development,
implantation, contribution of project to the organization
The requirements analysis and specification phase starts once the
feasibility study phase is complete and the project is found to be
technically sound and feasible.
Requirement analysis
The goal of the requirements analysis and specification phase is to
clearly understand customer requirements and to systematically
organize these requirements in a specification document.
This phase consists of the following two activities:
◦ • Requirements Gathering And Analysis
◦ • Requirements Specification
Basic questions
What is the problem?
Why is it important to solve the problem?
What are the possible solutions to the problem?
What exactly are the data input to the system and what exactly are the data
output by the system?
What are the likely complexities that might arise while solving the problem?
If there are external software or hardware with which the developed software
has to interface, then what exactly would the data interchange formats with the
external system be?
Need for SRS
When the analyst detects any inconsistencies, anomalies or incompleteness
in the gathered requirements, he resolves them by carrying out further
discussions with the end users and the customers.
After the analyst has collected all the requirements information regarding
the software to be developed, and has removed all the incompleteness, in
consistencies, and anomalies from the specification, he starts to
systematically organize the requirements in the form of an SRS document.
Software requirements specification
The important parts of SRS document are:
◦ • Functional requirements of the system - The functional requirements part discusses
the functionalities required from the system.
◦ • Non-functional requirements of the system - Non-functional requirements deal with
the characteristics of the system which can not be expressed as functions
◦ • Goals of implementation - The goals of implementation part documents some general
suggestions regarding development.
Characteristics of SRS
Concise. - SRS document should be concise and at the same time unambiguous,
Structured. - It should be well-structured.
Black-box view. - It should only specify what the system should do and refrain from stating
how to do these.
Conceptual integrity. - It should show conceptual integrity so that the reader can easily
understand it.
Response to undesired events. - It should characterize acceptable responses to undesired
events.
Verifiable. - All requirements of the system as documented in the SRS document should be
verifiable.
Techniques for representing Complex Logic
Decision Tree
Decision Table
Decision table -A decision table is used to represent
the complex processing logic in a tabular or a matrix form.
Decision tree
A decision tree gives a graphic view of the processing logic involved in decision
making and the corresponding actions taken. The edges of a decision tree
represent conditions and the leaf nodes represent the actions to be performed
depending on the outcome of testing the condition.
Components of SRS
Functional requirements
Performance requirements
Design constraints
External interface requirements
1. Functional Requirements
Functional requirements specify basically describe the connectivity between the input and
output of the system.
1. A detailed description of all the data inputs and their sources, the units of measure, and
the range of valid inputs be specified:
2. All the operations to be performed on the input data obtain the output should be
specified, and
3. Care must be taken not to specify any algorithms that are not parts of the system but that
may be needed to implement the system.
4. It must clearly state what the system should do if system behaves abnormally when any
invalid input is given or due to some error during computation.
2. Performance Requirements
(Speed Requirements)
This part of an SRS specifies the performance constraints on the
software system.
All the requirements related to the performance characteristics of the
system must be clearly specified.
Performance requirements are typically expressed as processed
transaction s per second or response time from the system for a user
event or screen refresh time or a combination of these.
It is a good idea to pin down performance requirements for the most
used or critical transactions, user events and screens.
3. Design Constraints
The various design constraints are standard compliance, resource limits, operating environment,
reliability and security requirements and policies that may have an impact on the design of the
system.
Standard Compliance: It specifies the requirements for the standard the system must follow. The
standards may include the report format and according procedures.
Hardware Limitations: The software needs some existing or predetermined hardware to operate,
thus imposing restrictions on the design. Hardware limitations can includes the types of machines
to be used operating system availability memory space etc.
Fault Tolerance: Major constraint on how the system is to be designed. Fault tolerance
requirements often make the system more complex and expensive, so they should be minimized.
Security: Security requirements place restrictions on the use of certain commands control access
to database, provide different kinds of access, and cryptography techniques, and maintain a log of
activities in the system.
4. External Interface Requirements
For each external interface requirements:
1. All the possible interactions of the software with people hardware and
other software should be clearly specified,
2. The characteristics of each user interface of the software product
should be specified and
3. The SRS should specify the logical characteristics of each interface
between the software product and the hardware components for hardware
interfacing.
Management needs:
Feasibility Study
Objectives of Feasibility Study
To analyze whether the software will meet organizational requirements.
To determine whether the software can be implemented using the current
technology and within the specified budget and schedule.
To determine whether the software can be integrated with other existing
software.
Technical feasibility assesses the current resources (such as H/w and
S/w) and technology, which are required to accomplish user requirements
in the software within the allocated time and budget.
Analyzes the technical skills and capabilities of the software
development team members.
Determines whether the relevant technology is stable and established.
Ascertains that the technology chosen for software development has a
large number of users so that they can be consulted when problems arise
or improvements are required.
Operational feasibility assesses the extent to which the required software
performs a series of steps to solve business problems and user
requirements.
Determines whether the problems anticipated in user requirements are of
high priority.
Determines whether the solution suggested by the software development
team is acceptable.
Analyzes whether users will adapt to a new software.
Determines whether the organization is satisfied by the alternative solutions
proposed by the software development team.
Economic feasibility determines whether the required software is
capable of generating financial gains for an organization. It involves the
cost incurred on the software development team, estimated cost of
hardware and software, cost of performing feasibility study, and so on.
Cost incurred on software development to produce long-term gains for
an organization.
Cost required to conduct full software investigation.
Cost of hardware, software, development team, and training.
Information Modelling
Information model in software engineering is a representation of concepts and
the relationships, constraints, rules, and operations to specify data semantics for a
chosen domain of discourse. Typically it specifies relations between kinds of
things, but may also include relations with individual things.
This can be simple like a diagram, physical model, or picture, or complex like a
set of calculus equations, or computer program.
Types
Visual Models – Picture or video …….
Mathematical - Complex like a set of calculus equations……
Computer Models - Computer program….
IEEE Standards for SRS
IEEE defines software requirements specification as, ‘a document that clearly
and precisely describes each of the essential requirements (functions,
performance, design constraints and quality attributes) of the software and the
external interfaces.
Each requirement is defined in such a way that its achievement can be
objectively verified by a prescribed method, for example, inspection,
demonstration, analysis or test.’ Note that requirements specification can be in
the form of a written document, a mathematical model, a collection of
graphical models, a prototype, and so on.
SRS – IEEE 830
1, Introduction 2. General Description 3. Specific Requirements
1. Purpose 1. Product Perspective 1. Functional Requirements
2. Scope 2. Product Functions 2. External Interface Requirements
3. Definitions 3. User Characteristics 3. Performance Requirements
4. References 4. General Constraints 4. Design Constraints
5. Overview 5. Assumptions and Dependencies 5. Attributes
6. Other Requirements
SRS Templates
A software requirements specification (SRS document) describes
how a software system should be developed. ...
It offers high-grade definitions for the functional and non-
functional specifications of the software.
Itcan also include use cases that illustrate how a user would interact
with the system upon completion.
Validation of SRS.
attempt to ensure that: The SRS correctly describes the intended
system capabilities and characteristics that will satisfy the various
stakeholders' needs.
The software requirements were correctly derived from the
system requirements, business rules, or other sources.
Validation of SRS
Validity checks: The functions proposed by stakeholders should be aligned with
what the system needs to perform. You may find later that there are additional or
different functions are required instead.
Consistency checks: Requirements in the document shouldn’t conflict or different
description of the same function
Completeness checks: The document should include all the requirements and
constrains.
Realism checks: Ensure the requirements can actually be implemented using the
knowledge of existing technology, the budget, schedule, etc.
Verifiability: Requirements should be written so that they can be tested. This means
y o u
a n k
T h