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.