Development process {\em -- cognitive factors}
- model -> ->
Design criteria
-- natural, flexible, reusable- abstraction -- types
- modularity -- strong cohesion (class)
- structure -- subtyping
- information hiding -- narrow interfaces
- complexity -- weak coupling