Beruflich Dokumente
Kultur Dokumente
Consists of:
Project Planning
Estimation
Scheduling
Resource Allocation
Effort
Cost
Time
HW / SW Res Alloc
Estimation
Effort = The amount of work involved in a project = no. of people x time
Units man-days, man-hours, man-months etc. E.g. if a project takes 6 people 100 days to complete, then the effort estimate is 600 mandays = 600*8 man-hours (considering 8 hours of work per day) = 600/23 man-months (23 working days per month). There are many methods of estimating the effort from the given requirements, some of which will be covered here. The very first thing determined in project planning is effort estimate. After the effort is known, the cost and time can be easily calculated. Also, scheduling of the work and resource allocation can be done.
etc) 3. Output data formatting (e.g. currency format, date format etc.)
4. Calculation of auto-calculated fields, such as totals etc, 5. Database queries for displaying a list of records, for displaying each record, for
inserting a new record and for updating an existing record, and for deleting records
6. Code for Functions for each button on the screen. Enabling and disabling of buttons
in different states 7. Any other business logic and calculation formulas 8. Field tab sequences
Count the number of simple, medium and complex items required from the software requirements and design, and fill the above table.
Complex (mandays) 4 4 4 4 1
3 ?
5 ?
10 ?
Phase Requirements Specifications Project Planning Project Management Architecture Design Coding Integration User Documentation QA Total Add time for other activities, such as deployment, training, client acceptance testing etc.
Suppose the total coding effort for a project is 100 man-days. The table above shows the example results for all other phases The total effort for all phases = coding effort *100 / coding percentage = 100 *100/24 = 417 man-days
The effort for each phase = total effort * phase percentage / 100 = 417 *8 / 100 = 33 man-days
Unless you spend this amount of effort on all phases, a well-designed and good quality software will not be developed.
Transactional Function Points (Data in Motion) 1. EI External Input a data input screen with record insert or modify functions 2. EO External Output a data / results calculation and display screen or report, with query and view of records and with some calculated results or logical processing 3. EQ External Query a data display screen or report, with no calculated results, but just data queried and displayed from a database, such as a record view and search function
Data Function Points (Data at Rest) 4. ILF Internal Logical File A file or database table for saving the data within the system 5. EIF External Interface File a file or table belonging to an external system, from which our system accesses and uses the data. The responsibility of inputting and maintaining data in the EIF is of the external system. Our system only reads and uses the data of the EIF. E.g. if a purchasing system needs the account codes for billing, it reads the account codes from the accounting system. The account codes belong to, and are saved and modified by the accounting system, not by the purchasing system. For the accounting system, they are an ILF, but for the purchasing system, they are an EIF.
If a single screen has read as well as write functions insert, modify, view, search, then it will be counted as both EI as well as EO or EQ (i.e. either EI and EO, or EI and EQ).
A screen cannot be counted as both EO and EQ. If it has any calculated + queried
data, then it is counted as EO, otherwise if it has only queried data, then it is counted as EQ.
The above components can have the following characteristics: 1. DETs Data Element Types. All of the above components can have DETs.
1.1. For screens (EI, EO, EQ), DETs are the data fields + Error Messages + 1 DET for
all of the buttons on the screen, including 1 DET for each calculated value.
1.2. Each error message that the screen can produce, (e.g. each validity check of
the fields) counts as a DET. 1.3. A group of radio buttons, that together present a single choice field count as one DET. However, separate check boxes which provide independent choices count as separate DETs. 1.4. 1.5. All command buttons on the screen together count as a single DET. For Reports (EO / EQ), DETs are the no of data fields.
1.6. For tables or files (ILF, EIF), DETs are the data fields
2. RETs Record Element Types. These are the number of logical entities within one file or table. It is a user recognizable subgroup of data elements within a file or table. In case of normalized tables, there is only one RET in each table. In case of un-normalized tables, there can be multiple entities or RETs in one table E.g. Un-normalized sale table: SaleID, SaleDate, SaleType, Customer ID, CustomerName, CustomerPhone, Item, Quantity, Price, Total. This contains 3RETs: Sale, Customer, and Sale Items.
3. FTRs - File Type Referenced. A FTR is a file type referenced by a transaction. An FTR must also be a internal logical file or an external interface file. It is the number of logical entities that are used in a transaction.
Examples
1 Item
EI
A
Hawk P ILF
EI Table
UFP
Data Elements 1-4 0-1 2-3 >3 5-15 > 15 Ave Hig h
FTRs Data Elements 1-5 0-1 2-3 >3 6-19 > 19 Ave Hig h Hig h
Rating
UFP EO EQ EI
4 5 7
3 4 6
3 4 6
High Hig h
14 General Characteristics:
1. Data Communications 2. Online Update 3. Distributed Functions 4. Complex Processing 5. Performance 6. Reusability 7. Heavily Used Configuration 8. Installation Ease 9. Transaction Rate 10. 11. 12. 13. 14. 15. Result: Total Degrees of Influence(DI) = sum of above factors (total 0 to 70) VAF = 0.65+0.01 x DI (VAF value from 0.65 to 1.35) Adjusted Function Points AFP = UFP x VAF Operational Ease Online Data Entry Multiple Sites End User Efficiency Facilitate Change
Benefits
1. Is a structured technique of classifying components of a system based upon systematic rules.
2. Measures software by quantifying its functionality provided to the user based primarily on the logical design instead of the implementation 3. A standard method for measuring software development from the customers point of view 4. Can be used to size software applications accurately. 5. Can be counted by different people, at different times, to obtain the same measure within a reasonable margin of error. 6. Are easily understood by the non technical user.
Cost Estimation
The basic calculation of cost from effort is simple: Cost = Effort x Rate x any conversion factor E.g. Effort = 100 man-days, Rate = $18 per hour, Cost = 100 man-days x $ 18 per hour * 8 hours per day = $14400. However there are the following 3 modifications to this simple approach.
1. For different tasks/phases of the project, the rates can be different, depending on
whether senior or junior persons perform these tasks. So, their effort should be totaled separately and multiplied by their own rates e.g. Phase Requirements and Specs Rate $25 per hour Effort 100 man-days 50 100 200 150 50 Cost ?
Proj Planning and $30 per hour Mgmt Design Coding and Integration QA User Documentation $25 per hour $18 per hour $15 per hour $10 per hour
2. If you are making something very new and unique, for which only your software
house has the knowledge and new creative ideas, and which will help the client to save or earn a lot of money, then the price for that work is generally not related to the actual cost or effort of performing the work. Instead the price depends on how much the client will benefit from using this software, or its value to the client. This is called value pricing. E.g. if you provide a very new and unique ticketing system to an airline that enables the airline to save (or earn additional) $ 1 million per year, and no other software house has your new and unique ideas, and if it costs you $200,000 to develop this software according to the actual effort estimate, then you can demand from the client $750,000 for it, because unless the client pays this amount, he cannot save or earn $1 million per year. In this case, the client will be pleased to pay this amount, since he knows he can recover it easily. This is the price not of the work done, but of the intellectual contribution. However, care must be taken to sign confidentiality and intellectual property rights agreements with the client, so that the client cannot take your ideas and go to another cheap software house for development.
3. For bidding, you also need to consider not only how much effort is required in the
project, but also who may be your competitors, and how much they might bid for the project (which is usually a guess). This is because when bidders are equally qualified, the bidder with the lowest price gets the contract. So, if your rate is $18 per hour and your total price is $100,000, then another company bidding $ 99,000 may get the contract and you may lose it. On the other hand, if you think that all other companies concerned will bid over $200,000, then there is no benefit for you
to bid $100,000, since you can also get the contract, as well as more money by bidding higher.
Time Estimate
Again, the basic time estimate is very easy, if the effort estimate is known. Time = Effort / People e.g. Effort 100 man-days, people = 10, time = 10 days. Public holidays and week-ends must be considered in calculating the calendar days. The above is valid as long as the work consists of small pieces which can be easily divided between the team members. (e.g. if 20 screens and 20 reports are to be developed which are not dependent on each other, then each developer can develop X screens and X reports. However, for a large team size, you cannot achieve a very small completion time, e.g. for 100 man-days effort, with 50 people, the work cannot be completed in 2 days. This is because for each person, there is some overhead of understanding the project and the work to be performed, as well as there is communication overhead, which increases as the team becomes larger. So for large team size, the effort estimate increases. E.g. Team Size Effort Estimate (or actual amount of work to be done) man-days 50 50 75 100 Time days 50 10 7.5 5
1 5 10 20
There is no formula for these numbers, and they may be different for your project. They have to be estimated from experience.
Intermediate COCOMO
This is an effort estimation technique based on the lines of code required in a software. If the number of lines of code can be estimated by some other method, then COCOMO gives the effort estimate for those lines of code in man-days. There are 4 types of COCOMO, Basic, Intermediate, Detailed, and COCOMO-II (a revised and extended version) They use different formulas and parameters for effort estimation. For a detailed explanation of all types, See Futrell, Ch. 11. Here, we will study Intermediate COCOMO briefly. Input: KLOC = 1000 line of code Effort E (man-months) = a x KLOCb x fifteen multipliers There are 3 types of projects which have different values of a and b. The definitions and formulas of those types of projects are given below:
Project Type
Code Size
Project Size
Innovation
Organic
2-50 KLOC
Small
Semidetatched Embedded
Medium Large
Medium Severe
Definition Simple systems, small projects, e.g. payroll, inventory, scientific calculation etc More complex systems, larger projects, e.g. operating system, compilers, databases (oracle etc)
Effort Estimate formula 3.2 x KLOC1.05 x fifteen multipliers 3.0 x KLOC1.12 x fifteen multipliers
Semidetatc hed
Embedded
Very complex Real time systems, such as medical, aerospace, military etc.
Example, for an organic project, with all multiplying factors =1, it takes 3.2 manmonths for 1000 lines of code, or approx 13-14 lines of code per day. Note that this is the total effort for the project, for all phases not just the coding effort. The effort for each phase can be estimated using the percentage distribution of effort between phases. In many books, the lines of code is called as KDSI (1000 delivered source instructions) instead of KLOC, and it includes counting of each computer instruction separately. There may be more than one instructions in a line, e.g. c=d++ has 2 instructions.
Cost Drivers
The fifteen multipliers in the formula are called cost drivers, which give some multiplying factors depending on certain properties of the project, the language and the team. These factors are all multiplied in the above formula to get the final effort estimate. The cost drivers or multiplying factors are as follows Cost Drivers and Categories Product Attributes Required Software Reliability Database Size Product Complexity Computer Attributes Execution Time Constraint Main Storage Constraint Virtual Machine Volatility Computer Turnaround Time Personnel Attributes Analyst Capability Application Experience Programmer Capability Virtual Machine Experience 1.46 1.29 1.42 1.21 1.19 1.13 1.17 1.1 1.00 1.00 1.00 1.00 .86 .91 .86 .9 .71 .82 .7 .87 .87 1.00 1.00 1.00 1.00 1.11 1.06 1.15 1.07 1.3 1.21 1.3 1.15 1.66 1.56 .7 .75 .88 .94 .85 1.00 1.00 1.00 1.15 1.08 1.15 1.4 1.16 1.3 1.65 Very Low Low Nomin al High Very High Extra High
Programming Language Experience Project Attributes Use of modern programming practices Use of software tools Required development schedule
1.14
1.07
1.00
.95
Disadvantages of COCOMO
1. This is not really an estimation method, as you cannot determine the effort from the requirements given. You still need another method to estimate the number of lines of code required. However, lines of code can again be estimated from experience from the number of screens, reports, objects, procedures etc required and their complexity. E.g. how many lines of code are required for a simple, medium or complex screen, report, procedure etc. These can be totaled for all the development items required. 2. The lines of code required for the same task vary greatly with the selected development environment and language, and also the time/effort taken for the same number of lines of code varies with the development environment and language, depending on the automation and facilities in the tool being used. 3. Nowadays, a huge amount of code is auto-generated using a wizard, and only some specific user-defined logic is added by hand. So, the auto-generated code should be excluded from the effort, since it does not take manual effort or time 4. Different developers would perform exactly the same task in different number of lines, e.g. some developers will often combine 2 or 3 lines in one line e.g. if((c=a+ +)==0). So it is very difficult to estimate (a) how many lines of code a particular developer will use for a task and (b) how much time it will take. Comments are often included in the lines of code, and they should be excluded from counting lines of code, so counting the lines of code needs a tool which can analyze the lines and count. However, adding detailed comments also takes some extra time/effort.