Escolar Documentos
Profissional Documentos
Cultura Documentos
1:
Assume that you have been contacted by an Organization to developed CAD
Software, after applying the size-oriented metrics an estimate of 33200 LOC is established.
Using COCOMO model develop an effort, duration and no-of-person for CAD software.
Consider the
ab = 2.4,
bb = 1.05,
cb = 2.5,
db = 0.35
Given:
LOC = 33200 = 33.2 k
FOR CAD SOFTWARE :
(ab = 2.4,
bb = 1.05,
cb = 2.5,
db = 0.35)
FORMULA:
E
= ab
(KLOC)^ bb
= cb
(E)^ db
person months
months
No. of persons
94.93
12.30
persons
7.7
Q.No.2 Explain with examples the LOC-based, FP-based and Process-based Estimation?
Problem-Based Estimation:
LOC and FP estimation are distinct estimation techniques. Yet both have a number of
characteristics in common. The project planner begins with a bounded statement of software scope
and from this statement attempts to decompose software into problem functions that can each be
estimated individually. LOC or FP (the estimation variable) is then estimated for each function.
The LOC and FP estimation techniques differ in the level of detail required for
decomposition and the target of the partitioning. When LOC is used as the estimation variable,
decomposition is absolutely essential and is often taken to considerable levels of detail.
This decomposition approach assumes that all functions can be decomposed into sub
functions that will resemble entries in a historical data base. If this is not the case, then another sizing
approach must be applied. The greater the degree of partitioning, the more like reasonable accurate
estimates of Loc can be developed.
For FP estimates, decomposition works differently. Rather than focusing on function,
each of the information domain characteristics inputs, outputs, data files, inquiries, and external
interfaces. The resultant estimates can then be used to derive a FP value that can be tied to past data
and used to generate an estimate.
An Example of LOC-Based Estimation:
Let us consider a software package to be developed for a computer-aided design
application for mechanical components. A review of the System Specification indicates that the
software is to execute on an engineering workstation and must interface with various computer
graphics peripherals including a mouse, digitizer, high resolution color display and laser printer.
Using the System Specification as a guide, a preliminary statement of software scope
can be developed:
The CAD software will accept two- and three-dimensional geometric data from an
engineer. The engineer will interact and control the CAD system through a user interface that will
exhibit characteristics of good human / machine interface design. All geometric data and other
supporting information will be maintained in a CAD database. Design analysis modules will be
developed to produce the required output, which will be displayed on a variety of graphics devices.
The software will be designed to control and interact with peripheral devices that include a mouse,
digitizer, laser printer, and plotter.
This statement of scope is preliminary it is not bounded. Every sentence would have
to be expanded to provide concrete detail and quantitative bounding. For example, before estimation
can begin the planner must determine what characteristic of good human / machine interface design.
All geometric data and other supporting information will be maintained in a CAD database. Design
analysis modules will be developed to produce the required output, which will be displayed on a
variety of graphics devices. The software will be designed to control and interact with peripheral
devices that include a mouse, digitizer, laser printer, and plotter.
This statement of scope is preliminary it is not bounded. Every sentence would have
to be expanded to provide concrete detail and quantitative bounding. For example, before estimation
can being the planner must determine what characteristics of good human / machine interface
deface design means or what the size and sophistication of the CAD database is to be.
For our purposes, we assume that further refinement has occurred and that the
following major software functions are identified:
User interface and control facilities (UICF)
Two-dimensional geometric analysis (2DGA)
Three-dimensional geometric analysis (3DGA)
Database management (DBM)
Computer graphics display facilities (CGDF)
Peripheral control function (PCF)
Design analysis modules (DAM)
Following the decomposition technique of LOC, an estimation table, shown in Figure1, is developed. A range of LOC estimates is developed for each function. For example, the range of
LOC estimates for the 3D geometric analysis function is optimistic 4600 LOC, most likely 6900
Loc, and pessimistic 8600 LOC.
Function
Estimated LOC
2,300
5,300
6,800
3,350
4,950
2,100
8,400
33,200
Figure-1
Applying Equation [S= (Sopt +4Sm+Spe)/6], the expected value for the 3D geometric
analysis function is 680 LOC. Other estimates are derived in a similar fashion. By summing
vertically in the estimated LOC column, an estimate of 33,200 lines of code is established for the
CAD system.
A review of historical data indicates that the organizational average productivity for
systems of this type is 620 LOC/pm. Based on a burdened labor rate of $8000 per month; the cost per
line of code is approximately $13. Based on the LOC estimate and the historical productivity data,
the total estimated project cost is $431,000 and the estimated effort is 54 person-months.
An Example of FP-based estimation:
Decomposition for FP-based estimation focuses on information domain values rather
than software functions. Referring to the function point calculation table presented in Figure-2, the
project planner estimates inputs, outputs, inquiries, files, and external interfaces for the CAD
software. For the purposes of this estimate, the complexity weighting factor is assumed to be
average. Figure-2 presents the results of this estimate.
Opt.
Likely
Pess.
Est.
count
Weight
FP
count
Number of inputs
20
24
30
24
97
Number of outputs
12
15
22
16
78
Number of inquiries
16
22
28
22
88
Number of files
10
42
15
Count total
320
Figure-2
Each of the complexity weighting factors is estimated and the complexity adjustment
factor is computed.
Factor
Value
Backup and recovery
Data communications
Distributed processing
Performance critical
Conversion/installation in design
Multiple installations
1.17
Process-Based Estimation:
The most common technique for estimating a project is to base the estimate on the
process that will be used. That is, the process is decomposed into a relatively small set of tasks and
the effort required to accomplish each task is estimated.
Like the problem-based techniques, process-based estimation begins with a
delineation of software functions obtained from the project scope. A series of software process
activities must be performed for each function.
Once problem functions and process activities are melded, the planner estimates the
effort (e.g., person-months) that will be required to accomplish each software process activities for
each software function.
Activity
CC
Planning Risk
Engineering
analysis
Construction
release
Task
Analysis
Design
Code
Test
Function
UICF
2DGA
3DGA
CGDF
DBM
PCF
DAM
0.50
0.75
0.50
0.50
0.50
0.25
0.50
2.50
4.00
4.00
3.00
3.00
2.00
2.00
0.40
0.60
1.00
1.00
0.75
0.50
0.50
5.00
2.00
3.00
1.50
1.50
1.50
2.00
20.50
4.50
16.50
10%
36%
Total
0.25 0.25
0.25
3.50
% effort
1%
1%
8%
45%
Figure-3
1%
CE
Totals
n/a
n/a
n/a
n/a
n/a
n/a
n/a
8.40
7.35
8.50
6.00
5.75
4.25
5.00
46.00
Based on an average burdened labor rate of $8000 per month, the total estimated
project cost is $368000 and the estimated effort is 46 person-months. If desired, labor rates could be
associated with each software process activity or software engineering task and computed separately.
Total estimated effort for the CAD software range from a low of 465 person-months
9derived using a process-based estimation approach) to a high of 58 person-months (derived using an
FP estimation approach). The average estimate (using all three approaches) is 53 person-months. The
maximum variation from the average estimate is approximately 13 percent.
Q.No 3(a) Explain Software Size and function oriented matrices and Measurements?
Measurement:
Measurements in the physical world can be categorized in two ways: direct measures
(e.g., the length of bolt) and indirect measures (e.g., the quality of bolt produced, measured by
counting rejects). Software metrics can be categorized similarly.
Direct measures of the software engineering process include cost and effort applied.
Direct measures of the product include lines of code (LOC) produced, execution speed, memory size,
and defects reported over some set period of time. Indirect measures of the product include
functionality, quality, complexity, efficiency, reliability, maintainability, and many other -abilities.
The cost and effort required building software, the number of lines of code produced,
and other direct measures are relatively easy to collect, as long as specific conventions for
measurement are established in advance. However, the quality and functionality of software or its
efficiency or maintainability are more difficult to assess and can be measured only indirectly.
Size-Oriented Metrics:
Size-oriented software metrics are derived by normalizing quality and / or
productivity measures by considering the size of the software that has been produced. If a software
organization maintains simple records, a table of size-oriented measures such as the one show in
Figure 4.4, can be created. The table lists each software development project that has been completed
over the past few years and corresponding measures for the project. Referring to the table entry for
project alpha: 12,100 lines of code were developed with 24 person-months of effort at a cost of
$168,000. It should be noted that the effort and cost recorded in the table represent all software
engineering activities (analysis, design, code, and test), not just coding. Further information for
project alpha indicates that 365 pages of documentation were developed, 134 errors were recorded
before the software was released, and 29 defects were encountered after release to the customer
within the first year of operation. Three people worked on the development of software for project
alpha.
Project
Alpha
Beta
Gamma
-
LOC
12100
27200
20200
-
Effort
24
62
43
-
$ (000)
168
440
314
-
Pp. doc.
365
1224
1050
-
Errors
134
321
256
-
Defects
29
86
64
-
People
3
5
6
-
If we chose lines of code as our normalization value. From the rudimentary data contained in the
table, a set of simple size-oriented metrics can be developed for each project:
Errors per KLOC (thousand lines of code).
Defects 4 per KLOC.
$ Per LOC.
Page of documentation per KLOC.
In addition, other interesting metrics can be computed:
Errors per person-month.
LOC per person-month.
$ Per page of documentation.
Function-Oriented Metrics:
Count
Weighting factor
Simple Average Complex
x 3
4
6
x 4
x 3
Number of files
x 7
10
15
x 5
10
Count total
Figure-4
Number of user inputs
Number of user outputs
Number of user inquiries
Number of files
Number of external interfaces.
To compute function points (FP), the following relationship is used:
FP = count total x [0.65 + 0.01 x (Fi)]
Where count total is the sum of all FP entries obtained from Figure-4.
The Fi (i = 1 to 14) are complexity adjustment values.
Once Function points have been calculated, they are used in a manner analogous to
LOC as a way to normalize measures for software productivity, quality, and other attributes:
Errors per FP.
Defects per FP.
$ per FP
Pages of documentation per FP.
FP per person-month.
Based on these questions, the software organization can derive the following sub goal:
improve the performance of the change management process. The software process entities and
attributes that are relevant to the sub goal are identified and measurement goals associated with them
are delineated.
The SEI provides detailed guidance for steps 6 through 10 of its goal-driven
measurement approach. In essence, a process of stepwise refinement is applied in which goals are
refined into questions that are further refined into entities and attributes that are then refined into
metrics.
Count
12
60
9
6
3
36
24
Weight
4
5
4
10
7
5
-
Now assume that 14 questions have been counted and are equal to
Fi (i =1 To 14) = 42
FP = Count Total * [0.65 + 0.01 *
= 657 *
[0.65+0.01*42]
= 703 approx.
Fi ]
Functional Count
36
300
36
60
21
180
24
657
Adaptation criteria are used to determine the recommended degree of rigor with
which the software process should be applied on a project. Eleven adaptation criteria [PRE99] are
defined for software projects:
Size of the project
Number of potential users
Mission Criticality
Application longevity
Stability of requirements
Ease of customer / developer communication
Maturity of applicable technology
Performance Constraints
Embedded and non embedded characteristics
Project staff
Reengineering factors
Each of the adaptation criteria is assigned a grade that ranges between 1 and 5, where
1 represents a project win which a small subset of process tasks are required and overall
methodological and documentation requirements are minimal, and 5 represents a project in which a
complete set of process tasks should be applied and overall methodological and documentation
requirements are substantial.
(b) Earned Value Analysis:
A technique for performing quantitative analysis of progress does exist. It is called
earned value analysis (EVA).
Humphrey (HUM95) discusses earned value in the following manner:
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 ever task is given an earned value based on its estimated percentage of the total.
Stated even more simply, earned value is a measure of progress. It enables us to
assess the percent of completeness off a project using quantitative analysis rather than rely on a gut
feeling. In fact, Fleming and Koppleman [FLE98] argue that earned value analysis provides
accurate and reliable readings of performance from as early as 15 percent into the project.
The budgeted cost of work scheduled (BCWS) determined for each work task represented in the
schedule. During the estimation activity, the work (in person-hours or person-days) of each of each
software engineering task is planned. Hence, BCWS, is the effort planned for work task i. To
determine progress at a given point along the project schedule, the value of BCWS is the sum of the
BCWS, value for all work tasks that should have been completed by that point in time on the project
schedule.
The BCWS values for all works tasks are summed to derive the budget at completion, BAC. Hence,
BAC = (BCWSK) for all tasks k
Next, the value for budgeted cost of work performed (BCWP) is computed. The value of BCWP is
the sum of the BCWS values for all work tasks that have actually been completed by a point in time
on the project schedule.
Given values for BCWS, BAC, and BCWP, important progress indicators can be
computed:
Schedule performance index, SPI = BCWP / BCWS
Schedule variance, SV = BCWP BCWS
SPI is an indication of the efficiency with which the project is utilizing scheduled
resources. An SPI value close to 1.0 indicates efficient execution of the project schedule. SV is
simply an absolute indication of variance from the planned schedule.
(c) Outsourcing:
In concept, outsourcing is extremely simple. Software engineering activities are
contacted to a third party who does the work at lower cost and, hopefully, higher quality. Software
work conducted within a company is reduced to a contract management activity.
The decision to outsource can be either strategic or tactical. At the strategic level,
business managers consider whether a significant portion of all software work can be contracted to
others. At the tactical level, a project manager determines whether part or all of a project can be best
accomplished by subcontracting the software work.
Regardless of the breadth of focus, the outsourcing decision is often a financial one.
On the positive side, cost savings can usually be achieved by reducing the number of
software people and the facilities (e.g., computers, infrastructure) that support them. On the negative
side, a company loses some control over the software that it needs. Since software is a technology
that differentiates its systems, services, and products, a company runs the risk of putting the fate of
its competitiveness into the hands of a third party.
The trend toward outsourcing will undoubtedly continue. The only way to blunt the
trend is to recognize that software work is extremely competitive at all levels. The only way to
survive is to become as competitive as the outsourcing vendors themselves.
(d) CASE (Computer-Aided Software Engineering):
Computeraided software engineering (CASE) tools assist software
engineering managers and practitioners in every activity associated with the software process. They
automate project management activities; manage all work products produced throughout the process,
and assist engineers in their analysis, design, coding and test work. CASE tools can be integrated
within a sophisticated environment.
Project managers and software engineers use CASE.
Software engineering is difficult. Tools that reduce the amount of effort required to
produce a work product or accomplish some project milestone have substantial benefit. But theres
something thats even more important. Tools can provide new ways of looking at software
engineering information ways that improve the insight of the engineer doing the work. This leads
to better decisions and higher software quality.
CASE is used in conjunction with the process model that is chosen. If a full tool set is
available, CASE will be used during virtually every step of the software process.
CASE tools assist a software engineer in producing high quality work products. In
addition, the availability of automation allows the CASE user to produce additional customized work
products that could not be easily or practically produced without tool support.
Use tools to complement solid software engineering practices not to replace them.
Before tools can be used effectively, software process framework must be established software
engineering concepts and methods must be learned, and software quality must be emphasized. Only
then will CASE provide benefit.
(e) Software Testing:
Once source code has been generated, software must be tested to uncover (and correct) as
many errors as possible before delivery to your customer. Your goal is to design a series of test cases
that have a high likelihood of finding errorsbut how? Thats where software testing techniques
enter the picture. These techniques provide systematic guidance for designing tests that (1) exercise
the internal logic of software components, and (2) exercise the input and output domains of the
program to uncover errors in program function, behavior and performance.
During early stages of testing, a software engineer performs all tests. However, as the
testing process progresses, testing specialists may become involved.
Reviews and other SQA activities can and do uncover errors, but they are not
sufficient. Every time the program is executed, the customer tests it! Therefore, you have to execute
the program before it gets to the customer with the specific intent of finding and removing all errors.
In order to find the highest possible number of errors, tests must be conducted systematically and test
cases must be designed using disciplined techniques.
Software is tested from two different perspectives: (1) internal program logic is
exercised using white box test case design techniques. Software requirements are exercised using
block box test case design techniques. In both cases, the intent is to find the maximum number of
errors with the minimum amount of effort and time.
Work product: A set of test cases designed to exercise both internal logic and external
requirements is designed and documented, expected results are defined, and actual results are
recorded.
When you begin testing, change you point of view. Try hard to break the software!
Design test cases in a disciplined fashion and review the test cases you do create for thoroughness.
TESTING PRINCIPLES:
All tests should be traceable to customer requirements.
Tests should be planned long before testing begins.
The Pareto principle applies to software testing.
Testing should begin in the small and progress toward testing in the large.
Exhaustive testing is not possible.
To me most effective, testing should be conducted by an independent third party.
An Empirical Relationship:
We can demonstrate the highly nonlinear relationship between chronological time to
complete a project and human applied to the project. The number of delivered lines of code (source
statements), LO, is related to effort and development time by the equation:
L = P x E1/3 t4/3
Where E is development effort in person-months, P is productivity parameter that
reflects a variety of factors that lead to high-quality software engineering work (typical values for P
range between 2,000 and 12,000), and t is the project duration in calendar months.
Rearranging this software equation, we can arrive at an expression for development
effort E:
E = L3 / P 3 t 4
Where E is the effort expended (in person-years) over the entire life cycle for software
development and maintenance and t is the development time in years. The equation for development
effort can be related to development cost by the inclusion of a burdened labor rate factor ($/personyear).
This leads to some interesting result. Consider a complex, real-time software project
estimated at 33,000LOC, 12 person-years of effort. If eight people are assigned to the project team,
the project can be completed in approximately 1.3 years. If, however, we extend the end-date to 1.75
years, the highly nonlinear nature of the model described in equation (7-1) yields:
E = L3 / (P3t4) 3.8 person-years.
This implies that, by extending the end-date six months, we can reduce the number of
people from eight to four!
Q.No.06 (b):
= 15000
= 0.16
= embedded software
= 2000
= 10000
= Business application
= 28000
= 6 months
= 0.5 years
FORMULA:
E = BL3 / P3 t4
SOLUTION:
for Embedded software,
E = 0.16 (15000)3
(2000)3 (0.5)4
= 5.4 x 1011
5 x 108
= 5.4 x 1011
6.24 x 1010
= 5.4 x 1011
1.372x 1012
(a)
(b)
Q. No. 7(b) Calculate the software cost for building, reusing, buying, and contracting a
software system by considering the following decision tree diagram. What decision would you
like for this kind of software system?
FORMULA:
SOLUTION:
Expected cost (build)
RESULT:
Based on the probability and projected costs that have been given in tree, the lowest
expected cost in the buy option.