metamodelo,
utilizando

la

extensión

propiamente
de
UML

a

través

de

un

mecanismo

denominado
Perfiles UML. Los perfiles UML proveen un meca-
nismo de extensión genérico para construir mode-
los
UML

en

dominios

particulares.

Están

basados
en estereotipos, restricciones y valores etiquetados
adicionales
que

son

aplicados

a

los

elementos

o
relaciones de un diagrama [10]. Es oportuno acla-
rar que los perfiles no son una capacidad de exten-
sión de primera clase (es decir, no permiten crear
nuevos
metamodelos),

más

bien,

la

intención

de
los
perfiles

es

brindar

un

mecanismo

directo

para
adaptar un metamodelo existente con construccio-
nes que son específicas para un dominio, platafor-
ma
o

método

en

particular.

Cada

una

de

estas
adaptaciones se agrupa en un perfil. Aunque no es
posible eliminar ninguna de las restricciones que se
aplican a UML cuando se le utiliza, pero si es posi-
ble agregar nuevas restricciones que sean especí-
ficas del perfil.
iii. EL P L PROBLEMA
Según
[11]

los

programadores

hacen

uso

de

la
documentación
en

sus

actividades

diarias,

pero

a
su vez desatienden la creación de la misma, por lo
que
cada

vez

se

realizan

más

esfuerzos

para

la
creación
de

sistemas

de

autogeneración

de

docu-
mentación.
Como
apoyo

a

esta

actividad,

se

desarrollan

he-
rramientas de software tales como DocC, el compi-
lador
de

documentación

open-source

creado

por
Apple
y

la

herramienta

oficial

para

la

documenta-
ción de proyectos de software basados en lenguaje
de programación Swift [12].
Según
[13]

entre

los

lenguajes

de

programación
más
populares

de

2022

se

encuentran

Python,
Java,
Rust,

C++

y

Swift,

todos

estos

lenguajes
tienen
su

propia

herramienta

de

generación

de
documentación,
PyDoc,

JavaDoc,

RustDoc,

Do-
xygen, DocC en el orden correspondiente. DocC es
la herramienta más reciente entre las mencionadas
anteriormente, fue anunciada en 2021
y publicada
como open-source a finales de ese m e mismo año, aún
se encuentra en un estado de desarrollo activo y no
iguala
el

nivel

de

funcionalidades

que

ofrecen

las
herramientas
pertenecientes

a

otros

lenguajes

de
importancia similar.
En

[14], se indica que

una

de
las
funcionalidades

que

tienen

estas

herramientas
de documentación, excepto DocC, es la generación
de
diagramas

de

manera

automática

mediante

el
análisis estructural del código compilado.
En otras
palabras,
para

que

la documentación

de

los siste-
mas
de

software

se

considere

completa,

esta

de-
biera
contener

tanto

la

especificación

de

las

inter-
faces ofrecidas como una vista general de la arqui-
tectura del sistema [15]; de esta manera se resalta
la
importancia

de

la

generación

de

diagramas

de
clase en las herramientas de generación de docu-
mentación.
No se encontraron estudios donde se hagan análi-
sis
comparativos

entre

DocC

y

otros

generadores
de
documentación,

posiblemente

debido

a

lo

re-
ciente
de

la

herramienta,

pero

se

puede afirmar

a
partir de lo expuesto que el entorno de generación
de documentación Swift, no promueve la completi-
tud porque carece de un generador de diagramas.;
esto afecta
la

experiencia

del desarrollador

y con-
secuentemente
su

reputación.

En

este

sentido,

se
promueve la mejora a DocC incorporando la capa-
cidad de documentar la vista lógica de la arquitec-
tura
de

aquellas

aplicaciones

desarrolladas

con
Swift y por ende con el uso de POP, pero para ello,
se requiere primero definir un perfil para este para-
digma d a de p e programación.
iv. PERFIL P L PARA POP
Para la formulación del perfil de UML para POP se
hizo un análisis de la guía oficial del lenguaje Swift
[16]
el
cual

consistió

en

su

comparación

con

la
guía de especificación UM n UML 2 L 2.5 por OMG [17].
Como resultado de este análisis se identificaron los
tipos
existentes

integrados

en

el

lenguaje

Swift,
en la sección de referencia del lenguaje, apartado
titulado
Types”.

Esta

guía

hace

mención

a

los

si-
guientes tipos: Los tipos existentes se categorizan
en tipos con nombre y tipos compuestos. Los tipos
con
nombre

son

aquellos

a

los

que

se

les

puede
dar
un

nombre

particular

al

ser

definidos,

estos
incluyen
clases,

estructuras,

enumeraciones,

pro-
tocolos, arrays, diccionarios, sets, y todos aquellos
tipos
que

se

consideran

como

primitivos

en

otros
lenguajes
(números,

caracteres,

texto).

Los

tipos
compuestos
son

tipos

sin

nombre,

estos

son

las
funciones y las tuplas. [16].
La
Tabla

1

muestra

una

descripción

de

cada

una
de las estructuras de datos mencionadas anterior-
mente.
Estas

descripciones

permitieron

trazar

una
base
conceptual

para

luego

hacer

la

comparación
entre las estructuras de datos provistas por Swift y
las
definidas

por

UML,

identificando

así

cuáles

se
debían estereotipar