Metodologías Para El Desarrollo Del Software Resumen En ingeniería de software es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información. Algunas de las metodologías metodologías tradicionales más utilizadas utilizadas para el desarrollo de software han sido, la denominada “proceso personal de software !"!#$ y la “proceso en e%uipo para el software &"!$. El &"! es una metodología para dirigir el desarrollo de software además de establecer un entorno donde el trabajo efecti'o de e%uipo sea normal y natural. En donde in'olucra a los ingenieros a desarrollar un trabajo en e%uipo, esta estrategia fue propuesta por (. Edwards )eming, con las etapas de planear, hacer, hacer, 'erificar y actuar y por *.+. *uran. El &"! contempla dos componentes principales -# reación de e%uipo /# &rabajo en e%uipo o componente de gestión. El objeti'o del !"! es poner a los profesionales de software a cargo de su trabajo y para %ue se sientan personalmente responsables de la calidad de los productos %ue producen. !"! puede trabajar a la par con los objeti'os de la metodología &"!# son -# !roporcionar un entorno de e%uipo %ue apoya el trabajo de la !"! /# onstruir y mantener un e%uipo auto dirigido. 0na metodología de desarrollo de software se refiere a un framewor1 %ue es usado para estructurar, planear planear y controlar el proceso de desarrollo en sistemas de información. El framewor1 para metodología de desarrollo de software consiste en 20na filosofía de desarrollo de programas de computación con el enfo%ue del proceso de desarrollo de software. 23erramientas, modelos y m4todos para asistir al proceso de desarrollo de software. 5ínea del &iempo +etodologías de )esarrollo de "oftware. El desarrollo de los sistemas tradicionales de ciclo de 'ida se originó en la d4cada de -678 donde la idea principal era continuar el desarrollo de los sistemas de información en torno a las acti'idades resueltas pesadas para el procesamiento de datos y rutinas de cálculo.
-698 : :
!rogramación estructurada desde -676 !rogramación estructurada *ac1son desde -69;
-6<8 : : :
"tructured "ystems Analysis and )esign +ethodology ""A)+# desde -6<8 "tructured Analysis and )esign &echni%ue "A) desde -6<8 =ngeniería de la información =E>=E+# desde -6<-
-668 : : : : :
?apid application de'elopment ?A)# desde -66-. !rogramación orientada a objetos @@!# a lo largo de la d4cada de los 68s Birtual finite state machine BC"+# desde -668s )ynamic "ystems )e'elopment +ethod desarrollado en 0D desde -66;. "crum desarrollo#, en la ltima parte de los 68s
Fue'o milenio : : : : :
!rogramación eGtrema desde -666 Enterprise 0nified !rocess E0!# eGtensiones ?0! desde /88/ ?ational 0nified !rocess ?0!# desde /88H. onstructionist design methodology )+# desde /88I por Dristinn ?. &hórisson Agile 0nified !rocess A0!# desde /88; por "cott Ambler : &ipos )e +etodologías +etodologías tradicionales
)esarrollo de sistemas de *ac1son *")#Es un m4todo desarrollado %ue cubre el ciclo de 'ida del software pude ser directo o %ue pro'ee un framewor1 con t4cnicas más especializadas di'idi4ndolo en H etapas Análisis con entity>action )iseJo the initial model step, function step, and system timing step. ?ealización El !aso de implementación =ngeniería de la información Es un software de la ingeniería %ue ayuda a crear y desarrollar sistemas de información. • •
•
"tructured "ystem Analysis and )esign +ethod ""A)+# Este m4todo tambi4n nos ayuda a desarrollar y crear sistemas de información. +etodología +E&?=A, promo'ida por el +inisterio de las Administraciones !blicas.
+E&@)@5@KLA" MK=5E" En febrero de /88-, tras una reunión celebrada en 0tahNEE00, nace el t4rmi no “ágil$ aplicado al desarrollo de software. "u objeti'o fue esbozar los 'alores y principios %ue deberían permitir a los e%uipos desarrollar software rápidamente y respondiendo a los cambios %ue puedan surgir a lo largo del proyecto. "e pretendía ofrecer una alternati'a a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación %ue se genera en cada una de las acti'idades desarrolladas. &ras una reunión se creó &he Agile AllianceH, el punto de partida fue el +anifiesto Mgil, un documento %ue resume la filosofía “ágil$. "egn el +anifiesto se 'alora •
•
•
•
Al indi'iduo y las interacciones del e%uipo de desarrollo sobre el proceso y las herramientas. 5a regla a seguir es “no producir documentos a menos %ue sean necesarios de forma inmediata para tomar un decisión importante$. Estos documentos deben ser cortos y centrarse en lo fundamental. "e propone %ue eGista una interacción constante entre el cliente y el e%uipo de desarrollo. ?esponder a los cambios más %ue seguir estrictamente un plan.
5os 'alores anteriores inspiran doce principios del manifiesto %ue son =. ==. ===. =B. B. B=. B==.
5a prioridad es satisfacer al cliente mediante tempranas y continuas entregas de software %ue le aporte un 'alor. )ar la bien'enida a los cambios. "e capturan los cambios para %ue el cliente tenga una 'entaja competiti'a. Entregar frecuentemente software %ue funcione desde un par de semanas a un par de meses, con el menor inter'alo de tiempo posible entre entregas. 5a gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto. onstruir el proyecto en torno a indi'iduos moti'ados. )arles el entorno y el apoyo %ue necesitan y confiar en ellos para conseguir finalizar el trabajo. El diálogo cara a cara es el m4todo más eficiente y efecti'o para comunicar información dentro de un e%uipo de desarrollo. El software %ue funciona es la medida principal de progreso.
B===. =O. O. O=. O==.
5os procesos ágiles promue'en un desarrollo sostenible. 5os promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante. 5a atención continua a la calidad t4cnica y al buen diseJo mejora la agilidad. 5a simplicidad es esencial. 5as mejores ar%uitecturas, re%uisitos y diseJos surgen de los e%uipos organizados por sí mismos. En inter'alos regulares, el e%uipo refleGiona respecto a cómo llegar a ser más efecti'o, y segn esto ajusta su comportamiento.
O===. !?@K?A+A=PF EO&?E+A EO&?E+E !?@K?A++=FK, O!# Es una metodología ágil centrada en potenciar las relaciones interpersonales como cla'e para el 4Gito en desarrollo de software, promo'iendo el trabajo en e%uipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. O! se define como especialmente adecuada para proyectos con re%uisitos imprecisos y muy cambiantes, y donde eGiste un alto de riesgo t4cnico. 5os principios y prácticas son de sentido comn pero lle'adas al eGtremo, de ahí pro'iene su nombre y su creador es Dent Qec1. A continuación presentaremos las características esenciales de O! organizadas en los tres apartados siguientes historias de usuario, roles, proceso y prácticas.
?oles O! 5os roles de acuerdo con la propuesta original de Qec1 son
!rogramador. El programador escribe las pruebas unitarias y produce el código del sistema. liente. Escribe las historias de usuario y las pruebas funcionales para 'alidar su implementación. Además, asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar mayor 'alor al negocio. Encargado de pruebas &ester#. Ayuda al cliente a escribir las pruebas funcionales. Ejecuta las pruebas regularmente, difunde los resultados en el e%uipo y es responsable de las herramientas de soporte para pruebas. Encargado de seguimiento &rac1er#. !roporciona realimentación al e%uipo. Berifica el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, para mejorar futuras estimaciones. ?ealiza el seguimiento del progreso de cada iteración.
Entrenador oach#. Es responsable del proceso global. )ebe pro'eer guías al e%uipo de forma %ue se apli%uen las prácticas O! y se siga el proceso correctamente. onsultor. Es un miembro eGterno del e%uipo con un conocimiento específico en algn tema necesario para el proyecto, en el %ue puedan surgir problemas. Kestor Qig boss#. Es el 'ínculo entre clientes y programadores, ayuda a %ue el e%uipo trabaje efecti'amente creando las condiciones adecuadas. "u labor esencial es de coordinación.
!roceso O! El ciclo de desarrollo consiste a grandes rasgos# en los siguientes pasos -. El cliente define el 'alor de negocio a implementar. /. El programador estima el esfuerzo necesario para su implementación. H. El cliente selecciona %u4 construir, de acuerdo con sus prioridades y las restricciones de tiempo. I. El programador construye ese 'alor de negocio. ;. Buel'e al paso -. El ciclo de 'ida ideal de O! consiste de seis fases EGploración, !lanificación de la Entrega ?elease#, =teraciones, !roducción, +antenimiento y +uerte del !royecto.
!rácticas O! 5a principal suposición %ue se realiza en O! es la posibilidad de disminuir la mítica cur'a eGponencial del costo del cambio a lo largo del proyecto, lo suficiente para %ue el diseJo e'oluti'o funcione. Esto se consigue gracias a las tecnologías disponibles para ayudar en el desarrollo de software y a la aplicación disciplinada de las siguientes prácticas. •
•
•
•
El juego de la planificación. 3ay una comunicación frecuente el cliente y los programadores. Entregas pe%ueJas. !roducir rápidamente 'ersiones del sistema %ue sean operati'as. +etáfora. El sistema es definido mediante una metáfora o un conjunto de metáforas compartidas por el cliente y el e%uipo de desarrollo. 0na metáfora es una historia compartida %ue describe cómo debería funcionar el sistema. )iseJo simple. "e debe diseJar la solución más simple %ue pueda funcionar y ser implementada en un momento determinado del pro yecto.
•
•
•
•
•
•
•
•
!ruebas. 5a producción de código está dirigida por las pruebas unitarias Rstas son establecidas por el cliente antes de escribirse el código y son ejecutadas constantemente ante cada modificación del sistema. ?efactorización ?efactoring#. Es una acti'idad constante de reestructuración del código con el objeti'o de remo'er duplicación de código. !rogramación en parejas. &oda la producción de código debe realizarse con trabajo en parejas de programadores. !ropiedad colecti'a del código. ual%uier programador puede cambiar cual%uier parte del código en cual%uier momento. =ntegración contina. ada pieza de código es integrada en el sistema una 'ez %ue est4 lista. I8 horas por semana. "e debe trabajar un máGimo de I8 horas por semana. liente inNsitu. El cliente tiene %ue estar presente y disponible todo el tiempo para el e%uipo. Estándares de programación. O! enfatiza %ue la comunicación de los programadores es a tra'4s del código, con lo cual es indispensable %ue se sigan ciertos estándares de programación para mantener el código legible.
@&?A" +E&@)@5@KLA" MK=5E" SCRUM: =mpulsada por Den "chwaber, *eff "utherland y +i1e Qeedle.
"us dos características principales son 2
El desarrollo de software %ue se realiza mediante iteraciones denominadas sprint.
2
?euniones a lo largo del proyecto diarias durante -; minutos.
Crystal Methodologies: onjunto de metodologías para el desarrollo del
software caracterizadas por estar centradas en las personas %ue componen el e%uipo donde se in'ierte la fuerza para mejorar en habilidades y destreza. Esta metodología fue impulsada por Alistar oc1burn. Dynamic Systems Development Method: Face en -66I con el objeti'o de
crear una metodología ?A) unificada. "u principal característica es %ue tiene un proceso iterati'o e incremental donde el e%uipo de desarrollo y usuario trabajan juntos. "us ; fases son Estudio, 'iabilidad , estudio del negocio , modelo funcional, diseJo, construcción e implementación.
Adaptive Software Development: =mpulsada por *im 3ighsmith, @rientado a
los componentes del software más %ue a las tareas y es tolerante a los cambios. !ropone un ciclo de 'ida de H fases 2
Especulación: "e inicia el proyecto y se planifican las características
del software. 2
Colaoración: En esta se desarrollan las características.
2
Aprendi!a"e: "e re'isa su calidad y se entrega al cliente.
#eature $ Driven Development: 5as iteraciones son cortas y se centran en las
fases de diseJo e implementación del sistema partiendo de una lista de características %ue rene el software. Esta metodología fue impulsada por *eff )e 5uca y !eter oad. %ean Development : =mpulsada por Qob harettSs, su principal característica
es introducir un mecanismo para implementar cambios , cambios %ue se consideraban riesgosos pero no si se manejan adecuadamente pueden con'ertirse en oportunidades para mejorar la producti'idad del cliente. osas %ue F@ son metodologías de desarrollo del software. •
•
•
5a T!rogramación estructuradaT o la T!rogramación @rientada a @bjetosT son paradigmas o modelos de programación. =ndican pautas de comportamiento en los sistemas de programación. 5os t4rminos Ticlo de 'ida en espiralT, Ticlo de 'ida incrementalT, Ten ascadaT, Tcon prototipoT estos son es%uemas generales de organización en las tareas del ciclo de 'ida, unas con respecto a otras y con respecto a otros aspectos como el tiempo. El 0+5 no le indica a nadie la manera de realizar las cada tarea en un proyecto concreto tan solo es una herramienta para eGpresar ideas... así pues... F@ E" 0FA +E&@)@5@KLA.