2.4 Modelado conceptual 2.4. Búsqueda de conceptos Un modelo conceptual muestra clases conceptuales significativas en un dominio del problema; es el artefacto más importante que se crea durante el análisis orientado a objetos. Ésta búsqueda de conceptos se lleva cabo mediante una extracción que en el siguiente punto se explica. 2.4.2 Extracción de conceptos a partir de los requerimientos Hay dos estrategias para identificar clases conceptuales (conceptos) : Lista de categorías de clases conceptuales. Identificación de frases nominales. Lista de categorías de clases conceptuales Hacer una lista de las categorías de las clases: objetos tangibles o intangibles; especificaciones, diseño o descripciones de las cosas; lugares; transacciones; líneas de la transacción; roles de las personas; contenedores de otras cosas; cosas en un contenedor; otros sistemas de información externos al sistema; conceptos abstractos; organizaciones y hechos; procesos; reglas y políticas; catálogos; etc. Hacer una lista de clases conceptuales candidatas y colocarlas en alguna categoría. Identificación de frases nominales Es un análisis lingüístico donde se identifican los nombres y frases nominales en las descripciones textuales de un dominio, y se consideran como clases conceptuales o atributos candidatos. Se debe tener cuidado con este método, pues no es posible realizar una correspondencia mecánica de nombres a clases puesto que las palabras en lenguaje natural son ambiguas. Ibidem, p. 27
Los casos de uso en el formato completo constituyen una descripción excelente a partir de la cual puede extraerse este análisis. Hay que tomar en cuenta que algunas de las frases nominales son clases conceptuales candidatas, algunas podrían hacer referencia a clases conceptuales y algunas podrían ser atributos de las clases conceptuales. Un punto débil de este enfoque es la impresión del lenguaje natural; frases nominales diferentes podrían representar la misma clase conceptual o atributo. A partir del análisis de la lista de categorías de clases conceptuales y las frases nominales, se genera una lista de clases conceptuales candidatas del dominio. No existe una lista correcta siempre está en constante actualización. Por ejemplo, la siguiente lista puede tener modificaciones ya sea agregando o quitando nuevos conceptos: Alumno. Inscripción. Profesor. Grupo. Curso. Lista asistencia. 2.4.3 El modelo conceptual en UML La finalidad del análisis orientado a objetos es crear una descripción del dominio desde la perspectiva de objetos. Esto se logra a través del modelo conceptual, lo Profesor ListaAsistencia Alumno Inscripcion Grupo Curso
que implica una descomposición del dominio donde se identifican los conceptos, atributos y asociaciones que se consideran significativas. El modelo conceptual se ilustra mediante un conjunto de diagramas que muestran los objetos o conceptos del dominio. Los diagramas que se ocupan son: el diagrama de clases y/o el diagrama de objetos. Figura 2.26. Diagrama de clases que representa los conceptos de un sistema 2.4.4 Búsqueda de atributos Un atributo es una propiedad de una clase identificada con un nombre, que describe un rango de valores que pueden tomar las instancias de la propiedad. Una clase puede tener cualquier número de atributos o no tener ninguno. 2 Alumno +nombre: String +apellidopaterno: String +apellidomaterno: String +fechanacimiento: Date +semestre: Integer +estudiar() +dormir() +comer() Atributos Métodos Figura 2.27. Una clase con atributos y métodos La mayoría de los atributos simples son los que a menudo se conocen como tipos de datos primitivos, como los números enteros, números reales, valores boléanos, etc. De igual manera que las clases, se utiliza la técnica de identificación de frases nominales, con la diferencia de que los atributos constituyen una características de las clases. 2.4.5 Lineamientos para la búsqueda de atributos Después de identificar las clases conceptuales el siguiente paso es encontrar los atributos de dichas clases, por lo que se deben tomar a consideración los siguientes lineamientos: 2 Grady Booch, et al, op. cit., p. 54.
Los atributos en un modelo conceptual deben ser, de preferencia, atributos simples o tipos de datos. Relacionar las clases conceptuales con una asociación, no con un atributo. En caso de duda, defina la abstracción como una clase conceptual aparte, en lugar de ponerla cómo un atributo. No se deben utilizar los atributos para relacionar las clases conceptuales en el modelo conceptual. Es decir, no se debe añadir atributos que representen llaves foráneas. 2.4.6 Asociaciones Una asociación es una relación entre tipos que indica alguna conexión significativa e interesante. En UML, las asociaciones se definen como la relación semántica entre dos o más clasificadores (clases u objetos) que implica conexiones entre sus instancias. 3 Las asociaciones que vale la pena registrar son, normalmente, las que implican conocimiento de relación que es necesario conservar durante bastante tiempo. Las asociaciones se representan como una línea entre clases con un nombre de asociación. El nombre se utiliza para describir la naturaleza de la relación. La asociación es inherentemente bidireccional, lo que implica que de una instancia a otra es posible su recorrido y viceversa. Los nombres de las asociaciones deben comenzar con una letra mayúscula, puesto que una asociación representa un clasificador de enlace entre las instancias. 3 Craig Larman, op. cit., p. 45.
Existen cuatro adornos básicos que se aplican en las asociaciones: nombre, rol en cada extremo de la asociación, multiplicidad en cada extremo y agregación. Nombre asociación Persona +empleado trabaja-en Departamento Nombre rol Figura 2.28.- Una asociación entre dos clases, su nombre y un rol 2.4.7 Cardinalidad Los extremos de la asociación pueden contener una expresión de multiplicidad que indica la relación numérica entre las instancias de las clases. Esta multiplicidad se le conoce como cardinalidad. La multiplicidad define cuántas instancias de una clase A pueden asociarse con una instancia de una clase B. 4 El valor de la multiplicidad indica cuántas instancias se pueden asociar con otras, en un momento concreto, en lugar ser incierto a lo largo de un periodo. El valor de la multiplicidad depende de las reglas de negocio y diseño que debe reflejar el software. La multiplicidad se escribe como una expresión con un valor mínimo y un valor máximo, que pueden ser iguales; se utilizan dos puntos consecutivos para separar ambos valores. Cuando se indica una multiplicidad en un extremo de una asociación se está especificando cuántos objetos de la clase de ese extremo puede hacer para cada objeto de la clase en el otro extremo. Se puede indicar una multiplicidad de exactamente uno (), cero o no (0..), muchos (0..*), o uno o más 4 Ibidem, p. 49.
(..*). Se puede dar un rango de enteros (como 2..7). Para indicar un número exacto, por ejemplo 4 se pone 4..4. Alumno +nombre +apellidopaterno +apellidomaterno +fechanacimiento +semestre +estudiar() +dormir() +comer() realiza 0..* Inscripcion +fecharegistro +horaregistro +agregar() +borrar() +actualizar() Cardinalidad o Multiplicidad Figura 2.29. Una asociación entre dos clases con multiplicidad 2.4.8 Construcción del modelo conceptual completo. Listar las clases conceptuales candidatas, utilizando las técnicas de la lista de categorías de clases conceptuales y la identificación de frases nominales, relacionadas con los requerimientos actuales. 2. Representar las clases en un modelo de dominio. 3. Añadir las asociaciones necesarias para registrar las relaciones que describen las reglas de negocio. 4. Añadir los atributos necesarios para satisfacer los requerimientos de información. Por ejemplo, para la clase Alumno algunos de sus atributos son: nombre, fecha de nacimiento, licenciatura, teléfono.
Alumno Profesor ListaAsistencia realiza imparte clase 0..* Inscripcion tiene..3 Grupo tiene..*..* tiene Curso Figura 2.30. Diagrama de clases que representa los conceptos de un sistema junto con los nombres de las asociaciones y multiplicidad