SOFTWARE ARCHITECTURE: BASIC CONCEPT By Xiangzhe Li Thanh Nguyen
Feb 24, 2016
SOFTWARE ARCHITECTURE:
BASIC CONCEPT
By Xiangzhe Li
Thanh Nguyen
Configuration Components and connectors are composed in a specific
way in a given system’s architecture to accomplish that system’s objective.
Definition – An architectural configuration is a set of specific associations between the components and connectors of a software system’s architecture
Configuration: Example
Architectural Style “A set of design rules that identify the kinds of
components and connectors that may be used to compose a system or subsystem, together with local or global constraints on the way the composition is done”
- Shaw & Clements, 1996
The Blackboard Style Components
Blackboard client programs Connector
Blackboard: shared data repository, possibly with finite capacity
Configurations Multiple clients sharing single blackboard
Underlying computational model Synchronized, shared data transactions, with control driven entirely
by blackboard state Stylistic invariants
All clients see all transactions in the same order
Architectural Pattern Definition- An architectural pattern is a named collection
of architectural design decisions that are applicable to a recurring design problem, parameterized to account for different software development contexts in which that problem appears
Patterns… Patterns help you build on the collective experience of
skilled software engineers. They capture existing, well-proven experience in software
development and help to promote good design practice Every pattern deals with a specific recurring problem in
the design or implementation of a software system Patterns can be used to construct software architectures
with specific properties…
Becoming a Chess Master First learn rules and physical requirements
e.g., names of pieces, legal movements, chess board geometry and orientation, etc. Then learn principles
e.g., relative value of certain pieces, strategic value of center squares, power of a threat, etc. However, to become a master of chess, one must study the games of
other masters These games contain patterns that must be understood memorized, and applied repeatedly
There are hundreds of these patterns
Becoming a Software Designer First learn the rules
e.g., the algorithms, data structures and languages of software Then learn the principles
e.g., structured programming, modular programming, object oriented programming, generic programming, etc.
However, to truly master software design, one must study the designs of other masters These designs contain patterns must be understood, memorized, and
applied repeatedly There are hundreds of these patterns
Difference between style and pattern
Style and pattern are similar and it is not always possible to identify. However, in general styles and patterns differ in at least three important ways: Scope
Style focus on development context while pattern focus on specific design problem
Abstraction Style helps to constrain the architectural design decisions one
makes about the system while patterns are parameterized architectural fragments
Relationship A single pattern could be applied to systems designed of multiple
styles. A single style may involve the use of multiple pattern
Models
Definition – An architectural model is an artifact that captures some or all of the design decisions that comprise a system’s architecture. Architectural modeling is the reification and documentation of those design decisions
The notations for modeling software architectures are frequently referred to as Architecture Description Languages( ADLs)
Used as the foundation for most other activities in architecture-based software development processes such as analysis, system implementation, deployment, and dynamic adaptation
Model: Example
Architectural processes Architectural design Architecture modeling and visualization Architecture driven system analysis Architecture-driven system implementation Architecture-driven system deployment, run-time
redeployment, and mobility Architecture-based design for nonfunctional properties,
including security and trust Architecture adaptation Architecture recovery
Architectural Recovery If architectural degradation is allowed to occur, one will be
forced to recover the system’s architecture sooner or later Definition – Architectural recovery is the process of
determining a software system’s architecture from its implementation level artifacts
-Implementation-level artifacts can be Source code Executable files Java .class files
Stakeholder Definition:- A person, group or organization that has interest or
concern in an organization- Stakeholders can affect or be affected by the
organization's actions, objectives and policies.
Stakeholders in a System’s Architecture
Architects Developers Testers Managers Customers Users Vendors
Sources http://www.nyu.edu/ http://www.ccs.neu.edu/ http://www.artechra.com/