The Software Design Reference Ontology (SDRO)
domain ontology from SEON
SDRO published paperCastro, M. V. H. B., Barcellos, M. P., & Falbo, R. A. (2021). An Ontological View of Design in the Software Context. 14th Seminar on Ontology Research in Brazil (ONTOBRAS).
1. Ontology Description
The Software Design Reference Ontology (SDRO) aims at providing a well-founded consensual conceptualization of the design phenomenon in the software context. SDRO is integrated to SEON, uses the works by Ralph and Wand (2009) and Guarino (2014) as a reference to describe the core design notions and reuses concepts from other SEON ontologies to address software particularities. By combining general notions of design and specific aspects of Software Engineering, it is possible to provide a conceptualization about design in the software context integrated to other aspects, such as requirements, code and testing.
SDRO allows the instantiation of software design situations regardless of the design paradigm, process or method used in software development. It is focused on design as noun, i.e., it is not focused on describing activities involved in a general software design process, which is addressed in SEON by the Design Process Ontology (DPO). SDRO may serve as a reference model, being used or specialized in the development of other ontologies that refer to software design.
3. Ontology Models
Figure 1 presents the packages of the SDRO Modularization.
Figure 1. SDRO Modularization.
3.1. Mental Aspects
Figure 2 presents the conceptual model of the Mental aspects subontology.
Figure 2. Mental aspects conceptual model.
Mental aspects are treated in SDRO as Software Designer Mental Moments that inhere in a Software Designer, which is a Person Stakeholder that uses his/her skills to directly contribute to the outcome of the design effort. The propositional content of a Software Designer Mental Moment is a Software Design Proposition, i.e., a sentence describing an idea in the designer’s mind about software design aspects of a certain object. Thus, Software Designer Mental Moments represent mental properties of a Software Designer that enable him/her to imagine possible solutions for software design problems, while Software Design Propositions are the expression of such solutions in a conversation or in the internal dialogue of the designer. The realization of design solutions is given by situations in reality where the propositional content of Software Designer Mental Moments (i.e., Software Design Propositions) are true. The number of design solutions that can be actually realized varies according to the intersection between desirable situations that satisfy the requirements and feasible situations that respect the constraints (e.g., time, cost and computational resources) (BAKER; HOEK, 2006).
Five different types of Software Design Propositions were identified, based on what their subject refers to. A Mental Software Design Object concerns the software object being designed, which may not exist yet (i.e., it represents what designers visualize as the final design object when they refer to “the system”). A Mental Software Design Object is specified by a Mental Software Design Specification, a detailed description of the object structure (i.e., how the object should be decomposed and organized in smaller elements and how these elements interact with each other). In the beginning of the design process, this description usually represents the object structure in a higher level of abstraction (e.g., architecture aspects) and as design iterations occur, it is refined into more detailed representations (e.g., components and modules) at lower levels of abstraction (PRESSMAN; MAXIM, 2020). The Mental Software Design Specification consists of one or more Mental Software Design Choices made by the Software Designer. Each Mental Software Design Choice can be motivated by Requirements or by other Mental Software Design Choices and contains details about a decision made by the Software Designer concerning structural or behavioral properties of the designed object or about its components and their connections. Thus, a Mental Software Design Choice may concern Mental Software Design Components, which represent what the Software Designer expects to exist as a part of the designed object in a particular place, playing a specific role and having its own properties (e.g., modules, partitions and layers in which the system’s architecture is organized), also referred as “conventional system components” by Guarino and Melone (2015). A Mental Software Design Choice may also concern a Mental Computing Resulting State, which represents an expected result of a Mental Software Design Choice that can only be assessed in runtime (e.g., obtaining a certain return code after the execution of a system’s module).
3.2. Physical Aspects
Figure 3 presents the conceptual model of the Physical aspects subontology.
Figure 3. Physical aspects conceptual model.
SDRO physical aspects, in turn, are treated as sub-types of Software Artifact. For example, a Software Design Object is a Software System that implements one or more Mental Software Design Objects. This does not imply that every Mental Software Design Object results in the development of a new Software System. An existing Software System is also considered a Software Design Object when it implements at least one Mental Software Design Object specified by a Mental Software Design Specification. Software Design Objects are composed of Software Design Components, which are Programs that play specific roles in the designed Software System, implementing Mental Software Design Components. Software Design Components can be composed of sub-components, allowing the representation of more complex architectures. A (sub)component can also be part of more than one component (e.g., in situations where the code is properly modularized and reused).
In order to be executed and used, a Software Design Object and its Software Design Components must be, respectively, materialized as a Loaded Software Design Object (Loaded Software System Copy) and Loaded Software Design Components (Loaded Program Copies) inhering in a Computer Machine, i.e., the software must be loaded in the computer’s main memory. A Loaded Software Design Component can be executed as a Program Copy Execution that brings about a Computing Resulting State. If the program was implemented and executed correctly, this Computing Resulting State may satisfy a Mental Computing Resulting State associated in a Mental Software Design Choice with the corresponding Mental Software Design Component materialized by the executed Loaded Software Design Component. This relationship allows us to verify if the implemented software meets the design specification.
Another type of Software Artifact is a Software Design Specification, which is created by one or more Software Designers and can be either a Model (e.g., a class diagram), a Document (e.g., a detailed textual description) or a Software Item (e.g., a functional prototype), providing an explicit representation that describes Mental Software Design Specifications (also referred as Software Design Descriptions in IEEE 1016 (IEEE, 2009)). A Software Design Specification is an aggregation of Software Design Choices, which are Information Items describing Mental Software Design Choices. Therefore, a Software Design Choice is a piece of information that physically represents choices made by a Software Designer and can be used for communication and evaluation purposes (e.g., a sentence like “The system will be implemented in Java” or details added in a class diagram that indicates how entities and relations should be represented in the database). As a derived relation, a Software Design Choice is motivated by (and, thus, intends to satisfy) a Requirement Artifact when the Mental Software Design Choice it describes is motivated by the Requirement described by the Requirement Artifact. This connection establishes a traceability relation between design and requirements artifacts.
4. Concepts Definition
The following table shows the definitions for SDRO concepts.
Concept | Definition |
---|---|
The materialization of a Software Design Component (i.e., the resulting designed program loaded in the computer memory). | |
The materialization of a Software Design Object (i.e., the resulting designed software loaded in the computer memory). | |
A Software Design Proposition that represents an expected result of a Mental Software Design Choice that can only be assessed in runtime. | |
A Software Design Proposition concerning a choice in the mind of a designer about how certain requirements of the system should be met. It involves defining which components are part of the system and how they are connected to each other. | |
A Software Design Proposition describing parts, or components, of the software system being designed. It represents what the designer has in mind about how components of system should be implemented. Thus, these components have specific properties, play specific roles and are expected to exist in particular places in the software system. | |
A Software Design Proposition concerning the software system being designed, i.e., the picture the designer has in mind about the system he/she is designing. | |
A complex Software Design Proposition consisting in design choices about the designed system. It represents the ideas in the designer’s mind that form a detailed description of the system in terms of its structure. | |
Information Item describing a Mental Software Design Choice, i.e. a physical representation of design choices that can be used for communication and evaluation purposes. | |
A Program that plays a specific role in a Software System, implementing a Mental Software Design Component. | |
A Software System which is the concrete realization of some Software Design Specification, implementing Mental Software Design Objects. | |
The propositional content of Software Designer Mental Moments. | |
A Software Artifact that provides a physical representation of a mental specification. It can be presented as a Model, a Document or a Software Item. | |
A Person Stakeholder that uses his or her skills to directly contribute to the outcome of the design effort. | |
A mental moment inhering in a Software Designer representing mental properties that enable him/her to imagine possible solutions for software design problems. |
5. Detailed Concepts
Software Design Reference Ontology (SDRO) detailed concepts.
SDRO::Loaded Software Design Component
Loaded Software Design Component
Specializes:
SysSwO::Loaded Program Copy
Definition:
The materialization of a Software Design Component (i.e., the resulting designed program loaded in the computer memory).
Relations:
Loaded Software Design Component (0..*) materialization of (1..1) Software Design Component
Loaded Software Design Object (1..1) <>-- (1..*) Loaded Software Design Component
SDRO::Loaded Software Design Object
Loaded Software Design Object
Specializes:
SysSwO::Loaded Software System Copy
Definition:
The materialization of a Software Design Object (i.e., the resulting designed software loaded in the computer memory).
Relations:
Loaded Software Design Object (0..*) materialization of (1..1) Software Design Object
Loaded Software Design Object (1..1) <>-- (1..*) Loaded Software Design Component
SDRO::Mental Computing Resulting State
Mental Computing Resulting State
Specializes:
SDRO::Software Design Proposition
Definition:
A Software Design Proposition that represents an expected result of a Mental Software Design Choice that can only be assessed in runtime.
Example: obtaining a certain return code after the execution of a system’s module
Relations:
Mental Software Design Choice (1..*) concerns (0..*) Mental Computing Resulting State
Computing Resulting State (0..*) satisfies (0..*) Mental Computing Resulting State
SDRO::Mental Software Design Choice
Mental Software Design Choice
Specializes:
SDRO::Software Design Proposition
Definition:
A Software Design Proposition concerning a choice in the mind of a designer about how certain requirements of the system should be met. It involves defining which components are part of the system and how they are connected to each other.
Source: Adapted from [Guarino, N. (2014)]
Relations:
Mental Software Design Choice (1..*) concerns (0..*) Mental Software Design Component
Mental Software Design Choice (1..*) concerns (0..*) Mental Computing Resulting State
Mental Software Design Choice (0..*) motivated by (0..*) Requirement
Mental Software Design Choice (0..*) motivated by (0..*) Mental Software Design Choice
Software Design Choice (0..*) describes (1..*) Mental Software Design Choice
Mental Software Design Specification (1..*) <>-- (1..*) Mental Software Design Choice
SDRO::Mental Software Design Component
Mental Software Design Component
Specializes:
SDRO::Software Design Proposition
Definition:
A Software Design Proposition describing parts, or components, of the software system being designed. It represents what the designer has in mind about how components of system should be implemented. Thus, these components have specific properties, play specific roles and are expected to exist in particular places in the software system.
Example: System modules, UI elements.
Source: Adapted from [Guarino, N., & Melone, M. R. S. (2015)]
Relations:
Mental Software Design Choice (1..*) concerns (0..*) Mental Software Design Component
Software Design Component (0..*) implements (1..*) Mental Software Design Component
SDRO::Mental Software Design Object
Mental Software Design Object
Specializes:
SDRO::Software Design Proposition
Definition:
A Software Design Proposition concerning the software system being designed, i.e., the picture the designer has in mind about the system he/she is designing.
Example: what designers visualize as the final design object when they refer to "the system".
Relations:
Software Design Object (0..*) implements (1..*) Mental Software Design Object
Mental Software Design Specification (1..*) specifies (1..*) Mental Software Design Object
SDRO::Mental Software Design Specification
Mental Software Design Specification
Specializes:
SDRO::Software Design Proposition
Definition:
A complex Software Design Proposition consisting in design choices about the designed system. It represents the ideas in the designer’s mind that form a detailed description of the system in terms of its structure.
Source: Adapted from [Ralph, P., & Wand, Y. (2009)] and [Guarino, N. (2014)]
Relations:
Mental Software Design Specification (1..*) specifies (1..*) Mental Software Design Object
Mental Software Design Specification (1..*) <>-- (1..*) Mental Software Design Choice
Software Design Specification (0..*) describes (1..*) Mental Software Design Specification
SDRO::Software Design Choice
Software Design Choice
Specializes:
SysSwO::Information Item
Definition:
Information Item describing a Mental Software Design Choice, i.e. a physical representation of design choices that can be used for communication and evaluation purposes.
Example: A sentence like “The system will be implemented in Java”; Further details added in a class diagram that indicates how entities or relations should be represented on the database.
Relations:
Software Design Choice (0..*) describes (1..*) Mental Software Design Choice
Software Design Choice (0..*) /motivated by (0..*) Requirement Artifact
Software Design Choice (0..*) /motivated by (0..*) Software Design Choice
Software Design Specification (1..*) <>-- (1..*) Software Design Choice
SDRO::Software Design Component
Software Design Component
Specializes:
UFO::Role
SysSwO::Program
Definition:
A Program that plays a specific role in a Software System, implementing a Mental Software Design Component.
Source: Adapted from [Guarino, N., & Melone, M. R. S. (2015)]
Relations:
Software Design Component (0..*) <>-- (0..*) Software Design Component
Software Design Component (0..*) implements (1..*) Mental Software Design Component
Software Design Object (1..1) <>-- (1..*) Software Design Component
Loaded Software Design Component (0..*) materialization of (1..1) Software Design Component
SDRO::Software Design Object
Software Design Object
Specializes:
SysSwO::Software System
Definition:
A Software System which is the concrete realization of some Software Design Specification, implementing Mental Software Design Objects.
Relations:
Software Design Object (0..*) implements (1..*) Mental Software Design Object
Software Design Object (0..*) realizes (0..*) Software Design Specification
Software Design Object (1..1) <>-- (1..*) Software Design Component
Loaded Software Design Object (0..*) materialization of (1..1) Software Design Object
SDRO::Software Design Proposition
Software Design Proposition
Specializes:
UFO::Proposition
Definition:
The propositional content of Software Designer Mental Moments.
Relations:
Software Design Proposition (1..1) propositional content of (1..*) Software Designer Mental Moment
SDRO::Software Design Specification
Software Design Specification
Specializes:
SysSwO::Software Artifact
Definition:
A Software Artifact that provides a physical representation of a mental specification. It can be presented as a Model, a Document or a Software Item.
Example: a class diagram; a detailed textual description; a functional prototype.
Relations:
Software Design Specification (0..*) describes (1..*) Mental Software Design Specification
Software Design Specification (1..*) <>-- (1..*) Software Design Choice
Software Design Object (0..*) realizes (0..*) Software Design Specification
Software Designer (1..*) responsible for (0..*) Software Design Specification
SDRO::Software Designer
Software Designer
Specializes:
SPO::Person Stakeholder
Definition:
A Person Stakeholder that uses his or her skills to directly contribute to the outcome of the design effort.
Source: Adapted from [Ralph, P., & Wand, Y. (2009)]
Relations:
Software Designer (1..*) responsible for (0..*) Software Design Specification
Software Designer Mental Moment (0..*) inheres in (1..1) Software Designer
SDRO::Software Designer Mental Moment
Software Designer Mental Moment
Specializes:
UFO::Mental Moment
Definition:
A mental moment inhering in a Software Designer representing mental properties that enable him/her to imagine possible solutions for software design problems.
Relations:
Software Designer Mental Moment (0..*) inheres in (1..1) Software Designer
Software Design Proposition (1..1) propositional content of (1..*) Software Designer Mental Moment