Professional Documents
Culture Documents
Operating
Procedures
Installation Guide
Operational
Manuals
S
y
s
t
e
m
A
d
Software Product
• Software products
may be
developed for a
particular customer or may be
developed for a general market
What is software engineering?
Software engineering is an engineering discipline which
is concerned with all aspects of software production
Software engineers should
– adopt a systematic and organised approach to their
work
– use appropriate tools and techniques depending on
• the problem to be solved,
• the development constraints and
– use the resources available
What is software engineering?
At the first conference on software engineering in 1968, Fritz
Bauer defined software engineering as “The establishment and
use of sound engineering principles in order to obtain
economically developed software that is reliable and works
efficiently on real machines”.
Both the definitions are popular and acceptable to majority. However, due to increase in
cost of maintaining software, objective is now shifting to produce quality software that is
maintainable, delivered on time, within budget, and also satisfies its requirements.
Introduction to Software Engineering
CONT…
• Software engineering is the branch of computer science that deals
with the design, development, testing, and maintenance
of software applications.
• Software Engineering is an engineering branch related to the
evolution of software product using well-defined scientific principles,
techniques, and procedures.
• Software Engineering is the process of designing, developing, testing,
and maintaining software. It is a systematic and disciplined approach
to software development that aims to create high-quality, reliable,
and maintainable software.
Software Process
The software process is the way in
which we produce
software.
Burn-in
phase Wear out
phase
Failure Intensity
Useful life
phase
Time
Software Characteristics:
Comparison of constructing a bridge vis-à-vis writing a
program.
Sr. No Constructing a bridge Writing a program
Factors
People
Project
Product Process
Role of Management in Software Development
People
Process
• People – When we refer to people in software development, we actually mean
hierarchy of roles in software development such as managers, team leaders,
senior developers etc.
• They are ones who form development team and work in development of software.
The order of priority of people among other dependency factors is first (highest).
Software development is people-centric activity.
• Software development requires good managers, people who understand
psychology of people and provide good leadership. A good manager does not
ensure success of project, but can increase probability of success.
• A good manager gives priority to areas like proper selection, training,
compensation, career development, work culture, development team’s efficiency
etc.
• Therefore, Managers are crucial and critical for software development and it is
their responsibility to manage, motivate, encourage, control and guide his/her
development team through tough situations. Hence, success of project is on
shoulders of people who are involved in development.
• Product – A product is solution of problem that is handed to user who is
struggling with problem. The priority of product among other dependency
factors is second that is after people.
• The product or solution to problem is constructed based on requirements, which
are objectives and scope work of problem. This helps managers to select best
approach within constraints imposed by delivery deadlines, budgetary
restrictions, personnel availability, technical interfaces etc.
• Without well defined requirements, it may be impossible to define reasonable
estimates of cost, development time and schedule for project.
• Process – The process is way in which we produce software. It
provides framework from which comprehensive plan for software
development can be established.
• If process is weak, end product will undoubtedly suffer. The priority
of process among other dependency factors is third,
after people and product, however, it plays very critical role for
success of project.
• There are many life cycle models and process improvements models.
A suitable process model is determined on basis of requirements
specification, development team, user, type of project and
associated risks of project.
• Project – A proper planning is required to monitor status of
development and to control complexity. For project to be successful,
it should be within budget, follow policies and requirements
defined, and completed within timeline stated.
• Most of projects overrun cost by 100% of budget and are not
delivered on time. The priority of project among other dependency
factors is last(lowest). In order to manage successful project, we must
understand and prevent associated risks.
• Concrete requirements should be defined and frozen, wherever
possible. Unnecessary changes should not be made to avoid software
surprises. Software surprises are always risky and should be
minimized. A planning mechanism should be constructed to caution
from occurrence of any surprises.
Software Process and Product Metrics
Process metrics quantify the attributes of softwaredevelopment
•process and environment;
•whereas product metrics are measures for the software product.
•Examples
•Process metrics: Productivity, Quality, Efficiency etc.
• Product metrics: Size, Reliability, Complexity etc.
Software measurement and metrics
• A Measurement is an indication of the size, quantity, amount or
dimension of a particular attribute of a product or process.
• For example the number of errors in a system is a measurement.
1.Formulation: The derivation of software measures and metrics appropriate for the representation of the software
that is being considered.
2.Collection: The mechanism used to accumulate data required to derive the formulated metrics.
4.Interpretation: The evaluation of metrics results in insight into the quality of the representation.
5.Feedback: Recommendation derived from the interpretation of product metrics transmitted to the software team.
Need for Software Measurement
• Create the quality of the current product or process.
• Anticipate future qualities of the product or process.
• Enhance the quality of a product or process.
• Regulate the state of the project concerning budget and schedule.
• Enable data-driven decision-making in project planning and control.
• Identify bottlenecks and areas for improvement to drive process
improvement activities.
• Ensure that industry standards and regulations are followed.
• Give software products and processes a quantitative basis for
evaluation.
• Enable the ongoing improvement of software development practices.
Classification of Software Measurement
• Direct Measurement: In direct measurement, the product, process,
or thing is measured directly using a standard scale.
• Indirect Measurement: In indirect measurement, the quantity or
quality to be measured is measured using related parameters i.e. by
use of reference.
Software Metrics
• Process Metrics: Process metrics pay particular attention to enhancing the long-term process of the team or
organization. These metrics are used to optimize the development process and maintenance activities of
software. Examples include effort variance, schedule variance, defect injection rate, and lead time.
• Project Metrics: The project metrics describes the characteristic and execution of a project. Examples
include effort estimation accuracy, schedule deviation, cost variance, and productivity. Usually measures-
• Productivity
Advantages of Software Metrics :
1.Reduction in cost or budget.
2.It helps to identify the particular area for improvising.
3.It helps to increase the product quality.
4.Managing the workloads and teams.
5.Reduction in overall time to produce the product,.
6.It helps to determine the complexity of the code and to test the code with resources.
7.It helps in providing effective planning, controlling and managing of the entire product.
Disadvantages of Software Metrics :
8.It is expensive and difficult to implement the metrics in some cases.
2.Performance of the entire team or an individual from the team can’t be determined. Only the
performance of the product is determined.
3.Sometimes the quality of the product is not met with the expectation.
4.It leads to measure the unwanted data which is wastage of time.
5.Measuring the incorrect data leads to make wrong decision making.
Project Monitoring and Control
• Monitoring and Controlling are processes needed to track, review, and
regulate the progress and performance of the project.
• It also identifies any areas where changes to the project management
method are required and initiates the required changes.
CONT…
• Monitor and control project work: The generic step under which all other
monitoring and controlling activities fall under.
• Perform integrated change control: The functions involved in making
changes to the project plan. When changes to the schedule, cost, or any
other area of the project management plan are necessary, the program is
changed and re-approved by the project sponsor.
• Validate scope: The activities involved with gaining approval of the
project's deliverables.
• Control scope: Ensuring that the scope of the project does not change and
that unauthorized activities are not performed as part of the plan (scope
creep).
• Control schedule: The functions involved with ensuring the project work is
performed according to the schedule, and that project deadlines are met.
CONT…
• Control costs: The tasks involved with ensuring the project costs stay
within the approved budget.
• Control quality: Ensuring that the quality of the projects.,deliverables
is to the standard defined in the project management plan.
• Control communications: Providing for the communication needs of
each project stakeholder.
• Control Risks: Safeguarding the project from unexpected events that
negatively impact the project's budget, schedule, stakeholder needs,
or any other project success criteria.
• Control procurements: Ensuring the project's subcontractors and
vendors meet the project goals.
• Control stakeholder engagement: The tasks involved with ensuring
that all of the project's stakeholders are left satisfied with the project
Software Life Cycle Models
The goal of Software Engineering is to provide models and processes that lead to
the production of well-documented maintainable software in a manner that is
predictable.
Software development life cycle (SDLC)
is a structured process that is used to
design, develop, and test good-quality
software. SDLC, or software development
life cycle, is a methodology that defines
the entire procedure of software
development step-by-step.
2
Software Life Cycle Models
5
Waterfall Model
• Winston Royce introduced the Waterfall Model in 1970.
• This model has five phases: Requirements analysis and specification,
design, implementation and unit testing, integration and system
testing, and operation and maintenance.
• The steps always follow in this order and do not overlap.
• The developer must complete every phase before the next phase
begins.
• This model is named "Waterfall Model", because its diagrammatic
representation resembles a cascade of waterfalls.
• Requirements analysis and specification phase:
The aim of this phase is to understand the exact requirements of the customer and to
document them properly.
Both the customer and the software developer work together so as to document all the
functions, performance, and interfacing requirement of the software. It describes the
"what" of the system to be produced and not "how.“
In this phase, a large document called Software Requirement Specification (SRS) document
is created which contained a detailed description of what the system will do in the common
language.
• Design Phase: This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language. It defines the
overall software architecture together with high level and detailed design. All this work is
documented as a Software Design Document (SDD).
• Implementation and unit testing: During this phase, design is implemented. If the SDD is
complete, the implementation or coding phase proceeds smoothly, because all the
information needed by software developers is contained in the SDD.
• During testing, the code is thoroughly examined and modified. Small modules are tested in
isolation initially. After that these modules are tested by writing some overhead code to
check the interaction between these modules and the flow of intermediate output.
• Integration and System Testing: This phase is highly crucial as the
quality of the end product is determined by the effectiveness of the
testing carried out.
The better output will lead to satisfied customers, lower
maintenance costs, and accurate results.
Unit testing determines the efficiency of individual modules.
However, in this phase, the modules are tested for their interactions
with each other and with the system.
• Operation and maintenance phase: Maintenance is the task
performed by every user once the software has been delivered to the
customer, installed, and operational.
When to use SDLC Waterfall Model?
Implementatio
n and unit
testing
Integr ation
and system
testing
Operation
and
maintenance
Waterfall Model
2.Quick Decision
3.Build a Prototype
5.Prototype Refinement
6.Engineer Product
• Step 1: Requirement Gathering and Analysis: This is the initial step in designing a
prototype model. In this phase, users are asked about what they expect or what
they want from the system.
• Step 2: Quick Design: This is the second step in Prototyping Model. This model
covers the basic design of the requirement through which a quick overview can be
easily described.
• Step 3: Build a Prototype: This step helps in building an actual prototype from the
knowledge gained from prototype design.
• Step 4: Initial User Evaluation: This step describes the preliminary testing where the
investigation of the performance model occurs, as the customer will tell the
strength and weaknesses of the design, which was sent to the developer.
• Step 5: Refining Prototype: If any feedback is given by the user, then improving the
client’s response to feedback and suggestions, the final system is approved.
• Step 6: Implement Product and Maintain: This is the final step in the phase of the
Prototyping Model where the final system is tested and distributed to production,
here the program is run regularly to prevent failures.
•Advantage of Prototype Model
•Reduce the risk of incorrect user requirement
•Regular visible process aids management
•Support early product marketing
•Reduce Maintenance cost.
•Errors can be detected much earlier as the system is made side by side.
Requirements
specification
Architectural
design
Detailed
design
Implementation
and unit testing
Integration
and
testing
Operation and
Maintenance
Advantages of Iterative Enhancement Model
•Adaptation to changing requirements is made possible by its flexibility in
accomodating modifications and improvement during each iteration.
•Early software iterations provide clients with functional portions of the product,
facilitating prompt feedback and validation.
•Problems and risks can be identified and addressed early in the developement process,
reduces chances of issue for future stages.
•Feedback and constant client involvement are encouraged to make sure the finished
product lives up to user expectations.
•Every iteration is put through testing and improvement, leading to higher quality
product.
Disadvantages of Iterative Enhancement Model
•Especially in larger projects, managing several iterations at once can add complexity.
•Higher cost
•Due to constant changes, there may be delays in documentation, making it more
difficult to maintain comprehensive documentation.
•Continuous customer engagement may not be possible in all scenarios, which impacts
the effectiveness of the model.
Spiral Model
Models do not deal with uncertainly which is inherent to software projects.
Important software projects have failed because project risks were
neglected & nobody was prepared when something unforeseen happened.
Barry Boehm recognized this and tired to incorporate the “project risk”
factor into a life cycle model.
Disadvantages
•Can be a costly model to use.
•Risk analysis needed highly particular expertise
•Doesn't work well for smaller projects.
Agile Model
The agile model was mainly designed to adapt to changing requests
quickly.
The main goal of the Agile model is to facilitate quick project completion.
The agile model refers to a group of development processes.
These processes have some similar characteristics but also possess certain
subtle differences among themselves.
• 5. Deployment: In this phase, the team issues a product for the user's
work environment.