software engineering (csi 321) project planning & estimation 1

29
Software Engineering (CSI 321) Project Planning & Estimation 1

Upload: zoe-naomi-hoover

Post on 19-Jan-2016

229 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Software Engineering (CSI 321) Project Planning & Estimation 1

Software Engineering (CSI 321)

Project Planning & Estimation

1

Page 2: Software Engineering (CSI 321) Project Planning & Estimation 1

Introduction

• Software project management begins with a set of activities that are collectively called project planning.

• The software project planner must estimate three things before a project begins:– How long it will take?– How much effort will be required?– How many people will be involved?

• In addition, the planner must predict the resources (h/w & s/w) that will be required and the risk involved.

2

Page 3: Software Engineering (CSI 321) Project Planning & Estimation 1

Introduction

• Software project planning encompasses five major activities –

1) Estimation2) Scheduling3) Risk analysis4) Quality management planning5) Change management planning

3

Page 4: Software Engineering (CSI 321) Project Planning & Estimation 1

Project Planning

• The overall goal of project planning is to

establish a logical strategy for controlling,

tracking, and monitoring a complex technical project.

• Why?– So that end result gets done on time, with quality!

4

Page 5: Software Engineering (CSI 321) Project Planning & Estimation 1

The Project Planning Process

• The objective of software project planning is to provide a framework that enables the manager to make reasonable estimates of resources, cost, and schedule.

• The project plan must be adapted and updated as the project proceeds.– The more you know, the better you estimate. So, update

your estimates as the project progresses.

5

Page 6: Software Engineering (CSI 321) Project Planning & Estimation 1

6

Task Set for Project Planning

1) Establish project scope2) Determine feasibility3) Analyze risks4) Define required resources

– Determine human resources required– Define reusable software resources– Identify environmental resources

Page 7: Software Engineering (CSI 321) Project Planning & Estimation 1

7

Task Set for Project Planning

5) Estimate Cost and Effort– Decompose the problem– Develop two or more estimates using size, function points,

process tasks or use-cases– Reconcile the estimates

6) Develop a project Schedule– Establish a meaningful task set– Define a task network– Use scheduling tools to develop a timeline chart– Define schedule tracking mechanisms

Page 8: Software Engineering (CSI 321) Project Planning & Estimation 1

8

Estimation

• Estimation involves determining how much money, effort, resources and time it will take to build a specific software.

• Estimation of resources, cost, and schedule for a software engineering effort requires: – Experience– Access to good historical information (metrics)– The courage to commit to quantitative predictions when

qualitative information is all that exists• Estimation carries inherent risk and this risk leads to

uncertainty.

Page 9: Software Engineering (CSI 321) Project Planning & Estimation 1

To Understand Scope ...

• Understand the customers needs• Understand the business context• Understand the project boundaries• Understand the customer’s motivation• Understand the likely paths for change• Understand that ...

Even when you understand,nothing is guaranteed!

9

Page 10: Software Engineering (CSI 321) Project Planning & Estimation 1

Software Scope

• Software scope describes:– Functions and features that are to be delivered to end-users– Data that are input and output– “Content” that is presented to users as a consequence of using

the software– Performance, constraints, interfaces, and reliability that bound

the system. • Scope is defined using one of two techniques:

1) A narrative description of software scope is developed after communication with all stakeholders.

2) A set of use-cases is developed by end-users.

10

Page 11: Software Engineering (CSI 321) Project Planning & Estimation 1

Feasibility• Once software scope is well-understood, it is necessary to

determine the feasibility of the software.• Project feasibility is important, BUT a consideration of

business need is MORE important. Why?!!?==> It does no good to build a high-tech system that no one

wants!• Feasibility study is a crucial part of the estimation process.

– A study that determines whether a requested system makes economic, technical and operational sense for an organization

– Conducted by the Project Manager– Takes place before the system is constructed

11

Page 12: Software Engineering (CSI 321) Project Planning & Estimation 1

Feasibility

• Software feasibility has four solid dimensions – 1) Technology2) Finance3) Time4) Resources

• Scoping is not enough. Once scope is understood, the software team & others must work to determine if it can be done within these dimensions. This is a crucial part of estimation process (but often overlooked).

12

Page 13: Software Engineering (CSI 321) Project Planning & Estimation 1

13

Project Resources

project

people

skills

number

location

reusable software

OTS components

full-experience components

new components

part.-experience components

environment

hardware

software tools

network resources

Page 14: Software Engineering (CSI 321) Project Planning & Estimation 1

Resource Estimation • The software project planner must conduct an estimation of

the resources required to accomplish the software development effort.

• Three major categories of software engineering resources –1) People(Human Resources)2) Reusable software components3) Development environment (hardware & software tools)

• Each of the resources is specified with four characteristics –– Description of the resource– A statement of availability– When the resource will be required– Duration of time that resource will be applied

14

Page 15: Software Engineering (CSI 321) Project Planning & Estimation 1

Resource Estimation 1) Human Resources

– Number of people required and skills needed to complete the development project, location of human resources

2) Reusable Software Resources – Off-the-shelf components– Full-experience components– Partial-experience components– New components

3) Environmental Resources– Hardware and software required during the development

process

15

Page 16: Software Engineering (CSI 321) Project Planning & Estimation 1

Software Project Estimation

• Project scope must be explicitly defined• Task and/or functional decomposition is necessary• Historical measures (metrics) are very helpful• At least two different techniques should be used• Remember that uncertainty is inherent in the

estimation process

16

Page 17: Software Engineering (CSI 321) Project Planning & Estimation 1

Estimation Options

To achieve reliable cost & effort estimates, a number of options arise –

1) Delay estimation until late in the project– not practical

2) Base estimates on similar projects already completed– work reasonably well

3) Use simple decomposition techniques to estimate project cost and effort

4) Use empirical models for software cost and effort estimation

17

Page 18: Software Engineering (CSI 321) Project Planning & Estimation 1

Estimation Techniques

1) Past (similar) project experience2) Decomposition technique

– task breakdown and effort estimates– size (e.g., LOC, FP) estimates

3) Empirical techniques use empirically derived expressions for effort & time estimation

18

Page 19: Software Engineering (CSI 321) Project Planning & Estimation 1

Decomposition Techniques

• Size– Lines of code (LOC) – direct approach– Function point(FP) – indirect approach

• Software sizing– Fuzzy Logic– Function Point calculation– Standard component– % Change

• Process-based estimation– Decomposition based on tasks required to

complete the software process framework

19

Page 20: Software Engineering (CSI 321) Project Planning & Estimation 1

Conventional Methods: LOC/FP Approach

• Compute LOC/FP using estimates of information domain values

• Use historical data to build estimates for the project

20

Page 21: Software Engineering (CSI 321) Project Planning & Estimation 1

Empirical Estimation Models • Experiential Models

– Typically derived from regression analysis of historical software project data with estimated person-months as the dependent variable

• Static Estimation Model– Does not include time as an independent variable – COnstructive COst MOdel (COCOMO)

• An algorithmic software cost estimation model developed by Barry Boehm. The model uses a basic regression formula, with parameters that are derived from historical project data and current project characteristics.

• Dynamic Estimation Models– Usually takes time or development phase into account– Software Equation Model

21

Page 22: Software Engineering (CSI 321) Project Planning & Estimation 1

The Make/Buy Decision

• It may be more cost effective to acquire a piece of software rather than develop it.

• Decision tree analysis provides a systematic way to sort through the make/buy decision.

• As a rule, outsourcing software development requires more skillful management than does in-house development of the same product.

22

Page 23: Software Engineering (CSI 321) Project Planning & Estimation 1

A decision tree helps “Make/Buy Decision”

23

system Xsystem Xreusereuse

simple (0.30)simple (0.30)

difficult (0.70)difficult (0.70)

minorminor changeschanges

(0.40)(0.40)

majormajorchangeschanges

(0.60)(0.60)

simple (0.20)simple (0.20)

complex (0.80)complex (0.80)

majormajor changeschanges (0.30)(0.30)

minorminor changeschanges

(0.70)(0.70)

$380,000$380,000

$450,000$450,000

$275,000$275,000

$310,000$310,000

$490,000$490,000

$210,000$210,000

$400,000$400,000

buybuy

contractcontract

without changes (0.60)without changes (0.60)

with changes (0.40)with changes (0.40)

$350,000$350,000

$500,000$500,000

buildbuild

Page 24: Software Engineering (CSI 321) Project Planning & Estimation 1

Computing Expected Cost

expected cost = expected cost =

(path probability) x (estimated path cost) (path probability) x (estimated path cost) ii ii

For example, the expected cost to build is:For example, the expected cost to build is:

expected cost = 0.30($380K)+0.70($450K) expected cost = 0.30($380K)+0.70($450K) buildbuild

= $429 K= $429 K

Similarly,Similarly,

expected cost = $382Kexpected cost = $382Kreusereuse

expected cost = $267Kexpected cost = $267Kbuybuy

24

expected cost expected cost = $410K= $410Kcontractcontract

Page 25: Software Engineering (CSI 321) Project Planning & Estimation 1

The Decision Making Process

• Cost is NOT the only criterion to consider while making a decision.

• Many other criteria (not just cost ) must be considered during the decision making process.– Availability– Experience of the developer/vendor/contractor– Conformance to requirements– Local “politics”– Likelihood of change

25

Page 26: Software Engineering (CSI 321) Project Planning & Estimation 1

Outsourcing

What is outsourcing?• Outsourcing is the practice of turning over

responsibility of some or all of an organization's information systems applications and operations to an outside firm.– Hiring an external vendor, developer, or service provider

to create the system– Requires least amount of resources and little in-house

experience– Gives access to greater resources and experience– Can be a good alternative for a new system– Has become quite popular in recent years

26

Page 27: Software Engineering (CSI 321) Project Planning & Estimation 1

Outsourcing

What are the reasons to outsource?– Cost-effective– Take advantage of economies of scale– Free up internal resources– Reduce time to market– Increase process efficiencies– System development is a non-core activity for the

organization

27

Page 28: Software Engineering (CSI 321) Project Planning & Estimation 1

Outsourcing

What are the possible risks in outsourcing?

• Risks include possibly– Losing confidential information – Losing control over future development – Losing learning opportunities – Expertise is transferred to the outside

organization

28

Page 29: Software Engineering (CSI 321) Project Planning & Estimation 1

Project Estimation: Summary

• Software cost & effort estimation will never be an exact science, because too many variables involved –– Human– Technical– Environmental– Political

• But a combination of good historical data and systematic techniques can improve estimation accuracy.

29