Project management is an activity trying to ensure that software development is successful. The meaning of success will differ from project to project, but it usually includes meeting the deadline, implementing the required features and meeting the budget.
Project management aims to set up an orderly process so that a project runs smoothly from inception to completion but project management is difficult because software projects run late, are over budget and fail to meet user’s requirements.
Why is a large-scale software project such a complex task?
At the start of a project, management requires the following tasks:
1) Establishing the goals of the project: what is the deadline?, what are the priorities?, is it a highly reliable software?, and so on.
2) Choosing a process model.
3) Estimation: estimating the effort required, the duration of the project and its costs.
4) Choosing appropriate methods and techniques so that they ensure that the software product attains its quality factors.
5) Setting up and organizing the team so that the members can communicate effectively, carrying out different parts of the development work.
6) Planning: Scheduling products, milestones, allocating people to the project.
As we have already defined, a process model is a model that serves as the plan or framework of the project. Individual tasks, tools and methods all fit within this skeleton of the project. We have described a number of models earlier in the book for instance, waterfall, incremental, prototyping, open source, agile methods and the unified process. The project manager can choose among these or create his own.
Similarly, the project manager needs to select a package of tools and techniques that fit within the process model. For instance, he needs to decide about the choice of the programming language(s).
Project Management usually involves monitoring and control. Monitoring tells what is happening. The control rectifies what is going wrong. In order to monitor, what is happening must be visible so that reliable information about the state of the development can be made available.
Another important task involved with project management is people management- dealing with peoples’ needs and behavior. This concerns about motivating these people from time to time.
The most recent methods recognize that a number of factors affect the required effort during the software development process. These are:
1) Size of the product
2) Difficulty of the project
3) Expertise of the developers
4) Effectiveness of tools
5) How much software can be reused from elsewhere.
It is not until requirements analysis is complete that an estimate of the effort for the required project can be made. Even then there are too many uncertainties so that it is difficult to make an accurate estimate. It is only as the project progresses, the situations become clearer and more accurate estimates can be made.
Nevertheless, it becomes necessary at times to make an initial cost estimate so that a decision can be made about feasibility of the project. This is sometimes called investment appraisal or feasibility study. An estimate of the software development cost is compared with the financial value of the benefits that will occur. If the benefits are greater than the costs, the project will go ahead otherwise it is cancelled. Sometimes an estimate is difficult to make based on a crucial decision.
Probably the best approach to cost estimates is function point analysis. It assumes that the effort required to develop a piece of software depends on what the software does that is, how many functions it implements. Function points are another name for use cases, which we mentioned at the end of chapter2. Two obvious problems arise with this approach. First, assigning the same weighting to various function points is very crude. Second, there are a wide variety of different productivity rates among developers.
What tools and methods would a project manager for a software development project select for use? How can he decide whether a particular method or tool is worth using?
Any software development organization has expertise in particular tools and methods. It has also its own standards and procedures. These are huge investments. Thus, a project manager within an organization must adhere to its local methods and standards.
If there is a scope to choose the techniques, a next step would be to establish a checklist of requirements and criteria. How important are factors such as cost, reliability, delivery date and ease of maintenance?
When evaluating a technique, a generic checklist of criteria that can be used includes the following questions:
While technical merits of development methods are important, sometimes practical considerations determine which development approach should be used. Examples are:
The project manager must create a plan that specifies:
1) The deadline.
2) Elaborate tasks.
3) Intermediate Milestones.
4) The outcomes at each stage.
5) Who is involved and when?
6) When are project reviews scheduled?
7) The dependencies between the project stages.
This plan takes into account the project plan, the total predicted effort, the tools and methods, the team organization and the expected deadline. The first important step is to identify the major activities of the project. Next, the major activities are broken down into smaller tasks and figures for efforts assigned.
The product of this planning is a detailed plan that shows all the activities that are required, the effort required for each and the dependencies among them. An example of a dependency could be the coding of a module that comes before testing it.
There are notations, diagrams and tools that could help documenting a project plan. These are:
1) Pert (Project Evaluation and Review Technique) shows activities and their interrelationships.
2) Gantt Chart shows resources (people) and what they do.
3) Microsoft Project is a software package designed to help in project planning and monitoring.
4) A spreadsheet package can be used to describe a project plan, maintaining figures about the tasks, their likely and actual durations etc.
Software is created by living, breathing people. However effective the tools and techniques, software development depends on the creativity of the developers. However well organized the team, there are informal processes at work – both individual and group. A project manager needs an awareness of these processes and needs to know what needs to be done to avoid weakening the team and what can be done to improve a team.
First, some ways in which the management can weaken a team are:
1) Show distrust of the team.
2) Overemphasize the paperwork rather than creative thinking.
3) Scatter the team members in different locations.
4) Ask team members to work on a number of different projects (functional team), rather than focusing on a particular project (project team).
5) Press for earlier delivery at the cost of reducing the quality of the software.
6) Set unrealistic deadlines
7) Break up an effective team.
Some management approaches for enhancing team activity are:
1) Emphasize the quality of the software product.
2) Plan for a number of successful milestones during the lifetime of the project.
3) Emphasize how good the team is.
4) Preserve a successful team for a subsequent project.
5) Reduce hierarchy of the team.
6) Create diversity within team members.