En ingeniería del software, un proceso de desarrollo del software es el proceso de dividir el trabajo de desarrollo del software en distintas fases para mejorar el diseño, la gestión del producto, y la gestión de proyecto. Es también conocido como el ciclo de vida del desarrollo de software. La metodología puede incluir la pre-definición de entregas concretas y artefactos que son creados y completados por un equipo del proyecto para desarrollar o mantener una aplicación.
La mayoría de procesos de desarrollo modernos pueden ser vagamente descritos como ágiles. Otras metodologías incluyen desarrollo en cascada, prototipado, desarrollo iterativo e incremental, desarrollo de espiral, desarrollo de aplicación rápida, y programación extrema.
Algunas personas consideran el "modelo" del ciclo de vida un término más general para una categoría de las metodologías y el "proceso" de desarrollo de software un término más concreto para referirse a un proceso concreto escogido por una organización específica. Por ejemplo, hay muchos procesos de desarrollo de software concretos que encajan en la espiral del modelo del ciclo de vida. Este campo es a menudo considerado un subconjunto del ciclo de vida del desarrollo de sistemas.
El marco de la metodología de desarrollo del software (también conocida como SDM) no emergió hasta los 60. Según Elliott (2004) el ciclo de vida del desarrollo de sistemas (SDLC) puede ser considerado el marco de metodología formalizado más antiguo por haber construido los sistemas de información. La idea principal del SDLC ha sido "perseguir el desarrollo de sistemas de la información de manera deliberada, estructurada y metódica, requiriendo cada etapa del ciclo de vida ––desde el comienzo de la idea hasta la entrega final del sistema–– para que sea realizado rígida y secuencialmente" dentro del contexto en el que el marco se aplique.[1] El objetivo principal de este marco de metodología en los 60 era "para desarrollar sistemas empresariales funcionales a gran escala en una era de conglomerados de negocios a gran escala. Las actividades de los sistemas de la información evolucionaron alrededor del procesamiento de datos pesados y las rutinas de procesamiento de números".
Las metodologías, los procesos, y la gama de marcos de pasos proscriptivos específicos que pueden ser utilizados directamente por una organización en el trabajo del día a día, a marcos flexibles que una organización usa para generar un conjunto de pasos a medida según las necesidades de un proyecto específico o un grupo. En algunos casos la organización "patrocinadora" o "que aporta la manutención" distribuye un conjunto oficial de documentos que describen el proceso. Los ejemplos concretos incluyen:
2010s
Es notable que desde DSDM en 1994, todas las metodologías de la lista de arriba, excepto RUP, han sido metodologías ágiles - aun así muchas organizaciones, especialmente gobiernos, todavía utilizan procesos anteriores a las metodologías ágiles (a menudo cascada o similar). El proceso de software y la calidad del software están estrechamente interrelacionados; algunos efectos y facetas inesperados han sido observados en la práctica[2]
Desde los inicios de los 2000s el escalado de los procesos de entrega ágil se han convertido el reto más grande para los equipos que utilizan procesos ágiles.[3]
Entre estos, otro proceso de desarrollo del software ha sido establecido en código abierto. La adopción de estas buenas prácticas conocidas y procesos establecidos dentro de los límites de una compañía se llama fuente interior.
Varias aproximaciones del desarrollo del software han sido utilizadas desde el origen de tecnología de la información, en dos categorías principales .[cita requerida] Normalmente una aproximación o una combinación de aproximaciones es escogida por un equipo de gestión o de desarrollo .[cita requerida]
Las metodologías "tradicionales" como la de cascada, que tiene distintas fases, son a veces conocidas como metodologías del ciclo de vida de desarrollo de software (SDLC), aunque este término también podría ser utilizado de manera más general para referirse a cualquier metodología.[cita requerida] Un enfoque del "ciclo de vida" con distintas fases contrasta con los enfoques de las ágiles que definen el proceso de iteración, pero donde el diseño, la construcción, y el despliegue de partes diferentes pueden ocurrir simultáneamente .[cita requerida]
La integración continua es la práctica de juntar todas las copias del trabajo de los desarrolladores en una rama principal compartida varias veces al día.[4] Grady Booch primero denominó y propuso el CI en su método de 1991, a pesar de que no defienda hacer la integración varias veces al día.[5] La programación extrema (XP) adoptó el concepto de CI y defendió que se hiciera la integración más de una vez al día – quizás tantas veces como decenas de muchos como decenas de veces al día.
El prototipado de software consiste en la creación prototipos, p.e. las versiones incompletas del software de un programa siendo desarrollado.
Los principios básicos son:
Una comprensión básica del problema fundamental del negocio es necesaria para evitar resolver los problemas equivocados, pero esto se cumple para todas las metodologías del software.
Varios métodos son aceptables para combinar metodologías de desarrollo de sistemas lineales e iterativos, con el objetivo principal de reducir el riesgo inherente del proyecto al dividir un proyecto en segmentos más pequeños y proporcionar 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 del software, que favorece 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 utilizando RAD se intercala con la escritura del propio software. La falta de una planificación previa extensa generalmente permite que el software se escriba mucho más rápido, y hace que sea más fácil cambiar los requisitos.
El proceso de rápido desarrollo comienza con el desarrollo de modelos de datos preliminares y modelos de procesos de negocios utilizan técnicas estructuradas. En la siguiente etapa, los requisitos se verifican mediante el prototipado para eventualmente refinar los modelos de datos y procesos. Estas etapas se repiten iterativamente; un mayor desarrollo da como resultado "una declaración de requisitos técnicos y diseño técnico combinados 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 basada en datos, con técnicas de creación de prototipos para acelerar el desarrollo de sistemas de software.[6]
Los principios básicos del desarrollo rápido de aplicaciones son:
El "desarrollo ágil de software" se refiere a un grupo de metodologías de desarrollo de software basadas 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 Manifesto Ágil.
El desarrollo ágil de software utiliza el desarrollo iterativo como base, pero aboga por un punto de vista más ligero y más 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.
Hay muchas metodologías ágiles, incluyendo:
El modelo en cascada es un enfoque de desarrollo secuencial, en el que se considera que el desarrollo fluye constantemente hacia abajo (como una cascada) a través de varias fases, típicamente:
La primera descripción formal del método se cita a menudo como un artículo publicado por Winston W. Royce[7] en 1970, aunque Royce no usó 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 de cascada es un enfoque de ingeniería tradicional aplicado a la ingeniería de software. Un enfoque de cascada estricto desalienta la revisión y revisión de cualquier fase previa una vez que esté completa. Esta "inflexibilidad" en un modelo de cascada pura ha sido una fuente de críticas por parte de los partidarios de otros modelos más "flexibles". Se le ha culpado ampliamente a varios proyectos gubernamentales a gran escala que superan el presupuesto, a lo largo del tiempo y en ocasiones no cumplen con los requisitos debido al enfoque de Big Design Up Front . Excepto cuando se requiere por contrato, el modelo de cascada ha sido ampliamente reemplazado por metodologías más flexibles y versátiles desarrolladas específicamente para el desarrollo de software. Ver el la critica del modelo de Cascada.
En 1988, Barry Boehm publicó un "modelo espiral" de desarrollo de software formal, que combina algunos aspectos clave del metodologías de creación rápida de prototipos, modelo de cascada y las metodologías de creación rápida de prototipos, en un esfuerzo por combinar las ventajas de los conceptos de arriba había abajo y de abajo hacia arriba. Proporcionó énfasis en un área clave que muchos consideraron que había sido descuidada por otras metodologías: análisis del riesgo iterativo deliberado, particularmente 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.
Una variedad de dichos marcos han evolucionado a lo largo de los años, reconociendo sus propias ventajas y desventajas. Un marco de metodología de desarrollo de software no es necesariamente adecuado para el uso de todos los proyectos. Cada uno de los marcos metodológicos disponibles se adapta mejor a tipos específicos de proyectos, en función de 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 los EE. UU., que requiere una calificación basada en modelos de procesos para obtener contratos. El estándar internacional para describir el método de selección, implementación y seguimiento del ciclo de vida del software es ISO/IEC 12207.
Durante décadas, el objetivo ha sido encontrar procesos repetitivos y predecibles que mejoren la productividad y la calidad. Algunos intentan sistematizar o formalizar la tarea aparentemente ingobernable de diseñar software. Otros aplican técnicas de gestión de proyectos al diseño de software. Un gran número de proyectos de software no cumple con sus expectativas en términos de funcionalidad, coste o calendario de entregas - ver Lista de proyectos de software personalizados fallidos y con exceso de presupuesto para 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 en la línea que tienen habilidades variadas, el grupo está en el centro del esfuerzo de colaboración de todos los miembros de la organización que participan en la mejora del proceso de ingeniería de software.
Un equipo de desarrollo común también puede definir los detalles del entorno, como qué entorno de desarrollo integrado está utilizando, 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.
|citeseerx=
ignorado (ayuda)