Software Engineering Principles and Practices / Software Project Management

Project Planning

In Software Engineering, Project Planning is the first step of the project management process. It involves defining the scope, estimating the resources required, and creating a timeline. Without a solid plan, projects suffer from "scope creep" (growing out of control) or miss their deadlines and budgets.


🔒 The Core Planning Activities

Planning is an iterative process that focuses on four major questions:

  1. Scope: What exactly are we building? (And what are we not building?)

  2. Estimation: How much effort, time, and money will it cost?

  3. Scheduling: When will each task be finished?

  4. Risk Management: What could go wrong, and how do we handle it?


🧮 Estimation Techniques

Estimating software is notoriously difficult because you are building something that has never existed before. Engineers use several methods:

  • COCOMO (Constructive Cost Model): An algorithmic model that uses a formula based on the number of lines of code or function points to estimate effort.

  • Expert Judgment: Experienced lead developers estimate based on similar past projects.

  • Delphi Technique: A group of experts provides estimates anonymously, then discusses the results until they reach a consensus.

  • Function Point Analysis: Estimating based on the "functionality" the software provides (inputs, outputs, queries) rather than lines of code.


⏱️ Scheduling Tools

Once you know the tasks, you need to map them to a calendar. There are two industry-standard tools for this:

1. Gantt Charts

A horizontal bar chart that shows the start and finish dates of several elements of a project. It is excellent for seeing the timeline at a glance.

2. PERT/CPM (Network Diagrams)

PERT (Program Evaluation Review Technique) and CPM (Critical Path Method) show the dependencies between tasks.

  • The Critical Path: The longest sequence of tasks that must be finished on time for the entire project to finish on time. If a task on the critical path is delayed by one day, the whole project is delayed by one day.


⚠️ Risk Management

A plan that doesn't account for risks isn't a plan—it's a wish.

  • Risk Identification: "What if the lead developer quits?" "What if the client changes the requirements mid-way?"

  • Risk Mitigation: "We will document all code so a new developer can take over" or "We will use an Agile process to handle changing requirements."


📊 The Project Management Triangle

Every plan is a balance of three constraints. If you change one, the others must change to keep the triangle balanced:

  1. Scope: The features being built.

  2. Time: The deadline.

  3. Cost: The budget and resources.

💡 The Golden Rule: You can't increase the Scope without also increasing the Time or the Cost.