Software-based System Architectural Pattern
An Software-based System Architectural Pattern is a software design pattern that 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 range from being a Monolithic Architecture Pattern to being a Microservices Architecture Pattern, depending on its system modularity.
- It can range from being a Traditional Software Architecture to being an AI-Native Architecture, depending on its computational paradigm.
- ...
- 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):
- Core Software Architecture Patterns, such as:
- Distribution Software Architecture Patterns:
- Client-Server Architecture for traditional client-server and thin client systems.
- Microservices Architecture for independent, deployable services.
- Service-Oriented Architecture (SOA) for service composition and reuse.
- Peer-to-Peer Architecture for direct node communication.
- Structural Software Architecture Patterns:
- Layered Architecture implementing three-tier and n-tier designs.
- Model-View-Controller (MVC) separating data, display and control.
- Model-View-ViewModel (MVVM) binding views through view models.
- Pipe and Filter Pattern for sequential processing.
- Primary-Replica Pattern coordinating distributed nodes.
- Communication Software Architecture Patterns:
- Event-Driven Architecture processing event flows.
- Publish-Subscribe Pattern enabling message distribution.
- Message Queue Pattern managing async communication.
- Distribution Software Architecture Patterns:
- Domain Software Architecture Patterns, such as:
- Enterprise Software Architecture Patterns:
- Enterprise Service Bus (ESB) for application integration.
- Enterprise Resource Planning (ERP) unifying business processes.
- Content Management System (CMS) managing digital content.
- API Gateway Pattern routing service requests.
- Database Software Architecture Patterns:
- Distributed Database Architecture managing data nodes.
- Data Lake Architecture storing raw data.
- Data Warehouse Architecture organizing analytics.
- AI Software Architecture Patterns:
- ML Pipeline Architecture orchestrating model lifecycles.
- LLM System Architecture optimizing language models.
- AI Microservices Architecture decomposing AI functions.
- AI PaaS Architecture providing cloud AI infrastructure.
- Enterprise Software Architecture Patterns:
- Implementation Software Architecture Patterns, such as:
- Frontend Software Architecture Patterns:
- Single Page Application (SPA) for dynamic web apps.
- Progressive Web App (PWA) enabling offline features.
- Backend for Frontend (BFF) customizing backend APIs.
- Backend Software Architecture Patterns:
- RESTful Architecture exposing resource endpoints.
- GraphQL Architecture enabling flexible queries.
- CQRS Pattern separating read/write operations.
- Cloud Software Architecture Patterns:
- Serverless Architecture using managed services.
- Containerized Architecture packaging applications.
- Infrastructure as Code automating deployment.
- Frontend Software Architecture Patterns:
- ...
- Core Software Architecture Patterns, such as:
- 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.