{"id":644,"date":"2008-02-14T21:23:33","date_gmt":"2008-02-14T20:23:33","guid":{"rendered":"http:\/\/www.marblestation.com\/blog\/?p=644"},"modified":"2012-04-26T16:30:36","modified_gmt":"2012-04-26T14:30:36","slug":"metodologias-de-desarrollo","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=644","title":{"rendered":"Metodolog\u00edas de desarrollo"},"content":{"rendered":"<p>Se entiende por metodolog\u00eda de desarrollo una colecci\u00f3n de documentaci\u00f3n formal referente a los procesos, las pol\u00edticas y los procedimientos que intervienen en el desarrollo del software. En Ingles software development methodology (SDM) o system development life cycle (SDLC).<\/p>\n<p>La finalidad de una metodolog\u00eda de desarrollo es garantizar la eficacia (p.ej. cumplir los requisitos iniciales) y la eficiencia (p.ej. minimizar las perdidas de tiempo) en el proceso de generaci\u00f3n de software.<\/p>\n<p>Los riesgos a afrontar y los controles a establecer var\u00edan en funci\u00f3n de las diferentes etapas del ciclo de vida de desarrollo. De forma general podr\u00edamos encontrar las siguientes fases:<br \/>\n<!--more--><\/p>\n<ul>\n<li>Definici\u00f3n del proceso de negocio y los requerimientos<\/li>\n<li>Documentaci\u00f3n funcional<\/li>\n<li>Arquitectura y dise\u00f1o t\u00e9cnico<\/li>\n<li>Codificaci\u00f3n y ejecuci\u00f3n de pruebas unitarias<\/li>\n<li>Pruebas globales del sistema<\/li>\n<li>Pruebas de integraci\u00f3n<\/li>\n<li>Implantaci\u00f3n<\/li>\n<li>Formaci\u00f3n de usuarios<\/li>\n<li>Mantenimiento del sistema<\/li>\n<\/ul>\n<p>Adicionalmente, durante todo el ciclo de vida del proyecto se deberan realizar tareas tales como:<\/p>\n<ul>\n<li>Gesti\u00f3n de la configuraci\u00f3n: identificaci\u00f3n de versiones, control de cambios, etc. <\/li>\n<li>Gesti\u00f3n de la calidad: seguimiento de errores, revisiones del nivel de calidad.<\/li>\n<li>Revisi\u00f3n de las premisas iniciales: revisi\u00f3n de los requerimientos y de los dise\u00f1os.<\/li>\n<li>Gesti\u00f3n del entorno de desarrollo: herramientas de desarrollo, librer\u00edas, ficheros, gesti\u00f3n de datos (p.ej. para pruebas)<\/li>\n<\/ul>\n<p>El n\u00facleo de cualquier metodolog\u00eda de desarrollo se encuentra constituido por documentos escritos que detallan cada uno de los puntos expuestos.<\/p>\n<p>No obstante, siempre es mas conveniente consultar el est\u00e1ndar <a href=\"http:\/\/en.wikipedia.org\/wiki\/ISO_12207\">ISO 12207<\/a>, el cual intenta especificar todas las tareas necesarias para el desarrollo y mantenimiento del software:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/farm3.static.flickr.com\/2391\/2264209633_1494fbc03a_o.png\"><img decoding=\"async\" src=\"http:\/\/farm3.static.flickr.com\/2196\/2265001382_9876603dc8.jpg?v=0\"\/><\/a><br \/>\n<\/center><\/p>\n<p>La relaci\u00f3n entre los diferentes procesos variar\u00e1 en funci\u00f3n de la metodolog\u00eda que la organizaci\u00f3n desee utilizar. En t\u00e9rminos generales, podr\u00edamos hacer 3 agrupaciones:<\/p>\n<ul>\n<li>Procesos en cascada (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Waterfall_model\">Waterfall<\/a>): El desarrollo se compone por fases secuenciales. Una vez cerrada una, no se considera la posibilidad de volver atr\u00e1s.<\/li>\n<li>Procesos en <a href=\"http:\/\/en.wikipedia.org\/wiki\/Spiral_model\">espiral<\/a>: Se desarrollan prototipos de software que son validados y mejorados a partir de la validaci\u00f3n por parte del usuario. Una vez se tiene el prototipo definitivo, se realiza el desarrollo, implantaci\u00f3n y mantenimiento de la misma forma que el modelo en cascada.<\/li>\n<li>Procesos <a href=\"http:\/\/en.wikipedia.org\/wiki\/Iterative_development\">iterativos<\/a>: Desarrollo incremental e iterativo, cada elemento desarrollado es validado con objeto de redefinir las necesidades funcionales. En este caso no se utilizan prototipos. Se dispone de marcos de trabajo de <a href=\"http:\/\/en.wikipedia.org\/wiki\/Agile_software_development\">desarrollo \u00e1gil<\/a> que son bastante populares como <a href=\"http:\/\/en.wikipedia.org\/wiki\/Extreme_Programming\">Extreme Programming (XP)<\/a>.<\/li>\n<\/ul>\n<p>Si bien es importante formalizar una metodolog\u00eda de desarrollo para minimizar riesgos e incrementar las posibilidades de \u00e9xito en los desarrollos, tambi\u00e9n es necesario establecer mecanismos de mejora continua sobre los procesos que componen la metodolog\u00eda. En ese sentido disponemos del est\u00e1ndar <a href=\"http:\/\/en.wikipedia.org\/wiki\/ISO_15504\">ISO 15504<\/a> que proporciona un marco de trabajo para la verificaci\u00f3n de los procesos de software (planificaci\u00f3n, adquisici\u00f3n, desarrollo, soporte, etc.). Es decir, nos ofrece unas pautas para verificar si estos procesos son efectivos en la consecuci\u00f3n de sus objetivos:<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"http:\/\/farm3.static.flickr.com\/2291\/2265055696_9510cfd3e2_o.png\"\/><br \/>\n<\/center><\/p>\n<p>Para la implantaci\u00f3n de mecanismos de mejora, primero es necesario identificar\/mapear los procesos definidos en la ISO 12207 con los procesos de la organizaci\u00f3n. En una segunda parte, a partir del modelo de referencia definido en el est\u00e1ndar, es posible medir el nivel de &#8220;capacidad&#8221; de cada uno de los procesos:<\/p>\n<ul>\n<li>Nivel 0 &#8211; Proceso incompleto: El proceso no existe o no cumple con los objetivos<\/li>\n<li>Nivel 1 &#8211; Proceso ejecutado<\/li>\n<li>Nivel 2 &#8211; Proceso gestionado: el proceso no solo se encuentra en funcionamiento, sino que es planificado, monitorizado y ajustado.<\/li>\n<li>NIvel 3 &#8211; Proceso definido: el proceso, los recursos, los roles y responsabilidades se encuentran documentados y formalizado.<\/li>\n<li>Nivel 4 &#8211; Proceso predecible: se han definido t\u00e9cnicas de medici\u00f3n de resultados y controles.<\/li>\n<li>Nivel 5 &#8211; Proceso optimizado: todos los cambios son verificados para determinar el impacto, se han definido mecanismos para la mejora continua, etc.<\/li>\n<\/ul>\n<p>Por tanto, para cada proceso se evalua y se asigna un nivel. A partir de aqu\u00ed, es posible definir las acciones de mejora necesarias. En general, la ISO 15504 consta de las siguientes normas:<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"http:\/\/farm3.static.flickr.com\/2144\/2264263827_f949bbc9d2_o.png\"\/><br \/>\n<\/center><\/p>\n<p>Cabe destacar que, actualmente es mucho m\u00e1s popular el uso del modelo <a href=\"http:\/\/es.wikipedia.org\/wiki\/CMMI\">CMMI &#8211; Capability Maturity Model-Integrated<\/a> (probablemente porque fue de los primeros precursores y se encuentra disponible <a href=\"http:\/\/www.sei.cmu.edu\/cmmi\/\">gratuitamente<\/a> en Internet). CMMI es compatible con el est\u00e1ndar ISO 15504 y se encuentra alineado con las especificaciones ISO, por tanto es una buena alternativa a considerar a la hora de implantar mecanismos de evaluaci\u00f3n y mejora continua en los procesos del software.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se entiende por metodolog\u00eda de desarrollo una colecci\u00f3n de documentaci\u00f3n formal referente a los procesos, las pol\u00edticas y los procedimientos que intervienen en el desarrollo del software. En Ingles software development methodology (SDM) o system development life cycle (SDLC). La finalidad de una metodolog\u00eda de desarrollo es garantizar la eficacia (p.ej. cumplir los requisitos iniciales) &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=644\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Metodolog\u00edas de desarrollo<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-644","post","type-post","status-publish","format-standard","hentry","category-espanyol","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=644"}],"version-history":[{"count":1,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/644\/revisions"}],"predecessor-version":[{"id":1274,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/644\/revisions\/1274"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}