
where is this system deployed?; (3) how much does this dia-
gram consistently communicate enough details to represent
the same system using other languages or graphical nota-
tions, such as UML?
Thus, it is challenging to derive information about the
system when certain visual elements are not present in the
diagram. The idea of consistency in this paper refers to the
understandability of the diagram. Thus, consistency is re-
alized by how helpful the diagram is in understanding the
system.
2.2 System Descriptors
System descriptors are scripts for automating, standard-
izing, and managing infrastructure in production environ-
ments. System descriptors arise in the context of Infras-
tructure as Code (IaC), which uses configuration scripts to
specify the definition and configuration of the software in-
frastructure required to run a system [2].
In practice, system descriptors are artifacts that describe
a system architecture. Tools such as Chef 1, Dockerfile2,
and Puppet3create system descriptions. Container orches-
trators such as Docker-Compose and Kubernetes [8, 16]
also generate system descriptors.
According to [12], system descriptors allow developers
to treat system infrastructure in the same way as code de-
velopment: choose the right tool and implement a solution
that effectively meets the requirements. System descriptors
are easily replicated, versioned, and computer-executable.
While these scripts are good at telling the computer ac-
curate information about the architecture and infrastructure
of the system, diagrams do a better job of communicating
data to humans [10].
2.2.1 System Descriptors Key Concepts
Each system descriptor in the software industry uses its own
terms and concepts to describe a system. The following sec-
tions presents the most important terms and concepts used
by the most common system descriptors.
Key concepts in Docker Compose The key concepts in
Docker Compose are services, volumes, network, image,
and depends-on.
According to the Docker Compose documentation [8],
services represent the containers to be created in the ap-
plication. In addition, the service contains the necessary
settings for the service to run, such as Docker image, en-
vironment variables, and depends-on directive. Depends-
on expresses the dependencies between services at startup
1Chef Infra: available at https://docs.chef.io/chef overview/
2Dockerfile: available at https://docs.docker.com/engine/reference/builder
3Puppet: available at https://puppet.com/docs/puppet
and shutdown, while the image directive specifies the image
from which to start the container.
Key concepts in Kubernetes According [16], Kuber-
netes is a portable, extensible, open-source platform for
managing containerized workloads and services. Kuber-
netes also facilitates both declarative configuration and au-
tomation. The main concepts in Kubernetes are pods, ser-
vices, deployments.
Pods are the most minor deployable compute units de-
velopers can create and manage in Kubernetes. It is pos-
sible to create and manage multiple pods in a Kubernetes
cluster through a workload controller such as Deployment.
In this way, the Deployment workload controller automat-
ically manages the number of pod replicas running on the
system.
Kubernetes defines another concept for centrally man-
aging access to pods: services. Thus, a service is an ab-
straction that defines a logical set of pods and a policy for
accessing them [16].
Key concepts in Terraform According to [18], the key
concepts in Terraform are provider, resource, resource mod-
ule, infrastructure module, composition, and data source.
Providers are Terraform plugins used to interact with
cloud providers, SaaS providers, and other APIs. Some ex-
amples of providers are: Amazon AWS, Google Cloud Plat-
form, and Microsoft Azure. The Terraform settings must
specify which providers are required for Terraform to in-
stall and use them.
Each provider adds a set of resource types or data
sources that Terraform can manage. A resource belongs to
a provider, accepts arguments, creates attributes, and has a
lifecycle. A resource can be created, retrieved, updated, and
deleted. Some examples of resources that belong to the aws
provider are aws vpc,aws db instance, etc.
3 Related Work
Concerning consistency verification in models, several
research papers have presented different approaches to ver-
ifying the consistency of models. Some recurring ap-
proaches are: (1) validation of UML models using consis-
tency rules [11, 1], (2) algorithmic approaches [19], and (3)
the use of graphs [22]. However, they proposed approaches
to validate a UML model against another UML model. We
proposed an approach that applies a valid system descriptor
to generate architectural diagrams.
In addition, other related research focused on the trans-
formation of system descriptors into graphical representa-
tions, such as [25], [7], and [27]. One difference with our
work is that we focus on improving architectural diagrams’
consistency through system descriptors.
3