Overblog Todos los blogs Blogs principales Estilo de vida
Edit post Seguir este blog Administration + Create my blog
MENU

Publicidad

Proyecto sociotecnológico iutep, sección 516 y 517

Metodología RUP y Metodología UML

Metodología RUP: 

 

El proceso de desarrollo RUP (Rational Unified Process) aplica varias de las mejores practicas en el desarrollo moderno de software en una forma que se adapta a un amplio rango de proyectos y organizaciones. Provee a cada miembro del equipo, un fácil acceso a una base de conocimiento con guías., plantillas y herramientas para todas las actividades criticas del desarrollo de software. Esta metodología permite que todos los integrantes de un equipo de trabajo, conozcan y compartan el proceso de desarrollo, una base de conocimientos y los distintos modelos de cómo desarrollar el software utilizando un lenguaje modelado común: UML.

El RUP es un proceso de desarrollo de software:


Provee un enfoque estructurado para realizar tareas y responsabilidades en una organización de desarrollo. Su principal objetivo es asegurar la producción de software de alta calidad, que cumpla las necesidades de sus usuarios finales, que sea realizado en las fechas acordadas y con el presupuesto disponible.

El RUP es un producto:

 

IBM comercializa un producto que permite instanciar al RUP según las características del proyecto, siendo una referencia en la metodología que sirve como repositorio único de información.

El RUP es un marco de trabajo (Framework):


Este marco de trabajo puede ser adoptado y extendido para satisfacer las necesidades de la organización que lo utilice seleccionando las fases y interacciones, los flujos de trabajo y disciplinas que se van a recorrer y los entregables o productos (artifacts) que se van a construir. Es importante conocer como esta organizado y estructurado el proceso para poder seleccionar el frame work, los elementos del proceso que mas valor darán al proyecto.

El RUP incorpora muchas de las conocidas como “buenas practicas” en el desarrollo de software moderno, lasa cuáles se deben tener presentes en el desarrollo de aplicaciones empresariales para garantizar el éxito del proyecto, tales como: Desarrollo iterativo, Gestión de Requerimientos, Arquitectura basada en componentes, Modelo Visual, Verificación de la calidad en forma continua y control de cambios.

El RUP presenta 3 características que constituyen la esencia de todo el proceso de desarrollo:

1. Dirigido por los casos de uso.
2. Centrado en la arquitectura.
3. Ciclo de vida iterativo.

Otras características o ventajas de la aplicación de esta metodología son las siguientes:

• Reconoce que las necesidades del usuario y sus requerimientos no se pueden definir completamente al principio
• Permite evaluar tempranamente los riesgos en lugar de descubrir problemas en la integración final del sistema
• Reduce el costo del riesgo a los costos de un solo incremento
• Acelera el ritmo del esfuerzo de desarrollo en su totalidad debido a que los desarrolladores trabajan para obtener resultados claros a corto plazo
• Distribuye la carga de trabajo a lo largo del tiempo del proyecto ya que todas las disciplinas colaboran en cada iteración.
• Facilita la reutilización del código teniendo en cuenta que se realizan revisiones en las primeras iteraciones lo cual además permite que se aprecien oportunidades de mejoras en el diseño

El proceso de desarrollo está dividido en Fases a lo largo del tiempo cada una de las cuales tiene objetivos específicos y un conjunto de “artefactos” definidos que deben alcanzarse. La duración de cada fase depende del equipo y del producto a generar.
A su vez, cada fase puede tener una o más iteraciones y cada iteración sigue el modelo en cascada pasando por las distintas disciplinas. Cada iteración termina con una liberación del producto.

Las fases son las siguientes:

1) Inicio
2) Elaboración
3) Construcción
4) transición

Metodología UML:


La metodología que se propone, denominada UML-MAST, concilia las diferencias entre la visión del diseñador de sistemas de tiempo real y la del de sistemas orientados a objetos. A tal fin define un nivel de abstracción adecuado para los elementos de modelado del comportamiento de tiempo real, que permite formularlos con una estructura paralela a la arquitectura lógica del sistema, y vincularlos a esta. La semántica de modelado sigue el perfil UML para planificabilidad, rendimiento y tiempo (SPT) estandarizado por el OMG, del que UML-MAST puede considerase una implementación. La propuesta se integra con las herramientas de análisis y diseño de sistemas de tiempo real MAST (Modeling and Analysis Suite for Real-Time Applications), que analiza los modelos y retorna los resultados al modelo inicial para su interpretación por el diseñador. Asimismo, se han definido criterios para la extensión de esta metodología a otros niveles de abstracción tales como sistemas basados en componentes y sistemas implementados utilizando Ada 95. Parte de los resultados de este trabajo han sido incorporados por el OMG a su perfil SPT.

Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.
Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.
Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional o RUP), pero no especifica en sí mismo qué metodología o proceso usar.
UML no puede compararse con la programación estructurada, pues UML significa Lenguaje Unificado de Modelado, no es programación, solo se diagrama la realidad de una utilización en un requerimiento. Mientras que, programación estructurada, es una forma de programar como lo es la orientación a objetos, sin embargo, la programación orientada a objetos viene siendo un complemento perfecto de UML, pero no por eso se toma UML sólo para lenguajes orientados a objetos.
UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas.

Etapas y actividades en el desarrollo OO basado en UML

La versión definitiva de la metodología será publicada por Booch, Rumbaugh y Jacobson a finales de este año. Se pueden tener en cuenta las siguientes etapas

Etapas

En cada etapa se resaltan las actividades que le dan cuerpo y los documentos que se esperan al final de cada una de ellas.

 

Análisis de Requerimientos

Descripción

En esta etapa se logra claridad sobre lo que desea el usuario y la forma en la cual se le va a presentar la solución que está
buscando
 

1. Identificar Casos de Uso del sistema 

2. Dar detalle a los casos de uso descritos 

3. Definir una interfaz inicial del sistema (si es aplicable) 

4. Desarrollar el modelo del mundo 

5. Validar los modelos

 

Casos de Uso iniciales

Borradores de Interfaz 

Modelo del mundo inicial

 


 

Actividades Técnicas

1. Identificar Casos de Uso del sistema

Esta información se representa en un diagrama de casos de uso.

 

Cómo encontrar un actor

  • Identifique los usuarios del sistema 
    • Porqué se diseña el sistema? 
    • Cuáles son los actores que el sistema va a beneficiar? 
    • Qué actores van a interactuar directamente con el sistema? (actores primarios) 
    • Qué actores van a supervisar, mantener, recibir información del sistema? (actores secundarios) 
  • Identifique los roles que juegan esos usuarios desde el punto de vista del sistema 
  • Identifique otros sistemas con los cuales exista comunicación 
 

Cómo encontrar un caso de uso
        Identifique las operaciones importantes del sistema a construir 
            Cuáles son las principales tareas de un actor? 
            Qué información tiene el actor que consultar, actualizar, modificar? Cómo? 
            Qué cambios del exterior debe informar el actor al sistema? 
            Qué información debe informársele al actor, con respecto a los cambios del sistema? 

 

Cómo encontrar relaciones entre actores y casos de uso? 
        Identifique los casos de uso en los cuales se vé implicado un actor 
        Busque relaciones extends entre casos de uso 

Qué casos de uso son similares, diferenciándose en la forma en la cual hacen algunas operaciones? 
Qué caso de uso redefine la forma en la cual se realiza una transacción dentro de otro caso de uso?

        Busque relaciones uses entre casos de uso 

Que casos de uso son usados como transacciones de otros? 
 

 

2. Dar detalle a los casos de uso descritos
 

Describir la información de entrada y salida de cada caso de uso 
 

 

Descripción detallada del caso de uso 

  • Descripción textual de su objetivo
  • Variantes posibles para realizar este caso de uso. Diagramas de interacción de detalle (de secuencia o colaboración)
  • Errores y excepciones posibles en el caso de uso
 

Relacionar el caso de uso con la interfaz a usuario que lo representa 
 

 

Especificar el diálogo que da solución al caso de uso (ver definición de interfaz
 

 

3. Definir una interfaz inicial del sistema (si es aplicable)
 

Dibujar las pantallas de interacción para los distintos actores-usuarios 
        Copiar el modelo mental del usuario 
        Revisar los elementos del modelo del mundo interesantes para el actor-usuario (Ver
Modelo del Mundo
        Visualización típica de los elementos del modelo del mundo 
        Información relevante para el actor 
        Metáforas de interacción válidas 
 

 

Especificar el diálogo que da solución a cada caso de uso que se soluciona con la interacción con esta interfaz. Puede especificarse este diálogo de varias maneras, dependiendo de la complejidad de la interfaz definida (en esta etapa se sugiere escoger el mínimo nivel de detalle posible, para dar más libertad de diseño en las etapas posteriores): 

  1. Por medio de una descripción textual de su funcionamiento
  2. Por medio de diagramas de interacción que muestren la secuencia de operaciones entre los objetos de interfaz y los actores involucrados
  3. Por medio de diagramas de estados, donde se muestre claramente los estados de la interfaz
    Por medio de un prototipo funcional, en términos de la interacción con el usuario
 

Definir restricciones para la comunicación con actores y sistemas 
        Describir en el detalle del actor o de la relación con el caso de uso particular 

 

4. Desarrollar el modelo del mundo

Esta información se representa en un diagrama de estructura estática de clases.

 
Identificar Clases 
  • Elementos físicos y lógicos dentro del sistema a modelar 
  • Top-down: Comenzar por la clase del objeto más general (el mundo). Encontrar sus componentes hasta llegar a clases de tipos básicos 
  • Identificar los sustantivos del enunciado del problema y determinar si son clases del modelo del mundo 
  • Identificar clases desde el punto de vista de la información 
    • Identifique los elementos del espacio del problema 
    • Identifique otros sistemas relacionados como objetos externos 
    • Identifique dispositivos relacionados 
    • Identifique los eventos que el sistema debe recordar y manipular 
    • Identifique los roles de los elementos del mundo 
    • Identifique sitios 
    • Identifique unidades organizacionales importantes en el problema 
  • Identificar clases desde el punto de vista funcional (casos de uso) 
    • Identifique los objetos que participan en un caso de uso particular 
    • Continue con los mensajes de cada objeto, dejando para el final los atributos. 
  • Identificar clases desde el punto de vista de sus estados 
    • En qué estados está en sistema? Cuáles objetos determinan estos estados? 
    • Cómo es el ciclo de vida de estos objetos? 
Posibles errores: 
  • Una clase HACE en vez de una clase ES 
  • Solo se requiere un objeto de la clase 
  • Dificultad para encontrar atributos 
  • Objetos con iniciativa propia 
  • Es un objeto y un usuario a la vez 
  • Solo se encuentra un servicio 
  • Varias clases tienen los mismos atributos o servicios 
  • Solo tienen información o mensajes no relevantes para el problema 
  • Vista Funcional: Dividir un sistema de la manera clásica 
 
Identificar atributos y asociaciones.
  • Cuáles son las características determinantes del objeto en el dominio del problema? 
  • Con qué objetos esta relacionado? 
  • Con qué objetos debe estar relacionado para realizar sus mensajes? 
  • Identificar el nombre, los roles y cardinalidad de las asociaciones
  • Qué asociaciones hay de tipo partes y un todo (composición)? 
  • Qué información se requiere en una clase para realizar su comportamiento? 
Posibles errores 
  • Identificar atributos o relaciones no relevantes a los casos de uso identificados 
  • Las relaciones no reflejan directamente la realidad 

 

 
Identificar mensajes
  • Punto de vista funcional 
    • Qué mensajes debe tener un objeto para colaborar en un caso de uso? 
  • Punto de vista de comportamiento 
    • Qué comportamiento se espera de un objeto dado en el modelo del mundo? 
    • Qué mensajes se requieren para manipular la información que contienen? 
    • Qué mensajes requieren para manipular las relaciones que tiene? 
    • Qué mensajes hacen que el objeto cambie de un estado a otro? 
Posibles errores
  • Identificar servicios no relevantes a los casos de uso identificados 
  • Identificar servicios que no puede realizar la clase por falta de información 
 
Identificar relaciones de herencia 
  • Qué clases son abstracciones naturales de clases ya existentes? 
  • Qué clases comparten atributos o servicios? 
  • Qué clases extienden atributos o servicios de otras? 
Posibles Errores
  • No tener una relación Es Un entre las clases 

 

 
Identificar restricciones del modelo
  • Identificar valores posibles y no posibles de los atributos. Describirlos como restricciones de las clases
  • Identificar valores permitidos para las asociaciones. Describirlos como restricciones de la asociación
  • Identificar restricciones que relaciones dos o más atributos o relaciones. Describirlas dentro de la clase correspondiente
Posibles errores
  • Hay estados en el modelo imposibles en el mundo real 
  • Hay estados en el mundo real no considerados en el modelo 

 

 
Identificar paquetes
  • Qué subdivisiones lógicas pueden tener las clases identificadas? 
  • Que subconjunto de clases y casos de uso pueden ser reutilizados en otros dominios?
  • Combinar clases fuertemente relacionadas en un paquete 
  • Combinar clases que tienen que ver con los mismos casos de uso en un paquete 

 

 
Consideraciones de reutilización
  • Reutilizar modelos de dominio existentes 
  • Identificar posibles variantes en el futuro tenerlas en cuenta para diseño (patrones) 

 

 

5. Validar los modelos

 

 

Validar las restricciones descritas para las clases 

  • Para cada clase evaluar la completitud de las restricciones
  • Desarrollar objetos ejemplo que cumplan con las restricciones y que no sean válidos en el mundo real
 

Validar atributos y mensajes 

  • La clase tiene toda la información necesaria para desarrollar la tarea?
  • La clase tiene las relaciones necesarias para propagar el mensaje y cumplir con la tarea?
  • Los mensajes si son utilizados dentro del contexto del problema?
  • Los mensajes obligan la conservación de las restricciones del modelo?
 

Desarrollar diagramas de interacción (diagramas de secuencia o de colaboración) para la variante por defecto de cada caso de uso, usando los objetos del modelo del mundo encontrados y sus mensajes. 

  • Escoger la opción por defecto de cada caso de uso
  • Identificar los objetos involucrados
  • Desarrollar el diagrama de secuencia o el de colaboración para la interacción
 

Validar los diagramas de Interacción 

  • Todo mensaje de un objeto a otro implica una asociación y un rol en el diagrama de clases
  • Todo mensaje está definido en su correspondiente clase
  • Opcional: Completar el diagrama de clases con asociaciones de dependencia a las clases de los argumentos de los mensajes
 

Validar con un experto del dominio 

  • Validar estructura del mundo
  • Validar funcionalidad esperada del sistema
  • Validar los diagramas de interacción descritos como detalle de los casos de uso
 

Validar con un  usuario representativo de cada actor 

  • Validar la funcionalidad esperada para el actor en particular: completitud, relevancia
  • Validar los diagramas de interacción descritos como detalle de los casos de uso del actor
  • Validar la interfaz diseñada y el diálogo descrito
 

Iterar si es necesaria más información 

Diseño del Sistema

Descripción

En esta etapa se define una subdivisión en aplicaciones del sistema (si es lo suficientemente grande) y la forma de
comunicación  con los sistemas ya existentes con los cuales debe interactuar
 

1. Identificar la arquitectura del sistema

 

Diagramas de Ejecución, versión inicial

 


 

Actividades Técnicas

1. Identificar la arquitectura del sistema
 

Definir componentes del sistema, las aplicaciones y su ubicación. Representarlos por medio de nodos, componentes y objetos activos (representando las aplicaciones) dentro de los nodos.

 

Definir mecanismos de comunicación. Expresarlos por medio de asociaciones de dependencia entre los nodos, componentes o aplicaciones y, si es conocido, agregar un estereotipo para definir el protocolo de comunicación requerido. Agregar notas con restricciones, rendimiento esperado y demás detalles de las conexiones.

 

Particularizar los casos de uso a la arquitectura planteada. Refinar los casos de uso ya existentes de la etapa anterior para adecuarse a la arquitectura planteada.

 

Validar arquitectura. Comprobar la validez técnica, económica y organizacional de la propuesta.

 

Documentos Entregables

Diagramas de Ejecución, versión inicial

Procesadores 
Procesos 
Mecanismos de comunicación 
Descripción detallada

 Diseño detallado

Descripción

En esta etapa se adecúa el análisis a las características específicas del ambiente de implementación y se completan las
distintas aplicaciones del sistema con los modelos de control, interfaz o comunicaciones, según sea el caso.
 

1. Agregar detalles de implementación al modelo del mundo 

2. Desarrollar el modelo de interfaz 

3. Desarrollar los modelos de control, persistencia y comunicaciones 

 

Diagramas de clases y paquetes, con el detalle de la implementación 

Diagramas de interacción con el detalle de las operaciones más importantes del sistema 

Diagramas de estados y/o actividades para las clases concurrentes o complejas

 


 

Actividades Técnicas

1. Detalles de implementación del modelo del mundo
 

Completar el detalle de las clases: 

Tipos de los atributos 
Atributos y metodos de clase 
Diseño de asociaciones 
Completar los métodos

 

Enriquecer el modelo con el framework de base en el ambiente de implementación escogido

 

Incorporar patrones de diseño 

 

Subdividir en paquetes 

 

Definir excepciones 

 

Completar comportamiento de las clases: Constructores, destructores, modificadores, consultores

 

Adecuar el modelo a las características del lenguaje de programación 

 

Evaluar eficiencia 

 

Validar el sistema

 

2. Desarrollar el modelo de interfaz
 

Conocer el framework de base 

 

Enlazar las clases de interfaz con las clases del modelo del mundo

 
 

3. Desarrollar los modelos de control, persistencia y comunicaciones
 

Conocer los frameworks de base 

 

Enlazar las clases del framework con las demás clases del sistema 

 

Documentos Entregables

Diagramas de clases y paquetes, con el detalle de la implementación 

 

Diagramas de interacción con el detalle de las operaciones más importantes del sistema 

 

Diagramas de estados y/o actividades para las clases concurrentes o complejas

 
  Implementación y pruebas

Descripción

Se desarrolla el código de una manera certificada.

 

1. Definir estándares de programación 

2. Codificación y pruebas unitarias 

3. Pruebas de módulos y de sistema

 

Código fuente 

Soporte de pruebas unitarias 

Documentación del código 

 


 

Actividades Técnicas

1. Definir estándares de programación
 

Asimilar los idioms aplicables al lenguaje

 

Conocer y adecuar estándares de programación al lenguaje 

 

Definir estructura de directorios

 

Diseñar makefiles

 

2. Codificación y pruebas unitarias
 

Revisiones de código

 

Tratamiento de Trace y Log

 
 

3. Pruebas de módulos y de sistema
 

Casos de prueba

 

Procedimiento de instalación

 

Documentos Entregables

Código fuente 

 

Soporte de pruebas unitarias 

 

Documentación del código 

 


 

Publicidad
Regresar al inicio
Compartir este post
Repost0
Para estar informado de los últimos artículos, suscríbase:
Comentar este post