fbpx
Wikipedia

Proceso del desarrollo del software

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.

Historia

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:

1970s
  • Programación estructurada desde 1969
  • Cap Gemini SDM, originalmente de PANDATA, la primera traducción inglesa fue publicada en 1974. SDM se mantiene para la Metodología de Desarrollo de Sistemas
1980s
1990s
2000s

2010s

  • Procesos híbridos de desarrollo de software

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.

Prácticas

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]

Integración continua

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.

Prototipado

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:

  • El prototipado no es una metodología de desarrollo completa e independiente, sino más bien un enfoque para probar características particulares en el contexto de una metodología completa (como el desarrollo incremental, espiral o rápido de aplicaciones (RAD)).
  • Intentos de reducir los riesgos inherentes del proyecto a base de dividir un proyecto en pequeños segmentos proporcionando facilidad de cambio durante el proceso de desarrollo.
  • El cliente está implicado durante el proceso de desarrollo, lo cual aumenta la probabilidad de que el cliente acepte la implementación final.
  • Mientras algunos prototipos están desarrollados con la expectativa de que serán descartados, es posible que en algunos casos evolucionen de prototipo a sistema operativo.

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.

Desarrollo incremental

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

  1. Se realiza una serie de mini cascadas, donde todas las fases de la cascada se completan para una pequeña parte de un sistema, antes de pasar al siguiente incremento, o
  2. Los requisitos generales se definen antes de proceder al desarrollo evolutivo de mini cascadas de incrementos individuales de un sistema, o
  3. El concepto inicial de software, el análisis de requisitos y el diseño de la arquitectura y el núcleo del sistema se definen a través del método cascada, seguido de una implementación incremental, que culmina con la instalación de la versión final, un sistema operativo.

Desarrollo rápido de aplicaciones

 
Desarrollo de Aplicación rápida (RAD) Modelo

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 objetivo clave es el rápido desarrollo y la entrega de un sistema de alta calidad a un costo de inversión relativamente bajo.
  • Intenta 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.
  • Tiene como objetivo producir sistemas de alta calidad rápidamente, principalmente a través de prototipos iterativos (en cualquier etapa de desarrollo), participación activa del usuario y herramientas de desarrollo computarizadas. Estas herramientas pueden incluir constructores de Interfaces Gráficas de Usuario (GUI), herramientas de Ingeniería de Software Asistida por Ordenador (CASO), Sistemas de Administración de Bases de Datos (SGBD), lenguajes de programación de cuarta generación, generadores de código y técnicas orientadas a objetos.
  • El control del proyecto implica priorizar el desarrollo y definir plazos de entrega o "cajas de tiempo". Si el proyecto comienza a decaer, hay que hacer énfasis en reducir los requisitos para adaptarse a la caja de tiempo, no en aumentar el plazo.
  • Control de proyecto implica priorizar desarrollo y definiendo fechas límite de entrega o “timeboxes”. Si los inicios de proyecto para resbalar, el énfasis encima está reduciendo requisitos para caber el timebox, no en crecientes la fecha límite.
  • Generalmente incluye el diseño de aplicaciones conjuntas (JAD), donde los usuarios participan intensamente en el diseño del sistema, a través de construir consensuadamente ya sea en talleres estructurados, o en una interacción facilitada electrónicamente.
  • La participación activa del usuario es imprescindible.
  • Produce iterativamente software de producción, a diferencia de un prototipo desechable.
  • Produce la documentación necesaria para facilitar el futuro desarrollo y mantenimiento.
  • Los métodos estándar de análisis y diseño de sistemas pueden incluirse en este marco.

Metodologías

Desarrollo ágil

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:

Desarrollo en cascada

 
Las actividades del proceso de desarrollo del software representado en el modelo de cascada. Hay muchos otros modelos para representar este proceso.

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 proyecto se divide en fases secuenciales, con algunas superposiciones y salpicaduras aceptables entre fases.
  • El énfasis está en la planificación, los horarios, las fechas objetivo, los presupuestos y la implementación de todo un sistema a la vez.
  • Se mantiene un estricto control a lo largo de la vida del proyecto a través de una extensa documentación escrita, revisiones formales y aprobación por parte del usuario, y la administración de la tecnología de la información que se realiza al final de la mayoría de las fases antes de comenzar la siguiente fase. La documentación escrita es un entregable explícito de cada fase.

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.

Desarrollo de espiral

 
Modelo de espiral (Boehm, 1988)

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:

  • Se centra la atención en la evaluación de riesgos y en minimizar el riesgo del proyecto al dividir un proyecto en segmentos más pequeños y brindar mayor facilidad de cambio durante el proceso de desarrollo, así como brindar la oportunidad de evaluar los riesgos y evaluar la continuación del proyecto a lo largo del ciclo de vida.
  • "Cada ciclo implica una progresión a través de la misma secuencia de pasos, para cada parte del producto y para cada uno de sus niveles de elaboración, desde un documento de concepto de operación general hasta la codificación de cada programa individual".[8]
  • Cada viaje alrededor de la espiral pasa por cuatro cuadrantes básicos: (1) determinar objetivos, alternativas, y limitaciones de la iteración; (2) evaluar alternativas; Identificar y resolver riesgos; (3) desarrollar y verificar entregables de la iteración; y (4) planear la iteración próxima.[9]
  • Empieza cada ciclo con una identificación de las partes interesadas y sus "condiciones de victoria", y finaliza cada ciclo con una revisión y compromiso.

Otros

Otras metodologías de proyectos de software de alto nivel incluyen:

  • Desarrollo orientado al comportamiento y gestión de procesos de negocio.[10]
  • Modelo de caos - La regla principal siempre es resolver primero el problema más importante.
  • Metodología de financiamiento incremental - un enfoque iterativo
  • Metodología ligera - un término general para métodos que solo tienen algunas reglas y prácticas.
  • Análisis de sistemas estructurados y método de diseño - una versión específica de cascada.
  • La programación lenta, como parte del Movimiento Lento más grande, enfatiza el trabajo cuidadoso y gradual sin presiones de tiempo (o mínimas). La programación lenta apunta a evitar errores y programas de lanzamiento demasiado rápidos.
  • Modelo en V (desarrollo de software) - una extensión del modelo de cascada
  • Proceso unificado (UP) es un marco de metodología de desarrollo de software iterativo, basado en Modelo Unificado del Lenguaje (UML). UP organiza el desarrollo del software en cuatro fases, cada una de las cuales consta de una o más iteraciones ejecutables del software en esa etapa de desarrollo: creación, elaboración, construcción y directrices. Existen muchas herramientas y productos para facilitar la implementación de UP. Una de las versiones más populares de UP es el Proceso Unificado Racional (RUP).

Procesar los meta-modelos

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

  • ISO/IEC 12207 es el estándar internacional que describe el método para seleccionar, implementar y monitorear el ciclo de vida del software.Capability Maturity Model Integration
  • La Integración de Modelos de Madurez de Capacidad (CMMI) es uno de los modelos líderes y se basa en las mejores prácticas. Las evaluaciones independientes califican a las organizaciones sobre la forma en que siguen sus procesos definidos, no sobre la calidad de esos procesos o el software producido. CMMI ha reemplazado a CMM.
  • ISO 9000 describe los estándares para un proceso organizado formalmente para fabricar un producto y los métodos de administración y seguimiento del progreso. Aunque el estándar se creó originalmente para el sector de fabricación, los estándares ISO 9000 también se han aplicado al desarrollo de software. Al igual que CMMI, la certificación con ISO 9000 no garantiza la calidad del resultado final, solo se han seguido los procesos de negocios formalizados.
  • ISO/IEC 15504 tecnología de la Información La evaluación de procesos, también conocida como Determinación de capacidad de mejora de procesos de software (SPICE), es un "marco para la evaluación de procesos de software". Este estándar tiene como objetivo establecer un modelo claro para la comparación de procesos. SPICE se usa como CMMI. Modela procesos para gestionar, controlar, guiar y hacer el seguimiento del desarrollo de software. Este modelo se usa para medir lo que realmente hace una organización de desarrollo o un equipo de proyecto durante el desarrollo de software. Esta información se analiza para identificar las debilidades e impulsar la mejora. También identifica fortalezas que pueden continuarse o integrarse en la práctica común de esa organización o equipo.
  • SPEM 2.0 por el Grupo de Gestión de Objetos
  • Metodología de sistemas blandos - un método general para mejorar los procesos de gestión.
  • Ingeniería de método - un método general para mejorar los procesos del sistema de la información.

En la práctica

 
Los tres enfoques básicos aplicados a los marcos metodológicos de desarrollo de software.

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.

 
Ciclo de vida de desarrollo de software (SDLC)

Véase también

Referencias

  1. Geoffrey Elliott (2004) Global Business Information Technology: an integrated systems approach. Pearson Education. p.87.
  2. Suryanarayana, Girish (2015). «Software Process versus Design Quality: Tug of War?». IEEE Software 32 (4): 7-11. doi:10.1109/MS.2015.87. 
  3. saeeda, Hina; Khalid, Hannan; Ahmed, Mukhtar; Sameer, Abu; Arif, Fahim (1 de septiembre de 2015). «Systematic Literature Review of Agile Scalability for Large Scale Projects». ResearchGate 6 (9). ISSN 2156-5570. doi:10.14569/IJACSA.2015.060908.  Parámetro desconocido |citeseerx= ignorado (ayuda)
  4. «Continuous Integration». 
  5. Booch, Grady (1991). Object Oriented Design: With Applications. Benjamin Cummings. p. 209. ISBN 9780805300918. Consultado el 18 de agosto de 2014. 
  6. Whitten, Jeffrey L.; Lonnie D. Bentley, Kevin C. Dittman. (2003). Systems Analysis and Design Methods. 6th edition.
  7. Wasserfallmodell > Entstehungskontext, Markus Rerych, Institut für Gestaltungs- und Wirkungsforschung, TU-Wien. Accessed on line November 28, 2007.
  8. Barry Boehm (1996)., "A Spiral Model of Software Development and Enhancement". In: ACM SIGSOFT Software Engineering Notes (ACM) 11(4):14-24, August 1986
  9. Richard H. Thayer, Barry W. Boehm (1986). Tutorial: software engineering project management. Computer Society Press of the IEEE. p.130
  10. Lübke, Daniel; van Lessen, Tammo (2016). «Modeling Test Cases in BPMN for Behavior-Driven Development». IEEE Software 33 (5): 15-21. doi:10.1109/MS.2016.117. 

Enlaces externos

  • at cms.hhs.gov.
  • Gerhard Fischer, , 2001
  • Subway map of agile practices at Agile Alliance
  •   Datos: Q2904257
  •   Multimedia: Software development methodology

proceso, desarrollo, software, sugerido, este, artículo, sección, fusionado, proceso, para, desarrollo, software, para, más, información, véase, discusión, hayas, realizado, fusión, contenidos, pide, fusión, historiales, aquí, este, aviso, puesto, diciembre, 2. Se ha sugerido que este articulo o seccion sea fusionado con Proceso para el desarrollo de software Para mas informacion vease la discusion Una vez que hayas realizado la fusion de contenidos pide la fusion de historiales aqui Este aviso fue puesto el 10 de diciembre de 2018 En ingenieria 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 diseno la gestion del producto y la gestion de proyecto Es tambien conocido como el ciclo de vida del desarrollo de software La metodologia puede incluir la pre definicion de entregas concretas y artefactos que son creados y completados por un equipo del proyecto para desarrollar o mantener una aplicacion La mayoria de procesos de desarrollo modernos pueden ser vagamente descritos como agiles Otras metodologias incluyen desarrollo en cascada prototipado desarrollo iterativo e incremental desarrollo de espiral desarrollo de aplicacion rapida y programacion extrema Algunas personas consideran el modelo del ciclo de vida un termino mas general para una categoria de las metodologias y el proceso de desarrollo de software un termino mas concreto para referirse a un proceso concreto escogido por una organizacion especifica 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 Indice 1 Historia 2 Practicas 2 1 Integracion continua 2 2 Prototipado 2 3 Desarrollo incremental 2 4 Desarrollo rapido de aplicaciones 3 Metodologias 3 1 Desarrollo agil 3 2 Desarrollo en cascada 3 3 Desarrollo de espiral 3 4 Otros 4 Procesar los meta modelos 5 En la practica 6 Vease tambien 7 Referencias 8 Enlaces externosHistoria EditarEl marco de la metodologia de desarrollo del software tambien conocida como SDM no emergio hasta los 60 Segun Elliott 2004 el ciclo de vida del desarrollo de sistemas SDLC puede ser considerado el marco de metodologia formalizado mas antiguo por haber construido los sistemas de informacion La idea principal del SDLC ha sido perseguir el desarrollo de sistemas de la informacion de manera deliberada estructurada y metodica requiriendo cada etapa del ciclo de vida desde el comienzo de la idea hasta la entrega final del sistema para que sea realizado rigida y secuencialmente dentro del contexto en el que el marco se aplique 1 El objetivo principal de este marco de metodologia 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 informacion evolucionaron alrededor del procesamiento de datos pesados y las rutinas de procesamiento de numeros Las metodologias los procesos y la gama de marcos de pasos proscriptivos especificos que pueden ser utilizados directamente por una organizacion en el trabajo del dia a dia a marcos flexibles que una organizacion usa para generar un conjunto de pasos a medida segun las necesidades de un proyecto especifico o un grupo En algunos casos la organizacion patrocinadora o que aporta la manutencion distribuye un conjunto oficial de documentos que describen el proceso Los ejemplos concretos incluyen 1970sProgramacion estructurada desde 1969 Cap Gemini SDM originalmente de PANDATA la primera traduccion inglesa fue publicada en 1974 SDM se mantiene para la Metodologia de Desarrollo de Sistemas1980sAnalisis de sistemas estructurados y metodo de diseno SSADM desde 1980 en adelante Analisis de los requisitos de la informacion metodologia del software de los sistemas1990sLa programacion orientada a objetos POO se desarrollo al principio de los 60 y se convirtio en el enfoque dominante de la programacion a mediados de los 90 Desarrollo rapido de aplicaciones RAD desde 1991 Metodo dinamico de desarrollo de sistemas DSDM desde 1994 Scrum desde entonces 1995 Proceso de software en equipo desde 1998 Proceso Unificado racional RUP mantenido por IBM desde 1998 Programacion extrema desde 19992000sProceso Unificado agil AUP mantenido desde 2005 por Scott Ambler Entrega agil disciplinada DAD sustituye AUP2010s Marco agil escalado SAFe Scrum a gran escala LeSS Procesos hibridos de desarrollo de softwareEs notable que desde DSDM en 1994 todas las metodologias de la lista de arriba excepto RUP han sido metodologias agiles aun asi muchas organizaciones especialmente gobiernos todavia utilizan procesos anteriores a las metodologias agiles a menudo cascada o similar El proceso de software y la calidad del software estan estrechamente interrelacionados algunos efectos y facetas inesperados han sido observados en la practica 2 Desde los inicios de los 2000s el escalado de los procesos de entrega agil se han convertido el reto mas grande para los equipos que utilizan procesos agiles 3 Entre estos otro proceso de desarrollo del software ha sido establecido en codigo abierto La adopcion de estas buenas practicas conocidas y procesos establecidos dentro de los limites de una compania se llama fuente interior Practicas EditarVarias aproximaciones del desarrollo del software han sido utilizadas desde el origen de tecnologia de la informacion en dos categorias principales cita requerida Normalmente una aproximacion o una combinacion de aproximaciones es escogida por un equipo de gestion o de desarrollo cita requerida Las metodologias tradicionales como la de cascada que tiene distintas fases son a veces conocidas como metodologias del ciclo de vida de desarrollo de software SDLC aunque este termino tambien podria ser utilizado de manera mas general para referirse a cualquier metodologia cita requerida Un enfoque del ciclo de vida con distintas fases contrasta con los enfoques de las agiles que definen el proceso de iteracion pero donde el diseno la construccion y el despliegue de partes diferentes pueden ocurrir simultaneamente cita requerida Integracion continua Editar La integracion continua es la practica de juntar todas las copias del trabajo de los desarrolladores en una rama principal compartida varias veces al dia 4 Grady Booch primero denomino y propuso el CI en su metodo de 1991 a pesar de que no defienda hacer la integracion varias veces al dia 5 La programacion extrema XP adopto el concepto de CI y defendio que se hiciera la integracion mas de una vez al dia quizas tantas veces como decenas de muchos como decenas de veces al dia Prototipado Editar El prototipado de software consiste en la creacion prototipos p e las versiones incompletas del software de un programa siendo desarrollado Los principios basicos son El prototipado no es una metodologia de desarrollo completa e independiente sino mas bien un enfoque para probar caracteristicas particulares en el contexto de una metodologia completa como el desarrollo incremental espiral o rapido de aplicaciones RAD Intentos de reducir los riesgos inherentes del proyecto a base de dividir un proyecto en pequenos segmentos proporcionando facilidad de cambio durante el proceso de desarrollo El cliente esta implicado durante el proceso de desarrollo lo cual aumenta la probabilidad de que el cliente acepte la implementacion final Mientras algunos prototipos estan desarrollados con la expectativa de que seran descartados es posible que en algunos casos evolucionen de prototipo a sistema operativo Una comprension basica del problema fundamental del negocio es necesaria para evitar resolver los problemas equivocados pero esto se cumple para todas las metodologias del software Desarrollo incremental Editar Varios metodos son aceptables para combinar metodologias de desarrollo de sistemas lineales e iterativos con el objetivo principal de reducir el riesgo inherente del proyecto al dividir un proyecto en segmentos mas pequenos y proporcionar mas facilidad de cambio durante el proceso de desarrollo Hay tres variantes principales de desarrollo incremental Se realiza una serie de mini cascadas donde todas las fases de la cascada se completan para una pequena parte de un sistema antes de pasar al siguiente incremento o Los requisitos generales se definen antes de proceder al desarrollo evolutivo de mini cascadas de incrementos individuales de un sistema o El concepto inicial de software el analisis de requisitos y el diseno de la arquitectura y el nucleo del sistema se definen a traves del metodo cascada seguido de una implementacion incremental que culmina con la instalacion de la version final un sistema operativo Desarrollo rapido de aplicaciones Editar Desarrollo de Aplicacion rapida RAD Modelo El desarrollo rapido de aplicaciones RAD es una metodologia de desarrollo del software que favorece desarrollo iterativo y la construccion rapida de prototipos en lugar de grandes cantidades de planificacion inicial La planificacion del software desarrollado utilizando RAD se intercala con la escritura del propio software La falta de una planificacion previa extensa generalmente permite que el software se escriba mucho mas rapido y hace que sea mas facil cambiar los requisitos El proceso de rapido desarrollo comienza con el desarrollo de modelos de datos preliminares y modelos de procesos de negocios utilizan tecnicas 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 declaracion de requisitos tecnicos y diseno tecnico combinados que se utilizara para construir nuevos sistemas El termino se utilizo por primera vez para describir un proceso de desarrollo de software introducido por James Martin en 1991 Segun Whitten 2003 es una fusion de varias tecnicas estructuradas especialmente ingenieria de tecnologia de la informacion basada en datos con tecnicas de creacion de prototipos para acelerar el desarrollo de sistemas de software 6 Los principios basicos del desarrollo rapido de aplicaciones son El objetivo clave es el rapido desarrollo y la entrega de un sistema de alta calidad a un costo de inversion relativamente bajo Intenta reducir el riesgo inherente del proyecto dividiendo un proyecto en segmentos mas pequenos y proporcionando mas facilidad de cambio durante el proceso de desarrollo Tiene como objetivo producir sistemas de alta calidad rapidamente principalmente a traves de prototipos iterativos en cualquier etapa de desarrollo participacion activa del usuario y herramientas de desarrollo computarizadas Estas herramientas pueden incluir constructores de Interfaces Graficas de Usuario GUI herramientas de Ingenieria de Software Asistida por Ordenador CASO Sistemas de Administracion de Bases de Datos SGBD lenguajes de programacion de cuarta generacion generadores de codigo y tecnicas orientadas a objetos El control del proyecto implica priorizar el desarrollo y definir plazos de entrega o cajas de tiempo Si el proyecto comienza a decaer hay que hacer enfasis en reducir los requisitos para adaptarse a la caja de tiempo no en aumentar el plazo Control de proyecto implica priorizar desarrollo y definiendo fechas limite de entrega o timeboxes Si los inicios de proyecto para resbalar el enfasis encima esta reduciendo requisitos para caber el timebox no en crecientes la fecha limite Generalmente incluye el diseno de aplicaciones conjuntas JAD donde los usuarios participan intensamente en el diseno del sistema a traves de construir consensuadamente ya sea en talleres estructurados o en una interaccion facilitada electronicamente La participacion activa del usuario es imprescindible Produce iterativamente software de produccion a diferencia de un prototipo desechable Produce la documentacion necesaria para facilitar el futuro desarrollo y mantenimiento Los metodos estandar de analisis y diseno de sistemas pueden incluirse en este marco Metodologias EditarDesarrollo agil Editar El desarrollo agil de software se refiere a un grupo de metodologias de desarrollo de software basadas en el desarrollo iterativo donde los requisitos y las soluciones evolucionan a traves de la colaboracion entre equipos multifuncionales autoorganizados El termino fue acunado en el ano 2001 cuando se formulo el Manifesto Agil El desarrollo agil de software utiliza el desarrollo iterativo como base pero aboga por un punto de vista mas ligero y mas centrado en las personas que los enfoques tradicionales Los procesos agiles incorporan fundamentalmente la iteracion y la retroalimentacion continua que proporciona para refinar y entregar sucesivamente un sistema de software Hay muchas metodologias agiles incluyendo Metodo de desarrollo de sistemas dinamicos DSDM Kanban ScrumDesarrollo en cascada Editar Las actividades del proceso de desarrollo del software representado en el modelo de cascada Hay muchos otros modelos para representar este proceso 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 traves de varias fases tipicamente Analisis de requisitos que resulta en una especificacion de requisitos de software Diseno del software Implementacion Testeo Integracion si hay multiples subsistemas Despliegue o Instalacion MantenimientoLa primera descripcion formal del metodo se cita a menudo como un articulo publicado por Winston W Royce 7 en 1970 aunque Royce no uso el termino cascada en este articulo Royce presento este modelo como un ejemplo de un modelo defectuoso que no funciona Los principios basicos son El proyecto se divide en fases secuenciales con algunas superposiciones y salpicaduras aceptables entre fases El enfasis esta en la planificacion los horarios las fechas objetivo los presupuestos y la implementacion de todo un sistema a la vez Se mantiene un estricto control a lo largo de la vida del proyecto a traves de una extensa documentacion escrita revisiones formales y aprobacion por parte del usuario y la administracion de la tecnologia de la informacion que se realiza al final de la mayoria de las fases antes de comenzar la siguiente fase La documentacion escrita es un entregable explicito de cada fase El modelo de cascada es un enfoque de ingenieria tradicional aplicado a la ingenieria de software Un enfoque de cascada estricto desalienta la revision y revision de cualquier fase previa una vez que este completa Esta inflexibilidad en un modelo de cascada pura ha sido una fuente de criticas por parte de los partidarios de otros modelos mas 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 metodologias mas flexibles y versatiles desarrolladas especificamente para el desarrollo de software Ver el la critica del modelo de Cascada Desarrollo de espiral Editar Modelo de espiral Boehm 1988 En 1988 Barry Boehm publico un modelo espiral de desarrollo de software formal que combina algunos aspectos clave del metodologias de creacion rapida de prototipos modelo de cascada y las metodologias de creacion rapida de prototipos en un esfuerzo por combinar las ventajas de los conceptos de arriba habia abajo y de abajo hacia arriba Proporciono enfasis en un area clave que muchos consideraron que habia sido descuidada por otras metodologias analisis del riesgo iterativo deliberado particularmente adecuado para sistemas complejos a gran escala Los principios basicos son Se centra la atencion en la evaluacion de riesgos y en minimizar el riesgo del proyecto al dividir un proyecto en segmentos mas pequenos y brindar mayor facilidad de cambio durante el proceso de desarrollo asi como brindar la oportunidad de evaluar los riesgos y evaluar la continuacion del proyecto a lo largo del ciclo de vida Cada ciclo implica una progresion a traves de la misma secuencia de pasos para cada parte del producto y para cada uno de sus niveles de elaboracion desde un documento de concepto de operacion general hasta la codificacion de cada programa individual 8 Cada viaje alrededor de la espiral pasa por cuatro cuadrantes basicos 1 determinar objetivos alternativas y limitaciones de la iteracion 2 evaluar alternativas Identificar y resolver riesgos 3 desarrollar y verificar entregables de la iteracion y 4 planear la iteracion proxima 9 Empieza cada ciclo con una identificacion de las partes interesadas y sus condiciones de victoria y finaliza cada ciclo con una revision y compromiso Otros Editar Otras metodologias de proyectos de software de alto nivel incluyen Desarrollo orientado al comportamiento y gestion de procesos de negocio 10 Modelo de caos La regla principal siempre es resolver primero el problema mas importante Metodologia de financiamiento incremental un enfoque iterativo Metodologia ligera un termino general para metodos que solo tienen algunas reglas y practicas Analisis de sistemas estructurados y metodo de diseno una version especifica de cascada La programacion lenta como parte del Movimiento Lento mas grande enfatiza el trabajo cuidadoso y gradual sin presiones de tiempo o minimas La programacion lenta apunta a evitar errores y programas de lanzamiento demasiado rapidos Modelo en V desarrollo de software una extension del modelo de cascada Proceso unificado UP es un marco de metodologia de desarrollo de software iterativo basado en Modelo Unificado del Lenguaje UML UP organiza el desarrollo del software en cuatro fases cada una de las cuales consta de una o mas iteraciones ejecutables del software en esa etapa de desarrollo creacion elaboracion construccion y directrices Existen muchas herramientas y productos para facilitar la implementacion de UP Una de las versiones mas populares de UP es el Proceso Unificado Racional RUP Procesar los meta modelos EditarAlgunos modelos de proceso son descripciones abstractas para evaluar comparar y mejorar el proceso especifico adoptado por una organizacion ISO IEC 12207 es el estandar internacional que describe el metodo para seleccionar implementar y monitorear el ciclo de vida del software Capability Maturity Model Integration La Integracion de Modelos de Madurez de Capacidad CMMI es uno de los modelos lideres y se basa en las mejores practicas Las evaluaciones independientes califican a las organizaciones sobre la forma en que siguen sus procesos definidos no sobre la calidad de esos procesos o el software producido CMMI ha reemplazado a CMM ISO 9000 describe los estandares para un proceso organizado formalmente para fabricar un producto y los metodos de administracion y seguimiento del progreso Aunque el estandar se creo originalmente para el sector de fabricacion los estandares ISO 9000 tambien se han aplicado al desarrollo de software Al igual que CMMI la certificacion con ISO 9000 no garantiza la calidad del resultado final solo se han seguido los procesos de negocios formalizados ISO IEC 15504 tecnologia de la Informacion La evaluacion de procesos tambien conocida como Determinacion de capacidad de mejora de procesos de software SPICE es un marco para la evaluacion de procesos de software Este estandar tiene como objetivo establecer un modelo claro para la comparacion de procesos SPICE se usa como CMMI Modela procesos para gestionar controlar guiar y hacer el seguimiento del desarrollo de software Este modelo se usa para medir lo que realmente hace una organizacion de desarrollo o un equipo de proyecto durante el desarrollo de software Esta informacion se analiza para identificar las debilidades e impulsar la mejora Tambien identifica fortalezas que pueden continuarse o integrarse en la practica comun de esa organizacion o equipo SPEM 2 0 por el Grupo de Gestion de Objetos Metodologia de sistemas blandos un metodo general para mejorar los procesos de gestion Ingenieria de metodo un metodo general para mejorar los procesos del sistema de la informacion En la practica Editar Los tres enfoques basicos aplicados a los marcos metodologicos de desarrollo de software Una variedad de dichos marcos han evolucionado a lo largo de los anos reconociendo sus propias ventajas y desventajas Un marco de metodologia de desarrollo de software no es necesariamente adecuado para el uso de todos los proyectos Cada uno de los marcos metodologicos disponibles se adapta mejor a tipos especificos de proyectos en funcion de diversas consideraciones tecnicas organizativas de proyecto y de equipo Las organizaciones de desarrollo de software implementan metodologias de proceso para facilitar el proceso de desarrollo A veces los contratistas pueden requerir metodologias empleadas un ejemplo es la industria de defensa de los EE UU que requiere una calificacion basada en modelos de procesos para obtener contratos El estandar internacional para describir el metodo de seleccion implementacion y seguimiento del ciclo de vida del software es ISO IEC 12207 Durante decadas 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 disenar software Otros aplican tecnicas de gestion de proyectos al diseno de software Un gran numero de proyectos de software no cumple con sus expectativas en terminos 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 Ingenieria de Software SEPG que es el punto focal para la mejora de procesos Compuesto por profesionales en la linea que tienen habilidades variadas el grupo esta en el centro del esfuerzo de colaboracion de todos los miembros de la organizacion que participan en la mejora del proceso de ingenieria de software Un equipo de desarrollo comun tambien puede definir los detalles del entorno como que entorno de desarrollo integrado esta utilizando y uno o mas paradigmas de programacion dominantes reglas de estilo de programacion o la eleccion de bibliotecas de software o marcos de software especificos Estos detalles generalmente no estan dictados por la eleccion del modelo o la metodologia general Ciclo de vida de desarrollo de software SDLC Vease tambien EditarSystems development life cycle Herramienta CASE Anexo Filosofias del desarrollo de software Outline of software engineering OpenUP Gestion de proyectos Proceso para el desarrollo de software Software development effort estimation Ciclo de vida del lanzamiento de software Top down and bottom up design Computer scienceReferencias Editar Geoffrey Elliott 2004 Global Business Information Technology an integrated systems approach Pearson Education p 87 Suryanarayana Girish 2015 Software Process versus Design Quality Tug of War IEEE Software 32 4 7 11 doi 10 1109 MS 2015 87 saeeda Hina Khalid Hannan Ahmed Mukhtar Sameer Abu Arif Fahim 1 de septiembre de 2015 Systematic Literature Review of Agile Scalability for Large Scale Projects ResearchGate 6 9 ISSN 2156 5570 doi 10 14569 IJACSA 2015 060908 Parametro desconocido citeseerx ignorado ayuda Continuous Integration Booch Grady 1991 Object Oriented Design With Applications Benjamin Cummings p 209 ISBN 9780805300918 Consultado el 18 de agosto de 2014 Whitten Jeffrey L Lonnie D Bentley Kevin C Dittman 2003 Systems Analysis and Design Methods 6th edition Wasserfallmodell gt Entstehungskontext Markus Rerych Institut fur Gestaltungs und Wirkungsforschung TU Wien Accessed on line November 28 2007 Barry Boehm 1996 A Spiral Model of Software Development and Enhancement In ACM SIGSOFT Software Engineering Notes ACM 11 4 14 24 August 1986 Richard H Thayer Barry W Boehm 1986 Tutorial software engineering project management Computer Society Press of the IEEE p 130 Lubke Daniel van Lessen Tammo 2016 Modeling Test Cases in BPMN for Behavior Driven Development IEEE Software 33 5 15 21 doi 10 1109 MS 2016 117 Enlaces externos EditarSelecting a development approach at cms hhs gov Gerhard Fischer The Software Technology of the 21st Century From Software Reuse to Collaborative Software Design 2001 Subway map of agile practices at Agile Alliance Datos Q2904257 Multimedia Software development methodology Obtenido de https es wikipedia org w index php title Proceso del desarrollo del software amp oldid 138563487, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos