Software Project Management
Definition and Overview
Software Project Management involves the planning, monitoring, and control of the people, process, and events that occur as software evolves from a preliminary concept to full operational deployment. It is essential for avoiding project failure, as seen in various high-profile case studies.
The Management Spectrum (The 4 P’s)
Effective project management focuses on four critical factors:
- People: This includes stakeholders such as senior managers, project managers, practitioners, customers, and end-users. Success depends on team factors like the difficulty of the problem, team lifetime, and the degree to which a project can be modularisation.
- Product: Before planning, managers must establish the product scope (context, information objectives, and performance) and decompose the problem into manageable pieces.
- Process: This involves a set of framework activities—communication, planning, modelling, construction, and deployment—supported by milestones and quality assurance points.
-
Project: This is the overall approach to maintaining momentum, tracking progress, and making smart decisions throughout the life cycle.
-
Start on the right foot
- Maintain momentum
- Track progress
- Make smart decisions
- Conduct a postmortem analysis
Organisational Paradigms
- Closed Paradigm
- Open Paradigm
- Random Paradigm
- Synchronous Paradigm
Case Studies of Project Failure
Analysing past failures helps identify common project management pitfalls:
- FBI Virtual Case File System (2005): Abandoned after $170 million due to constant requirement changes, lack of clear planning, and poor communication.
- Denver International Airport Baggage System: Failed during testing because requirements kept changing, features were added late, and there was a lack of incremental development.
- Healthcare.gov Launch: Experienced frequent crashes because too many contractors worked independently, there was no end-to-end testing, and team coordination was poor.
The W5HH Principle for Project Planning
Barry Boehm proposed seven questions that serve as a foundation for project planning:
- Why is the system being developed?.
- What will be done?.
- When will it be done?.
- Who is responsible for a function?.
- Where are they located organizationally?.
- How will the job be done technically and managerially?.
- How much of each resource is needed?.
Software Measurement and Metrics
Metrics are used to provide insight into the software process and the project.
Types of Measures
- Direct Measures: Include costs and human effort.
- Indirect Measures: Include functionality, quality, complexity, efficiency, and maintainability.
Hierarchy of Metrics
- Product Metrics: Private to individual practitioners; these are often combined to create project metrics.
- Project Metrics: Used by a software team to assess quality on an ongoing basis and minimize development schedules by avoiding delays.
- Process Metrics: Consolidated from project metrics to provide long-term improvement for the software organization as a whole.
Specific Metrics Categories
- Function-Based Metrics (Function Points): Basically predicting the size of resultant product. A means for measuring the functionality delivered by a system. These are calculated by counting external inputs, outputs, inquiries, internal logical files, and external interface files.
- Number of external inputs - Originates from a user or another application to your application
- Number of external outputs - Each external output is derived data within the application that provides information to the user - reports, screens, error messages etc.
- Number of external inquiries - An online input that results in generation of some immediate software response in form of output
- Number of internal logical files - Each internal logical file is a logical grouping of data that resides in application
- Number of external interface files - Each external interface file is a logical grouping of data that results external to the application but provides information that may be of use to the application.
Step 1: Unadjusted Function Points (UFP)
Sum of (Number of elements $\times$ Complexity Weight) for the 5 categories: - External Inputs (I) - External Outputs (O) - External Inquiries (E) - Internal Logical Files (F) - External Interface Files (N)
$$UFP = (I \cdot w_I) + (O \cdot w_O) + (E \cdot w_E) + (F \cdot w_F) + (N \cdot w_N)$$
Step 2: Complexity Adjustment Factor (CAF)
Based on the sum of 14 influence factors ($\sum F_i$): $$CAF = 0.65 + 0.01 \left( \sum_{i=1}^{14} F_i \right)$$
Step 3: Final Function Point
$$FP = UFP \times CAF$$ https://www.geeksforgeeks.org/software-engineering/software-engineering-functional-point-fp-analysis/
- Metrics for Specification Quality
$$n_r = n_f + n_{nf}$$
$$Q_1 = n_{UI} / n_n$$ $$Q_2 = n_u / (n_i * n_s)$$ - Metrics for the Design Model: These evaluate structural complexity, data complexity, and overall system complexity.
Structural Complexity ($S_i$): Relates to the square of the Fan-out. $$S_i = f_{out}^2(i)$$
Data Complexity ($D_i$): Relates to the number of variables $v(i)$ per interface. $$D_i = \frac{v(i)}{f_{out}(i) + 1}$$
Total System Complexity ($C_i$): The combined metric for the design model. $$C(i) = S(i) + D(i)$$ - Metrics for Source Code (Halstead’s Theory): These use the number of distinct operators and operands to measure program length, volume, level, and effort.
Vocabulary: $n = n_1 + n_2$ Total Size: $N = N_1 + N_2$
Calculated Length ($N$): $$N = n_1 \log_2 n_1 + n_2 \log_2 n_2$$
Volume ($V$): $$V = N \log_2 (n_1 + n_2)$$
Difficulty ($D$): $$D = \frac{n_1}{2} \times \frac{N_2}{n_2}$$
Effort ($E$): $$E = V \times D$$ - Metrics for Maintenance (Software Maturity Index): The SMI provides an indication of product stability by tracking the number of modules added, changed, or deleted in a release.
$$SMI = M_t + (F_c + F_a + F_d) \space / \space M_t$$