Skip to content
#Architecture

What Is Your Definition of Software Architecture (Category Architecture)

#Architecture #Software #DistributedSystems #SystemDesign #SystemEngineering #API #Governance #ArchBook

While preparing for his speech on ArchDays on Friday, I came across a paper 15from the Software Engineering Institute with the titleWhat Is Your Definition of Software Architecture" In it, the authors made a selection of definitions of software architecture since the beginning of time. 2010 year. Among the definitions are remarkable

  1. Documenting Software Architectures: Views and Beyond (2nd Edition)", Clements et al, AddisonWesley, 2010: The set of structures needed to reason about the system, which comprises software elements, relations among them, and properties of both.
  2. Book Review: Software Architecture in Practice (2nd edition)", Bass, Clements, Kazman; AddisonWesley 2003which I have read a couple of times. The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
  3. From the ANSI/IEEE Std standard 1471-2000, Recommended Practice for Architectural Description of Software Intensive Systems Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
  4. From RUP (Rational Unified Process) An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization---these elements and their interfaces, their collaborations, and their composition

As a result, we can highlight the following views on the software architecture.

  • High-level structure organization of the system, structural elements and their interfaces. Focus on the interaction of elements
  • Abstraction and composition Architecture is an abstraction that hides implementation. Such abstractions make it easier to think about the interactions of components. John Osterhout wrote in his book A Philosophy of Software Design. considered into 21 Release of the "Code of Leadership" podcast
  • Set of structures This set allows you to think comprehensively about the software system, this set usually includes elements, their relationships and properties.
  • Guiding principles This is a story about governance.) Architecture is about principles, policies, models, standards. The focus is on the strategic role of architecture. Recently. remembered A book about “Continuous API Management”, where the topic of governance was perfectly disclosed
  • Compromises and decision-making This is a story about making fundamental structural decisions that are expensive for the future. Focus on finding compromises between functional and non-functional requirements
  • Architectural styles and patterns It is a practical approach that focuses on highlighting reusable approaches to building architecture. Recently remembered Book Review: API Design Patterns
  • Communication with stakeholders The focus here is that we need to discuss and coordinate architectural decisions with stakeholders to make expensive decisions.

As a result, there are many definitions and, to paraphrase George Box, they are all wrong, but some are useful:) The main thing is to understand their limits of applicability and use them as intended. I think I have a picture for 20 Years of work in IT developed:)

#Architecture #Software #DistributedSystems #SystemDesign #SystemEngineering #API #Governance #ArchBook