Unit 5 - Software Engineering and Project Management - WWW - Rgpvnotes.in
Unit 5 - Software Engineering and Project Management - WWW - Rgpvnotes.in
UNIT-V
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
Version Control
Change Control
Configuration Audit, and
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
Store and handle the information extracted
Visualize all the retrieved information
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 of
a 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
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.
Planning
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
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
e de i ed a age ’s e pe ie e, histo i al data of o ga ization, 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 ode is used fo elati it s all soft a e tea s de elopi g soft a e i a highl fa ilia ,
in-house e i o e t .
Embedded: ope ati g ithi tight o st ai ts he e the p odu t is st o gl tied to a o ple of
hardware, software, regulations and ope atio al p o edu es .
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
ost d i e att i utes 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.
Experienced staff leaving the project and new staff coming in.
Change in organizational management.
Requirement change or misinterpreting requirement.
Under-estimation of required time and resources.
Technological changes, environmental changes, business competition.
List of identified risks Prioritized list of risk Risk avoidance Risk assessment
/minimization plan
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 Control:
Quality control (QC) is a procedure or set of procedures intended to ensure that a manufactured product or
performed service adheres to a defined set of quality criteria or meets the requirements of the client or
customer.
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.
o Productivity=KLOC/ Person-month
o Quality= number of faults/KLOC
o Cost=$/KLOC
o Documentation= Pages of documentation/KLOC
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.
The Fi (i = 1 to 14) are "complexity adjustment values" based on responses to the following questions: