0% found this document useful (0 votes)
122 views

Software Project Management

This document provides an introduction to software project management. It defines software, projects, and management. Software project management is a sub-discipline of project management focused on planning, monitoring, and controlling software projects. Effective software project management focuses on people, product, process, and project. Managing people is a key factor in software project success. Communication and coordination are also important, and can occur through formal and informal approaches.

Uploaded by

alhassan007
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
122 views

Software Project Management

This document provides an introduction to software project management. It defines software, projects, and management. Software project management is a sub-discipline of project management focused on planning, monitoring, and controlling software projects. Effective software project management focuses on people, product, process, and project. Managing people is a key factor in software project success. Communication and coordination are also important, and can occur through formal and informal approaches.

Uploaded by

alhassan007
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 31

Software Project Management

Chapter One – Introduction:


What is Software?
It is a product of engineering just like an airplane, automobile, television, or another object that requires a high degree of
skill to turn a raw material into a usable product. But software is developed or engineered, not manufactured!
What is a Project?
It is a temporary endeavor (having specific start and completion dates) undertaken to create a unique product or service
 Temporary means that every project has a definite beginning and definite end
 End is reached when project’s objectives have been achieved OR it is clear that objective will not be met. The project
is terminated in such a situation
 Unique means that the product or service is different in some distinguishing way from all similar products or services
What is Management?
It is a set of activities and tasks undertaken by one or more persons for the purpose of planning & controlling the activities
of others in order to achieve an objective or complete an activity that could not be achieved by others acting
independently.
Components of Management:
 Planning
Pre-determining course of action to achieve the objectives
 Organizing
Establishing relationship among work units and granting responsibility and authority to obtain the objectives
 Staffing
Selecting and training people
 Directing (Leading)
Creating an atmosphere that will assist & motivate people to achieve the desired end results
 Controlling
Establishing, measuring, and evaluating performance of activities towards planned objectives
What is Project Management?
It is the discipline of planning, organizing, and managing resources to bring about the successful completion of specific
project goals and objectives
What is Software Project Management?
A sub-discipline of project management in which software projects are planned, monitored and controlled
 Software development is a complex undertaking particularly when it involves many people working over a relatively
long time. Hence software development projects need to be managed.
Managerial Skills:
 Technical skills
 Knowledge of & proficiency in activities involving methods, processes & procedures.
 Working with tools & specific techniques.
 Human skills
 Ability to work with people.  Cooperative effort, team work.
 Creating a conducive environment for people/ workers.
 Conceptual skills
 Ability to see the “big picture”.
 Ability to recognize significant elements in a situation & to understand the relationship among them.
 Design skills
 Ability to solve problems that will eventually benefit the enterprise.
 The skill to design effective & practical solutions to problems rather than becoming “problem watcher” only.
 Important for upper level managers.
Project Management Skills:
 Leadership  Negotiating  Process and technical
expertise
 Communications  Influencing the Organization
 Problem Solving  Mentoring
The five basic process groups are:
 Initiating  Monitoring and Controlling
 Planning  Closing
 Executing
The nine suggested Knowledge Areas are:
 Project Integration Management  Project Human Resource Management
 Project Scope Management  Project Communications Management
 Project Time Management  Project Risk Management
 Project Cost Management  Project Procurement Management
 Project Quality Management
____________________________________________

Chapter Two - Project Management:


Effective software project management focuses on the four’s:
 People  Product  Process  Project
 “People factor” is very important in success of a software project.
 “Companies that sensibly manage their investment in people will prosper in the long run” Tim & Tom.
 Cultivation of motivated and highly skilled software people has always been important for software organizations.
People involved in Software Process are:
 Stakeholders  Team Leaders  Software Team
Stakeholders can be categorized into one of the following:
 Senior Managers
 they define business issues that often have significant influence on business
 Project (technical) managers
 they must plan, motivate, organize and control the practitioners who do software work
 Practitioners
 They deliver the technical skills necessary to engineer a product or application
 Customers
 They specify the requirements for the software to be engineered
 End Users
 They interact with the software after it is released for production use
 Competent Practitioners often make poor team leaders as they lack the right mix of people skills.
 MOI model of Leadership
 Motivation
 encourage technical people (by “push” or “pull” ) to produce
 Organization
 Apply , improve processes efficiently
 Ideas or Innovation
 Make people feel creative
 Be Creative
Characteristics of an effective project managers:
 Problem Solving
 Diagnostic  Skill to solve  Ability to design solution
 Managerial Identity
 Take charge and control the project  Allow good technical people to follow their instincts

 Achievement
 Reward Initiative & accomplishment  Encourage Controlled risk taking
 Influence and team building
 Influence the team  Read people’s mind and react to their needs
 Be controlled in stress situations
Democratic decentralized
 No permanent leader  Communication is horizontal
 Suitable for small projects requiring less than 5 to 6 engineers, research-oriented projects
 Advantages
 At different times, different members within the team provide technical leadership.
 High morale and job satisfaction due to autonomy, hence less employee turnover.
 Disadvantages
 Team members may waste time arguing about trivial points due to absence of any authority in the team.
Controlled centralized
 Defined team leader  Communication is vertical
 Problem solving , communication and management by team leader
 Advantages
 The senior engineer/leader partitions tasks, verifies and integrates the products developed by members.
 Disadvantages
 Too much responsibility & authority is assigned to leader, possibility of single point of failure
Controlled decentralized
 Defined team Leader  Suitable for large organizations
 Horizontal communication  Draws upon the ideas from both earlier
structures
 Problem solving is a group activity
Seven factors that should be considered when planning team structure:
 Difficulty of task  Rigidity of delivery date (schedule)
 Size of resultant code (no. of lines)  Degree of communication
 Time that team will stay together  Required quality and reliability of the system
being built
 Degree of modularization
The People - Agile Teams
 Agile software development encourages customer satisfaction and early incremental delivery of software with overall simplicity.

 Agile teams are small, highly motivated teams.


 They adopt many characteristics of successful software project teams and avoid toxins that create problems.
 They are self-organizing and do not necessarily maintain a single team structure (use elements of Constantine’s paradigms)

 Agile process models give significant autonomy to agile teams.


 Planning is kept to minimum.
 The agile team is allowed to select its own approach (e.g., process, methods, and tools).
 The agile team may have daily team meetings to coordinate and synchronize the day’s work.
 With each passing day, this self-organization and collaboration move the team towards a completed software increment

The People - Communication & coordination Issues


 Formal approaches
 Writings (SE documentation, Customer requests, etc.)
 Structured meetings (e.g., Status review meetings)
 Design and code inspections
 Other non-interactive and impersonal comm. channels
 Informal approaches (more personal)
 Interpersonal networking
 Sharing of ideas on ad hoc basis
 Seeking help from inside or outside the project team when problem arises
 Electronic Communication (e.g., e-mail, electronic bulletin boards, video conferencing)
People Management Capability Maturity Model (PM-CMM):
 Developed by SEI
 “to enhance the readiness of s/w organizations to undertake increasingly complex applications by helping to attract, grow,
motivate, deploy, and retain the talent needed to improve their software development capability”

 In simple words - to enhance the people’s capabilities through personnel development


 Key Practice Areas of PM-CMM
 Recruiting  Compensation
 Selection  Career development
 Performance Management  Organization and work design
 Training  Team/culture development
 Organizations that achieve high levels of maturity in PM-CMM have a higher likelihood of implementing effective
software engineering practices
The Product:
 The product and the problem it is intended to solve must be examined at very beginning of the software project.
 Before project planning :
 Product objectives & scope must be established,
 Alternative solutions should be considered (to select best approach within constraints),
 Technical and management constraints should be identified.
 Without the above, cost estimates, risk assessment, realistic work breakdown and scheduling is impossible.
Scope is defined by
 Context (1st step)
 Functional location of the software product into a large system, product or business context
 Constraints involved
 Information Objectives (2nd step)
 What data objects are required as i/p or o/p
 Function and Performance (3rd step)
 What function does the software system perform on i/p to produce o/p
 What level of performance is required
The scope of product must be established and bounded:
 Bounded scope means
 establishing quantitative data (e.g., no. of simultaneous users, max. allowable response time) are explicitly stated

 constraints and limitations (e.g., product cost restricts memory size) are noted
 and mitigating factors (e.g., algorithms are well understood) described
The Product - Problem Decomposition
 Also called partitioning OR problem elaboration. The problem that the product is addressing must be decomposed
 This activity is at core of requirements analysis. Divide and conquer policy for complex problems
 Decompose problem in tasks
 Decomposition in 2 major areas
 Functionality that must be delivered  Process that will be used to deliver product
 A complex problem is partitioned into smaller problems that are more manageable.
 Decomposition make planning easier.
 Software functions, defined in scope, are evaluated and refined to provide more detail before estimation (part of planning) begins.

The Process:
 A software process provides the framework from which a comprehensive plan for software development can be established.

 Common process framework activities which are applicable to all software projects are:
 Communication  Modeling  Deployment
 Planning  Construction
 Process models
 Linear sequential, Prototyping, RAD, Spiral, Formal
 The problem is to select the process model that is appropriate for the software to be engineered by the project team.

 Project manager must decide about which model to use depending on


 customers who have requested the product & people who will work on it
 characteristics of the product
 project environment in which people will work
 Project planning begins after process model is selected and later process decomposition takes place.
 Process decomposition
 The way a process is decomposed depends on project complexity
 Decomposition involves outlining of work tasks involved in each process framework activity
 Example of decomposition for ‘communication’ activity for a simple project:
 Develop a list of clarification issues
 Meet with customer to discuss clarification issues
 Jointly develop statement of scope
 Review the statement of scope with all concerned
 Modify the statement of scope id required
The Project
 The software projects must be planned and controlled effectively to avoid complexities.
 The project managers and engineers must understand the critical success factors and develop a common sense
approach for planning, monitoring and controlling the project.
John Reel describes ten signs that indicate that project is in jeopardy:
 Software people don’t understand customer needs
 Product scope is poorly defined
 Changes are managed poorly  Deadlines are unrealistic
 The chosen technology changes  Users are resistant
 Business needs change  Sponsorship is lost
 Team lacks skills  Managers avoid best practices
John Reel suggests the following:
 Start on the right foot
 Involves detailed understanding of project  Selecting the right team
 setting realistic objectives & expectations  Facilitating the team
 Maintain Momentum
 Provide incentives
 Reduce bureaucracy and give autonomy to team members but with supervision
 Track Progress
 Assess progress as work products are produced
 Make smart decisions
 When possible, use existing software components / COTS software
 Choose standard approaches and keep it simple
 Avoid risks and allocate more time than needed for complex/risky tasks
 Conduct a postmortem analysis
 Compare planned and actual schedule
 Collect and analyze project metrics (standards)
 Get feedback from team and customers
 Establish record of lessons learnt for each project
W5HH principle
 Why is the system being develop?
 Answer to this questions help assess validity of business reason for the software work.
 It answers if the business purpose justifies the expenditure of people, time and money
 What will be done?
 Answer to this question establishes the task set required for project
 When will it be done?
 Answer to this question helps the team establish a project schedule by identifying when tasks have to be
conducted and when milestones are to be reached
 Who is responsible for a function?
 Answer to this question establishes roles and responsibility of each team member
 Where they are organizationally located?
 Answer to this question indicates that all roles and responsibilities are not limited to the software team
itself, the customers, users and stakeholders also have responsibilities.
 How will be job done technically and managerially?
 Once product scope is establishes, a technical and management strategy must be defined for it.
 How much of each resource is needed?
 Answer to this question is derived by developing estimates based on answers to earlier questions.
 Excellent planning outline for project managers and software team
 Applicable to all sizes of software projects
 It is an approach to address
 project objectives  Responsibilities  Required resources
 Milestones & schedule  Management & technical
approaches
__________________________________________________

Chapter Three - Metrics for Process and Projects:


Metrics for Process and Projects
 Software process and project metrics are quantitative measures that enable software engineers to gain insight into
efficacy of the software process and projects that are conducted using the process as a framework.
 Basic quality & productivity data (called measures) are collected.
 These data are then analyzed, compared against past averages (for similar projects), and assessed to determine
whether productivity & quality improvements have occurred.
 Metrics also indicate problem areas in processes and projects which can then be rectified / corrected.
 Project metrics contribute to development of process metrics
What is Measurement?
 It is the act of obtaining a measure.  It is a mechanism of objective evaluation.
 It enables managers and practitioners to improve software process.
 It assists in planning, tracking and controlling a software project and assessing product quality.
What is a Measure?
 To ascertain / determine or appraise by comparing to a standard
 A standard or unit of measurement; the extent, dimensions, capacity, etc., of anything, especially as determined by a standard.
What is a Metric?
 A metric is quantitative measure of the degree to which a system, component or process possesses a given attribute.
 A metric is the degree to which a particular subject possesses the quality that is being measured. It is based upon two or measures

Difference between terms:


 Measure: It is a value which does not provide enough information to make meaningful decisions
 Metric: A comparison of two or more measures, e.g., temperature values over time, errors per KLOC
 Indicator: Compares a metric against a base-line or expected result and helps in making decisions
How to improve a process
 Measure specific attributes of process
 Develop meaningful metrics based on these attributes
 These metrics provide indicators that lead to strategy for improvement
Example
 Metrics can be derived from the following process outcomes/attributes
o Errors uncovered before software release, o Defects delivered to & reported by end-user,
o Work products delivered, o Calendar time expended,
o Human efforts expended, o Schedule conformance and other measures.
How to Improve Software Quality & Organizational Performance
 It is important to note that process is only one of the many controllable factors in improving software quality and
organizational performance. Other factors connected with the ‘process’ that have significant influence on the same are:
 The skill and motivation of people
 The complexity of the product  The technology
Project Metrics
 Used by project managers and software team to adapt project workflow and technical activities.
 Objective is
 To minimize the development schedule by making adjustments that can avoid delays and mitigate potential problems.

 To assess product quality on an ongoing basis and when necessary, modify technical approach to improve quality.

 Most first application of project metrics on software projects occurs during estimation (of time, effort).
 More project metrics are used as technical work of project commences.
Software Measurement
 Software measurement can be categorized in two ways
 (1) direct measures of software process and product
 (2) indirect measures of software product
 Direct Measures
 of software process are
 Cost and effort
 of software product are
 Line of Code (LOC)  Defects over specified period of time
 Execution Speed
 Indirect Measures
 Of product are
 Functionality  Efficiency  Other Abilities

 Quality  Reliability
 Complexity  Maintainability
Size Oriented Metrics
 These are derived by normalizing quality and/or productivity measures by considering the size of software that
has been produced.
 Size-oriented metrics are widely used but not universally accepted as best way to measure a software process
 Proponents claim:
o LOC is easy to count
o Many existing estimation models use LOC or KLOC as key input
o Large literature & data based on LOC exists
 But opponents argue that
o LOC measures are programming language dependent
o When considering productivity, LOC criteria penalizes well designed short programs
o Cannot accommodate non procedural languages
o Planner must estimate LOC long before analysis and design
Function-oriented Metrics
 These use a measure of the functionality delivered by application as a normalization value.
 Most widely used function-oriented metric is function point (FP)
 FP’s computation is based on characteristics of software information domain and complexity.
 Function points are a measure of the size of computer applications and the projects that build them.
 The size is measured from a functional or user, point of view.
 It is independent of the computer language, development methodology, technology or capability of the project
team used to develop the application.
 First proposed by Albrecht; can be used to measure functionality delivered by a system.
 Using historical data, FP can be used to:
o Estimate cost and effort required to design, code and test the software,
o Predict no. of errors that will be encountered during testing,
o Forecast the no. of components and/or project source lines in the implemented system.
 Following empirical relationship is used to compute Function Point (FP)
FP= count total x [0.65+ 0.01 x Σ(Fi)]
 Fi (i=1 to 14 ) are VAF (Value adjustment factors) or simply ‘adjustment values’ based on answers to some
questions (See list of 14 Qs on Page 473 from book 6th edition )
 Answer to these questions are on a scale of 0 (not applicable) to 5 (absolutely essential)
 Count total is calculated using the following information domain values:
o External inputs (EIs) o Internal logic files (ILFs)
o External outputs (EOs) o External interface files (EIFs)
o External inquiries (EQs)
 Each information domain value is multiplied by a weighting factor (simple, average or complex) and all values are
added to get count total.
 Like LOC, FP is also controversial
 Proponents claim
o It is programming Language independent, hence ideal for conventional and non-procedural languages
o Based on data that can be known early phases of projects
 Opponents claim
o Computation is based on subjective rather than objective data
o counts of information domain may be difficult to collect
o FP is just a number and has no physical meaning
Object-oriented Metrics
 FP and LOC can be used to estimate OO software projects but these metrics do not address all aspects of such projects.

 Hence OO metrics are used for object-oriented projects


 Set of metrics for OO projects:
 Number of scenario scripts
 These are detailed sequence of steps about user and application interaction
 These are directly correlated to application size and no. of test cases
 Number of key classes
 Key classes are independent components
 They Indicate amount of development effort and potential reuse
 Number of support classes
 Required to implement the system but not directly related to problem domain, e.g., UI classes, DB access, etc.
 These indicate amount of development effort and potential reuse
 Average number of support classes per key class
 If these are known then estimation (based on total no. of classes) would be much simplified.
 Number of sub systems (aggregation of classes)
 If identified, it is easier to lay out the schedule in which work on subsystems is partitioned among project staff.

Use-case oriented Metrics


 Use-cases describe user visible functions and features.
 They are defined early in software process and can be used as normalization measure before significant activities are initiated.

 They are independent of programming language


 No. of use cases directly proportional to
 size of application in LOC &
 no. of test cases that will be designed
 There is no standard size of a use case as they are created at different levels of abstraction
 For this reason, it is a suspect as a normalization measure
Software Quality Metrics
 Measuring quality through
 Correctness
 It is degree to which software performs its required function
 Common measure= defects per KLOC
 For quality assessment defects are counted typically for 1 year
 Maintainability
 It is the ease with which a program can be
 corrected if an error is found  Enhanced if customer desires
 Adapted if environment changes or
 Measured indirectly, e.g., Mean-time-to change (MTTC)
 Maintainable programs -> lower MTTC
 Integrity
 System’s ability to withstand (accidental & intentional) attacks
 Two more attributes that help determine integrity
 threat = probability of attack within a given time (that causes failure)
 security = probability that an attack will be repelled
 Integrity =  [1 – (threat * (1 – security))]
 Usability
 It quantifies ease of use and learning (time)
Defect Removal Efficiency
 DRE is a measure of the filtering ability of the quality assurance and control activities as they are applied throughout
the process framework
 When considered for project as a whole, it is defined as
 DRE = E / (E + D)
 E = no. of errors found before delivery  D = no. of defects found after delivery
 Ideal value of DRE is 1
 Realistically D will be greater than 0
 As E increases, DRE begins to approach 1
 If used as a metric that provides an indicator of the filtering ability of the quality assurance and control activities.
 DRE encourages a software project team to institute techniques for finding as many errors as possible before delivery.
 DRE can also be applied on each process framework activity and hence find the team’s ability to assess errors before
they are passed to next activity or software engineering task.
 DRE = Ei / (Ei + Ei+1)
 Ei = errors in activity i
 Ei+1 = errors in activity i+1 that were not discovered in activity i
Arguments for Software Metrics
 Majority of software developers do not collect measures.
 Without measurement it is impossible to tell whether a process is improving or not.
 Measurement is used to establish a process baseline from which improvements can be assessed.
Establishing a Baseline
 The metrics baseline consists of data from past software development projects.
 Baselines can be as simple as data in table or as complex as a complete database having numerous measures and
metrics derived from them.
 To be used effectively in process improvement and/or cost estimation, baseline data must have the following attributes.

 Baseline data attributes:


 Data must be accurate (no guess work)
 Data should be collected from as many projects as possible
 Measures must be consistent across all such projects
 Baseline data/applications should be similar to the work that is to be estimated
Metrics for Small Organizations:
 Most software organizations have fewer than 20 software engineers.
 It is unreasonable to expect that such small organizations will develop comprehensive software metrics program.
 However, it is reasonable to suggest that software organizations of all sizes should measure and then use the
resultant metrics to improve their local software process, quality and timelines of product delivery.
 Best advice is to “Keep it simple”, i.e., choose simple metrics that provide value to the organization and don’t
require a lot of effort to collect.
 Improvement target: “to reduce the time to evaluate and implement change requests”
 A small organization may select the following measures to achieve the target:
 Time elapsed from the time a request is made until evaluation is complete
 Effort to perform evaluation
 Time elapsed from completion of evaluation to assignment of change order to personnel
 Effort required to make the change
 Time required to make the change
 Errors uncovered during work to make the change
 Defects uncovered after change is released to the customer
Establishing Software Metrics Program:
 SEI has suggested the following guidelines for establishing a “goal-driven” Software Metrics Program:
1. Identify business goal
2. Identify what you want to know
3. Identify sub goals
4. Identify sub goal entities and attributes
5. Formalize measurement goals
6. Identify quantifiable questions and indicators related to sub goals
7. Identify data elements needed to be collected to construct the indicators
8. Define measures to be used and create operational definitions for them
9. Identify actions needed to implement the measures
10. Prepare a plan to implement the measures
Summary:
 Measurements result in change in working-culture.
 Measurement helps practitioners and managers to improve the process.
 Data collection, metrics computation and their analysis are the core steps to begin a ‘metrics program’.
____________________________________________________
Chapter Four - Estimation:
 Software Project Management begins with 'Project Planning’ activities which include:
 Estimation  Quality Management Planning
 Scheduling  Change Management Planning
 Risk Analysis
 Estimation is to determine how much…
 Money/cost,  efforts,  resources and  time
Will be required to build a specific software based system or product.
 Estimation is done by software project managers using information solicited from
 Stakeholders,  Software metrics data from past project.
 Software engineers and
Estimation Steps – Summary
 Description of product scope.
 Decomposition of problem into set of smaller problems.
 Each sub problem is estimated using historical data, software metrics and experience (from past projects) as guides.

 Problem complexity and risks are considered before final estimate is made.
Estimation and Risk
 Estimation carries inherent risk, and risk leads to uncertainty.
 Estimation risk is measured by the degree of uncertainty in the quantitative estimates established for resources, cost, and schedule.

 Availability of comprehensive historical information and software metrics (from past projects) helps establish better
estimates and hence reduces risk factors.

 If project scope is poorly understood or requirements are subject to change then uncertainty and estimation risk
become dangerously high.
 Thus variability in software requirements means instability in cost and schedule.
 However, a project manager should not become obsessive about estimation as modern software engineering
approaches are iterative in nature hence making it possible to revise estimates.
Software Project Planning Process
 Software project planning provides a framework that enables the manager to make reasonable estimates of
resources, cost and schedule.
 Although there is inherent uncertainty, the team embarks on a project plan.
 But, this plan must be adapted and updated as the project progresses.
Software Project Planning Activities
 Establish project scope
 Determine feasibility
 Analyze risks
 Define resources
 Estimate cost and effort
 Develop project schedule
Software Scope
 It is defined in one of the following ways:
 A narrative description developed after communication with all stakeholders
 A set of use-cases developed by end-user
 It describes
 functions & features to be delivered to end-user
 Input and output data
 “content” presented to users as they use the software
 Performance considerations (processing and response time, etc)
 Constraints (limits placed on software by external hardware, available memory, or existing systems),
interfaces and reliability that bound the system
Software Feasibility
 Feasibility check is conducted after scope identification.
 It addresses questions like
 Can we build software to meet this scope?
 Is the project feasible?
 These questions are very crucial but often overlooked either by software engineers or by the impatient customers
and managers
 Putnam and Myers address feasibility in four dimensions
 Technology
 Is the project technically feasible? Is it within state of the art? Can defects be reduced as needed?
 Finance
 Is it financially feasible? Can the development be completed at a cost that the software
organization, the client or the market can afford
 Time
 Will the project’s time-to-market beat the competition?
 Resources
 Does the organization have enough resources needed to succeed?
 After scope and feasibility, next comes estimation of resources. Three major categories of resources are:
 People/Human resources
 Reusable software components
 Development environment (s/w & h/w tools)
 Each resource has 4 characteristics
 Description of resource
 Statement of availability
 Time when resource will be required
 Duration of time when resource will be applied
Human resources
 This estimation involves
 Selecting Skills (required to complete development)
 Specifying organizational positions (manager, senior s/w engineering, ..) and specialty
 Determining number of people based on development effort
 For small projects, single person can do all s/w engineering tasks
 For large projects, more number of people involved which may be geographically distributed. So,
location of resource also specified
 No. of people can be determined after estimating development effort (e.g., person-months)
Reusable Software Resources
 CBSE emphasizes the creation and reuse of software building blocks (components)
 4 categories of software components
 Off-the-shelf components
 Ready-to-use existing software acquired from third party (COTS) or from (internal) past projects
 Full-experience components
 Existing specifications, designs, code, test data from past projects similar to software to be
developed (for current project). May require little modifications
 Partial experience component
 Existing specifications, designs, code, test data from past projects related to software to be
developed (for current project) but will require substantial modifications
 New components
 Software components that must be built for current project
(Development) Environment resources
 Software Engineering Environment (SEE) includes hardware and software support for a software project
 Hardware and software elements availability and time window must be specified
Software Project Estimation
 Options for cost and effort estimates:
 Delay estimation until late in project
 Not a practical approach
 Base estimation on similar past projects
 Reasonable approach but not always successful
 Use simple decomposition techniques to generate estimates
 Divide and conquer approach. Divide project into major activities/functions and make estimates
 Use some empirical model for estimation
 Complements decomposition techniques
 Which option is better?
 Each approach can be used as a cross-check for the other
Decomposition Techniques
 Decomposition can be performed in two aspects
 Decomposition of problem
 Decomposition of process
 Estimation uses one or both forms of decompositions. But before this, software size must be estimated.
Software Sizing
 Proper estimation of software size and mapping of size estimate to human effort, calendar time and cost are
important things which contribute to accuracy of overall software project estimation.
 In project planning, size refers to a quantifiable outcome.
 Direct approach – size is measured as LOC
 Indirect approach – size is measured as function-points
 Putnam and Myers suggested 4 different approaches for sizing problem
 Fuzzy logic sizing
 Function point sizing
 Standard component sizing
 Change sizing
Other types of estimations…
 Problem based estimation (LOC-based and FP-based)
 Process-based estimation
 Use-case based estimation
Empirical Estimation Models
 An estimation model for software uses empirically derived formulas.
 These formulas can predict effort as a function of LOC or FP.
 Empirical data that support most estimation models are derived from limited sample of projects, that is why, no
estimation model is appropriate for all classes of software and in all development environments.
 Estimation model must be calibrated to reflect local conditions.
Structure of Estimation Models
 A typical empirical model is derived using regression analysis on data collected from past projects
 Overall structure of such models takes the form
E= A+B x (ev)C
 A, B and C are empirically derived constants, E is effort in person-months and ev is estimation variable
(either LOC or FP)
The COCOMO Model
 In his classic book “Software Engineering Economics”, Barry Boehm suggested the COnstructive COst MOdel (COCOMO).

 COCOMO is a software cost estimation method for estimating effort, cost, and schedule for software projects.
 It is based on a set of empirically derived equations.
 These equations incorporate variables considered to be the major cost drivers of software development and maintenance.

 The original COCOMO (COCOMO 81) was first published in 1981 and reflected the software development practices of the day.
 A decade and a half later, the software development techniques changed dramatically and the original COCOMO
became problematic.
 It then evolved into COCOMO II to fulfill the changing needs.
 There are three versions of COCOMO 81:
o Basic
 Used for rough, early estimates
o Intermediate
 The most commonly used version which includes 15 different factors to account for the influence of various
project attributes such as personnel capability, hardware constraints, etc.
o Detailed
 This version accounts for influence of different factors on individual project phases.
 It is not used often.
 COCOMO applies to three classes of software projects:
o Organic projects - "small" teams with "good" experience working with "less than rigid" requirements
o Semi-detached projects - "medium" teams with mixed experience working with a mix of rigid and less than
rigid requirements
o Embedded projects - developed within a set of "tight" constraints (hardware, software, operational, ...), may
require new technology, unfamiliar algorithms, or new problem solving method
 COCOMO II is actually a hierarchy of estimation models that address the following areas:
o Application composition model
 Used during the early stages of s/w engg. When prototyping of UI, s/w and system interaction,
performance assessment and tech. evaluation are paramount.
o Early design stage model
 Used once requirements have been stabilized and basic architecture has been established
o Post-architecture stage model
 Used during the construction of software
 Like all estimation models for software, the COCOMO II requires sizing information.
 Three different sizing options available as part of model hierarchy are:
o object points,
o function points and
o Lines of source code.
 COCOMO II Application composition model uses object points
o Object points is an indirect software measure computed using counts of number of
 Screens (at UI)
 Reports
 Components likely to be required to build the application
o Each object instance is classified into one of these complexity levels (simple, medium, difficult) on criteria
suggested by Boehm.
o Complexity is a function of number of client and server tables required to generate a screen or report and
number of sections or views within a screen or report
o After determining complexity, no. of screens, reports and components are weighted as in figure (23.6).
o The object point count is then determined by multiplying the original no. of object instances by weighting factor
and summing to obtain a total object point count.
 For component-based development or when software reuse is applied, the %reuse is estimated and object point
count is adjusted:
o NOP = (object points) x [(100 - %reuse)/100]
 NOP is new object points
 To derive estimate of effort based on computed NOP value, a productivity rate must be derived
o PROD = NOP / person-month
 Estimate of project effort can be derived as:
o Estimated effort = NOP/PROD
The Software Equation
 Suggested by Putnam & Myers
 It is a multivariable model
 It assumes a specific distribution of effort over life of s/w project
 It has been derived from productivity data collected for over 4000 modern-day s/w projects
 E = [LOC x B0.333 / P]3 x (1/t4)
 E = effort in person-months or person-years
 B = special skills factor
 P = productivity factor
 t = project duration (months or years)
 P reflects
 Overall process maturity
 Management practices
 Extent to which good s/w engg practices are used
 Level of prog. Languages used
 State of s/w environment
 Skills & experience of team
 Application complexity
 Typical values of P
 P= 2000 - for a real-time embedded s/w
 P= 10,000 - for telecomm. & systems s/w
 P= 28,000 for business applications
 Value of B
 Increases slowly as “the need for integration, testing, quality assurance, documentation and management skills grows”.
 For small programs (KLOC=5 to 15), B= 0.16, for larger programs (KLOC=more than 70), B=0.39
 Software equation has two independent parameters
 LOC
 t
 Minimum dev. Time equations derived from software equation
 tmin= 8.14 (LOC/P)0.43
 in months for tmin> 6 months
 E = 180 Bt3
 In person-months for E>= 20 person-months
Estimating Cost
 It involves developing an approximation of the costs of resources needed to complete project activities.

Inputs to Cost Estimating


 Work Breakdown Structure
 It organizes cost estimates and ensures that all identified work has been estimated.
 Resource Requirements
 Involves description of what type of resources are required and in what quantities for each element of WBS.

 Resource Rates
 Unit rates (e.g., staff cost per hour, bulk material cost per cubic yard) for each resource must be known to
calculate project cost.
 Activity duration estimates
 These affect cost estimates on any project where project budget includes an allowance for cost of financing
(i.e., interest charges)
 Estimating publications
 Commercially available data on cost estimating.
 Historical Information
 Historical data can be obtained from one or more of the following:
 Previous Project files,
 Commercial cost estimating databases
 Project team knowledge
 Chart of accounts
 It describes coding structure used by performing organization to report financial information in its general ledger.

 Risks
 The project team considers the extent to which the effect of risk is included in the cost estimates for each activity.

Tools and Techniques for Cost Estimating


 Analogous estimating
 It is also called top-down estimating, as actual cost of similar previous project is used as basis for current
estimating cost of current project.
 It is a less costly than other techniques but generally less accurate.
 It is most reliable when
 previous projects are similar in fact not just in appearance and
 People making the estimates have the required expertise.
 Parametric modeling
 It involves using project parameters in a mathematical model to predict project costs.
 Cost and accuracy of this technique varies.
 It is reliable when
 the historical info used to develop model was accurate,
 the parameters used are quantifiable and
 The model is scalable (works for both very small and very large projects).
 Bottom-up estimating
 It involves cost estimation of individual activities or work packages, then summarizing and rolling up the
individual estimates to get a project total.
 The cost and accuracy of this technique is driven by size and complexity of individual activity or work
package.
 Smaller activities increase the cost and accuracy of the estimating process.
 Computerized tools
 These include project management software spreadsheets and simulation/statistical tools.
 Other cost estimating methods
 For example, vendor bid analysis.
Outputs from Cost Estimating
 Cost estimates
 These are quantitative assessments of likely costs of resources (e.g., labor, material, supplies, etc.)
required to complete project activities.
 They are expressed in units of currency.
 Supporting detail
 Description of scope of work estimated (by reference to WBS)
 Documentation about how estimate was developed.
 Documentation of any assumptions made.
 An indication of range of possible results, e.g., $10,000 + $1,000 to indicate cost between $9,000 and
$11,000
 Cost Management Plan
 It describes how cost variances will be managed.
 It may be formal or informal, highly detailed or broadly framed, based on the needs of the project
stakeholders.
The Make/Buy decision
 Often it is more cost effective to acquire rather than develop a software
 Software managers have following options while making make/buy decisions
 Software may be purchased (or licensed) off the shelf
 “Full experience” or “partial experience” software components may be acquired and then modified as needed

 Software may be custom-built by an outside contractor to meet specifications


 Software criticality to be purchased and the end cost also affect acquisition process
 For each of the discussed acquisition options, the Make/Buy decision is made based on following conditions
 Will the software product be available sooner than internally developed software?
 Will the acquisition cost plus cost of customization be less than cost of developing the software internally?
 Will the cost of outside support (e.g., maintenance contract) be less than the cost of internal support?
Outsourcing
 Acquisition of software (or components) from a source outside the organization
 Software engineering activities are contracted to a third party who does the work at lower cost and (hopefully) at higher quality

 Software work within the company is reduced to contract management activity


 Outsourcing is often a financial decision
 Positive side
 Cost saving can usually be achieved by reducing own resources (people & infrastructure)
 Negative side
 Company loses some control over the software and bears the risk of putting its fate in hands of a third party

_____________________________________________

Chapter Five - Scheduling:


 When…
 Appropriate process model has been selected,
 Software engineering tasks have been identified,
 Estimation of amount of work & people has been done,
 Risk have been considered and deadline is known…
 Then it's time to connect the dots to create a network of tasks for achieving the software engineering tasks. This
network creation is called ‘software project scheduling’
What is Project Scheduling?
 An activity that distributes estimated effort across the planned project duration by allocating the effort to specific
software engineering task.
 Creating a network of software engineering tasks to complete the project and assign responsibilities of tasks and
timing of tasks.
What is Project Tracking?
 Tracking is the process to make sure that all tasks are completed according to assigned responsibility and schedule.
Proper Project Scheduling requires:
 All tasks should appear in the network,
 Interdependencies between tasks are indicated,
 Effort and timing are intelligently allocated to tasks,
 Resources are allocated to tasks,
 Closely spaced milestones are provided for progress tracking.
Who creates Project Schedule?
 At the project level, it is done by project managers using information solicited from software engineers.
Reasons for late software delivery
 Unrealistic deadline established by someone outside the software development group & enforced.
 Changing customer requirements that are not reflected in schedule change.
 An honest underestimate of the amount of work and/or resources required.
 Risks that were not considered at project commencement.
 Technical difficulties not foreseen in advance.
 Miscommunication among project staff.
 A failure by project management to recognize that the project is falling behind schedule and a lack of action to
correct the problem.
Dealing with Project Deadlines
 Aggressive (actually unrealistic) deadlines are a fact of life in software business.
 If best estimates indicate that deadline is unrealistic Project Manager should :
“Protect his/her team from undue (schedule) pressure… and reflect pressure back to its originators.”
 Recommended steps for such situations:
1. Perform a detailed estimate using historical data from past projects. Determine estimated effort and
duration for project.
2. Use incremental model, develop a strategy that will deliver critical functionality within imposed deadline,
but delay other functionality until later. Document the plan.
3. Meet the customer and explain why imposed deadline is unrealistic. Explain what is the new time required
to complete this project.
4. Offer incremental development strategy as alternative. For example, offer some options:
 First, we can increase the budget and have bring resources to get this job done in due time. But
this contains increased risk of poor quality due to tight timeline.
 Second, we can remove some software functions, and provide remaining functionality later.
 Third, dispense with reality and wish to complete software in due time, say nine months (third
option may be unacceptable).
5. By presenting solid estimates and references to past projects, it is likely that, negotiated versions of option
1 and 2 will be accepted by customer.
Project Scheduling (Evolution)
 It is important to note that the project schedule evolves over time.
 During early stages of project planning, a macroscopic schedule is developed.
 This schedule identifies all major process framework activities and the product functions to which they are applied.
 As the project proceeds, each entry on the macroscopic schedule gets refined into detailed schedule.
 Specific tasks are identified to achieve each activity and are scheduled.
Project Scheduling - Basic Principles
 Compartmentalization
 Both the product and the process are decomposed into a number of manageable activities/tasks
 Interdependency
 Interdependencies among decomposed activities must be identified.
 Some tasks can be performed in sequence and other can be done in parallel.
 Some activities cannot be performed without completion of another and some can be totally independent
 Time Allocation
 Each task must be allocated work units (person-days of effort)
 Start and end time must be allocated considering interdependencies & whether work will conducted be
part-time or full-time
 Effort validation
 Project manager must ensure that no more than the allocated no. of people have been scheduled at any
given time
 Defined responsibilities
 Every scheduled task must be assigned to a specific team member
 Defined outcomes
 Work products must be defined for every scheduled task
 Defined milestones
 Every task/group of tasks must be associated with a project milestone. A milestone is accomplished after
one or more related work products has been reviewed for quality and approved
Relationship between People and Effort
 Common Myth …
 “If we fall behind schedule, we can always add more programmers and catch up later in the project!”
 Doing so is often disruptive rather than productive causing further delays. Reasons:
 learning time for added people
 teaching takes time away from productive work
 Addition of people increases communication paths – hence increased complexity
 Putnam-Norden-Rayleigh (PNR) Curve indicates the relationship between effort applied and delivery time for a
software project.

 to = delivery time that will result in least effort expended


 As we move left to to, i.e. as we try to accelerate delivery, curve rises nonlinearly
 As we try to reduce accelerate delivery, curve rises sharply to left of td indicating, project delivery time can not be
compressed much beyond 0.75td
 As we try further, the project moves into impossible region and failure risk becomes high

PNR Curve & Software Eqn.


 The software equation is derived from the PNR curve
 It demonstrates a highly nonlinear relationship between time to complete project and human effort applied to
the project
 Lines of Code (L) is related to effort (E) and development time (t) as:
 L = P x E 1/3 t 4/3
 Rearranging the equation, we get the expression for development effort
 E = L3 / P3t4
Effort Distribution
 A recommended distribution of effort across software process is often referred to as 40-20-40 rule
 40% allocated to analysis & design
 20% allocated to coding
 40% allocated to testing
 Use the above as a guideline only as each project dictates its own distribution effort, e.g. criticality of the software
often dictates the amount of testing and hence testing effort
Defining Task Set For the Software Project
 Task set is a collection of software engineering work tasks , milestones and deliverables that must be accomplished
to complete a particular software project.
 Task sets are different for different types of projects.
 Most organizations encounter following types of projects
o Concept development projects
 Explore some new business concept or application of new technology.
o New application development projects
 Undertaken as a consequence of specific customer request
o Application Enhancement projects
 Involve modification to functions, performance or interfaces (observable by end-user) in existing
software
o Application maintenance projects
 That correct, adapt or extend existing software in ways that may not be obvious to end user
o Reengineering projects
 Undertaken for rebuilding an existing system in whole or part
Factors Influencing Task Set Selection in Projects
 Size of project
 Number of potential users
 Mission criticality
 Application longevity
 Stability of requirements
 Ease of customer/develop communication
 Maturity of applicable technology
 Performance constraints
 Embedded, non-embedded characteristics
 Project staff
 Reengineering factors
 These factors also provide an indication of the degree of rigor with which the software process should be applied
Refinement of Major Tasks
 The major tasks described earlier may be used to define a macroscopic schedule for project.
 The macroscopic schedule must be refined to create a detailed schedule.
 For this each major task is decomposed into a set of subtasks (with related work products and milestones)
 As an example consider task 1.1 – concept scoping. The refinement is shown on next slide:
Defining a Task Network
 Also known as activity network.
 It is a graphic representation of the task flow for a project.
 Displays interdependencies and parallelism.
 Project manager should be aware of those tasks that lie on the critical path
Scheduling
 Two Project Scheduling methods that can be applied to software development:
 Program evaluation and review technique (PERT)
 Critical Path Method (CPM)
 Both are driven by Info already developed:
 Estimates of effort
 A decomposition of product function
 The selection of appropriate process model and task set
 Decomposition of tasks
Timeline Charts
 When creating software project schedule, the planner begins with a set of tasks (work breakdown structure)
 If automated tools are used, the work breakdown is input as a task network
 Effort, duration and start date are then input for each task
 As a result of this input, a timeline chart or Gantt chart is generated
Tracking Schedule
 Accomplished in a no. of ways
 Conducting periodic project status meetings in which each team member reports progress & problems
 Evaluating results of all reviews conducted throughout the s/w engineering process
 Determining whether formal project milestones have been accomplished by scheduled date
 Comparing actual start date to planned date for each project task
 Meeting practitioners to get their assessment of progress to date and problems encountered
 Use earned value analysis to assess progress quantitatively
Earned Value Analysis
 Earned Value Analysis (EVA) provides a quantitative indication of progress of a project.
 Humphrey discusses earned value as:
 “The earned value system provides a common value scale for every [software project] task, regardless of
the type of work being performed. The total hours to do the whole project are estimated and every task is
given an earned value based on its estimated percentage of the total”
 It compares the PLANNED work with the actually COMPLETED work, to determine if COST, SCHEDULE, and WORK
ACCOMPLISHED are progressing as planned.
 EVA is accomplished using Earned Value Management.
Earned Value Management (EVM)
 EVM is a project management technique for measuring project progress.
 If applied properly, it provides an early warning of performance and
 Improves definition of scope
 Communicates progress to stakeholders
 And keeps the project team focused on achieving progress.
 EVM implementation includes
 A project plan that identifies work to be accomplished or WBS,
 A valuation of planned work called Planned Value (PV) or Budgeted Cost of Work Scheduled (BCWS)
 Predefined “earning rules” (a.k.a. metrics) to quantify the accomplishment of work called Earned Value
(EV) or Budgeted Cost of Work Performed (BCWP)
 BCWP value is sum of the BCWS values for all work tasks that have actually been completed by a
point in time on the project schedule
Earned Value Management
 Wilkens’ gives distinction between BCWS and BCWP as:
 BCWS represents the budget of activities that were planned to be completed
 and BCWP represents the budget of activities that were actually completed
 EVM for large projects includes many more features such as indicators and forecast of cost performance and
schedule performance.
 Important progress indicators can be computed based on BCWS, BAC, BCWP values
 SPI = BCWP/BCWS
 Schedule performance index indicates efficiency with which project is using scheduled resources. SPI value
1.0 indicates efficient execution of project schedule
 SV = BCWP – BCWS
 Schedule variance is simply an absolute indication of variance from planned schedule
 Percent scheduled for completion= BCWS/BAC
 Where BAC is Budget at completion computed as: BAC = ∑(BCWSk) for all k tasks
 Percent complete= BCWP/BAC
 Provides indication of percent of completeness of the project at a given point in time t.
 CPI = BCWP/ACWP
 Cost performance index value close to 1.0 indicates project is within its defined budget
 Actual Cost of Work Performed ACWP is sum of effort actually expended on work tasks that have been
completed by a point in time on project schedule
 CV = BCWP – ACWP
 Cost Variance is an absolute indication of cost savings against planed or shortfall at a particular stage of
project
Project Tracking without EVM
Blue line =the cumulative budget for this project as a function of time .
Red line = the cumulative actual cost of the project through week 8.

Project Tracking without EVM


 To those unfamiliar with EVM, it might appear that this project was over budget through week 4 and then under
budget from week 6 through week 8.
 However, this chart does not indicate how much work has been accomplished during the project.
 If the project was actually completed at week 8, then the project would actually be well under budget and well
ahead of schedule .
 If, on the other hand, the project is only 10% complete at week 8, the project is significantly over budget and
behind schedule .
 A method is needed to measure technical performance (progress) objectively and quantitatively, and that is what
EVM accomplishes .
Project Tracking with EVM
 Consider the same project, except this time the project plan includes pre-defined methods of quantifying the
accomplishment of work .
 At the end of each week, the project manager identifies every detailed element of work that has been completed,
and sums the PV for each of these completed elements .
 Earned value may be accumulated monthly, weekly, or as progress is made.
Green line = EV curve ,Blue line = PV curve

 The chart indicates that progress started more rapidly than planned, but slowed significantly and fell behind
schedule at week 7 and 8.
 This chart illustrates the schedule performance aspect of EVM .

You might also like