During the last Lesson …
We became familiar with the
various phases of the process that developers follow to develop SW
systems of reasonable complexity
We looked at a couple of problems related to the Waterfall SW
development model
Today’s Lecture
Heuristics for System Architecting
We will try to understand the role
of heuristics in architectural (or high-level) design
We will become familiar with a few popular design heuristics
24.1 Heuristic
Rule of thumb learned through
trial & error
Common sense Lesson drawn from experience
Qualitative principle, guideline, general judgement
Natural language description of experience
24.2 System
A collection of elements which
working together produces a result not achieved by the things alone
24.3 System Architecture
The structure
(in terms of components,
connections, constraints) of a product or a process
24.4 Heuristics for system architecting
Rules and Lesson s learnt by
system architects
after long experiences which when followed
result in sound, stable, practical systems # 1 My favorite system architecting
(and other relevant) heuristics --- in no particular order --- #2 Given many parts of a system to be designed/built,
do the hard part 1st
# 3
All the serious mistakes are made
on the very first day
# 4
Simplify, simplify, simplify!
Probably the most useful heuristics for increasing reliability while
decreasing cost & time-to-build
# 5
If you can’t explain it in 5
minutes, either you don’t understand it or it does not work
# 6
A system will develop & evolve
much more rapidly
if there are stable intermediate forms than if there
Build iteratively; add features gradually
# 7
Success is defined by the user,
not the builder
# 8
It’s more important to know what
the customer needs instead of what he says he wants
# 9
If you think that your design is
perfect, it is only because you have not shown to anyone else
--- Get your designs reviewed ---
# 10
A good solution to a problem
somehow looks nice & elegant
# 11
In partitioning, choose the chunks
so that they are as independent as possible
Chunks should have low external complexity & high internal complexity
Organize personal tasks to minimize the time individuals face
interfacing
# 12
Partition/repartition the problem
until a model consisting of 7±2
chunks emerges
# 13
When choices must be made with
unavoidably inadequate info:
Choose the best available & then watch to see:
whether further solutions appear faster than future problems .
If so, the choice was at least adequate .
If not, go back & choose again
# 14
The Triage
1. Let the dying die
2. Ignore who’ll recover on their own
3. Treat only those who’ll die without your help #15
Don’t just remove the defect;
correct the process that caused it
# 16
The number of defects remaining in
a system after
a given level of tests is proportional to the number found during the
test
# 17
Programmers deliver the same
number of LOC/day regardless of the language they are writing in .
Use the Highest level Language
In Today’s Lecture
We became familiar with the the role of heuristics in design
We also discussed a few well-known design heuristics for architectural
design
In Today’s Lecture
We became familiar with the the role of heuristics in design
We also discussed a few well-known design heuristics for architectural
design
Next Lecture:
Web Design for Usability
To become able to appreciate the role of usability in Web design
To become able to identify some of the factors affecting the usability
of a Web page |