Software architecture

Architecture supporting activities Software architecture supporting activities arecarried out during core software architecture activities.

As software architecture design issues are intricate and interdependent, aknowledge gap in design reasoning can lead to incorrect software architecturedesign.

Kruchten’s 4 1 view suggests a description of commonly used views fordocumenting software architecture; Documenting Software Architectures: Viewsand Beyond has descriptions of the kinds of notations that could be used withinthe view description.

Software architecture topics Software architecture description Main article: Software architecture description Software architecture description involves theprinciples and practices of modeling and representing architectures, usingmechanisms such as: architecture description languages, architectureviewpoints, and architecture frameworks.

Architecture description languages Main article: Architecture descriptionlanguage An architecture description language is any means of expression usedto describe a software architecture.

Architecture frameworks Main article: Architecture framework An architectureframework captures theConventions, principles and practices for thedescription of architectures established within a specific domain of applicationand/or community of stakeholders“.

There are many recognized architectural patterns and styles, among them: Blackboard Client-server Component-based Data-centric Event-driven LayeredMonolithic application Peer-to-peer Pipes and filters Plug-ins Representationalstate transfer Rule-based Service-oriented architecture and microservices as itsimplementation approach Shared nothing architecture Space-based architectureSome software architects treat architectural patterns and architectural styles asthe same, Others treat styles as compositions of patterns combined witharchitectural principles that jointly address a particular intent.

Software architecture erosion Software architecture erosion refers to the gapobserved between the planned and actual architecture of a software system asrealized in its implementation.

These are: process-oriented architecture conformance, architecture evolutionmanagement, architecture design enforcement, architecture to implementationlinkage, self-adaptation and architecture restoration techniques consisting ofrecovery, discovery and reconciliation.

Architecture recovery is often necessary to make informed decisions in the faceof obsolete or out-of-date documentation and architecture erosion: implementation and maintenance decisions diverging from the envisionedarchitecture.

Requirements Engineering Main article: Requirements engineeringRequirements engineering and software architecture can be seen ascomplementary approaches: while software architecture targets thesolutionspaceor thehow‘, requirements engineering addresses theproblem spaceorthewhat‘.

There is considerable overlap between requirements engineering and softwarearchitecture, as evidenced for example by a study into five industrial softwarearchitecture methods that concludes thatthe inputs are usually ill-defined, andonly get discovered or better understood as the architecture starts to emergeand that whilemost architectural concerns are expressed as requirements onthe system, they can also include mandated design decisions“.

Other types ofarchitectureMain articles: Computer architecture, Systemsarchitecture, and Enterprise architecture Computer architecture Computerarchitecture targets the internal structure of a computer system, in terms ofcollaborating hardware components such as the CPU or processor the busand the memory.

Systems architecture The term systems architecture has originally been appliedto the architecture of systems that consists of both hardware and software.

Continuing the building architecture metaphor for software architecture, enterprise architecture is analogous to city-level planning.