Procedimientos.
Funciones.
Perspectiva orientad a objetos basada en:
Objetos.
Clases.
Definición de objeto:
Tiene una identidad, puede distinguirse de otros objetos.
Tiene un comportamiento, se le pueden hacer cosas a él y a su vez él le puede hacer cosas a otros objetos.
Definición de clase:
Es un descripción de un conjunto de objetos que son lo suficientemente similares para compartir una especificación.
Del paradigma de orientación a objetos se derivan varias implicaciones ¿cuál es la estructura de una buena arquitectura orientada a objetos? ¿qué artefactos debería crear el proyecto? ¿quién debería crearlos? ¿cómo deberían medirse?
VISUALIZAR, ESPECIFICAR, CONSTRUIR y DOCUMENTAR sistemas orientados a objetos es exactamente el propósito de UML.
UML es un lenguaje estándar para escribir planos de software. Se usa para visualizar, especificar, construir y documentar los artefactos de un sistema que involucre una gran cantidad de software. Es apropiado para todo tipo de desarrollo software. Es muy expresivo, sirve para desarrollar y luego desplegar tales sistemas.
Tiene tres elementos principales:
Bloques básicos de construcción de UML.
Reglas que dictan cómo pueden combinarse esos bloques.
Algunos mecanismos comunes.
Es un lenguaje por lo tanto, es tan sólo una parte de un método de desarrollo de software. Es independiente, pero para utilizarlo óptimamente se lo debería usar en un proceso dirigido por los casos de uso, centrado en la arquitectura, iterativo e incremental.
VISIÓN GENERAL DE UML
UML es un lenguaje para:
Visualizar.
Especificar.
Construir.
Documentar.
Los artefactos de un sistema con gran cantidad de hardware.
UML ES UN LENGUAJE
Un lenguaje proporciona vocabulario y las reglas para combinar palabras de ese vocabulario con el objetivo de posibilitar la comunicación. En un lenguaje de modelado su vocabulario y reglas se centran en la representación conceptual y física de un sistema. UML es un lenguaje estándar para los planos software. Proporciona una comprensión del sistema. Nunca es suficiente un único modelo, para comprender cualquier cosa se necesitan múltiples modelos conectados entre sí. Para sistemas con gran cantidad de software, se requiere un lenguaje que abarque las diferentes vistas de la arquitectura de un sistema conforme evoluciona a través del ciclo de vida del desarrollo de software. El vocabulario y las reglas de un lenguaje como UML indican cómo crear y leer modelos bien formados pero no dicen qué modelos se deben crear ni cuándo se deberían crear. Esta es la tarea del proceso de desarrollo de software. Un proceso bien definido guiará a sus usuarios al decidir qué artefactos producir, qué actividades y qué personal se emplea para crearlos y gestionarlos, y cómo usar esos artefactos para medir y controlar el proyecto de forma global.
UML ES UN LENGUAJE PARA VISUALIZAR
Un programador a veces realiza el modelado mentalmente, es decir, avanza en el desarrollo codificando simultáneamente. Se puede vales de bosquejos de ideas, pero no son entendibles fácilmente por otros ó simplemente este sujeta a errores, a menos que haya personas implicadas que hablen el mismo lenguaje. El código fuente del sistema no es bagaje suficiente para interpretar un sistema y surgen lenguajes de texto y gráficos como UML.
UML ES UN LENGUAJE PARA ESPECIFICAR
Especificar es construir modelos precisos, no ambiguos y completos. UML cubre la especificación de todas las decisiones de análisis, diseño e implementación que deben realizarse al desarrollar y desplegar un sistema con gran cantidad de software.
UML ES UN LENGUAJE PARA CONSTRUIR
No es un lenguaje de programación visual , pero sus modelos pueden conectarse de forma directa a un gran variedad de lenguajes de programación. Java, C++, Visual Basic, tablas en una base de datos relacional. Las cosas que se expresan mejor se gráficamente se expresan en UML mientras que las que se expresan mejor textualmente se plasman en el lenguaje de programación. Esto permite la ingeniería directa, es decir la generación de código a partir de un modelo UML como también la ingeniería inversa que consiste en escribir código a partir de una implementación, ésta requiere de herramientas que la soporten y de la intervención humana. UML es lo suficientemente expresivo y no ambiguo para permitir la ejecución directa de modelos, la simulación de sistemas y la coordinación de sistemas de ejecución.
UML ES UN LENGUAJE PARA DOCUMENTAR
Una organización de software, además de código ejecutable, debe producir toda clase de artefactos como:
Requisitos.
Arquitectura.
Diseño.
Código fuente.
Planificación de proyectos.
Pruebas.
Prototipos.
Versiones.
Estos son críticos para el control, la medición y comunicación que requiere un sistema durante sus desarrollo y después de su despliegue. UML cubre la documentación de la arquitectura y todos sus detalles. UML proporciona un lenguaje para expresar requisitos y pruebas y para modelar las actividades de planificación de proyectos y gestión de versiones.
¿DÓNDE PUEDE UTILIZARSE UML?
Sistemas con gran cantidad de software tales como:
Sistemas de información empresarial.
Bancos y servicios financieros.
Telecomunicaciones.
Transporte.
Defensa / industria aeroespacial.
Comercio.
Electrónica médica.
Ámbito científico.
Servicios distribuidos basados en la Web.
Otras áreas:
Flujos de trabajo (workflows) en el sistema jurídico.
Estructura y comportamiento de un sistema de vigilancia médica de un enfermo.
Diseño de hardware.
UN MODELO CONCEPTUAL DE UML
Para entenderlo se requiere entender:
Bloques básicos de construcción.
Reglas que dictan cómo se pueden combinar estos bloques básicos.
Mecanismos comunes.
BLOQUES BÁSICOS DE UML
1. Elementos: abstracciones que constituyen los ciudadanos de primera clase en un modelo.
2. Relaciones: ligan estos elementos entre sí.
3. Diagramas: agrupan colecciones interesantes de elementos.
1. elementos estructurales.
2. elementos de comportamiento.
3. elementos de agrupación.
4. elementos de anotación.
Estos son los bloques básicos de construcción orientados a objetos.
ELEMENTOS ESTRUCTURALES
Son los nombres de los modelos UML. Son las partes estáticas de un modelo, representan conceptos ó cosas materiales de un modelo. Se lo denomina CLASIFICADORES.
Clase: es una descripción de un conjunto de métodos que comparten os mismos atributos, operaciones, relaciones y semántica. implementa una ó más interfaces.
Interfaz: es una colección de operaciones que especifican un servicio de una clase o componente. Describe el comportamiento visible externamente de ese elemento.
Colaboración: define una interacción y es una sociedad de roles y otros elementos que colaboran para proporcionar un comportamiento cooperativo mayor que la suma de los comportamientos de sus elementos. Tiene una dimensión estructural y otra de comportamiento.
Caso de uso: es un descripción de un conjunto de secuencias de acciones que ejecuta un sistema y que produce un resultado observable de interés para un actor particular. Se utiliza para estructurar los aspectos de comportamiento de un modelo. Es realizado por una colaboración.
Clase activa: es una clase cuyos objetos tienen uno ó más procesos ó hilos de ejecución y, por lo tanto, pueden dar origenes a actividades de control. Es igual que una clase, excepto en que sus objetos representan elementos cuyo comportamiento es concurrente con otros elementos.
Componentes: es un parte modular del diseño del sistema que oculta su implicación tras un conjunto de interfaces externas.
Los elementos artefactos y nodos representan elementos físicos mientras que los seis elementos anteriores representan cosas conceptuales ó lógicas.
Artefacto: es una parte física y reemplazable de un sistema que tiene información física.
Nodo: es un elemento físico que existe en tiempo de ejecución y representa un recurso computacional, que por lo general dispone de algo de memoria y, con frecuencia capacidad de almacenamiento.
ELEMENTOS DE COMPORTAMIENTO
Interacción: comprende un conjunto de mensajes intercambiados entre un conjunto de objetos, dentro de un contexto particular, para alcanzar un propósito específico.
Máquina de estados: es un comportamiento que especifica las secuencias de estados por las que pasa un objeto ó una interacción durante su vida en respuesta a eventos, junto con sus reacciones a estos eventos.
Actividad: es un comportamiento que especifica la secuencia de pasos que ejecuta un proceso computacional.
Semánticamente, estos elementos están conectados normalmente a diversos elementos estructurales, principalmente clases, colaboraciones y objetos.
ELEMENTOS DE AGRUPACIÓN
Son las parte organizativas de los modelos UML. Son cajas en las que puede descomponerse un modelo.
Paquetes: es un mecanismo de propósito general para organizar el propio diseño. Un paquete es puramente conceptual, sólo existe en tiempo de desarrollo.
ELEMENTOS DE ANOTACIÓN
Son las partes explicativas de un modelo UML. Son comentarios que se pueden aplicar para describir, clarificar y hacer observaciones sobre cualquier elemento de un modelo.
RELACIONES EN UML
1. dependencia.
2. asociación.
3. generalización.
4. realización.
Son los bloque básicos de construcción para relaciones en UML.
Dependencia: es un relación semántica entre dos elementos, en la cual un cambio a un elemento puede afectar a la semántica del otro elemento.
Asociación: es una relación estructural entre clases que describe un conjunto de enlaces, los cuales son conexiones entre objetos que son instancias de clases.
Generalización: es una relación de especialización de especialización / generalización en la cual el elemento especializado (el hijo) se basa en la especificación del elemento generalizado (el padre).
Realización: es una relación semántica entre clasificadores, en donde un clasificador especifica un contrato que otro clasificador cumplirá.
Es la representación gráfica de un conjunto de elementos visualizado la mayoría de las veces como conexo de nodos (elementos) y arcos (relaciones). Se construye para visualizar un mismo sistema desde distintos puntos de vista.
Tipos de diagrama:
1. diagrama de clases.
2. diagrama de objetos.
3. diagrama de componentes.
4. diagrama de estructura compuesta.
5. diagrama de casos de uso.
6. diagrama de secuencia.
7. diagrama de comunicación.
8. diagrama de estados.
9. diagrama de actividades.
10. diagrama de despliegue.
11. diagrama de paquetes.
12. diagrama de tiempos.
13. diagrama de visión global de interacciones.
Diagrama de clases: muestra un conjunto de clases, interfaces y colaboraciones, así como sus relaciones.
Diagrama de objetos: muestra un conjunto de objetos y sus relaciones.
Diagrama de componentes: representa la encapsulación de una clase, junto con sus interfaces, puertos y estructura interna.
Diagrama de casos de uso: muestra una interacción que consta de un conjunto de objetos ó roles, incluyendo los mensajes que pueden ser enviados entre ellos.
Diagrama de estados: muestra una máquina de estados que consta de estados, transiciones, eventos y actividades.
Diagrama de actividades: muestra la estructura de un proceso u otra computación como el flujo de control y datos paso a paso en la computación.
Diagrama de despliegue: muestra la configuración de nodos de procesamiento en tiempo de ejecución y los artefactos que residen en ellos.
Diagrama de artefactos: muestra los constituyentes físicos de un sistema en el computador.
Diagrama de paquetes: muestra la descomposición del propio modelo en unidades organizativas y sus dependencias.
Diagrama de tiempos: es un diagrama de interacción que muestra los tiempos reales entre diferentes objetos ó roles.
Son reglas sintácticas y semánticas:
nombres: cómo llamar a los elementos, relaciones y diagramas.
Alcance: el contexto que da un significado específico a un nombre.
Visibilidad: cómo se pueden ver y utilizar esos nombres por otros.
Integridad: cómo se relacionan apropiada y consistentemente unos elementos con otros.
Ejecución: qué significa ejecutar ó simular un modelo dinámico.
Los modelos construidos durante el desarrollo de un sistema con gran cantidad de software tiende a evolucionar por lo que además de modelos bien formados hay otros que pueden ser:
Abreviados.
Incompletos.
Inconsistentes.
Su solución es considerar las cuestiones más importantes de análisis, diseño e implementación.
Se aplican en forma consistente a través de todo el lenguaje.
1. especificaciones.
2. adornos.
3. divisiones comunes.
4. mecanismos de extensibilidad.
Especificaciones: detrás de un icono de clase hay una especificación que proporciona el conjunto completo de atributos, operaciones y comportamiento que incluye la clase. La notación gráfica de UML se utiliza para visualizar un sistema, la especificación de UML se utiliza para expresar los detalles del sistema. Proporcionar una base semántica que incluye a todos los modelos de un sistema y cada parte está relacionado con las otras de manera consistente.
Adornos: se pueden incluir detalles como abstracción, visibilidad de sus atributos y operaciones.
Divisiones comunes.
División entre clase y objeto: una clase es una abstracción, un objeto es una manifestación concreta de esa abstracción.
División entre interfaz e implementación: una interfaz declara un contrato y una implementación re presenta una realización concreta de ese contrato.
División entre tipo y rol: el tipo declara la clase de una entidad como un objeto, un atributo, un parámetro. Un rol describe el significado de una entidad en un contexto, como una clase, un componente ó una colaboración.
MECANISMOS DE EXTENSIBILIDAD
1. estereotipos.
2. valores etiquetados.
3. restricciones.
Estereotipo: extiende el vocabulario UML.
Valor etiquetado: extiende las propiedades de un estereotipo permitiendo añadir nueva información en la especificación de ese estereotipo.
Restricción: extiende la semántica de un bloque de construcción.
Es el conjunto de decisiones significativas sobre:
la organización de un sistema software.
La selección de elementos estructurales y sus interfaces a través de los cuales se construye el sistema.
Su comportamiento, cómo se especifica en las colaboraciones entre esos elementos.
La composición de esos elementos estructurales y de comportamiento en subsistemas progresivamente más grandes.
El estilo arquitectónico que guía esta organización.
La arquitectura del software no tiene que ver solamente con la estructura y el comportamiento, sino también con el uso, la funcionalidad, el rendimiento, la capacidad de adaptación, la reutilización, la capacidad de ser comprendido, las restricciones económicas y tecnológicas y los compromisos entre alternativas, así como los aspectos estéticos.
Vista de casos de uso: comprende los casos de uso que describen el comportamiento del sistema tal y como es percibido por los usuarios finales, analistas y encargados de las pruebas.
Vista de diseño: comprende las clases, interfaces y colaboraciones que forman el vocabulario del problema y su solución. Esta vista soporta principalmente los requisitos funcionales del sistema, entendiendo por ellos los servicios que el sistema debería proporcionar a sus usuarios finales.
Vista de interacción: muestra el flujo de control entrre sus diversas partes, incluyendo los posibles mecanismos de concurrencia y sincronización.
Vista de implementación: comprende los artefactos que se utilizan para ensamblar y poner en producción el sistema físico.
Vista de despliegue: contiene los nodos que forman la topología hardware sobre la que se ejecuta el sistema.
Ciclo de vida del desarrollo de software
UML es bastante independiente del proceso, sin embargo lo ideal es un proceso que sea:
Dirigido por los casos de uso.
Centrado en la arquitectura.
Iterativo e incremental.
Dirigido por los casos de uso: se utilizan como un artefacto básico para establecer el comportamiento deseado del sistema, para verificar y validar la arquitectura del sistema, para las pruebas y para la comunicación entre las personas involucradas en el proyecto.
Centrado en la arquitectura: la arquitectura del sistema se utiliza como un artefacto básico para conceptuar, construir, gestionar y hacer evolucionar el sistema en desarrollo.
Iterativo: es aquel que involucra la gestión de un flujo de versiones ejecutables.
Incremental: es aquel que implica la integración continua de la arquitectura del sistema para producir esas versiones, donde cada nuevo ejecutable incorpora mejoras incrementales sobre los otros. En conjunto, un proceso iterativo e incremental está dirigido por el riesgo, lo que significa que cada nueva versión se encarga de atacar y reducir los riesgos más significativos del proyecto.
concepción: es la primera fase del proceso, cuando la idea principal para el desarrollo se lleva al punto de estar suficientemente bien fundamentada para garantizar la entrada en la fase de elaboración.
Elaboración: es la segunda fase del proceso, cuando se definen los requisitos del producto y su arquitectura.
Construcción: es la tercer fase del proceso, cuando el software se lleva desde una base arquitectónica ejecutable hasta su disponibilidad para la comunidad de usuarios. Aquí los requisitos del sistema y los criterios de evaluación son constantemente reexaminados frente a las necesidades del proyecto.
Transición: es la cuarta fase del proceso, cuando el software es puesto en las manos de la comunidad de usuarios.
El ciclo de vida del desarrollo de software puede caracterizarse por involucrar un flujo continuo de versiones ejecutables de la arquitectura del sistema con correcciones entre ellas , después de cada iteración.
Autor:
Alejandro Pérez Cuvit
Página anterior | Volver al principio del trabajo | Página siguiente |