User:LyraDin

Software Project Scheduling

Software Project Scheduling
1. Software Project Scheduling

1.1. Definitions The objective of software project scheduling is to create a set of engineering tasks that will enable to complete the job in time.

When a network of software engineering tasks is developed, there can be assigned responsibilities for each task, their execution can be tracked and controlled, and also there can be adapted the risks if necessary. Building of large software systems usually involves a large number of interdependent tasks, which are difficult to understand and manage without a schedule. The progress of a software project can not be evaluated in practice without a schedule.

The steps for performing project scheduling, after effort and size estimation, include allocation of effort and duration to each task and design of a task (activity) network to enable the team to meet the established delivery deadline.

1.2. Principles of Software Project Scheduling

- compartmentalization: the project must be decomposed into manageable activities and tasks;

- inter dependency: the relationships between the tasks have to		be established because some activities will depend on other, while other activities may occur independently;

- time allocation: each task must be allocated a number of time units, also possibly a start date and a completion date;

- effort validation: every project has a defined number of staff;

- responsibilities: every task should be given to a specific member;

- outcomes: every task should have a defined result;

- milestones: every task should be associated with a milestone. 2. People-Work Relationship

The People-Work Relationship can be used to perform scheduling.

The relationship between the number of people working on a software project and the overall productivity is not linear.

Example: Let assume that 4 software engineers are available for a project,and each of them is capable of producing 5000 LOC/year

Suppose that the productivity is reduced by 250LOC/year for each Communication path between the engineers, that is: 20000 – ( 250 * 6 ) = 18500 LOC/year which is 7.5% less

Consider that 2 additional engineers join the team when there are 2 months remaining to delivery, then the productivity of the new staff is: (5000/12 )* 2 * 2 = 840 * 2 = 1680 LOC/year However, the number of communication paths increases to 14 Therefore we will have: 20000 + 1680 – (250*14 ) = 18810 LOC/year

The relationship between the estimated software project size and the productivity of the software specialists is:

E = LOC3 / ( P3 * t4 )

where: 	E is effort [person-years] LOC means lines of code P is productivity [LOC/year] t is project duration

This equation implies that the duration can be extended for reducing the number of engineers necessary for project development. Example: Let assume that a complex software project of size LOC=33000 is given for development by specialists, each with productivity 10000 LOC/year.

Then, the project effort for developing this project with a deadline for completion 1.45 years may be calculated as follows:

E = ( 330003 ) / (( 10000 3 ) * ( 1.454 )) = 8.12

However, if the deadline is extended to 1.75 years, the number of required people may be reduced to 4 because:

E = ( 330003 ) / (( 10000 3 ) * ( 1.754 )) = 3.8

3. Defining a Task Network

3.1 Task Set Selection

A task set is a collection of software engineering tasks, milestones and deliverable that must be accomplished to complete the project.

3.2 Development of a Task Network

A task network, called also activity network, is a graphic representation of the task flow of a project.

It depicts the major software engineering tasks from the selected process model arranged sequentially or in parallel. Consider the task of developing a software library information system. The scheduling of this system must account for the following requirements (the sub tasks are given in italic): - initially the work should start with design of a control terminal (T0) class for no more than eleven working days; - next, the classes for student user (T1) and faculty user (T2) should be designed in parallel, assuming that the elaboration of student user takes no more than six days, while the faculty user needs four days; - when the design of student user completes there have to be developed the network protocol (T4), it is a sub task that requires eleven days, and simultaneously there have to be designed network management routines (T5) for up to seven days; - after the termination of the faculty user sub task, a library directory (T3) should be made for nine days to maintain information about the different users and their addresses; - the completion of the network protocol and management routines should be followed by design of the overall network control (T7) procedures for up to eight days; - the library directory design should be followed by a sub task elaboration of library staff (T6), which takes eleven days; - the software engineering process terminates with testing (T8) for no more than four days. 4. Timeline Charts

Timeline charts, or also called Gantt charts, are developed for the entire project, for tracking and control of all activities that need to be performed for project development.

The timeline chart is a kind of a table with the following fields: - the left hand column contains the project tasks - the horizontal bars indicate the duration of each task - the diamonds indicate milestones