This article aims to provide a very brief introduction to Software Project Management. It is the first of a series of articles about project management. The articles include tools and templates to help you manage a software project.
Software Project Management (SPM) is the planning and leading of a temporary endeavor undertaken to produce a software product. Software Project Plan is a part of Systems (or Software) Development Life Cycle (SDLC). In a nutshell, SDLC is the process and the model used to create or evolve a software product. The SDLC starts with an idea. If the idea is feasible a project plan is initiated. Then the phases of analysis, design, code and testing are executed. The software at the end of the cycle is placed in production to be used by the end-users. There is a plethora of SDLC models from sequential to iterative to agile. We will examine these models in a later article.
A short description of each phase:
The input to this phase is the statement of work (SOW). During this phase we define the system, we break it down to sub-systems in order to fully understand what is requested. We need to involve the users of the system and gather detailed requirements. It is important to allow amble time so all the projects goals are analyzed and understood. This is the phase that we create the business requirement (BR) document.
The input to this phase is the BR document. During this phase we create the functional and non-functional requirements of the project. We desing screen mock-ups, create entity-relationships diagrams of the database, process diagrams and all needed supporting documentation. UML can be used to depict the critical part of the system. At this stage we clarify all the requirements and we make sure that we have also a table of all business rules related to the requirements. Prototypes may be created at this phase to clarify the functionality of the system. The output of this phase is a complete and detailed description of the system to be implemented.
The actual coding of the system.
Testing includes unit tests, code reviews, black box testing and user acceptance tests. We will revisit testing in a later article.
The project ends, the product is delivered to the customer. We record lessons-learned. We initiate the maintenance of the product. We archive all the projects documents.
There are two major project management methodologies. The Project Management Body of Knowledge (PMBOK) and Projects in Controlled Environments (PRINCE 2). PMBOK defines five process groups common to almost all projects: initiating, planning executing, controlling and monitoring, and closing. PRINCE2 defines eight major processes: starting a project, planning, initiating a project, directing a project, controlling a stage, managing product delivery, managing stage boundaries and closing a project.
Why is project planning important?
It is almost a certainty that poor or no planning of a project will result in problems. The CHAOS report of 2009 indicates that 68% of software projects were either challenged or failed. (Worthington, D, 2009). Project planning helps reducing the over-budgeting or over-scheduling problems.
A Software Project Plan should encapsulate all the work needed to deliver the product to the end-users. A software project as any other project has a definite start and end date. A software project is constrained by scope, quality, schedule and budget.
First we need some definitions:
Stakeholder: Any person or group of persons or organization(s) that is impacted by the project.
Scope: This can be further decomposed to Project Scope and Product Scope. Project scope defines the work to be accomplished to deliver the product. Product Scope describes the functions that define the software product. The product scope is defined in a business requirements (BR) document.
Quality: It can be defined as the percentage the software product satisfies the requirements expressed by the stakeholders.
Schedule: The chain of activities and their duration over time from start to finish of the project
Budget: The money needed to complete all the work of the project.
The constraints are interconnected, if you change one constraint it affects at least another factor. For example, if the customer increases the scope then the time to complete the project will increase and it is almost certain that the cost will increase too. We will see later on how to manage the changes to the project scope.
In the next article we are discussing the different roles in project management.
Project Management Institute(2008) A guide to the project management body of knowledge . 4th edition. Newton Square, Pennsylvania: Project Management Institute Inc
Sommerville, I (2006) Software Engineering 8th edition. Addison Wesley
Worthington, D (2009). Imagination, process failures doom software projects. SD Times