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
- Programación estructurada desde 1969
- Cap Gemini SDM , originalmente de PANDATA, la primera traducción al inglés se publicó en 1974. SDM significa Metodología de Desarrollo de Sistemas.
- década de 1980
- Método de análisis y diseño de sistemas estructurados (SSADM) desde 1980 en adelante
- Análisis de requisitos de información/Metodología de sistemas blandos
- década de 1990
- La programación orientada a objetos (POO) se desarrolló a principios de la década de 1960 y se convirtió en un enfoque de programación dominante a mediados de la década de 1990.
- Desarrollo rápido de aplicaciones (RAD), desde 1991
- Método de desarrollo de sistemas dinámicos (DSDM), desde 1994
- Scrum , desde 1995
- Proceso de software en equipo , desde 1998
- Proceso Unificado Racional (RUP), mantenido por IBM desde 1998.
- Programación extrema , desde 1999
- década de 2000
- Proceso Unificado Ágil (AUP) mantenido desde 2005 por Scott Ambler.
- La entrega ágil disciplinada (DAD) reemplaza la AUP.
- década de 2010
- Marco de trabajo ágil escalado (SAFe)
- Scrum a gran escala (LeSS)
- DevOps
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
- Ingeniería de software asistida por ordenador
- Lista de filosofías de desarrollo de software
- Esquema de ingeniería de software
- Fase del ciclo de vida del programa
- Estimación del esfuerzo de desarrollo de software
- Documentación del software
- Gestión de proyectos de software
- Ciclo de vida de lanzamiento de software
- Ciclo de vida del desarrollo de sistemas
Referencias
- ↑ "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 .
- ↑ 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 .
- ↑ "Ciclo de vida del desarrollo de sistemas desde" . FOLDOC . Consultado el 14 de junio de 2013 .
- ↑ "Ciclo de vida del desarrollo de software (SDLC)" (PDF) . softwarelifecyclepros.com . Mayo de 2012. Consultado el 26 de junio de 2025 .
- ↑ "Descripción general del SDLC: modelos y metodologías" . Consultado el 12 de diciembre de 2021 .
- ↑ Arden, Trevor (1991). Aplicaciones de la tecnología de la información . Londres: Pitman. ISBN 978-0-273-03470-4.
- ↑ "¿Qué es Scrum?" 24 de diciembre de 2019.
- ↑ 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 .
- ↑ Taylor, James (2004). Gestión de proyectos de tecnología de la información . pág. 39.
- 1 2 3 Geoffrey Elliott (2004). Tecnología de la información empresarial global: un enfoque de sistemas integrados . Pearson Education. pág. 87.
- ↑ 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 .
- ↑ "Prólogo de Jason Fried | Shape Up" . basecamp.com . Consultado el 11 de septiembre de 2022 .
- ↑ "¿Shape Up es solo una bonita teoría?" . Curious Lab . Consultado el 12 de septiembre de 2022 .
- 1 2 Departamento de Justicia de los Estados Unidos (2003). GESTIÓN DE RECURSOS DE INFORMACIÓN Capítulo 1. Introducción.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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.
Enlaces externos
- 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.
- proceso de desarrollo de software
- Metodología
- Ingeniería de software