0% found this document useful (0 votes)
10 views13 pages

Software Productivity and Cost Estimation

The document discusses software productivity tools and their significance in managing software projects, including code generation, debugging, and performance analysis tools. It also covers cost estimation methods in software development, emphasizing the importance of accurate estimates and the use of various models like COCOMO and Putnam for project planning. Additionally, it highlights algorithmic modeling in design and its applications across architecture, engineering, and product design.

Uploaded by

shivaniega6
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views13 pages

Software Productivity and Cost Estimation

The document discusses software productivity tools and their significance in managing software projects, including code generation, debugging, and performance analysis tools. It also covers cost estimation methods in software development, emphasizing the importance of accurate estimates and the use of various models like COCOMO and Putnam for project planning. Additionally, it highlights algorithmic modeling in design and its applications across architecture, engineering, and product design.

Uploaded by

shivaniega6
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

UNIT-IV

What is Productivity:

Software productivity tools help developers create and manage software projects
more effectively. These tools can help developers track the progress of their projects,
manage software dependencies, and automate software builds. Some software productivity
tools are specific to a particular programming language, while others are more general.
Many software productivity tools are available as open source software, and many are also
available as commercial software.
There are various software productivity tools available for compiler design. Some of the most
popular ones are:
1. Code generation tools: These tools help in automatically generating code for the
compiler. This can be extremely helpful in reducing the development time and effort
required for the compiler.
2. Debugging tools: These tools help in debugging the compiler code. This can be
3. extremely helpful in finding and correcting errors in the compiler code.
4. Performance analysis tools: These tools help in analyzing the performance of the
compiler. This can help optimize the compiler code for better performance.

Estimation Factors:

The necessity of cost estimation stems from the requirements of scheduling and cost planning.

For lack of more precise methods, cost estimation for software development is almost always

based on a comparison of the current project with previous ones. Due to the uniqueness of

software systems, the number of comparable projects is usually quite small, and empirical

data are seldom available. But even if there are exact cost records of comparable projects,

these data are based on the technical and organizational conditions under which the comparable

project was carried out at that time

The technical and organizational conditions are variable parameters, which makes empirical

data
from comparable projects only an unreliable basis for estimates. Relationship between the

best and worst programming experience (referring to the same task, [Schnupp 1976]):

The time requirement for each task handled in a team consists of two basic components

([Brooks 1975]): (1) Productive work

(2) Communication and mutual agreement of team members

If no communication were necessary among team members, then the time requirement t for

a project would decline with the number n of team members

t ≈ 1/n

If each team member must exchange information with one other and that the average time

for such communication is k, then the development time follows the formula:

t ≈ 1/n + k. n2/2 "

Adding manpower to a late software project makes it later." ([Brooks 1975])

Most empirical values for cost estimation are in-house and unpublished. The literature

gives few specifications on empirical data, and these often deviate pronouncedly. The

values also depend greatly on the techniques and tools used.

Distribution of the time invested in the individual phases of software development

(including the documentation effort by share) according to the selected approach

model and implementation technique ([Pomberger 1996]):

Approach model: classical sequential software life cycle

Implementation technique: module-oriented problem analysis and system specification....

25% design.................................................................

25% implementation..................................................
15% testing ................................................................ 35%

Approach model: prototyping-oriented software life cycle

Implementation technique: module-oriented

problem analysis and system specification ...... 40%

design................................................................. 25% implementation............................................


10% testing ................................................................ 25%

Approach model: object- and prototyping-oriented software life cycle Implementation

technique: object-oriented

problem analysis and system specification ...... 45%

design................................................................. 20%implementation.................................

18% testing……………………………27%.........................................

The following options are useful to achieve reliable cost and effort estimates:

Delay estimation until late in the project. The longer we wait, the less likely we are to make

errors in our estimates. However this is not practical. Cost estimates must be provided

“up-front”. 2. Base estimates on similar projects that have already been completed. This works

well if the current project is quite similar to past efforts. Unfortunately, past experience has not

always been a good indicator of future results.

1. Use “decomposition techniques” to generate project cost and effort estimates. These

techniques use a “divide and conquer” approach to estimation. By decomposing a project into

major functions and related software engineering activities, cost and effort estimation

can be performed in a step-wise fashion.

Use one or more empirical models for software cost and effort estimation. A model is
based on experience (historical data) and takes the form d = f(vi), where d is one of a

number of estimated variables (eg. effort, cost, project duration) and vi are selected

independent parameters (eg. Estimated LOC or FP)

Approaches to Effort and Schedule Estimation:

The cost and schedule estimation process helps in determining number of resources to
complete all project activities. It generally involves approximation and development of
costing alternatives to plan, perform or work, deliver, or give project. A good estimation
is very much essential for keeping a project under budget.
Two perspectives are generally required to derive project plans. These perspectives are given
below :

1. Forward-Looking :
 The Forward-Looking approach is also known as Top-Down approach. This
approach generally starts with describing and explaining various project
 tasks that involve starting with project aim or end deliverable and breaking
it all down into smaller planning chunks.
 Top-down budgeting also refers to a method of budgeting where project
managers prepare a high-level budget for organization.
 These project managers or senior management develops and creates a
characterization of overall size, process, environment, people, and quality
that is essential for software project. In this approach, duration of
deliverable’s is estimated.
 It generally takes less time and effort than bottom-up estimate. With help of
software cost estimation model, an estimation of overall effort and schedule
 is done. The project manager generally divides estimation of overall effort
into a top-level of WBS (Work Breakdown Structure).
 They also divide schedule into major milestones dates. At this stage,
sub-project managers are simply given responsibility for decomposing every
element of WBS into lower levels with help of various allocations of
top-level, staffing profile, and, major milestones dates as constraints.
 The main benefit of this approach is use of holistic data from earlier projects
or products, along with unmitigated risks, and scope creeps. This also helps in
reducing risk of overlooked work activities or costs.
2. Backward-Looking :
 Backward-Looking approach is also known as Bottom-up approach.
 In this approach, project team breaks requirements of clients down,
 determining lowest level appropriate to develop a range of estimates,
 covering overall scope of project based on available definition of task.
 Overall elements of lowest level WBS are generally explained into detailed
tasks, for which WBS element manager is responsible for estimating budge
and schedule.
 All of these estimates are joined and integrated into higher-level WBS
budgets and milestones.

Milestone scheduling also called budget allocation with help of top-down approach
results in a highly optimistic plan. Whereas, bottom-up approach results in a
highly pessimistic plan. Iteration is very much needed and important, using results
of one approach to validate and even check results of other approach. Both of
approaches should be used together, in balance, throughout life-cycle of project as
shown below.
Below is diagram showing planning balance through life cycle.

Engineering stage planning emphasis on following points :


 Macro-level task estimation for engineering artifacts.
 Macro-level task estimation for production stage artifacts.
 Stakeholder concurrence.
 Coarse-grained variance analysis of actual vs. planned expenditures.
 Tuning top-down project-independent planning guidelines into project-specific
planning guidelines.
 WBS definition and elaboration.
Production stage planning emphasis on following points :
 Macro-level task estimation for production stage artifacts.
 Macro-level task estimation for maintenance of engineering artifacts.
 Stakeholder concurrence.
 Coarse-grained variance analysis of actual vs. planned expenditures.

Top-down perspective generally dominates during engineering stage. This is because there
is no enough depth or details of understanding not even stability in sequences of detailed
task to perform planning of bottom-up approach. On other hand, there is enough prior
experience and planning fidelity that bottom-up planning perspective dominates during
production stage.
COCOMO II

COCOMO-II is the revised version of the original Cocomo (Constructive Cost Model)
and was developed at the University of Southern California. It is the model that allows
one to estimate the cost, effort, and schedule when planning a new software development
activity.
Sub-Models of COCOMO Model

End User Programming


Application generators are used in this sub-model. End user write the code by using these
application generators. For Example, Spreadsheets, report generator, etc.

2. Intermediate Sector
 Application Generators and Composition Aids: This category will create largely
prepackaged capabilities for user programming. Their product will have many
 reusable components. Typical firms operating in this sector are Microsoft, Lotus,
 Oracle, IBM, Borland, Novell.
 Application Composition Sector: This category is too diversified and to be handled
by prepackaged solutions. It includes GUI, Databases, domain specific components
such as financial, medical or industrial process control packages.
 System Integration: This category deals with large scale and highly embedded
systems.
3. Infrastructure Sector
This category provides infrastructure for the software development like Operating System,
Database Management System, User Interface Management System, Networking System, etc.
Stages of COCOMO II

1. Stage-I
It supports estimation of prototyping. For this it uses Application Composition Estimation
Model
This model is used for the prototyping stage of application generator and system integration.
2. Stage-II
It supports estimation in the early design stage of the project, when we less know about it.
For this it uses Early Design Estimation Model. This model is used in early design
stage of application generators, infrastructure, system integration.
3. Stage-III
It supports estimation in the post architecture stage of a project. For this it uses Post
Architecture Estimation Model. This model is used after the completion of the detailed
architecture of application generator, infrastructure, system integration.
Putnam Estimation Model:

he Lawrence Putnam model describes the time and effort requires finishing a software

project of a specified size. Putnam makes a use of a so-called The Norden/Rayleigh Curve to

estimate project effort, schedule & defect rate as shown in fig:

Putnam noticed that software staffing profiles followed the well known Rayleigh distribution.

Putnam used his observation about productivity levels to derive the software equation:

The various terms of this expression are as follows:

K is the total effort expended (in PM) in product development, and L is the product

estimate in KLOC .

td correlate to the time of system and integration testing. Therefore, td can be relatively

considered as the time required for developing the product.

Ck Is the state of technology constant and reflects requirements that impede the development

of the program.

Typical values of Ck = 2 for poor development environment

Ck= 8 for good software development environment


Ck = 11 for an excellent environment (in addition to following software engineering

principles, automated tools and techniques are used).

The exact value of Ck for a specific task can be computed from the historical data of the

organization developing it.

Putnam proposed that optimal staff develop on a project should follow the Rayleigh curve.

Only a small number of engineers are required at the beginning of a plan to carry out

planning and specification tasks. As the project progresses and more detailed work are

necessary, the number of engineers reaches a peak. After implementation and unit testing, the

number of project staff falls.

Effect of a Schedule change on Cost

Putnam derived the following expression:

Where, K is the total effort expended (in PM) in the product development

L is the product size in KLOC

td corresponds to the time of system and integration testing

Ck Is the state of technology constant and reflects constraints that impede the progress of the

Program Now by using the above expression, it is obtained that,


(As project development effort is equally proportional to project development cost)

From the above expression, it can be easily observed that when the schedule of a project is

compressed, the required development effort as well as project development cost

increases in proportion to the fourth power of the degree of compression. It means that a

relatively small compression in delivery schedule can result in a substantial penalty of human

effort as well as development cost.

Algorithmic models:

Algorithmic modeling is a powerful computational design methodology that allows designers to

create complex geometries and shapes using mathematical algorithms. With the growing

demand for optimization and customization across industries, algorithmic modeling has

become an essential tool for architects, engineers, product designers, and digital artists.

This article provides an academic overview of algorithmic modeling, including its concepts,

historical overview, benefits, and applications.

Algorithmic Modeling Concepts

Algorithmic modeling is based on the use of mathematical algorithms to create complex

geometries and shapes. The process includes defining a set of parameters that are used to

create a design. These parameters can be adjusted and optimized to create different design
variations. Algorithmic models are created using parametric modeling software. The software

allows designers to create and modify algorithmic models in a visual programming environment.

Benefits of Algorithmic Modeling

Algorithmic modeling offers several advantages over traditional design methods, including:

Flexibility: Algorithmic models can be customized and optimized according to specific

project parameters, making it easy to change and adapt projects.

Efficiency: Algorithmic modeling enables faster and more efficient design iterations,

reducing the time required for manual adjustments and iterations.

Complexity: Algorithmic modeling allows designers to create complex shapes and figures that

would be difficult or impossible to create by hand.

Accuracy. Algorithmic models provide a high degree of precision and accuracy, which is

very important in industries such as engineering and manufacturing.

Applications of algorithmic modeling

Architecture. Architects use algorithmic modeling to create complex building designs and

explore different design options.

Engineering: Engineers use algorithmic modeling to optimize product performance and

improve manufacturing efficiency.

Product Design: Algorithmic modeling is used in product design to create complex

shapes and optimize product performance.

Digital art and animation. Algorithmic modeling is used in digital art and animation to
create complex visual effects and realistic 3D models.

Cost estimation
simply means a technique that is used to find out the cost estimates. The cost estimate is the
financial spend that is done on the efforts to develop and test software in
Software Engineering
Cost estimation models are some mathematical algorithms or parametric equations that are
used to estimate the cost of a product or a project. Various techniques or models are
available for cost estimation, also known as Cost Estimation Models as shown below :

1. Empirical Estimation Technique – Empirical estimation is a technique or model in


which empirically derived formulas are used for predicting the data that are a
required and essential part of the software project planning step. These techniques are
usually based on the data that is collected previously from a project and also based on
some guesses, prior experience with the development of similar types of projects, and
assumptions. It uses the size of the software to estimate the effort. In this technique,
an educated guess of project parameters is made. Hence, these models are based on
common sense. However, as there are many activities involved in empirical estimation
techniques, this technique is formalized. For example Delphi technique and Expert
Judgement technique.
2. Heuristic Technique – Heuristic word is derived from a Greek word that means “to
discover”. The heuristic technique is a technique or model that is used for solving
problems, learning, or discovery in the practical methods which are used for achieving
immediate goals. These techniques are flexible and simple for taking quick decisions
through shortcuts and good enough calculations, most probably when working with
complex data. But the decisions that are made using this technique are necessary to be
optimal. In this technique, the relationship among different project parameters is
expressed using mathematical equations. The popular heuristic technique is given
by Constructive Cost Model (COCOMO). This technique is also used to increase or
speed up the analysis and investment decisions.
3. Analytical Estimation Technique – Analytical estimation is a type of technique
that is used to measure work. In this technique, firstly the task is divided or broken
down into its basic component operations or elements for analyzing. Second, if the
standard time is available from some other source, then these sources are applied to
each element or component of work. Third, if there is no such time available, then the
work is estimated based on the experience of the work. In this technique, results are
derived by making certain basic assumptions about the project. Hence, the analytical
estimation technique has some scientific basis. Halstead’s software science is based
on an analytical estimation model.
Other Cost Estimation Models are:
1. Function Point Analysis (FPA): This technique counts the number and complexity
of functions that a piece of software can perform to determine how functional and
sophisticated it is. The effort needed for development, testing and maintenance can be
estimated using this model.
2. Putnam Model: This model is a parametric estimation model that estimates effort,
time and faults by taking into account the size of the the programme, the expertise of
the development team and other project-specific characteristics.
3. Price-to-Win Estimation: Often utilized in competitive bidding, this model is
concerned with projecting the expenses associated with developing a particular
software project in order to secure a contract. It involves looking at market dynamics
and competitors.
4. Models Based on Machine Learning: Custom cost estimating models can be built
using machine learning techniques including neural networks, regression analysis and
decision trees. These models are based on past project data. These models are flexible
enough to adjust to changing data and project-specific features.
5. Function Points Model (IFPUG): A standardized technique for gauging the
functionality of software using function points is offered by the International Function
Point Users Group (IFPUG). It is employed to calculate the effort required for
software development and maintenance.

Common questions

Powered by AI

Function Point Analysis (FPA) contributes to estimating software development and maintenance efforts by counting and assessing the complexity of the functions a software performs. This assessment helps determine the necessary effort for development, testing, and ongoing maintenance, providing a quantitative measure of the software's sophistication and functional requirements .

Algorithmic models in digital art and animation offer benefits such as the creation of intricate visual effects and realistic 3D models, allowing for greater creativity and detailed output. However, challenges include the need for specialized skills to manipulate algorithmic parameters effectively and potential limitations in expressive nuances traditionally crafted by hand .

Algorithmic modeling enhances the design process by offering flexibility, efficiency, complexity, and accuracy. It allows designers to create complex geometries using mathematical algorithms, enabling customization and optimization according to specific project parameters. This reduces the time required for manual adjustments and iterations, allows for creation of complex shapes that might be impossible to craft by hand, and provides a high degree of precision essential for engineering and manufacturing .

Adjusting software development schedules must be done cautiously because schedule compression can significantly increase development costs and effort, following the fourth power of the degree of compression. This indicates that even small schedule reductions can lead to substantial penalties in both human effort and cost .

Forward-looking (or top-down) approaches start with high-level project goals, breaking them down into smaller tasks for budget estimation, relying on historical data, and are less detailed initially. Backward-looking (or bottom-up) approaches begin with granular task analysis to build estimates. Combining both offers a balance, as top-down can be optimistic and bottom-up pessimistic; together, they provide comprehensive validation and adaptability throughout the project lifecycle .

COCOMO-II aids in software activity planning by estimating cost, effort, and schedules. It incorporates different sub-models catering to end-user programming and intermediate sectors, which account for varying scales of development capabilities and reusable components, thus addressing diverse application types and requirements with specificity .

Using past projects as a benchmark for software cost estimation can be unreliable due to the uniqueness of software systems and variability of technical and organizational conditions. Empirical data from previous projects may not accurately reflect current project circumstances, as conditions vary and comparable project data is often limited .

Empirical techniques rely on historical data and developed formulas to estimate project variables, focusing on common-sense approaches and previous experiences. Heuristic techniques, derived from practical methods, prioritize quick decisions using shortcuts, aiming to discover optimal solutions through simple calculations. While empirical techniques are formal, heuristic approaches emphasize adaptability and practical discovery .

Pomberger's estimation models describe varied effort distributions across software life cycle phases. In a classical sequential model: design (25%), implementation (25%), testing (15%). In prototyping-oriented: problem specification (40%), design (25%), testing (25%). Object- and prototyping-oriented results in problem specification (45%), implementation (20%), testing (18%).

Software productivity tools in compiler design offer advantages such as reduced development time and effort with code generation tools, error detection and correction with debugging tools, and performance optimization through performance analysis tools. These aspects collectively enhance the compiler development process .

You might also like