Desarrollo Adaptativo de Software

22
Universidad Nacional del Altiplano – Puno Facultad De Ingeniería Mecánica Eléctrica, Electrónica Y Sistemas Escuela Profesional De Ingeniería De Sistemas Ingeniería de Software Monografía: Desarrollo Adaptativo de Software Docente: Ing. Elmer COYLA IDME Alumnos: ROMERO ALMONTE, Yoel Diomedez

description

Método DAS, Desarrollo Ágil de Software

Transcript of Desarrollo Adaptativo de Software

Universidad Nacional del Altiplano Puno

Facultad De Ingeniera Mecnica Elctrica, Electrnica Y SistemasEscuela Profesional De Ingeniera De Sistemas

Ingeniera de Software

Monografa: Desarrollo Adaptativo de Software

Docente:Ing. Elmer COYLA IDME

Alumnos:ROMERO ALMONTE, Yoel DiomedezVARGAS CAMACHO, Juan Carlos

Puno Per2015Desarrollo adaptativo de software

Breve Historia

Para muchas personas el software son solo programas de computadora, sin embargo nos comenta que son todos aquellos documentos asociados a la configuracin de datos que se necesitan para hacer que estos programas operen de manera adecuada. Estos productos de software se desarrollan para algn cliente en particular o para un mercado en general. Para el diseo y desarrollo de proyectos de software se aplican metodologas, modelos y tcnicas que permiten resolver los problemas. En los aos 50 no existan metodologas de desarrollo, el desarrollo estaba a cargo de los propios programadores. De ah la importancia de contar con analistas y diseadores que permitieran un anlisis adecuado de las necesidades que se deberan de implementar.Aun as los resultados eran impredecibles, no se saba la fecha exacta en que concluira un proyecto de software, no haba forma de controlar las actividades que se estaban desarrollando. Tampoco se contaba con documentacin estandarizada. El nacimiento de tcnicas estructuradas es lo que da origen al desarrollo de aplicaciones a travs de mtodos de ingeniera. La informtica aporta herramientas y procedimientos que se apoyan en la ingeniera de software con el fin de mejorar la calidad de los productos de software, aumentar la productividad y trabajo de los ingenieros desarrolladores de software, facilitar el control del proceso de desarrollo de software y suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.El objetivo principal que busca la ingeniera de software es convertir el desarrollo de software en un proceso formal, con resultados predecibles, que permitan obtener un producto final de alta calidad y satisfaga las necesidades y expectativas del cliente. A partir de aqu nacen muchas modelos y metodologas para el desarrollo de software.El desarrollo adaptativo de software ASD (por sus siglas en ingls) fue creada por Jim Highsmith en 1998 como una metodologa para desarrollar software y sistemas complejos, que se describe en su libro de 1999 Adaptive Software Development. Un enfoque de desarrollo gil y adaptativo basado en la colaboracin es " una fuente de orden en las complejas interacciones entre disciplina e ingeniera".1) Especulacin; en esta fase se inicia el proyecto y se conduce el ciclo adaptativo de planeacin. Este ltimo utiliza informacin de inicio del proyecto, es decir, el enunciado de la misin del cliente, restricciones del proyecto y los requisitos bsicos. Esto permite definir el conjunto de ciclos de lanzamiento que se requerirn para el proyecto.

2) Colaboracin; la gente motivada trabaja de una forma que multiplica su talento y sus salidas creativas ms all de sus nmeros absolutos. Este enfoque de colaboracin es un tema recurrente en todos los mtodos giles, pero la cooperacin no es fcil. No solamente es la comunicacin, o que la comunicacin es parte de ella. No slo es un asunto de trabajo en equipo, aunque un equipo cuajado es esencial para la presencia de la colaboracin real. No es un rechazo al individualismo ya que la creatividad individual representa un papel importante en el pensamiento de colaboracin. Esto es, por encima de todo, una cuestin de confianza. Las personas que trabajan juntas deben confiar entre s para:a) Criticar de forma constructivab) Ayudar sin resentimientosc) Trabajar ms duro de lo que ya lo haced) Tener el conjunto de actitudes para contribuir al trabajo cursoe) Comunicar los problemas o preocupaciones en una forma que conduzca a la accin efectiva3) Aprendizaje; como miembros de un equipo de DAS se comienzan a desarrollar los componentes integrantes de un ciclo adaptativo, la importancia radica en el aprendizaje y en el progreso a travs de un ciclo completo. De hecho Highsmith argumenta que los desarrolladores de software a menudo sobreestima su comprensin (de la tecnologa, el proceso y el proyecto), y que el aprendizaje les podr ayudar a mejorar su grado de entendimiento real. Los equipos del DAS aprenden de tres maneras:

a) Grupos enfocados. El cliente o los usuarios finales proporcionan retroalimentacin sobre los incrementos de software que se entregan. Esto indica en forma directa la satisfaccin o la insatisfaccin de las necesidades del negocio.

b) Revisiones tcnicas formales. Los miembros del equipo del DAS revisan los componentes del software desarrollado mientras mejoran su calidad y su aprendizaje.

c) Post mortem. El equipo de DAS se vuelve introspectivo al vigilar su propio desempeo y proceso con el propsito de aprender acerca de su enfoque y despus mejorarlo.

Es importante destacar que la filosofa del DAS es meritoria sin importar el modelo del proceso empleado. La dinmica de la organizacin propia los equipos, la colaboracin interpersonal y el aprendizaje individual conducen a los grupos de proyectos de software con una mayor posibilidad de xito.Los apoyos filosficos del ASD se enfocan en la colaboracin humana y la organizacin propia del equipo.

DefinicionesLos procesos de desarrollo del software basados en una completa especificacin de los requerimientos, diseo, construccin y pruebas del sistema no se ajustan al desarrollo rpido de aplicaciones. Cuando los requerimientos cambian o se descubren problemas con ellos, el diseo o implementacin del sistema se tiene que volver a realizar o probar. Como consecuencia, normalmente se prolonga en el tiempo un proceso en cascada convencional y el software definitivo se entrega mucho tiempo despus al cliente con el que inicialmente se pact. En un entorno de negocios tan cambiante, esto puede causar verdaderos problemas. Para cuando est disponible el software, la razn original de su adquisicin puede ser que haya cambiado de forma radical que en realidad ste sea intil.Actualmente los negocios operan en un entorno global que cambia rpidamente. Tienen que responder a nuevas oportunidades y mercados, condiciones econmicas cambiantes y la aparicin de productos y servicios competidores. El software es parte de casi todas las operaciones de negocio, por lo que es fundamental que el software nuevo se desarrolle rpidamente para aprovechar nuevas oportunidades y responder a la presin competitiva. Actualmente el desarrollo y entrega de manera rpida son los requerimientos ms crticos de los sistemas. De hecho, muchas organizaciones estn dispuestas a obtener una prdida en la calidad del software y en el compromiso sobre los requerimientos en favor de una entrega rpida del software. Esta entrega rpida del software necesita otra metodologa llamada Desarrollo de Software Ligeras, que luego fueron llamadas giles.Dicha metodologa combina una filosofa y un conjunto de directrices de desarrollo. La filosofa busca la satisfaccin del cliente y la entrega temprana de software incremental, equipos pequeos con alta motivacin, mtodos informales y una simplicidad general del desarrollo. Los procesos de desarrollo rpido de software estn diseados para producir software til de forma rpida. Generalmente, son procesos interactivos en los que se entrelazan la especificacin, el diseo, el desarrollo y las pruebas.Como habamos dicho Jim Highsmith 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 los Sistemas Adaptativos Complejos relacionada con la Inteligencia Artificial, 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.Barry Boehm indica que las actividades se conforman en una espiral, en la que cada bucle o iteracin representa un conjunto de actividades. Las actividades no estn fijadas a ninguna prioridad, sino que las siguientes se eligen en funcin del anlisis de riesgo, comenzando por el bucle interior.Sin embargo, Ikujiro Nonaka e Hirotaka Takeuchi, definen a los marcos de desarrollo giles denotan, adoptar una estrategia de desarrollo incremental, en lugar de la planificacin y ejecucin completa del producto. Basar la calidad del resultado ms en el conocimiento tcito de las personas en equipos auto-organizados, que en la calidad de los procesos empleados. Junto con el solapamiento de las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo secuencial o de cascada.Por otro lado, Kent Beck, nos dice que una metodologa gil se debe basar en los valores de simplicidad, comunicacin, retroalimentacin (feedback) coraje y respeto. Con estos valores creen que ser capaz de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximacin mejor y ms realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos despus en controlar los cambios en los requisitos.Al final tendremos un ciclo basado en Deming, el cual tendr comenzar por hacer un cambio en el modelo de desarrollo determinista, tomado dicho ciclo, en que se aplica la secuencia Planificar-Ejecutar-Evaluar. Tal 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.

Caractersticas

Fases

Highsmith argumenta que un enfoque de desarrollo adaptativo basado en la colaboracin es tanto una fuente de orden en nuestras complejas interacciones, como de disciplina e ingeniera. El define un ciclo de vida del ASD que incorpora tres fases: especulacin, colaboracin y aprendizaje.

Especulacin, se inicia el proyecto y se lleva a cabo la planeacin adaptativa del ciclo. La especulacin emplea la informacin de inicio del proyecto, enunciado de misin de los clientes, restricciones del proyecto y requerimientos bsicos para definir el conjunto de ciclos de entrega (incrementos de software) que se requerirn para el proyecto Colaboracin, las personas motivadas la usan de manera que multiplica su talento y produccin creativa, sin embargo, la colaboracin no es fcil, incluye la comunicacin y el trabajo en equipo, pero tambin resalta el individualismo porque la creatividad individual desempea un papel importante en el pensamiento colaborativo. Es cuestin, sobre todo de confianza.Aprendizaje, conforme los miembros de un equipo ASD comienzan a desarrollar los componentes que forman parte de un ciclo adaptativo, el nfasis se traslada al aprendizaje de todo lo que hay en avance hacia la terminacin del ciclo.En resumen tendramos la figura siguiente; en la cual 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:

Ventajas y Desventajas

Ventajas

Desventajas

Se utiliza para poder aprender de los errores e iniciar nuevamente el ciclo de desarrollo.

Utiliza informacin disponible acerca de todos los cambios para poder mejorar el comportamiento del Software.

Difunde la colaboracin de distintas personas. Los errores y cambios que no son detectados con anterioridad afectan la calidad del producto y su costo total.

Ya que esta es una metodologa gil, no permite realizar procesos que son requeridos en las metodologas tradicionales.

Casos de xitoUno de los casos ms notables del xito de esta metodologa en el mundo actual es en el de las telecomunicaciones. A pesar de que la tecnologa aqu empleada no cumple con los sueos y visiones de los hombres de antes, se tiene un acercamiento cada vez ms cercano a las visiones e imaginaciones de los mismos realizadores de pelculas futuristas de los aos 70. Una gran desventaja que se tiene es el cambio relativamente brusco de la tecnologa en estos das. Se tiene as que pues mientras tengamos una computadora de cinco ncleos de procesamiento, maana saldr una de once. Dejando, no tanto como obsoleta nuestra mquina sino que esta pasar a ser una que ya no est en el filo de la tecnologa de la noche a la maana. Lo mismo pasa con los celulares, tablets, y dems artefactos de tecnologa que tengamos. Pasarn a la historia de la noche a la maana. Esto hace que nuestro mundo cambiante, sea netamente impredecible, pues por ms actualizados que seamos en este tema de la tecnologa, no podremos estar al tanto de lo que cada compaa tecnolgica haga. Por ende, al desarrollar un sistema, y que este cumpla con los requerimientos que satisfagan al cliente, sea en la tecnologa que apliquemos, necesitamos estar frente al cambio no como un objeto evolutivo, ms sino como uno adaptable. Es en esto que debemos de someternos al cambio y a la metamorfosis constante de la tecnologa sin sufrir prdidas. Esto nos lleva a que la idea de un software que desarrollemos no cambie segn el tiempo, sino esta se mantenga y mediante los componentes necesarios sea lo suficientemente flexible y logre adaptarse netamente a los cambios que el maana depare.Los casos de xito que se tiene en la aplicacin de esta metodologa es los sitemas operativos Android y de iPhone, siendo el primero el que mayor adaptabilidad ha sufrido, debido a que al ser ms aplicado a dispositivos mviles, necesitar ser ms adaptable, ya que la tecnologa en estos dispositivos como fue mencionado anteriormente est disparada.Citando el siguiente prrafo de Metodologa de desarrollo gil para sistemas mviles Introduccin al desarrollo con Android y el iPhone (Paco Blanco, Julio Camarero,etc.), tenemos, que a medida que el negocio de las aplicaciones mviles se va expandiendo y hacindose rentable, se tienen que investigar las metodologas ptimas de desarrollo software para tales aplicaciones y entornos que lleven dicho desarrollo a xito de una forma tractiva y eficiente; todo esto antes de que sea demasiado tarde y que el mercado est tan maduro que las empresas hayan optado por las metodologas ya implementadas de software tradicional. Aunque stas difieran bastante de las metodologas necesarias debido a que el software mvil debe satisfacer requerimientos y restricciones especiales. A pesar de estas caractersticas tan especiales, el software producido debe exigir un alto nivel de calidad para que este puede operar propiamente en la cantidad ingente de terminales que llenan el mercado actual y el venidero. El desarrollador de aplicaciones mviles se enfrenta, adems, con un escenario muy fragmentado, formado por multitud de plataforma incompatibles, como Symbian, Windows Mobile, Brew, iPhone SDK, Android, Linux o Java. Todo esto hace que el proceso de desarrollo para plataformas mviles sea ms complejo.Entonces es entendido que es necesario no un cambio de una idea, sino, su adaptacin al cambiante mundo tecnolgico hoy en da.Otro ejemplo dado es el del caso del navegador Opera. Opera es un navegador web creado por la empresa noruega Opera Software, que e usa el motor de renderizado Blink. Este navegador tiene versiones para computadoras de escritorio, telfonos mviles y tabletas. Los sistemas operativos compatibles con Opera de escritorio son Microsoft Windows, Mac OS X y GNU/Linux (Ubuntu 64-bit). Los sistemas operativos mviles soportados son Maemo, BlackBerry, Symbian, Windows Mobile, Windows Phone, Android e iOS; as como la plataforma Java ME. Existe tambin una suite de Internet antigua de Opera, basada en el motor Presto, que an sigue recibiendo soporte de seguridad a pesar de ser ya casi obsoleto. Opera ha sido pionero en originar caractersticas que han sido posteriormente adoptadas por otros navegadores web, como por ejemplo el Acceso Rpido (Speed Dial). Eso tiene que ser tomado en cuenta, debido a que su adaptabilidad es clara. El navegador no sufri cambio en su idea original sino en su cambio de plataforma. Usa la menor cantidad de transferencia de datos para que su desempeo sea rpido. Y en comparacin de navegadores grandes como el Chrome o el Safari, se pierden detalles como fuentes especiales que los diseadores web pusieron en sus pginas, pero frente a las necesidades de lugares como Per, por ejemplo, en donde el ancho de lnea no es del todo eficiente, hace que el navegador cumpla su objetivo sin complicaciones. Lo que se debe tener en cuenta es lo resaltante de la adaptabilidad del software en el entorno tecnolgico hoy en da. Si este es testeado en una tablet moderna, as como en un celular con Android o en un Blackberry de hace ms de cinco aos, el desempeo ser el mismo (las diferencias de velocidad sern determinadas por la mquina al final).

Papers en ObservacinMetodologas tradicionales vs Metodologas giles. Roberth G. Figueroa , Camilo J. Sols, Armando A. Cabrera. Universidad Tcnica Particular de Loja, Escuela de Ciencias en ComputacinResumen: En conclusin general es indicado que el papel preponderante de las metodologas es sin duda esencial en un proyecto y en el paso inicial, que debe encajar en el equipo, guiar y organizar actividades que conlleven a las metas trazadas en el grupo. En el trabajo presentado en este paper se detallan los dos grandes enfoques, tanto metodologas tradicionales y metodologas giles, indicando as que las primeras metodologas estn pensadas para el uso exhaustivo de documentacin durante todo el ciclo del proyecto mientras que las segundas ponen vital importancia en la capacidad de respuesta a los cambios, su adaptacin, la confianza en las habilidades del equipo y al mantener una buena relacin con el cliente. Son explicadas tambin las diferencias, ventajas, desventajas y cual puede encajar en un proyecto de software. Adems de que los autores plantean al final una cuestin al lector de poder decidir su respuesta frente a lo que cree que es conveniente para el desarrollo de software.Comparative Study on Agile software development methodologies. A B M Moniruzzaman y Dr Syed Akhter Hossain.Resumen: Plantea que frente al cambio constante de los requerimientos y los ajustes de los nuevos ambientes, adems de las demandas para la entrega de software en el mundo actual, se debe tener en cuenta que las metodologas tradicionales no colaboran al cambio real del mundo actual. En torno a satisfacer las necesidades de los cliente, se tienen que tener en cuenta mtodos basados en procesos de desarrollo que sean iterativos e incrementales, donde los requerimientos y el desarrollo evolucionen a travs de a colaboracin y organizacin de equipos que permitan la entrega rpida de un sistema de alta calidad que pueda encontrar el cliente para que este en s quede satisfecho. Este sistema tambin se debe acomodar a los cambios de los requerimientos que el cliente objete durante todo el proceso de su desarrollo. El paper describe las mejoras que los procesos giles permiten en comparacin a las metodologas tradicionales. Adems de que indica que las metodologas giles surgen como una alternativa a los mtodos basados en un slo plan de los sistemas tradicionales adems de proveer un profundo entendimiento de los ms resaltantes beneficios que se aplican en la industria del desarrollo de software.

ResumenEn el desarrollo de software hay una tensin entre la calidad, costo y tiempo. Dejando atrs la competencia de costos en la actualidad en los restringidos mercados es una tarea muy difcil. Muchos procesos tradicionales para el desarrollo de software son muy pesados con la documentacin y el control de los mecanismos suele ser muy rgido, haciendo que sea difcil su aplicacin a diversos proyectos. Nuevas familias de procesos, referidos como Procesos giles, estn, o bueno son, aplicados ahora a la industria de software. Estos procesos se basan en un cdigo ms que en la documentacin llamndose as giles, porque, en comparacin de los procesos tradicionales, son adaptables y no rgidos.Una de las metodologas de estos procesos es el Adaptive Software Development, Desarrollo Adaptativo de Software (ASD en adelante), desarrollado por Jim Highsmith. A pesar de que no se proveen los detalles generalmente asociados con el proceso. Los hitos, mtodos y derivados no son los elementos especficos discutidos por el ASD. En vez de eso, el ASD pone en nfasis la aplicacin de ideas originadas en los complejos sistemas adaptativos. El ASD provee la base fundamental para desarrollar sistemas adaptativos de los cuales surgen los sistemas giles.Tomando esto es entendido que el ncleo del ASD es la premisa que resulta y es naturalmente impredecible, y sin embargo, su planeamiento es paradjica. Esto nos hace entender que no es posible planear un movimiento rpido e impredecible en el ambiente de los negocios. El desarrollo adaptativo es esencial cuando se tiene a los desarrolladores, clientes, vendedores, competidores y accionistas todos juntos intentado interactuar uno con otro para lidiar con las reglas de causa y efecto que no pueden asegurar un xito. El ASD reemplaza el ciclo de vida evolucionario con un modelo de ciclo de vida adaptativo. Como se tiene abajo.Comparando esos dos modelos, el ASD reconoce que no es deseable el cmo experimentar constantemente esperando encontrar xito. Por otro lado, la palabra planeamiento es demasiado determinstica para nuestro mundo impredecible, as que el ASD prefiere la palabra Especular. Desarrollar una idea de adnde nuestro proyecto es dirigido, y poner los mecanismos en el lugar correcto para adaptarlo a los cambios que los clientes necesiten, cambiando tambin la tecnologa y el mercado.La colaboracin reemplaza el desarrollo, porque, segn el ASD, se tiene que las personas son el ingrediente esencial para producir un producto que sea meramente exitoso. La colaboracin es el balance de las actividades: administrando un proyecto como el control de las configuraciones y el cambio administrativo, con la creatividad de las personas de confianza para poder encontrar respuestas creativas en un entorno impredecible; y al final completando el ciclo con el debido aprendizaje.El aprendizaje es preferido sobre la revisin o la modificacin, por que la revisin es mirar hacia atrs. La revisin en el contexto del ciclo de vida evolucionario implica que mientras es necesario un cambio este es un cambio en el plan original. El Aprendizaje, sin embargo, es el acto de ganar ms experiencia. Poniendo el producto bajo el escrutinio y la inquisicin de todas las previas conjeturas, usando los resultados del ciclo para poder aprender qu direccin el siguiente ciclo debe tomar. El ASD no es presentado como una metodologa de hacer proyectos de software pero ms es como un alcance de una actitud que debe ser adoptada por una organizacin cuando aplica procesos giles. Adoptando la premisa de que este mundo est en ritmo constantemente acelerado e impredecible requiriendo procesos adaptativos para ser completos y exitosos. En fin este es el mensaje que dej Jim Highsmith.

Referencias

Bruegge, B., Dutoit, A.H., Ingeniera del Software Orientado a Objetos, cap. 1 Juan F. Ingls-Romero y Cristina Vicente-Chicote, Desarrollo de Software Adaptativo para Robtica, Divisin de Sistemas e Ingeniera Electrnica (DSIE). Universidad Politcnica de Cartagena Jacobson, I., Booch, G., Rumbaugh, J., El Proceso Unificado de Desarrollo de Software, cap. 1 Pressman, R.S., Ingeniera del Software. Un enfoque prctico, cap. 1 y 2 Sommerville, I., Ingeniera de Software, cap. 1, 2 y 3 Everette R. Keith, Agile Software Development Processes A Different Approach to Software Design

Referencias Web Metodologa DAS Desarrollo adaptativo del software. Noviembre del 2011.http://inf162expogrupo10-2011.blogspot.com/2011/11/metodologia-das-desarrollo-adaptativo.html

Desarrollo adaptativo de software (DAS), Junio del 2011.http://desarrolloadaptativodesoftware.blogspot.com/2011/06/desarrollo-adaptativo-de-software-das.html

Jos Luis Cendejas Valdz (CV), Implementacin Del Modelo Integral Colaborativo (Mdsic) Como Fuente De Innovacin Para El Desarrollo gil De Software En Las Empresas De La Zona Centro - Occidente En Mxico, Noviembre del 2013. http://www.eumed.net/tesis-doctorales/2014/jlcv/software.htm