Software-based System Architectural Pattern

From GM-RKB
Jump to navigation Jump to search

An Software-based System Architectural Pattern is an architecture pattern that facilitates the creation of information system software architectures (for software-based systems).



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:
      1. 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.
      2. Client-Server: This pattern separates clients, which make requests, from servers, which receive requests and send back responses.
      3. Master-Slave: This pattern distributes tasks among worker nodes, with one central node (the master) coordinating the work.
      4. Pipe and Filter: This pattern processes a series of inputs through a sequence of interconnected filters, producing output.
      5. Layered: This pattern divides the software into layers, each with a specific role, with higher layers using services from lower layers.
      6. Microservices: This pattern decomposes a large application into a set of small, independent services that communicate with each other using well-defined APIs.
      7. 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.

2023

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

  1. 1.0 1.1 R. N. Taylor, N. Medvidović and E. M. Dashofy, Software architecture: Foundations, Theory and Practice. Wiley, 2009.
  2. M. Shaw and D. Garlan, Software architecture: perspectives on an emerging discipline. Prentice Hall, 1996.
  3. http://msdn.microsoft.com/en-us/library/ee658117.aspx
  4. .

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:
      1. The structural design of shared information environments.Template:SfnTemplate:Rp
      2. The art and science of organizing and labeling web sites, intranets, online communities, and software to support findability and usability. [1]
      3. An emerging community of practice focused on bringing principles of design and architecture to the digital landscape.Template:SfnTemplate:Rp[2]
      4. The combination of organization, labeling, search and navigation systems within websites and intranets.Template:SfnTemplate:Rp
      5. Extracting required parameters/data of Engineering Designs in the process of creating a knowledge-base linking different systems and standards.
      6. A blueprint and navigational aid to the content of information-rich systems. [3]
      7. 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.
      8. 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]

2014

  1. Morville & Rosenfeld (2007). p. 4. "The art and science of shaping information products and experienced to support usability and findability."
  2. 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).
  3. 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). 
  4. "Information Architecture". Mozilla Developer Network. https://developer.mozilla.org/en-US/docs/Glossary/Information_architecture. 

2014

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.

       

       

       

2000

  • (Bosch, 2000) ⇒ Jan Bosch. (2000). “Design and Use of Software Architectures: Adopting and Evolving a Product-line Approach.” Pearson Education.