lOMoAR cPSD| 4269609 P1-TA-6 - Lectura Capítulo 1 , 2 ( Proceso Unificado DE Desarrollo DE Software) Desarrollo de Software III (Universidad de las Américas Ecuador) Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 StuDocu no está patrocinado ni avalado por ningún colegio o universidad. Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 UNIVERSIDAD DE LAS AMÉRICAS EL PROCESO UNIFICADO DEL DESARROLLO DE SOFTWARE Kevin Soto 717763 Capítulo 1 A medida que pasa el tiempo y debido al gran avance tecnológico que va surgiendo, las necesidades de los usuarios son cada vez más estrictas, se requieren sistemas que se adapten alas necesidades que van surgiendo y por ende son sistemas más complejos. Pero no siendo esto suficiente, se requieren que estos sistemas sean desarrollados rápidamente, para que puedan ser distribuidos tempranamente y tener un puesto más importante en el mercado. Para poder conseguir esto se requiere dejar de usar metodologías viejas, debido que estas se enfrentan a varios problemas que hacen que la obtención del resultado final sea más lenta. Es por esto que se necesita un método que cumpla con las siguientes condiciones: • Proporcione una guía para ordenar las actividades de un equipo. • Dirija las tareas de cada desarrollador por separado y del equipo como un todo. • Especifique los artefactos que deben desarrollarse. • Ofrezca criterios para el control y la medición de los productos y actividades del proyecto. Teniendo en cuenta todas estas necesidades se decidió desarrollar el proceso Unificado, lo cual sirve como solución a los problemas anteriores. El Proceso Unificado es un marco de trabajo genérico de actividades necesarias para transformar los requisitos de un usuario en un sistema software, este puede especializarse en varias áreas, tipos de sistemas, organizaciones y tamaños de proyectos. El Proceso Unificado se basa en componentes los cuales al final forman un todo y están comunicados entre sí. Para poder lograr esto se utiliza el Lenguaje Unificado Modelado (UML), el cual prepara todos los esquemas del sistema que se realizará. Los hace único al Proceso Unificado son los siguientes aspectos: • Dirigido por Casos de Uso. • Centrado en la arquitectura. • Es iterativo e incremental. A continuación, describiremos cada uno de estos aspectos para que puedan ser entendidos. Él Proceso Unificado está dirigido por Casos de Uso. Para poder entender los requerimientos que los usuarios necesitan y desean, entendiendo que por usuarios nos referimos también a otros sistemas, necesitamos realizar casos de uso, ya que estos representan un fragmento de la funcionalidad del sistema, lo cual proporciona al usuario un resultado importante y al desarrollador una guía del funcionamiento del sistema. Para poder realizar un caso de uso se debe realizar la siguiente pregunta “¿Qué debe hacer el sistema para cada usuario?”. Los casos de uso sirven también como una guía para el diseño, implementación Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 y pruebas del sistema. Para el correcto desarrollo de un caso de uso es necesario especificarlos para luego diseñarlos. A pesar de que los casos de uso son una guía para el desarrollo del sistema, estos se van desarrollando paralelamente, influyendo uno con el otro. El Proceso Unificado está centrado en la arquitectura. La arquitectura en un sistema de software se describe mediante diferentes vistas del sistema en construcción. Esta describe los aspectos estáticos y dinámicos más importantes de un sistema. Esto surge de las necesidades de la empresa, como las perciben los usuarios y los invasores, y son reflejados en los casos de uso. Sin embargo, también se ve influida por muchos otros factores, como la plataforma en la que tiene que funcionar el software, los bloques de construcción, consideraciones de implementación, sistemas heredados, y requisitos no funcionales. Debe haber interacción entre los casos de uso y la arquitectura para poder desarrollar un sistema correcto, los casos de uso deben encajar en la arquitectura cuando se llevan a cabo. Por otro lado, la arquitectura debe permitir el desarrollo de todos los casos de uso requeridos, ahora y en el futuro. Habiendo dicho esto la arquitectura debe diseñarse de tal manera que permita que el sistema pueda evolucionar. Entonces el arquitecto se debe encargar de lo siguiente: • Crear un esquema en borrador de la arquitectura, comenzando por la parte de la arquitectura que no es específica de los casos de uso. Aunque por esta parte de la arquitectura es independiente de los casos de uso, el arquitecto debe poseer una comprensión general de los casos de uso antes de comenzar la creación del esquema arquitectónico. • A continuación, el arquitecto trabaja con un subconjunto de los casos de uso especificados, con aquellos que representen las funciones clave del sistema en desarrollo. Cada caso de uso seleccionado en detalle y se realiza en términos de subsistemas, clases y componentes. • A medida que los casos de uso se especifiquen y maduran, se descubre más de la arquitectura. Esto, a su vez, lleva a la maduración de más casos de uso. El Proceso Unificado es iterativo e incremental. Debido a que los sistemas pueden tardar varios meses o incluso años en desarrollarse es práctico dividir el sistema en pequeños subsistemas. Cada uno de estos es una iteración y la suma de todas las iteraciones debe ser el proyecto completo. Para poder seleccionar los requerimientos que se trataran en cada iteración se debe tomar en cuenta lo siguiente. Primero cada iteración debe ampliar la utilidad de las iteraciones anteriores. Segundo, se debe priorizar los requerimientos más importantes del sistema. Y, por último, estas deben terminar siendo un código ejecutable. Cuando una iteración no cumple sus objetivos se debe hacer una retroalimentación de lo sucedido y probar con un nuevo enfoque. Entre los beneficios del proceso iterativo tenemos: • La iteración controlada reduce el coste de riesgo a los costees de un solo incremento. Si los desarrolladores tienen que repetir la iteración, la organización solo pierde el esfuerzo mal empleado de la iteración, no el valor del producto entero. Descargado por SAMIR lOMoAR cPSD| 4269609 • La iteración controlada reduce el riesgo de no sacar al mercado el producto en el calendario previsto. Mediante la identificación de riesgos en fases tempranas del desarrollo, el tiempo que se gasta en resolverlos se emplea al principio de la planificación, cuando la gente está mendos presionada por cumplir los plazos. • La iteración controlada acelera el ritmo del esfuerzo de desarrollo en su totalidad debido a que los desarrolladores trabajan de manera más eficiente para obtener resultados claros a corto plazo, en lugar de tener un calendario largo. • La iteración controlada reconoce que las necesidades del usuario y sus requisitos no pueden definirse completamente al principio. Una vez presentados estos conceptos claves, pasaremos a definir al proceso en su totalidad, sus ciclos de vida, artefactos, flujos de trabajo, fases e iteraciones. La vida del Proceso Unificado. La vida del proceso unificado consta de varios ciclos y cada ciclo representa a una versión del producto. Cada ciclo tiene cuatro fases: inicio, elaboración, construcción y transición. Cada fase se subdivide en iteraciones. Figura 1.3. Un Ciclo con sus fases e iteraciones. Cada ciclo produce una nueva versión del sistema y cada versión es un producto preparado para su entrega. Este debe poder ajustarse a las necesidades de todas las personas que vayan a usar el sistema. El producto final debe incluir todos los elementos que hemos mencionado anteriormente. Este puede cambiar a medida que pasa el tiempo, esto con la finalidad de adaptarse a nuevos requerimientos o a cambios dentro e la empresa, para poder realizar estos cambios en nuevo ciclo los desarrolladores necesitan lo siguiente: • Un modelo de casos de uso con todos los casos de uso y su relación con los usuarios. • Un modelo de análisis. • Un modelo de diseño que defina la estructura estática, clases e interfaces y los casos de uso. • Un modelo de implementación que incluya componentes y la correspondencia de las clases con los componentes. • Un modelo de despliegue que defina los nodos físicos y la correspondencia de los componentes con esos nodos. • Un modelo de prueba. Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 • Una representación de la arquitectura. En cada ciclo se desarrollan cuatro fases, las cuales pueden descomponerse en iteraciones. Cada fase termina con un hito. Los hitos tienen varios objetivos, uno de los principales es brindar información para la toma de decisiones antes de empezar la siguiente fase o para otros proyectos. Las fases dentro de un ciclo son: Descargado por SAMIR lOMoAR cPSD| 4269609 • Fase de Inicio: En esta fase se identifican y priorizan los riesgos más importantes, y se desarrolla una descripción del producto final. • Fase de Elaboración: Se especifican en detalle la mayoría de los casos de uso del producto y la arquitectura del sistema. Al final de esta fase el director del proyecto debe tener lo necesario para planificar las actividades y estimar los recursos necesarios para terminar el proyecto. • Fase de construcción: En esta fase se crea el proyecto. Al final de esta fase, el producto contiene todos los casos de uso que la dirección y el cliente acordaron para la versión. • Fase de Transición: Cubre el periodo en la que el producto se convierte en versión beta. En esta fase se instruye al cliente y se encuentran y corrigen los defectos del producto. Conclusiones y Recomendaciones del Capítulo 1. Una vez expuestos todos los hechos mencionados anteriormente podemos concluir que: • El Proceso Unificado surgió como respuesta a las necesidades del usuario de obtener un sistema óptimo y de calidad en periodos de tiempo cortos. Es necesario que este proceso no puede ser usado para todo tipo de proyectos, ya que existen proyectos críticos que tomarán grandes cantidades de tiempo y en los cuales las pautas a seguir del Proceso Unificado no puedan aplicar. • Los casos de uso son algo necesario para el Proceso Unificado, ya que estos nos muestran el camino a seguir durante el desarrollo del sistema, y también nos muestra de que manera debe comportarse nuestro sistema, teniendo así una pauta para que, durante las pruebas, se pueda determinar si el sistema responde de la manera correcta o si hay algún tipo de error. • La arquitectura del software y los casos de uso están fuertemente ligados ya que, los casos de uso representan a las funciones y la arquitectura representa la forma del sistema en que se desarrollan estas funciones. Debido a esto tanto los casos de uso como la arquitectura deben desarrollarse y evolucionar simultáneamente. • Las iteraciones son pequeños avances del sistema, en cada iteración se resuelven una cantidad de casos de uso, empezando por los más importantes. Cabe recalcar que cada iteración es un sistema ejecutable y que el resultado de la suma de todas las iteraciones deberá ser el sistema final. • Tanto los casos de uso, como la arquitectura y las iteraciones están fuertemente ligadas y si se flaquea en una de ellas las otras también tendrán problemas. De igual manera se recomienda lo siguiente: • Ser muy cuidadoso durante la elaboración de los casos de uso, ya que un error en estos puede representar en varios errores a futuro. • También se recomienda trabajar con los usuarios ya que la retroalimentación es algo importante en el Proceso Unificado, así se evita la pérdida de tiempo innecesaria. Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 • Se recomienda que la entrega de cada iteración no sea muy larga y que cada una de estas pueda añadir un valor importante al avance del proyecto. Capítulo 2 Durante el desarrollo del sistema hay varios aspectos que se deben tomar en cuenta, entre estos están las cuatro P’s (Personas, proyecto, producto y proceso) y las herramientas. • Personas: Las personas son las que desarrollarán y usarán el sistema que se realiza, estos son seres humanos y no simplemente trabajadores. • Proyecto: Elemento organizativo a través del cual se gestiona el desarrollo de software. El resultado de un proyecto es una versión de un producto. • Producto: Artefactos que se crean durante la vida del proyecto, como los modelos, código fuente, ejecutables y documentación. • Proceso: Conjunto completo de actividades necesarias para transformar los requisitos de usuario en un producto. Es una plantilla para crear proyectos. • Herramientas: Software que se utiliza para automatizar las actividades definidas en el proceso. Figura 2. Las cuatro “P” en el desarrollo de software. Personas Las personas están constantemente implicadas en el desarrollo de un software, estas desde el inicio hasta luego de la entrega. Por lo tanto, el proceso que guía el desarrollo debe orientarse a las personas que lo utilizarán. Las distintas formas en que se organiza y gestionan un proyecto afecta de una manera significativa a las personas, por lo tanto, tenemos que tener en cuenta los siguientes conceptos: • Viabilidad del proyecto: Un proyecto que parece imposible puede afectar a la moral de los desarrolladores, es por esto que los proyectos que no son viables deben desecharse en una fase temprana. Descargado por SAMIR lOMoAR cPSD| 4269609 • • Gestión del riesgo: Las personas pueden llegar a sentirse incómodos si sienten que puede haber muchos riesgos en el desarrollo del proyecto, para esto se debe explorar los riesgos significativos en fases tempranas del proyecto. • Estructura de los equipos: La gente tiende a trabajar mejor en grupos pequeños, de entre seis y ocho miembros. • Planificación del proyecto: La gente tiende a no querer trabajar cuando saben que por mucho que lo intenten no obtendrán los resultados deseados. Facilidad de comprensión del proyecto: A la gente le gusta saber lo que está haciendo, hay que tener una arquitectura clara para que los desarrolladores tengan una visión general del proyecto. • Sensación de cumplimiento: La retroalimentación frecuente y las conclusiones obtenidas aceleran el ritmo de trabajo. Como se dijo anteriormente, a medida que el tiempo avanza la tecnología evoluciona y es por esto que los usuarios cada vez piden sistemas más complejos. Para esto se necesita que los procesos estén soportados por herramientas y UML. Para poder comprender y dar soporte a estos procesos más complejos las personas deberán trabajar con más personas. En años siguientes las personas serán decisivas en el desarrollo de software. El problema radica en hacerlas eficaces y permitir que se dediquen a lo que sólo los seres humanos pueden hacer. Una de las tareas esenciales de las organizaciones es convertir a sus recursos “latentes” en “trabajadores”. Se denomina trabajador a los puestos a los cuales se pueden asignar personas y los cuales esas personas aceptan. Cada trabajador es responsable de un conjunto de actividades para el desarrollo de un sistema. Para esto necesitan comprender sus roles y necesitan tener las herramientas para desarrollarlos. Así mismo un trabajador también puede representar a un conjunto de personas. Una persona puede ser muchos trabajadores durante la vida de un proyecto. Proyectos. Cada proyecto da como resultado una versión del producto. A través de su ciclo de vida, un equipo de proyecto debe preocuparse del cambio, las iteraciones, y el patrón organizativo dentro del cual se conduce el proyecto: • Una secuencia de cambios: A lo largo del proceso se realizarán varios cambios hasta llegar al producto deseado. En cada iteración se verá al sistema desde otra perspectiva, y cada ciclo representará una nueva versión del sistema. • Una serie de iteraciones: Cada iteración implementa un conjunto de casos de uso relacionados o atenúa algunos riesgos. En una iteración los desarrolladores progresan a través de una serie de flujos de trabajo. Es por esto que cada iteración puede ser tomada como un miniproyecto. • Un patrón organizativo: La gente que trabaja en el proyecto debe tener una plantilla, que indique a las personas los tipos de trabajadores que el proyecto necesita y los artefactos por los cuales trabajar. Producto. Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 En el Proceso Unificado un producto no es sólo al código que se entrega si o al sistema entero. Un sistema de software es todos los artefactos que se necesitan para representarlo en una forma comprensible por máquinas u hombres, tanto trabajadores como los interesados. Los artefactos son cualquier tipo de información creada, producida, cambiada o utilizada por los trabajadores en el desarrollo del sistema. Existen dos tipos de artefactos, artefactos de ingeniería y artefactos de gestión. Los artefactos de gestión son aquellos que tienen un tiempo de vida corto. El tipo de artefacto más usado en el Proceso Unificado es el modelo. Los modelos son las perspectivas de los trabajadores del sistema. Un usuario de un modelo no debe necesitar información de otros modelos para interpretarlo. La mayoría de los modelos de ingeniería se definen median un subconjunto de UML cuidadosamente seleccionado. Un sistema completo contiene todas las relaciones y restricciones entre elementos incluidos en diferentes modelos. Por lo tanto, un sistema es también como se relacionan todos sus modelos. El hecho de que los elementos en dos modelos estén conectados no cambia lo que hacen en los modelos a los que pertenecen. Procesos. Los procesos son los conjuntos de actividades necesarias para convertir los requisitos de usuario en un conjunto consistente de artefactos que forman el producto. Un proceso no cubre solo el primer ciclo de desarrollo, a medida que surgen cambios en los requisitos surgen cambios en los artefactos y por ende se añaden nuevos procesos. Podemos dividir el proceso entero en flujos de trabajo, en el cual los trabajadores y los artefactos son los participantes. Figura 3. Un flujo de trabajo con trabajadores y actividades en “calles”. Un proceso de desarrollo de software del mundo real debe ser adaptable y configurable para cumplir con las necesidades reales de un proyecto y/o organización concreta. Los factores que influyen en como se diferenciará el proceso son: • Factores organizativos: Reglas de la empresa, así como herramientas disponibles por la misma. Descargado por SAMIR lOMoAR cPSD| 4269609 • • Factores del dominio: El dominio de la aplicación, procesos de negocio que se deben soportar, la comunidad de usuarios y ofertas disponibles por la competencia. • Factores del ciclo de vida: El tiempo en salida al mercado, el tiempo de vida esperado, la experiencia de los desarrolladores. • Factores técnicos: Lenguajes de programación, herramientas de desarrollo, base de datos, marcos de trabajo, comunicaciones y distribución. Entre los méritos del proceso tenemos: • Todo el mundo en el equipo de desarrollo puede comprender lo que tiene que hacer. • Los desarrolladores pueden comprender mejor que lo que el resto está haciendo. • Los supervisores y directores pueden comprender lo que los desarrolladores están haciendo gracias a los esquemas de la arquitectura. Los desarrolladores, supervisores y los directores pueden cambiar de proyecto o de división sin tener que aprender un nuevo proceso. • La formación puede estandarizarse dentro de la empresa. • El devenir del desarrollo de software es repetible, es decir, puede planificarse y estimarse en coste con suficiente exactitud como para cumplir las expectativas. Herramientas. Las herramientas son soportes para los procesos de desarrollo de software modernos. Es por esto que las herramientas son esenciales en los procesos. Estas sirven para automatizar procesos repetitivos, mantener las cosas estructuradas y gestionar grandes cantidades de información, incluso sirven como guías en un camino de desarrollo concreto. Las herramientas están ahí para automatizar tanto como sea posible al proceso. Las herramientas que implementan un proceso deben ser fáciles de usar, sencilla de comprender y deben proporcionar un incremento de productividad sustancial. Solo si cumplen esto valdrá la pena implementarlas. Debe existir un equilibrio entre proceso y herramientas. Los procesos dirigen el desarrollo de herramientas, pero al mismo tiempo las herramientas dirigen el desarrollo del proceso. El proceso de poder aprender de las herramientas y las herramientas deben soportar un proceso bien pensado. Hay herramientas que soportan todos los aspectos del ciclo de vida del software: • Gestión de requisitos: Se utiliza para almacenar, examinar y revisar, hacer el seguimiento y navegar por los diferentes requisitos de un proyecto software. • Modelado visual: Se utiliza para automatizar el uso de UML, es decir, para modelar y ensamblar una aplicación visualmente. • Herramientas de programación: Editores, compiladores, depuradores, detectores de errores y analizadores de rendimiento. • Aseguramiento de la calidad: Prueba las aplicaciones y sus componentes. Descargado por SAMIR ALONSO CRISTANCHO CACERES ([email protected]) lOMoAR cPSD| 4269609 Conclusiones y Recomendaciones del Capítulo 2. Habiendo analizado los hechos anteriores, podemos llegar a las siguientes conclusiones: • En el Proceso Unificado tenemos varios elementos, los cuales son muy importantes en todas las faces del desarrollo de un sistema, si uno de estos no está bien implementado, correctamente definido o no trabaja correctamente, podrá causar varios problemas o incluso podría causar el mal desarrollo de un sistema. • Dentro del Proceso Unificado, las personas son muy importantes, tanto los clientes como los desarrolladores, los clientes porque son los que recibirán el producto y los desarrolladores deberán tener un buen ambiente laboral y toda la seguridad en el proyecto para poder realizarlo efectivamente. • Un producto no es solo el sistema finalizado, si no también todos los elementos necesarios para asegurarnos que el sistema pueda ser utilizable por el usuario, así como los artefactos que se utilizaron para el desarrollo del sistema. • Los procesos y las herramientas están fuertemente vinculadas, ya que las herramientas nos ayudan a reducir esfuerzo y recursos durante los procesos, pero estas deben evolucionar paralelamente ya que una herramienta no puede ser creada si no se tiene bien definido a que proceso va a ayudar. De igual manera podemos recomendar: • Tomar en cuenta todos los factores que puedan afectar la moral de los trabajadores, ya que de estos depende el desarrollo del sistema. • No comprometerse a realizar proyectos que sean imposibles de realizar, ya que la moral de los trabajadores se verá afecta, y asegurarse de que se cubran todos los riesgos al momento de presentar el proyecto a los trabajadores. • Saber utilizar las herramientas que se implementarán en los distintos procesos, ya que de igual manera que estas pueden ayudar automatizar procesos, implementadas de la manera incorrecta o en procesos incorrectos pueden llegar a producir errores. Descargado por SAMIR