. Is maintainable -designing the architecture of a system must involve also the maintainability aspect, in which having the components in groups and being based on loose coupling, high cohesion principle, is one of the requests for the software system architects
There are some general principles that are usually applied during the architectural process. These principles described bellow, guide the analysis and decision taking that must be performed during the process. The principle is to conceive an architecture that has follows the features described below:
. Has clarity - the objective is to create a system that can be easily understood. Even though the requirement of the system can be complex, choosing a technology like object-oriented design can help defining the components and the interactions between them without great effort, resulting a clear architecture, without the requirement of detailed knowledge of the functionality of the constituent components
. Is extensible - for a better architecture of the system, the software designer would need creating subsystems. A subsystem encapsulates entirely its functionality, exposing its own interface. The functionality it encapsulates could comprise some complex set of processes, but the client objects are shielded from this complexity through the simple interface it exposes; the components representing the subsystems must be controlled in their interactions; the components gather in groups that can have high-degree of cohesion (they depend one to each-other) ; Interactions between them represents the coupling and the coupling between groups must be maintain as minimal, as the interdependence between groups should not affect the functionality of one to each-other in the conditions in which one change in a group determines changes in the second group.