SEPM Unit5
SEPM Unit5
Types of maintenance:
Various types of software maintenance are:
Corrective Maintenance: Means the maintenance for correcting the software faults.
Adaptive Maintenance: Means maintenance for adapting the change in environment (different system or
operating systems).
Perfective Maintenance: Means modifying or enhancing the system to meet the new requirements.
Preventive Maintenance: This includes modifications and updating to prevent future problems of the
software.
Change Request
Software Configuration Items (SCIs): Information that is created as part of the software engineering process.
Baselines: A Baseline is a software configuration management concept that helps us to control change. Signals a
point of departure from one activity to the start of another activity. Helps control change without impeding
justifiable change.
Elements of SCM
There are four elements of SCM:
1. Software Configuration Identification
2. Software Configuration Control
3. Software Configuration Auditing
4. Software Configuration Status Reporting
Reporting
Configuration Audit
Change Control
Version Control
Identification
SCIs
VERSION CONTROL:
Version Control is a system or tool that captures the changes to a source code element: file, folder, image or
binary. This is beneficial for many reasons, but the most fundamental reason is it allows you to track changes
on a per file basis.
Version Control Benefits:
Secure Access to your Source Code
File History
Facilitate Team Communication
Baseline Trace Ability
Automated Merge Capabilities
Ensures no one Over-Writes Someone Else's Code
Allows for Better Control for Parallel Development
RE-ENGINEERING:
Software re-engineering means re-structuring or re-writing part or all of the software engineering system. It is
needed for the application which requires frequent maintenance.
Software re-engineering is a process of software development which is done to improve the maintainability ofa
software system.
Re-engineering a software system has two key advantages:
Reduced risk: As the software already exists, the risk is less as compared to developing new software.
Reduced cost: The cost of re-engineering is significantly less than the costs of developing new software.
Reverse
engineering
Program Data
Source code modularization reengineering
translation
Program
structure Structured Re-engineered
improvement program data
Restructured code
Final specification
2. Usually done when docs are not appropriate or Modification of the system is done. E.g.
is missing. 1) Use of different programming language.
2 ) introduction of new DBMS
3) Transfer of s/w to new h/w platform.
3. Reverse engineering is a process in which the Forward-engineering is a process in which theories,
dirty or unstructured code is taken, processed methods and tools are applied to develop a
and it is restructured. professional software product.
4. Reverse Engineering is trying to recreate the Forward engineering is normal engineering. It builds
source code from the compiled code. That is devices that can do certain useful things for us:
trying to figure out how a piece of software
works given only the final system.
5. It is complex because cleaning the dirty or It is simple and straight forward approach.
unstructured code requires more efforts.
6. Documentation or specification of the product is Documentation or specification of the product is
useful to the developer. useful to the end user.
7. This process starts by understanding the existing This process starts by understanding user
unstructured code. requirements.
Table 5.1: Forward and Reverse Engineering
TOOL SUPPORT:
CASE Tool Support:
CASE tools are set of software application programs, which are used to automate SDLC activities. CASE tools
are used by software project managers, analysts and engineers to develop software system.
There are number of CASE tools available to simplify various stages of Software Development Life Cycle such
as Analysis tools, Design tools, Project management tools, Database Management tools, Documentation tools are
to name a few.
Use of CASE tools accelerates the development of project to produce desired result and helps to uncover flaws
before moving ahead with next stage in software development.
Upper CASE
Analysis
Integrated CASE
Design
Implementation
Lower CASE
Testing
Maintenance
Project management
tools
Programming tools
Prototyping and
simulation tools
Consistency and
completeness tools
Software configuration
Central repository management tools
Documentation tools
(Data Dictionary)
FEASIBILITY ANALYSIS:
When the client approaches the organization for getting the desired product developed, it comes up with a rough
idea about what all functions of the software must perform and which all features are expected from the software.
Referencing to this information, the analysts do a detailed study about whether the desired system and its
functionality are feasible to develop or not.
This feasibility study is focused towards goal of the organization. This study analyses whether the software
product can be practically materialized in terms of implementation, contribution of project to organization, cost
constraints, and as per values and objectives of the organization. It explores technical aspects of the project and
product such as usability, maintainability, productivity, and integration ability.
The output of this phase should be a feasibility study report that should contain adequate comments and
recommendations for management about whether or not the project should be undertaken.
RESOURCE ALLOCATIONS:
Once the objectives of the project management are achieved, the project management is to estimate the
resources for the project. Various recourses of the project are:
• Human or people
• Reusable software components
• Hardware or software components
The resources are available in limited quantity and stay in the organization as a pool of assets. The shortage of
resources hampers development of the project and it can lag behind the schedule. Allocating extra resources
increases development cost in the end. It is therefore necessary to estimate and allocate adequate resources for
the project.
Resource management includes:
• Defining proper organization project by creating a project team and allocating responsibilities to each
team member.
• Determining resources required at a particular stage and their availability.
• Manage Resources by generating resource request when they are required and de-allocating them when
they are no more needed.
SOFTWARE EFFORTS:
Project Estimation
For an effective management, accurate estimation of various measures is a must. With the correct estimation,
managers can manage and control the project more efficiently and effectively.
Project estimation may involve the following:
• Software size estimation: Software size may be estimated either in terms of KLOC (Kilo Line of Code)
or by calculating number of function points in the software. Lines of code depend upon coding practices.
Function points vary according to the user or software requirement.
• Effort estimation: The manager estimates efforts in terms of personnel requirement and man-hour
required to produce the software. For effort estimation software size should be known. This can either be
derived by manager’s experience, historical data of organization, or software size can be converted into
efforts by using some standard formula.
• Time estimation: Once size and efforts are estimated, the time required to produce the software can be
estimated. An effort required is segregated into sub categories as per the requirement specifications and
interdependency of various components of software. Software tasks are divided into smaller tasks,
activities or events by Work Breakthrough Structure (WBS). The tasks are scheduled on day-to-day basis
or in calendar months. The sum of time required to complete all tasks in hours or days is the total time
invested to complete the project.
• Cost estimation: This might be considered as the most difficult of all because it depends on more
elements than any of the previous ones. For estimating project cost, it is required to consider –
o Size of the software
o Software quality
o Hardware
o Additional software or tools, licenses etc.
o Skilled personnel with task-specific skills
o Travel involved
o Communication
o Training and support
PROJECT SCHEDULING:
Project Scheduling in a project refers to roadmap of all activities to be done with specified order and within time
slot allotted to each activity. Project managers tend to define various tasks and project milestones and then
arrange them keeping various factors in mind. They look for tasks like in critical path in the schedule, which are
necessary to complete in specific manner (because of task interdependency) and strictly within the
time allocated. During the project scheduling the total work is separated into various small activities.
COST ESTIMATIONS:
Cost estimation can be defined as the approximate judgments of the costs for project. Cost estimation is usually
measured in terms of effort. The effort is the amount of time for one person to work for a certain period of time.
COCOMO is one the most widely used software estimation models in the world. The Constructive Cost Model
(COCOMO) is a procedural software cost estimation model .COCOMO is used to estimate size, effort and
duration based on the cost of the software.
COCOMO predicts the effort and schedule for a software product development based on inputs relating to the
size of the software and a number of cost drivers that affect productivity.
COCOMO has three different models that reflect the complexities:
Basic Model: this model would be applied early in a projects development. It will provide a rough
estimate early on that should be refined later on with one of the other models.
Intermediate Model: this model would be used after you have more detailed requirements for a
project.
Detailed Model: when design of the project is complete you can apply this model to further refine your
estimate.
Within each of these models there are also three different modes. The mode you choose will depend on your
work environment, and the size and constraints of the project itself. The modes are:
Organic: this mode is used for “relativity small software teams developing software in a highly familiar,
in-house environment”.
Embedded: operating within tight constraints where the product is strongly tied to a “complex of
hardware, software, regulations and operational procedures”.
Semi-detached: an intermediate stage somewhere in between organic and embedded. Projects are
usually of moderate size of up to 300,000 lines of code.
Basic Model: The basic COCOMO model estimates the software development effort using only Lines Of Code
(LOC). Various equations in this model are:
Effort Applied (E) = ab(KLOC)bb [man-months]
Development Time (D) = cb(Effort
Applied)db[months]
People required (P) = Effort Applied / Development Time [count]
Where, KLOC is the estimated number of delivered lines (expressed in thousands) of code for project. The
coefficients ab, bb, cb and db are given in the following table:
Software Projects ab bb cb db
Organic 2.4 1.05 2.5 0.38
Semi- 3.0 1.12 2.5 0.35
detached
Embedded 3.6 1.20 2.5 0.32
Table 5.2: List of Constants Based on Mode for Basic COCOMO
Intermediate Model: This is an extension of basic COCOMO model. This estimation model makes use of set of
“cost driver attributes“to compute the cost of software.
The formula for effort calculation is:
E=ai(KLOC)(bi)(EAF)
Where E is the effort applied in person-months, KLOC is the estimated number of thousands of delivered lines
of code for the project, and EAF is the factor calculated above. The coefficient ai and the exponent bi are given in
the next table.
Software Projects ai bi
Organic 3.2 1.05
Semi-detached 3.0 1.12
Embedded 2.8 1.20
Table 5.3: List of Constants Based on Mode for Intermediate Model
The Development time D calculation uses E in the same way as in the Basic COCOMO.
Detailed Model: Detailed COCOMO incorporates all characteristics of the intermediate version with an
assessment of the cost driver's impact on each step (analysis, design, etc.) of the software engineering process.
The detailed model uses different effort multipliers for each cost driver attribute. These Phase Sensitive effort
multipliers are each to determine the amount of effort required to complete each phase. In detailed COCOMO,
the whole software is divided into different modules and then we apply COCOMO in different modules to
estimate effort and then sum the effort.
The effort is calculated as a function of program size and a set of cost drivers are given according to each phase
of the software life cycle.
RMMM Plan:
It is a part of the software development plan or a separate document.
The RMMM plan documents all work executed as a part of risk analysis and used by the project
manager as a part of the overall project plan.
The risk mitigation and monitoring starts after the project is started and the documentation of RMMM is
completed.
Quality Assurance:
It is planned and systematic pattern of activities necessary to provide a high degree of confidence in the quality of
a product. It provides quality assessment of the quality control activities and determines the validity of the data
or procedures for determining quality.
PROJECT PLAN:
A project plan is a formal document designed to guide the control and execution of a project. A project plan is
the key to a successful project and is the most important document that needs to be created when starting any
business project.
A project plan is used for the following purposes:
To document and communicate stakeholder products and project expectations
To control schedule and delivery
To calculate and manage associated risks
PROJECT METRICS:
Metrics is a quantitative measure of the degree to which a system, component, or process possesses a given
attribute.
Project metrics are quantitative measures that enable software engineers to gain insight into the efficiency of
the software process and the projects conducted using the process framework. Project metrics are used by a
project manager and a software team to adapt project work flow and technical activities.
Number of user inputs. Each user input that provides distinct application oriented data to the software is
counted. Inputs should be distinguished from inquiries, which are counted separately.
Number of user outputs. Each user output that provides application oriented information to the user is counted.
In this context output refers to reports, screens, error messages, etc. Individual data items within a report are not
counted separately.
Number of user inquiries. An inquiry is defined as an on-line input that results in the generation of some
immediate software response in the form of an on-line output. Each distinct inquiry is counted.
Number of files. Each logical master file (i.e., a logical grouping of data that may be one part of a large
database or a separate file) is counted.
Number of external interfaces. All machine readable interfaces (e.g., data files on storage media) that are used
to transmit information to another system are counted.
FP = count total [0.65 + 0.01 Σ(Fi)] where count total is the sum of all FP entries .
The Fi (i = 1 to 14) are "complexity adjustment values" based on responses to the following questions: