You are on page 1of 68

AGENDA

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).

Modelados de proceso de software


La metodologa utilizada para mejorar el proceso que se sigue en el curso de ingeniera de software contempla las etapas de definicin, captura, evaluacin, rediseo y ejecucin (Wastell, White y Kawalek 1994; Caputo, 1998; Arthur, 1992; Sommerville, 1995; Warboys et al., 1999).

Modelados de proceso de software


La fase de definicin establece los objetivos de un proceso, se limita las fronteras, seala las entradas y salidas principales, indica los clientes que se benefician; y los proveedores de entradas. La fase de representacin y captura modela el proceso e manera detallada, partiendo de la informacin obtenida de entrevistas, revisin de documentos y planes para generar una representacin grfica del proceso.

Modelados de proceso de software


La etapa de evaluacin analiza y evala el proceso con el propsito general de buscar debilidades y problemas referentes a la inefectividad o ineficiencia para lograr las metas del proceso establecidas.

Modelados de proceso de software


Los resultados obtenidos de la evaluacin facilitan el rediseo del proceso, en el que se utiliza un lenguaje de modelado comprensible para los usuarios del proceso. El proceso rediseado se pone en marcha en la organizacin para comprobar que realmente satisface las metas establecidas.

Modelados de proceso de software


En el modelado de procesos se contemplan cuatro aspectos:
funcional, desempeo, organizacional e informativo (Curtis, Kellner y Over,1992).

Modelados de proceso de software


En el aspecto funcional se consideran las actividades del proceso que estn siendo ejecutadas y los flujos de entidades (documentos) ms relevantes.

Modelados de proceso de software


En el aspecto de comportamiento o desempeo se presta atencin al tiempo en que se realizan las actividades, as como al modo en que se efectan (condiciones, secuencia e iteraciones).

Modelados de proceso de software


La vista organizacional del proceso se enfoca en el lugar fsico, dentro de la organizacin donde se realizan las actividades y en la persona que tiene la responsabilidad de efectuarlas. Por ltimo, el aspecto informativo aborda el aporte de los documentos en la coordinacin y comunicacin entre las funciones.

Modelados de proceso de software


La descripcin de un proceso puede tomar muchas formas y es posible usar un lenguaje grfico para exponerlo. Los modelos grficos ayudan a representar el proceso en estudio al disminuir la complejidad, propiciar un entendimiento comn entre los participantes y permitir el estudio de alternativas (Miers, 1996); tambin, se pueden utilizar para influenciar, controlar y dirigir lo que acontece en el mundo real (Warboys et al. 1999).

Modelados de proceso de software


En el contexto organizacional, permiten la captura del comportamiento del proceso para su anlisis posterior y tambin actan como depsitos del conocimiento de la organizacin con el fin de facilitar el aprendizaje acerca de la organizacin y sus procesos (Ould, 1995).

Modelados de proceso de software


La tcnica para elaborar los diagramas del proceso de desarrollo de software en estudio fue la Role Activity Diagram (RAD). Esta tcnica describe al proceso desde el punto de vista de roles (Ould, 1995).

Modelados de proceso de software


Quienes ocupan los roles ejecutan actividades y toman decisiones de acuerdo con las reglas de la organizacin; pueden realizar las actividades en paralelo y tener interacciones con otras funciones mientras progresa el trabajo con el fin de alcanzar las metas del proceso.

Modelados de proceso de software


Las acciones pueden incluir el uso o produccin de informacin o documentos. En la mayora de los casos, el proceso de modelado conduce a la identificacin inmediata de opciones de rediseo (Miers, 1996).

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

VIDEOS Conflictos Y TRaBAJO EN EQUIPO

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.

El producto y el proceso de la Ingeniera del Software


El software de computadora es el producto que disean y construyen los ingenieros del software. Esto abarca programas que se ejecutan dentro de una computadora de cualquier tamao y arquitectura, documentos que comprenden formularios virtuales e impresos y datos que combinan nmeros y texto y tambin incluyen representaciones de informacin de audio, vdeo e imgenes.

El producto y el proceso de la Ingeniera del Software


El producto Conduce a la toma de decisiones comerciales. Sirve para la investigacin cientfica moderna y de resolucin de problemas de ingeniera. Es el factor clave que diferencia los productos y servicios modernos. Est inmerso en sistemas de todo tipo: de transportes, mdicos, de telecomunicaciones, militares, procesos industriales, entretenimientos, productos de oficina, la lista es casi interminable. A medida que nos adentremos en el siglo XXI, ser el que nos conduzca a nuevos avances en todo, desde la educacin elemental a la ingeniera gentica.

El producto y el proceso de la Ingeniera del Software


Los ingenieros de software lo construyen, y virtualmente cualquier persona en el mundo industrializado lo utiliza bien directa o indirectamente. Es importante porque afecta muy de cerca de cualquier aspecto de la vida y est muy extendido en el comercio, altura y en las actividades cotidianas. Los pasos es construir software de computadora como construimos cualquier otro producto, aplicando un proceso que conduce a un resultado de alta calidad que satisface las necesidades de la gente que usar el producto. Debes aplicar un enfoque de ingeniera de software.

El producto y el proceso de la Ingeniera del Software


Desde el punto de vista de un ingeniero de software, el producto obtenido son los programas, documentos y los datos que configuran el software de computadora. Pero desde el punto de vista de los usuarios el producto obtenido es la informacin resultante que hace de algn modo el mundo mejor a los usuarios.

El producto y el proceso de la Ingeniera del Software


El proceso
El proceso es un dilogo en el que se rene el conocimiento y se incluye en el software para convertirse en software. El proceso proporciona una interaccin entre los usuarios y los diseadores, entre los usuarios y las herramientas de desarrollo, y entre los diseadores y las herramientas de desarrollo.

El producto y el proceso de la Ingeniera del Software


Cuando trabaja para construir un producto o un sistema, es importante seguir una serie de pasos, una gua que le ayude a obtener el resultado oportuno de calidad. Esta gua a seguir es llamado proceso del software.

El producto y el proceso de la Ingeniera del Software


Lo construyen los ingenieros del software y sus gestores adaptan el proceso a sus necesidades. Adems las personas que han solicitado el software tienen un papel a desempear en el proceso del software. Es importante porque proporciona estabilidad, control y organizacin a una actividad si no se controla se vuelve crtica.

El producto y el proceso de la Ingeniera del Software


Desde el punto de vista de un ingeniero de software, los productos obtenidos son programas, documentos y datos que se producen como consecuencia de las actividades de ingeniera del software definidas por el proceso.

El producto y el proceso de la Ingeniera del Software


Hay una cantidad de mecanismos de evaluacin del proceso del software que permiten a las organizaciones determinar la madurez de su proceso del software. Sin embargo, la calidad, oportunidad y viabilidad a largo plazo del producto que est construyendo son los mejores indicadores de la eficiencia del proceso que estamos utilizando.

Modelos de desarrollo de software


Existen varios modelos, en los cuales se apoya la ingeniera de software para la construccin, entre ellos se puede citar:
Modelo en cascada (modelo tradicional) Desarrollo iterativo y creciente o Iterativo e Incremental Modelo de prototipos Modelo espiral Desarrollo por etapas Modelo de desarrollo rpido de aplicaciones (Rapid application Development RDA o DRA) Desarrollo concurrente

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.

Diseo del Sistema


Descompone y organiza el sistema en elementos que puedan elaborarse por separado, aprovechando las ventajas del desarrollo en equipo. Como resultado surge el SDD (Documento de Diseo del Software), que contiene la descripcin de la estructura relacional global del sistema y la especificacin de lo que debe hacer cada una de sus partes, as como la manera en que se combinan unas con otras.

Diseo del Sistema


Es conveniente distinguir entre diseo de alto nivel o arquitectnico y diseo detallado. El primero de ellos tiene como objetivo definir la estructura de la solucin identificando grandes mdulos y sus relaciones. Con ello se define la arquitectura de la solucin elegida. El segundo define los algoritmos empleados y la organizacin del cdigo para comenzar la implementacin.

Diseo del Programa


Es la fase en donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario as como tambin el anlisis necesario para saber que herramientas usar en la etapa de Codificacin.

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.

Ciclo de vida iterativo e incremental


El ciclo de vida iterativo e incremental es una de las prcticas fundamentales de un proyecto gil. En este tipo de ciclo de vida, se va liberando parte del producto (prototipos) peridicamente mediante iteraciones o ciclos de desarrollo.

Ciclo de vida iterativo e incremental


Frente al ciclo de vida en cascada, el paradigma gil recomienda el uso de otro tipo de ciclo de vida: el iterativo e incremental. Si en un ciclo de vida en cascada las fases del ciclo de vida (requisitos, anlisis, diseo, etc.) se realizan (en teora) una nica vez, y el inicio de una fase no comienza hasta que termina la fase que le precede, en un ciclo de vida iterativo e incremental se va liberando parte del producto (prototipos) peridicamente, en cada iteracin.

Ciclo de vida iterativo e incremental


En lugar de una nica fase final de elaboracin del producto, en el ciclo de vida iterativo e incremental hay mltiples fases intermedias (tantas como iteraciones), en las que se elabora parte del producto (prototipo); cada prototipo incrementa la funcionalidad y mejora al anterior; cada iteracin hace crecer y mejorar el producto. El producto se desarrolla por ciclos (iteraciones).

Ciclo de vida iterativo e incremental


Con la creciente popularidad de los mtodos giles en muchas ocasiones se cree que el ciclo de vida iterativo e incremental es una prctica moderna, nueva frente al antiguo ciclo de vida en cascada.

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.

Ventajas del ciclo de vida iterativo e incremental


Las ventajas que ofrece un ciclo de vida iterativo e incremental son varias. Adems de intentar evitar todos los problemas que vimos en la leccin anterior con el ciclo de vida en cascada, te dejamos algunas ms: Visin de avance en el desarrollo, viendo trabajo operativo real desde etapas inciales del ciclo de desarrollo. Obtencin del feedback del usuario sobre un prototipo operativo. As puede orientar el desarrollo hacia el cumplimiento de sus necesidades, y realizar todas las adaptaciones identificadas para cumplir con los objetivos planteados.

Ventajas del ciclo de vida iterativo e incremental


Permite manejar el riesgo del proyecto, apuntando a la resolucin de los problemas por partes, y no caer en el sper anlisis del producto. El aprendizaje y experiencia del equipo iteracin tras iteracin sobre un prototipo operativo, lo que mejora exponencialmente el trabajo, aumenta la productividad y permite optimizar el proceso en el corto plazo.

Debilidades de este modelo de desarrollo


Requiere de un cliente involucrado durante todo el curso del proyecto. Hay clientes que simplemente no estarn dispuestos a invertir el tiempo necesario. Infunde responsabilidad en el equipo de desarrollo al trabajar directamente con el cliente, requiriendo de profesionales sobre el promedio.

Debilidades de este modelo de desarrollo


Sufre fuertes penalizaciones en proyectos en los cuales los requerimientos estn previamente definidos, o para proyectos "todo/nada" en los cuales se requiere que se completen en un 100% el producto para ser implementado (por ejemplo, licitaciones)otro punto muy importante es asegurarnos de que el trabajo se pueda cumplir tomando en cuenta los costos que podamos usar en nuestros propios recursos

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).

You might also like