-
Notifications
You must be signed in to change notification settings - Fork 0
SoftwareDesign
Ben Christel edited this page Jul 5, 2022
·
6 revisions
What makes a good software design?
- Each Component, at every level of detail, has a simple, easily described Behavior.
- It is easy to make a convincing argument (perhaps by a combination of proof and demonstration) that each component implements its intended behavior correctly.
- It is easy to see how the internal parts of the component work together to produce the external behavior.
- This property creates ease of change.
- These properties apply to the whole system, fractally.
The goal of these properties is, first of all, correctness, and second, ease of understanding the system. Ease of change, per se, ranks third. While it's nice to be able to add a new feature by changing only a few lines of code, understandability must take priority. If you can't understand the code, how will you find the place that needs to change to implement your feature?