SLIDE 12 12
15-‑214
Semester ¡overview ¡
– Design ¡goals, ¡principles, ¡paSerns ¡
– Design ¡for ¡change: ¡Subtype ¡polymorphism ¡ and ¡informa9on ¡hiding ¡ – Design ¡for ¡reuse: ¡inheritance ¡and ¡delega9on ¡
- Designing ¡(sub)systems ¡
– What ¡to ¡build: ¡Domain ¡models, ¡system ¡ sequence ¡diagrams ¡ – Assigning ¡responsibili9es: ¡GRASP ¡paSerns ¡ – Design ¡for ¡robustness: ¡Excep9ons, ¡modular ¡ protec9on ¡ – Design ¡for ¡change ¡(2): ¡Façade, ¡Adapter, ¡ Observer ¡
– Graphical ¡user ¡interfaces ¡ – Streams, ¡I/O ¡ – Collec9ons ¡
- Design ¡for ¡large-‑scale ¡reuse ¡
– Libraries, ¡APIs, ¡ ¡ – Frameworks ¡ – Product ¡lines ¡
- Explicit ¡concurrency ¡
- Distributed ¡systems ¡
- CrosscuZng ¡topics: ¡
– Modern ¡development ¡tools: ¡IDEs, ¡version ¡ control, ¡build ¡automa9on, ¡con9nuous ¡ integra9on, ¡sta9c ¡analysis ¡ – Modeling ¡and ¡specifica9on, ¡formal ¡and ¡ informal ¡ – Func9onal ¡correctness: ¡Tes9ng, ¡sta9c ¡ analysis, ¡verifica9on ¡