Understanding Software Architecture: Key Concepts, Styles, and Patterns
This article introduces fundamental concepts of software architecture, emphasizing the importance of architectural configurations, styles, and patterns. It defines configuration as the arrangement of components and connectors that fulfill a system’s objective. The discussion includes the Blackboard architectural style and how patterns serve as reusable solutions to recurring design problems. The distinction between architectural style and patterns is also explained, alongside the significance of architectural models and stakeholder involvement in software architecture.
Understanding Software Architecture: Key Concepts, Styles, and Patterns
E N D
Presentation Transcript
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
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
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/