Download Software Cost Estimation-Basics of Software Engineering-Lecture Slides and more Slides Software Engineering in PDF only on Docsity! Software Cost Estimation Software cost estimation involves predicting the resources required for a software development process 1 COMP201 - Software Engineering docsity.com Fundamental Estimation Questions How much effort is required to complete an activity? How much calendar time is needed to complete an activity? What is the total cost of an activity? Project estimation and scheduling and interleaved management activities 2 COMP201 - Software Engineering docsity.com Software Pricing Factors
Factor
Description
Market opportunity
A development organisation may quote a low price
because it wishes to move into a new segment of the
software market. Accepting a low profit on one
project may give the opportunity of more profit later.
The experience gained may allow new products to be
developed.
Cost estimate uncertainty
If an organisation is unsure of its cost estimate, it
may increase its price by some contingency over and
above its normal profit.
Contractual terms
A customer may be willing to allow the developer to
retain ownership of the source code and reuse it in
other projects. The price charged may then be less
than if the software source code is handed over to the
customer.
Requirements volatility
If the requirements are likely to change, an
organisation may lower its price to win a contract.
After the contract is awarded, high prices may be
charged for changes to the requirements.
Financial health
Developers in financial difficulty may lower their
price to gain a contract. It is better to make a small
profit or break even than to go out of business.
COMP201 - Software Engineering
docsity3icom
Programmer Productivity A measure of the rate at which individual engineers involved in software development produce software and associated documentation Not quality-oriented although quality assurance is a factor in productivity assessment Essentially, we want to measure useful functionality produced per time unit 6 COMP201 - Software Engineering docsity.com Productivity Measures Size-related measures based on some output from the software process. This may be lines of delivered source code, object code instructions, etc. Function-related measures based on an estimate of the functionality of the delivered software. Function-points are the best known of this type of measure 7 COMP201 - Software Engineering docsity.com Productivity Comparisons The lower level the language, the more productive the programmer The same functionality takes more code to implement in a lower-level language than in a high-level language 10 COMP201 - Software Engineering docsity.com High and Low Level Languages 11 COMP201 - Software Engineering docsity.com Function Points Based on a combination of program characteristics external inputs and outputs user interactions external interfaces files used by the system A weight is associated with each of these The function point count is computed by multiplying each raw count by the weight and summing all values 12 COMP201 - Software Engineering docsity.com
Factors Affecting Productivity
Factor Description
Application domain Knowledge of the application domain is essential for
experience effective software development. Engineers whoalready
understand a domain are likely to be the most
| productive.
Process quality The development process used can have a significant
effect on productivity. This is covered in Chapter 31.
Project size The larger a project, the more time required for team
communications. Less time is available for
| development so individual productivity is reduced. |
Technology support Good support technology such as CASE tools,
supportive configuration management systems, etc.
| can improve productivity. |
Working environment As discussed in Chapter 28, a quiet working
environment with private work areas contributes to
improved productivity.
(®) COMP201 - Software Engineering docsit\Scom
Quality and Productivity It could be argued that all metrics based on volume/unit time are flawed because they do not take quality into account Productivity may generally be increased at the cost of quality It is not clear how productivity/quality metrics are related If change is constant (simplifying and improving code for example) then an approach based on counting lines of code is not meaningful 16 COMP201 - Software Engineering docsity.com Estimation Techniques There is no simple way to make an accurate estimate of the effort required to develop a software system Initial estimates are based on inadequate information in a user requirements definition The software may run on unfamiliar computers or use new technology The people in the project may be unknown Project cost estimates may be self-fulfilling The estimate defines the budget and the product is adjusted to meet the budget 17 COMP201 - Software Engineering docsity.com Expert Judgement One or more experts in both software development and the application domain use their experience to predict software costs. Process iterates until some consensus is reached. Advantages: Relatively cheap estimation method. Can be accurate if experts have direct experience of similar systems Disadvantages: Very inaccurate if there are no experts! 20 COMP201 - Software Engineering docsity.com Estimation by Analogy The cost of a project is computed by comparing the project to a similar project in the same application domain Advantages: Accurate if project data available Disadvantages: Impossible if no comparable project has been tackled. Needs systematically maintained cost database 21 COMP201 - Software Engineering docsity.com Parkinson's Law The project costs whatever resources are available Advantages: No overspend Disadvantages: System is usually unfinished Parkinson’s Law states that work expands to fill the time available. The cost is determined by available resources rather than by objective statement. Example: Project should be delivered in 12 months and 5 people are available. Effort = 60 p/m 22 COMP201 - Software Engineering docsity.com Estimation Methods Each method has strengths and weaknesses Estimation should be based on several methods If these do not return approximately the same result, there is insufficient information available Some action should be taken to find out more in order to make more accurate estimates Pricing to win is sometimes the only applicable method 25 COMP201 - Software Engineering docsity.com Experience-Based Estimates Estimating is primarily experience-based However, new methods and technologies may make estimating based on experience inaccurate Object-oriented rather than function-oriented development Client-server systems rather than mainframe systems Off the shelf components Component-based software engineering CASE tools and program generators 26 COMP201 - Software Engineering docsity.com Pricing to Win This approach may seem unethical and unbusinesslike? However, when detailed information is lacking it may be the only appropriate strategy The project cost is agreed on the basis of an outline proposal and the development is constrained by that cost A detailed specification may be negotiated or an evolutionary approach used for system development 27 COMP201 - Software Engineering docsity.com