6.1 Software Project Planning
Software Project Planning establishes scope, effort estimation, resource allocation, risk mitigation strategies, and delivery schedules before development initiates.
6.2 Software Cost Estimation: The COCOMO Model
Developed by Barry Boehm, the Constructive Cost Model (COCOMO) estimates development effort (in Person-Months) based on estimated program size in KLOC (Thousands of Lines of Code).
Basic COCOMO Formula:
Effort (E) = a × (KLOC)b [Person-Months]
Development Time (Tdev) = c × (Effort)d [Months]
The Three Project Modes
- Organic Mode: Small teams working in familiar, in-house environments with relaxed requirements (a=2.4, b=1.05).
- Semi-Detached Mode: Medium-sized teams with mixed experience working on moderately complex systems (a=3.0, b=1.12).
- Embedded Mode: Tightly constrained, mission-critical real-time systems (avionics, medical) with rigid hardware/regulatory constraints (a=3.6, b=1.20).
6.3 Project Scheduling: Gantt Charts & PERT/CPM
Project scheduling maps activities across timelines. PERT (Program Evaluation and Review Technique) and CPM (Critical Path Method) use directed acyclic network graphs to identify dependencies and calculate the Critical Path.
The Critical Path is the longest path of dependent tasks through the network, determining the minimum possible project duration. Any delay to an activity on the critical path directly postpones the entire project completion date (zero slack/float).
Figure 6.1: PERT/CPM Network diagram showing task dependencies and durations used to identify the Critical Path.
6.4 Risk Management
Risk Management is the proactive identification, analysis, and containment of hazards that could compromise project timelines, budgets, or quality.
Figure 6.2: Continuous four-stage risk management cycle ensures risks are spotted, assessed, planned, and monitored continually.
6.5 Team Structure: Chief Programmer vs Democratic vs Hierarchical
The organizational architecture of a development team determines communication overhead and decision velocity:
- Chief Programmer Team: Centralized authority. A senior Chief Programmer writes critical algorithms and makes all architectural decisions; backup programmers and librarians handle documentation and auxiliary code. Ideal for well-defined, highly technical tasks.
- Democratic / Egoless Team: Decentralized consensus. No single permanent authority; decisions are reached collegially through peer reviews. Excellent for complex research and R&D projects.
- Hierarchical / Mixed Team: Blends structured hierarchy at high management levels with democratic agility inside sub-teams, providing scalability for multi-hundred developer organizations.