Professional Documents
Culture Documents
Proceso de Software
Modelados de Proceso de Software
Iteraccin de procesos
Entrega Incremental
Introduccin
El propsito de la ingeniera de software es generar y mantener sistemas de software dentro de las restricciones de tiempo, funcionalidad y costos acordados con el cliente. Las metas de esta disciplina tecnolgica son mejorar la calidad de los productos desarrollados y aumentar la productividad de los ingenieros de software.
Introduccin
El grado de formalidad y el tiempo asignado al proyecto de software vara de acuerdo al tamao y complejidad del producto que ser desarrollado.
Introduccin
Conforme aumenta la complejidad y el tamao del proyecto, la coordinacin se dificulta debido al incremento en la comunicacin entre los ingenieros de software, administradores y clientes (Fairley, 1985; Kraut y Streeter, 1995). En el mbito educativo, las investigaciones realizadas indican que los estudiantes graduados de programas de ingeniera entienden poco el significado de "programar en grande"; es decir, aplicar los principios de la ingeniera de software al desarrollo de un producto por un equipo de personas, durante el cual la coordinacin efectiva entre los participantes permite lograr un sistema de software exitoso (Upchurch y Sims-Knight, 1998).
Introduccin
Se utilizan diversas estrategias en la enseanza de la ingeniera de software. Algunas de ellas se basan slo en la revisin bibliogrfica, sin llevar a la prctica el conocimiento adquirido en un proyecto (Tomayko, 1987). Otras se basan en el trabajo en equipo, y su objetivo central es que el estudiante se ejercite en el desarrollo de un producto para un cliente real, tome decisiones de acuerdo a las opciones o recursos disponibles y se enfrente con los aspectos de comunicacin y coordinacin tpicos del trabajo en grupo (Upchurch y Sims-Knight, 1997).
http://www.youtube.com/watch?v=OuXiHP d-LFM
http://www.youtube.com/watch?v=dhvv88 Z7SaM http://www.youtube.com/watch?v=0pYMUf K3BxI
TRABAJO
Formemos grupos y realicemos una investigacin acerca de:
Organizacin de las hormigas Organizacin de las abejas Organizacin de los Pinginos
Cada grupo tendr un entrevistador y un entrevistado que ser el experto en el tema mencionado anteriormente. Esto debe ser grabado en un video y presentarlo a la clase.
Modelo de cascada
Es el enfoque metodolgico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalizacin de la etapa anterior.
Modelo de cascada
Un ejemplo de una metodologa de desarrollo en cascada es:
Anlisis de requisitos. Diseo del Sistema. Diseo del Programa. Codificacin. Pruebas. Implantacin. Mantenimiento.
Anlisis de requisitos
En esta fase se analizan las necesidades de los usuarios finales del software para determinar qu objetivos debe cubrir. De esta fase surge una memoria llamada SRD (documento de especificacin de requisitos), que contiene la especificacin completa de lo que debe hacer el sistema sin entrar en detalles internos.
Anlisis de requisitos
Es importante sealar que en esta etapa se debe consensuar todo lo que se requiere del sistema y ser aquello lo que seguir en las siguientes etapas, sin requerir nuevos resultados a mitad del proceso de elaboracin del software.
Codificacin
Es la fase en donde se implementa el cdigo fuente, haciendo uso de prototipos as como de pruebas y ensayos para corregir errores. Dependiendo del lenguaje de programacin y su versin se crean las bibliotecas y componentes reutilizables dentro del mismo proyecto para hacer que la programacin sea un proceso mucho ms rpido.
Pruebas
Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que funciona correctamente y que cumple con los requisitos, antes de ser entregado al usuario final.
Verificacin
Es la fase en donde el usuario final ejecuta el sistema, para ello el o los programadores ya realizaron exhaustivas pruebas para comprobar que el sistema no falle. En la creacin de desarrollo de cascada se implementa los cdigos de investigacin y pruebas del mismo
Mantenimiento
Una de las etapas mas criticas, ya que se destina un 75% de los recursos, es el mantenimiento del Software ya que al utilizarlo como usuario final puede ser que no cumpla con todas nuestras expectativas.
Variantes
Existen variantes de este modelo; especialmente destacamos la que hace uso de prototipos y en la que se establece un ciclo antes de llegar a la fase de mantenimiento, verificando que el sistema final este libre de fallos.
Ventajas
El modelo en cascada puede ser apropiado, en general, para proyectos estables (especialmente los proyectos con requisitos no cambiantes) y donde es posible y probable que los diseadores predigan totalmente reas de problema del sistema y produzcan un diseo correcto antes de que empiece la implementacin. Funciona bien para proyectos pequeos donde los requisitos estn bien entendidos. Es un modelo en el que todo est bien organizado y no se mezclan las fases. Es simple y fcil de usar. Debido a la rigidez del modelo es fcil de gestionar ya que cada fase tiene entregables .
Desventajas
En la vida real, un proyecto rara vez sigue una secuencia lineal, esto crea una mala implementacin del modelo, lo cual hace que lo lleve al fracaso. El proceso de creacin del software tarda mucho tiempo ya que debe pasar por el proceso de prueba y hasta que el software no est completo no se opera. Cualquier error de diseo detectado en la etapa de prueba conduce necesariamente al rediseo y nueva programacin del cdigo afectado, aumentando los costos del desarrollo.
Iterativo + Incremental
Aunque normalmente se habla de iterativo e incremental (o incluso slo de iterativo), ello no quiere decir que ambos sean lo mismo. De hecho, el desarrollo iterativo no implica, ni presupone el uso del incremental, y viceversa. Para ver la diferencia, veamos la definicin de cada tipo de ciclo de vida:
Iterativo + Incremental
El desarrollo incremental surge para eliminar los riesgos asociados a construir productos software grandes o con alto grado de complejidad. Se centra en desarrollar por partes el producto software, para despus integrarlas a medida que se completan. Un ejemplo de un desarrollo puramente incremental puede ser la agregacin de mdulos en diferentes fases. Grficamente se ve cmo cada vez se van aadiendo nuevas partes que se van integrando para formar el producto final.
Iterativo + Incremental
El desarrollo iterativo se centra en mejorar y revisar el producto ya creado. En cada ciclo se revisa y mejora el trabajo.
Iterativo + Incremental
En el ejemplo grfico de abajo se puede apreciar que se trata de un mtodo de mejora a travs de las sucesivas iteraciones. Es importante sealar no hay adicin de funcionalidades en el producto, hay revisin y mejora.
Iterativo + Incremental
De la unin del ciclo de vida iterativo y el incremental al final de cada iteracin se consigue una versin estable del software, aadiendo adems nuevas funcionalidades a las versiones anteriores. As, el producto software se desarrolla por incrementos en el que cada iteracin (incluida la primera) obtiene una versin operativa del producto, as el sistema se desarrolla y mejora poco a poco y se obtiene un feedback continuo por parte del cliente sobre un producto operativo.
Iterativo + Incremental
En el siguiente ejemplo grfico, a diferencia de los anteriores, se ve cmo en cada iteracin al producto creado en la primera se le van aadiendo nuevas formas, tonos, colores (funcionalidades). Adems, como se puede observar, las nuevas modificaciones se aplican sobre el trabajo ya creado desde el principio ya que, desde la iteracin 1, es una versin del producto final. Y cada iteracin mejora el producto.
Ciclo de vida
La idea principal detrs de mejoramiento iterativo es desarrollar un sistema de programas de manera incremental, permitindole al desarrollador sacar ventaja de lo que se ha aprendido a lo largo del desarrollo anterior, incrementando, versiones entregables del sistema. El aprendizaje viene de dos vertientes: el desarrollo del sistema, y su uso (mientras sea posible). Los pasos claves en el proceso son comenzar con una implementacin simple de los requerimientos del sistema, e iterativamente mejorar la secuencia evolutiva de versiones hasta que el sistema completo est implementado. En cada iteracin, se realizan cambios en el diseo y se agregan nuevas funcionalidades y capacidades al sistema.
Ciclo de vida
El proceso en s mismo consiste de:
Etapa de inicializacin Etapa de iteracin Lista de control de proyecto
Ciclo de vida
Etapa de inicializacin
Se crea una versin del sistema. La meta de esta etapa es crear un producto con el que el usuario pueda interactuar, y por ende retroalimentar el proceso. Debe ofrecer una muestra de los aspectos claves del problema y proveer una solucin lo suficientemente simple para ser comprendida e implementada fcilmente. Para guiar el proceso de iteracin se crea una lista de control de proyecto, que contiene un historial de todas las tareas que necesitan ser realizadas. Incluye cosas como nuevas funcionalidades para ser implementadas, y reas de rediseo de la solucin ya existente. Esta lista de control se revisa peridica y constantemente como resultado de la fase de anlisis.
Ciclo de vida
Etapa de iteracin Esta etapa involucra el rediseo e implementacin de una tarea de la lista de control de proyecto, y el anlisis de la versin ms reciente del sistema. La meta del diseo e implementacin de cualquier iteracin es ser simple, directa y modular, para poder soportar el rediseo de la etapa o como una tarea aadida a la lista de control de proyecto. El cdigo puede, en ciertos casos, representar la mayor fuente de documentacin del sistema. El anlisis de una iteracin se basa en la retroalimentacin del usuario y en el anlisis de las funcionalidades disponibles del programa. Involucra el anlisis de la estructura, modularidad, usabilidad, confiabilidad, eficiencia y eficacia (alcanzar las metas). La lista de control del proyecto se modifica bajo la luz de los resultados del anlisis.
Ciclo de vida
Etapa de iteracin Las guas primarias que guan la implementacin y el anlisis incluyen: Cualquier dificultad en el diseo, codificacin y prueba de una modificacin debera apuntar a la necesidad de redisear o recodificar. Las modificaciones deben ajustarse fcilmente a los mdulos fciles de encontrar y a los aislados. Si no es as, entonces se requiere algn grado de rediseo. Las modificaciones a las tablas deben ser especialmente fciles de realizar. Si dicha modificacin no ocurre rpidamente, se debe aplicar algo de rediseo.
Ciclo de vida
Etapa de iteracin Las modificaciones deben ser ms fciles de hacer conforme avanzan las iteraciones. Si no es as, hay un problema primordial usualmente encontrado en un diseo dbil o en la proliferacin excesiva de parches al sistema. Los parches normalmente deben permanecer solo por una o dos iteraciones. Se hacen necesarios para evitar el rediseo durante una fase de implementacin. La implementacin existente debe ser analizada frecuentemente para determinar qu tal se ajusta a las metas del proyecto. Las facilidades para analizar el programa deben ser utilizadas cada vez para ayudar en el anlisis de implementaciones parciales. La opinin del usuario debe ser solicitada y analizada para indicar deficiencias en la implementacin referida por l.
Recomendaciones
Utilizar iteraciones cortas de 2 a 4 semanas incrementa la productividad del proyecto, dado que el equipo trabaja de forma ms eficiente cuando tiene objetivos a corto plazo. Asimismo, con iteraciones cortas la precisin de las estimaciones aumenta. El tamao depende de:
Los condicionantes del proyecto. La necesidad de tener feedback ms o menos rpido. Que no se degrade la relacin trabajo til / gestin operativa (por ejemplo reuniones, actividades necesarias que no producen valor directo, etc.).
Recomendaciones
Utilizar iteraciones regulares, de manera que todas sean un timebox de la misma duracin.
El equipo aprende a calcular la velocidad de desarrollo, la cantidad de trabajo que puede hacer en una iteracin (sin tener que hacer extrapolaciones si las iteraciones no fuesen regulares). El cliente puede proyectar cuantas iteraciones se necesitan para tener cada entrega, en funcin de la velocidad de desarrollo del equipo (el trabajo que pudo completar en iteraciones anteriores del mismo tamao), y tomar decisiones al respecto.
Recomendaciones
Permite gestionar y sincronizar de manera sencilla las necesidades del proyecto con respecto a las de otros proyectos (integracin con el trabajo realizado por otros equipos, comparticin de personas que son difciles de asignar a un nico equipo). Las iteraciones coincidiendo con meses naturales permiten sincronizar el trabajo del equipo con el de otros departamentos y con el resto de la organizacin (por ejemplo, la organizacin puede tener medidas de resultados y objetivos a nivel trimestral o cuatrimestral).