Module5 SE Notes
Module5 SE Notes
4. Configuration Management
4.1 What is SCM?
4.2 SCM Activities
4.3 Release Mechanisms
4.4 Licensing Methods
5. Software Maintenance
6. Quality Management
6.1 Quality Concepts
6.2 Quality Control & Assurance
6.3 Cost of Quality
6.4 Software Quality Assurance (SQA)
6.5 Formal Technical Reviews (FTR)
7. Quick Revision
1. Software Cost & Effort Estimation
Software estimation is the process of predicting the effort, time, cost, and resources required to develop a
software system. Accurate estimation is one of the most challenging — and most critical — activities in
software project management. Poor estimates lead to missed deadlines, cost overruns, and low-quality
products.
Before any project begins, managers and stakeholders need answers to key questions: How long will
development take? How many people are needed? What will it cost? Estimation models provide
structured, repeatable methods to answer these questions based on project characteristics and historical
data.
COCOMO was proposed by Barry Boehm in 1981. It is one of the most widely used algorithmic cost
estimation models. COCOMO estimates the effort (in person-months) and development time based on
the size of the software (measured in KLOC — thousands of lines of code). There are three progressively
detailed levels.
Where a, b, c, d are constants determined by the project mode (see table above). KLOC = thousands of
lines of code.
Project: Semi-detached mode, estimated size = 32 KLOC. E = 3.0 × (32)^1.12 = 3.0 × 40.84 ≈ 122.5
person-months. D = 2.5 × (122.5)^0.35 = 2.5 × 7.08 ≈ 17.7 months. P = 122.5 / 17.7 ≈ 7 persons required.
E = a × (KLOC)b × EAF
Product Attributes Required software reliability (RELY), Database size (DATA), Product complexity (CPLX)
Execution time constraint (TIME), Main storage constraint (STOR), Virtual machine volatility
Hardware Attributes (VIRT), Computer turnaround time (TURN)
Use of modern programming practices (MODP), Use of software tools (TOOL), Required
Project Attributes development schedule (SCED)
Each cost driver is rated as: Very Low, Low, Nominal, High, Very High, or Extra High. Ratings below
Nominal reduce effort (EAF < 1); above Nominal increase it (EAF > 1). Nominal rating = 1.00 for all drivers.
Where A is a calibration constant (~2.94), Size is in KSLOC or function points, SF is the composite scale
factor (sum of 5 scale factor ratings × 0.01 + 1.01), and EM are effort multipliers.
Proposed by Allan Albrecht (IBM) in 1979. Function Points measure the functional size of software from
the user's perspective — independent of programming language, development methodology, or
technology. FP is particularly useful when LOC cannot yet be estimated (early design phase).
Abbrev
Information Domain Value iation Description
Inputs entering the system boundary from outside (user screens, data
External Inputs (EIs) EI feeds). Each unique input is counted once. Not inquiries.
Data groups that reside OUTSIDE the system boundary but are
External Interface Files (EIFs) EIF referenced/read by the system (shared data).
0 No Influence
1 Incidental
2 Moderate
3 Average
4 Significant
5 Essential
ΣFi = sum of all 14 GSC ratings (range: 0 to 70). Therefore CAF ranges from 0.65 to 1.35.
FP = UFP × CAF
EI=3, EO=2, EQ=2, ILF=1, EIF=4 → UFP = 50 | ΣFi = 46 CAF = 0.65 + (0.01 × 46) = 0.65 + 0.46 = 1.11 FP =
UFP × CAF = 50 × 1.11 = 55.5 ≈ 56 Function Points
C 128
COBOL 91
C++ 53
Java 46
Python 33
SQL 12
The Putnam model (1978) is a dynamic multivariable model that assumes software effort is not distributed
uniformly over the development lifecycle — it follows a Rayleigh curve. The model was derived
empirically from data on hundreds of large U.S. Army software projects.
L = Ck × K1/3 × td4/3
Where: L = delivered source lines of code (SLOC), Ck = technology constant (reflects process maturity,
tools, environment; typically 610–57,314 with 2,000 being poor, 8,000 good, 11,000+ excellent), K = total
life-cycle effort in person-years, td = development time in years.
Basic COCOMO KLOC, Project Mode Effort, Time, Staff Quick rough estimates
Model Input Output Best For
Intermediate
COCOMO KLOC + 15 Cost Drivers Adjusted Effort Better accuracy early
Advanced COCOMO KLOC + SFs + EMs Phase-level effort Large complex projects
Early design,
Function Point Domain counts + GSCs FP (size measure) language-independent
Putnam (SLIM) SLOC, Ck, td Effort, team size over time Long large projects
2. Planning, Re-Planning & Software Lifecycle Management
Project planning is the activity of creating a detailed roadmap for a software project. It covers scope
definition, task scheduling, resource allocation, risk identification, and quality planning. Re-planning is the
ongoing process of revising the plan as new information becomes available.
Scope Definition
Define what the system will and will not do. Establish project boundaries, deliverables, and constraints
(schedule, budget, technology).
Estimation
Use COCOMO, FP, or Putnam to estimate effort, time, and cost. Always provide a range (best, expected,
worst case).
Risk Planning
Identify risks early. Classify by probability and impact. Develop mitigation strategies.
Scheduling
Create a work breakdown structure (WBS). Assign tasks to milestones. Use Gantt charts or PERT/CPM
networks to visualise the schedule.
Resource Allocation
Assign people, equipment, and budget to tasks. Balance workload across the team.
Quality Planning
Define quality standards, review procedures, and testing strategies up front.
Communication Planning
Define how information will flow between team members, management, and stakeholders. Frequency,
format, and responsibility for status reports.
2.2 Re-Planning
No plan survives first contact with reality unchanged. Re-planning is a routine, expected part of good
project management — not a sign of failure.
• Triggers for re-planning: scope change, requirement change, team member departure, technology
failure, discovered underestimation.
• Always baseline the original plan before revising it — baselines allow variance analysis.
• Communicate changes to all stakeholders immediately.
• Evaluate the impact on: schedule, cost, quality, and risk before committing to the new plan.
• Agile approaches (Scrum, XP) build re-planning in by design through sprints and backlog refinement.
SLCM encompasses all management disciplines applied across the complete software lifecycle — from
initial concept through development, deployment, and eventual retirement. The syllabus identifies six key
aspects:
• Planning: Establish objectives, select lifecycle model (waterfall, spiral, agile), create the project plan.
Define entry and exit criteria for each phase.
• Tracking: Monitor progress against the plan using metrics: planned vs actual effort, schedule
variance (SV), cost variance (CV), defect density. Use milestone reviews.
• Communication: Regular status reports to all stakeholders. Team meetings, code reviews, change
control boards. Clear escalation paths for issues.
• Negotiation: Manage competing constraints (scope, schedule, budget, quality). Negotiate
requirement changes and priority with customers. Document all agreed changes.
• Delivery: Release planning, deployment strategy, user training, cutover plan. Define acceptance
criteria and verify them before delivery.
• Quality Aspects: SQA plan, formal technical reviews, testing strategies, defect tracking, process
compliance audits. Post-delivery support and measurement.
3. Risk Analysis & Management
A risk is a potential problem — it might happen, it might not. Risk management is the discipline of
identifying, analysing, prioritising, and controlling risks before they become actual problems.
Conceptual definition: Risk concerns future happenings — it involves choice and the uncertainty that
choice entails.
• Uncertainty: The risk may or may not happen. 100% probable risks are called constraints, not risks.
• Loss: If the risk becomes reality, unwanted consequences or losses occur.
Who manages risks? Managers, software engineers, and stakeholders — collectively. The motto:
understand risks and take proactive measures to avoid them.
Quality Impact High — defects slip through Low — risks addressed early
Example Team scrambles after a deadline is missed Risk register created at project start
Step 2: Analyse each risk: estimate the probability it will occur and the impact if it does.
Step 4: Develop contingency plans for risks with high probability and high impact.
Project plan — schedule slips, Unrealistic delivery date, budget cuts, personnel loss,
Project Risks cost increases resource unavailability
Known Risks Discoverable by careful evaluation Unrealistic delivery date, no documented requirements
Category Threats Examples
Predictable Risks Extrapolated from past experience Staff turnover, poor communication with client
Risk identification is a systematic attempt to specify threats to the project plan. Two types of risks must be
identified:
• Generic risks — potential threats to every software project (e.g., staff turnover, unrealistic
schedules).
• Product-specific risks — risks specific to this project's technology, people, and environment.
Risk projection (estimation) rates each risk in two dimensions: the probability it will occur and the
consequence (damage) if it does. This leads to prioritisation so limited resources go where they have
most impact.
18 of 60 components may need to be re-developed. P = 0.80. Each component = 100 LOC × $14/LOC → C =
18 × 100 × 14 = $25,200 RE = 0.80 × 25,200 = $20,160
Once compiled, sort by probability × impact descending. Draw a cutoff line — risks above the line get full
RMMM treatment.
Risk refinement decompose a high-level risk into more specific sub-conditions using the
Condition-Transition-Consequence (CTC) format:
The RMMM plan may be part of the Software Development Plan or a separate document. Once written
and the project begins, risk mitigation and monitoring steps start. Large projects may have 30–40 identified
risks, each with its own RMMM entry.
• Note: RMMM steps incur additional project cost — they must be budgeted.
• Risk is not limited to development — risks can occur AFTER software is delivered to the user.
• The Risk Management Team assists the project team in defining risks, assessing impact/probability,
and tracking risks throughout the project.
• Principle 1 – Maintain a global perspective: View software risks within the context of the overall
system and the business problem it is intended to solve.
• Principle 2 – Take a forward-looking view: Think about risks that may arise in the future; establish
contingency plans.
• Principle 3 – Encourage open communication: All stakeholders and users should be encouraged
to point out risks at any time.
• Principle 4 – Integrate risk management: Integrate risk consideration into the software process
itself — not as an add-on activity.
• Principle 5 – Emphasise a continuous process: Modify identified risks as more is known; add new
risks as better insight is achieved.
• Principle 6 – Develop a shared product vision: A shared vision by all stakeholders facilitates
better risk identification and assessment.
• Principle 7 – Encourage teamwork: Pool the skills and experience of all stakeholders when
conducting risk management activities.
4. Configuration Management, Release Mechanisms & Licensing
Software Configuration Management (SCM) is the set of activities designed to control change throughout
the software lifecycle. SCM identifies, organises, and controls modifications to software. The goal is to
maximise productivity by minimising mistakes.
Change is inevitable in software projects. SCM is not the same as software support — it is a set of tracking
and control activities that begin when a software project begins and terminate only when the software is
taken out of operation.
Key Concepts:
• Configuration Item (CI): Any work product that is subject to change control: source code, data
structures, documents, test cases, build scripts.
• Baseline: A formally reviewed and agreed specification or product that serves as the basis for further
development. Changes to a baseline must follow formal change control.
• Software Repository: A database of all configuration items and their relationships. Provides version
control, access control, and audit trails.
• Version Control: Tracks every change to every CI. Enables rollback to any previous version. Tools:
Git, SVN, Mercurial.
• Change Control Board (CCB): A group that evaluates proposed changes and approves or rejects
them based on technical and business impact.
Identify all items that will be placed under configuration control. Assign unique
Configuration Identification identifiers to each CI.
Track and manage all versions and variants of each CI. Control who can change
Version Control what and when.
Verify that the software being built conforms to its specifications and that all
Configuration Auditing approved changes have been correctly implemented.
Record and report the current status of each CI — what version it is, what changes
Configuration Status Accounting have been made, who made them.
Release Management Control the creation, testing, and distribution of software releases to users.
A software release is a distribution of a specific version of the software to users. Release management
controls the timing, content, and method of each release.
• Major Release: Significant new functionality; often changes the major version number (e.g., v1.0 →
v2.0). Requires full testing cycle.
• Minor Release: Minor new features, enhancements, or non-critical bug fixes (e.g., v1.1, v1.2). Partial
regression testing.
• Patch / Hotfix: Emergency fix for a critical defect in production. Minimal testing — focused on the
specific fix.
• Alpha Release: Early internal testing release — software incomplete, may have known bugs. Tested
by in-house team.
• Beta Release: Feature-complete release given to a limited set of external users for real-world testing
before final release.
• Release Candidate (RC): A build that could become the final product if no critical bugs are found.
Undergoes final acceptance testing.
• General Availability (GA): The final, production-ready release distributed to all users.
■ Release Planning
A release plan defines: what features go into each release, release dates, testing requirements, deployment
strategy, rollback plan (if the release fails), and communication to users.
Software licensing defines the legal terms under which software may be used, copied, modified, and
distributed. Different licensing models serve different commercial and community purposes:
End User License Agreement (EULA): The legal contract between the software publisher and the end
user. It defines permitted uses, restrictions, warranties, and liability. Accepting the EULA is required before
installation or use.
5. Software Maintenance
Software maintenance is the process of modifying a software system or component after delivery to
correct faults, improve performance, or adapt to a changed environment. Studies show that 60–80% of
total software lifecycle cost is spent on maintenance.
Maintenance Challenges:
• Understanding legacy code written by others, often without documentation.
• Regression — fixing one defect may introduce another.
• Keeping documentation in sync with code changes.
• Technical debt accumulation — shortcuts taken during development compound over time.
• Difficulty estimating effort — maintenance tasks are often unpredictable.
■ Maintainability Metrics
Mean Time to Repair (MTTR): average time to fix a defect. Change Request Backlog: number of pending
changes. Defect Density: defects per KLOC. Cyclomatic Complexity: higher complexity = harder to maintain.
6. Quality Management
Quality management ensures that the software product meets defined standards and satisfies user
requirements. It encompasses quality planning, quality control, quality assurance, and process
improvement.
Factor Definition
Extent to which a program satisfies its specifications and fulfills customer mission
Correctness objectives.
Reliability Extent to which a program performs its intended function with required precision.
Integrity Extent to which access to software or data by unauthorised persons can be controlled.
Usability Effort required to learn, operate, prepare input, and interpret output.
Testability Effort required to test a program to ensure it performs its intended function.
Portability Effort required to transfer the program from one hardware/software environment to another.
Quality Assurance (QA): Auditing and reporting functions that assess the effectiveness and
completeness of quality control activities. QA is process-focused — it ensures the right process is being
followed correctly.
Variation Control: The heart of quality control. Minimise the difference between predicted and actual
resources (staff, equipment, time). Statistical process control (SPC) measures variation and drives
improvement.
The Cost of Quality includes all costs incurred in pursuing quality and in dealing with the results of poor
quality. It comprises three components:
Prevention Costs (Cost Quality planning, FTRs, test Writing a test plan, conducting design reviews, training
to avoid defects) equipment, training staff in coding standards.
Appraisal Costs (Cost In-process inspection, equipment Unit testing, integration testing, peer code reviews,
to evaluate quality) calibration, testing acceptance testing.
External Failure Costs Complaint resolution, returns, Fixing bugs after release, processing refunds,
(Found after delivery) warranty, help line emergency patches.
The earlier a defect is found, the cheaper it is to fix. Relative costs (from industry data): Design review: 1.0× |
Pre-test: 6.5× | During testing: 15× | After release: 60–100×. This justifies investing heavily in prevention and
early appraisal.
SQA is a planned and systematic pattern of actions required to ensure high quality in software. SQA
encompasses:
FTR is the most effective quality filter from a QA standpoint. Conducted by software engineers for software
engineers, it finds errors during the process before they become defects after release.
Objectives of FTR:
• Uncover errors in function, logic, or implementation.
• Verify software meets its requirements.
• Ensure software is represented according to predefined standards.
• Achieve uniformly developed software.
• Make projects more manageable.
4. Review meeting: 3–5 people, ≤ 2 hours, focused on a small portion of the work product.
6. At end: decide to (1) accept, (2) reject for major rework, or (3) accept provisionally.
4. Enunciate problem areas — don't attempt to solve every problem in the meeting.
■ Defect Amplification
Without reviews: errors from design propagate into code unchanged, then multiply in testing. With FTR: up to
75% of design errors caught during review. This prevents exponential cost amplification at each lifecycle
stage.
7. Quick Revision – Key Definitions & Formulas
CAF formula CAF = 0.65 + (0.01 × ΣFi) where ΣFi = sum of 14 GSC ratings (0–70)
Risk Exposure RE = P × C
FTR Formal Technical Review — 3-5 people, ≤2 hrs, find errors before release
Formally agreed CI that serves as basis for further development; changes via
Baseline formal change control
Version Control Tracks all changes to all CIs; enables rollback; e.g., Git, SVN