Wrap-Up
EECS3311: Software Design Fall 2017
CHEN-WEI WANG
What You Learned
Design Principles:
X Abstraction [ contracts, architecture, math models ]
Think above the code level X Information Hiding
X Single Choice Principle
X Open-Closed Principle
X Uniform Access Principle
Design Patterns: X Singleton
X Iterator
X State
X Composite
X Visitor
X Observer
X Event-Driven Design
X Undo/Redo, Command
X Model-View-Controller 2 of 4
[ lab 4 ] [ project ]
Beyond this course. . . (1)
How do I program in a language not supporting DbC natively?
X Document your contracts (e.g., JavaDoc)
X But, it¡¯s critical to ensure (manually) that contracts are in sync
with your latest implementations.
X Incorporate contracts into your Unit and Regression
How do I program in a language without a ? X Again, before diving into coding, always start by
thinking above the code level .
X Plan ahead how you intend for your system to behaviour at
runtime, in terms of interactions among mathematical objects .
A mathematical relation, a formal model of the graph data
structure, suffices to cover all the common problems.
X Use efficient data structures to support the math operations. X Document your code with contracts specified in terms of the
math models.
X Test! 3 of 4
tests
math library
Beyond this course. . . (2)
4 of 4
Software fundamentals: collected papers by David L. Parnas
Design Techniques:
X Tabular Expressions X Information Hiding