Ignore Complexity When § Forgettable applications § Specified, constructed, maintained, and used by 1 person, (isolated developer). § Prototyping: limited purpose and a short life span. § We can afford to throw them away and replace them with a new software rather than attempt to reuse them, modify them, or extend their functionality. Therefore, design them is not relevant.
Challenges § Trade-Offs: Competing, perhaps even contradictory, requirements in the problem domain. § Quality: usability, reliability, performance, cost, … § Communication gap between the users and developers § Management: keep the illusion of simplicity § Labor-intensive vs Product lines § Combinatorial explosion of outputs (limited testing)
Solution § Primitives Components § Separation of Concerns § Common Patterns (relationships) § Hierarchic Structure § Incremental Development: one problem at a time Decomposition Abstraction Encapsulation Inheritance
Alternative Solution * pioneering work on object-oriented programming and windowing graphical user interface design "Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves". – Alan Kay ACM Queue. Vol. 2, No. 9 - Dec/Jan 2004-2005