Software Architecture and Design
Software Architecture and Design
Sudhakar Chavali
Aspiring Architect
Software Architecture
Definition
Software Architecture is defined as the set of
significant decisions about the organization of a
software system, the selection of the structural
elements and their interfaces by which the system is
composed together with their behavior as specified
in the collaborations among those elements into
progressively larger subsystems, and the
architectural style that guides this organization.
Goals for Software Architecture
Extensibility:
The system should be able to adapt to the changing customer needs and
addition of new functionality.
Maintainability:
This is simplicity and clarity which needs to be traded-off w.r.t.
performance and other non-functional requirements.
Reliability:
This determines whether the system operates in full functionality in all the
conditions.
Scalability:
This determines whether the system accommodates more data and more
number of users.
Architectural Analysis
environment.
Basic Architectural Principles
Cohesion: This is to organize parts of the system into logical groups. This
should always be high.
Coupling: This makes groups independent and thus changes in one logical
group does not affect the other. This should always be low.
Architectural Factors
Architectural Decisions
Logical View
Deployment View