ZeePedia

DESIGN HEURISTICS. Rule of thumb learned through trial & error

<< FLOW CONTROL & LOOPS
WEB DESIGN FOR USABILITY >>
img
Introduction to Computing ­ CS101
VU
LESSON 24
DESIGN HEURISTICS
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
155
img
Introduction to Computing ­ CS101
VU
# 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
5
1
3
6
2
4
5
1
3
6
2
4
156
img
Introduction to Computing ­ CS101
VU
5
1
3
6
2
4
4
8
1
2
5
7
9
3
6
157
img
Introduction to Computing ­ CS101
VU
# 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
158
Table of Contents:
  1. INTRODUCTION
  2. EVOLUTION OF COMPUTING
  3. World Wide Web, Web’s structure, genesis, its evolution
  4. Types of Computers, Components, Parts of Computers
  5. List of Parts of Computers
  6. Develop your Personal Web Page: HTML
  7. Microprocessor, Bus interface unit, Data & instruction cache memory, ALU
  8. Number systems, binary numbers, NOT, AND, OR and XOR logic operations
  9. structure of HTML tags, types of lists in web development
  10. COMPUTER SOFTWARE: Operating Systems, Device Drivers, Trialware
  11. Operating System: functions, components, types of operating systems
  12. Forms on Web pages, Components of Forms, building interactive Forms
  13. APPLICATION SOFTWARE: Scientific, engineering, graphics, Business, Productivity, Entertainment, Educational Software
  14. WORD PROCESSING: Common functions of word processors, desktop publishing
  15. Interactivity to Forms, JavaScript, server-side scripts
  16. ALGORITHMS
  17. ALGORITHMS: Pseudo code, Flowcharts
  18. JavaScript and client-side scripting, objects in JavaScript
  19. Low, High-Level, interpreted, compiled, structured & object-oriented programming languages
  20. Software Design and Development Methodologies
  21. DATA TYPES & OPERATORS
  22. SPREADSHEETS
  23. FLOW CONTROL & LOOPS
  24. DESIGN HEURISTICS. Rule of thumb learned through trial & error
  25. WEB DESIGN FOR USABILITY
  26. ARRAYS
  27. COMPUTER NETWORKS: types of networks, networking topologies and protocols
  28. THE INTERNET
  29. Variables: Local and Global Variables
  30. Internet Services: FTP, Telnet, Web, eMail, Instant messaging, VoIP
  31. DEVELOPING PRESENTATIONS: Effective Multimedia Presentations
  32. Event Handlers
  33. GRAPHICS & ANIMATION
  34. INTELLIGENT SYSTEMS: techniques for designing Artificial Intelligent Systems
  35. Mathematical Functions in JavaScript
  36. DATA MANAGEMENT
  37. DATABASE SOFTWARE: Data Security, Data Integrity, Integrity, Accessibility, DBMS
  38. String Manipulations:
  39. CYBER CRIME
  40. Social Implications of Computing
  41. IMAGES & ANIMATION
  42. THE COMPUTING PROFESSION
  43. THE FUTURE OF COMPUTING
  44. PROGRAMMING METHODOLOGY
  45. REVIEW & WRAP-UP of Introduction to Computing