Desarrollo de software |
---|
Actividades centrales Actividades principales |
Paradigmas y modelos |
Metodologías y marcos |
Disciplinas de apoyo |
Practicas |
Instrumentos |
Estándares y cuerpos de conocimiento |
Glosarios |
Contornos |
|
En ingeniería de software, un proceso de desarrollo de software es el proceso de dividir el trabajo de desarrollo de software en pasos o subprocesos más pequeños, paralelos o secuenciales para mejorar el diseño, la gestión de productos y la gestión de proyectos. También se conoce como ciclo de vida de desarrollo de software ( SDLC). La metodología puede incluir la pre-definición de entregables y artefactos específicos que son creados y completados por un equipo de proyecto para desarrollar o mantener una aplicación.
La mayoría de los procesos de desarrollo modernos se pueden describir vagamente como ágiles. Otras metodologías incluyen cascada, creación de prototipos, desarrollo iterativo e incremental, desarrollo en espiral, desarrollo rápido de aplicaciones y programación extrema.
Un "modelo" de ciclo de vida a veces se considera un término más general para una categoría de metodologías y un "proceso" de desarrollo de software es un término más específico para referirse a un proceso específico elegido por una organización específica. Por ejemplo, hay muchos procesos de desarrollo de software específicos que se ajustan al modelo de ciclo de vida en espiral. El campo a menudo se considera un subconjunto del ciclo de vida del desarrollo de sistemas.
El marco de la metodología de desarrollo de software (también conocido como SDM) no surgió hasta la década de 1960. Según Elliott (2004), el ciclo de vida de desarrollo de sistemas (SDLC) puede considerarse el marco metodológico formalizado más antiguo para la construcción de sistemas de información. La idea principal del SDLC ha sido "perseguir el desarrollo de sistemas de información de una manera muy deliberada, estructurada y metódica, requiriendo cada etapa del ciclo de vida - desde el inicio de la idea hasta la entrega del sistema final - para llevarse a cabo de forma rígida y secuencial "dentro del contexto del marco que se está aplicando. El objetivo principal de este marco metodológico en la década de 1960 era "desarrollar sistemas comerciales funcionales a gran escala en una era de conglomerados comerciales a gran escala. Las actividades de los sistemas de información giraban en torno al procesamiento pesado de datos y las rutinas de procesamiento de números ".
Las metodologías, procesos y marcos varían desde pasos proscriptivos específicos que una organización puede usar directamente en el trabajo diario, hasta marcos flexibles que una organización usa para generar un conjunto personalizado de pasos a la medida de las necesidades de un proyecto específico o grupo. En algunos casos, una organización "patrocinadora" o de "mantenimiento" distribuye un conjunto oficial de documentos que describen el proceso. Los ejemplos específicos incluyen:
2010
Es notable que desde DSDM en 1994, todas las metodologías en la lista anterior, excepto RUP, han sido metodologías ágiles; sin embargo, muchas organizaciones, especialmente los gobiernos, todavía usan procesos pre-ágiles (a menudo en cascada o similares). El proceso del software y la calidad del software están estrechamente relacionados; En la práctica se han observado algunas facetas y efectos inesperados.
Entre estos, se ha establecido otro proceso de desarrollo de software en código abierto. La adopción de estas mejores prácticas procesos conocidos y establecidos dentro de los límites de una empresa se denomina fuente interna.
La creación de prototipos de software consiste en crear prototipos, es decir, versiones incompletas del programa de software que se está desarrollando.
Los principios básicos son:
Es necesario tener una comprensión básica del problema empresarial fundamental para evitar resolver los problemas incorrectos, pero esto es cierto para todas las metodologías de software.
El "desarrollo de software ágil" se refiere a un grupo de marcos de desarrollo de software basados en el desarrollo iterativo, donde los requisitos y las soluciones evolucionan a través de la colaboración entre equipos multifuncionales autoorganizados. El término fue acuñado en el año 2001 cuando se formuló el Manifiesto Ágil.
El desarrollo de software ágil utiliza el desarrollo iterativo como base, pero aboga por un punto de vista más ligero y centrado en las personas que los enfoques tradicionales. Los procesos ágiles incorporan fundamentalmente la iteración y la retroalimentación continua que proporciona para refinar y entregar sucesivamente un sistema de software.
El modelo ágil también incluye los siguientes procesos de desarrollo de software:
La integración continua es la práctica de fusionar todas las copias de trabajo del desarrollador en una línea principal compartida varias veces al día. Grady Booch nombró y propuso IC por primera vez en su método de 1991, aunque no abogó por la integración varias veces al día. La programación extrema (XP) adoptó el concepto de CI y defendió la integración más de una vez al día, quizás hasta decenas de veces al día.
Se aceptan varios métodos para combinar metodologías de desarrollo de sistemas lineales e iterativos, siendo el objetivo principal de cada uno reducir el riesgo inherente del proyecto dividiendo un proyecto en segmentos más pequeños y proporcionando más facilidad de cambio durante el proceso de desarrollo.
Hay tres variantes principales de desarrollo incremental:
El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software que favorece el desarrollo iterativo y la construcción rápida de prototipos en lugar de grandes cantidades de planificación inicial. La "planificación" del software desarrollado con RAD está intercalada con la escritura del propio software. La falta de una planificación previa exhaustiva generalmente permite que el software se escriba mucho más rápido y facilita el cambio de requisitos.
El proceso de desarrollo rápido comienza con el desarrollo de modelos de datos preliminares y modelos de procesos comerciales utilizando técnicas estructuradas. En la siguiente etapa, los requisitos se verifican mediante la creación de prototipos, eventualmente para refinar los modelos de datos y procesos. Estas etapas se repiten iterativamente; un mayor desarrollo da como resultado "una declaración combinada de requisitos comerciales y diseño técnico que se utilizará para construir nuevos sistemas".
El término se utilizó por primera vez para describir un proceso de desarrollo de software introducido por James Martin en 1991. Según Whitten (2003), es una fusión de varias técnicas estructuradas, especialmente ingeniería de tecnología de la información impulsada por datos, con técnicas de creación de prototipos para acelerar el desarrollo de sistemas de software..
Los principios básicos del desarrollo rápido de aplicaciones son:
El modelo de cascada es un enfoque de desarrollo secuencial, en el que se considera que el desarrollo fluye de manera constante hacia abajo (como una cascada) a través de varias fases, por lo general:
La primera descripción formal del método se cita a menudo como un artículo publicado por Winston W. Royce en 1970, aunque Royce no utilizó el término "cascada" en este artículo. Royce presentó este modelo como un ejemplo de un modelo defectuoso que no funciona.
Los principios básicos son:
El modelo en cascada es un enfoque de ingeniería tradicional aplicado a la ingeniería de software. Un enfoque de cascada estricto desalienta volver a visitar y revisar cualquier fase anterior una vez que esté completa. Esta "inflexibilidad" en un modelo de cascada pura ha sido fuente de críticas por parte de los partidarios de otros modelos más "flexibles". Se le ha culpado ampliamente de varios proyectos gubernamentales a gran escala que superan el presupuesto, a lo largo del tiempo y, a veces, no cumplen con los requisitos debido al enfoque de Big Design Up Front. Excepto cuando se requiere por contrato, el modelo en cascada ha sido reemplazado en gran medida por metodologías más flexibles y versátiles desarrolladas específicamente para el desarrollo de software. Ver Crítica del modelo Waterfall.
En 1988, Barry Boehm publicó un "modelo en espiral" de desarrollo de sistemas de software formal, que combina algunos aspectos clave del modelo en cascada y metodologías de creación rápida de prototipos, en un esfuerzo por combinar las ventajas de los conceptos de arriba hacia abajo y de abajo hacia arriba. Hizo hincapié en un área clave que muchos consideraron que otras metodologías habían descuidado: el análisis de riesgos iterativo deliberado, especialmente adecuado para sistemas complejos a gran escala.
Los principios básicos son:
Otras metodologías de proyectos de software de alto nivel incluyen:
Algunos " modelos de proceso " son descripciones abstractas para evaluar, comparar y mejorar el proceso específico adoptado por una organización.
A lo largo de los años, han evolucionado varios de estos marcos, cada uno con sus propias fortalezas y debilidades reconocidas. Un marco de metodología de desarrollo de software no es necesariamente adecuado para todos los proyectos. Cada uno de los marcos metodológicos disponibles se adapta mejor a tipos específicos de proyectos, basándose en diversas consideraciones técnicas, organizativas, de proyecto y de equipo.
Las organizaciones de desarrollo de software implementan metodologías de proceso para facilitar el proceso de desarrollo. A veces, los contratistas pueden requerir metodologías empleadas, un ejemplo es la industria de defensa de EE. UU ., Que requiere una calificación basada en modelos de proceso para obtener contratos. El estándar internacional para describir el método de selección, implementación y monitoreo del ciclo de vida del software es ISO / IEC 12207.
Un objetivo de décadas ha sido encontrar procesos repetibles y predecibles que mejoren la productividad y la calidad. Algunos intentan sistematizar o formalizar la aparentemente rebelde tarea de diseñar software. Otros aplican técnicas de gestión de proyectos para diseñar software. Un gran número de proyectos de software no cumplen con sus expectativas en términos de funcionalidad, costo o cronograma de entrega; consulte la Lista de proyectos de software personalizados con errores y sobrepresupuesto para ver algunos ejemplos notables.
Las organizaciones pueden crear un Grupo de Procesos de Ingeniería de Software (SEPG), que es el punto focal para la mejora de procesos. Compuesto por profesionales de línea que tienen habilidades variadas, el grupo está en el centro del esfuerzo colaborativo de todos en la organización que están involucrados con la mejora de procesos de ingeniería de software.
Un equipo de desarrollo en particular también puede estar de acuerdo con los detalles del entorno de programación, como qué entorno de desarrollo integrado se utiliza y uno o más paradigmas de programación dominantes, reglas de estilo de programación o la elección de bibliotecas de software o marcos de software específicos. Estos detalles generalmente no están dictados por la elección del modelo o la metodología general.
![]() | Wikimedia Commons tiene medios relacionados con la metodología de desarrollo de software. |