Object Oriented Software Engineering   View all facts   Glossary   Help
subject > criterion > principle > design principle
Next principleethical principle of usability evaluation    Upprinciple    Previous principlecost estimation principle   

design principle comparison table
Subject make state have benefits assume that involve has definition accomplish by have goal is a subtopic of have advantage mean
anticipating obsolescence   changes will inevitably occur in the technology a software system uses and the environment in which it runs  
  • Avoiding the use of early releases of technology
  • Avoiding the use of software libraries that are specific to particular environments
  • Avoiding the use of undocumented features or little-used features of software libraries
  • Avoiding the use of reusable software or special hardware from smaller companies, or from those that are less likely to provide long-term support
  • Using standard languages and technologies that are supported by multiple vendors
 9.2 - Principles Leading to Good Design planning for changes in the technology or environment so the software will continue to run or can be easily changed
decreasing coupling        9.4 - Software Architecture decreasing the number of dependencies between packages as much as possible
designing for flexibility    actively anticipating changes that a design may have to undergo in the future and preparing for them  9.2 - Principles Leading to Good Design  
designing for portability      avoiding the use of facilities that are specific to one particular environmentthe ability to have the software run on as many platforms as possible9.2 - Principles Leading to Good Design  
designing for testability      ensuring that all the functionality of the code can by driven by an external program, bypassing a graphical user interface 9.2 - Principles Leading to Good Design  
divide and conquer  
  • Separate people can work on each part. The original development work can therefore be done in parallel
  • An individual software engineer can specialize in his or her component and become expert at it
  • Each individual component is smaller, and therefore easier to understand
  • When one part needs to be replaced or changed, it can hopefully be done without having to replace or extensively change other parts
  The principle of dividing something large into smaller units, so it can be dealt with more easily  9.2 - Principles Leading to Good Design  
increasing cohesiona module easier to understand and changethat you should divide things into smaller chunks intelligently; divide things up, but keep things together that belong together      9.2 - Principles Leading to Good Design ensuring that a package only has related classes
increasing reusability       9.2 - Principles Leading to Good Design  
keeping the level of abstraction high        9.2 - Principles Leading to Good Designit allows you to understand the essence of a subsystem and make important decisions without knowing unnecessary details 
reducing coupling        9.2 - Principles Leading to Good Design  
reusing existing designs and code where possible        9.2 - Principles Leading to Good Designit allows you to take advantage of the investment you or others have made in reusable components 

Next principleethical principle of usability evaluation    Upprinciple    Previous principlecost estimation principle