Software-based System Architectural Pattern
An Software-based System Architectural Pattern is an architecture pattern that facilitates the creation of information system software architectures (for software-based systems).
- Context:
- It can (typically) be intended to improve Software Maintainability, Software Extensibility, Software Scalability, and Software Performance.
- It can range from being a Centralized Information Architecture to being a Distributed Application Development Architecture or a Federated Information Architecture.
- It can range from being a Back-End Architecture to being a Front-End Architecture.
- It can be supported by Architecturally Significant Requirements (captured in architectural decisions).
- It can be referenced by an Information System Architecture Document, created by a Software-based System Architecture Design Task.
- …
- Example(s):
- Distribution Software Architecture Pattern, such as:
- Client-Server Architecture: Traditional client-server and thin client architectures.
- Distributed Application Development Architecture: Microservices Architecture and Service-Oriented Architecture (SOA).
- Peer-to-Peer Architecture: Enables direct node communication without a central server.
- ...
- Structural Software Architecture Pattern, such as:
- Layered Architecture: Three-tier architecture and N-tier architecture.
- Model-View-Controller (MVC) Pattern: Separates the representation of information from user interaction.
- Model-View-ViewModel (MVVM) Pattern: Binds the view to the model via a view model.
- Pipe and Filter Pattern: Processes inputs through a sequence of filters.
- Primary-Replica Pattern: Distributes tasks among worker nodes coordinated by a primary node.
- AI Microservices Architecture: Decomposes AI functionalities into independent, deployable services for improved scalability and maintainability of AI systems.
- ...
- Communication Software Architecture Pattern, such as:
- Event-Driven Architecture: Processes events as they occur.
- Publish-Subscribe Pattern: Allows multiple subscribers to receive messages from publishers.
- Message Queue Pattern: Uses a queue for asynchronous communication.
- ...
- Domain-Specific Software Architecture Pattern, such as:
- Database System Architecture Pattern: Defines the organization and structure of databases.
- Enterprise Resource Planning (ERP) System Architecture: Integrates various business processes.
- Content Management System (CMS) Architecture: Manages digital content creation and publishing.
- ...
- Cloud-based Software Architecture Pattern, such as:
- Serverless Architecture: Leverages cloud provider services to reduce infrastructure management.
- Containerized Architecture: Uses containers to package and deploy applications.
- AI Platform as a Service (AI PaaS) Architecture: Provides scalable, cloud-based infrastructure for developing, training, and deploying AI models.
- ...
- Frontend-specific Software Architecture Pattern, such as:
- Single Page Application (SPA) Architecture: Loads a single HTML page and updates content dynamically.
- Progressive Web App (PWA) Architecture: Uses web technologies for a native app-like experience.
- Backend for Frontend (BFF) Pattern: Creates separate backends for each frontend application.
- ...
- Integration Software Architecture Pattern, such as:
- Enterprise Service Bus (ESB): Integrates applications by routing messages.
- API Gateway Pattern: Manages and routes requests from clients to multiple microservices.
- …
- Distribution Software Architecture Pattern, such as:
- Example(s):
- Client-Server Architectures.
- Service-Oriented Architecture, such as micro-services architecture.
- Backend for Frontend (BFF) Patterns.
- Model-View-Controller Software Architecture Pattern.
- Client-Server: This pattern separates clients, which make requests, from servers, which receive requests and send back responses.
- Master-Slave: This pattern distributes tasks among worker nodes, with one central node (the master) coordinating the work.
- Pipe and Filter: This pattern processes a series of inputs through a sequence of interconnected filters, producing output.
- Layered: This pattern divides the software into layers, each with a specific role, with higher layers using services from lower layers.
- Microservices: This pattern decomposes a large application into a set of small, independent services that communicate with each other using well-defined APIs.
- …
- Event-Driven: This pattern processes events as they occur, rather than following a predetermined flow.
- ...
- Database System Architecture Pattern.
- Enterprise Resource Planning System Architecture.
- Front-End Architecture Pattern, such as MVVC.
- …
- Counter-Example(s):
- a Data Structure or Data Model.
- an Organizational Architecture.
- a Software Design Model, such as OO modeling.
- a Software Development Methodology, such as Agile software development.
- See: Model, Meta-Model, Software Development Team, Software Architecture Pattern, Information Architecture Institute, Community of Practice, Design Pattern, Clean Architecture.
References
2023
- chat
- Q: What is a software architecture pattern, and what are some examples?
- A: A software architecture pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Patterns can be used to describe the structure of a software system and provide a way to reason about its design. Examples of software architecture patterns include:
- Model-View-Controller (MVC): This pattern separates the representation of information from the user's interaction with it. The model represents the data, the view represents the UI, and the controller handles the input.
- Client-Server: This pattern separates clients, which make requests, from servers, which receive requests and send back responses.
- Master-Slave: This pattern distributes tasks among worker nodes, with one central node (the master) coordinating the work.
- Pipe and Filter: This pattern processes a series of inputs through a sequence of interconnected filters, producing output.
- Layered: This pattern divides the software into layers, each with a specific role, with higher layers using services from lower layers.
- Microservices: This pattern decomposes a large application into a set of small, independent services that communicate with each other using well-defined APIs.
- Event-Driven: This pattern processes events as they occur, rather than following a predetermined flow.
2023
- chat
- Q: What is a software architecture? How does it relate to a system architecture? provide some examples of a software architecture.
- A: A software architecture is a high-level design of a software system that describes the relationships and interactions between different components of the system. It is a blueprint for the software system that defines the structure of the system, its major components, and how they interact with each other.
Software architecture is a type of system architecture, which refers to the overall design of a complex system that includes hardware, software, and other components. In software development, system architecture is focused on the design of software systems, while also taking into account the hardware and infrastructure components that support the system.
Examples of software architecture include:
- Client-server architecture: This architecture involves dividing a software system into two major components: the client, which provides the user interface, and the server, which provides the back-end functionality.
- Microservices architecture: This architecture involves dividing a software system into small, independently deployable services that communicate with each other through APIs. This architecture is designed to be highly scalable and resilient.
- Event-driven architecture: This architecture involves building a software system that responds to events that occur within the system or outside of it. It is designed to be highly responsive and flexible.
- Layered architecture: This architecture involves dividing a software system into multiple layers, each of which is responsible for a specific set of tasks. This architecture is designed to be highly modular and easy to maintain.
- Service-oriented architecture: This architecture involves building a software system that is composed of loosely coupled services that communicate with each other using standard protocols. This architecture is designed to be highly flexible and adaptable to changing business requirements.
- In summary, a software architecture is a high-level design of a software system that defines the structure and interactions between its major components. It is a type of system architecture that is focused on the design of software systems, while taking into account the hardware and infrastructure components that support the system. There are many different types of software architecture, each with its own strengths and weaknesses, and the choice of architecture depends on the requirements of the software system and the goals of the development team.
2013
- http://en.wikipedia.org/wiki/Software_Architecture_styles_and_patterns
- An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are often documented as software design patterns.
"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."[1]
Following traditional building architecture, a 'software architectural style' is a specific method of construction, characterized by the features that make it notable" (Architectural style). “An architectural style defines: a family of systems in terms of a pattern of structural organization; a vocabulary of components and connectors, with constraints on how they can be combined."[2]
"An architectural style is a named collection of architectural design decisions that (1) are applicable in a given development context, (2) constrain architectural design decisions that are specific to a particular system within that context, and (3) elicit beneficial qualities in each resulting system."[1]
Some treat architectural patterns and architectural styles as the same,[3] some treat styles as specializations of patterns. What they have in common is both patterns and styles are idioms for architects to use, they "provide a common language" or "vocabulary" with which to describe classes of systems.
The main difference is that a pattern can be seen as a solution to a problem, while a style is more general and does not require a problem to solve for its appearance.
- An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are often documented as software design patterns.
2023
- chat
- Q: Write an essay on the similarities and differences between front-end architectural patterns for web-based and mobile-based applications? Provide examples.
- A: Front-end architectural patterns refer to the structure and organization of the code that runs in the client-side of an application. These patterns are used to improve the maintainability, scalability, and performance of the application.
2021
- (Wikipedia, 2021) ⇒ https://en.wikipedia.org/wiki/Software_architecture Retrieved:2021-2-2.
- Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. It functions as a blueprint for the system and the developing project, laying out the tasks necessary to be executed by the design teams. Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of the software. For example, the systems that controlled the Space Shuttle launch vehicle had the requirement of being very fast and very reliable. Therefore, an appropriate real-time computing language would need to be chosen. Additionally, to satisfy the need for reliability the choice could be made to have multiple redundant and independently produced copies of the program, and to run these copies on independent hardware while cross-checking results. Documenting software architecture facilitates communication between stakeholders, captures early decisions about the high-level design, and allows reuse of design components between projects.
2021
- (Wikipedia, 2021) ⇒ https://en.wikipedia.org/wiki/information_architecture Retrieved:2021-2-2.
- Information architecture (IA) is the structural design of shared information environments; the art and science of organizing and labelling websites, intranets, online communities and software to support usability and findability; and an emerging community of practice focused on bringing principles of design, architecture and information science to the digital landscape.[4] Typically, it involves a model or concept of information that is used and applied to activities which require explicit details of complex information systems. These activities include library systems and database development.
Today there is a growing network of active IA specialists who constitute the Information Architecture Institute.
- Information architecture (IA) is the structural design of shared information environments; the art and science of organizing and labelling websites, intranets, online communities and software to support usability and findability; and an emerging community of practice focused on bringing principles of design, architecture and information science to the digital landscape.[4] Typically, it involves a model or concept of information that is used and applied to activities which require explicit details of complex information systems. These activities include library systems and database development.
2017b
- (Wikipedia, 2017) ⇒ https://en.wikipedia.org/wiki/information_architecture#Definition Retrieved:2017-3-31.
- “Information architecture has somewhat different meanings in different branches of Information systems or Information technology:
- The structural design of shared information environments.Template:SfnTemplate:Rp
- The art and science of organizing and labeling web sites, intranets, online communities, and software to support findability and usability. [1]
- An emerging community of practice focused on bringing principles of design and architecture to the digital landscape.Template:SfnTemplate:Rp[2]
- The combination of organization, labeling, search and navigation systems within websites and intranets.Template:SfnTemplate:Rp
- Extracting required parameters/data of Engineering Designs in the process of creating a knowledge-base linking different systems and standards.
- A blueprint and navigational aid to the content of information-rich systems. [3]
- A subset of data architecture where usable data (a.k.a. information) is constructed in and designed or arranged in a fashion most useful or empirically holistic to the users of this data.
- The practice of organizing the information / content / functionality of a web site so that it presents the best user experience it can, with information and services being easily usable and findable (as applied to web design and development).[4]
- “Information architecture has somewhat different meanings in different branches of Information systems or Information technology:
2014
- (Wikipedia, 2014) ⇒ http://en.wikipedia.org/wiki/structure#Software_structure Retrieved:2014-9-21.
- The software architecture is the result of the designing of the software, usually conducted by a computer scientist, before the implementation is written by software developer(s).
- ↑ Morville & Rosenfeld (2007). p. 4. “The art and science of shaping information products and experienced to support usability and findability."
- ↑ Resmini, A. & Rosati, L. (2012). A Brief History of Information Architecture. Journal of Information Architecture. Vol. 3, No. 2. [Available at http://journalofia.org/volume3/issue2/03-resmini/]. Originally published in Resmini, A. & Rosati L. (2011). Pervasive Information Architecture. Morgan Kauffman. (Edited by the authors).
- ↑ Toms, Elaine (17 May 2012). "Information interaction: Providing a framework for information architecture". Journal of the American Society for Information Science and Technology 53 (10.1002/asi.10094).
- ↑ "Information Architecture". Mozilla Developer Network. https://developer.mozilla.org/en-US/docs/Glossary/Information_architecture.
2014
- (Wikipedia, 2014) ⇒ http://en.wikipedia.org/wiki/Architectural_pattern Retrieved:2014-4-14.
- An architectural pattern is a widely recognised and reused solution to a recurring design problem in the field of software architectures. The concept of an architectural pattern has a broader scope than the concept of design pattern. The architectural patterns address various issues in software engineering, such as computer hardware performance limitations, high availability and minimization of a business risk. Some architectural patterns have been implemented within software frameworks.
2014
- (Wikipedia, 2014) ⇒ http://en.wikipedia.org/wiki/Category:Architectural_pattern_(computer_science) Retrieved:2014-4-14.
- An architectural pattern is a standard design in the field of software architecture. The concept of an architectural pattern has a broader scope than the concept of design pattern. The architectural patterns address various issues in software engineering, such as computer hardware performance limitations, high availability and minimization of a business risk. Some architectural patterns have been implemented within software frameworks.
- An architectural pattern is a standard design in the field of software architecture. The concept of an architectural pattern has a broader scope than the concept of design pattern. The architectural patterns address various issues in software engineering, such as computer hardware performance limitations, high availability and minimization of a business risk. Some architectural patterns have been implemented within software frameworks.
2000
- (Bosch, 2000) ⇒ Jan Bosch. (2000). “Design and Use of Software Architectures: Adopting and Evolving a Product-line Approach.” Pearson Education.