Designing


Following Behaviors helps to enhance the software quality

Abstraction- emphasize what is important and De-emphasize the unimportant at a particular level of detail.

Flexibility-apply components in ways that may not be anticipated originally.

Reuse-take components developed before and applying in new contexts,where they may not be intended to be used.

Quality-ensure that bugs are eliminated,vulnerabilities fixed and code is made more "bullet proof".

Modularity-Divide and conquer a big problem space into smaller chunks that have low coupling and high cohesion,so developers and teams can work independently.