Architecture description languages
   HOME

TheInfoList



OR:

Architecture description languages (ADLs) are used in several disciplines:
system engineering Systems engineering is an interdisciplinary field of engineering and engineering management that focuses on how to design, integrate, and manage complex systems over their life cycles. At its core, systems engineering utilizes systems thinking ...
,
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
, and enterprise modelling and engineering. The system engineering community uses an architecture description language as a language and/or a conceptual model to describe and represent
system architecture A system architecture is the conceptual model that defines the structure, behavior, and more views of a system. An architecture description is a formal description and representation of a system, organized in a way that supports reasoning about the ...
s. The software engineering community uses an architecture description language as a
computer language A computer language is a formal language used to communicate with a computer. Types of computer languages include: * Construction language – all forms of communication by which a human can specify an executable problem solution to a comput ...
to create a
description Description is the pattern of narrative development that aims to make vivid a place, object, character, or group. Description is one of four rhetorical modes (also known as ''modes of discourse''), along with exposition, argumentation, and narra ...
of a
software architecture Software architecture is the fundamental structure 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. ...
. In the case of a so-called
technical architecture Information technology architecture is the process of development of methodical information technology specifications, models and guidelines, using a variety of information technology notations, for example Unified Modeling Language (UML), within a ...
, the architecture must be communicated to software developers; a functional architecture is communicated to various stakeholders and users. Some ADLs that have been developed are: Acme (developed by CMU), AADL (standardized by the SAE), C2 (developed by UCI), SBC-ADL (developed by
National Sun Yat-Sen University National Sun Yat-sen University (NSYSU; ) is a public research-intensive university renowned as an official think tank scholars' community, located in Sizihwan, Kaohsiung, Taiwan. NSYSU is listed as one of six national research universities, ...
), Darwin (developed by
Imperial College London Imperial College London (legally Imperial College of Science, Technology and Medicine) is a public research university in London, United Kingdom. Its history began with Prince Albert, consort of Queen Victoria, who developed his vision for a cu ...
), and
Wright Wright is an occupational surname originating in England. The term 'Wright' comes from the circa 700 AD Old English word 'wryhta' or 'wyrhta', meaning worker or shaper of wood. Later it became any occupational worker (for example, a shipwright i ...
(developed by CMU).


Overview

The ISO/IEC/IEEE 42010 document, ''Systems and software engineering—Architecture description'', defines an architecture description language as "any form of expression for use in architecture descriptions" and specifies minimum requirements on ADLs. The enterprise modelling and engineering community have also developed architecture description languages catered for at the enterprise level. Examples include
ArchiMate ArchiMate ( ; originally from Architecture-Animate) is an open and independent enterprise architecture modeling language to support the description, analysis and visualization of architecture within and across business domainsThe Open Group The Open Group is a global consortium that seeks to "enable the achievement of business objectives" by developing "open, vendor-neutral technology standards and certifications." It has over 840 member organizations and provides a number of servi ...
),
DEMO Demo, usually short for demonstration, may refer to: Music and film *Demo (music), a song typically recorded for reference rather than release * ''Demo'' (Behind Crimson Eyes), a 2004 recording by the band Behind Crimson Eyes * ''Demo'' (Deafhea ...
,
ABACUS The abacus (''plural'' abaci or abacuses), also called a counting frame, is a calculating tool which has been used since ancient times. It was used in the ancient Near East, Europe, China, and Russia, centuries before the adoption of the Hi ...
(developed by the University of Technology, Sydney). These languages do not necessarily refer to software components, etc. Most of them, however, refer to an application architecture as the architecture that is communicated to the software engineers. Most of the writing below refers primarily to the perspective from the software engineering community. A standard notation (ADL) for representing architectures helps promote mutual communication, the embodiment of early design decisions, and the creation of a transferable abstraction of a system. Architectures in the past were largely represented by box-and-line drawing annotated with such things as the nature of the component, properties, semantics of connections, and overall system behavior. ADLs result from a linguistic approach to the formal representation of architectures, and as such they address its shortcomings. Also important, sophisticated ADLs allow for early analysis and feasibility testing of architectural design decisions.


History

ADLs have been classified into three broad categories: box-and-line informal drawings, formal architecture description language, and UML (
Unified Modeling Language The Unified Modeling Language (UML) is a general-purpose, developmental modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system. The creation of UML was originally m ...
)-based notations. Box-and-line have been for a long time the most predominant means for describing SAs. While providing useful documentation, the level of informality limited the usefulness of the architecture description. A more rigorous way for describing SAs was required. Quoting Allen and Garlan (1997), "while these ox-and-linedescriptions may provide useful documentation, the current level of informality limits their usefulness. Since it is generally imprecise what is meant by such architectural descriptions, it may be impossible to analyze an architecture for consistency or determine non-trivial properties of it. Moreover, there is no way to check that a system implementation is faithful to its architectural design." A similar conclusion is drawn in Perry and Wolf (1992), which reports that: "Aside from providing clear and precise documentation, the primary purpose of specifications is to provide automated analysis of the documents and to expose various kinds of problems that would otherwise go undetected." Since then, a thread of research on formal languages for SA description has been carried out. Tens of formal ADLs have been proposed, each characterized by different conceptual architectural elements, different syntax or semantics, focusing on a specific operational domain, or only suitable for different analysis techniques. For example, domain-specific ADLs have been presented to deal with embedded and real-time systems (such as AADL, EAST-ADL, and EADL), control-loop applications (DiaSpec), product line architectures (Koala), and dynamic systems (Π-ADL)). Analysis-specific ADLs have been proposed to deal with availability, reliability, security, resource consumption, data quality and real-time performance analysis (AADL, behavioral analysis (Fractal)), and trustworthiness analysis (TADL). However, these efforts have not seen the desired adoption by industrial practice. Some reasons for this lack of industry adoption have been analyzed by Woods and Hilliard, Pandey, Clements, and others: formal ADLs have been rarely integrated in the software life-cycle, they are seldom supported by mature tools, scarcely documented, focusing on very specific needs, and leaving no space for extensions enabling the addition of new features. As a way to overcome some of those limitations,
UML The Unified Modeling Language (UML) is a general-purpose, developmental modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system. The creation of UML was originally m ...
has been indicated as a possible successor of existing ADLs. Many proposals have been presented to use or extend the UML to more properly model software architectures. A 2013 study found that practitioners were generally satisfied with the design capabilities of the ADLS they used, but had several major concerns with them: they lacked analysis features and the ability to define extra-functional properties; those used in practice mostly originated from industrial development rather than academic research; they needed more formality and better usability.


Characteristics

There is a large variety in ADLs developed by either academic or industrial groups. Many languages were not intended to be an ADL, but they turn out to be suitable for representing and analyzing an architecture. In principle ADLs differ from requirements languages, because ADLs are rooted in the solution space, whereas requirements describe problem spaces. They differ from programming languages, because ADLs do not bind architectural abstractions to specific point solutions. Modeling languages represent behaviors, where ADLs focus on representation of components. However, there are domain specific modeling languages (DSMLs) that focus on representation of components. Minimal requirements ''The language must:'' * Be suitable for communicating an architecture to all interested parties * Support the tasks of architecture creation, refinement and validation * Provide a basis for further implementation, so it must be able to add information to the ADL specification to enable the final system specification to be derived from the ADL * Provide the ability to represent most of the common architectural styles * Support analytical capabilities or provide quick generating prototype implementations ADLs have in common: * Graphical syntax with often a textual form and a formally defined syntax and semantics * Features for modeling distributed systems * Little support for capturing design information, except through general purpose annotation mechanisms * Ability to represent hierarchical levels of detail including the creation of substructures by instantiating templates ADLs differ in their ability to: * Handle real-time constructs, such as deadlines and task priorities, at the architectural level * Support the specification of different architectural styles. Few handle object oriented class inheritance or dynamic architectures * Support the analysis of the architecture * Handle different instantiations of the same architecture, in relation to product line architectures


Positive elements of ADL

* ADLs are a formal way of representing architecture * ADLs are intended to be both human and machine readable * ADLs support describing a system at a higher level than previously possible * ADLs permit analysis and assessment of architectures, for completeness, consistency, ambiguity, and performance * ADLs can support automatic generation of software systems


Negative elements of ADL

* There is no universal agreement on what ADLs should represent, particularly as regards the behavior of the architecture * Representations currently in use are relatively difficult to parse and are not supported by commercial tools * Most ADLs tend to be very vertically optimized toward a particular kind of analysis


Common concepts of architecture

The ADL community generally agrees that Software Architecture is a set of components and the connections among them. But there are different kind of architectures like:


Object connection architecture

* Configuration consists of the interfaces and connections of an object-oriented system * Interfaces specify the features that must be provided by modules conforming to an interface * Connections represented by interfaces together with
call graph A call graph (also known as a call multigraph) is a control-flow graph, which represents calling relationships between subroutines in a computer program. Each node represents a procedure and each edge ''(f, g)'' indicates that procedure ''f'' cal ...
* Conformance usually enforced by the programming language ** Decomposition — associating interfaces with unique modules ** Interface conformance — static checking of syntactic rules ** Communication integrity — visibility between modules


Interface connection architecture

* Expands the role of interfaces and connections ** Interfaces specify both "required" and "provided" features ** Connections are defined between "required" features and "provided" features * Consists of interfaces, connections and constraints ** Constraints restrict behavior of interfaces and connections in an architecture ** Constraints in an architecture map to requirements for a system Most ADLs implement an interface connection architecture.


Architecture vs. design

Architecture, in the context of software systems, is roughly divided into categories, primarily software architecture, network architecture, and systems architecture. Within each of these categories, there is a tangible but fuzzy distinction between architecture and design. To draw this distinction as universally and clearly as possible, it is best to consider design as a noun rather than as a verb, so that the comparison is between two nouns. Design is the abstraction and specification of patterns and organs of functionality that have been or will be implemented. Architecture is a degree higher in both abstraction and granularity. Consequentially, architecture is also more topological in nature than design, in that it specifies where major components meet and how they relate to one another. Architecture focuses on the partitioning of major regions of functionality into high level components, where they will physically or virtually reside, what off-the-shelf components may be employed effectively, in general what interfaces each component will expose, what protocols will be employed between them, and what practices and high level patterns may best meet extensibility,
maintainability In engineering, maintainability is the ease with which a product can be maintained to: * correct defects or their cause, * Repair or replace faulty or worn-out components without having to replace still working parts, * prevent unexpected working ...
, reliability, durability,
scalability Scalability is the property of a system to handle a growing amount of work by adding resources to the system. In an economic context, a scalable business model implies that a company can increase sales given increased resources. For example, a ...
, and other non-functional objectives. Design is a detailing of these choices and a more concrete clarification of how functional requirements will be met through the delegation of pieces of that functionality to more granular components and how these smaller components will be organized within the larger ones. Oftentimes, a portion of architecture is done during the conceptualization of an application, system, or network and may appear in the non-functional sections of requirement documentation. Canonically, design is not specified in requirements, but is rather driven by them. The process of defining an architecture may involve heuristics, acquired by the architect or architectural team through experience within the domain. As with design, architecture often evolves through a series of iterations, and just as the wisdom of a high level design is often tested when low level design and implementation occurs, the wisdom of an architecture is tested during the specification of a high level design. In both cases, if the wisdom of the specification is called into question during detailing, another iteration of either architecture or design, as the case may be, may become necessary. In summary, the primary differences between architecture and design are ones of granularity and abstraction, and (consequentially) chronology. (Architecture generally precedes design, although overlap and circular iteration is a common reality.)


Examples

*
ArchiMate ArchiMate ( ; originally from Architecture-Animate) is an open and independent enterprise architecture modeling language to support the description, analysis and visualization of architecture within and across business domainsArchitecture Analysis & Design Language * C4 model (software) *
Darwin (ADL) Darwin is an architecture description language (ADL). It can be used in a software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of sof ...
* EAST-ADL * Wright (ADL)


Approaches to Architecture

* Academic approach ** focus on analytic evaluation of architectural models ** individual models ** rigorous modeling notations ** powerful analysis techniques ** depth over breadth ** special-purpose solutions * Industrial approach ** focus on wide range of development issues ** families of models ** practicality over rigor ** architecture as the big picture in development ** breadth over depth ** general-purpose solutions


See also

* AADL * Darwin *
Scripting language A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled. A scripting ...
*
Hardware description language In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, and most commonly, digital logic circuits. A hardware description language en ...


References


External links

* *
Architecture Description Languages
// Mälardalen University *
ABACUS

ACME

ADML





ArchiMate
An example of an ADL for enterprise architecture
ByADL (Build Your ADL) - University of L'Aquila

C2 SADL



DEMO
Another example of an enterprise architecture ADL
DiaSpec
an approach and tool to generate a distributed framework from a software architecture *
DUALLy

Rapide

SSEP




{{DEFAULTSORT:Architecture Description Language Computer languages Systems architecture Software architecture Programming language classification Modeling languages