Professional Documents
Culture Documents
SEN Notes
SEN Notes
Overview of Software
Engineering & The Software
Development Process
Marks-20
Definition of Software
Software is a set of instructions that when
executed, provide desired features, functions
and performance.
It is a datastructure that enables the programs
to manipulate the information.
Software is a document that describes the
operation and use of programs.
Characteristics
1.Software is developed or engineered; it is not
manufactured.
2.Software doesnt “wear out”.
3.Although the industry is moving towards
component based constructions, most
software continues to be custom built.
Bathtub Curve for Hardware failure
Bathtub Curve for Software failure
Types/Categories of Software
1.System Software
2.Application Software
3.Engineering/Scientific Software
4.Embedded Software
5.Product-line Software
6.Web applications
7.Artificial Intelligence Software
System Software
It is a collection of programs written to service
other programs.
System software area is characterized by
heavy interaction with computer hardware.
Ex: Operating system, Compilers, Editors, File
management utilities, Drivers, Networking
Software, Telecommunication Processors.
Application Software
It consist of standalone programs that solve
specific business needs.
Application software is used to control
business functions in real time.
Ex: Microsoft office suite, Google docs,
Browser
Engineering/Scientific Software
This application range from astronomy to
volconology, automotives stress analysis to
space shuttle orbital dynamics, molecular
biology to automated manufacturing etc.
Embedded Software
It resides within a product or system and is
used to implement and controll features and
functions for the end users and for the system
itself.
Ex: Keypad control for microwave oven, Digital
functions, Dashboard displays etc
Product-line Software
Desigened to provide a specific capability for
use by many different customes.
It focus on limited marketplace or address
mass consumer markets.
Ex: Word processing, Spread sheets,
Computer graphics, Entertainment,
Multimedia, Database management, Business
financial application.
Web applications
Span a wide area of applications.
In their simplest form, WebApps can be a little
more than a set of linked hypertex files that
present information using text and limited
graphics.
Artificial Intelligence Software
AI software makes use of nonnumerical
algorithms to solve complex problems that are
not amenable to computation or straight
forward analysis.
Ex: Robotics, Pattern recognition, Artificial
nueral networks, etc
Definition of Software Testing
Modelling is used to analyse the data and as per the analysis the
data and process will be designed.
Construction
C- Communication
P - Planning
M – Modelling
C - Construction
D - Deployment
Q u i ck p l an
Quick
Co m m u n icat io n plan
communication
Modeling
Mo d e l i n g
Q u i ck d e si g n
Quick design
Deployment
Deployment
D e live r y
delivery &
& Fe e d b ack Co n st r u ct io n
feedback oConstruction
f
p of
r o tprototype
o t yp e
Evolutionary Models: Prototyping
• Business and product requirement often change as
development proceed.
• Software engineer need a process model that has been
explicitly designed to accommodate a product that
evolves over time.
• Evolutionary models are iterative.
• Enables software engineers to develop increasingly
more complete version of the software.
There are two types of evolutionary development:
– Exploratory development
• Start with requirements that are well defined
• Add new features when customers propose new requirements
– Throw-away prototyping
• Objective is to understand customer’s requirements (i.e. they
often don’t know what they want), hence poor requirements to
start
• Use means such as prototyping to focus on poorly
understood requirements, redefine requirements as you
progress
Steps in Prototyping
• Begins with requirement Gathering
• Identify whatever requirements are known.
• Outline areas where further definition is mandatory.
• A quick design occurs.
• Quick design leads to the construction of prototype.
• Prototype is evaluated by the customer.
• Requirements are refined
• Prototype is turned to satisfy the needs of customer
Advantages
to iterative development.
New versions may be built several times per day;
All tests must be run for every build and the build is only
Marks-16
Software engineering practice is a collection of
concepts, principals, methods and tools that
a software engineer calls upon on daily basis.
Practice allows managers to manage software
projects and software engineers to build
computer programs.
Essence of practice
1.Understand the problem.(communication and
analysis)
2.Plan a solution.(modeling and software
design)
3.Carry out the plan.( code generation)
4.Examine the result for accuracy(testing and
quality assurance)
Understand the problem
Who are the stakeholder?
What data, functions, features and behavior
are required to properly solve the problem?
Is it possible to represent smaller problems
that may be easier to understand?
Can the problem be represented graphically?
Problem: Write a function which takes two numbers and returns their sum.
Plan a solution
Have you seen similar problems before?
Has a similar problem been solved?
Can sub-problems be defined?
Can you represent a solution in a manner that
leads to effective implementation?
Can a design model be created?
Carry out the plan.
Does the solution conform to the plan?
Is each component part of the solution
provably correct?
Has the design and code been reviewed?
Examine the result
Is it possible to test each component part of the
solution?
Has a reasonable testing strategy been
implemented?
Has the software been validated against all
stakeholder requirements?
Core principles of Software
Engineering
1. The Reason It All Exists.
2.Keep It Simple, Stupid!
3.Maintain The Vision.
4.What you produce ,Others will Consume.
5.Be Open To The Future.
6.Plan Ahead For Reuse
7.Think!
The First Principle: The Reason It All
Exists
The software exists for one reason: to provide
value to its users.
Before specifying system requirement,
functionality, hardware platform, development
process ask question such as:
“Dose this add real value to the system?”
If answer is no, don't do it.
The Second Principle: Keep It
Simple,Stupid!
All design should be as simple as possible,
but no simpler.
This facilitates having a more easily understood
and easily maintained system.
Simple does not mean that features should be
discarded in the name of simplicity.
Indeed, the more elegant designs are usually the
more simple ones.
The Third Principle: Maintain The Vision
It does not involve executing the code. It always involves executing the code.
It is human based checking of documents It is computer based execution of program
and files
Verification uses methods like inspections, Validation uses methods like black box
reviews, walkthroughs, and Desk-checking (functional) testing, gray box testing, and
etc. white box (structural) testing etc.
It can catch errors that validation cannot It can catch errors that verification cannot
catch. catch.
4.4 Testing Strategies
Unit Testing
Integration Testing
Top-Down Approach
Bottom-up Approach
Regression Testing
Smoke Testing
Testing Strategies
Testing begins at the component level and works
outward toward the integration of the entire computer-
based system.
Different testing techniques are appropriate at different
points in time.
The developer of the software conducts testing and
may be assisted by independent test groups(ITG) for
large projects.
The role of the independent tester is to remove the
conflict of interest when the builder is testing his or her
own product.
Unit Testing
• Unit Testing is a level of the software testing
process where individual units/components of a
software/system are tested.
• The purpose is to validate that each unit of the
software performs as designed.
• A unit is the smallest testable part of software.
• It usually has one or a few inputs and usually a
single output.
• In procedural programming a unit may be an
individual program, function, procedure, etc.
• In OOP, the smallest unit is a method, which may
belong to a base/super class, abstract class or
derived/child class.
• The module interface is tested to ensure that
information properly flows into and out of the
program unit under test.
• Local data structures are examined to ensure that
data store temporarily maintains its integrity
during execution.
• All independent path ensures that all statements in
a module have been executed at least once.
• Boundary conditions are tested to ensure the
module operates properly at boundaries
established to limit or restrict processing.
• Finally all error handling paths are tested.
Unit Testing
Unit test procedures
• In most applications a driver is nothing more then
a main program that accepts test case data
passes to component to be tested and prints
results.
• Stubs serves to replace modules that are called
by the component to be tested.
• A stub or dummy sub program uses the sub
ordinate modules interface, may do data
manipulation, provides verification and returns
control to the module under going testing.
• Drivers and stub are kept simple, actual over
head is kept low.
Example of Stubs and Drivers is given below:-
• For Example we have 3 modules login, home, and
user module.
• Login module is ready and need to test it, but
we call functions from home and user (which is not
ready).
• To test at a selective module we write a short
dummy piece of a code which simulates home
and user, which will return values for Login, this
piece of dummy code is always called Stubs and it
is used in a top down integration.
• Considering the same Example:
• If we have Home and User modules get ready
and Login module is not ready, and we need to
test Home and User modules.
• Which return values from Login module, So to
extract the values from Login module we write a
Short Piece of Dummy code for login which
returns value for home and user, So these pieces
of code is always called Drivers and it is used in
Bottom Up Integration
• Conclusion:- So it is fine from the above example
that Stubs act “called” functions in top down
integration. Drivers are “calling” Functions in
bottom up integration.
• Suppose you have a function (Function A) that calculates the total
marks obtained by a student in a particular academic year.
• Suppose this function derives its values from another function
(Function B) which calculates the marks obtained in a particular
subject.
• You have finished working on Function A and wants to test it.
• But the problem you face here is that you can't seem to run the
Function A without input from Function B; Function B is still
under development.
• In this case, you create a dummy function to act in place of
Function B to test your function. This dummy function gets called by
another function. Such a dummy is called a Stub.
• To understand what a driver is, suppose you have finished Function
B and is waiting for Function A to be developed. In this case you
create a dummy to call the Function B. This dummy is called the
driver.
Integration Testing
• It is a systematic technique for constructing
software architecture while at the same time
conducting testing to uncover errors with
interfacing.
• The objective is to take unit tested components
and build program structure that has been
dictated by design.
• The entire program is tested as a whole.
Top down integration
• It is an incremental approach to construction of
the s/w architecture.
• Modules are integrated by moving downward ,
beginning with the main control module(main
program).
• Modules subordinate to the main control module
are incorporated into the structure in either a
DFS or BFS manner.
Steps to perform top down integration:-
• The main control module is used as a test driver,
stubs are substituted one at a time for all
components directly subordinates to the main
module.
• Tests are conducted as each component is
integrated.
• On completion of test, another stub is replaced with
real components.
Bottom up integration
• As its name implies, begins construction and
testing with lowest level component in the
program structure.
• Components are integrated bottom up, the
need for stub is eliminated.
Steps for bottom-up integration:-
• Low level components are combined into
clusters.(builds- performs specific s/w sub
function)
• A driver is written to coordinate test case input
and output.
• The cluster is tested.
• Drivers are removed and clusters are combined
moving upward in structure.
• Components are combined to form a clusters.
• Each of clusters is tested using a driver shown as
a dashed block. components in clusters 1,2 are
subordinate to Ma.
• Drivers D1,D2 are removed and clusters are
interfaced directly to Ma.
• As integration moves upward, the need for
separate test drivers are less.
Top- Down integration Bottom –Up Integration
This is incremental approach to Bottom up integration begins with
construction of the software sub modules and atomic checking
architecture.
Stubs are required for test cases. Drivers are required for test cases
Depth-first integration integrates Different clusters are formed for
all components on a major control the testing.
path of the program structure.
Regression testing
• Each time a new module is added as part of
integration testing, the s/w changes.
• New data flow paths are established, new i/o
may occur, new control logic is invoked. These
changes may cause problems with functions that
previously worked flawlessly.
• Regression testing is the re execution of some
subsets of tests that have already been
conducted to ensure that changes have not
propagated unintended side effects.
• It is the activity that helps to ensure that
changes do not introduce unintended behavior
and additional errors.
• Regression testing may be conducted manually
or by using automated tools.
• As integration testing proceeds, the number of
regression tests can grow quite large.
Smoke testing
• Smoke testing is an integration testing approach that is
commonly used when software products are being
developed.
• It is designed mechanism for time critical projects ,
allowing the s/w team to test their projects on frequent
basis.
S /w components that have been translated into code are
integrated into a “Build” - build includes all data files,
libraries, reusable modules, engineered components that
are required to implement one or more product functions.
A series of tests is designed to expose errors that will
keep the build from performing its function.
• The build is integrated with other build and the
entire product is smoke tested daily.
• It does not have to be exhaustive, but it should
be capable of exposing major problems.
• If the build passes ,you can assume that it is
stable enough to be tested more completely.
Benefits of s/w testing:-
1. Integration risk is minimized.
2. The quality of the end product is improved.
3. Error diagnosis and correction are
simplified.
4. Progress is easier to assess.
Validation Testing
Alpha testing:-
• This test takes place at the developer’s site. Developers
observe the users and note problems.
• Alpha testing is testing of an application when
development is about to complete.
• Alpha testing is typically performed by a group that is
independent of the design team, but still within the
company, e.g. in-house software test engineers, or
software QA engineers.
• Alpha testing is final testing before the
software is released to the general public.
• It has two phases:
1. In the first phase, the software is tested by
in-house developers. The goal is to catch
bugs quickly.
2. In the second phase, the software is
handed over to the software QA staff,
for additional testing in an environment
that is similar to the intended use.
Beta Testing
• It is also known as field testing. It takes place at
customer’s site. It sends the system to users who install
it and use it under real-world working conditions.
• A beta test is the second phase of software testing in
which a sampling of the intended audience tries the
product out. (Beta is the second letter of the Greek
alphabet.)
• Originally, the term alpha test meant the first phase of
testing in a software development process.
• The first phase includes unit testing, component testing,
and system testing.
• Beta testing can be considered “pre-release testing”.
The goal of beta testing is to place your
application in the hands of real users outside of
your own engineering team to discover any flaws
or issues from the user’s perspective that you
would not want to have in your final, released
version of the application.
ALPHA TESTING BETA TESTING
Task 1
Task 2
Task 3
Task 4
Task 5
Task 6
Task 7
Task 8
Task 9
Task 10
Task 11
Task 12
Concept of Task Network
• A task network, also called an activity network, is a
graphic representation of the task flow for a project.
• It is the mechanism through which task sequence and
dependencies are input to an automated project
scheduling tool.
• In its simplest form, the task network depicts major
software engineering tasks.
• The concurrent nature of software engineering activities
leads to a number of important scheduling requirements.
• In addition, the project manager should be aware of
those tasks that lie on the critical path.
• That is, tasks that must be completed on schedule if the
project as a whole is to be completed on schedule.
Ways of Project Tracking
Tracking: - can be accomplished in different ways:
Conducting periodic project status meetings in which
each team member reports progress and problems.
Evaluating the results of all reviews conducted
throughout the software engineering process.
Determining whether formal project milestones have
been accomplished by the scheduled date.
Comparing actual start-date to planned start-date for
each project task.
Meeting informally with practitioners to obtain their
subjective assessment of progress to date and
problems on the horizon.
Project Risks
What can go wrong?
What is the likelihood?
What will the damage be?
Risk Management
• Software risk :A software risk is anything which
can cause a delay in software or stops the
progress of a system or even terminates the
software project.
• Risk is an expectation of loss, a potential
problem that may or may not occur in the future.
• It is generally caused due to lack of information,
control or time.
• A possibility of suffering from loss.
• Loss can be anything, increase in production
cost, development of poor quality software, not
being able to complete the project on time.
Concept of Proactive and Reactive
risk strategies
Reactive:
1. Majority of the software teams and managers
rely on this approach i.e., nothing is done about
risks until something actually goes wrong.
2. Here when something goes wrong the team
files into action and attempts to correct the
problem.
3. Here disaster management or risk management
is the choice of management technique.
Proactive:
1. Here the primary objective is to avoid risk and
to have a contingency plan in place to handle
unavoidable risk in controlled and effective manner.
2. Here the proactive strategy start in the early of
project development.
3. Possibilities and types of risks are identified, they
are checked and arranged as per their priority
and impact and prioritized according to their
importance.
4. Then after ranking the risk the main plan of the
project team is to avoid the risk.
Types of Software Risks
There are two basic types of risks:
(a) Generic Risk : Generic Risk is the general
purpose possible threat to every software
product.
(b) Product Specific Risk: Product Specific risk
can be find out only by those with a clear
understanding of the technology going to be
used for that project.
Different Categories of Risks: -
(a) Project Risk: - Threaten the project plan. That is if
project risk become real it is likely that project schedule
will slip and that costs will increase. Project risks
identity potential budgetary, schedule, personnel,
resource, customer and requirement problem.
(b) Technical Risk: - Threaten the quality and
timeliness of the software to be produced. If technical
risk becomes real, implementation may become difficult
or impossible.
(c) Business Risk: - Threaten the viability of the
software to be built. Business risk often jeopardizes the
product or the project.
(d) Market Risk:- Building product that no one wants
(e) Strategic Risk: - Building a product that no
longer fits into the business strategy
(f) Management Risk: - Building a product that the
sale force doesn‘t understand.
(g) Budget Risk: - Losing budgetary or personnel
commitment
Risk Assessment
• Risk assessment involves the evaluation of the
risk. We take a triplet into consideration for
understanding risk assessment in detail.
• In the triple ri stands for risk, li stands for
likelihood that is probability of the risk, and xi
represents impact of the risk.
• In initial stages of project planning a risk is stated
generally. As the time passes, it is important to
divide that risks into sub types and try to refine it.
Risk Management Paradigm
control
track
identify
plan
analyze
Risk identification
• Risk identification can be defined as systematic
attempt to specify or find out threats to the
project plan. Project plan includes estimation,
resource distribution etc.
• With the help of finding well known and
predictable risks, the project manager or leader
can take first step to deal with or avoid them.
• These risks need to be controlled or avoided as
per its form.
Risk Analysis
• After identification of the risk, risk analysis has to
be done.
• The process of risk analysis is analyzing the
potential risks with its types and details.
• The time and efforts needed for risks analysis
are huge.
• Analysis starts with what risks are there, their
probability and consequences with their impact
on the project.
Risk refinement : In initial stages of project
planning a risk is stated generally. As the time
passes it is important to divide that risks into its
sub types and try to refine it.
The way to refine risk is to represent the risk in
condition – transition – consequence i.e. CTC
format. The risk can be stated as follows.
<Condition>(Possibly)<Consequence>
Risk Prioritization
• For the purpose of deciding the priority of the
risk, process called as risk prioritization is used.
• When first four columns of the risk table are filled
with the risk related data, the table needs to be
sorted by probability and by impact.
• The risk with high probability and high impact
risks are located at the top of the table.
• The risks with low probability go to the bottom of
the table after sorting.
• This is called as first order prioritization of the
risks.
• The project manager analyses the sorted risk
table and defines the cutoff line.
• It is a horizontal line at some point in the table.
The risk above this line will be given more
attention. The risks below the line will be again
reviewed and evaluated.
• After this, again second order prioritization of the
risk below cut off line is done.
RMMM strategy
• To assist the project team in developing a
strategy for dealing with risk.
• An effective strategy must consider three issues:
risk avoidance, risk monitoring, and risk
management and contingency planning.
• If a software team adopts a proactive approach
to risk avoidance is always the best strategy.
• This is achieved by developing a plan for risk
mitigation.
Risk Mitigation
• To mitigate this risk, you would develop a strategy for
reducing turnover.
• Among the possible steps to be taken are:
– Meet with current staff to determine causes for
turnover (e.g., poor working conditions, low pay,
competitive job market).
– Mitigate those causes that are under your control
before the project starts.
– Once the project commences, assume turnover will
occur and develop techniques to ensure continuity
when people leave.
– Organize project teams so that information about
each development activity is widely dispersed.
• Define work product standards and establish
mechanisms to be sure that all models and documents
are developed in a timely manner.
• Conduct peer reviews of all work (so that more than one
person is ―up to speed).
• Assign a backup staff member for every critical
technologist
Risk Monitoring
• As the project proceeds, risk-monitoring activities
commence.
• The project manager monitors factors that may
provide an indication of whether the risk is
becoming more or less likely.
• In the case of high staff turnover, the general
attitude of team members based on project
pressures, the degree to which the team has
jelled, interpersonal relationships among team
members, potential problems with compensation
and benefits, and the availability of jobs within the
company and outside it are all monitored.
Risk Management
• In addition to monitoring these factors, a project
manager should monitor the effectiveness of risk
mitigation steps. Risk management and contingency
planning assumes that mitigation efforts have failed and
that the risk has become a reality.
• It is important to note that risk mitigation, monitoring,
and management (RMMM) steps incur additional
project cost. For example, spending the time to back-up
every critical technologist costs money. Part of risk
management, therefore, is to evaluate when the
benefits accrued by the RMMM steps are outweighed
by the costs associated with implementing them.
Software Configuration
Management (SCM)
• Software Configuration Management (SCM) is also known as
change management.
• Changes can occur at any point of a time and that too
because of any reason throughout the life cycle.
• Sources of change can be:-
Change in a product requirement and business rule because
of new business or market conditions.
Modification in data,functionality,services etc.
Reorganization or business growth
Redefinition of product because of budgetary and scheduling
constraints.
Elements of software configuration
management system
Four important elements that should exist when a
configuration management system is developed:
Component elements -a set of tools coupled within a file
management system (e.g., a database) that enables
access to and management of each software
configuration item.
Process elements -a collection of actions and tasks that
define an effective approach to change management
(and related activities) for all constituencies involved
in the management, engineering, and use of
computer software.
Construction elements -a set of tools that
automate the construction of software by
ensuring that the proper set of validated
components (i.e., the correct version) have
been assembled.
Human elements-a set of tools and process
features (encompassing other CM elements)
used by the software team to implement
effective SCM.
Need of SCM
1. Identify change or changes.
2. Keep control on change.
3. For ensuring that change is properly
implemented.
4. Make report of changes and present it to the
people who have interest in that.
Benefits of SCM
1. Changes can be made with ease throughout software
development process.
2. Changes are systematically recorded.
3. Changes are available whenever required for review.
4. Different version of software project can be created and
process can be continued for long time.
5. Repository is available in the form of database.
6. Every object's detail can be stored with its attributes.
7.Changes can be traced in forward and backward direction.
8. Customer requirements are fulfilled by accepting
changes.9. It is one of the activities of software quality
assurance that supports validation as well as verification.
10. Avoids lot of confusion because of change in software
project.
Software Configuration
Management Activities/Process
Identification of change
To control and manage configuration items, each
must be named and managed using an object-
oriented approach
Basic objects are created by software
engineers during analysis, design, coding, or
testing
Aggregate objects are collections of basic
objects and other aggregate objects
An entity-relationship (E-R) diagram can be
used to show the interrelationships among the
objects
Software Configuration
Management Activities
Identification of change
To control and manage configuration items, each
must be named and managed using an object-
oriented approach
Basic objects are created by software
engineers during analysis, design, coding, or
testing
Aggregate objects are collections of basic
objects and other aggregate objects
An entity-relationship (E-R) diagram can be
used to show the interrelationships among the
objects
Version Control
Combines procedures and tools to manage
the different versions of configuration objects
created during the software process
An entity is composed of objects at the same
revision level
A variant is a different set of objects at the
same revision level and coexists with other
variants
A new version is defined when major changes
have been made to one or more objects
Change Control
Change request is submitted and evaluated to assess
technical merit and impact on the other configuration objects
and budget
Change report contains the results of the evaluation
Change control authority (CCA) makes the final decision on the
status and priority of the change based on the change report.
Software Configuration Audit
A software configuration audit complements the formal
technical review by assessing a configuration object for
characteristics that are generally not considered during review.
The audit asks and answers the questions such as:
Has the change specified in the ECO been made? Have any
additional modifications been incorporated?
Has a formal technical review been conducted to assess
technical correctness?
Status Reporting
Configuration status reporting (sometimes called
status accounting) is an SCM task that
answers the following questions:
1. What happened?
2. Who did it?
3. When did it happen?
4. What else will be affected?
SCM Repository Functions
Data integrity: It ensure consistency among related objects.
Information sharing: Sharing information among multiple
developers, multiple tools, manages and controls
multiuser access to data.
Tool integration: Establishes data model that can accessed
by many software engineering tools, controls access to
data.
Data integration: Provides data base functions that allow
various SCM task to be performed on one or more
Software Configuration Items(information as part of
project) .
Methodology enforcement: Defines an entity relationship
model stored in repository for software engineering.
Document standardization: It is a standard approach for
creation of software engineering documents.
SCM Tool Features
Versioning - control changes to all work products before and after
release to customer.
Dependency tracking and change management - tracking
relationships among multiple versions of work products to
enable efficient changes (link management)
Requirements tracing – depends on link management, provides
the ability to track all work products that result from a specific
requirements specification (forward tracing) and to identify
which requirement generated by any given work product
(backward tracing)
Configuration management – works closely with link
management and versioning facilities to keep track of a series of
configurations representing project milestones or production
releases
Audit trails - establishes additional information about when,
where, why, and by whom changes were made
Chapter - 06
Software Quality Management
1. Quality
2. Quality control
3. Quality assurance
4. Cost of quality
Quality