Designing GUI Using Java With AWT

advertisement
Project Planning
Instructor: Dr. Jerry Gao
Project Planning
- Software Scope
- Obtaining Information Necessary for Scope
- A Scoping Example
- Resources
- Software Project Estimation
- Decomposition Techniques
- Software Sizing
- Problem-based Estimation
- Process-Based Estimation
- Empirical Estimation Models
- The Structure of Estimation Models
- The COCOMO Model
- The Software Equation
- The Make-Buy Decision
Jerry Gao, Ph.D. Jan. 1999
Project Planning
Project planning is one of the first activity in a software process.
The quality and accuracy of a software project
---> affect the process, product quality, and schedule.
Objectives: reasonable estimation on resources, cost, and schedule
Major problem in project planning is the uncertainty of a project plan.
The risks caused by:
- Project complexity
- Project size
- The degree of structural uncertainty
- Understanding of the project and system
- Changes of requirements
Note: a project manager should not become obsessive about estimation.
Modern software engineering approaches take an iterative view of
development.
Revisit the estimation and revise it when the customer makes changes to
requirements.
Software Scope
The first activity in software project planning
--> determination of software scope.
Goal:
To define a unambiguous and understandable project scope
at management and technical levels.
Software scope:
function, performance, constraints, interfaces, and reliability.
delivery deadlines, budgetary restrictions, personnel availability
technical interfaces, and so on.
Without these information, it is impossible
- To define reasonable estimates of the cost
- To conduct an effective assessment of risk
- To do realistic breakdown of project tasks
- To come out a manageable project schedule
Obtaining Information
To define a project scope, we need a lot of information through a
communication process.
A preliminary meeting or interview is a common technique to bridge the
communication gap between engineers and the customer.
Analysts must ask context free questions to lead a basic understanding of
the problem and the desired solutions.
Communication with the customer -->
- definition of the data, functions, and behavior,
- the performance and constraints.
Questions focus on the customer, goals, and the benefits:
- Who is behind the request for this work?
- Who will use the solution?
- What will be the economic benefit of a successful solution?
- Is there another source for the solution?
Obtaining Information
Questions focus on solutions (from the customer’s perceptions):
- How would you characterize “good” output that would be
generated by a successful solution?
- What problem(s) will this solution address?
- Can you show me (or describe) the environment where the
solution will be used?
- Are there special performance issues (or constraints)?
The final set of questions: (meta-questions)
- Are you the right person to answer these questions? Are your
answers “official”?
- Are my questions relevant to the problem that you have?
- Am I asking too many questions?
- Is there anyone else who can provide additional information?
- Is there anything else that I should be asking you?
The Q&A session should be used for the first encounter only.
Resources
People
Reusable Software
Components
Hardware/Software Tools
Reusable Software Resources:
Bennatan [Ben92] suggests four software resource categories:
- Off-the-shelf components: third-party software, ready for use and validated.
- Full-experience components: existing specification, design, code or test data from past projects.
---> small changes and low risk.
- Partial-experience components: existing specification, design, code, or test data from past projects.
---> needs a lot of changes, a fair degree of risk.
- New components: new software components must be built by the software team .
Resources
People
Reusable Software
Components
Hardware/Software Tools
Reusable Software Resources:
Bennatan [Ben92] suggests four software resource categories:
- Off-the-shelf components: third-party software, ready for use and validated.
- Full-experience components: existing specification, design, code or test data from past projects.
---> small changes and low risk.
- Partial-experience components: existing specification, design, code, or test data from past projects.
---> needs a lot of changes, a fair degree of risk.
- New components: new software components must be built by the software team .
Resources
Guidelines used by software planner when reusable components are specified as a resource:
- If off-the-shelf components meet project requirements, acquire them.
Because: cost is low, risk is small.
- If full-experience components are available, the risks associated with modification and
integration are generally acceptable. The project plan should reflect this.
- If partial-experience components are available, their use for the current project should be
analyzed in detail.
Software Project Estimation
Software cost and effort estimation will never be an exact science. Too many variables can affect
the ultimate cost of software and effort.
For example, human, technical, environmental, political,….
To achieve reliable cost and effort estimation, a number of options arise:
- Delay estimation until late in the project.
--> not practical.
- Base estimation on similar completed projects
--> work reasonability well if the current project is quit similar to the past projects.
However, past experience has not always been a good indicator.
- Use relatively simple “decomposition techniques” to generate project cost and effort estimation
--> a viable approach to software project estimation.
- Use one or more empirical models for software cost and effort estimation.
--> can be used to complement decomposition techniques and offer a potentially
valuable estimation approach.
--> based on the past experience in a specific environment for application projects.
Decomposition Techniques
-->
Problem decomposition and process decomposition
Before an estimate can be made, the project planner must understand the scope
of the software to be built and generate an estimate of its “size”.
Software Sizing:
The accuracy of a software project estimate is predicated on a number things:
- The degree to which the planner has properly estimated the size of the product
to be built.
- The ability to translate the size estimate into human effort in time and cost.
- The degree to which the project plan reflects the abilities of the software team
- The stability of product requirements and the environment that supports the
software engineering effort.
Putnam and Myers [PUT92] suggest four different approaches to the sizing
problem:
a) Fuzzy-logic sizing
b) Function point sizing
c) Standard component sizing
d) Change sizing
Problem-Based Estimation
Line of code (LOC) and function points (FP) are basic metrics to measure
productivity.
LOC and FP data are used in two ways during software project estimation.
- As an estimation variable that is used to “size” each element of the software.
- As baseline metrics collected from past projects and used in conjunction with
estimation variables to predict project cost and effort.
As a project planner, he/she first decompose software into problem functions
until each of them can be estimated individually.
Next, Baseline productivity metrics (LOC/pm or FP/pm) are then applied to
the appropriate estimation variable and cost (or effort) for each function.
Alternatively, the planner may choose another component for sizing such as
classes (or objects), changes, or business processes.
For FP estimation, decomposition works differently.
--> Focus on each of the information domain characteristics, such as
inputs, outputs, data files, inquires, and external interfaces, and so on.
Problem-Based Estimation
A three-point or expected value:
EV = (Sopt + 4Sm + Spess)/6
(one typical example)
- EV - Expected value for the estimation variable (size).
- the optimistic (Sopt) estimate.
- the most likely (Sm).
- the pessimistic (Spess) estimate.
This assumes that there is a very small probability that the actual size result will
fall outside the optimistic or pessimistic values.
Once the expected value for the estimation variable has been determined,
historical LOC or FP productivity data are applied. Are the estimates correct?
The only answer to this question is: “We can’t be sure.”
An Example of LOC-based Estimation
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 and analysis modules
will be developed to produce 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, and laser printer.
User interface and control facilities (UICF)
2,300
Two-dimensional geometric analysis (2DGA)
5,300
Three-dimensional geometric analysis (3DGA)
6,800
Database management (DBM)
3,350
Computer graphics display facilities (CGDF)
4,950
Peripheral control (PC)
2,100
Design analysis modules (DAM)
8,400
--------------------------------------------------------------------------estimated lines of code
33,200
The range of LOC estimates for the 3D geometric analysis function is:
Sopt = 4600,
Sm = 6900
Spess = 8600
An Example of FP-based Estimation
Information Domain Value opt. Likely pess. Est. count weight FP-count
--------------------------------------------------------------------------------------------------no. of inputs
20 24
30
24
4
96
no. of outputs
12 16
22
16
5
80
no. of inquires
16 22
28
22
4
88
no. of files
4
4
5
4
10
40
no. of external interfaces
2 2
3
2
7
14
--------------------------------------------------------------------------------------------------count-total
318
--------------------------------------------------------------------------------------------------Factor
Value
Factor
Value
Backup and recover
4
Data communications
2
Distributed processing
0
Performance critical
4
Existing op env.
3
On-line data entry
4
Input transaction
5
Master files updated
3
over multiple screens
Information domain value complex.5
Internal processing complex
5
Code designed for reuse
4
Conversion/installation in design 3
Multiple installations
5
Application designed for change 5
Complexity adj. Factor
1.17
Empirical Estimation Models
An estimation model for computer software uses empirically derived formulas to
predict effort as a function of LOC or FP.
The empirical data that support most estimation models is derived from a limited
sample of projects.
---> The results from such models must be used judiciously.
The Structure of Estimation Models:
A typical estimation model is derived using regression analysis on data collected
from past software projects. The overall structure of such models takes the
form:
C
E = A + B X (ev)
where A, B, and C are empirically derived constants, E is effort in person
months, and ev is the estimation variable (either LOC or FP).
The COCOMO Model
Barry Boehm [BOE81]’s COCOMO stands for COnstructuve COst Model.
COCOMO model is a comprehensive empirical model for software estimation.
Three forms:
Model 1: The Basic COCOMO model
- computes the cost as a function of program size expressed in
estimated lines of code.
Model 2: The Intermediate COCOMO model
- computes the cost as function of program size and a set of
“cost drivers”, such as hardware, personnel, project attributes,
.. product attribute.
Model 3: The Advanced COCOMO model
- incorporates all characteristics of the intermediate version with
an assessment of the cost driver’s impact on each step of the software
process.
The COCOMO Model
Basic COCOMO model:
bb
E = ab KLOC
db
D = cb E
E- the effort applied in person-months.
D - the development time in chronological months.
Software project
organic
semi-detached
embedded
ab
bb
cb
db
2.4
3.0
3.6
1.05
1.12
1.20
2.5
2.5
2.5
0.38
0.35
0.32
1.05
1.05
Example: E = 2.4 (KLOC) = 2.4(33.3) = 95 person-months
0.35
0.35
D = 2.5 E = 2.5 (95) = 12.3 months, N=E/D=95/12.3= ~8 people.
The COCOMO Model
Intermidiate COCOMO model:
bi
E = ai KLOC
X
EAF
E- the effort applied in person-months.
EAF - An effort adjustment factor (EAF)
typical values range from 0.9 to 1.4.
Software project
organic
semi-detached
embedded
ai
bi
3.2
3.0
2.8
1.05
1.12
1.20
The Software Equation
The software equation [PUT92] - a multivariable model.
--> assume a specific distribution of effort over the life of a software
development project. (based on data from 4000 projects)
0.333
3
4
E = [LOC X B
/ P ] X (1 / t )
E - effort in person-months or person-years.
t - project duration in months or years
B - special skill factor.
For small programs (KLOC = 5 - 15), B = 0.16.
For programs greater than 70 KLOC, B = 0.39.
P - “productivity parameter” that reflects:
- overall process maturity and management practices
- the extent to which good software engineering practices are used
- the level of programming languages used
- the state of the software environment
- the skill and experience of the software team
- the complexity if the application
P = 2000 for real-time embedded software
P = 10,000 for telecommunication systems,
P = 28,000 for business application systems
The Make-Buy Decision
In many cases, it is often more cost effective to acquire, rather than develop,
computer software.
Mangers are faced with a make-buy decision based on three acquisition options:
- software may be purchased (or licensed) off-the-shelf
- “full-experience” or “partial-experience” software components
- customer-built software
For more expensive software products, the following guidelines can be applied:
- 1) Develop a specification for the desirable function and performance.
- 2) Estimate the internal cost to develop and delivery date.
- 3a) Select 3 or 4 candidate applications that best meet your specification.
- 3b) Select reusable software components for applications.
- 4) Develop a comparison matrix for key functions.
- 5) Evaluate each software package or component.
- 6) Contact other users for opinions.
The Make-Buy Decision
- Creating a Decision Tree
In the final analysis, checking the following questions:
- Will the delivery date of the software product be sooner than for internally
developed software?
- Will the cost of acquisition plus the cost of customization be less than the cost
of developing the software internally?
- Will the cost of outside support be less than the cost of internal support?
simple (0.30)
$380,000
$450,000
difficult (0.70)
build
$275,000
minor changes (0.40)
$310,000
reuse
simple (0.20)
complex (0.80)
System X
buy
contract
Major changes
(0.60)
minor changes (0.70)
major changes (0.30)
Without changes (0.60)
$490,000
$210,000
$400,000
$500,000
With changes (0.40)
Download