Although this books is mostly about software construction but he also described the characteristics of a well designed software. Bellow I am presenting these Characteristics with their key concepts.
Minimal Complexity:
- Keep your design simpe and easy to understand don't make clever designs because they are hard to understand.
Ease of Maintenance:
- Design the system to be self-explanatory.
Minimal Connectedness:
- Means designing so that you hold connections among defferent parts of a program to a minimum. Use the principles of strong cohesion, Loose coupling, and information hiding to design classes with as few interconnections as possible.
- Extensibility means that you can enhance a system without effecting other parts.
- Design a system in such a way that you will be able to use the work you've already done in other system where there is a similar functionality needed.
- Referes to having a high number of classes that use a given class.
- Means a given class use a low-to-medium number of other classes.
- Probability means designing system in such a way that it can easily be moved to another environment.
- means designing the system so that it has no extra parts.
Stratification:
- Stratified design means trying to keep the levels of decomposition stratified so that you can view the system at any single level and get a consistent view.
- If yor're writing a modern system that has to use a lot of older, poorly designed code, write a layer of new system that's responsible for interfacing with the bad code. Design the layer so that it hides the poor quality of the old code, presenting a consistent set of services to the newer layers.
Standard techniques:
- Try to use standardized and common approaches or It'll be very much difficult for someone to understand it first time.
1 comment:
Great work !
keep up the good effort
Post a Comment