Professional Documents
Culture Documents
Software Engg
Software Engg
Software Engg
software”.
Based on these two point of views, we can define software engineering as follows:
Software engineering discusses systematic and cost-effective techniques for software
development. These techniques help develop software using an engineering approach.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 2
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Software Product: Very big inside. The lines of codes are in thousands To lakhs may be more, depends
on Software Product.
Developer:-
Programs: Single developer or maybe 2 developer make a program.
Software Product: A proper and well trained team of developer indulge in development.
Development:-
Programs:- Unplanned, not Systematic i.e, ad hoc development.
Software Product: A well Systematic, organized, planned approach is used in development.
Functionality:-
Programs: That provide Limited functionality and less features.
Software Products: It provides more functionality as they are big in size (lines of codes) more options
and features are provided.
PROGRAM PRODUCT
SOFTWARE RISKS
Risk is uncertain activities associated with future events which have a probability of
occurrence, but it may or may not occur and if occurs it brings loss to the project.
Risk identification and management are very important task during software project
development because success and failure of any software project depends on it.
SOFTWARE RISKS
Tracking of resources like system, skill, staff etc Frequent project scope expansion
SOFTWARE RISKS
expansion
SOFTWARE RISKS
SOFTWARE RISKS
SOFTWARE RISKS
DEFINING SOFTWARE
Software is:
Instructions (computer programs) that when executed provide desired features, function, and
performance;
Data structures that enable the programs to adequately manipulate information, and descriptive
information in both hard copy and virtual forms that describes the operation and use of the programs.
Software, instructions that tell a computer what to do. Software comprises the entire set of programs,
procedures, and routines associated with the operation of a computer system.
The term was coined to differentiate these instructions from hardware i.e., the physical components of
a computer system.
A set of instructions that directs a computer’s hardware to perform a task is called a program, or
software program.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 13
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
A collection of programs written to service other programs. Some system software (e.g., compilers,
editors, and file management utilities) processes complex but essential information structures.
Other systems applications (e.g., operating system components, drivers, networking software,
telecommunications processors) process largely indeterminate data
Application software: stand-alone programs that solve a specific business need. Applications in this
area process business or technical data in a way that facilitates business operations or
management/technical decision making.
Engineering/scientific software: a broad array of “number-crunching programs that range from
astronomy to volcanology, from automotive stress analysis to orbital dynamics, and from computer-aided
design to molecular biology, from genetic analysis to meteorology.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 14
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Embedded software: Resides within a product or system and is used to implement and control
features and functions for the end user and for the system itself. Embedded software can perform limited
and cryptic functions (e.g., key pad control for a microwave oven) or provide significant function and
control capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and
braking systems).
Product-line software: designed to provide a specific capability for use by many different customers.
Product-line software can focus on a limited and esoteric marketplace (e.g., inventory control products)
or address mass consumer.
Web/Mobile applications: this network-centric software category spans a wide array of applications
and encompasses both browser-based apps and software that resides on mobile devices.
Artificial intelligence software: makes use of non numerical algorithms to solve complex problems
that are not amenable to computation or straightforward analysis. Applications within this area include
robotics, expert systems, pattern recognition (image and voice), artificial neural networks, theorem
proving, and game playing.
Abstraction
Decomposition:
Decomposition is another important principle that is available in the catalog of a software engineer to
handle problem complexity.
This principle is generously made use by several software engineering techniques to contain the
exponential growth of the perceived problem complexity.
The decomposition principle is popularly known as the divide and conquer principle.
The decomposition principle advocates decomposing the problem into many small independent parts.
The small parts are then taken up one by one and solved separately. The idea is that each small part
would be easy to grasp and understand and can be easily solved. The full problem is solved when all the
parts are solved.
The following two are possibly the most important skill you could be acquiring after
completing a study of software engineering:
The skill to participate in development of large software. You can meaningfully participate in a team
effort to develop a large software only after learning the systematic techniques that are being used in
the industry.
You would learn how to effectively handle complexity in a software development problem. In
particular, you would learn how to apply the principles of abstraction and decomposition to handle
complexity during various stages in software development such as specification, design,
construction, and testing.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 19
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
A software development life cycle (SDLC) model (also called software life cycle
model and software development process model ) describes the different activities that
need to be carried out for the software to evolve in its life cycle.
An SDLC graphically depicts the different phases through which a software evolves.
It is usually accompanied by a textual description of the different activities that need to
be carried out during each phase.
Though the terms process and methodology are at time used interchangeably, there is a
subtle difference between the two.
First, the term process has a broader scope and addresses either all the activities taking place during
software development, or certain coarse grained activities such as design (e.g. design process), testing
(test process),etc.
Further, a software process not only identifies the specific activities that need to be carried out, but may
also prescribe certain methodology for carrying out each activity.
A methodology, on the other hand, prescribes a set of steps for carrying out a specific life cycle activity.
It may also include the rationale and philosophical assumptions behind the set of steps through which
the activity is accomplished.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 21
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Installation / Conversion:
After testing, system is installed and/or
replaces an existing system;
Requires software / data conversion
Important to not interrupt daily activities
during conversion process.
Install incrementally, run in parallel; turn
switch and live with it, etc.
PROCESS MODELS
PROTOTYPING MODEL
EVOLUTIONARY MODEL
SPIRAL MODEL
RAD MODEL
AGILE 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 not overlap.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 30
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
The disadvantage of waterfall development is that it does not allow much reflection or
revision. Once an application is in the testing stage, it is very difficult to go back and
change something that was not well-documented or thought upon in the concept stage.
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.
In the Iterative model, iterative process starts with a simple implementation of a
small set of the software requirements and iteratively enhances the evolving
versions until the complete system is implemented and ready to be deployed.
An iterative life cycle model does not attempt to start with a full specification of
requirements. Instead, development begins by specifying and implementing just
part of the software, which is then reviewed to identify further requirements. This
process is then repeated, producing a new version of the software at the end of each
iteration of the model.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 41
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
At each iteration, design modifications are made and new functional capabilities are
added. The basic idea behind this method is to develop a system through repeated
cycles (iterative) and in smaller portions at a time (incremental)
Iterative and Incremental development is a combination of both iterative design or iterative method
and incremental build model for development.
"During software development, more than one iteration of the software development cycle may be in
progress at the same time." This process may be described as an "evolutionary acquisition" or
"incremental build" approach.
In this incremental model, the whole requirement is divided into various builds. During each iteration,
the development module goes through the requirements, design, implementation and testing phases.
Each subsequent release of the module adds function to the previous release. The process continues till
the complete system is ready as per the requirement.
Like other SDLC models, Iterative and incremental development has some specific
applications in the software industry. This model is most often used in the following
scenarios
Requirements of the complete system are clearly defined and understood.
Major requirements must be defined; however, some functionalities or requested
enhancements may evolve with time.
The advantage of this model is that there is a working model of the system at a very
early stage of development, which makes it easier to find functional or design flaws.
Finding issues at an early stage of development enables to take corrective measures in a
limited budget.
The disadvantage with this SDLC model is that it is applicable only to large and
bulky software development projects. This is because it is hard to break a small
software system into further small serviceable increments/modules.
Issues, challenges and risks identified from each increment can be utilized/applied to
the next increment.
Risk analysis is better.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
During the life cycle, software is produced early which facilitates customer
evaluation and feedback.
The disadvantages of the Iterative and Incremental SDLC Model are as follows :
More resources may be required.
Although cost of change is lesser, but it is not very suitable for changing
requirements.
More management attention is required.
System architecture or design issues may arise because not all requirements are
gathered in the beginning of the entire life cycle.
Defining increments may require definition of the complete system
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 50
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
PROTOTYPING MODEL
Prototyping is defined as the process of developing a working replication of a product or system that
has to be engineered.
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. A prototype usually turns out to be a very crude
version of the actual system, possible exhibiting limited functional capabilities, low reliability, and
inefficient performance as compared to actual software.
In many instances, the client only has a general view of what is expected from the software product. In
such a scenario where there is an absence of detailed information regarding the input to the system, the
processing needs, and the output requirement, the prototyping model may be employed.
PROTOTYPE MODEL
Easy to fall back into the code and fix without proper requirement analysis, design,
customer evaluation, and feedback.
Prototyping tools are expensive.
Special tools & techniques are required to build a prototype.
It is a time-consuming process.
Evolutionary process model resembles the iterative enhancement model. The same
phases are defined for the waterfall model occurs here in a cyclical fashion.
This model differs from the iterative enhancement model in the sense that this does
not require a useful product at the end of each cycle. In evolutionary development,
requirements are implemented by category rather than by priority.
For example, in a simple database application, one cycle might implement the
graphical user Interface (GUI), another file manipulation, another queries and another
updates. All four cycles must complete before there is a working product available.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 58
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
experimentation.
EVO allows the marketing department access to early deliveries, facilitating the
o find modules for incremental implementation. Often evolutionary model is used when
the customer prefers to receive the product in increments so that he can start using the
different features as and when they are delivered rather than waiting all the time for the
Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process
model that couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model.
It implements the potential for rapid development of new versions of the software.
Using the spiral model, the software is developed in a series of incremental releases.
During the early iterations, the additional release may be a paper model or prototype.
During later iterations, more and more complete versions of the engineered system are
produced.
Spiral Model
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is located on the risk
perception for the project.
Development and validation: The next phase is to develop strategies that resolve uncertainties and
risks. This process may include activities such as benchmarking, simulation, and prototyping.
Spiral Model
Planning: Finally, the next step is planned. The project is reviewed, and a choice made
whether to continue with a further period of the spiral. If it is determined to keep, plans
are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance
or user-interface risks are treated more essential than the program development risks, the
next phase may be an evolutionary development that includes developing a more detailed
prototype for solving the risks.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 70
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Spiral Model
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is completed
by a review that includes all the products developed during that cycle, including plans for
the next cycle. The spiral model works for development as well as enhancement projects.
Advantages:
High amount of risk analysis
Useful for large and mission-critical projects.
Disadvantages:
Can be a costly model to use.
Risk analysis needed highly particular expertise
Doesn't work well for smaller projects.
When the system should need to create the project that modularizes in a short span
period.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 79
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Agile Model
Agile SDLC model is a combination of iterative and incremental process models with
software product.
Agile Methods break the product into small incremental builds. These builds are
provided in iterations.
Agile Model
Each iteration typically lasts from about one to three weeks. Every iteration involves
cross functional teams working simultaneously on various areas like:
Planning
Requirements Analysis
Design
Coding
Unit Testing and
Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and important stakeholders.
What is Agile?
Agile model believes that every project needs to be handled differently and the existing
methods need to be tailored to best suit the project requirements.
In Agile, the tasks are divided to time boxes (small time frames) to deliver specific
features for a release.
Iterative approach is taken and working software build is delivered after each iteration.
Each build is incremental in terms of features; the final build holds all the features
required by the customer.
Agile Model
Agile Model
The most popular Agile methods include Rational Unified Process (1994), Scrum
(1995).
These are now collectively referred to as Agile Methodologies, after the Agile Manifesto
Agile Model
Individuals and interactions: In Agile development, self-organization and motivation are important,
as are interactions like co-location and pair programming.
Working software: Demo working software is considered the best means of communication with the
customers to understand their requirements, instead of just depending on documentation.
Customer collaboration: As the requirements cannot be gathered completely in the beginning of the
project due to various factors, continuous customer interaction is very important to get proper product
requirements.
Responding to change: Agile Development is focused on quick responses to change and continuous
development
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 87
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Disadvantages Cons
Not suitable for handling complex dependencies.
More risk of sustainability, maintainability and extensibility.
An overall plan, an agile leader and agile PM practice is a must without which it will not
work.
Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.
Depends heavily on customer interaction, so if customer is not clear, team can be driven
in the wrong direction.
There is a very high individual dependency, since there is minimum documentation
generated.
Transfer of technology to new team members may be quite challenging due to lack of
documentation.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 89
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Logically breakdown the solutions into features that Focus on developing all the features of an
are incrementally developed and delivered application by first doing it badly and then
improving it over time
Demonstrate completed work to the customer Demonstrate to customers screen mock ups and
prototypes which may be based on table look ups
rather than actual parmeters.
PROJECT Planning
Project planning is undertaken and completed before any development activity starts.
Estimation: The following project attributes are estimated
Project size: What will be problem complexity in terms of the effort and time required to
develop the product?
Cost: How much is it going to cost to develop the project?
Duration: How long is it going to take to complete development?
Effort: How much effort would be required?
The effectiveness of the subsequent planning activities is based on the accuracy of these
estimations.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 91
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
PROJECT Planning
SPMP
1. Introduction
(a) Objectives
(b) Major Functions
(c) Performance Issues
(d) Management and Technical Constraints
2. Project Estimates
(a) Historical Data Used
(b) Estimation Techniques Used
(c) Effort, Resource, Cost, and Project Duration Estimates
3. Schedule
(a) Work Breakdown Structure
(b) Task Network Representation
(c) Gantt Chart Representation
(d) PERT Chart Representation
SPMP
4. Project Resources
(a) People
(b) Hardware and Software
(c) Special Resources
5. Staff Organization
(a) Team Structure
(b) Management Reporting
6. Risk Management Plan
(a) Risk Analysis
(b) Risk Identification
(c) Risk Estimation
(d) Risk Abatement Procedures
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 94
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
SPMP
7. Project Tracking and Control Plan
a) Metrics to be tracked
b) Tracking Plan
c) Control Plan
8. Miscellaneous Plans
(a) Process Tailoring
(b) Quality Assurance Plan
(c) Configuration Management Plan
Version 2 CSE IIT, Kharagpur
(d) Validation and Verification
(e) System Testing Plan
(f) Delivery, Installation, and Maintenance Plan
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 95
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
What is Estimation ?
Estimation is attempt to determine how much money, effort, resources & time it will take to build a specific software
based system or project.
Estimation involves answering the following questions:
1. How much effort is required to complete each activity?
2. How much calendar time is needed to complete each activity?
3. What is the total cost of each activity?
Project cost estimation and project scheduling are normally carried out together.
The costs of development are primarily the costs of the effort involved, so the effort computation is used in both the cost
and the schedule estimate.
Do some cost estimation before detailed schedules are drawn up. These initial estimates may be used to establish a budget
for the project or to set a price for the software for a customer.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 100
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
There are three parameters involved in computing the total cost of a software
development project:
Hardware and software costs including maintenance
Travel and training costs
Effort costs (the costs of paying software engineers).
The following costs are all part of the total effort cost:
Costs of providing heating and lighting office space
Costs of support staff such as accountants, administrators, system managers,
cleaners and technicians.
Costs of networking and communications.
Costs of central facilities such as a library or recreational facilities
Costs of Social Security and employee benefits such as pensions and health
insurance etc.
Effort
Size
Table
Lines of Development
Code Estimation Time
Number of Use Process Number of
Case Personnel
Function Errors
Point
Software Cost
Estimation
Distribution of Effort
A development process typically
consists of the following stages:
• Requirements Analysis
• Design (High Level
+Detailed)
• Implementation & Coding
• Testing (Unit + Integration)
Software Cost
Estimation
Three main approaches to estimation:
Empirical
Heuristic
Analytical
Ex: Expert judgment is one of the most widely used estimation techniques.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 105
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Software Cost
Estimation
Heuristic techniques:
Heuristic estimation models can be divided into the following two classes:
single variable model
multi variable model.
o Single variable estimation models provide a means to estimate the desired characteristics
of a problem, using some previously estimated basic (independent) characteristic of the
software product such as its size.
Estimated Parameter = c1 * ed1
In the above expression, e is the characteristic of the software which has already been
estimated (independent variable). Estimated Parameter is the dependent parameter to be
estimated. The dependent parameter to be estimated could be effort, project duration, staff
size, etc. c1 and d1 are constants. The values of the constants c1 and d1 are usually
determined using data collected from past projects (historical data).
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 106
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Software Cost
Estimation
A multivariable cost estimation model takes the following form:
Where e1, e2, … are the basic (independent) characteristics of the software already
estimated, and c1, c2, d1, d2, … are constants. Multivariable estimation models are
expected to give more accurate estimates compared to the single variable models
• The objective of FPA is to measure functionality that the user requests and
receives.
• The objective of FPA is to measure software development and maintenance
independently of technology used for implementation.
• It should be simple enough to minimize the overhead of the measurement
process.
• It should be a consistent measure among various projects and organizations.
COCOMO Model
Software development:
software development project can be classified into one of the following three categories
based on the development complexity:
Organic
Semidetached
Embedded.
Organic: A development project can be considered of organic type, if the project deals with
developing a well understood application program, the size of the development team is
reasonably small, and the team members are experienced in developing similar types of
projects.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 111
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
COCOMO Model
COCOMO Model
COCOMO (Constructive Cost Estimation Model) was proposed by Boehm [1981].
According to Boehm, software cost estimation should be done through three stages: Basic
COCOMO, Intermediate COCOMO, and Complete COCOMO.
Basic COCOMO Model
The basic COCOMO model gives an approximate estimate of the project parameters. The
basic COCOMO estimation model is given by the following expressions:
Effort = a1 х (KLOC)a2 PM
Tdev = b1 x (Effort)b2 Months
COCOMO Model
Where
• KLOC is the estimated size of the software product expressed in Kilo
Lines of Code,
• a1, a2, b1, b2 are constants for each category of software products,
• Tdev is the estimated time to develop the software, expressed in months,
• Effort is the total effort required to develop the software product,
expressed in person months (PMs).
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 114
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
COCOMO Model
• It should be carefully noted that an effort of 100 PM does not imply that 100 persons
should work for 1 month nor does it imply that 1 person should be employed for 100
months, but it denotes the area under the person-month curve
According to Boehm, every line of source text should be calculated as one LOC irrespective of the actual
number of instructions on that line. Thus, if a single instruction spans several lines (say n lines), it is
considered to be nLOC.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 115
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
COCOMO Model
Estimation of development effort
For the three classes of software products, the formulas for estimating the effort based on
the code size are shown below:
Organic : Effort = 2.4(KLOC)1.05 PM
Semi-detached : Effort = 3.0(KLOC)1.12 PM
Embedded : Effort = 3.6(KLOC)1.20 PM
Estimation of development time
For the three classes of software products, the formulas for estimating the development time
based on the effort are given below:
Organic : Tdev = 2.5(Effort)0.38 Months
Semi-detached : Tdev = 2.5(Effort)0.35 Months
Embedded : Tdev = 2.5(Effort)0.32 Months
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 116
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
COCOMO Model
From the effort estimation, the project cost can be obtained by multiplying the required
effort by the manpower cost per month. But, implicit in this project cost computation is
the assumption that the entire project cost is incurred on account of the manpower cost
alone.
In addition to manpower cost, a project would incur costs due to hardware and software
required for the project and the company overheads for administration, office space, etc.
It is important to note that the effort and the duration estimations obtained using the
COCOMO model are called as nominal effort estimate and nominal duration estimate.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 117
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
COCOMO Model
Assume that the size of an organic type software product has been estimated to be 32,000
lines of source code. Assume that the average salary of software engineers be Rs. 15,000/-
per month. Determine the effort required to develop the software product and the nominal
development time.
From the basic COCOMO estimation formula for organic software:
Effort = 2.4 х (32)1.05 = 91 PM
Nominal development time = 2.5 х (91)0.38 = 14 months
Cost required to develop the product = 14 х 15,000 x 91 = 19134050
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 118
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Requirements Engineering
The process of establishing the services that the customer requires from a system and
the constraints under which it operates and is developed.
The requirements themselves are the descriptions of the system services and constraints
that are generated during the requirements engineering process.
What is a Requirement?
The software requirements are
description of features and
functionalities of the target system.
Requirements convey the
expectations of users from the software
product.
The requirements can be obvious or
hidden, known or unknown, expected
or unexpected from client’s point of
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 124
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Functional Requirements
In software engineering, a functional requirement defines a system or its component.
It describes the functions a software must perform. A function is nothing but inputs, its behavior, and
outputs. It can be a calculation, data manipulation, business process, user interaction, or any other specific
functionality which defines what function a system is likely to perform.
Functional software requirements help you to capture the intended behavior of the system.
This behavior may be expressed as functions, services or tasks or which system is required to perform
Non-functional requirements
Emails should be sent with a latency of no greater than 12 hours from such an activity.
The processing of each request should be done within 10 seconds
The site should load in 3 seconds when the number of simultaneous users are > 10000
Performance – for example Response Time, Throughput, Utilization, Static Volumetric
Scalability
Capacity
Availability
Reliability
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 129
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
They define a system or its component. They define the quality attribute of a system
Helps you to verify the functionality of the Helps you to verify the performance of the
software. software.
Functional Testing like System, Integration, End Non-Functional Testing like Performance, Stress,
to End, API testing, etc are done. Usability, Security testing, etc are done.
User requirements
User requirements are defined using natural language, tables and diagrams.
Often referred to as user needs, describe what the user does with the system, such as
System requirements
System requirements are the required specifications a device must have in order to use
certain hardware or software
More detailed specifications of user requirements Serve as a basis for designing the
system
Before purchasing a software program or hardware device, you can check the system
requirements to make sure the product is compatible with your system.
Typical system requirements for a software program include:
System requirements
Operating system
Minimum CPU or processor speed
Minimum GPU or video memory
Minimum system memory (RAM)
Minimum free storage space
Audio hardware (sound card, speakers, etc)
System requirements listed for a hardware device may include:
Operating system
Available ports (USB, Ethernet, etc)
Wireless connectivity
Minimum GPU (for displays and graphics hardware)
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 135
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
SRS establishes basis of agreement between the user and the supplier.
Users needs have to be satisfied, but user may not understand software
Developers will develop the system, but may not know about problem domain
SRS is
The medium to bridge the communications gap, and
Specifies user needs in a manner both can understand
Characteristics of an SRS
Correct
Complete
Unambiguous
Consistent
Verifiable
Traceable
Modifiable
Ranked for importance and/or stability
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 140
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Characteristics of an SRS
Correctness
Each requirement accurately represents some desired feature in the final system
Completeness
All desired features/characteristics specified
Hardest to satisfy
Completeness and correctness strongly related
Unambiguous
Each requirement has exactly one meaning
Without this errors will creep in
Important as natural languages often used
Characteristics of an SRS
Verifiability
There must exist a cost effective way of checking if sw satisfies requirements
Consistent
two requirements don’t contradict each other
Traceable
The origin of the req, and how the req relates to software elements can be determined
Components of an SRS
What should an SRS contain ?
Clarifying this will help ensure completeness
Functional Requirements
Heart of the SRS document; this forms the bulk of the specs
Outputs for the given inputs and the relationship between them
Performance Requirements
Design Constraints
External Interface
Specification Language
Natural languages mostly used, with some structure for the document
Structure of an SRS
Introduction
Purpose , the basic objective of the system
Scope of what the system is to do , not to do
Overview
Overall description
Product perspective
Product functions
User characteristics
Assumptions
Constraints
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 149
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Structure of an SRS
Specific requirements
External interfaces
Functional requirements
Performance requirements
Design constraints
Acceptable criteria
desirable to specify this up front.
Feasibility studies
1)Technical Feasibility –
In Technical Feasibility current resources both hardware software along with
required technology are analyzed/assessed to develop project.
This technical feasibility study gives report whether there exists correct required
resources and technologies which will be used for project development.
Along with this, feasibility study also analyzes technical skills and capabilities of
technical team, existing technology can be used or not, maintenance and up-gradation
is easy or not for chosen technology etc.
3) Economic Feasibility –
In Economic Feasibility study cost and benefit of the project is analyzed.
under this feasibility study a detail analysis is carried out what will be cost of the project for
development which includes all required cost for final development like hardware and software resource
required, design and development cost and operational cost and so on.
After that it is analyzed whether project will be beneficial in terms of finance for organization or not.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 156
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Requirement elicitation
Requirement elicitation
Requirements gathering: The developers discuss with the client and end users and know their
expectations from the software.
Organizing Requirements: The developers prioritize and arrange the requirements in order of
importance, urgency and convenience.
Negotiation & discussion: If requirements are ambiguous or there are some conflicts in requirements of
various stakeholders, if they are, it is then negotiated and discussed with stakeholders. Requirements may
then be prioritized and reasonably compromised.
The requirements come from various stakeholders. To remove the ambiguity and conflicts, they are
discussed for clarity and correctness. Unrealistic requirements are compromised reasonably.
Documentation: All formal & informal, functional and non-functional requirements are documented and
made available for next phase processing.
8)Observation
Team of experts visit the client’s organization or workplace. They observe the actual
working of the existing installed systems. They observe the workflow at client’s end and
how execution problems are dealt.
The team itself draws some conclusions which aid to form requirements expected from
the software
Requirements Analysis
Requirements Analysis, determining whether the stated requirements are clear, complete, consistent and
unambiguous.
After requirements gathering is complete, the analyst analyses the gathered requirements to form a clear
understanding of the exact customer requirements and to clear out any problems in the gathered
requirements.
The data collected from various stakeholders to contain several contradictions, ambiguities, and
incompleteness, since each stakeholder typically has only a partial and incomplete view of the software.
Therefore, it is necessary to identify all the problems in the requirements and resolve them through further
discussions with the customer.
Requirements Analysis
A stakeholder is either an individual, group or organization who is impacted by the outcome of a project.
They have an interest in the success of the project, and can be within or outside the organization that is
sponsoring the project.
Stakeholder Identification
Stakeholders are people or organizations that have a valid interest in the system. They may be affected
by it directly or indirectly.
Stake holders may include:
Anyone who operates the system
Anyone who benefits from the system
Anyone involved in purchasing or procuring the system
People opposed to the system (negative stakeholders)
Organizations responsible for the system
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 165
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Requirements Analysis
The following basic questions pertaining to the project should be clearly understood by the
analyst before carrying out analysis:
1. What is the problem?
2. Why is it important to solve the problem?
3. What exactly are the data input to the system and what exactly are the data output by the system?
4. What are the possible procedures that need to be followed to solve the problem? What are the likely
complexities that might arise while solving the problem?
5. If there are external software or hardware with which the developed software has to interface, then what
should be the data interchange formats with the external systems?
Requirements Analysis
After the analyst has understood the exact customer requirements, he proceeds to identify and resolve
the various problems that he detects in the gathered requirements.
During requirements analysis, the analyst needs to identify and resolve the following types of problems
in the requirements:
Atomic
Uniquely identified
Complete
Consistent and unambiguous
Traceable
Prioritized
Testable
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 167
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Atomic Students will be able to enroll to undergraduate Students will be able to enroll to
and post graduate courses undergraduate courses
Students will be able to enroll to post-
graduate courses
Complete A professor user will log into the system by A professor user will log into the system
providing his username, password, and other by providing his username, password and
relevant information department code
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 168
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Consistent and unambiguous A student will have either undergraduate courses A student will have either under-graduate
or post-graduate courses but not both. Some or post graduates but not both
courses will be open to both under-graduate and
post-graduate
Testable Each page of the system will load in an Register student and enroll courses pages
Decision Tree
A decision tree gives a graphic view of the processing logic involved in decision making and the
corresponding action taken. Decision tables specify which variables are to be tested and based on this
what actions are to be taken depending upon the outcome of the decision making logic and the order in
which decision making is performed.
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.
Decision Table
A decision table shows the decision making logic and the corresponding action taken in
a tabular or a matrix form. The upper rows of the table specify the variables or
conditions to be evaluated and the lower rows specify the actions to be taken when an
evaluation test is satisfied. A column in the table is called a rule. A rule implies that if a
certain condition combination is true, then the corresponding action is executed.
Requirements Specifications
Requirements Specification is the direct result of a requirement analysis and can refer to:
Software Requirements Specification
Hardware Requirements Specification
Requirements Validation
Validation (& Verification), is the process of checking whether the requirements, as identified, do not
contradict the expectations about the system of various stakeholders and do not contradict each other.
It is Requirements Quality Control.
It’s a process of ensuring the specified requirements meet the customer needs. It’s concerned with
finding problems with the requirements.
These problems can lead to extensive rework costs when these they are discovered in the later stages,
or after the system is in service.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 174
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Requirements Validation
During the requirements validation process, different types of checks should be carried out on the
requirements. These checks include:
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 you should be able
to write a set of tests that demonstrate that the system meets the specified requirements.
12/20/2023 DEPARTMENT OF CSE, GIET UNIVERSITY, GUNUPUR 175
Lecture – 1 Prepared by Prof. Ranjeet Kumar Panigrahi Introduction
to Softwre Engineering
Requirements Validation
There are some techniques you can use to validate the requirements.
1.Requirements Reviews
A team of system customer, those who interact with the customer to gather requirements, and system
developers start reading the requirements in the document.
Investigation is done to check for errors, inconsistency, conflicts, and any ambiguity. Then they may
negotiate with the customer on how to solve the problems and errors found.
2.Prototyping
In this approach to validation, an executable model of the system is demonstrated to the customer and
end users to validate, and ensure if it meets their needs.
Prototyping is usually used when the requirements aren’t clear. So, we make a quick design of the
system to validate the requirements. If it fails, we then refine it, and check again, until it meets the
customer needs.
This definitely will decrease the cost as a result of having a clear, understandable, consistent
requirements.
Requirements Validation
3.Test-case Generation
The requirements need to be testable. If the tests for the requirements are added as part of the validation
process, this often reveals requirements problems.
If the test is difficult or impossible to design, this usually means that the requirements will be difficult
to implement and should be reconsidered.
The term “tests” here doesn’t mean to write and run some code for every function. It means to write a
textual description of the “inputs”, “expected value”, and “steps taken” to perform each function.
Studies have shown that requirements management improves all major aspects of organizational strategy
(portfolio, programs, and projects) or operations management (day-to-day business) by:
Reducing cost
Improving quality
Decreasing time taken
Decreasing risks
Enabling effective scope management
Structured Analysis is a development method that allows the analyst to understand the system and its
activities in a logical way.
It is a systematic approach, which uses graphical tools that analyze and refine the objectives of an
existing system and develop a new system specification which can be easily understandable by user.
It has following attributes −
It is graphic which specifies the presentation of application.
It divides the processes so that it gives a clear picture of system flow.
It is logical rather than physical i.e., the elements of system do not depend on vendor or hardware.
It is an approach that works from high-level overviews to lower-level details
During Structured Analysis, various tools and techniques are used for system development. They are −
Data Flow Diagrams
Data Dictionary
Decision Trees
Decision Tables
Structured English
Pseudo code