Software Project management Tools and Techniques


This article describes a very simple approach to the management of software projects. The method consists of three phases; Problem statement, Design, Planning and Execution each of which is described in details.


Problem statement

State in a document the objective of the project. This includes a description of the final goal from technical point of view. The problem statement also includes a description of various technical and non technical constraints and requirements. In some cases, the project manager can use insight from expert team members in order to clarify certain points. However, the problem statement is mainly the task of the project manager. The manager needs to understand the problematic so that he/she can expose it clearly to the rest of the team. The manager constitutes the problem statement document by discussing with the business unit and/or directly with the clients.


Design

The solution for the problem is described in details using informal language as well as formal methods if needed (ASN.1 structures, state-machines, UML, etc…) The design of a solution is the task of the whole team. The project manager's role is to lead the investigation and decide what goes into the final design document. The editing of the design document can be delegated to team members. It is desirable that the design document follows a common layout such as IETF Internet drafts or custom made formats. This allows better management and better collaborative editing of the design documents.


Planning


Choice of tools

Tools for scheduling, implementing, monitoring and communication need to be carefully chosen. The project manager must make sure that the features set of the chosen tools must support the various tasks involved in project planning. Tools that provide inter-connection between different project management tasks are preferred because they facilitate the planning and execution process. For example, a task assignment application with an interface to the messaging system that can issue e-mails to notify developers is preferable to applications that do not support such feature.

Tools must be chosen for the following tasks :

  • Text communications : Usually an e-mail system. In most organizations an e-mail system is already established. The project manager may want to create a mailing list for better group communications.
  • Documentation : Online read/write repository where documents can be published. This can consist in a Wiki or an HTTP/FTP repository
  • Build environment : If the project involves compiling and building from source code, the tools for automating the build must be specified. Such tools may include GNU autotools, Makefiles, MSVS, Eclipse, etc…
  • Scheduling : Scheduling tools allow the project manager as well as team member to keep track of time-frames and deadlines. The project manager needs scheduling tools to assign tasks to manage human resources and to inter dependence and time frames for different tasks. Usually tools that allow creation of Gantt charts are used for this purpose. For team members, digital calendars are very important to keep track of deadlines (Checkout Planner for an open-source alternative).
  • Bug/Issue tracking : This can consist on manually maintained sheets. Online issue tracking system can also be used, BugZilla, GNATS are two of the most popular ones.
  • Reporting : Reporting advancement from team members to the project manager is essential in order to ensure adequate monitoring of the overall progress of the project. The project manager needs at least to specify a report format and the medium through which the report will be sent. A common practice is to have each member send his/her report by e-mail.

Task definition and assignment

The project is divided into tasks and time resources for each task are estimated. Using Gantt charts, inter-dependence between tasks is clarified. Finally tasks are assigned to team members according to their abilities. Tasks do not need to be assigned to individual team members, for example, a large task involving the development of a new library can be assigned to two developers who will then decide between them who will implement which part of the library.


Execution


Monitoring

Monitoring consists in keeping informed of the progress of each task. The progress can be tracked using periodic reports from team members. The progress on each task must be logged in order to have a static reference that can be used at any time without the need to refer to reports from team members. Besides reports, the manager can read the code and view CVS logs to gather more information about the progress on a task. To facilitate the use of source control systems such as CVS for monitoring, it is useful to enforce a log message format that includes reference to project tasks (see ”Howto Integrate CVS with GNATS”). This way, the project manager can easily view logs related to a particular task. This however requires the addition of tasks or TODOs to the issue tracking system.


Source code management

It is important to manage the source code in a manner that allows simultaneous development of different features while maintaining code stability and reducing conflicts. For this purpose, concurrent version control systems such as CVS feature what is called branches. A branch is a copy of the project source tree that the developer can work on without interfering with other developers. When a file is modified by the developer on the branch, other developers will not see the changes and vice vesa. Branches allow thus the development of new features that may cause the project's code to become unstable during the initial development phase. Once the feature becomes stable on the branch, it is merged to the main source tree and becomes part of the main branch. Branching and merging should be performed or closely monitored by the project manager in order to ensure a smooth progress (see Release engineering with CVS).


Bug/Issue management

Throughout the project life and even during the initial stages, technical issues may arise. To address these issues all through the project's development process, a clear issue management strategy must be devised. As mentioned previously, there exist several tools for managing issues. Tools such as BugZilla and GNATS have different interfaces for inputting and querrying a databse of bugs. Moreover these tools can be interfaced with the source control system (such as CVS) to allow tracking of bug resolution at the source code level (see Howto Integrate CVS with GNATS). Monitoring e-mail discussions can also be helpful for following progress on particular issues. To make this task easier, e-mail communications can be linked to the issue tracking system (see and ”Roundup e-mail interface: howto add/update issues by e-mail”).


Useful links



Labels: Wireless Internet Security Coding Network Monitoring

Comment

Enter your comment (wiki syntax is allowed):
GRBXU

Wireless Internet Security Performance RADIUS server Wireless Internet Security Performance RADIUS server