360 likes | 405 Views
Planning and Estimating Development Projects. I. Planning: Where to Begin?. Determine the required activities. work breakdown structure Determine the sequence of activities. Estimate time required for each task. Allocate staff and resources to each task.
E N D
I. Planning: Where to Begin? • Determine the required activities. • work breakdown structure • Determine the sequence of activities. • Estimate time required for each task. • Allocate staff and resources to each task. • Document the schedule (e.g., CPM network or Gantt chart).
Work Breakdown Structure • Hierarchical list of tasks required to complete a system • Usually based on chosen systems development methodology • Rapid Application Development (RAD) with IEF (TI methodology) • Structured Analysis & Design • etc.
Identifying Activities: 3 Approaches • Checklist: List of tasks in methodology • effective for small, low-risk projects • quick & easy but ... emphasizes process, not product • Matrix: Development stage X system component • effective for small, low-risk projects but confusing for novice developers • allows flexibility; no preset sequence of activities
Identifying Activities.... • Product Delivery: useful for large or high-risk projects • partition system into smaller deliverables • subsystems • data capabilities: acquisition, storage, manipulation, retrieval, distribution • use checklist or matrix to identify activities for each phase
Sequencing Tasks • Task dependencies • Task A provides an input to Task B • Concurrent tasks • Task A does not provide any inputs to Task B • Number of concurrent tasks cannot exceed number of development team members • Use CPM network to determine and model sequence and concurrency.
Project Mgmt Tools & Techniques • Planning and Scheduling Techniques: PERT, CPM Network, Gantt Chart • Estimating Techniques: Sum-of-tasks, Function Point Analysis, 3xProgramming, COCOMO • Measurement Techniques: Software metrics, i.e., function points, feature points, complexity metrics, cost per defect, cost per KLOC, etc.
Project Effort vs. Project Schedule • EFFORT: the total time required to complete a project assuming • one person only • all tasks must be performed sequentially • Equal to sum of times for all project tasks • SCHEDULE: the minimum time to complete a project assuming • multiple people • concurrent tasks • Equal to sum of times for critical path tasks SCHEDULE = EFFORT if all tasks must be performed sequentially!
Two Techniques for Project Planning • CPM Network: graphic representation of tasks, time allotted to each, and task dependencies • good tool for planning and monitoring • Gantt Chart: a more text-based planning technique; shows tasks, time and personnel allotted to each, and task dependencies (though not as clearly as the CPM) • good tool for planning, monitoring, and coordinating (can include float time and assignment of alternative personnel
Critical Path Method (CPM) Network 2 D 3 E 2 A 2 B 1 C 1 S 1 3 E F 2 G 1 4 Critical path = A + D + E = 7 weeks Minimum schedule = 7 weeks Slack time: B & F can work on D; C can work on D, E, or G; G can work on E.
Strategies for Reducing Schedule • Transfer workers from slack paths to critical path. • slack: activity not on critical path that requires less time than a concurrent activity on the critical path • critical path: every activity on this path must begin and end on time to meet the project schedule
Strategies .... • Allocate more money, resources, and personnel to the critical path (e.g., hire consultants, buy development tools) • Perform more tasks concurrently (if possible!!!)
Allocating Staff • Roles: • Technical Staff: Project manager, architect, systems analysts, programmer analysts, data analysts, programmers, DB administrator, QA, technical writers • End-User Staff: Business analyst, trainers, end-users on development team, user-manager, user-sponsor, steering committee, administrative aides
Allocating Resources • Resources: • Human: define title, name, allocation to project (%), rate, start and end dates; define external consulting needs • Technical: define hardware needs and usage; ensure availability of software (e.g., CASE tools, 4GLs, GUI generators, etc.) • Overhead: define office space needs, communication hook-ups, supplies, travel, etc.
Issues in Resource Allocation • Two “half-people” do not equal one “whole-person.” • Match team member skills to development tasks; provide training if necessary. • Assess team member skill level and productivity.
Planning Guidelines • Keep deliverable products small. • Partition system to reduce creeping requirements, complexity, and team size (management overhead) and to maintain user interest • Manage the product, not the process. • Set product delivery points that result in sign-offs
Planning Guidelines .... • Set enough milestones for effective management. • Rule of thumb: one milestone (measurable activity) per team member per week • Prepare several plans: a general one early on, more detailed ones for each development stage as you come to it
Planning Guidelines .... • Involve the right people. • Review the plan with end-users, user-managers, and user-sponsor; with maintenance teams of systems with which the project system interfaces • Consult with technical support staff, operations management, etc. to schedule technical resources (e.g., CPU time)
II. Estimating • Sum of Tasks** • Lines of Code • Three times Programming • Life Cycle Stage Model** • COCOMO: Constructive Cost Model • Function Point Analysis**
A. Sum of Tasks • Identify all the tasks required to complete the project. • Estimate the effort required for each task. [Requires experience!!] • Sum the individual task effort estimates, giving project effort. • Determine project schedule by drawing a CPM Network model.
Example of Sum of Tasks 2 D 3 E 2 A 2 B 1 C 1 S 1 3 E F 2 G 1 4 Effort = 2 + 1 + 1 + 3 + 2 + 2 +1 = 12 weeks Critical path = A + D + E = 7 weeks Project schedule = 7 weeks
Life Cycle Stage Model .... • Estimate the effort required to complete one of the major stages, e.g., Determine Requirements. • Calculate total effort. • Distribute total effort over other activities. • Adjust for concurrent tasks.
Example of Life Cycle Stage Model • Estimate that Determine Requirements will consume 5 effort-weeks. • 5/X ~ 13/100; X = 38.5 = total effort • Specify Design: D/38.5 ~ 23/100; D = 8.85 (9) effort-weeks • Construct System: C/38.5 ~ 36/100; C = 13.9 (14) effort-weeks
C. Function Point Analysis • Defines project size in terms of the number and complexity of the functions that must be delivered. • Can be used to compare projects and to determine the relative effort to complete a project. • Best approach: Build historical database of projects and develop a model specific to your organization.
How to Perform FPA • Identify the functions to be delivered (input, output, files, queries, interfaces). • Categorize functions according to type and complexity to estimate the number of functions in each category. • Multiply each function by a complexity weight to calculate unadjusted function points (UFP).
Functions • Inputs: User inputs of data or controls. • Outputs: Distinct data or signal outputs. • Files: Number of logical data files. • Queries: User queries requiring a response. • Interfaces: Shared applications, data and control information.
Ratings Defined • Simple: minimal file accesses, few different data types, minimal user involvement. • Complex: many file accesses, many different data types, extensive user involvement.
Project Influencing Factors • Identify factors that will influence project complexity: • Data communication facilities • Distributed functions - Data volumes • On-line functions - Transaction rates • Conversion difficulty - Reusability • Performance objectives - Multiple sites • Rate from 0 (little or no difficulty) to 5 (great difficulty)
Calculating FP Value • Calculate total of all the PIF values. • Calculate Processing Complexity Adjustment (PCA) = (sum PIF * .01) + .65 • Calculate Adjusted Function Points (AFP) = PCA * UFP
Example of FPA • PCA = 14 * .01 + .65 = .79 • AFP = PCA * UFP = .79 * 291 = 230 AFP • Schedule-months = AFP .4 = 230 .4 = 9 SM • Staffing = AFP/150 = 230/150 = 2 developers • Documentation = AFP 1.15 = 520 pages • Productivity = AFP/person-month • Quality = error/AFP • Cost = $/AFP
Conclusion • Any plan is better than no plan. • A “ballpark” estimate is better than no estimate. • Planning and estimating are iterative activities. • Nonetheless ... the best-laid plans of mice and men often go astray! (R. Burns)