• No se han encontrado resultados

Specification Window

Figura 4.15: Diagrama de Estados

4.5. Representación textual de un modelo

La información representada en un modelo especificado con la aplicación CASE Rational Rose, se almacena en archivos con extensión .mdl o .ptl. Estos tipos de archivos utilizan el formato ASCII para representar la información gráfica y textual contenida en los modelos, y se los denomina petals (pétalos). Debido al formato ASCII utilizado, es posible transferir modelos y componentes de modelos con independencia de plataformas.

Mediante la opción File>Save o File>Save as... del menú principal, se puede almacenar el modelo actual en la aplicación en un archivo con extensión .mdl. Si se selecciona uno o varios elementos del modelo y se elige File>Export en el menú principal, se pueden almacenar determinados items, en un archivo con extensión .ptl.

Este tipo de archivos también contiene información sobre la posible generación de código en algún lenguaje. Gran parte de la información especificada no es de interés para este trabajo. En la siguiente sección se describirá en forma incompleta la gramática del contenido de un archivo .mdl. Se destacará la estructura principal del texto del archivo y la especificación de los elementos de modelado de relevancia descriptos anteriormente.

4.5.1. Gramática de un archivo .mdl

4.5.1.1. Estructura principal

La estructura del archivo .mdl (<PetalFile>) se divide, en principio, en dos partes principales:

<PetalFile>

<PetalVersion> <Design> PetalVersion

Contiene datos sobre la versión de la herramienta con la que fue generado el archivo. Propiedades adicionales, varían en distintas versiones.

<PetalVersion> (object Petal

version 40) Design

Contiene toda la información del modelo y sus vistas. Esto comprende la especificación de los elementos de modelado y la representación textual de sus correspondientes íconos gráficos.

<Design>

(object Design "Logical View"

is_unit <Boolean> is_loaded <Boolean>

file_name <FilePath> {Path completo del archivo .mdl}

quid <Identity>

defaults (...{Datos referentes a la visión de la aplicación: fuentes, ubicación, etc.}...) root_usecase_package (…{Datos referentes a la vista de casos de uso: modelos, diagramas, etc.}... ) root_category <Class_Category> {con nombre obligatorio "Logical View"}

root_subsystem (…{Datos relacionados con la vista de componentes}…) process_structure (…{Datos sobre la vista de despliegue}…)

properties (...{especificación de propiedades útiles para la generación de código}...) )

4.5.1.2. Elementos destacados

ClassCategory

Representa un ítem Package del Browser de Rational Rose. Contiene la representación textual de

características propias, diagramas de clases, clases, asociaciones y otros paquetes.

<ClassCategory>

(object Class_Category <String> {nombre}

quid <Identity> {identificación única para el modelo} exportControl <ExportEnum>

global <Boolean> subsystem <String>

logical_models ( list unit_reference_list <Class|Association|Class_Category>* ) logical_presentations (…{Propiedades gráficas de los diagramas de clases}...) ) Class

Su representación contiene propiedades específicas a una clase, y eventualmente puede contener representaciones de atributos, operaciones, referencias a superclases y un diagrama de estados.

<Class>

(object Class <String> {nombre}

quid <Identity> {identificación única para el modelo} abstract <Boolean>

concurrency <ConcurrencyType>

operations ( list Operations <Operation>* )

class_attributes ( list class_attribute_list <ClassAttribute>* )

superclasses ( list inheritance_relationship_list <InheritanceRelationship>* ) …...

statediagram (…{Datos sobre la representación gráfica del diagrama de estados}. . . ) . . . ) Operation

Describe las propiedades del ítem Operation y puede contener la especificación de varios parámetros.

<Operation>

(object Operation <String>

quid <Identity>

parameters ( list Parameters <Parameter>* ) result <String> concurrency <ExportEnum> pre_condition <SemanticInfo> post_condition <SemanticInfo> semantics <SemanticInfo> …) ClassAttribute

Representación del elemento Attribute. También utilizada para Qualifiers.

<ClassAttribute>

(object ClassAttribute <String>

quid <Identity> type <String> initv <String> exportControl <ExportEnum> static <Boolean> …..) InheritanceRelationship

Contiene la información necesaria para representar una Generalization en el modelo.

<InheritanceRelationship> (object Inheritance_Relationship

quid <Identity>

label <String>

supplier <String> {nombre de superclase}

quidu <Identity> {de la superclase} …)

Association

Especifica propiedades de la relación Association y contiene la especificación de sus dos roles.

<Association>

(object Association <String>

quid <Identity>

roles (list role_list <Role>*) Constraints <Text>

AssociationClass <String> {si es AssociationClass} …) Role

Especificación de las propiedades de un AssociationEnd. Incluye la representación de una lista de

Attributes, que actúan como Qualifiers.

<Role>

(object Role <String>

quid <Identity>

label <String> {nombre}

supplier <String> {nombre declase que conecta} quidu <Identity> {de la clase que conecta} client_cardinality <Cardinality> s_navigable <Boolean> is_aggregate <Boolean> Containment <ContainmentEnum> is_principal <Boolean> friend <Boolean> static <Boolean>

StateMachine

Describe información referente a la máquina de estados representada en un StateDiagram. Contiene una lista con las especificaciones de los estados que la conforman.

<StateMachine> (object State_Machine

states (list States <State>* ) State

Describe propiedades de State, StartState o EndState. Contiene las especificaciones de las transiciones que parten desde el estado.

<State>

(object State <String>

quid <Identity>

transitions (list transition_list <StateTransition>* )

type <StateType>

statemachine <StateMachine>

actions (…{Acciones internas al estado}. . . ). . . ) StateTransition

Especificación de las propiedades de una Transition, del evento que la dispara, su condición y la acción que ejecuta.

<StateTransition> (object State_Transition

quid <Identity>

supplier <String> {nombre del estado destino}

quidu <Identity> {del estado destino}

Event <Event> condition <String> action <Action>

sendEvent (…{Datos sobre un evento que envía la transición}... ) ....) Event y Action

<Event>

(object Event <String>

parameters <String>) <Action>

(object action <String>

quid <Identity>)

Tipos básicos

<ExportEnum> ::= "Public" | "Private" | "Protected" | "Implementation" <ConcurrencyType> ::= "Guarded" | "Active" | "Synchronous"

<StateType> ::= "StartState" | "Normal" | "EndState" <ContainmentEnum> ::= "By Reference" | "By Value"

<Cardinality> ::= (value cardinality <String>) {Ver tabla de Multiplicidad} <SemanticInfo> ::= (object Semantic_Info

PDL <Text>)

<Boolean> ::= TRUE | FALSE

<Identity> ::= " {Número hexadecimal} " <Text> ::= <String> | ( | <String>)+

<String> ::= " {Secuencia de caracteres ASCII} " <FilePath> ::= " {Ubicación en un sistema de archivos} "