Software Maintenance and Software Project Management




Software as an Evolutionary Entity

Software is not static. After delivery, it keeps changing over time due to:

  • New user requirements
  • Technology updates
  • Bug fixes
  • Legal and security changes

Hence, software evolves continuously, just like a living system.

Example: WhatsApp

  • Initially: Only text messages
  • Later: Voice calls, video calls, status, payments, communities
This continuous improvement shows software evolution.

Pratapsolution.com

Key Points (Exam Ready)

  • Software changes after delivery
  • Maintenance is part of evolution
  • Evolution increases software life

Need for Software Maintenance

ReasonExplanationReal-Life Example
Bug fixingErrors found after releaseApp crashes on login
New requirementsUser demands new featuresAdd dark mode
Environment changeOS / hardware updateWindows version upgrade
Performance improvementFaster & better responseReduce loading time
SecurityFix vulnerabilitiesPatch hacking issues

Software maintenance is required to keep the software correct, efficient, secure, and useful.

Categories of Software Maintenance

Corrective Maintenance

Fixing errors or bugs found after software delivery.

Example: Bank app crashes during fund transfer → developer fixes bug

Characteristics

  • Reactive (done after problem occurs)
  • Short-term solution

Preventive Maintenance

Changes made to prevent future problems.

Example: Refactoring old code to avoid future crashes

Characteristics

  • Improves reliability
  • Reduces future cost

Perfective Maintenance

Enhancing software by adding new features or improving performance.

Example: Adding UPI feature in a wallet app

Characteristics

  • User-driven
  • Improves usability

Comparison Table (Very Important for Exam)

TypePurposeExample
CorrectiveFix errorsBug fixing
PreventiveAvoid future issuesCode optimization
PerfectiveImprove featuresNew module addition

Cost of Software Maintenance

Key Fact

60–70% of total software cost is spent on maintenance.

Why Maintenance Cost is High?

  • Poor documentation
  • Complex code
  • Frequent changes
  • Old technology

Cost Distribution Table

ActivityApprox. Cost
Corrective20%
Preventive25%
Perfective55%

Maintenance cost increases as software becomes older and more complex.

Software Re-Engineering

Re-engineering is the process of modifying and improving existing software to make it easier to maintain and understand, without changing its functionality.

Activities in Re-Engineering

  • Code restructuring
  • Documentation update
  • Database redesign
  • Interface improvement

Real-Life Example: Old college ERP system upgraded with:

  • Better UI
  • Clean code
  • Updated database

Advantages

  • Extends software life
  • Reduces maintenance cost
  • Improves quality

Reverse Engineering

Reverse engineering means analyzing existing software to understand its design, code, and functionality, without using original documentation.

Simple WordsUnderstanding software by looking at its code

Real-Life Example

  • Developer studies an old payroll system with no documents
  • Extracts logic from code

Uses

  • Recover lost documentation
  • Understand legacy systems
  • Support re-engineering

Difference: Reverse Engineering vs Re-Engineering (Very Important)

PointReverse EngineeringRe-Engineering
PurposeUnderstand softwareImprove software
OutputDesign & documentationBetter software
Code changeNoYes
StageFirst stepLater step

Relationship Between Reverse Engineering & Re-Engineering

Flow: Reverse Engineering ➜ Understanding ➜ Re-Engineering ➜ Improved Software

One-Page Exam Summary

  • Software behaves as an evolutionary entity
  • Maintenance keeps software usable
  • Maintenance types: Corrective, Preventive, Perfective
  • Maintenance cost is the largest cost
  • Reverse engineering = understanding
  • Re-engineering = improving

Software Configuration Management (SCM) Activities

Software Configuration Management is a systematic process to manage, control, and track changes in software throughout its life cycle.

It ensures that the right version of software is delivered to the customer.

Real-Life Example: Google Docs maintains:

  • Different versions
  • Change history
  • Who modified what and when

This is SCM in practice.

Main SCM Activities

1. Configuration Identification

  • Identifying items to be controlled
  • Examples: source code, documents, test cases

2. Configuration Control

  • Managing changes formally
  • No change is allowed without approval

3. Configuration Status Accounting

  • Recording and reporting changes
  • Tracks current version and history

4. Configuration Auditing

  • Verifying correctness of configuration
  • Ensures changes are properly implemented

SCM Activities Table (Exam Friendly)

ActivityPurposeExample
IdentificationIdentify itemsSource code files
ControlApprove changesChange request
Status AccountingTrack changesVersion log
AuditingVerify changesRelease check

Change Control Process

Change Control is a formal procedure to manage changes in software so that unauthorized or unnecessary changes are avoided.

Why Change Control is Needed?

  • Prevents chaos
  • Maintains software quality
  • Controls cost and schedule

Steps in Change Control Process

Step-by-Step Explanation

  1. Change Request: User or developer submits request
  2. Impact Analysis: Cost, time, and risk are analyzed
  3. Approval / Rejection: Change Control Board (CCB) decides
  4. Implementation: Approved change is developed
  5. Testing: Change is tested
  6. Release & Documentation: Updated version released

Real-Life Example

  • Bank requests new KYC rule update
  • Impact checked → approved → implemented → tested → released

Change Control Board (CCB)

MemberRole
Project ManagerFinal decision
DeveloperTechnical feasibility
QA TeamQuality impact
Client/UserRequirement clarity

Software Version Control

Version Control is the process of managing multiple versions of software files.

It allows developers to:

  • Track changes
  • Restore old versions
  • Work in teams safely

Why Version Control is Important?

ReasonBenefit
BackupRecover old versions
TeamworkMultiple developers
HistoryTrack who changed what
StabilityAvoid conflicts

Types of Version Control

1. Centralized Version Control

  • Single central repository
  • Example: SVN

2. Distributed Version Control

  • Each developer has full copy
  • Example: Git

Comparison Table

FeatureCentralizedDistributed
RepositorySingleMultiple
SpeedSlowerFaster
Failure riskHighLow
ExampleSVNGit

Real-Life Example

  • GitHub stores all versions of a project
  • Developers can rollback if error occurs


CASE Tools (Computer-Aided Software Engineering)

CASE tools are software tools that support and automate software development activities.

They increase productivity and reduce human errors.

Classification of CASE Tools

1. Upper CASE Tools

  • Support analysis and design phase

Examples:

  • Data Flow Diagrams (DFD)
  • UML tools

2. Lower CASE Tools

  • Support coding and testing phase

Examples:

  • Code generators
  • Debugging tools

3. Integrated CASE Tools

  • Support entire SDLC
  • Example: Rational Rose

CASE Tools Classification Table

TypeSDLC PhaseExample
Upper CASEAnalysis & DesignUML tool
Lower CASECoding & TestingDebugger
Integrated CASEFull SDLCRational Rose

Advantages of CASE Tools

  • Faster development
  • Better documentation
  • Improved software quality
  • Reduced development cost

Disadvantages

  • High initial cost
  • Training required
  • Not suitable for small projects

Real-Life Example

  • Using StarUML for designing diagrams
  • Using Eclipse IDE for coding and testing

One-Page Exam Summary

  • SCM manages and controls software changes
  • Change Control ensures authorized modifications
  • Version Control manages multiple software versions
  • CASE tools automate SDLC activities
  • Git is most popular version control system

Software Project Estimation

Software estimation is the process of predicting cost, effort, time, and resources required to develop a software project before development starts.

Why Estimation is Important?

  • Proper planning
  • Budget control
  • Timely delivery
  • Risk reduction

Real-Life Example

Before building an online shopping website, the company estimates:

  • How many developers needed
  • How much time required
  • Total project cost

Estimation of Various Parameters

Cost Estimation

Cost estimation calculates total money required for:

  • Developers’ salary
  • Hardware & software
  • Training
  • Maintenance

Simple Formula

Cost = Effort × Cost per Person-Month

Example

If effort = 20 person-months
Cost per PM = ₹40,000
Total Cost = ₹8,00,000

Effort Estimation

Effort is measured in Person-Months (PM).

1 Person-Month = 1 person working for 1 month

Example

  • 5 developers × 4 months = 20 PM

Factors Affecting Effort

  • Project size
  • Complexity
  • Developer experience
  • Tools used

Schedule / Duration Estimation

Schedule estimation predicts how long the project will take.

Formula (General)

Duration = Effort / Number of people

Example

Effort = 20 PM
Developers = 5
Duration = 4 months

Constructive Cost Model (COCOMO)

COCOMO is an algorithmic software cost estimation model proposed by Barry Boehm.

It estimates:

  • Effort
  • Development time
  • Cost

Types of COCOMO Models

1. Basic COCOMO

Estimates effort based on size (KLOC).

2. Intermediate COCOMO

Considers cost drivers (hardware, people, product).

3. Detailed COCOMO

Considers all project phases.

Software Project Categories (Very Important)

ModeDescriptionExample
OrganicSmall, simplePayroll system
Semi-DetachedMedium complexityHospital system
EmbeddedComplex, real-timeAir traffic control

Basic COCOMO Formula

Effort Equation

Effort (PM) = a × (KLOC)^b

Modeab
Organic2.41.05
Semi-Detached3.01.12
Embedded3.61.20

Development Time

Time = c × (Effort)^d

Example

Size = 10 KLOC (Organic)

Effort = 2.4 × (10)^1.05 ≈ 27 PM

Resource Allocation Models

Resource allocation means assigning people, tools, and time to project activities efficiently.

Common Resource Allocation Models

1. Waterfall-Based Allocation

  • Resources assigned phase-wise
  • Easy to manage

2. Incremental Allocation

  • Resources allocated gradually
  • Used in Agile projects

3. Rayleigh Curve Model (Important)

Rayleigh Curve Features

  • Fewer people at start
  • Maximum in middle
  • Fewer at end

Real-Life Example

  • Small team during planning
  • Large team during coding
  • Small team during testing

Resource Allocation Table

PhaseResource Level
PlanningLow
DesignMedium
CodingHigh
TestingMedium
MaintenanceLow

Software Risk Analysis

Risk is a potential problem that may affect:

  • Cost
  • Schedule
  • Quality

Types of Software Risks

Risk TypeExample
Project RiskDelay due to poor planning
Technical RiskNew technology failure
Business RiskClient cancels project

Risk Components

Risk Exposure = Probability × Impact

Example

Probability = 0.4
Impact = ₹2,00,000
Risk Exposure = ₹80,000

Risk Identification Techniques

  • Brainstorming
  • Checklists
  • Past project analysis

Software Risk Management

Steps in Risk Management

1. Risk Identification

List all possible risks

2. Risk Analysis

Analyze impact and probability

3. Risk Prioritization

Rank risks based on severity

4. Risk Mitigation

Prepare backup plans

5. Risk Monitoring

Continuous tracking

Risk Mitigation Strategies

StrategyDescription
AvoidanceChange plan to remove risk
ReductionReduce probability
TransferOutsource
AcceptanceAccept risk

One-Page Exam Summary

  • Estimation predicts cost, effort, and time
  • COCOMO is a popular estimation model
  • Rayleigh curve helps in resource allocation
  • Risk analysis identifies potential problems
  • Risk management minimizes losses