Software Project Management Essentials
Software Project Management Essentials
It is very necessary to perform project management activity, when computer-based systems and products are
built.
Project management involves the planning, monitoring and control of the people, process, and events that
occurs from preliminary concept to full operational deployment.
Building the computer software becomes complex if it involves many peoples working together for long
period of time. So software projects needs to be managed.
The process of software Project management includes thousands of activities which are linked with each
other. Without software project management it is impossible to develop successful and high quality software.
Software project management ensures that the software is delivered on time and is according with the
requirements.
Project management is needed because software development is always focuses on budget and schedule
constraints.
Project management involves the planning, monitoring and control of the people, process, and events that
occurs from preliminary concept to deployment.
Software engineer manages his/her daily activities by planning, monitoring and controlling technical tasks.
But the Project Manager plans, monitors and controls the work of a team of software Engineers.
The Management Spectrum :The software Project Manager focuses on the FOUR "P's" :
1. People
2. Product
3. Process
4. Project.
1. People:-
The People factor is important so that the Software Engineering institute (SEI) has developed a People
Management Maturity Model (PM-CMM), to enhance the capacity of organizations to develop complex
applications and helps to motivate the team members.
People Management Maturity Model (PM-CMM) defines the following key practice areas for Software
people :
1. Recruiting,
2. Selection,
3. Performance management,
4. Training,
5. Compensation,
6. Career development,
7. Organization and Work design, and
8. Team culture development.
If any organization follows these practices, they will achieve the high level of maturity.
2. Product (Software Application System) :
Before a Product can be planned :
1. Objectives and Scope should be established.
2. Alternative solutions should be considered.
3. Technical and Management constraints should be identified.
The Software Developer and Customer must meet to define Product Objectives and Project Scope.
Objectives identify the Overall Goals for the product, without considering how these Goals will be achieved;
Scope identifies what Functions, data and behavior the product should have.
Once, the Product Objectives and Scope are understood, the alternative solutions are identified. So the
Managers and Software Engineers will select the 'Best' solution.
The technical and management Constraints like Delivery Date, deadlines, budgetary restrictions, Personal
availability, and Technical interfaces are identified.
Without defining objectives, Scope and Considering Alternative solutions and identifying Constraints, it is
impossible to :
1. Define accurate "Estimates of Costs" and “Risk Assessment".
2. Develop a manageable Schedule that provides a meaningful indication of progress.
3. Process :
A Software Process provides the Framework from which the plan for software development can be
established.
The plan consist of :
i) A small number of Framework Activities called Common Process Framework (CPF) which are
applicable to all Software regardless of its size & complexity;
ii) A number of different Task Set which defines :Tasks, Milestones, Work Products (Deliverables)
and Quality Assurance Points.
4. Project:-
In some cases the success rate for software projects failure rate remains higher than it should be.
Why software project fail?
1. An unrealistic deadline established.
2. Changing customer Requirements.
3. An underestimate of effort.
4. Predictable and / or unpredictable risks.
5. Technical difficulties.
6. Miscommunications among Project members
7. Failure in project management
Avoiding project failure:-To avoid project failure, a software manager and software engineers must:-
a. Need a set of common warning signs.
b. Understand the Critical Success Factor (CSF) that lead to good project management.
c. Develop a common sense approach for Planning, Monitoring and controlling a project.
A Software Project Manager faces the problems at the beginning of software project because:-
1. Quantitative Project Estimates and an Organized Project Plan are required but the information is not
available at beginning.
2. Analysis of the required information takes weeks or months to complete. And a plan is needed
"immediately”!
3. Therefore, we must examine the Software Product to solve at the very beginning of the project. At a
minimum Scope of the Product must be established.
Software Scope :
The first activity of Software Manager is to determine the Scope of Software.
Software Scope is defined in terms of :-
1. Context: How does the software to be built fit into a large system?
2. Information Objective: What customer visible data objectives produced as output from the
software? What data objectives are required for input?
3. Function and Performance: What function does software perform to transform input data into
output?
Software project scope must be Unambiguous and understandable.
Also a "Statement of Software Scope" must be bounded. (That is the Constraint and / or Limitations
should be described).
For example: Cost Restrictions, Memory Size, Number of simultaneous users, maximum allowed
response time etc.
Problem Decomposition (Problem Partitioning) :
The decomposition is applied in two major areas :
1. The functionality that must be delivered.
2. The process that will be used to deliver it.
The "Divide and Conquer strategy" is used when the problem is very complex. A complex problem is
partitioned into smaller pieces so that it can be better managed. And later all these pieces are combined.
Product Functions
Text Input
File Management
Documentation
Project manager is to Estimate Resource Requirements for each metrics cell with Start and End
Dates for each Task and Work Products to be produced (delivered) for each task.
3. Process Decomposition:-
A software team member should have flexibility to choosing the best software process model.
Once the process model has been chosen, the process framework is adapted to it.
In each and every case, the generic framework is communication, planning, modeling, construction and
deployment.
A simple project might require the following work tasks.
i. Develop list of clarification issues.
ii. Meet with customer to address clarification issues.
iii. Jointly develop a statement of scope.
iv. Review the statement of scope.
v. Modify the statement of scope as required.
Above events might occur over a period or less than 48 hours.
5.2.4 The Project:-
To manage a Successful Software Project, we must understand how the problem can be avoided:-
The following are the suggestions from John Reel :-
1. Ten Signs that Indicate an Information System is in Jeopardy (failure):
i. Software People do not understand their Customers' needs.
ii. The Product Scope is poorly defined.
iii. Changes are managed poorly.
iv. The chosen technology changes.
v. Business needs changed.
vi. Deadlines are unrealistic.
vii. Users are resistant.
viii. Sponsorship is lost.
ix. The Project Team lacks people with appropriate skills.
x. Managers / Practitioners not applying best practices and lessons learned from past projects.
Project scheduling provides details like start and end date of the project, milestones, and tasks for the
project.
Project scheduling specifies the resources like people, equipment etc. required to complete the project and
dependencies of tasks of the project on each other.
An appropriate project schedule can be prepared according to the project plan.
Scheduling for software development projects can be viewed from two rather different perspectives:
i. An end date for release of a software system has already been established by customer.
ii. Rough dates have been discussed and the end date is set by the software engineering organization.
Factors affecting the software-project scheduling:
1. People-work relationships,
2. Task definition and parallelism,
3. Effort distribution, and
4. Scheduling methods.
During early stages of software project schedule is developed. This type of software project schedule
identifies all major process framework activities.
Need of Project Scheduling:
Following points describes need of project scheduling:-
1. Error tracking methods can be used for assessing the status of current performance and to
estimate efforts and duration.
2. Use an incremental process model that will deliver critical function imposed by deadline,
but delay other requested functionality.
3. Meet with the customer and explain why the deadline is unrealistic.
Project Scheduling Process:
Following fig. shows process of project scheduling:-
Advantages:
1. It provides a visual for the tasks that need to be completed.
2. It helps to maintain organization, and it helps in setting realistic frames.
3. Gantt chart is a simple and very inexpensive method.
4. These charts clearly show the decided time and work schedules for job.
5. Monitoring and control are easier and can be done within a minimum time frame and at the
lowest cost.
6. These charts can be changed and updated quickly at a lower cost.
Disadvantages:
1. For large projects having many tasks, the Gantt chart may be complex and more difficult to read.
2. A Gantt chart also requires frequent updates.
3. They do not show interrelationships and interdependence among tasks.
4. Cost implications cannot be shown in Gantt chart.
5. The shape and form of Gantt charts can differ according to the nature of software requirement.
Event Event
Activity
The PERT chart for the above set of activities is given below:-
PERT Advantages:
1. Large project planning.
2. Visible critical path.
3. It provides the project in graphical form so it is easy and simple to understand.
4. PERT provides information about the expected completion time of the project.
5. PERT describes the dependencies of one or more tasks on each other.
PERT Disadvantages:
1. It is very complicated task.
2. Prediction inaccuracies.
CPM Advantages:
1. Make dependencies visible.
2. Organize large and complex project.
3. Increase visibility of impact of schedule revision Enable the project manager to optimize
efficiency.
4. CPM provides a graphical view of the project.
5. CPM provides the critical activities in the project.
6. CPM provides how to speed up the project so that it is completed on schedule.
…
For creating a software project schedule, the planner begins with a set of task.
Duration and start date are then assigned for each task. Tasks may be assigned to individuals.
A timeline chart can be developed for the entire project. Alternatively charts can be developed for
each project function or for each individual on the project.
All project tasks are listed in the left-hand column.
A horizontal bar indicates duration of each task. When multiple bars occur at the same time it
indicates task concurrency.
The diamonds indicate milestones.
A task set is a collection of software engineering work tasks, milestones and deliverables (outcomes)
that must be accomplished to complete a project.
A task network is a graphic representation of the task flow for a project.
It is the mechanism in which task sequence and dependencies are given as input to an automated
project scheduling tool.
Individual tasks and subtasks have interdependencies based on their sequence.
A task network, also called an activity network.
A task network exactly shows how tasks take place and the sequence of them.
It depicts task length, sequence, concurrency, and dependency.
Come activities are performed concurrently so the scheduling is required for such project.
Following Fig. Describes a schematic task network for development of project.
1.1 Concept 1.2 Concept 1.3b [Link] 1.4 proof of 1.5b Concept 1.1 Concept 1.6 Concept
Scoping planning Assement concept Implement Scoping Reaction
Risk is an unexpected event or condition that produces an adverse effect during software development
process.
Risk management is a systematic process, which focuses on identification, control and elimination of
risks, which impacts the project.
Risk analysis and management are a series of steps that help a software team to understand and
manage risks.
Everyone involved in the software process - managers, software engineers stakeholders should
participate in risk analysis and management.
The basic objective of risk management is to determine the loss before risks occur and then determine
ways to prevent or avoid the adverse impact of risks on the project.
Risk management depends on the number and complexity of risks.
Definitions of Risk:-
"A possible future event that, if it occurs, will lead to an undesirable outcome". OR
"Risk is a combination of an abnormal event or failure to a system's operators, users or
environment.
Principles of Risk Management:
o Principle #1: Take a forward-looking view: Think about the risks that may arise in
the future.
o Principle #2: Integrate: A consideration of risk must be integrator I the software
process.
o Principle #3: Maintain a global perspective: View software risks within the
context of system in which it is intended to solve.
o Principle #4: Encourage open communication: If someone states a potential risk, do not
ignore it.
o Principle #5 : Emphasize a continuous process : The team must be always being
careful throughout the software process.
o Principle #6: Encourage teamwork: The talents, skills and knowledge of all team
members should be pooled when risk management activities conducted.
Purpose of Risk Management:
1. Anticipate and identify the risks.
2. Minimize the impact/damage/loss caused by risk.
3. Reduce the probability of risk.
4. Monitor risk areas for early detection.
5. Ensure management awareness of risks.
A risk may have following adverse effects:-
1. Project risks affect schedule or resources.
2. Product risks affect the quality or performance of the software.
3. Business risks affect the organization that developing the software.
Risk Management Process :
Following fig. shows risk management process. Which containing following phases:
1. Risk identification: Identify project, product and business risks.
2. Risk analysis: Assess the risks.
3. Risk planning: Draw up plans to avoid or minimize the effects of the risk.
4. Risk monitoring: Monitor the risks throughout the project.
The risk is defined as "the future harm that may arise due to some present actions".
The risk is an uncertain event or condition that, if it occurs, has a positive or negative effect on
a project's objectives.
Software risks can be internal or external. The internal risks come from risk factors within the
organization. The external risks come from out of the organization.
Objectives of Risk Management:
1. To identify and eliminate risk items before they become threats to successful software
operation or major sources of software.
2. Some form of measurement is undertaken to determine and classify the range of risks.
3. To identify areas where significant risks may exists.
The software risk management concepts are:-
1. Risk Index:
o Generally, risks are categorized into two factors:-Impact of risk events and
probability of occurrence.
o Risk index is the multiplication of impact and probability of occurrence.
o Risk index can be characterized as high, medium, or low.
o Risk index is very important and necessary for prioritization of risk.
2. Risk Analysis:
o There are quite different types of risk analysis that can be used.
o The risk analysis is used to identify the high risk elements of a project in software
engineering.
o The main purpose of risk analysis is to understand risks in better ways and to verify
and correct the risks.
3. Risk Assessment:
o Risk assessment is another important case that integrates risk management and risk
analysis.
o There are many risk assessment methodologies that focus on different types of risks.
o Risk assessment requires correct explanations of the target system and all security
features.
o The performance, cost, schedule must be defined properly for risk assessment.
Risk control concentrate on the management of risks in order to minimize their effect, so risk control
determines techniques and strategies to minimize the effect of the risks.
5.7.1 Need:-
o following points describe the need of risk control :
1. For risk-management planning: Doing the work to address each risk item.
2. For risk resolution: Producing a situation in which risk items are eliminated or
resolved.
3. For risk monitoring: Tracking the projects progress towards resolving risk items and
taking corrective action where required.
4. For risk mitigation: It is used for minimizes the impact of risks.
5.7.2 Risk Mitigation, Monitoring and Management (RMMM) :-
o An effective strategy consist of three issues :
1. Risk management and Contingency planning.
2. Risk monitoring.
3. Risk avoidance.
o If a software team adopts a proactive approach to risk, avoidance is always the best
strategy. This is achieved by developing a plan for risk mitigation.
o To mitigate this risk, possible steps are given below :
Organize project teams so that information about each development activity is
widely dispersed.
Conduct reviews of all work.
Assign a backup staff member for every critical technologist.
Define documentation standards and establish mechanisms to ensure that
documents are developed in a timely manner.
Meet with current staff to determine causes for turnover.
Once, the project commences, assume turnover will occur and develop
techniques to ensure continuity when people leave.
Mitigate those causes that are under our control before the project starts.
o In the case of high staff turnover, the following factors can be monitored:-
i. General al attitude of team members based on project pressure.
ii. Potential problems with compensation and benefits.
iii. Interpersonal relationships among team members.
iv. The availability of jobs within the company and outside it.
v. The degree to which the team has jelled.
o To monitoring these factors, a project manager should monitor the effectiveness of risk
mitigation steps.
RMMM Plan:
o A risk management strategy can be included in software project plan can be included into a
separate Risk Mitigation, Monitoring and Management (RMMM).
o This RMMM plan documents all work performed and is used by the project manager as
part of the overall project plan.
o Once, RMMM has been documented the risk monitoring and mitigation steps commence.
o Risk mitigation is a problem avoidance activity while risk monitoring is a project tracking
activity with following objectives :
i. To ensure that risk avoidance steps are defined for the risk.
ii. To collect information that can be used for future risk analysis.
iii. To access whether predicted risks occur or not.
Risk Refinement:
o As the time passes and more is learned about the project and the risk, it may be possible
to refine the risk into a set of more detailed risks which will easier to mitigate, monitor
and manage.
o One way to do this is to represent the risk in condition-transition-consequence format.
That is, the risk is stated in the following form.
o Given that <condition> then there is concern that <consequence>.
o This general condition can be refined in the following manner :
Subcondition 1: Certain reusable components were developed with no knowledge
of internal design standards.
Subcondition 2: The design standard for component interfaces may not according
to existing reusable components.
Subcondition 3: Certain reusable components have been implemented in a language
that is not supported on the target environment.
Changes during all phases of software development arise when user requirements are not understood
properly.
Some other reasons for changes are :
1. New user requirements may demand modifications of data or functions used in the
software.
2. Cost and time constraints may require the product definition to be redefined.
3. The growth in market or business may change the project priorities.
SCM is a set of activity that is applied throughout the software engineering process.
Software Configuration Management (SCM) is a software engineering discipline consisting of
standard processes and techniques used by organizations to manage the changes introduced to its
software products.
SCM is also known as software control management. SCM aims to control changes introduced to
large complex software systems.
This management covers the different activities, which are developed to :
1. Identify change,
2. Control change,
3. Ensure that change is being properly implemented and
4. Report change to others, who may have an interest.
Maintenance is a set of software engineering activities that occur after software has been
delivered to the customer and put into operation, whereas SCM is a set of activities that begin
when software project begins and terminate only when the software is taken out of operation.
Roger Pressman says that SCM is a "set of activities designed to control change by identifying
the work products that are likely to change, establishing relationships among them, controlling
the changes imposed, and auditing and reporting the changes made."
The following are few perceptions of several people about SCM in the form of definitions.
1. SCM is the art of identifying, organizing and controlling, modification to the software being
built by programming team. The goal of it is to maximize productivity by minimizing
mistakes.
2. SCM is the process concerned with the development of procedures and standard tor managing
a software system product.
3. SCM is the ability to control and manage change in a software project.
4. SCM is a set of procedure to identify, control the various work products of software project.
5. In the simplest sense, SCM is the process of controlling baseline software document and
code.
IEEE defines SCM as "the process of identifying and defining components in a system,
controlling the change throughout the life cycle, recording and reporting the status completeness
and correctness of system components".
Software Configuration Management (SCM) encompasses the disciplines and techniques of
initiating, evaluating the controlling change to software products during and after the software
engineering process.
Software project managers pay attention to the planning and execution of configuration
management, because it facilitates the ability to communicate status of documents and code as
well as changes that have been made to them.
High-quality released software has been tested and used, and making it a reusable to save
development costs.
The problems of Software project are:
1. Multiple people have to work on software that is changing.
2. More than one version of the software has to be supported;
Released systems.
Custom configured systems (different functionality).
Systems under development.
3. Software must run on different machines and operating systems.
4. Need for co-ordination.
Software configuration management do the following:
1. Manages evolving software systems.
2. Controls the costs involved in making changes to a system.
Control
Management
Quality
Cost saving
Requirement
Analysis
System
specification Design
S/W Coding
Requirement
specificationa Design Testing
nalysis specification
Source code Maintenance
Test
plans/procedures/
data Operational
system
Fig.S/W baselines
In the early days of software engineering, software configuration items were maintained as paper
documents placed in file folders or stored in metal cabinets.
This approach was problematic for many reasons:
1. Finding a configuration item from file folders was very difficult.
2. It was very difficult to determining which items were changed, when and by whom.
3. Constructing a new version of an existing program was time consuming and error prone.
4. Describing the relationship between configuration items was impossible.
Today SCI's are maintained in a project database or repository.
A repository is defined as "anything or person thought as a center of accumulation of storage
during the early history of Software engineering.
The repository was indeed a person - the programmer who had to remember the location of all
information relevant to the software project, who had to recall information when required and
reconstruct information that has been lost. Sadly, using a person as a center for accumulation and
storage is not work very well.
Today, the repository is a database that acts as a center for both repository and storage of SE
(Software Engineering) information. The role of person is to interact with the repository using
tools that are integrated with it.
Role of Repository:
o The SCM repository is a set of mechanism and data structures that allow software team to
manage change in an effective manner.
o It provides same functions like a DBMS, but in addition, the repository performs the
following functions :
1. Data Integrity: Integrity includes function to validate entries to repository, ensure
consistency among related objects and automatically perform modification when a
change to one object demands changes to objects related to it.
2. Information Sharing: Provides a mechanism for sharing information among multiple
developers and between multiple tools, manages and controls multi user access to data.
3. Tool Integration: Establishes a data model that can be accessed by many SE (Software
Engineering) tools, controls access to data and performs appropriate configuration
management functions.
4. Data Integration: Provides database functions that allow various SCM tasks to be
performed on one or more SCI's.
5. Methodology Enforcement: Define an ER model stored in the repository that implies
a specific process model for SE (Software Engineering) at a minimum. The
relationships and objects define a set of steps that must be conducted to build the
contents of repository.
6. Document Standardization: It is the definition of the objects in the database that leads
directly to a standard approach for creation of a SE (Software Engineering) document.
General Features and Contents:
o The features and contents of the repository are best understood by looking it at two
perspectives. What is to be stored in the repository and what specific services are provided
by the repository.
o A robust repository provides two different classes of services :
1. The same types of services that might be provided by any DBMS.
2. Services those are specific to the SE (Software Engineering) environment.
o A repository that serves a SE (Software Engineering) team should :
i. Integrate with process management functions.
ii. Support specific rules that govern the SCM functions and the data maintained
within the repository.
iii. Provide an interface to other SE tools.
iv. Accommodate storage of data object.
5.8.4. SCM Features :-
To support SCM, the repository must have a tool set that provides support for the following
features :
1. Versioning :
o As the project progresses, mini versions of individual work products will be created. The
repository must be able to save all of these versions to enable effective managements of
product releases and to permit developers to go back to previous versions during testing
and debugging.
o The repository must be able to control a wide variety of object types, including text,
graphics, bitmaps, complex documents and unique objects like screens and report
definitions, object files, test data and results.
o Some of these relationships are associations and some are dependencies or some are
mandatory relationships.
3. Requirements tracing :
o This special function provides the ability to track all the design and construction
components and deliverables that result from a specific requirement specification.
o It provides the ability to identify which requirement should be satisfied by any given work
product.
4. Configuration management:
o This facility keeps track of a series of configurations (changes) representing project
milestones or product releases.
5. Audit trials :
o It provides additional information about when, why and by whom changes are made.
o Information about the source of changes can be entered as attributes of specific objects in
the repository.
5.8.5. SCM Process :-
o The major objective of SCM is to determine or identify the items that collectively manage
changes in one or more items.
o SCM should also help in developing various versions of software and maintain the quality of
the software.
o This SCM process addresses some critical issues related to the software configuration
management, which are listed below:
Configuration auditing
Version control
Change control
Software Vm.n
Configuration Identification
SCI’s
Latest
Version
Deltas
Original
Version
v) Change Control:
o Change control combines human procedures and automated tools to provide a mechanism
for the control of change.
o Although many change requests are submitted during the software maintenance phase,
request for change can occur at any time during the software process.
o Change control ensures that the intermediate product is changed according to the required
changes. Various software configuration tools are used to manage change so that they a
done in a controlled manner.
o The entire change process is shown as follows :-
Need for change is recognized
Developer evaluates
Checkout SCI‟s
[Link] Process
----------------------------------------------END of chapter--------------------------------------------------------------