Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NCh-ISO 19103-2010-047
NCh-ISO 19103-2010-047
Contenido
Página
Preámbulo VI
0 Introducción 1
1 Alcance 2
2 Conformidad 2
3 Referencias normativas 2
4.3 Abreviaciones 8
5 Organización 9
6.1 Introducción 10
6.3 Clases 11
6.4 Atributos 11
6.6 Operaciones 34
I
NCh-ISO 19103
Contenido
Página
6.11 Paquetes 39
6.12 Notas 40
6.13 Restricciones 40
Anexos
D.1 Introducción 69
D.3 Clases 70
D.4 Atributos 72
II
NCh-ISO 19103
Contenido
Página
D.6 Operaciones 73
D.11 Paquetes 81
D.12 Notas 81
D.13 Restricciones 82
Figuras
Figura 7 Multiplicidad 20
III
NCh-ISO 19103
Contenido
Página
IV
NCh-ISO 19103
Contenido
Página
Tablas
V
NORMA CHILENA OFICIAL NCh-ISO 19103.Of2010
Preámbulo
Esta norma se estudió a través del Comité Técnico Geomática, para entregar reglas y
orientaciones para el uso de un lenguaje de esquema conceptual dentro de las normas ISO
de información geográfica. El lenguaje de esquema conceptual elegido es el Lenguaje
Unificado de Modelado (UML).
La norma NCh-ISO 19103 ha sido preparada por la División de Normas del Instituto
Nacional de Normalización, y en su estudio el Comité estuvo constituido por las
organizaciones y personas naturales siguientes:
VI
NCh-ISO 19103
Esta norma ha sido aprobada por el Consejo del Instituto Nacional de Normalización, en
sesión efectuada el 30 de noviembre de 2010.
Esta norma ha sido corregida y reimpresa en 2011, corrigiéndose los errores de forma
siguientes:
Esta norma ha sido declarada Oficial de la República de Chile por Resolución Administrativa
Exenta N°1917, de fecha 15 de septiembre de 2011, del Ministerio de Economía, Fomento y
Turismo, publicado en el Diario Oficial del 24 de septiembre de 2011.
VII
NORMA CHILENA OFICIAL NCh-ISO 19103.Of2010
0 Introducción
Hay dos aspectos a tener en cuenta en esta norma. En primer lugar, se debe elegir un CSL
que cumpla los requisitos para una representación rigurosa de la información geográfica.
Esta norma identifica la combinación del diagrama de estructura estática del Lenguaje
Unificado de Modelado (UML) con su Lenguaje de Restricciones de Objetos (OCL)
asociado y un conjunto de definiciones básicas como un lenguaje de esquema conceptual
para especificar la información geográfica. En segundo lugar, esta norma entrega
orientaciones sobre la forma en que se debería usar el UML para generar información
geográfica y modelos de servicios que son una base para lograr la meta de la
interoperabilidad.
Uno de los objetivos de las normas ISO de información geográfica que usan modelos UML
es entregar una base correspondiente (mapping) para codificar esquemas como se define
en ISO 19118, así como una base para crear especificaciones para perfiles de
implementación para varios entornos.
1
NCh-ISO 19103
1 Alcance
Esta norma también proporciona un perfil del UML para su uso con información geográfica
y una orientación sobre la forma en que el UML se debería usar para crear modelos
normalizados de información geográfica y servicios.
2 Conformidad
Cualquier esquema conceptual escrito para una especificación, incluido un perfil o norma
funcional, que declara conformidad con esta norma debe cumplir todos los requisitos
descritos en el conjunto de pruebas abstractas del Anexo A. Esquemas no UML deben ser
considerados conformes si existe una correspondencia bien definida desde un modelo en
el lenguaje fuente a un modelo equivalente en UML y que este modelo en UML esté
conforme.
3 Referencias normativas
Los documentos referenciados siguientes son indispensables para utilizar este documento.
Para referencias con fechas, sólo se aplica la edición citada. Para referencias sin fechas,
se aplica la última edición del documento citado (incluidas sus modificaciones).
La equivalencia de las Normas Internacionales señaladas anteriormente con Norma Chilena, y su grado de
correspondencia es el siguiente:
2
NCh-ISO 19103
Para los propósitos de esta norma, se aplican los términos y definiciones siguientes.
[ISO 19101]
4.1.2 esquema de aplicación: esquema conceptual para datos requeridos en una o más
aplicaciones
4.1.3 modelo conceptual: modelo que define los conceptos de un universo de discurso
[ISO 19101]
[ISO 19101]
EJEMPLO
Número entero, Real, Booleano, secuencia (string), Fecha y Punto SG (conversión de datos en una serie de
códigos).
NOTA - Los tipos de datos incluyen tipos predefinidos primitivos y tipos que define el usuario.
NOTA - Los dominios se utilizan para definir el conjunto de dominios y el conjunto de rangos de atributos,
operadores y funciones.
[ISO 19101]
NOTAS
1) Un feature puede ocurrir como un tipo o una instancia. El tipo de feature o instancia de feature se debería
usar sólo cuando se refiere a uno de ellos.
2) En UML (ver Anexo E, Bibliografía, [8], un feature es una propiedad, tal como una operación o atributo,
que se encapsula como parte de una lista dentro de un clasificador, tal como una interfaz, una clase o un
tipo de datos.
3
NCh-ISO 19103
4.1.8 asociación de features: relación que vincula instancias de un tipo de feature con
instancias del mismo tipo de feature o de otro distinto
[ISO 19109]
NOTAS
1) Una asociación de features puede ocurrir como un tipo o una instancia. El tipo de asociación de features o
instancia de asociaciones de feature se usa sólo cuando se refiere a uno de ellos.
NOTAS
1) Un atributo de un feature tiene un nombre, un tipo de dato y un dominio de valor asociado a él y, para
una instancia de feature, también tiene un valor de atributo obtenido del dominio de valor.
2) Un atributo de un feature puede ocurrir como un tipo o una instancia. El tipo de atributo de un feature o
una instancia de un atributo de un feature se debería usar sólo cuando se refiere a uno de ellos.
4.1.10 operación de un feature: operación que puede realizar cada instancia de un tipo de
feature
[ISO 19109]
EJEMPLOS
1) Una operación bajo el nombre represa es para elevar la represa. El resultado de esta operación es elevar el
nivel del agua en un reservorio.
2) Una operación bajo el nombre represa podría impedir la navegación a embarcaciones en el cauce.
NOTA - Las operaciones de features proporcionan una base para una definición de un tipo de feature.
[ISO 19115]
[ISO 19115]
NOTAS
[ISO 19101]
4
NCh-ISO 19103
4.1.14 servicio: parte distintiva de la funcionalidad que entrega una entidad mediante
interfaces
[ISO/IEC TR 14252]
EJEMPLO
El rango 3-28, todos los números enteros, cualquier caracter ASCII, enumeración de todos los valores
aceptados (verde, azul, blanco).
4.2.1 actor: conjunto coherente de roles que los usuarios de casos de usos ejecutan
cuando interactúan con estos casos
NOTA - Un actor puede ser considerado para que juegue un rol separado respecto a cada caso de uso con el
que se comunica.
4.2.2 agregación: forma especial de la asociación que especifica una relación todo-parte
entre el agregado (todo) y un componente (parte)
4.2.3 asociación: relación semántica entre dos o más clasificadores que especifica las
conexiones entre sus instancias
NOTA - Una asociación binaria es una asociación exactamente entre dos clasificadores (lo que incluye la
posibilidad de una asociación desde un clasificador hasta sí mismo).
4.2.4 atributo: feature dentro de un clasificador que describe un rango de valores que
pueden contener instancias del clasificador
NOTAS
2) El feature utilizado en esta definición es el significado de UML del término y no se traduce como se define
en 4.1 de esta norma.
5
NCh-ISO 19103
4.2.7 clase: descripción de un conjunto de objetos que comparten los mismos atributos,
operaciones, métodos, relaciones y semántica
NOTA - Una clase puede usar un conjunto de interfaces para especificar colecciones de operaciones que
entrega a su entorno. Ver: interfaz.
NOTA - Un componente representa una parte física de la implementación de un sistema, incluido un código de
software (fuente, binario o ejecutable) o equivalentes tales como secuencias de instrucciones (scripts) o
archivos de comandos.
NOTA - Se pueden crear partes de multiplicidad no fija después del compuesto mismo, pero una vez creado
perduran y acaban con él (esto es, comparten tiempo de vida). Tales partes se pueden eliminar explícitamente
antes de la muerte del compuesto. La composición puede ser recurrente. Sinónimo: agregación de compuesto.
NOTA - Ciertas restricciones están predefinidas en UML, otras pueden ser definidas por el usuario. Las
restricciones son uno de tres mecanismos de extensibilidad en UML. Ver: valor etiquetado, estereotipo.
4.2.13 generalización: relación taxonómica entre un elemento más general y otro más
específico, el cual es completamente consistente con el elemento más general y contiene
información adicional
NOTA - Una instancia del elemento más específico se puede usar donde se permite el elemento más general.
Ver: herencia.
4.2.15 instancia: entidad que tiene una identidad única, un conjunto de operaciones que
se pueden aplicar a ella, y estado que almacena los efectos de las operaciones
6
NCh-ISO 19103
NOTA - Las especificaciones de multiplicidad se pueden dar por roles dentro de asociaciones, partes dentro de
compuestos, repeticiones y otros propósitos. En esencia, una multiplicidad es un conjunto (posiblemente
infinito) de números enteros no negativos. Contraste: cardinalidad.
4.2.20 objeto: entidad con límite bien definido e identidad que encapsula estado y
comportamiento
4.2.21 operación: servicio que puede ser requerido desde un objeto para afectar el
comportamiento
NOTAS
1) Una operación tiene una firma, que puede restringir los parámetros reales que son posibles.
2) Definición del Manual de Referencia de UML: Una especificación de una transformación o consulta que un
objeto puede ser llamado a ejecutar.
3) Una operación tiene un nombre y una lista de parámetros. Un método es un procedimiento que
implementa una operación. Tiene un algoritmo o descripción de procedimiento.
NOTA - Los paquetes pueden estar anidados con otros paquetes. Los elementos y diagramas de modelos
pueden aparecer en un paquete.
4.2.23 refinamiento: relación que representa una especificación más completa de algo que
ya se especificó a un cierto nivel de detalle
NOTA - Por ejemplo, una clase de diseño es un refinamiento de una clase de análisis.
NOTA - Entre tipos de relaciones figuran asociación, generalización, metarrelación, flujo y varios tipos
agrupados bajo dependencia.
7
NCh-ISO 19103
4.2.26 estereotipo: nuevo tipo de elemento de modelado que extiende la semántica del
metamodelo
NOTA - Los estereotipos se deben basar en ciertos tipos o clases existentes en el metamodelo. Los
estereotipos pueden extender la semántica, pero no la estructura de tipos o clases preexistentes. Ciertos
estereotipos se predefinen en el UML, otros pueden ser definidos por el usuario. Los estereotipos son uno de
los tres mecanismos de extensibilidad en UML. Los otros son la restricción y el valor etiquetado.
4.2.27 valor etiquetado: definición explícita de una propiedad como un par de nombre-
valor
NOTA - En un valor etiquetado, el nombre se refiere a la etiqueta. Ciertas etiquetas se predefinen en el UML,
otras pueden ser definidas por el usuario. Los valores etiquetados son uno de los tres mecanismos de
extensibilidad en UML. Los otros son la restricción y el estereotipo.
4.2.28 tipo: clase estereotipada que especifica un dominio de objetos junto con las
operaciones aplicables a los objetos, sin definir la implementación física de esos objetos
NOTAS
1) Un valor se puede considerar un posible estado de un objeto dentro de una clase o tipo (dominio).
4.3 Abreviaciones
5 Organización
Esta norma contiene un Perfil UML que entrega orientaciones de modelado para usar UML
de acuerdo con las normas ISO de información geográfica.
El Anexo A describe un conjunto de pruebas abstractas para verificar que los modelos de
UML se realicen de acuerdo con las reglas de esta norma.
9
NCh-ISO 19103
6.1 Introducción
Esta cláusula entrega reglas y orientaciones sobre el uso del UML en el campo de la
información geográfica. Define aspectos específicos para la utilización del UML para que
cumpla las normas ISO de información geográfica. Se basa en el UML general que se
define en ISO/IEC 19501 (ver Anexo D). El Anexo D sigue la misma estructura que esta
cláusula para facilitar la referencia a conceptos pertinentes normalizados de UML.
- Clases.
- Atributos.
- Tipos de datos.
- Operaciones.
- Relaciones y asociaciones.
- Paquetes.
- Notas.
- Restricciones.
- Documentación de modelos.
Se debe usar UML de forma tal que sea consistente con ISO/IEC 19501.
NOTA - Libros como UML User Guide (ver Anexo E, Bibliografía, [1]) (Orientación de Usuario de UML) y UML
Reference Manual (ver Anexo E, Bibliografía, [2]) (Manual de Referencias de UML) contienen más información
al respecto. El libro UML Distilled (ver Anexo E, Bibliografía, [4]) (Comprensión de UML) es un texto
introductorio más breve.
6.3 Clases
Una clase de acuerdo con esta norma se suele considerar como una especificación y no
como una implementación. Los atributos se consideran abstractos y no se deben
implementar directamente (esto es, como campos en un registro o variables de instancias
en un objeto). Esto no se contrapone con el proceso de codificación como se describe en
ISO 19118, ya que éste describe una representación externa que no tiene que ser
equivalente a la representación interna.
Por tal motivo, los esquemas conceptuales que se ciñen a este perfil de UML deben
encasillar todos los clasificadores como <<Type>>, a menos que apunten
particularmente a especificar la representación interna.
NOTA - Los clasificadores especificados como <<DataType>> (sin identidad) no suelen ser considerados
como tipos en UML, pero se puede suponer que son abstractos para esquemas conceptuales que cumplen
este perfil de UML, a menos que el esquema en que se definen determine específicamente otra cosa.
Por cada clase definida según esta norma, el conjunto de atributos definidos en esta
clase, junto con los conjuntos de atributos de clases que se pueden alcanzar directa o
indirectamente a través de asociaciones, deben ser suficientes para apoyar del todo la
implementación de cada operación definida en esta clase particular.
6.4 Atributos
Los atributos se usan de acuerdo con la norma UML (ver Anexo D, cláusula D.4).
Las clases y patrones (tipos parametrizados) definidos en esta cláusula son aquellas que
usualmente se definen por el lenguaje de definición de datos para el entorno de desarrollo.
Cada uno de estos tipos se puede representar en una variedad de formas lógicamente
equivalentes. Aquellos presentados acá no apuntan a restringir el uso de otras formas
equivalentes naturales al entorno de desarrollo elegido. La norma ISO/IEC 11404 presenta
una definición equivalente para la mayoría de los tipos y patrones presentados acá.
Los tipos básicos de datos se han agrupado en tres categorías, como se muestra en Figura 1:
a) Tipos primitivos: Tipos fundamentales para representar valores, como por ejemplo:
CharacterString, Número entero, Booleano, Fecha, Hora, etc.
11
NCh-ISO 19103
Los tipos básicos se definen como tipos abstractos, el nombre de una clase en cursiva y
las representaciones apropiadas se deben definir por la implementación y codificación de
mapas para los diversos subtipos.
<<Leaf>> <<Leaf>>
Text Records
(from Primitive) (from Implementation)
<<Leaf>> <<Leaf>>
Date and Time Names
(from Primitive) (from Implementation)
<<Leaf>>
Truth
(from Primitive)
<<Leaf>>
Enumerations
(from Primitive)
<<Leaf>>
Multiplicities
(from Primitive)
12
NCh-ISO 19103
6.5.2.1 Generalidades
La Figura 2 entrega una visión general de los tipos primitivos que se describirán a
continuación. La Figura 3 proporciona una visión general de los tipos numéricos. Junto
con los diagramas de clase en las figuras adjuntas y el texto de esas figuras, el contenido
en cada uno de los paquetes se describe en 6.5.2.1 a 6.5.2.14.
13
NCh-ISO 19103
<<Type>>
Number
+=(n:Number) : Boolean
+<>(n:Number) : Boolean <<Type>>
+<(n:Number) : Boolean UnlimitedInteger
+<=(n:Number) : Boolean +isInfinite : Boolean
+>(n:Number) : Boolean +value [0..1] : Integer
+>=(n:Number) : Boolean
++(n:Number) : Number
+ - (n:Number) : Number
+ * (n:Number) : Number
+ / (n:Number) : Number <<Type>>
+negate() : Number Vector
+abs() : Number +dimension : Integer
+min(n:Number) : Number +coordinate: Sequence<Number>
+max(n:Number) : Number +vectorAdd (v Vector) : Vector
+asInteger() : Integer +scalarMultiply(n : Number) : Vector
+asReal() : Real
+asString():CharacterString
14
NCh-ISO 19103
El number es un tipo base para todos los datos numéricos que permiten las operaciones
algebraicas básicas. Dado que todos los tipos concretos tienen representaciones finitas,
algunas partes de esta álgebra muestran cierta imprecisión respecto de la mayoría de los
tipos. Por ejemplo, los integer no se dividen muy bien, mientras que los reals y decimals
no pueden evitar ciertos tipos de imprecisiones que dependen de sus semánticas de
representación. El number es una clase abstracta.
EJEMPLO
29, - 65547.
6.5.2.4 Decimal
Decimal es un tipo de dato decimal en que el número representa un valor exacto, como una
representación finita de un número decimal. Difiere de la implementación de reales binarios
comunes en que puede representar 1/10 (un décimo) sin error, mientras que la representación
de reales binarios sólo puede presentar potencias de exactamente 1/2 (un medio). Dado que
muchas monedas tienen decimales, se prefieren estas representaciones para ellas. Lo mismo
se aplica para marcadores de millas, que a menudo se entregan en decimales.
NOTA - Esto difiere del número real, porque el real es un valor aproximado y el decimal es exacto.
EJEMPLO
12,75.
6.5.2.5 Real
Real es un número real con signo (punto flotante), que consiste en una mantisa y un
exponente y que representa un valor para una precisión dada por el número de dígitos
mostrados, pero no es necesariamente el valor exacto. La longitud de un real depende de
la encapsulación y el uso. La implementación de un número binario común usa base 2.
Dado que tales reales pueden aproximar cualquier medida en que la precisión absoluta no
sea posible, esta forma de presentación numérica se usa de preferencia para medidas. En
casos en que se requiere precisión absoluta, como en las monedas, entonces se prefiere
una representación decimal (suponiendo que la moneda utiliza decimales, como el dólar
estadounidense, la libra esterlina, etc.). Donde no sean posibles subunidades, se puede
optar por números enteros. Un real se puede considerar como una parte entera seguida de
una parte fraccional entregada en múltiplos de potencias de 1/2 (mitades).
EJEMPLO
15
NCh-ISO 19103
6.5.2.6 Vector
EJEMPLO
- ISO 8859.
EJEMPLO
3) representación de la codificación; y
4) representación de lenguaje.
16
NCh-ISO 19103
T
<<CodeList>>
CharacterSetCode
<<Type>>
Sequence +ISO10646 = default
(from Collections) +ISO8859
<<Type>>
Character
<<Type>>
Sequence<Character>
<<Type>>
CharacterString
+size : Integer
/+characterSet : CharacterSetCode = “ISO 10646”
+element[size] : Character
+maxLength: Integer
+ isNull() : Boolean
+=(s : CharacterString) : Boolean
+<>(s : CharacterString) : Boolean
+<(s : CharacterString) : Boolean
+>(s : CharacterString) : Boolean
+<=(s : CharacterString) : Boolean
+>=(s : CharacterString) : Boolean
+toUpper(): CharacterString
+toLower(): CharacterString
+subString(lower: Integer, upper: Integer) : CharacterString
17
NCh-ISO 19103
Date entrega valores de año, mes y día. La Figura 5 muestra los tipos de date. La
codificación de caracteres de un date es una cadena que debe seguir el formato para date
como se especifica en ISO 8601. La codificación se aborda con más profundidad en
ISO 19118 e ISO 19136. Los principios para la date y el tiempo se analizan con más
detalle en ISO 19108.
EJEMPLO
1998-09-18.
<<Type>> <<Type>>
Time Date
+hour: CharacterString +century : CharacterString
+minute[0..1] : CharacterString +year[0..1] : CharacterString
+second[0..1] : CharacterString +month[0..1] : CharacterString
+time Zone[0..1] : CharacterString +day[0..1] : CharacterString
<<Type>>
DateTime
Un time está determinada por una hora, minuto y segundo. La Figura 5 muestra los tipos
de time. La codificación de caracteres de un time es una cadena que sigue el formato de
ISO 8601. El huso horario de acuerdo con el tiempo universal coordinado (UTC) es
opcional. La codificación se aborda con más detalle en ISO 19118 e ISO 19136. Los
principios para date y time se analizan con más profundidad en ISO 19108.
EJEMPLO
18:30:59 ó 18:30:59+01:00.
18
NCh-ISO 19103
6.5.2.11 Boolean
EJEMPLO
<<Type>>
Truth
{truthValue>= 0,0}
+truthValue (): Real {truthValue<= 1,0}
<<Type>> <<Type>>
ContinuousTruth DiscreteTruth
Logical es un valor que especifica VERDADERO (true), FALSO (false) o TAL VEZ (maybe)
(DESCONOCIDO).
Probability es representada como un número mayor o igual que 0,0 y menor o igual
que 1,0.
19
NCh-ISO 19103
Multiplicity define límites inferiores y superiores del número de instancias posibles, como
se muestra en Figura 7.
<<Type>>
Multiplicity
+range 1..*
<<Type>>
MultiplicityRange
{lower >= 0}
+lower : Integer
{upper >= lower}
+upper : UnlimitedInteger
Figura 7 - Multiplicidad
20
NCh-ISO 19103
6.5.3 Tipos de colección y diccionario
6.5.3.1 Generalidades
T
<<Interface>>
TransfiniteSet
+includes(element : T) : Boolean
+includesAll(set: TransfiniteSet) : Boolean
+subSet(set: TransfiniteSet) : Boolean
+intersects(set: TransfiniteSet) : Boolean
+equals(set: TransfiniteSet) : Boolean
+union(set: TransfiniteSet) : TransfiniteSet<T>
+intersection(set : TransfiniteSet) : TransfiniteSet<T>
+ symmetricDifference(set : TransfiniteSet<T>) : TransfiniteSet<T>
+difference(set: TransfiniteSet) : TransfiniteSet<T>
+isEmpty() : Boolean
+notEmpty() : Boolean
+contains(set: TransfiniteSet<T>) : Boolean
+contains(element : T) : Boolean
T
<<Type>>
Collection
21
NCh-ISO 19103
Un Set es una colección finita de objetos, en que cada objeto aparece en la colección sólo
una vez. Un set no debe contener ninguna instancia duplicada. No se especifica el orden
de los elementos del set. El modelo para el Set se muestra en Figura 9.
El tipo genérico que será instanciado es el Set<T>, donde T es el tipo de dato de los
elementos legales.
EJEMPLO
Set<GM_Point> es instanciado del genérico Set<T>, en que T es el tipo de dato de los elementos legales.
T
<<Type>>
Collection
T
<<Type>>
Set
+size : Integer
+select(expr : OCL) : Set<expr.type>
+reject(expr : OCL) : Set<expr.type>
+iterate(expr : OCL) : expr. evaluationType
+forAll(expression : CharacterString) : Boolean 0..* <<parameter>>
+sum() : T 1 +elements T
+size() : Integer
+exists(expression : CharacterString) : Boolean
+union(other: Bag<T>) : Set<T>
+including(object : T) : Set <T>
+excluding(object : T) : Set <T>
+asSequence(): Sequence<T>
+asBag (): Bag<T>
22
NCh-ISO 19103
Un Bag puede contener instancias duplicadas. Tal como en un Set, no hay un orden
especificado entre los elementos de un bag. Los bags por lo general son implementados a
través del uso de proxies o punteros de referencia. El modelo para el Bag se muestra
en Figura 10.
El tipo genérico que será instanciado es Bag<T>, en que T es el tipo de dato de los
elementos del bag.
EJEMPLO
Bag<Integer> es instanciado del genérico Bag<T>, en que T es el tipo de dato de los elementos legales.
T
<<Type>>
Collection
T
<<Type>>
Bag
+union(other: Bag<T>) : Bag<T>
+union(other: Set<T>) : Bag<T>
+asSequence(): Sequence <T>
+asSet() : Set<T>)
+collect(expr : OCL) : Bag <expr.type>
+excluding(object : T) : Bag <T>
+including(object : T) : Bag <T>
+reject(expr : OCL) : Bag <expr.type>
+select(expr : OCL) : Bag <expr.type>
count : Integer
0..* +element
<<parameter>>
T
23
NCh-ISO 19103
Una Sequence es una estructura similar a un Bag que ordena las instancias de elementos.
Esto significa que un elemento se puede repetir en una sequence. Las sequences se
pueden usar como listas o matrices. Las matrices usadas en lenguajes de programación
son sequences que pueden ser indexadas directamente por un desplazamiento (offset)
desde el principio de la sequence. Si bien las listas no son semánticamente equivalentes a
las matrices, los detalles de las diferencias se dan en la implementación y no afectan la
interfaz polimórfica descrita acá.
Una sequence es una colección que especifica un orden secuencial entre sus elementos.
Un sinónimo de sequence es Lista. Una CircularSequence no tiene un elemento final
definido. El modelo para la Sequence se muestra en Figura 11.
T
<<Type>>
Collection
T
<<Type>>
Sequence
+length + Integer
+first() : Record<T, Integer = 1>
+last() : Record<T, Integer = length>
+tail(): Sequence<T>
+at(position : Integer) : T
+prepend(element : T) : Sequence<T> 1..* 0..1
+deleteFirst(): Sequence<T> <<parameter>>
offset: Integer
+deleteAt(position : Integer): Sequence<T> T
+deleteLast(): Sequence<T> +element
+asSet() : Set<T>
+subSequence(begin : Integer, end : Integer) : Sequence<T>
+concatenate(tail: Sequence<T>) : Sequence<T>
+collect(expr : OCL) : Sequence<expr.type>
+reverse(): Sequence<T>
+append(element : T) : Sequence<T>
T
<<Type>>
CircularSequence
+last() : NULL
+asSequence(firstObject : T) : Sequence<T>
24
NCh-ISO 19103
El tipo genérico que será instanciado es Sequence<T>, en que T es el tipo de dato de los
elementos de la sequence.
EJEMPLO
Sequence<String> es instanciado del genérico Sequence<T>, en que T es el tipo de dato de los elementos.
Un dictionary es similar a una matriz, excepto que el índice de consulta para una matriz se
expresa en números enteros. Si bien se puede aceptar cualquier tipo de índice (KeyType)
o tipo de retorno (ValueType), el uso tradicional en esta norma se debe emplear para
cadenas de caracteres como KeyType y números como el ValueType (ver Figura 12).
KeyType
ValueType
<<Type>>
Dictionary
+select(key: KeyType) : ValueType
+insert(key: KeyType) : value : ValueType) : Boolean
+delete(key Key: KeyType) : Boolean
+keyList(): Sequence<KeyType>
<<bind>>
{KeyType, ValueType}
+elements 0..*
KeyType
ValueType
<<Type>>
KeyValuePair
+key : KeyType
+value : ValueType
25
NCh-ISO 19103
6.5.4.1 Generalidades
Tipos de enumeración
EJEMPLO
attr1 : BuildingType, donde BuildingType se define como Enum BuildingType {Público, Privado, Turístico}.
<<Enumeration>>
Weekday
+Monday
+Tuesday
+Wednesday
+Thursday
+Friday
+Saturday
+Sunday
El CodeList se puede emplear para describir una enumeración abierta. Esto significa que se
necesita representar de forma tal que se pueda extender durante el tiempo de ejecución
del sistema. <<CodeList>> es una enumeración flexible que usa valores de cadena a
través de un enlace de la clave del tipo Diccionario y valores de retorno como tipos de
cadenas; por ejemplo, Diccionario (CharacterString, CharacterString). Las listas de códigos
son útiles para expresar una larga lista de potenciales valores. Si todos los elementos de
la lista son conocidos se debe usar una enumeración; si sólo son conocidos los valores
26
NCh-ISO 19103
probables de los elementos, se debe emplear una lista de códigos. Las listas de códigos
enumerados se pueden codificar de acuerdo con una Norma Internacional, tal como
ISO 3166-1. Las listas de códigos tienen más probabilidades de que sus valores sean
expuestos al usuario y son, por lo tanto, a menudo nemotécnicos. Distintas
implementaciones tienen más probabilidades de usar diferentes esquemas de codificación
(con tablas de traducción de vuelta a otros esquemas de codificación disponibles). La
representación escogida por una implementación de una codelist apunta a representar los
pares valor/código (clave) como atributos con una <<CodeList>> estereotipada con un
nombre de atributo para cada valor y el código (clave) representado como valor inicial. En
el caso en que sólo se muestran los nombres de los atributos, los códigos y sus
descripciones son equivalentes. Ejemplos de CodeList se muestran en Figura 14.
<<CodeList>>
MD_DimensionNameType
+row
+column
+vertical
+track
+crossTrack
+line
+sample
<<CodeList>>
SourceCodelist
+Orto500=600
+Orto1000=601
+Orto2000=602
+Orto5000=603
+Orto10000=604
+Orto20000=605
+Orto50000=606
+Digit500=610
+Digit1000=611
+Digit2000=612
+Digit5000=613
+Digit10000=614
+Digit50000=615
27
NCh-ISO 19103
Un Record es una lista de elementos relacionados por lógica como pares (nombre, valor)
en un Diccionario. Un Record se puede emplear como una representación de una
implementación para features (ver Figura 15).
<<Type>>
<<Type>> Schema
RecordSchema +schemaName : LocalName
+asRecordSchema(): RecordSchema
+locate(name : TypeName) : RecordType
+locate(name : TypeName) : Type
type : TypeName
type : TypeName
0..*
0..* +schema
TypeList
TypeList
1 +description
<<Type>> Attributes
RecordType
attributeMember : MemberName
+locate(name : MemberName) : TypeName
+memberType 1 +description
0..1 +recordType 1
<<Type>>
RecordType Type
+typeName : TypeName
+ RecordTypeRepresentation () : RecordType
record
0..*
<<Type>>
Record
attributeMember : MemberName
+memberValue
+locate(name : MemberName) : Any 1
<<Type>>
Any
28
NCh-ISO 19103
6.5.6.1 Generalidades
El GenericName y sus subclases se emplean para crear una estructura de nombre local y
de alcance genérico para nombres de tipos y atributos en el contexto de namespaces.
El NameSpace define un dominio en que los "nombres" dados por cadenas de caracteres
(posiblemente bajo restricciones locales determinadas por NameSpace) se pueden asignar
a objetos a través de la operación getObject. Algunos ejemplos son objetos que forman un
NameSpace para sus atributos, operaciones y asociaciones, o esquemas que forman
NameSpace para sus tipos de datos o clases incluidos. El modelo para el NameSpace y los
tipos de Nombres se muestran en Figura 16.
<<Type>>
NameSpace
+isGlobal() : Boolean
+acceptableClassList [0..*] : TypeName = {Any}
+name(): GenericName
+select(name : GenericName) : Any
+locate(name : LocalName) : Any
+generateID(registeredObj : Any) : LocalName
+registerID (aName: LocalName, registeredObj : Reference<Any>) : Boolean
+unregisterID (aName: LocalName, registeredObj : Reference<Any>) : Boolean
1
+scope
Scope
+name
0..*
<<Type>>
GenericName
+getObject() : Any
+parsedName() : Sequence<LocalName>
+depth() : Integer
<<Complete>>
<<Type>> <<Type>>
LocalName {depth=1} ScopedName
{self=parsedName()}
+aName(): CharacterString +head() : LocalName
+tail(): GenericName
+push(new : GenericName) : ScopedName
+scopedName() : CharacterString
<<Type>> <<Type>>
{head().scope=scope}
TypeName MemberName
{push(head()).tail=self}
{push(S:Scope).scope=S}
+aName(): CharacterString +aName():CharacterString
+attributeType : typeName
29
NCh-ISO 19103
30
NCh-ISO 19103
6.5.7.1 Generalidades
La Figura 17 entrega una visión general de las unidades de tipos de datos de medida que
se describen en las cláusulas siguientes.
+uomName: CharacterString
+uomSymbol: CharacterString +subunit
<<Type>>
+measureType : MeasureType 0..1
SubUnitsPerUnit
+nameStandardUnit[0..1] : CharacterString
+scaleToStandardUnit[0..1] : Real
+factor : Number
+offsetToStandardUnit[0..1] : Real 0..*
+formula[0..1] : CharacterString
+convert ToStandard(m : Measure) : Measure
+convert FromStandard(m : Measure) : Measure +uom_r UnitOfMeasure <<CodeList>>
+convert To(m : UnitOfMeasure) : Measure 1 StandardUnits
+convert From(m : Measure) : Measure +meter
+second
+radian
+square meter
+cubic meter
<<Type>> <<Type>> <<Type>> <<Type>>
+meters/second
UomArea UomAngle UomTime UomVelocity
+meter/meter
+kilogram
<<Type>> <<Type>> <<Type>> <<Type>>
UomLength UomScale UomVolume UomCurrency
<<Type>>
<<CodeList>>
Measure
UnitsList
+measure
+value : Number
0..* +foot
+squareFoot
+ convert(target : Unit Of Measure) : Measure
+cubicYard
<<CodeList>>
<<Type>> <<Type>> <<Type>> <<Type>> <<Type>>
MeasureType
Length Angle Time Volume Weight
+area
+length
+angle
<<Type>> <<Type>> <<Type>> <<Type>>
+time
Velocity Scale Area Currency
+velocity
+volume
+scale
<<Type>>
+weight
Distance
31
NCh-ISO 19103
Una unidad de medida es una cantidad adoptada como norma de medición para otras
cantidades del mismo tipo. El rol de udm (ver Figura 17) está restringido por el valor del
atributo udm en cada subclase de Medida.
6.5.7.4 Area
UomArea es alguna de las cantidades de referencia usada para expresar el valor del área.
Las unidades comunes incluyen unidades de longitud al cuadrado, tales como metros
cuadrados y pies cuadrados. Otras unidades comunes comprenden los acres (en Estados
Unidos) y las hectáreas.
Length es la medida de distancia como una integral; por ejemplo, la longitud de una curva,
el perímetro de un polígono como longitud de límite.
Distance se usa como un tipo (type) para establecer la separación entre dos puntos.
Angle es la cantidad de rotación requerida para insertar una línea o plano en coincidencia
con otro, se mide generalmente en radianes o grados.
32
NCh-ISO 19103
UomAngle es alguna de las cantidades de referencia usada para expresar el valor de los
ángulos. En Estados Unidos, se suele utilizar el sistema sexagesimal de grados, minutos y
segundos. También se usa el sistema de medición con radianes. En otras partes del
mundo, se usa el sistema de medición de ángulo en grados, gon.
UomScale es alguna de las cantidades de referencia usada para expresar el valor de escala
o la proporción entre cantidades con la misma unidad. Los factores de escala a menudo
no tienen unidades.
UomVolume es alguna de las cantidades de referencia usada para expresar el valor del
volumen.
33
NCh-ISO 19103
Varias de las operaciones definidas en esta norma usan NULO y VACIO como valores
posibles. NULO significa que el valor solicitado no está definido. Esta norma supone que
todos los valores NULO son equivalentes. Si se devuelve un NULO cuando se solicita un
objeto, esto significa que no existe objeto que cumpla los criterios especificados. VACIO
se refiere a objetos que se pueden interpretar como conjuntos sin elementos. A diferencia
de sistemas de programación que entregan agregados fuertemente tipificados, esta norma
usa la tautología matemática de que hay uno y sólo un conjunto vacío. Cualquier objeto
que represente el conjunto vacío es equivalente a cualquier conjunto que tiene lo mismo.
Además, de estar vacío, tales conjuntos carecen de información inherente, y por tal
motivo un valor NULO se presume equivalente a un conjunto VACIO en el contexto
apropiado.
6.6 Operaciones
Las operaciones se usan de acuerdo con la norma UML como se describe en Anexo D,
cláusula D.6.
Las relaciones y asociaciones se usan según la norma UML, con los requisitos adicionales
especificados en esta subcláusula.
Todas las asociaciones deben tener cardinalidades definidas para ambos extremos de las
asociaciones. Al menos se debe definir un nombre de rol. Si sólo se define un nombre de
rol, el otro debe ser por defecto inv_rolename.
34
NCh-ISO 19103
Se deben evitar las relaciones que impliquen más de dos clases para reducir la
complejidad. La cardinalidad para asociaciones se especifica como especificaciones de
multiplicidad de UML.
Una asociación con nombres de roles se puede considerar como similar a la definición de
atributos para las dos clases involucradas, con la limitante adicional que actualizaciones y
supresiones son manejadas con consistencia para ambos extremos. Para asociaciones en
dirección única se vuelve por lo tanto equivalente a una definición de atributo. Por ende,
un rol sirve como un pseudoatributo. La recomendación para las normas ISO de
información geográfica es emplear la notación de la asociación para clases e interfaces, y
utilizar la notación de un atributo para tipos de datos.
6.8.1 Generalidades
Los estereotipos y valores etiquetados se usan de acuerdo con la norma UML, como se
describe en Anexo D, cláusula D.8, con un conjunto adicional de estereotipos.
6.8.2 Estereotipos
c) <<Union>> es un tipo que consiste en una y sólo una de las varias alternativas
(enumeradas como atributos de miembros). Esto es similar a una unión discriminada
en muchos lenguajes de programación. En algunos lenguajes que usan punteros, se
requiere un puntero vacío que se pueda adaptar al tipo apropiado como está
determinado por un atributo discriminador.
35
NCh-ISO 19103
6.9.1 Obligatorios
En UML, todos los atributos son obligatorios por defecto. La posibilidad de mostrar la
multiplicidad para los atributos y nombres de roles de asociación entregan una forma de
describir atributos opcionales y condicionales.
Es obligatoria una asociación que tenga una multiplicidad con un límite menor que 1 en el
extremo objetivo para la clase en el extremo fuente.
6.9.2 Opcionales
Una multiplicidad de 0..1 ó 0..* significa que un atributo o asociación se puede presentar
u omitir, lo que significa que es opcional.
6.9.3 Condicionales
- Correcto: índice.
36
NCh-ISO 19103
- Incorrecto: n.
EJEMPLO
EJEMPLOS
5) Mantener los nombres tan cortos como sea práctico. Usar abreviaciones normalizadas
si son comprensibles, evitar las preposiciones y eliminar verbos cuando no son tan
importantes para el significado del nombre.
Todas las clases deben tener nombres únicos. Todas las clases se deben definir con
algunos paquetes. Los nombres de clases deben empezar con una letra mayúscula. Una
clase no debe tener un nombre que se base en su uso externo, porque esto podría limitar
su reutilización. Un nombre de clase no debe contener espacios. Las palabras separadas
en un nombre de clase deben estar ligadas. Cada subpalabra en un nombre de clase debe
comenzar con una letra mayúscula, tal como "XnnnYmmm".
37
NCh-ISO 19103
Para garantizar la exclusividad global de los nombres de clase, cada uno de ellos se debe
definir con un prefijo alfabético separado del cuerpo del nombre por una línea subrayada
"jj". Estos prefijos son esencialmente especificadores de espacios de nombre y se usan
dentro de la serie de normas ISO 19100 para impedir la confusión sin usar los prefijos de
nombre del paquete completo en cada lugar donde se usa un nombre de clase. La mayoría
de los prefijos son dos caracteres, pero algunos tienen tres caracteres y se pueden referir
a prefijos comunes de espacios de nombre de XML. Los prefijos deben hacer referencia a
límites de paquetes para que todas las clases dentro de un paquete de alto nivel
compartan el mismo prefijo y que ningún par de paquetes de alto nivel compartan un
prefijo. La norma ISO 19107 usa el prefijo GM en su modelo de geometría y en prefijo TP
en su modelo de topología. Otros prefijos se han definido para otras áreas. No se requiere
el uso de prefijos de nombres de clases en implementaciones donde se manejan
adecuadamente los espacios de nombres.
El nombre de una asociación debe ser único dentro del contexto de una clase y sus
supertipos.
En la mayoría de los casos que usa OCL, el espacio de nombre es la clase en que la
operación se define, pero también puede incluir el nombre del paquete en que se define
una clase. Donde los espacios de nombres son identificadores de clases, pueden tomar
sólo una de dos formas.
El "::" es un operador de resolución que indica el espacio del nombre de lo que sigue.
- Si bien en el modelo son sensibles los casos, todos los nombres de clases deben ser
únicos en los casos no sensibles.
- El nombre de clase debe ser único en todo el modelo (para así no crear un problema
con muchas herramientas de UML).
- Los nombres de paquetes deben ser únicos en todo el modelo (por la misma razón).
- Todos los esfuerzos deberían apuntar a eliminar clases múltiples que ejemplifican el
mismo concepto.
38
NCh-ISO 19103
6.11 Paquetes
Los paquetes se deben estructurar de acuerdo con una estructura de tres niveles como se
detalla a continuación:
1) Las estructuras de nivel superior se usan para estructurar varias partes principales de
un modelo.
Esta estructura de tres niveles permite que sea más claro el significado de las
dependencias del paquete. También se debe usar un paquete para representar un
esquema de aplicación. Un esquema de aplicación que contiene algún paquete definido en
otro esquema también debe contener todas sus subordinaciones. Los esquemas de
aplicación deben contener al menos un diagrama de paquetes que especifique las
dependencias entre el paquete definido por las normas ISO de información geográfica y
los paquetes definidos por el esquema de aplicación. Un ejemplo de estructura de paquete
de subordinaciones entre las normas ISO se muestra en Figura 18.
Los paquetes de hoja dependen unos de otros si sus objetos contenidos dependen uno de
otro. Los paquetes internos son dependientes sólo si, en algún punto, una de sus hojas
depende de las hojas de otros. En realidad, sólo se deben mostrar las dependencias hoja a
hoja. La extensión de dependencias más allá de la hoja es redundante y difícil de
mantener.
Los paquetes de UML se deben usar para agrupar clases y sus asociaciones. Algunas
reglas que hacen esto son:
- Todas las clases deben ser parte de algún paquete UML definido.
6.12 Notas
Las notas son especificadas de acuerdo con la norma UML (ver Anexo D, cláusula D.12).
6.13 Restricciones
Para los diagramas, se deben tener en cuenta lo relativo a la legibilidad. El tamaño del tipo
de letra no debe ser menor que 8 puntos luego de que se considere la escala del diagrama
(un tamaño de letra de 12 puntos a 90% es 12 * 0,9 = 10,8 puntos). Cada paquete
debe tener un diagrama de clase para todo el paquete (sin mostrar ninguna asociación,
operación o atributo).
Cada clase debe tener un diagrama de contexto (se muestran todas sus asociaciones,
firmas de operación y atributos). Cada clase debe tener una definición que describa su
significado o semántica deseada. Cada operación, atributo y relación debe tener una
descripción textual en el texto cerca de su diagrama de contexto. Hay que destacar que
las clases íntimamente ligadas comparten un diagrama de contextos siempre y cuando el
diagrama combinado no esté excesivamente confuso ni sea difícil de leer.
La mayoría de los diagramas en las partes de normas deben ser diagramas de contexto
que se centran en una sola clase y presentan sus atributos, operaciones y relaciones
importantes.
40
NCh-ISO 19103
Para cada clase debe haber una descripción textual de la semántica al menos como sigue:
<A>
nombre de clase: A
Atributos:
Asociaciones:
Operaciones:
Operación: nombre
Descripción: <text>
Excepciones: <description>
Otras restricciones:
41
NCh-ISO 19103
Anexo A
(Normativo)
Para verificar el cumplimiento de los modelos UML respecto de esta norma, es necesario
comprobar que los modelos han seguido las reglas de cláusula 6 de esta norma.
Verificar que se han utilizado los elementos siguientes de acuerdo con 6.2 a 6.14.
- Clases.
- Atributos.
- Tipos de datos.
- Operaciones.
- Relaciones y asociaciones.
- Paquetes.
- Notas.
- Restricciones.
- Documentación de modelos.
42
NCh-ISO 19103
Anexo B
(Informativo)
La Figura B.1 muestra el enfoque de las normas ISO de información geográfica que reúnen
conceptos y tecnología de las disciplinas de información geográfica y tecnologías de la
información. Las normas ISO de información geográfica se agruparon en un principio en
cinco áreas: marco y modelo de referencia, modelos y operadores de datos,
administración de datos, servicios de información geográfica y normas de perfiles
funcionales. La entrada de información geográfica muestra lenguajes de esquema
conceptual como una de las principales entradas en este trabajo.
Un esquema conceptual clasifica los objetos en tipos y clases al identificar los tipos de
objetos de acuerdo con sus propiedades (estructura y comportamiento) y asociaciones
entre tipos de objetos.
43
NCh-ISO 19103
La Figura B.2 describe la relación entre la realidad del modelado y el esquema conceptual
resultante. Un universo de discurso es una parte seleccionada de la realidad (o un mundo
hipotético) que una persona desea describir en un modelo. Este concepto puede incluir no
sólo features como cauces, lagos, islas, límites de propiedades, dueños de propiedades y
áreas de explotación, sino también sus atributos, sus operaciones y relaciones que existen
entre dichos features. Un universo de discurso se describe en un modelo conceptual. El
esquema conceptual es una descripción rigurosa de un modelo conceptual para algún tipo
de universo de discurso. Un esquema conceptual que define el universo de discurso
relacionado con una aplicación específica o un conjunto de aplicaciones se debe
denominar un esquema de aplicación. Este tipo de esquema también define relaciones
entre elementos de modelos y restricciones sobre los elementos y sus relaciones. Estas
restricciones definen estados válidos del sistema modelado. Un universo de discurso real
se puede representar digitalmente mediante datos que se estructuran de acuerdo con la
especificación en el esquema conceptual correspondiente.
44
NCh-ISO 19103
Un trabajo anterior ISO (ISO/TR 9007) definió y fijó el principio de 100% para el
modelado conceptual (ver Figura B.3). La meta consiste en representar el 100% de los
aspectos estáticos y dinámicos del universo de discurso, lo que implica una necesidad de
representar la estructura y el comportamiento del área de interés.
45
NCh-ISO 19103
La Figura B.4 muestra las capas de metamodelos del Recurso de Modelado de Esquemas
Conceptuales (Conceptual Schema Modelling Facility o CSMF).
46
NCh-ISO 19103
- temporal;
- espacial (Posición/Topología);
47
NCh-ISO 19103
- calidad;
- identificador geográfico; y
- atributos temáticos.
- especialización;
- agregación;
- lógica/de asociación.
48
NCh-ISO 19103
GF_InheritanceRelation
Generalization 0..* +name :
+description :
Specialization +exhaustive :
0..* +uniqueInstance:
+ supertype +subtype
1 1..*
<<Metaclass>>
<<Metaclass>>
GF_FeatureType +memberOf
+linkBetween GF_AssociationType
typeName:
0..* definition: 0..* 0..*
1..* 0..*
+constrainedBy
0..* +carrierOfCharacteristics
<<Metaclass>> <<Datatype>>
GF_PropertyType GF_Constraint
memberName: 0..* description :
definition:
+constrainedBy
0..* +characterizedBy
1..*
+observesValuesOf
+dependsOn
+affectsValuesOf
49
NCh-ISO 19103
La norma ISO 19109 contiene una nueva descripción de la relación entre el Modelo
General de Features y UML y el metamodelo UML. También abarca una mayor descripción
de términos como feature, asociación de features, atributo de feature y operación de
feature. La Figura B.7 muestra las partes esenciales del metamodelo central de UML.
GeneralizableElement
Association
2..n
Classifier +features Feature
AssociationEnd
0..* 0..*
1
0..* 0..*
StructuralFeature BehaviouralFeature
DataType Class
Attribute Operation
initialValue: Expression Specification
isPolymorphic : Boolean
concurrency : CallConcurrencyKind
NOTA - Feature en Figura B.7 es un concepto distinto de feature como se define en el Modelo General de
Features.
50
NCh-ISO 19103
<<instanceOf>>
M2 Layer: Specifies
<<metamodel>> metaclasses for the UML
UML Metamodel metamodel, such as Class
<<instanceOf>>
<<instanceOf>> <<instanceOf>>
La norma ISO 19101 contiene información sobre el uso del enfoque del punto de vista
RM-ODP de ISO para modelar información geográfica y servicios.
A continuación se presenta una breve introducción de las metas y conceptos en cada uno
de los puntos de vista de ODP y la aplicación de estos puntos de vistas dentro de las
normas ISO de información geográfica (ver Figura B.9).
Punto de Vista
Empresarial
ISO/TC 211
Punto de Vista Punto de Vista
de la Información Computacional
UML UML
Punto de Vista de
Ingeniería
Punto de Vista
De la Tecnología
51
NCh-ISO 19103
El punto de vista empresarial se preocupa del propósito, el alcance y las políticas de una
empresa o negocio en relación con sistemas y servicios especificados. Una especificación
empresarial de un servicio es un modelo del mismo y el ambiente en que interactúa el
servicio. Describe los roles del servicio en el negocio, además de los roles de las personas
y las políticas de negocios relacionadas con el servicio. El punto de vista empresarial
entrega una base para definir el alcance y el contexto de los modelos conceptuales para la
información geográfica. El punto de vista empresarial debe variar entre distintas
organizaciones y de esta forma se usa sólo para la generación de requisitos. Por lo
general, no forma parte de las normas ISO de información geográfica.
52
NCh-ISO 19103
funcional en los puntos de vista de información y computacional. Dado que las normas
ISO de información geográfica se concentran en modelos neutrales de implementación, no
se otorga mucho énfasis a este punto de vista. Se asume que varias transparencias de
distribución se deben manejar en el contexto de crear modelos de implementación en el
punto de vista tecnológico.
53
NCh-ISO 19103
54
NCh-ISO 19103
El Lenguaje Unificado de Modelado (UML) se puede emplear para describir distintos tipos
de modelos. Los tipos de modelos se clasifican en conceptuales, de especificación y de
implementación.
Los modelos de dominio geográfico en las normas de información geográfica ISO se han
desarrollado como modelos conceptuales y luego redefinidos nuevamente para modelos
de especificación que sean una base neutral apropiada de implementación para la
representación de sistemas y el intercambio de datos. Los modelos de servicios en las
normas ISO de información geográfica se han elaborado como modelos de especificación
para reflejar las interfaces requeridas de sistemas en una forma de implementación
neutral. Algunas partes de las normas ISO de información geográfica también describen
con más detalle modelos de implementación para modelos determinados de especificación
a fin de definir los correspondientes modelos específicos de plataforma e implementación.
55
NCh-ISO 19103
Anexo C
(Informativo)
Orientaciones de modelado
- Modelos de Negocio/Dominio
56
NCh-ISO 19103
- Modelos de requisitos
- Modelos de análisis/arquitectura
- Modelos de implementación
- Modelos de prueba
57
NCh-ISO 19103
- Términos especializados definidos que se usan. Definir todo lo que no sea lenguaje
tradicional de software. Evitar la jerga, que requiere que uno la reconozca.
- Responder las preguntas de las personas sobre el modelo y documentar las repuestas
en el documento de referencia. Las respuestas se deberían analizar en reuniones
públicas del comité técnico para poder llegar a consenso sobre temas controversiales.
- Usar nombres técnicos precisos para atributos y operaciones a fin de evitar confusión.
Utilizar campos de documentación de forma extensiva. No reiterar los nombres de
clases dentro de los nombres de atributos. Mantener los nombres lo más concisos y
precisos. Mantener consistente el estilo de denominación.
- Todas las asociaciones generales deberían tener nombres de roles, excluyendo las
asociaciones de composición (diamante en negrita), agregación (diamante en blanco) y
generalización (triángulo o herencia). Los nombres asignados de asociaciones no
necesitan mostrarse en diagramas de clases cuando al menos un nombre de rol se
muestra en esa asociación.
Se deberían definir todas las clases a las que se hacen referencias en un modelo, dado
que todas las expresiones de tipo se deben usar como tipos de atributos, tipos de
resultados de operación y tipos de argumentos de entrada de operación.
58
NCh-ISO 19103
Dado que el énfasis para los modelos de información y los modelos de servicios es
levemente distinto, se ha escogido para separar el enfoque del modelado en una
especialización para cada uno de ellos.
Este es un enfoque que se debe considerar para la mayor parte del modelado que se hace
en las normas ISO de información geográfica y para el modelado que cumple con las
normas ISO de información geográfica. Describe las fases para utilizar UML. Los principios
más importantes presentados acá son adaptaciones (ver Anexo E, Bibliografía, [5]) de,
Information Modeling: The EXPRESS way (Modelado de Información: la Vía EXPRESS).
Estos son principios generales para el modelado de información y también se aplica a
otros lenguajes de modelado conceptual además de UML.
59
NCh-ISO 19103
Fases de modelado
Las primeras tres fases son de vital importancia a la hora de crear los esquemas que
cumplen con las normas ISO de información geográfica. La fase 4 también es importante
respecto de la integración de distintos esquemas en un solo modelo consistente.
Tareas:
Preguntas importantes que se deben responder: ¿Cuál es la meta y alcance del modelo?
Tareas:
60
NCh-ISO 19103
Inquietudes menores:
- ¿La existencia de una instancia de una clase depende del uso de otra clase?
Tareas:
61
NCh-ISO 19103
- ¿La existencia de una instancia de clase depende del uso de otra clase?
- ¿Hay necesidad de que las operaciones se asocien a las clases? De ser así, ¿cuáles
son los comportamientos previstos, argumentos de entrada y salida y posibles
excepciones?
Preguntas menores:
62
NCh-ISO 19103
- ¿El alcance y contexto del modelo se han definido de acuerdo con las orientaciones?
- ¿Las clases básicas del modelo se han definido de acuerdo con las orientaciones?
- ¿Es el enfoque del modelado consistente con las reglas del esquema de aplicación?
- ¿Se ha usado UML según el Perfil UML de las normas ISO de información geográfica?
- ¿El alcance y contexto del modelo se han definido de acuerdo con las orientaciones?
- ¿Se han armonizado los modelos con otros de acuerdo con las orientaciones?
63
NCh-ISO 19103
Tareas:
Tareas:
64
NCh-ISO 19103
Resultado entregable: Un modelo de objeto (UML) que muestra las interacciones básicas
entre el servicio (posiblemente descrito como un conjunto de interfaces) y sus potenciales
clientes. Las interacciones básicas pueden ser complementadas con diagramas UML de
colaboración/secuencia.
Preguntas menores:
65
NCh-ISO 19103
Preguntas principales:
Los ítemes siguientes son una lista de verificación para Modelos de Servicios/Procesos:
- ¿El alcance y contexto del servicio se han definido de acuerdo con las orientaciones?
- ¿Se han definido las responsabilidades de servicios básicos según las orientaciones?
- ¿Se han definido las restricciones sobre las operaciones según las orientaciones?
66
NCh-ISO 19103
5) Con base central - Definir un modelo de información central que se pueda dividir en
modelos distintos y desarrollarse en paralelo. El modelo central debería identificar el
contexto y el alcance de distintos submodelos. Esta es una estrategia descendente.
6) Con base evolutiva - Comenzar con un modelo existente y ampliar este modelo con
una base central. Este se denomina estrategia que parte del centro.
Lista de verificación
Los aspectos siguientes se deberían evaluar en cada proyecto para secciones que incluyen
modelos de UML:
67
NCh-ISO 19103
11) Jerarquías - ¿Se usan las jerarquías de herencia para agregación de datos o viceversa?
12) Tipos de datos básicos - ¿Los tipos de atributos están correctamente especificados?
Se deberían evitar tipos simples como número entero, real, cadena, etc., que no
posean semántica.
68
NCh-ISO 19103
Anexo D
(Informativo)
Introducción a UML
D.1 Introducción
Este anexo se proporciona como una introducción conveniente para las partes básicas de
UML que se usan y describen en las normas ISO de información geográfica. El documento
normativo para el uso de UML corresponde a ISO/IEC 19501.
- clases;
- atributos;
- tipos de datos;
- operaciones;
- relaciones y asociaciones;
- paquetes;
- notas; y
- restricciones;
UML se debería usar de forma que sea consistente con ISO/IEC 19501. Los libros como
UML User Guide (ver Anexo E, Bibliografía, [1]) y UML Reference Manual (ver Anexo E,
Bibliografía, [2]) contienen más información al respecto. El libro UML Distilled (ver Anexo E,
Bibliografía, [4]) es un texto introductorio más breve.
69
NCh-ISO 19103
D.3 Clases
Una clase es una descripción de un conjunto de objetos que comparten los mismos
atributos, operaciones, métodos, relaciones y semántica. Una clase representa un
concepto que se modela. Dependiendo del tipo de modelo, el concepto se puede basar en
el mundo real (para un modelo conceptual) o en la implementación de conceptos de
sistemas independientes de plataformas (para modelos de especificación) o conceptos de
sistemas específicos de plataforma (para modelos de implementación).
Un clasificador es una generalización de una clase que incluye elementos de otras clases,
como tipos de datos, actores y componentes. Una clase de UML tiene un nombre, un
conjunto de atributos, un conjunto de operaciones y restricciones. Una clase puede formar
parte de asociaciones.
UML define dos tipos especiales de clases a través de los estereotipos <<Interface>> y
<<Type>>.
Public operations
Un <<Type>>, ver Figura D.2, es una clase estereotipada usada para una
especificación de un dominio de instancias (objetos), junto con las operaciones aplicables
a los objetos. Un tipo puede tener atributos y asociaciones abstractas. Decir que los
atributos son abstractos significa que su especificación no implica que se deban
implementar específicamente como variables de instancias.
<<Type>>
.. abstract attributes
..operations
70
NCh-ISO 19103
calcular x e y. Para objetos que se pueden aprobar por valor tal como en la transferencia de
features, es necesario que se entregue suficiente información sobre el estado abstracto. Esto
significa que no se puede usar una interfaz única basada en especificaciones. El estereotipo
<<Type>> se puede usar para la especificación de interfaces y el estado abstracto.
Las interfaces y los tipos se pueden usar de acuerdo con los estereotipos normalizados de
UML, lo que se traduce en un conjunto de operaciones, y un conjunto de operaciones y
atributos abstractos, respectivamente.
Una clase abstracta define una clase de objeto polimórfico y no puede ser instanciada.
Una clase abstracta difiere de una <<Interface>> en que puede tener atributos y puede
implementar algunas de sus operaciones. Una <<Interface>> equivale a una clase
abstracta sin atributos ni implementación de operaciones. Una clase Abstracta se
especifica al tener el nombredeclase en cursiva o por un valor etiquetado {Abstract}
colocado al lado del nombredeclase.
NombredeClase
/ /* elemento derivado
+ /* visibilidad pública
# /* visibilidad protegida
- /* visibilidad privada
Figura D.3 - Símbolos para definiciones de elementos derivados, visibilidad y niveles de clases
71
NCh-ISO 19103
- privado
# protegido
+ público
Algunas herramientas de UML usan varios íconos gráficos para los símbolos de visibilidad,
pero algunos símbolos de la norma UML se usan en las normas ISO de información
geográfica.
Es posible definir un atributo o una operación que esté a nivel de clase (a diferencia de
estar en el nivel de instancia) al subrayar la definición de atributo u operación.
Un signo barra diagonal ‘/’ que antecede el nombre de un elemento de modelo tal como
un atributo, significa que es derivado (calculado) de otro elemento.
D.4 Atributos
EJEMPLOS
+ centro : Punto = (0,0) {frozen}
+ origen [0..1] : Punto / * multiplicidad 0..1 significa que esto es opcional.
72
NCh-ISO 19103
Las propiedades pueden ser definidas por el usuario. Algunas propiedades predefinidas
son: permutable, addOnly, frozen (const).
Un atributo debería ser único dentro del contexto de una clase y sus supertipos, a menos
que sea un atributo redefinido a partir de un supertipo. Si un atributo se reemplaza, se
debería tratar como un atributo abstracto que se puede calcular en la demanda de acuerdo
con las reglas definidas para su derivación.
Un atributo puede definir un valor predeterminado, que se usa cuando se crea un objeto
del tipo de datos. Los valores predeterminados se definen por valores predeterminados
explícitos en la definición de UML del atributo. Los valores predeterminados son
necesarios en algunas situaciones en modelos conceptuales que cumplen con las normas
ISO de información geográfica. Como ejemplo, ISO 19115, la clase MD_Identification
predetermina el conjunto de caracteres a ISO/IEC 10646.
D.6 Operaciones
Las operaciones están presentes en diagramas de clases UML de acuerdo con la Guía de
Notación UML.
Una operación se especifica mediante una cadena de texto que se puede analizar
gramaticalmente en elementos que describen las propiedades de la operación:
73
NCh-ISO 19103
donde:
out - La operación crea el valor del parámetro y se puede leer al momento del
retorno de la operación al punto de llamada.
1) El objeto con que se asocia la operación, conocido como “this” o “self” en la mayoría
de los lenguajes [el objeto antes del punto “.” en una declaración como
object.operation()].
2) Los objetos se hacen pasar por parámetros que se usan para controlar el
comportamiento de la operación.
“Una operación especifica una transformación sobre el estado del objeto al que se apunta
(y posiblemente el estado del resto del sistema accesible desde el objeto al que se
apunta), o una consulta que retorna un valor al solicitante de la operación”. (Ver Anexo E,
Bibliografía, [2]).
74
NCh-ISO 19103
En UML, los objetos se suelen modificar o pueden acceder por sus propios métodos. Sin
embargo, los objetos pueden “pasar por referencia”, por lo que cualquier objeto
persistente que se hace pasar por un parámetro puede recibir un mensaje en cascada. Por
lo tanto, el objeto puede ser modificado, si bien indirectamente, por cualquier método al
que se pasa. Por ende, los parámetros con valor-de-objeto comprenden inherentemente
“adentro y afuera” en dirección. Los parámetros que consideran tipos de datos como sus
valores son “adentro” o “afuera”.
D.7.1 Relaciones
Una relación en UML es una conexión semántica concreta entre los elementos de un
modelo. Entre tipos de relaciones figuran asociación, generalización,
agregación/composición y varios tipos agrupados bajo dependencia. Ver Figura D.4.
En Anexo E, Bibliografía, [2], se hace una clara distinción entre el término general
“relación” y el más específico “asociación”. Ambos están definidos para vínculos de clase
a clase, pero la asociación se reserva para aquellas relaciones que en realidad son vínculos
de instancias a instancias. “Generalización”, “realización” y “dependencia” son relaciones
de clase a clase. “Agregación” y otras relaciones de objeto a objeto son denominadas de
forma más restrictivas “asociaciones”. Siempre es apropiado usar el término más
restrictivo en cualquier caso, por lo que respecto de las relaciones con instancias hay que
usar el término “asociación”.
75
NCh-ISO 19103
Una asociación en UML es la relación semántica entre dos o más clasificadores (esto es,
clase, interfaz, tipo, etc.) que implica conexiones entre sus instancias.
Una asociación se emplea para describir una relación entre dos o más clases. Además de
una asociación común, UML define dos tipos especiales de asociaciones denominadas
agregación y composición. Los tres tipos tienen distintas semánticas. Se debería usar una
asociación común para representar una relación general entre dos clases. Las asociaciones
de agregación y composición se deberían usar para crear relaciones de todo-parte entre
dos clases.
La Figura D.5 muestra una asociación denominada “A” con sus dos respectivos extremos
de asociación. El nombre de rol se usa para identificar el extremo de una asociación; el
nombre de rol r1 identifica el extremo de asociación que se conecta a la clase denominada
clase2. En este ejemplo, el nombre de rol r1 identifica la naturaleza que tiene la relación
clase2 con clase1 a través de la asociación A. La multiplicidad de un extremo de
asociación puede ser de exactamente-uno(1), cero-o-uno(0..1), uno-o-más (1..*), cero-o-
más (0..*) o un intervalo (n..m). Visto desde la clase, el nombre de rol del extremo
opuesto de asociación identifica el rol de la clase objetivo. Decimos que clase2 tiene una
asociación con clase1 que se identifica mediante el rol r2 y que tiene una multiplicidad de
exactamente uno. A la inversa, podemos decir que clase1 tiene una asociación con clase2
que se identifica mediante el nombre del rol r1 con multiplicidad de cero-o-más. En el
modelo de instancias, decimos que los objetos de clase1 tiene una referencia a objetos
clase2 de cero-o-más y que los objetos clase2 tienen una referencia al objeto clase1 de
exactamente-uno.
r2 A r1
Clase 1 Clase 2
1 0..*
A asociación
r1, r2 nombres de roles
76
NCh-ISO 19103
La Figura D.6 especifica la notación que se usa para especificar el número de instancias
que pueden participar en un extremo de una asociación. La misma notación se usa para
atributos, pero luego en el campo [multiplicidad], como se analiza en cláusula D.4.
Número dado 3, 5, 10
Clase
Una asociación de agregación es una relación entre dos clases, en que una de las clases
juega el rol de contenedor y la otra, de contenido. La Figura D.7 muestra un ejemplo de
agregación. El símbolo de agregación abierto de forma de diamante en el extremo de
asociación cerca de clase1 indica que clase1 es una agregación consistente de clase3.
Esto significa que clase3 forma parte de clase1. En el modelo de instancias, los objetos
clase1 debe contener uno o más objetos clase3. La asociación de agregación se debería
usar cuando los objetos de contenido, que representan las partes de un objeto
contenedor, pueden existir sin ese tipo de objeto. La agregación es una forma simbólica
corta para la asociación de partes, pero no tiene una semántica explícita. Permite
múltiples agregaciones para compartir los mismos objetos. Si se requiere una semántica
de agregación más fuerte, se debería usar la composición como se describe a
continuación. También es posible definir el nombre del rol y la multiplicidad en el extremo
en forma de diamante.
B r3
Clase 1 Clase 1
1..*
B asociación
r3 nombre de rol
77
NCh-ISO 19103
C r4
Clase 1 Clase 4
1..*
C asociación
r4 nombre de rol
Cada asociación UML tiene atributos de navegabilidad que indican las clases en la
asociación que se pueden seguir para obtener información del otro extremo. La lógica
predeterminada para una asociación sin marcas es aquella con doble sentido. En el caso
de relaciones cliente-servidor, la asociación usada sólo es normalmente navegable de
cliente a servidor (un sentido), indicado en el diagrama por la punta de flecha sobre el
costado del servidor de la asociación. Las asociaciones que no indican navegabilidad son
de doble sentido cuando ambos participantes tienen igual acceso al rol opuesto. La
navegación en doble sentido no es común ni necesaria en muchas operaciones cliente-a-
servidor, por lo que se ha introducido una punta de flecha para que sea un indicio para
una implementación más optimizada. El contraejemplo puede ser los servicios de
notificación, donde a menudo el servidor estimula la comunicación sobre un evento
prescrito. Se debería minimizar el uso de relaciones de doble sentido que introducen
dependencias de paquetes no razonables. Se debería recurrir a relaciones en un sentido
cuando eso sea todo lo que se necesita.
78
NCh-ISO 19103
D.8.1 Generalidades
Los valores etiquetados separador (=) de Nombre (etiqueta), son propiedades de valor (de
la etiqueta) en un elemento, pertinentes para la generación de códigos o la gestión de
configuraciones (se puede aplicar a todos los elementos de UML). La Figura D.9 muestra
el metamodelo UML para estereotipos y valores etiquetados.
+ tagged_values
ModelElement
0..*
TaggedValue
GeneralizableElement tag : Name
value : Uninterpreted
0..*
+ tagged_values
StereoType
icon : Geometry
baseClass : Name
EJEMPLO
Un valor etiquetado adjunto a, por ejemplo un clasificador se puede definir: {autor = “Joe Smith”, plazo =
31-marzo-1997, estado = análisis}.
79
NCh-ISO 19103
D.8.3 Estereotipos
e) <<Boundary>> es una clase que representa una interfaz externa para un sistema.
Una extensión de la norma UML del proceso unificado de desarrollo de software.
80
NCh-ISO 19103
UML no especifica ninguna regla estricta para la denominación y los espacios de nombres,
ya que eso se detalla en cláusula 6.
D.11 Paquetes
Los paquetes, clases y atributos en un modelo se pueden identificar con un nombre calificado
o su nombre más interno si se otorga el contexto. La forma de los nombres calificados es
packagename1 :: package:name2 :: classname.elementname1.elementname2, en que
packagename1 es el nombre del paquete más externo, packagename2 es un nombre que
aparece dentro del namespace del packagename1, classname es el nombre de una clase que
aparece dentro del namespace de packagename2 y elementname1 es el nombre de un
elemento dentro del espacio del nombre de classname. El símbolo :: se usa para separar
nombres de paquetes y nombres de clase. El punto (.) se emplea para separara nombres de
clases de los nombres de los elementos dentro del espacio de nombre de una clase. No hay
límite de la profundidad de esta jerarquía de espaciodenombre.
EJEMPLO
En el Esquema espacial hay un subpaquete denominado Geometría que define la clase GM_Object. Esta clase
tiene una asociación con el nombre de rol SRS (Spatial Reference System). El nombre completamente
apropiado para esta asociación es: Spatial.Geometric : :GM_Object.SRS.
D.12 Notas
Las casillas de notas se usan para comentar sobre el modelo en general o un ítem
específico (esto es, clase o asociación) del modelo en particular, ver Figura D.10. También
se pueden usar para especificar restricciones y condiciones (ver 6.13).
81
NCh-ISO 19103
D.13 Restricciones
Una restricción se muestra como una cadena textual en paréntesis angulares ({}). Las
restricciones se pueden describir usando el Lenguaje de Restricciones de objetos(OCL)
(ver Anexo E, Bibliografía, [3]), que es un lenguaje de conjuntos basado en expresiones
lógicas de objetos y propiedades de objetos. Una restricción OCL es una expresión válida
de OCL del tipo booleano, esto es, una expresión con un valor de verdadero o falso.
Las restricciones también se pueden explicar usando texto, ver ejemplo en Tabla D.1 de
restricciones de tipos de Colección.
Tantos las expresiones OCL como las descripciones textuales se pueden colocar en
casillas de NOTAS UML, ver Figura D.11.
Customer
+name : string title = (if isMale= true then
+isMale : boolean ‘Mr.’ else ‘Ms.’ endif)
+title : string
Se puede usar OCL para describir restricciones de varias partes de un modelo, incluidas
restricciones sobre:
- clases;
- clases abstractas.
82
NCh-ISO 19103
Las Tablas D.2 a D.5 describen operaciones normalizadas sobre tipos de OCL.
EJEMPLO
(3.2).piso/3 = 1
1.175 * (-8.9).abs – 10
7.máx.(3) = 7
83
NCh-ISO 19103
EJEMPLO
‘ISO/TC211’.tamaño = 9
(‘ISO’ = ‘ISO’)= verdadero
‘ISO/’.concat (‘TC211’) = ‘ISO/TC211’.
Operación Descripción
tamaño El número de elementos en la colección.
recuento(objeto) El número de ocurrencias de objetos en la colección.
incluye(objeto) Verdadero si el objeto es un elemento de la colección.
incluyeTodo(colección) Verdadero si todos los elementos del parámetro están
presentes en la actual colección.
estáVacío Verdadero si la colección no contiene elementos.
noVacío Verdadero si la colección contiene uno o más elementos.
iterar(expresión) La expresión es evaluada por cada elemento de la
colección. El tipo de resultado depende de la expresión.
suma() La adición de todos los elementos en la colección. Los
elementos deben ser de un tipo que respalda la adición
(como Número Real, Entero).
existe(expresión) Verdadero si la expresión es verdadera en al menos un
elemento de la colección.
paraTodos(expresión) Verdadero si toda la expresión de elementos es verdadera.
Los atributos de un modelo UML que define un usuario se pueden usar libremente en una
expresión OCL. Las operaciones definidas por el usuario se pueden usar sólo si no tienen
efectos secundarios, esto es, si no alteran el estado del objeto.
OCL también ofrece operaciones sobre objetos (‘=’ (igual objeto) ‘<>’ (diferentes objetos)
‘oclType’ (tipo de objeto), ‘oclIsTypeOf’ (verdadero si es tipo directo), ‘oclIsKindOf’
(verdaderos si es tipo o subtipo de), ‘oclAsType’ (tipo de retorno)) y sobre tipos (‘’nombre’,
‘atributos’, ‘associationEnds’, ‘operaciones’, ‘supertipos, ‘allSuperTypes’, ‘allInstances’).
84
NCh-ISO 19103
Anexo E
(Informativo)
Bibliografía
[1] BOOCH, G., JACOBSSON, I. and RUMBAUGH, J. UML User Guide, 1999, Addison-
Wesley ISBN 0-201-57168-4.
[2] RUMBAUGH, J., BOOCH, G. and JACOBSSON, I. UML Reference Manual, 1999,
Addison-Wesley ISBN 0-201-57168-X.
[3] WARMER, J.B. and KLEPPE, A.G. The Objet Constraint Language - precise
modeling with UML: Addison-Wesley Longman, Inc., 1997.
[4] FOWLER, M. UML Distilled, A Brief Guide to the Standard Object Modeling
Language, Third Addition, 2003, Addison-Wesley Professional.
[5] SCHENCK, D. and WILSON, P. Information Modeling: The EXPRESS Way, Oxford
University Press, 1993.
[16] ISO 19136: 2007 Geographic information - Geography Markup Language (GML).
85
NCh-ISO 19103
[21] ISO 3 Codes for the representation of names of countries and their
subdivisions - Part 1: Country codes.
166-1:1997
[22] ISO/TR 9007:1987 Information processing systems - Concepts and terminology
for the conceptual schema and the information base.
La equivalencia de las Normas Internacionales señaladas anteriormente con Norma Chilena, y su grado
de correspondencia es el siguiente:
86
NCh-ISO 19103
Anexo F
(Informativo)
En toda la norma Se cambia “esta especificación Técnica” El documento corresponde a una norma.
por “esta norma”.
2 y Anexo E Se agrega una nota explicativa. Para detallar la equivalencia y el grado de
correspondencia de las Normas
Internacionales con las Normas Chilenas.
Anexo E Se elimina nota al pie de página La norma ISO ya está publicada como
relacionada con ISO 19136. ISO 19136:2007.
87
NORMA CHILENA OFICIAL NCh-ISO 19103.Of2010
CIN 35.240.70