Se Project
Se Project
Management
Specific Instructional Objectives
At the end of this lesson the student would be able to:
Explain why the functional format is not suitable for small organizations
handling just one or two projects.
Identify the important types of team structures of an organization.
Explain what is meant by egoless programming technique.
Identify the characteristics of a good software engineer.
Identify the main categories of risks which can affect a software
project.
Explain how to assess a project risk.
Identify the main strategies to plan for risk containment.
Explain what risk leverage is.
Explain how to handle the risk of schedule slippage.
Explain what is meant by configuration of a software product.
Differentiate among release, version and revision of a software product.
Explain the necessity of software configuration management.
Identify the principal activities of software configuration management.
Identify the activities carried out during configuration identification.
Identify the activities carried out during configuration control.
Identify the popular configuration management tools.
The main goal of software project management is to
enable a group of software engineers to work
efficiently towards successful completion of a project.
Contd…
5. Project Resources
(a) People
(b) Hardware and Software
(c) Special Resources
6. Staff Organization
(a) Team Structure
(b) Management Reporting
7. Project Tracking and Control Plan
8. Miscellaneous Plans
(a) Process Tailoring (b) Configuration Management
(c) Quality Assurance (d) Validation and Verification
(e) System Testing (e) Delivery, Installation & Maintenance
Project Size Estimation Metrics
The size of a program is an indicator of the effort and time
required to develop the program. In other words, the size of a
program indicates the development complexity.
Estimating the problem size is fundamental to estimating the
effort, time and cost of a planned software project.
There are several metrics to measure problem size. Each of
these metrics has its own advantages and disadvantages.
The two important metrics to estimate size are:
• Lines of Code (LOC)
• Function Point (FP)
Estimating SLOC
This metric measures the number of source instructions required to solve a
problem. A SLOC estimate of a software system can be obtained from
experience, the size of previous systems, the size of a competitor’s system,
and breaking down the system into smaller pieces and estimating the SLOC
of each piece. Putnam suggests that for each piece, three distinct estimates
should be made:
LOC as a measure of problem size has several shortcomings:
1. LOC gives a numerical value of problem that varies with
coding style.
2. LOC does not take into consideration the relative complexity
of design, coding, etc.
3. LOC measure correlates poorly with the quality and efficiency
of the code.
4. LOC penalizes the use of high-level programming languages,
code reuse etc.
5. LOC metric measures lexical/textual complexity and does not
address the more important but subtle issues of logical or
structural complexities.
6. It is very difficult to arrive at an accurate LOC estimation from
a problem specification. Therefore, the LOC metric is of little
use to project managers, at the beginning of a project.
The conceptual idea behind the FP metric is that the size of the
software product is directly dependent on the number and type
of different functions it performs. It computes the size of a
software product using five different characteristics of the
product. The FP of a given software is the weighted sum of
these five items. The weights of these five items have been
derived empirically and validated by observations over many
projects.
• External Inputs (EI)
• External Outputs (EO)
• External Inquiries (EQ)
• Internal Files (IF)
• External Files (EF)
LOC/FP (Average)
Assembly language 320
COBOL, FORTRAN 128
C language 106
C++ language 64
Visual Basic 32
Smalltalk 22
SQL 12
Graphical languages (icons) 4
Project Estimation Techniques
• Expert Judgement
• Delphi Technique
Heuristic Techniques
Heuristic techniques assume that the project parameters can be
modeled using mathematical expression. Various heuristic
estimation techniques can be divided into the following three
classes:
• Static single variable models
• Static multivariable models
• Dynamic multivariable models
Resource c1 * e c2 * e ...
d1
1
d2
2
Effort a1 * (KLOC) a2
Tdev b1 * (Effort) b2
Where
• KLOC is the estimated kilo lines of code
• a1, a2, b1, b2 are constants for different categories of
software products
• Tdev is the estimated time to develop the software in months
• Effort is the total development effort required to produce the
software product in programmer-months (PMs)
Embedded
Semidetache
d
Organic
Size
Embedded
Semidetache
d
Organic
Size
• Database part
• GUI part
• Communication part
Product
Computer
Personnel
Project
Program Volume
The program volume V = N log2 n is the minimum number of bits needed to
encode the program. Therefore, to represent n different identifiers, we need
at least log2n bits (where n is the program vocabulary). However, the volume
V varies with the programming language used.
N = n1 log2 n1 + n2 log2 n2
Experimental evidence gathered from analysis of a large number of programs
suggests that computed and actual lengths match very closely.
Example: Let us consider the following C program:
main ( )
{
int a, b, c, avg;
scanf (“%d %d %d”, &a, &b, &c);
avg = (a + b + c) / 3;
printf (“Average = %d”, avg);
}
The total number of unique operators ( n1 ) are : 12
The total number of unique operands ( n2 ) are : 11
Norden studied the staffing patterns of several R & D projects and found that
for most R & D projects, the staffing pattern can be approximated by the
Rayleigh distribution curve. The Rayleigh curve is represented by the
following equation:
K t2
E 2 * t * exp
2
td 2 * td
td
Time
Rayleigh Curve
Effect of Schedule Change on Cost
By analyzing a large number of army projects, Putnam [1978] found that the
Rayleigh curve can be used to relate the number of delivered lines of code to
the effort and the development time and derived the followed relation:
L Ck K1/3t d4/3
The various terms of this relation is interpreted as follows:
3
L
K 34 or K C1 / t 4
d
Ck t d
3
L
For the same product size, C1 3 is a constant.
Ck
From this relation, it can be observed that a relatively
small compression in delivery schedule can result in
or substantial penalty on human effort. For example, if
the estimated development time is one year, then in
order to develop the product in six months, the total
effort and the cost increases 16 times.
Jensen Model
Jensen [1984] proposed a model, very similar to Putnam model, to study the
effect of schedule compression on effort. The proposed model is applicable to
smaller and medium sized projects unlike Putnam model, which is suitable
only for large systems. The equation proposed by Jensen is as follows:
L Cte * td * K 1/ 2
Where Cte is the effective technology constant, td is the time to develop the
software and K is the effort needed to develop the software.
Scheduling
Scheduling is an important activity of project managers. In order to schedule
a project, a software project manager needs to do the following:
1. Identify the tasks needed to complete the project.
2. Determine the dependency among different tasks.
3. Establish the most likely estimates for the duration of the identified tasks.
4. Plan the starting and ending dates for various tasks.
5. Determine the critical path (The chain of tasks that determine the duration
of the project).
Several tools are currently available which can help us to figure out the
critical path in an un restricted schedule, but figuring out an optimal schedule
with resource limitations and with large number of parallel tasks is an
exponentially hard problem. Several commercial products are available for
automating the scheduling techniques, e.g. Macproject on Apple Macintosh
computers and MS-Project on personal computers.
Jan1 – Jan 15
Benefits of PERT
PERT is useful because it provides the following information:
• Expected project completion time.
• Probability of completion before a specified date.
• The critical path activities that directly impact the completion time.
• The activities that have slack time and that can lend resources to critical
path activities.
• Activity start and end dates.
Organization and Team Structures
Every software organization handles several projects. Software organizations
assign a team of engineers to handle a software project. There are a few
standard ways in which software organizations and teams are structured.
Organization Structure
There are essentially two broad ways in which a software development
organization is structured:
• Functional format
• Project format
Team Structure
Problems of different complexities and sizes require different team structures.
For effective solution, usually every organization has a standard formal team
structure. The three common formal team structures followed by most
organizations are:
• Democratic Team Structure
• Chief Programmer Team Structure
• Mixed Team Structure
Project manager
Software Engineers
Mixed Control Team Organization
• It incorporates the ideas from both democratic and chief programmer
team organization.
• In this structure, communication is limited to within a small group that is
most likely to benefit from it.
• It is suitable for very large projects.
Project manager
Software Engineers
Responsibilities of a Project Manager
Risk Identification
A project can be affected by a variety of risks. The three main categories of
risks which can affect a software project are:
• Project risks
Budgetary, schedule, personnel, resource, customer-related problems etc.
• Technical risks
Potential design, implementation, interfacing, testing and maintenance
problems. In addition, ambiguous specification, incomplete specification,
changing specification, technical uncertainty and technical obsolescence.
• Business risks
These risks include building an excellent product that no one wants, not
fulfilling budgetary or personnel commitments etc.
In order to successfully foresee and identify different risks that might affect a
software project, it is a good idea to have a company disaster list. This could
contain all the bad events that have happened to software projects over the
years. This list can be read by the software project managers in order to be
aware of the risks that could arise in a project and therefore such a disaster
list often helps to analyze typical areas of risk in a better way.
Risk Assessment
The objective of risk management is to rate each risk in two ways:
Based on these two factors, we can prioritize different risks in the following
way:
p r *s
Where p is the priority of a risk, r is the probability of the risk becoming true
and s is the severity of damage due to the risk.
If risks are prioritized in this way, then the most likely and damaging risks
can be handled first and much more comprehensive risk abatement
procedures can be designed for these risks.
Risk Containment
After the different risks of a project are assessed, steps are first initiated to
avoid or at least control the most damaging and the most likely risks.
Different risks require different containment procedures.
Configuration Identification
Any object associated with software development activity can be classified
into three main categories: controlled, precontrolled and uncontrolled.
Controlled objects are under configuration control and some formal
procedures must be followed to change them. Precontrolled objects are not
yet under configuration control but will be eventually under configuration
control. Uncontrolled objects are not and will not be subject to configuration
control. Controllable objects include both controlled and precontrolled
objects. Typical controllable objects include
• Requirements specification document.
• Design documents.
• Tools used to build the system such as compilers, linkers, parsers, etc.
• Source code for each module
• Test cases
• Problem reports
Configuration Control
Configuration control is the process of managing changes to controlled
objects. It is that part of a configuration management system that directly
affects the day-to-day operations of developers. In order to change a
module, a developer can get a copy of the module by a reserve operation.
Configuration management tool allow any one person to reserve this module
until the reserved module is restored. Thus the problems associated with
concurrent access are solved.
A B
C D
Restore
Modules
Reserve
Private Copy of C
• Items to be changed
• Description of change
• Reasons for change
• Priority of change
• Originator
CCB comments
• CR approved / rejected
• Actions needed
• Comments
Implementation information
Version
An initial release or re-release of a computer software
configuration item, associated with a complete compilation
or recompilation of the computer software configuration item.
IEEE Standard Glossary of Software Engineering Terminology
Release
The formal notification and distribution of an approved version.
Example: Configurations
Product Version Tree
Most Important Software Processes
Primitive Components of Software Change Order
Metrics: The metrics collected for each SCO are important for planning, for
scheduling and for assessing quality improvement. Change categories are of
type 0 (critical bug), type 1 (bug), type 2 (enhancement), type 3 (new feature)
and type 4 (other).
Implement – Identifies the staff hours necessary to design and implement the
resolution.
The access control facilities provided by SCCS include restrictions on the set
of individuals who can create new versions and facilities for checking
components in and out. Individual developers check out components and
modify them. After they have changed a module as required and the module
has been successfully tested, they check in the changed module into SCCS.
Assignments - 2
1. What you understand by software project management and why is it
necessary?
2. Discuss the major responsibilities of a software project managers.
3. Why is improving software product visibility important during software
development?
4. Mention five important general skills and traits of a good software
engineer.
5. What are the different categories of software according to the COCOMO
estimation model? Give examples of software products belonging to each
of these categories.
6. For the same number of lines of code and the same size of the
development team, rank the following software projects in order of their
estimated development time. Briefly mention the reason for your answer.
(i) A text editor (ii) An employee payroll system
(iii) An operating system for a new computer.
7. Assume that you have estimated the nominal development time of a
moderate-sized software product to be 5 months. You have also
estimated that it will cost Rs. 50,000 to develop the software product.
Now, the customer comes and tells you that he wants to accelerate the
delivery time by 10%. How much additional cost would you charge him
for this accelerated delivery?
8. Suppose you are developing a software product in the organic mode. You
have estimated the size of the product to be about 100,000 lines of code.
Compute the nominal effort and the development time.
9. Is it true that a software product can always be developed faster by
having a larger development team of competent software engineers?
Justify your answer.
10. What are the relative advantages of using either PERT charts or Gantt
charts in scheduling and monitoring software projects?
11. Discuss why the number of engineers required for a project cannot be
calculated as a simple division of the effort estimate (in PMs) by the
nominal time estimate (in months).
12. Indicate the important items that a software project management plan
(SPMP) document should discuss.
13. What is meant by software configuration management? Why is SCM is
crucial to the success of large software product development projects.
14. What is the relationship between software configuration management
and software maintenance?
15. List three major types of risks in a software project. Suppose you are the
project manager of a large software development project. Enumerate the
main steps you would follow to manage risks in your project.
*****
12. For the following C program estimate the Halstead’s length and volume
measures. Compare the Halstead’s length and volume measures of size
with the LOC measure.
The precedence relation Ti<={Tj, Tk} implies that the task Ti must be
completed before either task Tj or task Tk can start. The following precedence
relation is known to hold among different tasks:
T1<=T2<={ T3, T4, T5, T6} <= T7.
Draw the Gantt chart and the PERT chart representations for the project.