Vista previa del material en texto
1.3 MODELOS PRESCRIPTIVOS MODULO I Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña28/02/11 1 Los modelos prescriptivos de proceso proporcionan estabilidad, control y organización a una actividad que si no se controla puede volverse caótica. El proceso conduce a un equipo de software a través de un conjunto de actividades del marco de trabajo que se organizan en un flujo de proceso, el cual puede ser lineal, incremental o evolutivo. 2 Cualquier organización de IS debe describir un conjunto único de actividades dentro del marco de trabajo. También debe llenar cada actividad del marco de trabajo con un conjunto de acciones de IS, y definir cada acción en cuanto a un conjunto de tareas que identifique el trabajo (y los productos del trabajo) que deben completarse para alcanzar las metas de desarrollo. Modelos prescriptivos 3 Luego, la organización debe adaptar el modelo de proceso resultante y ajustarlo a cada proyecto, a las personas que lo realizarán, y el ambiente en el que se ejecutará el trabajo. Sin importar el modelo de proceso seleccionado, los ingenieros de software han elegido de manera tradicional un marco de trabajo. 4 Se les llama “prescriptivos” porque prescriben un conjunto de elementos del proceso: Actividades del marco de trabajo, Acciones de la IS, Tareas, Productos del trabajo, Aseguramiento de la calidad, Mecanismos de control del cambio para cada proyecto. 5 Modelo en cascada Algunas veces llamado el ciclo de vida clásico, sugiere un enfoque sistemático secuencial hacia el desarrollo de software. Se considera 5 etapas: Construcción código prueba Comunicación Inicio proyecto Recopilación req Planeación estimación itinerario seguimiento Modelado análisis diseño Despliegue Entrega Soporte retroalimentacion 6 Entre los problemas al aplicar el modelo: 1.- Son raros los proyectos que siguen un flujo secuencial, a pesar de que el modelo lineal incluye iteraciones, lo hace de manera indirecta. 2.- Con frecuencia es difícil para el cliente especificar todos los requisitos de manera exacta. 3.- El cliente debe tener paciencia. Una versión estará disponible sólo cuando el proyecto esté muy avanzado. 7 El modelo en cascada conduce a “estados de bloqueo” (Bradac) en los cuales algunos miembros del equipo deben esperar a otros para terminar tareas dependientes. Sin embargo, sirve como modelo de proceso útil en situaciones donde los requerimientos son claros y completos y donde el trabajo se realiza, hasta su conclusión, de una manera lineal. 8 Modelos de procesos incrementales En algunas ocasiones los requisitos iniciales del software están bien definidos en forma razonable, pero el enfoque global del esfuerzo de desarrollo excluye un proceso puramente lineal. Además existe la necesidad de proporcionar en forma rápida un conjunto limitado de funcionalidad para el usuario y después refinarla y expandirla en las entregas posteriores. Entonces, en estos casos se elige el modelo incremental. 9 El modelo incremental aplica secuencias lineales de manera escalonada conforme avanza el tiempo en el calendario. Cada secuencia lineal produce “incrementos” del software. Se debe tener en cuenta que el flujo del proceso de cualquier incremento puede incorporar el paradigma de construcción de prototipos. El modelo incremental: 10 Al utilizar el modelo incremental, el primer incremento es un “producto esencial”, se incorporan requisitos básicos. Este producto queda en manos del cliente (o se somete a una evaluación). Como resultado de la evaluación se desarrolla un plan para el siguiente incremento. El plan afronta la modificación del producto esencial afin de satisfacer necesidades del cliente. Este procesos se repite hasta la entrega final. 11 Combina elementos del modelo en cascada aplicado en forma iterativa. Incremento #1 Entrega del 1er. incremento Incremento #2 Entrega del 2do. incremento Incremento #n Entrega del n-ésimo incremento Tiempo del calendario de proyecto F u n c io n a li d a d y c a ra c té rí s ti c a s d e l S w 12 El modelo DRA El Desarrollo Rápido de Aplicaciones es un modelo de proceso de software incremental que resalta un ciclo de desarrollo corto. El modelo DRA es una adaptación a “alta velocidad” del modelo en cascada en el que se logra el desarrollo rápido mediante un enfoque de construcción basado en componentes. Si se entiende los requisitos y el dominio del proyecto. El proceso DRA permite crear un sistema completamente funcional dentro de un periodo muy corto. 13 Modelado Modelado del negocio Modelado de los datos Modelado del proceso Modelado Modelado del negocio Modelado de los datos Modelado del proceso Modelado Modelado del negocio Modelado de los datos Modelado del proceso construcción Reutilización componentes Generación de código pruebas construcción Reutilización componentes Generación de código pruebas construcción Reutilización componentes Generación de código pruebas despliegue integración entrega retroalimentación 60 – 90 días planeación comunicación Equipo #1 Equipo #2 Equipo #n 14 Las restricciones de tiempo impuestas sobre un proyecto DRA exigen ámbito de escalas. Si una aplicación de negocios se puede modular de forma que cada gran función pueda completarse en menos de tres meses, ésta es una candidata para el DRA. Cada gran función se puede abordar mediante un equipo de DRA por separado, para después integrarlas y formar un todo. 15 Inconvenientes del DRA 1) Para proyectos grandes, pero escalables, el DRA necesita suficientes recursos humanos para crear el número correctos de equipos DRA. 2) Si los desarrolladores y clientes no se comprometen con las actividades rápidas necesarias para completar el sistema en un marco de tiempo muy breve, los proyectos DRA fallarán. 16 3) Si un sistema no se puede modular en forma apropiada, la construcción de componentes necesarios será problemática. 4) Si el alto rendimiento es un aspecto importante, y se alcanzará al convertir interfases en componentes del sistema, el enfoque DRA podría no funcionar. 5) El DRA sería inapropiado cuando los riesgos técnicos son altos. 17 Modelos de procesos evolutivos El software, al igual que todos los sistemas complejos, evolucionan con el tiempo. Los requisitos de los negocios y productos a menudo cambian conforme se realiza el desarrollo; por lo tanto, la ruta lineal que conduce a un producto final no será real; las fechas tope del mercado imposibilitan la conclusión de un producto completo. 18 Construcción de prototipos Con frecuencia un cliente define un conjunto de objetivos generales para el software, pero no identifica los requisitos detallados de entrada, procesamiento o salida. En otros casos, el responsable del desarrollo de software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un SO. En estas y en otras situaciones , un paradigma de construcción de prototipos puede ofrecer el mejor enfoque 19 Un prototipo se puede usar de manera independiente, se emplea más comúnmente como una técnica que puede implementarse dentro del contexto de cualquiera de los modelos de proceso. La construcción de prototipos ayuda al IS y al cliente a entender de mejor manera cuál será el resultado de la construcción cuando los requisitos estén satisfechos. 20 La construcción de prototipos se inicia con la comunicación. El IS y el cliente encuentran y definen los objetivos globales para el software, identifican los requisitos conocidos y las áreas del esquema en donde es necesaria más definición. Entonces se plantea con rapidez una iteración de construcción de prototipos y se presenta el modelo (en la forma de un diseño rápido). 21 El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente (porejemplo, la configuración de la interfaz con el usuario y el formato de los despliegues de salida). El diseño rápido conduce a la construcción de un prototipo. Después, el prototipo lo evalúa el cliente y con la retroalimentación se refinan los requisitos del software que se desarrollará. 22 La iteración ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. De manera ideal, el prototipo debería servir como un mecanismo para identificar los requisitos del software. Si se construye un prototipo de trabajo, el desarrollador intenta emplear los fragmentos del programa ya existentes o aplica herramientas que permita producir programas de trabajo con rapidez. 23 Plan rápido Modelado Diseño rápido Construcción del prototipo Desarrollo Entrega y retroalimentación comunicación Modelo de construcción de prototipos 24 25 Identificar los requerimientos Desarrollar un prototipo Utililizar el prototipo Usuario satisfecho? Revisar y mejorar el prototipo Prototipo funcional NOSI a) El cliente ve lo que parece una versión en funcionamiento del software, sin saber que el prototipo (por la prisa de hacerlo funcionar) no considera calidad y facilidad de mantenimiento a largo plazo. b) Frecuentemente, el desarrollador establece compromisos de implementación para lograr que el prototipo funcione con rapidez Desventajas 26 Sin embargo, la construcción de prototipos puede ser un paradigma efectivo para la IS. La clave es definir las reglas de juego desde el principio; es decir, el cliente y el desarrollador se deben poner de acuerdo en que el prototipo se construya y sirva como un mecanismo para la definición de requisitos, en que se descarte, al menos en parte y que luego será desarrollado el software real con enfoque hacia la calidad. 27 El modelo en espiral El modelo en espiral que Boehm propuso originalmente, es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de la construcción de prototipos con los aspectos controlados y sistemáticos del modelo en cascada. Proporciona el material para el desarrollo rápido de versiones incrementales del software. 28 Cuando se aplica el modelo en espiral, el software se desarrolla en una serie de entregas evolutivas. Durante las primeras iteraciones, la entrega tal vez sea un documento del modelo o un prototipo. Durante las últimas iteraciones se producen versiones cada vez mas completas del sistema desarrollado. 29 Un proceso en espiral se divide en un conjunto de actividades del marco de trabajo que define el equipo de IS. Cada una de las actividades del marco de trabajo representa un segmento de la ruta en espiral. Cuando comienza este proceso evolutivo el equipo de software realiza actividades implicadas en un circuito alrededor de la espiral y que se inicia desde el centro. 30 comunicación Planeación construcción despliegue modelado Entrega retroalimentación Codigo construcción Analisis diseño Estimación Itinerario Analisis de riesgos Reingeniería Mantenimiento de la Aplicación Mejora de la Aplicación Desarrollo de la Nueva Aplicación Desarrollo del concepto 31 El factor riesgo es considerado en cada revolución. Los puntos de fijación (una combinación de productos de trabajo y condiciones incluidas a lo largo de la ruta de la espiral) se consideran para cada paso evolutivo. El primer circuito alrededor de la espiral quizá genere el desarrollo de una especificación del producto; los pasos siguientes se pueden aprovechar para desarrollar un prototipo y después, en forma progresiva, versiones más elaboradas del software. 32 El modelo de desarrollo concurrente Llamado algunas veces ingeniería concurrente, se representa en forma esquemática como una serie de actividades del marco de trabajo, acciones y tareas de la IS y sus estados asociados. El modelo de proceso concurrente define una serie de eventos que dispararán transiciones de estado para cada una de las actividades, acciones o tareas de IS. 33 El modelo de proceso concurrente se aplica a todos los tipos de desarrollo de software y proporciona una visión exacta del estado actual de un proyecto, definiendo una red de actividades. Cada actividad, acción o tarea en la red existe de manera simultanea con otras actividades, acciones o tareas. Los eventos generados en un punto de la red del proceso disparan transiciones entre los estados 34 Modelos especializados de proceso Desarrollo basado en componentes Los nuevos componentes de software comerciales (NCSC), desarrollados por vendedores que los ofrecen como productos, se pueden emplear cuando el software está en proceso de construcción. Estos componentes proporcionan funcionalidad dirigida con interfaces bien definidas que permiten que el componente se integre en el software. 35 El modelo de desarrollo basado en componentes (DBC) incorpora muchas de las características del modelo en espiral. Es evolutivo por naturaleza y exige un enfoque iterativo para la creación del software. Sin embargo, el modelo configura aplicaciones a partir de componentes de software empaquetados previamente. 36 Las actividades de modelado y construcción comienzan con la identificación de los componentes candidatos. Estos componentes se pueden diseñar como módulos de software convencionales o como clases o paquetes de clases orientados a objetos. Sin importar la tecnología que se aplique en la creación de componentes. 37 El modelo de desarrollo basado en componentes incorpora los siguientes pasos (implementados mediante un enfoque evolutivo): Los productos basados en componentes disponibles se investigan y evalúan para el dominio de aplicación en cuestión; Se consideran los aspectos de integración de componentes; Se diseña una arquitectura de software para adaptar los componentes; 38 Los componentes se integran en la arquitectura; Se realizan pruebas detalladas para asegurar una funcionalidad apropiada. El modelo de desarrollo basado en componentes conduce a la reutilización del software, que proporciona beneficios a los ingenieros de software. 39 Desarrollo del software orientado a aspectos Independientemente del proceso de software que se elija, los constructores de software complejo implementan de manera invariable un conjunto específico de características, funciones y contenido de información. Estas características específicas del software se modelan como componentes (por ejemplo, clases orientadas a objetos) y después se construyen dentro del contexto de una arquitectura de sistema. 40 Conforme los sistemas basados en computadora se vuelven más elaborados (y complejos), ciertos “intereses” abarcan toda la arquitectura. Algunos intereses son propiedades de alto nivel de un sistema (por ejemplo, seguridad, falta de tolerancia). Otros intereses afectan las funciones (como la palicación de reglas de negocios), mientras que otros son sistemáticos (como la sincronización de tareas o la gestión de memoria). 41 Cuando los intereses se relacionan con múltiples funciones, características e información del sistema, con frecuencia se denominan “intereses generales”. Los requerimientos de aspectos definen estos intereses generales que ejercen un impacto a través de la arquitectura del software. 42 El desarrollo de software orientado a aspectos (DSOA), referido con frecuencia como programación orientada a aspectos (POA), es un paradigma de la IS relativamente nuevo que proporciona un proceso y enfoque metodológico para definir, especificar, diseñar y construir aspectos (mecanismos más allá de subrutinas y legados para localizar la expresión de un interés general) 43 Grundy explica con profundidad los aspectos en el contexto de lo que él llama ingeniería de componentes orientada a aspectos (ICOA): La ICOA utiliza un concepto de capas horizontales a través de componentesde software descompuestos en forma vertical, llamados “aspectos” para caracterizar propiedades generales de los componentes, los cuales pueden ser funcionales y no funcionales. 44 Por lo general, los aspectos sistémicos incluyen: Interfases con el usuario, Trabajo en colaboración, Distribución, Persistencia, Gestión de memoria, Procesamiento de transiciones, Seguridad, Integridad 45 Los componentes pueden proporcionar o requerir uno o más “detalles de aspecto” relacionados con un aspecto particular, como: Mecanismo de visión, acceso extensible, Tipo de interfase (aspectos de la interfase con el usuario), Generación, Transportación. 46 Recepción de eventos (aspectos de distribución), Almacenamiento/recuperación e indización de datos (persistencia), Autenticación, Codificación y derechos de acceso (aspectos de seguridad), Atomicidad de la transacción, Control de concurrencia, Control de transporte (aspectos de transición). 47 Lamentablemente, hasta ahora no se ha concretado un proceso orientado a aspectos diferente. Es probable que tal proceso adopte características de los modelos en espiral y concurrente. La naturaleza evolutiva del modelo en espiral es apropiada cuando se identifican y construyen los aspectos. La naturaleza paralela del desarrollo concurrente es esencial por que los aspectos se desarrollan de manera independiente de los componentes del software. 48