Articulo de referencia

proceso de desarrollo de software

Un proceso de desarrollo de software prescribe un método para desarrollar software . Generalmente divide el esfuerzo total en pasos o subprocesos más pequeños que buscan garanti...

Un proceso de desarrollo de software prescribe un método para desarrollar software . Generalmente divide el esfuerzo total en pasos o subprocesos más pequeños que buscan garantizar resultados de alta calidad. El proceso puede describir entregables específicos : artefactos que deben crearse y completarse. [ 1 ]

Aunque no se limita estrictamente a ello, el proceso de desarrollo de software suele referirse al proceso de alto nivel que rige el desarrollo de un sistema de software desde su inicio hasta el final de su vida útil , conocido como metodología, modelo o marco de trabajo. El ciclo de vida del desarrollo de sistemas (SDLC) describe las fases típicas por las que pasa un esfuerzo de desarrollo desde el inicio hasta el final de la vida útil de un sistema , incluido un sistema de software. Una metodología prescribe cómo los ingenieros llevan a cabo su trabajo para que el sistema avance a lo largo de su ciclo de vida. Una metodología es una clasificación de procesos o un plan de proceso diseñado para el SDLC. Por ejemplo, muchos procesos pueden clasificarse como un modelo en espiral.

El proceso de software y la calidad del software están estrechamente interrelacionados; en la práctica se han observado algunas facetas y efectos inesperados. [ 2 ]

Metodología

El ciclo de vida del desarrollo de software (SDLC) determina la definición de una metodología, ya que esta debe abordar las fases del SDLC. Generalmente, una metodología se diseña para obtener un sistema de alta calidad que cumpla o supere las expectativas (requisitos) y se entregue a tiempo y dentro del presupuesto, incluso cuando los sistemas informáticos pueden ser complejos e integrar componentes dispares. [ 3 ] Se han ideado diversas metodologías, como la de cascada , la espiral , la ágil , la de prototipado rápido , la incremental y la de sincronización y estabilización. [ 4 ]

Una diferencia importante entre las metodologías es el grado en que las fases son secuenciales o iterativas. Las metodologías ágiles, como XP y Scrum , se centran en procesos ligeros que permiten cambios rápidos. [ 5 ] Las metodologías iterativas , como Rational Unified Process y el método de desarrollo de sistemas dinámicos , se centran en estabilizar el alcance del proyecto y expandir o mejorar los productos de forma iterativa. Los modelos secuenciales o de diseño inicial a gran escala (BDUF), como el modelo en cascada, se centran en una planificación completa y correcta para guiar proyectos más grandes y limitar los riesgos a resultados exitosos y predecibles. [ 6 ] El desarrollo anamórfico se guía por el alcance del proyecto y las iteraciones adaptativas. En Scrum, [ 7 ] por ejemplo, se podría decir que una sola historia de usuario pasa por todas las fases del SDLC dentro de un sprint de dos semanas. Por el contrario, la metodología en cascada, donde cada requisito de negocio se traduce en descripciones de características/funcionales que luego se implementan normalmente durante un período de meses o más. [ 8 ]

Un proyecto puede incluir tanto un ciclo de vida del proyecto (PLC) como un ciclo de vida del desarrollo de sistemas (SDLC), que describen diferentes actividades. Según Taylor (2004), "el ciclo de vida del proyecto abarca todas las actividades del proyecto , mientras que el ciclo de vida del desarrollo de sistemas se centra en la realización de los requisitos del producto ". [ 9 ]

Historia

El término SDLC se usa a menudo como una versión abreviada de la metodología SDLC . Además, algunos usan SDLC y SDLC tradicional para referirse a la metodología en cascada.

Según Elliott (2004), el SDLC "se originó en la década de 1960 para desarrollar sistemas empresariales funcionales a gran escala en una era de grandes conglomerados empresariales . Las actividades de los sistemas de información giraban en torno a rutinas de procesamiento de datos y cálculos numéricos intensivos ". [ 10 ] El método de análisis y diseño de sistemas estructurados (SSADM) se produjo para la Oficina de Comercio del Gobierno del Reino Unido en la década de 1980. Desde entonces, según Elliott (2004), "los enfoques tradicionales del ciclo de vida para el desarrollo de sistemas han sido reemplazados cada vez más por enfoques y marcos alternativos, que intentaron superar algunas de las deficiencias inherentes del SDLC tradicional". [ 10 ] La idea principal del SDLC ha sido "llevar a cabo el desarrollo de sistemas de información de una manera muy deliberada, estructurada y metódica, requiriendo que cada etapa del ciclo de vida —desde el inicio de la idea hasta la entrega del sistema final— se lleve a cabo de manera rígida y secuencial" [ 10 ] dentro del contexto del marco que se esté aplicando.

Posteriormente se idearon otras metodologías:

década de 1970
década de 1980
década de 1990
década de 2000
década de 2010

Desde DSDM en 1994, todas las metodologías de la lista anterior, excepto RUP, han sido metodologías ágiles; sin embargo, muchas organizaciones, especialmente los gobiernos, todavía utilizan procesos preágiles (a menudo en cascada o similares).

Ejemplos

Las siguientes son metodologías destacadas, ordenadas aproximadamente por popularidad.

Ágil

El desarrollo ágil de software se refiere a un conjunto de marcos de trabajo basados ​​en el desarrollo iterativo, donde los requisitos y las soluciones evolucionan mediante la colaboración entre equipos multifuncionales autoorganizados. El término se acuñó en el año 2001 con la formulación del Manifiesto Ágil .

Cascada

El modelo de cascada es un enfoque de desarrollo secuencial, en el que el desarrollo fluye en una sola dirección (como una cascada) a través de las fases del ciclo de vida del desarrollo de software (SDLC).

Espiral

En 1988, Barry Boehm publicó un modelo espiral para el desarrollo de sistemas de software , que combina aspectos clave del modelo en cascada y el prototipado rápido , con el objetivo de integrar las ventajas de los enfoques descendente y ascendente . Este modelo hace hincapié en un área fundamental que, según muchos, había sido descuidada por otras metodologías: el análisis iterativo y deliberado de riesgos, especialmente adecuado para sistemas complejos a gran escala.

Incremental

Varios métodos combinan metodologías lineales e iterativas , con el objetivo principal de reducir el riesgo inherente del proyecto al dividirlo en segmentos más pequeños y facilitar los cambios durante el proceso de desarrollo. [ 11 ]

Prototipado

La creación de prototipos de software consiste en crear prototipos, es decir, versiones incompletas del programa de software que se está desarrollando.

Rápido

El desarrollo rápido de aplicaciones (RAD, por sus siglas en inglés) es una metodología que favorece el desarrollo iterativo y la rápida creación de prototipos , en lugar de una planificación inicial exhaustiva. La planificación del software desarrollado con RAD se integra con la propia escritura del software. La ausencia de una planificación previa extensa generalmente permite escribir el software mucho más rápido y facilita la modificación de los requisitos.

Ponte en forma

Shape Up es un enfoque de desarrollo de software introducido por Basecamp en 2018. Se trata de un conjunto de principios y técnicas que Basecamp desarrolló internamente para superar el problema de los proyectos que se prolongan sin un final claro. Su público objetivo principal son los equipos remotos. A diferencia de los enfoques en cascada , ágil o Scrum , Shape Up no utiliza estimación ni seguimiento de velocidad, backlogs ni sprints. En su lugar, estos conceptos se reemplazan por apetito, apuestas y ciclos. A partir de 2022, además de Basecamp, entre las organizaciones destacadas que han adoptado Shape Up se encuentran UserVoice y Block. [ 12 ] [ 13 ]

Caos

El modelo del caos tiene una regla principal: siempre hay que resolver primero el problema más importante.

Financiación incremental

Metodología de financiación incremental : un enfoque iterativo.

Ligero

Metodología ligera : término general para los métodos que solo tienen unas pocas reglas y prácticas.

Análisis y diseño de sistemas estructurados

Método de análisis y diseño de sistemas estructurados : una versión específica del modelo en cascada.

Programación lenta

Como parte del movimiento de programación lenta , se hace hincapié en un trabajo cuidadoso y gradual, con poca o ninguna presión de tiempo. La programación lenta busca evitar errores y ciclos de lanzamiento demasiado apresurados.

Modelo V

Modelo V (desarrollo de software) : una extensión del modelo en cascada.

Proceso Unificado

El Proceso Unificado (UP) es un marco de metodología iterativa para el desarrollo de software, basado en el Lenguaje Unificado de Modelado (UML). UP organiza el desarrollo de software en cuatro fases, cada una compuesta por una o más iteraciones ejecutables del software en esa etapa de desarrollo: concepción, elaboración, construcción y directrices.

Comparación

El modelo de cascada describe las fases del SDLC de manera que cada una se basa en el resultado de la anterior. [ 14 ] [ 15 ] [ 16 ] [ 17 ] No todos los proyectos requieren que las fases sean secuenciales. Para proyectos relativamente simples, las fases pueden combinarse o superponerse. [ 14 ] A continuación se describen y comparan metodologías alternativas a la de cascada. [ 18 ]

metamodelos de procesos

Algunos modelos de procesos son descripciones abstractas que sirven para evaluar, comparar y mejorar el proceso específico adoptado por una organización.

ISO/IEC 12207

La norma ISO/IEC 12207 es el estándar internacional que describe el método para seleccionar, implementar y supervisar el ciclo de vida del software.

Integración del modelo de madurez de capacidades

El Modelo de Madurez de Capacidades Integrado (CMMI) es uno de los modelos líderes y se basa en las mejores prácticas. Las evaluaciones independientes califican a las organizaciones según la eficacia con la que siguen sus procesos definidos, no según la calidad de dichos procesos ni del software producido. CMMI ha reemplazado a CMM .

ISO 9000

La norma ISO 9000 describe los estándares para un proceso formalmente organizado de fabricación de un producto, así como los métodos para gestionar y supervisar su progreso. Si bien la norma se creó originalmente para el sector manufacturero, también se ha aplicado al desarrollo de software. Al igual que CMMI, la certificación ISO 9000 no garantiza la calidad del resultado final, sino únicamente que se han seguido procesos empresariales formalizados.

ISO/IEC 15504

La norma ISO/IEC 15504 , Tecnología de la información: evaluación de procesos , también conocida como Determinación de la capacidad de mejora de procesos de software (SPICE), es un marco para la evaluación de procesos de software. Esta norma busca establecer un modelo claro para la comparación de procesos. SPICE se utiliza de forma similar a CMMI. Modela procesos para gestionar, controlar, guiar y supervisar el desarrollo de software. Este modelo se utiliza para medir las acciones que realiza una organización de desarrollo o un equipo de proyecto durante el desarrollo de software. Esta información se analiza para identificar debilidades e impulsar la mejora. También identifica fortalezas que pueden mantenerse o integrarse en las prácticas habituales de la organización o el equipo.

ISO/IEC 24744

La norma ISO/IEC 24744 , Ingeniería de Software: Metamodelo para Metodologías de Desarrollo , es un potente metamodelo basado en tipos para metodologías de desarrollo de software.

Metodología de sistemas blandos

La metodología de sistemas blandos es un método general para mejorar los procesos de gestión.

Ingeniería de métodos

La ingeniería de métodos es un método general para mejorar los procesos de los sistemas de información.

Véase también

Referencias

  1. "Selección de un enfoque de desarrollo" (PDF) . Centros de Servicios de Medicare y Medicaid (CMS), Oficina de Servicios de Información . Departamento de Salud y Servicios Humanos de los Estados Unidos (HHS). 27 de marzo de 2008 [Emisión original: 17 de febrero de 2005]. Archivado del original (PDF) el 20 de junio de 2012. Consultado el 27 de octubre de 2008 .
  2. Suryanarayana, Girish (2015). "Proceso de software versus calidad del diseño: ¿tira y afloja?" . IEEE Software . 32 (4): 7– 11. Bibcode : 2015ISoft..32d...7S . doi : 10.1109/MS.2015.87 .
  3. "Ciclo de vida del desarrollo de sistemas desde" . FOLDOC . Consultado el 14 de junio de 2013 .
  4. "Ciclo de vida del desarrollo de software (SDLC)" (PDF) . softwarelifecyclepros.com . Mayo de 2012. Consultado el 26 de junio de 2025 .
  5. "Descripción general del SDLC: modelos y metodologías" . Consultado el 12 de diciembre de 2021 .
  6. Arden, Trevor (1991). Aplicaciones de la tecnología de la información . Londres: Pitman. ISBN 978-0-273-03470-4.
  7. "¿Qué es Scrum?" 24 de diciembre de 2019.
  8. Ralph, Paul (abril de 2015). "La teoría de la coevolución e implementación de la construcción de sentido en el diseño de software" . Science of Computer Programming . 101 : 21–41 . arXiv : 1302.4061 . doi : 10.1016/j.scico.2014.11.007 . ISSN 0167-6423 . Consultado el 6 de mayo de 2026 . 
  9. Taylor, James (2004). Gestión de proyectos de tecnología de la información . pág. 39. 
  10. 1 2 3 Geoffrey Elliott (2004). Tecnología de la información empresarial global: un enfoque de sistemas integrados . Pearson Education. pág. 87. 
  11. Boehm, Barry; Lane, Jo Ann (2010). "Nuevos procesos para nuevos horizontes: el modelo de compromiso incremental" . 2010 ACM/IEEE 32nd International Conference on Software Engineering . doi : 10.1145/1810295.1810450 .
  12. "Prólogo de Jason Fried | Shape Up" . basecamp.com . Consultado el 11 de septiembre de 2022 .
  13. "¿Shape Up es solo una bonita teoría?" . Curious Lab . Consultado el 12 de septiembre de 2022 .
  14. 1 2 Departamento de Justicia de los Estados Unidos (2003). GESTIÓN DE RECURSOS DE INFORMACIÓN Capítulo 1. Introducción.
  15. Everatt, GD; McLeod, R Jr (2007). «Capítulo 2: El ciclo de vida del desarrollo de software» . Pruebas de software: Pruebas a lo largo de todo el ciclo de vida del desarrollo de software . John Wiley & Sons. págs. 29–58 . ISBN  9780470146347.
  16. Unhelkar, B. (2016). El arte de la práctica ágil: un enfoque integral para proyectos y organizaciones . CRC Press. págs. 56–59 . ISBN  9781439851197.
  17. Land, SK ; Smith, DB; Walz, JW (2012). Soporte práctico para la definición de procesos de software Lean Six Sigma: Uso de los estándares de ingeniería de software IEEE . John Wiley & Sons. págs. 341–3 . ISBN  9780470289952.
  18. Post, G., & Anderson, D., (2006). Sistemas de información gerencial: Solución de problemas empresariales con tecnología de la información . (4.ª ed.). Nueva York: McGraw-Hill Irwin.
  • Selección de un enfoque de desarrollo. Archivado el 2 de enero de 2019 en Wayback Machine en cms.hhs.gov.
  • Gerhard Fischer, "La tecnología de software del siglo XXI: de la reutilización de software al diseño colaborativo de software". Archivado el 15 de septiembre de 2009 en Wayback Machine , 2001.