Project management in software development is the process of planning, scheduling, executing, monitoring, and delivering software projects.
The software project management is crucial to the success of a project. The main goal of software project management is to enable a group of software developers to work efficiently towards successful completion of the project.
Project Management is a discipline about planning, monitoring, and controlling software projects, identifying the scope, estimating the work involved, and creating a project schedule. Along with it is also responsible to keep the team up to date on the project’s progress and handle problems and discuss solutions.
Software project management comprises of a number of activities, which contains planning of project, deciding scope of software product, estimation of cost in various terms, scheduling of tasks and events, and resource management.
Project management helps us to understand the scope of work, risks incurred, resources required, the tasks to be accomplished, milestones to be tracked, the amount to be expended on each task, and the schedule to be followed etc.
Project Planning:
Project planning is an organized and integrated management process. The goal of project planning is to develop a plan for software development. A software plan is usually produced before the development activity begins. It describes the activities and the resources needed to complete the project successfully. The major activities of project planning are cost estimation, schedule and milestone determination, staffing and quality control plans, controlling and monitoring plans. Software project plans allow software development teams to deliver timely and high-quality software to their clients. Project planning also helps in better utilization of resources and optimal usage of the allotted time for a project. The other objectives of project planning are listed below.
- It defines the roles and responsibilities of the project management team members.
- It ensures that the project management team works according to the business objectives.
- It checks feasibility of the schedule and user requirements.
- It determines project constraints.
Several individuals help in planning the project. These include senior management and project management team. Senior management is responsible for employing team members and providing resources required for the project. The project management team, which generally includes project managers and developers, is responsible for planning, determining, and tracking the activities of the project.
Project planning comprises project purpose, project scope, project planning process, and project plan.
Project Purpose:
Software project is carried out to accomplish a specific purpose, which is classified into two categories, namely, project objectives and business objectives. The commonly followed project objectives are listed below:
· Meet user requirements: Develop the project according to the user requirements after understanding them.
· Meet schedule deadlines: Complete the project milestones as described in the project plan on time in order to complete the project according to the schedule.
· Be within budget: Manage the overall project cost so that the project is within the allocated budget.
· Produce quality deliverables: Ensure that quality is considered for accuracy and overall performance of the project.
Business objectives ensure that the organizational objectives and requirements are accomplished in the project. Generally, these objectives are related to business process improvements, customer satisfaction, and quality improvements.
Project Scope:
With the help of user requirements, the project management team determines the scope of the project before the project begins. This scope provides a detailed description of functions, features, constraints, and interfaces of the software that are to be considered. Functions describe the tasks that the software is expected to perform. Features describe the attributes required in the software as per the user requirements. Constraints describe the limitations imposed on software by hardware, memory, and so on. Interfaces describe the interaction of software components (like modules and functions) with each other. Project scope also considers software performance, which in turn depends on its processing capability and response time required to produce the output.
Project Planning Process:
The project planning process involves a set of interrelated activities followed in an orderly manner to implement user requirements in software and includes the description of a series of project planning activities and individual(s) responsible for performing these activities. In addition, the project planning process comprises the following:
1. Objectives and scope of the project
2. Techniques used to perform project planning
3. Effort (in time) of individuals involved in project
4. Project schedule and milestones
5. Resources required for the project
6. Risks associated with the project.
Project planning process consists of the following activities:
- Identification of project requirements: Before starting a project, it is essential to identify the project requirements as identification of project requirements helps in performing the activities in a systematic manner.
- Identification of cost estimates: Along with the estimation of effort and time, it is necessary to estimate the cost that is to be incurred on a project. The cost estimation includes the cost of hardware, network connections, and the cost required for the maintenance of hardware components. In addition, cost is estimated for the individuals involved in the project.
- Identification of risks: Risks are unexpected events that have an adverse effect on the project. Software project involves several risks (like technical risks and business risks) that affect the project schedule and increase the cost of the project. Identifying risks before a project begins helps in understanding their probable extent of impact on the project.
- Identification of critical success factors: For making a project successful, critical success factors are followed. These factors refer to the conditions that ensure greater chances of success of a project. Generally, these factors include support from management, appropriate budget, appropriate schedule, and skilled software engineers.
- Commencement of the project: Once the project planning is complete and resources are assigned to team members, the software project commences.
Project Plan:
A project plan helps a project manager to understand, monitor, and control the development of software project. This plan is used as a means of communication between the users and project management team. There are various advantages associated with a project plan, some of which are listed below.
- It ensures that software is developed according to the user requirements, objectives, and scope of the project.
- It identifies the role of each project management team member involved in the project.
- It monitors the progress of the project according to the project plan.
- It determines the available resources and the activities to be performed during software development.
- It provides an overview to management about the costs of the software project, which is estimated during project planning.
Software cost estimation technique:
Software cost estimation is the process of predicting the effort required to develop a software system. Cost estimation can be defined as the approximate judgment of the costs for a project. It is a process to estimate the approximate cost of the software project before the development starts i.e. it describes the approximate requirements of effort, development time and resources to complete the software project. Cost estimation is usually measured in terms of effort. The most common metric used is person months or years (or man months or years). The effort is the amount of time for one person to work for a certain period of time.
Software cost estimation is one of the crucial activities of the software development which involves predicting the effort, size and cost required to develop a software system. Without reasonably accurate cost estimation capability, project managers can’t determine how much time and manpower cost the project should take and that means the software portion of the project is out of control from its beginning; system analysts can’t make realistic hardware-software tradeoff analyses during the system design phase; software project personnel can’t tell managers and customers that their proposed budget and schedule are unrealistic. Cost estimation is one of the most challenging tasks in project management.
Cost estimation includes the process or methods that help us in predicting the actual and total cost that will be needed for our software and is considered as one of the complex and challenging activity for the software companies. Their goal is to develop software which is cheap and at the same time deliver good quality. Software cost estimation is used basically by system analysts to get an approximation of the essential resources needed by a particular software project and their schedules. Important parameters in estimating cost are size, time, effort etc.
Techniques available for cost estimation:
1. Empirical Estimation Technique
2. Heuristic Technique
1. Empirical Estimation Technique:
Empirical estimation techniques are based on making an educated guess of the project parameters and common sense. While using this technique, prior experience with development of similar project is helpful. These techniques are based on the data collected from a previously implemented project and also based on some guesses as well as assumptions. This technique takes into account the size of the software in order to provide an estimate of the amount of work required.
Two popular empirical estimation techniques are: Expert judgment technique and Delphi cost estimation.
Expert Judgment Technique:
It is one of the most widely used estimation techniques. In this technique, an expert makes an educated guess of the problem size after analyzing the problem thoroughly. This technique captures the experience and the knowledge of the estimator who provides the estimate based on their experience from a similar project to which they have participated. Usually, the expert estimates the cost of the different components (i.e. modules or subsystems) of the system and then combines them to arrive at the overall estimate.
Shortcomings of Expert judgment:
1. Outcome is subject to human errors and individual bias.
2. The expert may overlook some factors inadvertently.
3. Expert may not have relevant experience and knowledge of all aspects of the project
Delphi Cost Estimation:
This technique tries to overcome some of the shortcomings of the expert judgment technique. Delphi cost estimation is carried out by a team comprising of a group of experts and a coordinator. The coordinator provides each estimator with a copy of the software requirements specification (SRS) document and a form for recording his cost estimate. Estimators complete their individual estimates and submit them to the coordinator. In their estimates, the estimators mention any unusual characteristic of the product which has influenced their estimation.
The coordinator prepares the summary of the responses of all the estimators, and also includes any unusual fact noted by any of the estimators. The prepared summary is distributed to the estimators. Based on this summary, the estimators re-estimate. This process is iterated for several rounds. However, no discussion among the estimators is allowed during the entire estimation process. After the completion of several iterations of estimations, the coordinator prepares the final estimate.
2. Heuristic Technique:
Heuristic Techniques assume that the relationship among the different project parameters can be modeled using suitable mathematical expression. Once the basic parameters are known, the other parameters can be easily determined by substituting the value of the basic parameters in the mathematical expression.
Different heuristic estimation models can be divided into two classes:
1. Single variable model
2. Multivariable model
Single Variable Estimation Models:
It provides a means to estimate the desired characteristics of a problem, using some previously estimated basic (independent) characteristic of the software product such as its size.
A single variable estimation model takes the following form:
Estimated Parameter=c1*ed1
Here, e is a characteristic of the software which has already been calculated.
Estimated parameter is the dependent parameter to be estimated. The dependent parameters to be estimated could be effort, duration, staff size etc.
c1 and d1 are constants. The values of the constants c1 and d1 are usually determined using data collected from past projects (historical data).
The COCOMO modelis an example of Single Variable Estimation model.
Multivariable Cost Estimation Model:
A multivariable estimation model takes the following form:
Estimated Resources=c1*e1d1 + c2*e2d2 + …
Where e1, e2, … are the basic (independent) characteristics of the software already estimated. c1, c2, d1, d2, are constants.
Multivariable Estimation Models are expected to give more accurate estimate compared to the Single Variable Models, since a project parameter is typically influenced by several independent parameters. The independent parameters influence the dependent parameter to different extents. This is modeled by the constants c1,c2,d1,d2…… Values of these constants are determined from historical data.
The Intermediate COCOMO Model is an example of Multivariable Cost Estimation Model.
COCOMO Model:
COCOMO (COnstructive COst estimation MOdel) is a software cost estimation model proposed by Barry Boehm in 1981. It is one of the most popularly used software cost estimation models i.e. it estimates or predicts the effort required for the project, total project cost and scheduled time for the project
According to the Boehm any software development project can be classified into one of the following three categories based on the development complexity:
1. Organic
2. Semi-detached
3. Embedded
Boehm’s definition of organic, semidetached, and embedded systems:
1. Organic:
A development project can be considered of organic type, if the project deals with developing a well understood application program, the size of the development team is small, and the team members are experienced in developing similar types of projects.
2. Semidetached:
A development project can be considered of semidetached type, if the development team consists of a mixture of experienced and inexperienced staff. Team members may have limited experience on related systems but may be unfamiliar with some aspects of the system being developed.
3. Embedded:
A development project can be considers to be of embedded type, if the software being developed is strongly coupled to hardware, or if a software project developed within a set of tight hardware, software and operational constraints (e.g., flight control software for aircraft).
According to Boehm, software cost estimation should be done through three stages:
1. Basic COCOMO Model
2. Intermediate COCOMO Model
3. Complete COCOMO Model
Basic COCOMO Model:
Basic COCOMO can be used for quick and slightly rough calculations of Software Costs. The basic COCOMO model gives an approximate estimate of the project parameters. The basic COCOMO estimation model is given by the following expressions:
Effort = a1 × (KLOC)a2 PM
Tdev = b1 × (Effort)b2 Months
Where,
· KLOC is the estimated size of the software product expressed in Kilo Lines of Code,
· a1, a2, b1, b2are constants for each category of software products,
· Tdev is the estimated time to develop the software, expressed in months,
· Effort is the total effort required to develop the software product, expressed in person months (PMs).
Intermediate COCOMO model
Intermediate COCOMO model is an extension of the Basic COCOMO model which includes a set of cost drivers into account in order to enhance more accuracy to the cost estimation model as a result.
The basic COCOMO model assumes that effort and development time are functions of the product size alone. However, a host of other project parameters besides the product size affect the effort required to develop the product as well as the development time. Therefore, in order to obtain an accurate estimation of the effort and project duration, the effect of all relevant parameters must be taken into account. The intermediate COCOMO model recognizes this fact and refines the initial estimate obtained using the basic COCOMO expressions by using a set of 15 cost drivers (multipliers) based on various attributes of software development. In general, the cost drivers can be classified as being attributes of the following items:
- Product: The characteristics of the product that are considered include the inherent complexity of the product, reliability requirements of the product, etc.
- Computer: Characteristics of the computer that are considered include the execution speed required, storage space required etc.
- Personnel: The attributes of development personnel that are considered include the experience level of personnel, programming capability, analysis capability, etc.
- Development Environment: Development environment attributes capture the development facilities available to the developers. An important parameter that is considered is the sophistication of the automation (CASE) tools used for software development
Complete COCOMO model
A major shortcoming of both the basic and intermediate COCOMO models is that they consider a software product as a single homogeneous entity. However, most large systems are made up of several smaller sub-systems. These sub-systems may have widely different characteristics. For example, some sub-systems may be considered as organic type, some semidetached, and some embedded. Not only that the inherent development complexity of the subsystems may be different, but also for some subsystems the reliability requirements may be high, for some the development team might have no previous experience of similar development etc. The complete COCOMO model considers these differences in characteristics of the subsystems and estimates the effort and development time as the sum of the estimates for the individual subsystems. The cost of each subsystem is estimated separately. This approach reduces the margin of error in the final estimate