Software Architecture1
Software Architecture1
Engineering
Software Engineering
Architect
Software Architecture
INTRODUCTION
Implementation
Algorithms
Data Representation
Behavior and Interaction
system
Why is learning knowledge
about architecture important?
Technical System
Environment
Architect’s
Experience
Architectures Are Influenced By
System Stakeholders
System Properties like:
Performance, Reliability,
Availability, Platform compatibility,
Memory utilization, Network usage,
Security, Modifiability,
Usability and Interoperability with
other systems
Architectures Are Influenced By The
Developing Organization
immediate business
long-term business
organizational structure
Influenced By The Background And
Experience Of The Architects
experience
architect's education and training,
exposure to successful architectural
patterns,
exposure to systems that have
worked particularly poorly or
particularly well.
Architectures Are Influenced By The
Technical Environment
Customers
and End User
Requirements
(Qualities)
Developing Architect Architecture
Organization
Technical System
Environment
Architect’s
Experience
The architecture affects the structure
of the developing organization
Successful system
Process( Activities, Actions)
Recommendation
The architecture can affect customer
requirements for the next system
Thumb Rules:
1. Process Recommendation
2. Product Recommmendation
Architecture Process (Activities)
Guidelines(Recomm..)
Architecture from-
Single architect or small group with
identified leader
must have system technical requirements
and prioritized qualitative properties
must be well-documented (static and
Dynamic views) based on notation that all
can understand
Architecture should be actively reviewed by
all stakeholders
Architecture Process (Activities)
Guidelines(Recomm..)
should be analyzed for maximum throughput
Architecture should be -
Well-defined functional modules and well-
defined interfaces
Quality attributes should be achieved using
well-known architectural tactics specific to each
attribute
Never depend on a particular version of a
commercial product or tool; make change
straightforward and inexpensive
Module that produce data should be separate
from modules that consumes data
Architecture Product (Structural)
Guidelines(Recomm..)