A typical software project comprises a lot of activities/processes. These activities belong to two broad categories:
- Technical activities
- Managerial activities
In software development projects, requirement analysis, design, implementation etc are the main activities while project planning and control are the managerial activities. Technical activities result in the use of various products and reports by managerial activities to determine, for example, the progress of the project. Managerial activities provide controls for technical activities.
Projects must be carefully planned. The planning process results in a project plan. When the project has started, its execution must be controlled.
For software development projects, planning usually involves:
- The determination of software scope.
- Estimations
- Prediction concerning h/w and s/w resources.
- Risk analysis(potential Risk & possible solution)
- Project scheduling
- Staff organization panning.
Project control/monitoring is a continuing activity. The managers must keep track of the progress of the project and compare actual and planned progress and cost. Although most organization have formal established mechanisms for monitoring, a skilled manager can often form a clear picture of what is going on by informal discussion with project staff.
A software development plan should be used as the driver for the project. The initial plan is not static but should be modified as the project progresses and more and better information becomes available
Project management functions
- Scheduling
- Staffing
- Overlook operations
- Appraisal
Scheduling
Scheduling is a form of planning, which is made in order to assist project teams to stick to deadlines and avoid exceeding project time lines. It involves analyzing each individual task and then assigning a suitable time limit for each activity. Scheduling usually takes a more detailed form where time lines are specified in terms of earliest start times, earliest finish times, latest start times, latest finish times, duration and slack. Scheduling projects offer many benefits to project teams.
- Provides a measure of performance in terms of time requirements.
- Ensures early identification of slow performance which could be corrected at early stages of the projects.
- Avoids delayed completions which tend to dissatisfy customers and bring penalties to the organization.
A project consists of a series of activities/task. Some activities can be carried out in parallel so order of the activities is not important. Usually however, some activities must precede some others, for example implementation must precede testing, design must precede implementation etc. As we know each activity should have a well defined beginning and end.
Activity usually requires resources such as people, computer, time and always have certain duration. Project scheduling involves the scheduling of all activities so that the workforce is optimally used.
Several techniques are available to support scheduling. The output from the scheduling process is usually a set of chats showing the work breakdown, task dependencies and staff allocation.
One of the most popular tools to represent the set of activities and their constraints rs an activity network(PERT-Project Evaluation & Review Technique)
Commonly used techniques of scheduling include:
- Gantt Charts - A form of line based chart which indicates time on one axis and activities on the other. It is easy to interpret and diagrammatically represents a basic schedule.
- Critical Path Analysis (CPA) / Program evaluation review technique (PERT) - A more complex form of scheduling which enables users to calculate slack and float times as well as deal with many varied forms of activities.
Activity network:
In many projects certain task must be finished before others can begin. If that is the case, then some form of charting which allows the dependency to be shown must be used. This is where an activity network is very useful. An activity network is one of the best way to enable a project to be viewed as an entity, revealing the logical relationships and inter dependencies between the components activities.
Critical Path
critical path is a sequence of dependent project tasks that have the largest sum of the estimated duration. It is the path that have no slack time built in. If any of these tasks fail behind schedule, the project completion date will be delayed.
Slack Time
The slack time available for any task is equal to the difference between the earliest and the latest completion times.
Note:
Task that have slack time can get behind schedule by an amount less than or equal to that slack time without having an impact on the projects final. completion date. understanding the critical path and slack resources in a project are. indispensable to the project manager Knowledge of such project parameters influences the people management decisions to be made by the project manager. Emphasis can be placed on the critical path tasks' and if necessary, resources might be temporary diverted from tasks with slack time to help get one or more critical tasks back on schedule
Like all software project management software packages' Microsoft project automatically determines a critical path and marks those bars and arrows in a predetermined color (usually red color)
Gantt Chart
A Gantt chart is a simple horizontal bar chart that depicts project tasks against a calendar. Each bar represents a named project task. The tasks are vertically listed in the left hand column. On a Gantt Chart, the horizontal axis is the calendar timeline. The popularity of Gantt charts comes from their simplicity- they are easy to learn, read, prepare and use. Gantt Chart clearly depicts the overlap of the scheduled tasks. Because system development tasks frequently overlap, this is a major advantage.
Gantt Chart Example:
Staffing
Staffing is concerned with selecting the right people into a project team, identifying their talents and skills and then assigning them to tasks which they are likely to best perform. Like any other resource the staff resource is also likely to be constrained. The project manager should attempt to do best with the team he has been provided.
In simple terms it is selecting the right individual, with the right skills for the right job/task.
Overlook Operations
Overlooking operations refers to a control mechanism which is used to identify inappropriate (poor) performance and adjust performance to suit expected standards. The process takes the following form.
Appraisal
This is the final function in a project. It involves the comparison of overall performance with initial and revised standards in an attempt to identify non-compliance situations and the reasons for such situations. The overall exercise is done in an effort to;
- Analyze the successful of the current project and determine reward schemes for those involved.
- Identify weaknesses and take corrective measures in order to improve future performance.
Project Milestones:
A milestone is an end-point of a software process activity/task (end of requirement analysis. end of detailed design, end of integration & testing etc) resulting in a formal progress report that is presented to management.
So milestones are characterized by finished Documentation. As software managers rely on documentation, milestones play a very important part in project monitoring and control. Therefore, when planning a project, a series of milestones should be established. Of course, indefinite milestones must be avoided
Milestones should be carefully planned. If they are too frequent, too much time to spent on preparing documentation. If they are infrequent, project control is difficult" Some project activities do not have to end at a milestone. Many milestones result in simple documentation, for example, a short report that integration testing has been completed.
Some milestones result in deliverable (i.e. documents/products delivered to the customer). Such milestones usually represent end points of major stages such as requirements analysis, design, implementation etc. In waterfall model of the software process, milestones can be easily defined.