Unit 1 Chap 3
Unit 1 Chap 3
Economics
Balanced Attack
Can improve software economics
improvement
Re-looking at Quality
Reducing the Size
Size
Abstraction and component-based Higher Order Languages (C++, Java, VB, OO
development technologies (analysis, design, programming)
Reuse
Commercial Components
Process
Methods and techniques Iterative Development
Process Maturity Models
Architecture-first development
Acquisition reform
Personnel
People factors Training and personnel skill development
Teamwork
Win-win cultures
Examples:
Some tools (environment) can bring about a reduction in size and process
improvement (process).
UI and GUIs today (tools – environment) GUI Builders, affect process and
quality…
Improved process (use-case driven…) => end user functionality drives
Complicated due to
Component-based development
“Instruction Explosion”
GUI builders
4GLs
Modeling Languages
External user inputs, outputs, internal logical data groups, external data
SLOC metrics:
useful after a candidate solution is formulated and implementation
language is known.
Languages (in general) are often best suited for ‘classes of problems’ (domain of
usage)
Web-based apps: Java vs COBOL
Transaction processing: Java vs COBOL
Java
More on Comparisons: Languages
Function Points focus more on ‘functionality.’
The implementing programming language size can be inferred from function point count.
Automatic code generators (CASE; GUI) can reduce size of ‘human generated’ code
less time; fewer team members…(helps cost; efficiency of automatic code generators?
Function point computation?)
Commercial DBMSs, GUI Builders, middleware, … reduce the amount of code to be
developed…
Size may be larger! How are fpoints computed here???
Others!!
Level of abstraction and functionality –
benefits and ‘expressiveness’
But, these higher-level abstractions are often high users of storage, and
communications bandwidth…
Package Expressiveness
A package is a general purpose mechanism for organizing elements
its behaviors
Realization
Subsystem
<<subsystem>> Generally has classes
Subsystem Name associated that
nterface
provide the holistic
Interface service of the
subsystem…
(a class)
Subsystems and Components
Components are the physical realization of an abstraction in the design
<<subsystem>> Component
Component Name Name
Component Component
Interface Interface
1. Reducing Software Product Size:
B. OO Methods and Visual Modeling
quality
Not terribly locked in concrete yet
free lunch.
B. OO Methods and Visual Modeling
Size is not everything…
integrity of development…
And then, when you consider the RUP as a process built around OO technology, there are a
architectures…
from all phases of software development
components…)
Costs to build reusable and configure reusable components. Must be able to justify.
formalized…
1. Reducing Software Product Size:
D. Commercial Components
cost
architecture.
Advantages and Disadvantages of Commercial Components versus Custom Software
APPROACH ADVANTAGES DISADVANTAGES
Commercial Components Predictable license costs Frequent upgrades
Broadly used, mature technology Up-front license fees
Single-platform dependency
production activities.
2. Improving Software Processes – (cont.)
It is all about process!
possible
Improving Software Economics
Improving Software Processes
Concerns Bureaucracy vs. standardization Quality vs. financial performance Content vs. schedule
We want the highest quality system with fewest iterations in least time.
other positions
Coverage – strong skill people in key positions.
3. Improving Team Effectiveness
Managing the team is the key.
Boehm’s recommendations:
1. Principle of top talent: use better and fewer people.
Proper number of people is critical.
management!
Great programmers are not necessarily great managers and conversely.
3. Improving Team Effectiveness
3. Principle of Career Progression –
Organization training will pay great dividends
Posting for new jobs?
What are the prime motivators and motivation?
balance of:
raw skills (intelligence, objectivity, creativity, analytical thinking…)
psychological makeup (leaders and followers; risk takers and conservatives;
visionaries and nitpickers)
3. Improving Team Effectiveness
5. Principle of Phase-out
accomplishment.
Teamwork and balance!!!
Obsession with career progression will take care of itself in the industry… tertiary
nurturing newbees,
process.
Careful selection of the right combinations…
Recognize that these tools are the primary delivery vehicle for process
automation.
environment.
Authors suggests that in his experience, the combined effect of
all tools is less than 40% (5% for an individual tool) and most
benefits are NOT realized without a corresponding change in the
process that will require their use.
But this is substantial!!
5. Achieving Required Quality (1 of 5)
our consideration:
This table represents General Quality improvements
critical use cases early and traceability late in the life cycle.
Balance requirements, development and plan evolution
drive?
How do you think we measure this progress??
5. Achieving Required Quality –
continued (4 of 5)
Additional overall quality factors
demonstration-based evaluations.
Think: HOW are these so? Can you answer??
5. Achieving Required Quality –
continued (last)
Performance issues:
components
Assessment of performance can degrade as we progress through
our process.
Planned, managed demonstration-based assessments – the way
to go.
WHY do you think this is so???
team members
Catch the real bad blunders early.
Consider:
6. Peer Inspections: A Pragmatic View –
continued (2 of 7)
1. INSPECTIONS FOR: Transitioning engineering info
elements, can you ensure that the functionality is NOT lost? Can you
TRACE it?
Discuss.
6. Peer Inspections: A Pragmatic View
– (3 of 7)
2. INSPECTIONS: Major milestone demonstrations
cases…
3. INSPECTIONS using Environment tools
compliance…
5. INSPECTIONS: Study Change Management metrics – must
Overall:
Ensure that critical components are really looked
on the contrary!
Many artifacts don’t deserve / merit close scrutiny – and
and plans.
6. Peer Inspections: A Pragmatic View -
last
Remember: the RUP is (among other things) architecture-centric, use-case driven,
mainly elaboration.