Software Design principles:
such as:
1)Abstraction
2)Decomposition and Modularization
3)Coupling and Cohesion
4)Encapsulation
5)Sufficiency,completeness and primitiveness
(sufficiency and completeness with respect to the given specifications; ensure the software does whatever is asked for,in all respects and in a very simple way as possible.)
Considerations such as:
Compatibility,
Extensibility,
Fault-tolerance,
Maintainability,
Reliability,
Reusability,
Robustness,
Security,
usability and interoperability.
Main design process:
Requirements specification -> Architectual design decisions -> Logical design details ->
Detailed design decisions -> physical design details.
alias : high level design -> detailed design.
Functional decomposition(Structured Design).
Object-oriented approach (OO Design).