Cómo: Definir un perfil para ampliar UML
En Visual Studio Ultimate, se puede definir un perfil de UML para personalizar los elementos del modelo estándar con fines concretos. Un perfil define uno o más estereotipos de UML. Un estereotipo se puede usar para marcar un tipo como representativo de un tipo determinado de objeto. Un estereotipo también puede extender la lista de propiedades de un elemento.
Algunos perfiles se instalan con Visual Studio Ultimate. Para obtener más información sobre esos perfiles y sobre cómo se aplican los estereotipos, vea Personalizar el modelo con perfiles y estereotipos.
Puede definir sus propios perfiles para adaptar y ampliar UML a su propia arquitectura o área de negocio. Por ejemplo:
Si a menudo define sitios web, podría definir un perfil propio que proporcione un estereotipo "PáginaWeb" que se pueda aplicar a las clases de los diagramas de clases. A continuación, podría utilizar diagramas de clases para planear un sitio web. Cada clase "PáginaWeb" tendría propiedades adicionales sobre el contenido de la página, el estilo, etc.
Si desarrolla un software de banca, puede definir un perfil que proporcione un estereotipo "Cuenta". Posteriormente, podría utilizar los diagramas de clases para definir distintos tipos de cuentas y mostrar las relaciones entre ellos.
Puede distribuir sus perfiles a los miembros de su equipo. Cada miembro del equipo puede instalar su perfil. De este modo, podrán editar y crear modelos que utilicen sus estereotipos.
Nota
Si aplica los estereotipos de un perfil en un modelo que está editando, y, a continuación, comparte el modelo con otras personas, estas personas deberían instalar el mismo perfil en sus equipos.De lo contrario, no podrán ver los estereotipos que ha utilizado.
Normalmente, un perfil forma parte de una extensión de Visual Studio mayor. Por ejemplo, puede definir un comando que traduzca algunos elementos de un modelo al código. Puede definir un perfil que los usuarios deben aplicar a los paquetes que desean traducir. Este nuevo comando, junto con el perfil, se distribuiría en una sola extensión de Visual Studio.
También puede definir variantes adaptadas de un perfil. Los usuarios que carguen su extensión, verán la variante que resulta apropiada para su referencia cultural.
Definir un perfil
Para definir un perfil de UML
Cree un nuevo archivo XML con la extensión de nombre de archivo .profile.
Agregue las definiciones del estereotipo conforme a las instrucciones que se describen en Estructura de un perfil.
Agregue el perfil a una extensión de Visual Studio (archivo .vsix). Puede crear una nueva extensión para su perfil o agregar el perfil a una extensión existente.
Vea la sección siguiente, Agregar un perfil a una extensión de Visual Studio.
Instale la extensión en su equipo.
Haga doble clic en el archivo de extensión, cuya extensión de nombre de archivo es .vsix.
Reinicie Visual Studio.
Compruebe que se ha instalado el perfil.
Seleccione el modelo en el Explorador de UML.
En la ventana Propiedades, haga clic en la propiedad Perfiles. Su perfil aparecerá en el menú. Active la marca de verificación situada junto al perfil.
Seleccione el elemento para el que el perfil define los estereotipos. En la ventana Propiedades, haga clic en la propiedad Estereotipos. Los estereotipos aparecerán en la lista. Active la marca de verificación de uno de los estereotipos.
Si el perfil define propiedades adicionales para este estereotipo, expanda la propiedad para verlos.
Envíe el archivo de extensión a otros usuarios de Visual Studio para que lo instalen en sus equipos.
Agregar un perfil a una extensión de Visual Studio
Para instalar y poder enviar un perfil a otros usuarios, debe agregar el perfil a una extensión de Visual Studio. Para obtener más información, vea cómo implementar extensiones de Visual Studio.
Para definir un perfil en una nueva extensión de Visual Studio
Cree un proyecto de extensión de Visual Studio.
Nota
Para utilizar este procedimiento, debe tener instalado Visual Studio SDK.
En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.
En el cuadro de diálogo Nuevo proyecto, en Plantillas instaladas, expanda Visual C#, haga clic en Extensibilidad y, a continuación, haga clic en Proyecto VSIX. Especifique el nombre del proyecto y haga clic en Aceptar.
Agregue su perfil al proyecto.
- En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto, elija Agregar y, a continuación, haga clic en Elemento existente. En el cuadro de diálogo, busque su archivo de perfil.
Establezca la propiedad Copiar en salida del archivo del perfil.
En el Explorador de soluciones, haga clic con el botón secundario del mouse en el archivo del perfil y, a continuación, haga clic en Propiedades.
En la ventana Propiedades, establezca la propiedad Copiar en directorio de salida en Copiar siempre.
En el Explorador de soluciones, abra source.extension.vsixmanifest.
El archivo se abre en el editor de manifiestos de la extensión.
En la página Activos, agregue una fila que describa el perfil:
Haga clic en Nuevo. Establezca los campos del cuadro de diálogo Agregar nuevo activo como se indica a continuación.
Establezca Type en Microsoft.VisualStudio.UmlProfile
Esta no es una de las opciones desplegables. Escriba este nombre desde el teclado.
Haga clic en Archivo en filesystem y seleccione el nombre de su archivo de perfil, por ejemplo MyProfile.profile.
Compile el proyecto.
Para depurar el perfil, presione F5.
Se abre una instancia experimental de Visual Studio. En esta instancia, abra un proyecto de modelado. En el Explorador de UML, seleccione el elemento raíz del modelo y, en la ventana Propiedades, seleccione el perfil. A continuación, seleccione elementos dentro del modelo y establezca estereotipos que haya definido para ellos.
Para extraer el archivo VSIX para la implementación
En el Explorador de Windows, abra la carpeta .\bin\Debug o .\bin\Release para buscar el archivo .vsix. Es un archivo de la extensión de Visual Studio. Este archivo puede instalarse en el equipo y enviarse a otros usuarios de Visual Studio.
Para instalar la extensión:
Haga doble clic en el archivo .vsix. Se iniciará el Instalador de extensiones de Visual Studio.
Reinicie todas las instancias de Visual Studio que estén en ejecución.
Si Visual Studio SDK no está instalado, puede utilizarse el siguiente procedimiento alternativo para extensiones pequeñas.
Para definir una extensión de perfil sin utilizar Visual Studio SDK
Cree un directorio de Windows que contenga los tres archivos siguientes:
YourProfile.profile
extension.vsixmanifest
[Content_Types].xml: escriba este nombre tal y como se muestra aquí, con los corchetes.
Edite [Content_Types].xml para que contenga el texto siguiente. Observe que contiene una entrada para cada extensión de nombre de archivo.
<?xml version="1.0" encoding="utf-8"?> <Types xmlns="https://schemas.openxmlformats.org/package/2006/content-types"> <Default Extension="profile" ContentType="application/octet-stream" /> <Default Extension="vsixmanifest" ContentType="text/xml" /> </Types>
Copie un objeto extension.vsixmanifest existente y modifíquelo con un editor XML. Modifique los nodos ID, Name y Content.
Encontrará un ejemplo de extension.vsixmanifest en este directorio:
drive**:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles**
El nodo Content será similar a:
<Content> <CustomExtension Type="Microsoft.VisualStudio.UmlProfile" >YourProfile.Profile</CustomExtension> </Content>
Comprima los tres archivos en un archivo zip.
En el Explorador de Windows, seleccione los tres archivos, haga clic con el botón secundario del mouse, elija Enviar a y, a continuación, haga clic en Carpeta comprimida (en zip).
Cambie el nombre del archivo comprimido y su extensión de nombre de archivo de .zip a .vsix.
Para instalar el perfil en cualquier equipo con las ediciones de Visual Studio apropiadas, haga doble clic en el archivo .vsix.
Para instalar un perfil de UML desde una extensión de Visual Studio
En el Explorador de Windows, haga doble clic en el archivo .vsix o ábralo en Visual Studio.
En el cuadro de diálogo que aparece, haga clic en Instalar.
Para desinstalar o deshabilitar temporalmente la extensión, abra el Administrador de extensiones en el menú Herramientas.
Definir perfiles adaptados
Puede definir distintos perfiles para referencias culturales o idiomas diferentes y empaquetarlos todos en la misma extensión. Cuando un usuario carga su extensión, verá el perfil que ha definido para su referencia cultural.
Siempre debe proporcionar un perfil predeterminado. De este modo, si no ha definido un perfil para la referencia cultural del usuario, verá el perfil predeterminado.
Para definir un perfil adaptado
Cree un perfil tal y como se describe en las secciones anteriores, Definir un perfil y Agregar un perfil a una extensión de Visual Studio. Este es el perfil predeterminado y se utiliza en cualquier instalación para la que no se proporcione un perfil adaptado.
Agregue un nuevo directorio en el mismo directorio del archivo de perfil predeterminado.
Nota
Si está compilando la extensión utilizando un proyecto de extensión de Visual Studio, utilice el Explorador de soluciones para agregar una nueva carpeta al proyecto.
Cambie el nombre del nuevo directorio al código abreviado ISO de la referencia cultural adaptada, como bg para búlgaro o fr para francés. Debe utilizar un código de referencia cultural neutro, normalmente dos letras, y no una referencia cultural concreta como fr-CA. Para obtener más información sobre los códigos de referencia cultural, consulte el método CultureInfo.GetCultures, que proporciona una lista completa de códigos de referencia cultural.
Agregue una copia de su perfil predeterminado al nuevo directorio. No cambie el nombre de archivo.
Una carpeta de extensión de Visual Studio de ejemplo, antes de compilarse o comprimirse en un archivo .vsix, contendría las carpetas y archivos siguientes:
extension.vsixmanifest
MyProfile.profile
fr\MyProfile.profile
de\MyProfile.profile
Nota
No debe insertar en extension.vsixmanifest una referencia a las versiones localizadas de los perfiles.Los archivos del perfil copiados deben tener el mismo nombre que el perfil de la carpeta primaria.
Edite la nueva copia del perfil y traduzca al idioma de destino todos los elementos que estarán visibles para el usuario, como los atributos displayName.
Puede crear otras carpetas de referencia cultural y perfiles adaptados para tantas referencias culturales como desee.
Para compilar la extensión de Visual Studio, compile el proyecto de extensión o comprima todos los archivos, tal y como se describe en las secciones anteriores.
Estructura de un perfil
El archivo XSD para los perfiles UML se puede encontrar en el ejemplo siguiente sobre cómo establecer XSD de perfiles y estereotipos. Como ayuda para modificar los archivos de perfil, instale el archivo .xsd en:
%ProgramFiles%\Microsoft Visual Studio 11.0\Xml\Schemas
En esta sección se utiliza el perfil de C# como ejemplo. La definición completa del perfil puede verse en:
drive**:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles\CSharp.profile**
Los primeros elementos de esta ruta de acceso podrían ser diferentes a los de su instalación.
Para obtener más información sobre el perfil de .NET, vea Estereotipos estándar para modelos UML.
Secciones principales de la definición de un perfil de UML
Cada perfil tiene el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?>
<profile dslVersion="1.0.0.0"
name="CSharpProfile" displayName="C# Profile"
xmlns="https://schemas.microsoft.com/UML2.1.2/ProfileDefinition">
<stereotypes>...</stereotypes>
<metaclasses>...</metaclasses>
<propertyTypes>...</propertyTypes>
</profile>
Nota
El atributo denominado name no debe contener espacios ni puntuación.El atributo displayName, que aparece en la interfaz de usuario, debe ser una cadena XML válida.
Cada perfil contiene tres secciones principales. En orden inverso, son las siguientes:
<propertyTypes>: una lista de los tipos que se utilizan para las propiedades definidas en la sección de estereotipos.
<metaclasses>: una lista de los tipos de elementos del modelo a los que se aplican los estereotipos de este perfil, como por ejemplo, IClass, IInterface, IOperation e IDependency.
<stereotypes>: las definiciones de los estereotipos. Cada definición incluye los nombres y tipos de propiedades que se agregan al elemento del modelo de destino.
Tipos de propiedades
En la sección <propertyTypes> , se declara una lista de tipos que se utilizan en las propiedades de la sección <stereotypes>. Existen dos tipos de propiedades: tipos externos y tipos de enumeración.
Un tipo externo declara el nombre completo de un tipo de .NET estándar:
<externalType name="System.String" />
Un tipo de enumeración define un conjunto de valores literales:
<enumerationType name="PackageVisibility">
<enumerationLiterals>
<enumerationLiteral name="internal" displayName="internal" />
<enumerationLiteral name="protectedinternal" displayName="protected internal" />
</enumerationLiterals>
</enumerationType>
Metaclases
La sección <metaclasses> contiene una lista de los tipos de elementos del modelo para los que se pueden definir estereotipos de este perfil:
<metaclass
name="Microsoft.VisualStudio.Uml.Classes.IClass" />
<metaclass
name="Microsoft.VisualStudio.Uml.Classes.IInterface" />
<metaclass
name="Microsoft.VisualStudio.Uml.Components.IComponent" />
Para obtener la lista completa de los tipos de relaciones y elementos del modelo que puede utilizar como metaclases, vea Tipos de elementos del modelo.
Definición de estereotipos
La sección <stereotypes> contiene una o varias definiciones de estereotipos:
<stereotype name="CSharpClass" displayName="C# Class"> ...
En cada estereotipo se muestran uno o varios tipos de relaciones o elementos del modelo a los que se puede aplicar. Puede especificar el nombre de un tipo base para que incluya todos sus tipos derivados. Por ejemplo, si especifica Microsoft.VisualStudio.Uml.Classes.IType, el estereotipo podrá aplicarse a IClass, IInterface, IEnumeration y algunos otros tipos de elementos.
<metaclasses>
<metaclassMoniker name=
"/CSharpProfile/Microsoft.VisualStudio.Uml.Classes.IClass" />
</metaclasses>
El atributo name de metaclassMoniker es un vínculo a un elemento de la sección <metaClasses>.
Nota
El nombre del moniker debe comenzar con /yourProfileName/, donde yourProfileName se define en el atributo name del perfil ("CSharpProfile" en este ejemplo).El moniker finaliza con el nombre de una de las entradas de la sección de metaclases.
En cada estereotipo se pueden mostrar cero o más propiedades que se agregan a cualquier elemento del modelo al que se aplica el estereotipo. <propertyType> contiene un vínculo a uno de los tipos que se definen en la sección <propertyTypes> . El vínculo debe ser <externalTypeMoniker> para que haga referencia a <externalType>, o <enumerationTypeMoniker> para que haga referencia a <enumerationType>. De nuevo, el vínculo comienza con el nombre del perfil.
<properties>
<property name="IsStatic"
displayName="Is Static" defaultValue="false">
<propertyType>
<externalTypeMoniker
name="/CSharpProfile/System.Boolean" />
</propertyType>
</property>
<property name="PackageVisibility"
displayName="Package Visibility"
defaultValue="internal">
<propertyType>
<enumerationTypeMoniker
name="/CSharpProfile/PackageVisibility"/>
</propertyType>
</property>
</properties>
</stereotype>
Tipos de elementos del modelo
El conjunto de tipos para el que se puede definir estereotipos se muestra en Tipos de elementos del modelo.
Solución de problemas
Los estereotipos no aparecen en los modelos UML.
Tiene que seleccionar el perfil en un paquete o modelo. A continuación, los estereotipos aparecerán en elementos dentro del paquete o modelo. Para obtener más información, vea Agregar: Estereotipos a elementos del modelo.El siguiente error aparece al abrir un modelo UML: VS1707: The following profiles cannot be loaded because a serialization error occurred: MyProfile.profile
Compruebe que la sintaxis XML básica de .profile es correcta.
Asegúrese de que cada nombre del Moniker tiene el formato /profileName/nodeName. ProfileName es el valor del atributo de nombre en el nodo de perfil raíz. NodeName es el valor del atributo de nombre de una metaclase, externalType o enumerationType.
Asegúrese de que la sintaxis se ajuste a lo descrito aquí, tal como se muestra en drive**:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles\**.
Desinstale la extensión defectuosa. En el menú Herramientas, haga clic en Administrador de extensiones.
- Si no aparece la extensión, vea el elemento siguiente.
Recompile el archivo VSIX y ábralo en el Explorador de Windows para reinstalarlo. Reinicie Visual Studio.
La extensión no aparece en el Administrador de extensiones, pero si intenta reinstalarlo, se muestra el siguiente mensaje: The extension is already installed to all applicable products.
Quite el archivo de extensión de una subcarpeta de LocalAppData\Microsoft\VisualStudio\12.0\Extensions\.
Para ver LocalAppData, debe activar Mostrar todos los archivos y carpetas ocultos en la pestaña Ver de Opciones de carpeta del Explorador de Windows.
LocalAppData está normalmente en C:\Users\userName\AppData\Local\
Reinicie Visual Studio.
Vea también
Tareas
Agregar: Estereotipos a elementos del modelo
Conceptos
Estereotipos estándar para modelos UML
Otros recursos
Personalizar el modelo con perfiles y estereotipos