SysADL is a software architecture modeling language designed for expressing the structure and behavior of software system using the well-known and consolidated abstractions from the ADL community. It uses components, connectors and configurations to express the structure and activities, actions and equations to express the behavior.
SysADL is a specialization of SysML to the software architectural description domain. SysML is a general-purpose modeling language for systems engineering that reuse a subset of UML 2 and provide additional extensions. Hence, SysADL boosts a more disciplined use of SysML leading the architect to focus on the conceptual architectural building blocks. The main advantage is to bring together the expression power of ADLs for architectural modeling with a standard language widely accepted by the industry.
SysADL follows a dataflow paradigm that allows the description of architectures in a high abstract level that is independent of implementation. That paradigm fully supports the description of dataflow-based behaviors, which are not covered by UML.
SysADL has a rigorous operational semantics, which allows the analysis and execution of the architecture. The analysis checks the consistency and completeness of the architecture. The execution is provided by the sequence of computational steps specified by the operational semantics of SysADL behavioral description.
The main reference for the SysADL language is the book Software Architecture in Action, avaliable online here.
There are also additional slides to support lecturers presenting the main contents of the book and also to help student to fix them, here.
SysADL is structured according three viewpoints: (i) structural; (ii) behavioral; and (iii) executable.
The Structural Viewpoint is concerned with the structure of the architecture, specifying the elements and how they are interconnected. The Structural description includes the specification of the definition of software architecture elements and how they are connected together to interact to achieve the system functionality.
The Behavioral Viewpoint is concerned with the behavior of the architecture by specifying the activities of its elements using the SysML activity and parametric diagrams. The behavior of a software architecture refers to the way the elements performs activities and interactions to achieve the required system functionality. It encompasses not only the activities of components and connectors, but also the protocol of ports, and the equations that constraints the behavior.
The Executable Viewpoint is concerned with the implementation of the behavior specified in the Behavioral viewpoint. The executable viewpoint is grounded on the notions of actions and activities. For each action and activity, the execution steps is defined.
The SysADL elements used in the structural viewpoint of the architecture are components, and connectors; and configurations. Complementary elements used in the structural description are ports and value types.
SysADL uses three diagrams to describe an architecture: the Package Diagram, identical to the UML package diagram; The Block Definition Diagram (BDD) to define components, ports, connectors, value types and others additional element definitions; the Internal Block Definition (IBD) to define a configuration using the defined elements.
The Behavioral Viewpoint is concerned with the specification of the behavior of the elements described in the Structural viewpoint. It encompasses: (i) the definition and use of activities and actions and their data parameters; (ii) the definition and use of equations that specifies the semantics of activities and actions by constraints on the data parameters; and (iii) the diagrams that organize the elements and allows the relationships between them.
SysADL specifies behaviors by using mainly the activity and parametric diagrams and the block definition diagram to define activities, actions and equation. The behavioral specification includes both the definition and the use of how software architecture elements perform activities to consume and produce data. The specification includes the activities and actions of components and connectors; the protocol of ports of components and connectors; and the equations for defining the semantics of activities and actions.
The Executable Viewpoint is concerned with the execution of the behavior specified in the Behavioral viewpoint. The execution of a software architecture refers to the way the body of activities and actions are executed. The execution of an action refers to the execution that starts when it is called, consumes the input data, executes the statements of the body to produce the results and stops. The execution of an activity refers to the execution that starts whenever it receives data from its input pins, executes the statements of the body, including the call of actions, send the results to its out pins. The behavior of the activity executes continuously whenever there are new data in its in pins.
Beyond the viewpoints, SysADL provides a Requirements Diagram for documenting the requirements of a system, and a Allocation Table to associate elements from different viewpoints. The Requirements Diagram is used mainly to clearly relate the architecture decisions with the requirements they have the responsibility to satisfy. The following dependencies may be expressed between requirements: composition, derivation, and satisfaction. The composition relationship allows decomposing a requirement into sub-requirements. The derivation relationship enables a requirement to be derived from another requirement. The satisfy relationship describes how an architectural element satisfies one or more requirements. The Allocation Table allows associating components with activities - relating structural and behavioral viewpoints - and associating actions with executables - relating behavioral and execution viewpoints.
To illustrate the use of SysADL in practice, we consider the design of a software architecture to control the temperature of a room: a Room Temperature Controller (RTC) system. The system has two temperature sensors to capture the current temperature in different areas. A user can set the desired temperature. A central controller receives the values from the temperature sensors, compares them with the desired temperature and turns the cooler or the heater on or off. The system has a presence sensor to detect if there is someone in the room. In case of presence, the system oper-ates to provide the desired temperature. Otherwise, the system operates to maintain 22 Celsius. Figure 1 shows the systems elements.
In SysADL, we can describe the functional requirements using the Requirements Diagram. You can view the diagram here
The Room Temperature Controller System has the following component types with their respective ports:
PresenceSensorCP is a component to detect if someone is in the room. It has an out port named detected of type PresenceOPT that provides a value indicating a presence in the room.
TemperatureSensorCP is a temperature sensor component to provide the current temperature value. It has an out port named current of type FTemperatureOPT that provides the temperature value.
HeaterCP is a component to increase room temperature and CoolerCP is a component to descrease it. They both have an in port, named controller, of type CommandIPT that receives a command to the component.
UserInterfaceCP is a component to allow the user to provide the desired temperature value. It has an out port named desired of type FTemperatureOPT that sends the temperature value.
RoomTemperatureControllerCP is a component to control the temperature by receiving temperature values and information about the presence of the user and by commanding the heater and cooler appropriately. It has the following ports: (i) two ports of type CTemperatureIPTto receive a Celsius temperature value; (ii) a port of type CTemperatureIPTto the user interface to receive the desired temperature value; (iii) a port of type PresenceIPTto receive the information about the presence of a person; and (iv) two ports of type CommandOPTto provide the commands to the heater and the cooler.
All components, ports and types of the RTCSystem are defined in block definition diagrams (bdd). Figure 2 shows the definition of the components, Figure 3 shows the definition of ports and Figure 4 shows the definition of types and dimensions of RTC System.
There are six connector types FahrenheitToCelsiusCN, DetectPresenceCN, CTemperatureCN, and ControlCommandCN. All connector types in our example has two ports as participants and all of them were previously defined. The type of information (value type or data type) that flows in the connection were also previoulsy defined. Particularly, the FahrenheitToCelsiusCN connector type has the responsibility of converting the data type from Fahrenheit to Celsius. We describe its behavior later. Figure 5 shows the definition of the connectors.
We describe the overall architecture of the RTC System using an Internal Block Diagram to depict a configuration. The configuration uses the previous defined components and connectors and how they bind to achieve the functional requeriments. Figure 6 shows the overall architecture.
The RoomTemperatureControllerCP is a composite component and its internal structure is defined using an IBD, as in Figure 7.
The Behavioral Viewpoint is concerned with the specification of the behavior of the elements described in the structural viewpoint. The behavioral specification includes both the definition and the use of how software architecture elements perform activities to consume and produce data. SysADL uses the activity diagram to specifies the activities and actions of components and connectors, and the protocol of the ports. The parametric diagram specifies the equations for defining the semantics of activities and actions. We define activities and actions using the BDD and use them to provide the details in the activity diagram. The equations that contraints the behavior are also defined in BDD and used in parametric diagrams to visually show how the parameters are used.
The RTC system has a RoomTemperatureControlerCP composite component. Its behavior is specified by specifying the behavior of the internal components. That component has three internal components as we can see in Figure 7. In Figure 8, we show the definition of the three activities that specifies the behavior of those three components. The last FahrenheitToCelsiusAC activity that express the behavior of the FahrenheitToCelsiusCN connector that links the TemperatureSensorCP to the RoomTemperatureControllerCP. Each activity, in this example, has only one action that provides the details of the behavior.
Each activity is specified in details in activity diagrams. The activity diagrams show parameters and the action that compute the data received in the input parameter and send them to the output parameter. Considering that the an activity diagram represents the behavior of a component, the parameters in the activity diagram correspond to the ports in the component.
The CheckPresenceToSetTemperatureAC component specifies the behavior of the SensorMonitorCP component. The parameters shows the type of information that flows in the corresponding ports. Figure 10 show the activity diagram.
The DecideCommandAC component specifies the behavior of the CommanderCP component. The parameters shows the type of information that flows in the corresponding ports. Figure 11 show the activity diagram.
The FahrenheitToCelsiusAC component specifies the behavior of the CommanderCP component. The parameters shows the type of information that flows in the corresponding ports. Figure 12 show the activity diagram.
SysADL Studio is a tool to develop SysADL architectural models. In other words, it provides an engineering environment and workbench for architectural design based on the SysADL software architecture modeling language. SysADL Studio is a plugin for Eclipse, a well-known open source Java Integrated Development Environment, developed using Sirius and Xtext, which are also Eclipse plugins for creating graphical modeling workbenches and for development of programming languages and domain-specific languages, respectively. The diagrams are graphical representations of the well-founded SysADL metamodel and allow you to define models in light of Structural, Behavioral, and Executable viewpoints. The following video shows a brief demonstration of SysADL Studio and its features.
SysADL Studio provides a complete workbench for Structural, Behavioral and Execution viewpoints. It is easy to use, just create your diagram and drag and drop the components from the Palette. SysADL studio was based on SysML modeling tools, so SysML practitioners can easily create SysADL models.
SysADL Studio plugin was tested in Eclipse Photon, Package Eclipse Modeling Tools, with Sirius plugin already installed, available at https://www.eclipse.org/downloads/packages/release/photon/r/eclipsemodeling-tools.
The installation is done through 4 simple steps:
1. Go to menu: Help > Install New Software
2. Insert the update site (http://sysadl.imd.ufrn.br/update) in the Work With box and press enter
3. Select the desired plugins (potentially all of them) and follow the instructions to proceed. OBS.: Sometimes Eclipse may alert of an unofficial installation, it is normal since the update site is not hosted in eclipse.org. Simply press ‘Yes’ and the installation will continue normally.
4. Restart your IDE
See the manual for more details. This document has also a detailed explanation about how to model projects using SysADL diagrams.
In this other document you can find information on what you should not do when using the SysADL Studio tool.
You can see a preview of SysADL Studio in these two videos. The first video shows how to model the structural viewpoint of the RTC System.
This second video shows how to model the behavioral viewpoint of the same system using SysADL Studio.
The third video shows an example with emphasis on the executable viewpoint.
We are finishing the documents the precisely specify SysADL. The metamodel and the grammar specification will be provided here.
The following figures depict the SysADL metamodel. SysADL Studio is based on an Ecore model that implements it.
Oquendo, F.; Leite, J.; Batista, T. (2016) Software Architecture in Action: Designing and Executing Architectural Models with SysADL. Undergraduating Topics in Computer Science. Springer. This is the main reference about SysADL
Oquendo, F.; Leite, J.; Batista, T. (2016) Executing Software Architecture Descriptions with SysADL. Proc. of the 10th European Conf. on Software Architecture (ECSA), Copenhagen, Danemark.
Oquendo, F.; Batista, T.; Leite, J.; (2016) Specifying Architecture Behavior with SysADL. Proceedings of the 13th Working IEEE/IFIP Conference on Software Architecture (WICSA), Venice, Italy.
SysADL: A SysML Profile for Software Architecture Description. Jair Leite, Flávio Oquendo, Thais Batista. Software Architecture Lecture Notes in Computer Science, ed. Khalil Drira, Volume 7957, 2013, pp 106-113. DOI 10.1007/978-3-642-39031-9_9. Print ISBN 978-3-642-39030-2. Springer. This paper describes a initial proposal of SysADL, which is now outdated.
Leite, Jair C.; BATISTA, T. V. ; Oquendo, Flavio ; SILVA, E. A. F. ; Santos, L. ; Cortez, V. . Designing and Executing Software Architectures Models using SysADL Studio. In: 2018 IEEE International Conference on Software Architecture, 2018, Seattle. 2018 IEEE International Conference on Software Architecture Companion ICSA-C 2018, 2018. v. 1. p. 88-91.
SANTOS, L. ; SILVA, E. A. F. ; BATISTA, T ; CAVALCANTE, E. R. ; LEITE, J. C. ; Oquendo, F. . Evaluating a SysML-Based Graphical Notation for Modeling Internet of Things System Architectures. In: IEEE World Forum on Internet of Things (WF-IoT), 2020, New Orleans. Proceedings of the IEEE World Forum on Internet of Things (WF-IoT), 2020.
SANTOS, L. ; SILVA, E. A. F. ; BATISTA, T ; CAVALCANTE, E. R. ; LEITE, J. C. ; Oquendo, F. . An Architectural Style for Internet of Things Systems. In: ACM/SIGAPP Symposium On Applied Computing (SAC), 2020, Brno. Proceedings of the ACM/SIGAPP Symposium On Applied Computing, 2020.
Flavio Oquendo - IRISA, University of South Brittany, Vannes, France.
Jair C Leite - UFRN - Federal University of Rio Grande do Norte, Natal, Brazil
Thais Batista - UFRN - Federal University of Rio Grande do Norte, Natal, Brazil
Eduardo Silva - UFRN - Federal University of Rio Grande do Norte, Natal, Brazil
Lidiade Santos - UFRN, Federal University of Rio Grande do Norte, Natal, Brazil.
Victor Cortez - UFRN, Federal University of Rio Grande do Norte, Natal, Brazil.
Bruno Costa - UFRJ - Federal University of Rio de Janeiro. Rio de Janeiro, Brazil
Flavia Delicato - UFRJ - Federal University of Rio de Janeiro, Rio de Janeiro, Brazil
Paulo Pires - UFRJ - Federal University of Rio de Janeiro, Rio de Janeiro, Brazil