User Tools

Site Tools


notes:misc:software_engineering

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
notes:misc:software_engineering [2018/06/22]
leszek [Software Design]
notes:misc:software_engineering [2019/02/24] (current)
leszek [Software Design]
Line 16: Line 16:
   * The purpose of modeling is to communicate and understand, not to document.   * The purpose of modeling is to communicate and understand, not to document.
   * The exact format of the design document is less important than the process of thinking about your design. The point of designing is to think about your program before you write it.   * The exact format of the design document is less important than the process of thinking about your design. The point of designing is to think about your program before you write it.
 +  * The key to writing good programs is to design classes so that each cleanly represents a single concept.
 +  * Organizing the relationship between classes in a program is often harder than laying out the individual classes.
 +  * Stroustrup: One of the most powerful intellectual tools for managing complexity is **hierarchical ordering** - organizing related concepts into a tree structure with the most general concept as the root
   * **Abstraction** helps you to manage complexity by providing models that allow you to ignore implementation details. A class interface that presents a good abstraction usually has strong cohesion.   * **Abstraction** helps you to manage complexity by providing models that allow you to ignore implementation details. A class interface that presents a good abstraction usually has strong cohesion.
   * **Encapsulation** prevents you from looking at the details even if you want to.   * **Encapsulation** prevents you from looking at the details even if you want to.
notes/misc/software_engineering.txt · Last modified: 2019/02/24 by leszek