CIS224: Software Projects: Software Engineering and Research Methods

Software Project Management

1. The Project Management Spectrum

Project management involves the planning, monitoring and control

of the people, process, and events that occur as software evolves.

1.1. The People

- senior manager : coordinates the connection between the

business and the software professionals.

- project manager : plans, monitors, and controls the work

of a team of software engineers.

- software practitioner (engineer) : manages his day to day activities, planning, and managing technical tasks.

1.2. The Product

Product is the software project plan, which defines the tasks to be conducted, the people who are going to do the work, the mechanisms for assessing risks, controlling change and evaluating quality.

2. Organization of the Software Management Process

2.1. Beginning a Software Project

Initially objectives and scope should be established before planning.

The developer and customer meet to define the objectives and scope.

Objectives are the overall goals of the software projects.

Scope are the primary functions which the software is to accomplish.

2.2 Measures and Metrics

Project measures and metrics are taken to provide insights

into the organization of the software engineering.

The software process is measured in order to improve it.

The software product is measured in order to improve its quality.

2.3 Project Estimation - Planning requires estimates of the:

- human effort- in person-months

- chronological project duration- in calendar time

- cost

The estimation usually requires to broke the project into pieces.

In practice, past experience is often used as a guide.

3. Software Decomposition

Software decomposition includes product and process decomposition

which occur simultaneously as the project plan evolves.

3.1. Software Problem Decomposition

Software problem decomposition is usually performed according to

the divide and conquer strategy: that is, a complex problem is

partitioned in smaller problems which are easily manageable.

3.2. Software Process Decomposition

For example, the work tasks for the communication activity could be:

- review the customer request

- plan and schedule a meeting with the customer

- conduct research to propose solutions

- prepare a working document

- conduct another meeting

- jointly develop a specification

- improve the specification and make a scoping document.

4. Project Management Metrics

The software metrics are quantitative measures that enable software engineers to gain insight into the efficacy of the software process.

Software measurement is important as it helps to identify trends in the engineering process with which true improvements can be made over time, without relying on subjective judgements.

Reasons for measuring the software:

-to indicate the quality of the product

-to assess the productivity of the people

-to assess the benefits from the new methods

-to form a baseline for estimation

-to help justify the needs for new tools

4.1. Direct and Indirect Software Metrics

The direct software metrics are:

-lines of code

-memory size

-defects reported over a period of time

The indirect software metrics are:

-functionality

-quality

-complexity

-efficiency

-reliability

-maintainability

4.2. Size-Oriented Metrics

Size-oriented metrics are derived by normalizing the productivity

measures considering the size of software that has been produced.

Productivity = KLOC / person-month, where:KLOC- thousand lines of code

Quality = defects / KLOC

Cost = $ / KLOC

Documentation = pages of documentation / KLOC

4.3. Function-Oriented Metrics

Function-oriented metrics use as a normalization value

the functionality delivered by the application.

Since the functionality can not be measured directly, estimates

called function points are derived based on countable information in

the software domain and assessments of the software complexity.

Five information domain characteristics are determined as follows:

- number of user inputs: each user input provides distinct data;

- number of user outputs: each output provides different information

to the user, like reports, screens and messages;

- number of user inquiries: these are on-line inputs that require

immediate response from the software program;

- number of files: each file is counted;

- number of external interfaces: all readable interfaces are counted.

Function points are computed according to the following equation:

FP = count-total [ 0.65 + 0.01 SUM( Fi ) ]

where: count-total is the sum of all FP entries obtained

Fi - are complexity adjustment values

Productivity = FP / person-month,

Quality = defects / FP

Cost = $ / FP

Documentation = pages of documentation / FP

Example: Perform software project estimation using the FunctionPoints metric, assuming the following software information domain characteristics:

Measurement parameter / count / factor
number of user inputs / 20 / 4
number of user outputs / 15 / 5
number of user inquiries / 28 / 5
number of files / 5 / 10
number of external interfaces / 3 / 7

Suppose that the software complexity adjustment factors are as follows:

Complexity adjustment / value (Fi)
Backup and recovery / 5
Data communications / 4
Distributed processing / 2
Performance critical / 5
Existing operating environment / 3
On-line data entry / 3
Input transaction over multiple screens / 5
Master files updated on-line / 2
Information domain values complex / 4
Internal processing complex / 5
Code designed for reuse / 3
Conversion/installation in design / 4
Multiple installations / 5
Application designed for change / 5

a) Estimated number of function points

FPest = count-total [ 0.65 + 0.01 SUM(Fi) ]

FPest = 366  [ 0.65 + 0.01  55 ] = 439.2

b) Productivity of the team for 3 person-months using the derived function points

Productivity = FPest / person-month

Productivity = 439.2 / 3 = 146.4 [function points per person month]

c) Quality of this software having 5 defects using the derived function points

Quality = defects / FPest

Quality = 5 / 439.2 = 0.011 [defects per function point]

d) Software cost using the derived function points if there have been spend 3000 pounds

Cost = $ / FPest

Cost = 3000 / 439.2 = 6.83 [pounds per function point]

e) Documentation size using these function points if 100 pages have been produced

Documentation = pages of documentation / FPest

Documentation = 100 / 439.2 = 0.228 [pages per function point]