Project Control Panel

Project Management Tools

Like Open Workbench and Microsoft Project, Project Control Panel (PCP) is an example of a project management tool.

Here's a screen shot of Open Workbench:

A project management tool allows project managers to

1. Specify the resources needed by a project.

2. Specify the project tasks that need to be executed.

3. Generate a schedule for the project.

Project Management Concepts

A project consists of resources and tasks.

Resources

Resources can be labor, equipment, or material. A resource has a name and a daily cost.

Deliverables

A deliverable is a file (.uml, .doc, .java, .jar, .xml, etc.) or a presentation.

Task Properties

A task has a name, description, duration, start time, end time, percent completed, a list of deliverables, and a list of required resources.

A task, T, has a list of predecessor tasks that must be completed before the task can begin and a list of successor tasks that can't begin until T is completed. Note that if T1 is a predecessor of T2, then T2 is a successor of T1. Also note that if T1 and T2 are sub-tasks (see below), then they both must be sub-tasks of the same parent task.

Example:


In this diagram we have:

task4.predecessors = {task1, task2, task3}

task4.successors = {task5, task6, task7}

Note that the diagram above contains implicit forks and joins. Here's the actual diagram:

Simple and Composite Tasks

There are two types of tasks: simple and composite. (Consider using the Composite Design Pattern for this.)

A composite task has sub-tasks. In particular, a composite task has a start sub-task, and a list of final sub-tasks. Of course a sub-task can be simple or composite.

We can organize the sub-tasks of a composite task into a graph called a workflow.

Workflows are like activity diagrams but without loops, guards, effects, or choice points. Forks and joins are implicit in workflows.

Example:

In this example task1, 2, 3, and 4 are possible sub-tasks of some parent task, while sub-tasks 1, 2, 3, and 4 are sub-tasks of task2.

Main Task

The project itself can be viewed as a single composite task called main with no predecessors of successors:

Task Duration, Start Time, and End Time

The duration of a task is the number of days needed to complete the task. In the case of a simple task this is estimated when the task is created. In the case of a composite task it is computed by adding the durations of all sub-tasks on the critical (i.e., longest) path.

The start time of a task is the latest end time of its predecessors. If it has none, then it is the start time of its parent task. If it has none, then the start time is 0.

The end time of a task is its start time plus its duration:

t.endTime = t.startTime + t.duration

This will be the day that any successor tasks can begin.

Example

 

Task Schedules

A schedule is a table. Each row is headed by a day number followed by a list of the simple tasks that will be active that day.

Example

Here is a schedule for the project in the previous example:

Day

Tasks

0

task1

1

task1

2

task1

3

task2, task3

4

task2, task3

5

task2, task4

6

task2

7

task2

8

task2

9

task2

10

task2

11

task2

12

task2

13

task5

14

task5

15

task5

16

task5

17

task5

18

task5

19

 

PCP Requirements

PCP allows project managers to

add resources and tasks to a project.

edit resources and tasks.

view resources and tasks.

save and read projects to a file or database.

generate and display the task schedule.

Extra credit features:

Save and read projects to a file in ProjectML format, where ProjectML is an XML language you invent for representing projects

Save task schedules in .xls format

Display simple tasks as a directed graph (see my Graphs API for hints on this.)

Allow loops in the workflows. In other words, allow tasks to be repeatable. An example of a repeating task might be "run tests". To do this, you will need to decouple tasks from their predecessors and successors. Consider introducing a new class called something like Job. A job has predecessor and successor jobs as well as a task that will be performed.

Modify the project schedule so that rows are labeled by actual dates rather than day numbers. Allow the project manager to specify the start date from a calendar. Skip over weekends and federal holidays.

Add three JPanels to your GUI: tasks, resources, and schedule. In the tasks panel display all of the tasks using a JTree control. In the resource panel list all of the resources. In the schedule panel display the schedule using JTable. Tasks and resources should be selectable. So when the user selects a task or resource, then selects edit from a menu, automatically the selected task or resource is the one to be edited.

 

PCP Deliverables

pcp.uml (contains use cases, analysis model, and design model)

pcp.doc (RAD for PCP)

pcp.jar (executable for PCP)

PCP Tasks

Here are the PCP tasks each team must accomplish by the deadline.

References

PERT

CPM