desarrollo adaptativo de software.docx

9
Desarrollo adaptativo de software (DAS) El desarrollo adaptativo de software (DAS) lo propuso Jim Highsmith 1998 como una técnica para construir software y sistemas complejos. Los apoyos filosóficos del DAS se enfocan en la colaboración humana y la organización propia del equipo. Highsmith 1998 expone lo anterior cuando escribe: La organización propia es una propiedad de los sistemas adaptativos complejos, similar a un "aja" colectivo; es en el momento de energía creativa cuando surge la solución a algún problema persistente. La organización propia emerge cuando los individuos, los agentes independientes (células en un cuerpo, especies en un ecosistema, desarrolladores en un equipo de software) cooperan [colaboran] para crear salidas emergentes. Una salida emergente es una propiedad más allá de la capacidad de cualquier agente individual. Por ejemplo, las neuronas individuales del cerebro no poseen conciencia, pero en forma colectiva generan la propiedad de la conciencia. Tendemos a ver este fenómeno del surgimiento colectivo como un accidente, o al menos como independiente y sin reglas. El estudio de la organización propia demuestra que dicha visión es errónea. El desarrollo adaptativo del software (DAS) fue propuestos por Jim Highsmith como una metodología para desarrollar el software y sistemas muy complejos. El se centra en la colaboración humana y la organización del equipo. El ciclo de vida del DAS se conforma de tres fases como muestra en la figura: Especulación, colaboración y aprendizaje.

Upload: marckithoz-colfer

Post on 24-Nov-2015

70 views

Category:

Documents


0 download

TRANSCRIPT

Desarrollo adaptativo de software (DAS)

El desarrollo adaptativo de software (DAS) lo propuso Jim Highsmith 1998 como una tcnica para construir software y sistemas complejos. Los apoyos filosficos del DAS se enfocan en la colaboracin humana y la organizacin propia del equipo. Highsmith 1998 expone lo anterior cuando escribe:

La organizacin propia es una propiedad de los sistemas adaptativos complejos, similar a un "aja" colectivo; es en el momento de energa creativa cuando surge la solucin a algn problema persistente. La organizacin propia emerge cuando los individuos, los agentes independientes (clulas en un cuerpo, especies en un ecosistema, desarrolladores en un equipo de software) cooperan [colaboran] para crear salidas emergentes. Una salida emergente es una propiedad ms all de la capacidad de cualquier agente individual. Por ejemplo, las neuronas individuales del cerebro no poseen conciencia, pero en forma colectiva generan la propiedad de la conciencia. Tendemos a ver este fenmeno del surgimiento colectivo como un accidente, o al menos como independiente y sin reglas. El estudio de la organizacin propia demuestra que dicha visin es errnea.

El desarrollo adaptativo del software (DAS) fue propuestos por Jim Highsmith como una metodologa para desarrollar el software y sistemas muy complejos. El se centra en la colaboracin humana y la organizacin del equipo.El ciclo de vida del DAS se conforma de tres fases como muestra en la figura: Especulacin, colaboracin y aprendizaje.

En la fase de especulacin se inicia el desarrollo del proyecto. En ella se utiliza informacin como la misin del cliente, las restricciones del proyecto y los requisitos bsicos para definir el conjunto de ciclos en el que se harn los incrementos del software.

Para la fase de colaboracin se busca que el equipo no solo se comunique o se encuentre completamente integrados, se desea que exista confianza, donde se puedan realizar crticas constructivas y ayudar si resentimientos, trabajar tan duro como sea posible, comunicar de una forma oportuna los problemas que se presenten para tomar acciones efectivas y poseer un conjunto de actitudes que contribuyan al trabajo que se encuentran realizando.

El aprendizaje permite mejorar el entendimiento real sobre la tecnologa, los procesos utilizados y el proyecto. El aprendizaje individual permite al equipo tener mayor posibilidad de xito. Cada una de estas fases se unen entre si para llevar a cabo diversas funciones, pero en si estas funciones son para sacar adelante un proyecto de software de manera rpida, y trabajando en equipo, para que en un futuro , obtengamos un software eficiente.

El Desarrollo adaptativo del software (ASD) proporciona un marco para el desarrollo iterativo de sistemas grandes y complejos. El mtodo fomenta el desarrollo iterativo e incremental con el uso de prototipos.

ASD resalta que las aproximaciones secuenciales en cascada solo funcionan en entornos bien conocidos. Pero como los cambios ocurren frecuentemente en el desarrollo software, es importante usar un mtodo tolerante a cambios. El primer ciclo de un proyecto ASD suele ser corto, asegurando que el cliente est involucrado y confirmando la viabilidad del proyecto.Cada ciclo termina con una revisin en grupo enfocada al cliente. Durante las reuniones de revisin, se estudia la aplicacin funcionando. El resultado de las reuniones son peticiones de cambio documentadas.Metodologa DAS Desarrollo adaptativo del softwareEl problema con el softwareEl problema con el software es que lleva demasiado tiempo y dinero para desarrollar, y es frgil cuando se utiliza en situaciones para las cuales no fue diseado de manera explcita. Diversas metodologas de diseo de software frente a este problema:1970: la programacin estructurada hace que sea factible construir a gran escala los sistemas de software - siempre y cuando haya una especificacin de los resultados deseados en el inicio del proyecto y el pliego de condiciones rara vez cambia. Una aplicacin tpica es un informe de base de datos del programa por escrito que lee un archivo de entrada y produce un archivo de salida. A esto le llamamos una entrada / salida basada en la aplicacin.1980: Programacin orientada a objetos hace que sea ms fcil para reorganizar cuando cambien las especificaciones, ya que la funcionalidad se divide en clases separadas, que estn diseados para tener una mnima interaccin entre ellos Sin embargo, cada cambio en la especificacin (o para el medio ambiente) requiere la intervencin del programador , con / un costoso rediseo / reimplementar / rebuild retest ciclo Una aplicacin tpica es un sistema de publicacin de escritorio, donde el usuario inicia eventos (clic del ratn, selecciones de men, etc) el clculo de disparo.. Llamamos a esto una solicitud iniciada por el usuario basada en eventos.Hoy: Programacin adaptativa tiene como objetivo el problema de la produccin de aplicaciones que se pueden adaptar fcilmente ante las necesidades cambiantes de los usuarios, los deseos, y el medio ambiente. Esto hace posible para el usuario para cambiar los objetivos sin necesidad de reescribir el programa.A typical application is an information filter which searches the Internet or company intranet for information of personal interest to the reader.Una aplicacin tpica es un filtro de informacin que busca en Internet o intranet de la empresa para obtener informacin de inters personal para el lector.Tenga en cuenta que gran parte de la bsqueda puede continuar cuando el usuario ni siquiera se registran in La aplicacin hace ms en nombre del usuario sin interaccin constante, y la sofisticacin proviene de una divisin de responsabilidades entre el programa y el usuario. A esto le llamamos una aplicacin basada en agentes.Algunos abordar el problema de la gestin del cambio, pero slo la programacin de adaptacin es de anticipar el cambio y automticamente se ocupan de que dentro de un programa en ejecucin, sin necesidad de un programador"El software adaptable utiliza la informacin disponible sobrecambios en su entorno para mejorar su comportamiento. "Adaptive Software DevelopmentJim Highsmith en su libro [Highsmith, 1999] es la mente detrs de este proceso gil. ASD consiste en un cambio de filosofa en las organizaciones pasando de la transicin del modelo Comando-Control al modelo Liderazgo-Colaboracin. Basado en los conceptos de losSistemas Adaptativos Complejosrelacionada con la InteligenciaArtificial, Highsmith lleva los mismos al campo de la Ingeniera de Software en particular. Dada la complejidad inherente al software concluye que la aplicacin de esta teora es esencial para el nuevo escenario que plantea la economa global.

Comenzando por un cambio en el modelo de desarrollo determinista, tomado del ciclo de Deming, en que se aplica la secuencia Planificar-Ejecutar-Evaluar. Dicho esquema es llevado a la prctica con el modelo en cascada, en que se realiza una precisa planificacin inicial mediante el WBS, el Gantt, y el Pert definiendo las tareas a realizar en detalle, luego se tiene las fases de construccin, y finalmente, se tiene el testing que brinda el feedback en relacin al producto construido.

EL PROYECTO COMIENZA CON UNA FASE DE ESPECULACIN.-E n que en que se lleva a cabo la planificacin tentativa del proyecto en funcin de las entregas que se irn realizando. La utilizacin del verbo Especular demuestra el inters de Highsmith en demostrar la naturaleza impredecible de los sistemas complejos. En esta etapa se fija un rumbo determinado a ser seguido en el desarrollo, sabiendo a partir de ese momento que no ser el lugar en que finalizar el proyecto. En cada iteracin, se aprendern nuevas funcionalidades, se entendern viejas cuestiones, y cambiarn los requerimientos.

Gracias a centrarse en la especulacin, ASD permite administrar estos proyectos de alto cambio y rpido desarrollo que se encuentran en elborde del caos. Respecto a la especulacin, se recomienda realizar uncomponent breakdown structureen vez del muy conocido y tradicionalwork breakdown structure (WBS)en el cual mediante una grilla u hoja de clculo se pueda conocer la funcionalidad a ser liberada en cada ciclo.Sin embargo, no es ms que una especulacin ya que el carcter adaptativo del proceso permite pequeas desviaciones en un sentido por lo que Highsmith sugiere que cada ciclo se componga de un mix entre funcionalidades crticas, tiles, y opcionales, previendo los posibles retrasos que puedan existir mediante el movimiento de las funcionalidades de menor prioridad a futuros ciclos y grandes desviaciones en otro, las cuales son utilizadas para la exploracin del dominio y de la aplicacin, que puede llevar a cambiar el rumbo del proyecto estos desvos est representado por las flechas de divergencia en la FiguraLA SIGUIENTE FASE DEL CICLO DE VIDA, COLABORAR, es aquella en la que se construye la funcionalidad definida durante la especulacin. ASD define unComponentecomo un grupo de funcionalidades o entregables a ser desarrollados durante un ciclo iterativo.Durante cada iteracin el equipo colabora intensamente para liberar la funcionalidad planificada. Tambin, existe la posibilidad de explorar nuevas alternativas, realizar pruebas de concepto, pudiendo eventualmente alterar el rumbo del proyecto profundamente. ASD no propone tcnicas ni prescribe tareas al momento de llevar a cabo la construccin simplemente mencionando que todas las prcticas que sirvan para reforzar la colaboracin sern preferidas, siguiendo de esta forma la lnea de las metodologas giles respecto a la orientacin a componentes. El nfasis se ubica en la relaciones entre las personas que deben estar lo suficientemente lubricadas para generar una propiedad imprescindible de los organismos complejos: emergencia. La emergencia es una propiedad de los sistemas adaptativos complejos que crea alguna propiedad ms grande del todo (comportamiento del sistema) a partir de la interaccin entre las partes(comportamiento auto-organizativo de los agentes). Gracias a esta propiedad los grupos de desarrollo logran sacar lo mejor de si en la elborde del caos.LA FASE FINAL DE ASD, APRENDER, consiste en la revisin de calidad que se realiza al final de cada ciclo. En la misma se analizan cuatro categoras de cosas para aprender[Highsmith, 2000]:Calidad del resultado de la desde la perspectiva del clienteCalidad del resultado de la desde la perspectiva tcnicaEl funcionamiento del equipo de desarrollo y las prcticas que este utilizaEl status del proyectoPara evaluar la calidad desde el punto de vista del cliente se sugieren utilizar grupos de enfoque en el cliente, mediante los cuales se explora un modelo de la aplicacin y se anotan los requerimientos de cambio del cliente.Las revisiones al diseo, al cdigo o a las pruebas permitirn aprender sobre la calidad de los mismos. En este caso, el nfasis estar puesto en aprender cuales han sido los errores o desvos y poder resolverlos, y no en encontrar culpables. Asimismo, est es la etapa en que se evaluarn las exploraciones que se hayan realizado dando la capacidad de poder modificar la arquitectura del sistema si se ha encontrado algn camino que se ajusta mejor a lo que necesita el usuario o si han cambiado los requerimientos.El tercer proceso de feedback est relacionado con la interaccin entre las partes, la dinmica de grupo, y las tcnicas empleadas. Para medir la performance y el grado de cohesin del mismo, se podrn realizar al final de cada ciclo pequeas reuniones de postmortem. En las mismas se discuten los aspectos del proceso que contribuyen al desarrollo y aquellos que deben ser descartados por su influencia negativa.En relacin al status del proyecto, se realizarn revisiones para determinar el estado del mismo en relacin a lo planificado. En este momento, se detectarn posibles diferencias que pueden surgir de la exploracin y que cambiarn el rumbo a que apuntaba el proyecto.

En la Figura se puede ver el detalle interno de cada fase como ya fue explicado, mostrndose con una flecha que trasciende las tres fases en sentido inverso, el bucle de aprendizaje. Este bucle es algo crtico para ASD ya que denota un cambio en el esquema tradicional de la vista de un sistema en que se tena un bucle de control para detectar diferencias y corregirlas. Es decir, en las metodologas tradicionales las diferencias respecto a lo planificado eran vistas como errores que deban ser enmendados para que cumplieran lo pautado. ASD y las metodologas giles plantean la necesidad de que el feedback necesario sea para aprender, nos da la posibilidad de entender ms respecto al dominio y construir la aplicacin que mejor satisfaga las necesidades del cliente. Highsmith lo expone claramente en la siguiente frase:En ambientes complejos, el seguir un plan al pie de la letra produce el producto que pretendamos, pero no el producto que necesitamos.

CONCLUSIN,Tenemos en ASD un marco filosfico basado en la teora deSistemas Adaptativos Complejosque nos permite encarar la construccin de software en forma gil utilizandolas prcticas que nos resulten convenientes en cada caso. En este sentido resulta similar a Scrum.