2. Definition of Software Architecture
• The software architecture of a program or computing
system is the structure or structures of the system,
which comprise software elements, the externally
visible properties of those elements, and the
relationships among them.
• Other definitions:
http://www.sei.cmu.edu/architecture/definitions.ht
ml
2
4. Architecture Specifies Component
Communication
• Communicate
– Data
– Control
• Communication methods
– Method calls
– Message passing
– etc.
4
5. Architecture Addresses Nonfunctional Requirements
• Nonfunctional requirements are the ones that
don’t appear in use cases
• They are concerned with how the application
provides the required functionality
• Three distinct areas of nonfunctional
requirements
– Technical constraints
– Business constraints
– Quality attributes
5
6. Architecture Is an Abstraction
• Unnecessary details are suppressed or ignored
in order to focus attention and analysis on the
salient architectural issues
• Components in the architecture are
considered as black boxes
• Architecture can be described by
decomposing
6
8. Architecture Views
• Logical view: This describes the architecturally
significant elements of the architecture and the
relationships between them. The logical view
essentially captures the structure of the
application using class diagrams or equivalents.
• Process view: This focuses on describing the
concurrency and communications elements of an
architecture. In IT applications, the main concerns
are describing multithreaded or replicated
components, and the synchronous or
asynchronous communication mechanisms used.
8
9. Architecture Views
• Physical view: This depicts how the major processes
and components are mapped on to the applications
hardware. It might show, for example, how the
database and web servers for an application are
distributed across a number of server machines.
• Development view: This captures the internal
organization of the software components, typically as
they are held in a development environment or
configuration management tool. For example, the
depiction of a nested package and class hierarchy for a
Java application would represent the development
view of an architecture
9
10. Why Is Software Architecture Important?
• Communication among stakeholders
• Early design decisions
– Architecture Defines Constraints on Implementation
– Architecture Dictates Organizational Structure
– Architecture Inhibits or Enables a System's Quality
Attributes
– Predicting System Qualities by Studying the
Architecture
– Architecture Makes It Easier to Reason about and
Manage Change
– Architecture Enables More Accurate Cost and
Schedule Estimates
10
11. Why Is Software Architecture Important?
• Transferable abstraction of a system
– Software Product Lines Share a Common
Architecture
– Systems Can Be Built Using Large, Externally
Developed Elements
– Architecture Permits Template-Based
Development
11
12. Where Do Architectures Come From?
• Architecture are influenced by management
stakeholders
• Architecture are influenced by developing
organization
• Architecture are influenced by the background
and experience of architects
• Architecture are influenced by technical
environment
12
14. Architecture activities
1. Creating the business case for the system
2. Understanding the requirements
3. Creating or selecting the architecture
4. Documenting and communicating the
architecture
5. Analyzing or evaluating the architecture
6. Implementing the system based on the
architecture
7. Ensuring that the implementation conforms to
the architecture
14