fbpx
Wikipedia

Proceso para el desarrollo de software

El Proceso para el desarrollo de software, también denominado ciclo de vida del desarrollo de software es una estructura aplicada al desarrollo de un producto de software. Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. Algunos autores consideran un modelo de ciclo de vida un término más general que un determinado proceso para el desarrollo de software. Por ejemplo, hay varios procesos de desarrollo de software específicos que se ajustan a un modelo de ciclo de vida de espiral.

Generalidades

La gran cantidad de organizaciones de desarrollo de software implementan metodologías para el proceso de desarrollo. Muchas de estas organizaciones pertenecen a la industria armamentística, que en los Estados Unidos necesita un certificado basado en su modelo de procesos para poder obtener un contrato.

El estándar internacional que regula el método de selección, implementación y monitoreo del ciclo de vida del software es ISO 12207.

Durante décadas se ha perseguido la meta de encontrar procesos reproducibles y predecibles que mejoren la productividad y la calidad. Algunas de estas soluciones intentan sistematizar o formalizar la aparentemente desorganizada tarea de desarrollar software. Otros aplican técnicas de gestión de proyectos para la creación del software. Sin una gestión del proyecto, los proyectos de software corren el riesgo de demorarse o consumir un presupuesto mayor que el planeado. Dada la cantidad de proyectos de software que no cumplen sus metas en términos de funcionalidad, costes o tiempo de entrega, una gestión de proyectos efectiva es algo imprescindible.

Algunas organizaciones crean un grupo propio (Software Engineering Process Group, abreviado SEPG) encargado de mejorar los procesos para el desarrollo de software en la organización.

Actividades del desarrollo de software

 
Actividades del proceso de desarrollo de software representados en el desarrollo en cascada. Hay algunos modelos más para representar este proceso.

Planificación

La importante tarea a la hora de crear un producto de software es obtener los requisitos o el análisis de los requisitos. Los clientes suelen tener una idea más bien abstracta del resultado final, pero no sobre las funciones que debería cumplir el software.

Una vez que se hayan recopilado los requisitos del cliente, se debe realizar un análisis del ámbito del desarrollo. Este documento se conoce como especificación funcional.

  • Planificación: es el paso previo al inicio de cualquier proyecto de desarrollo y sin dudas el más importante. En este se definen los requerimientos y funcionalidades que debe tener el software, mediante el trabajo en conjunto entre los desarrolladores, el departamento de ventas, los estudios de mercado y, fundamentalmente, el contacto con el cliente. En este punto se realizan asimismo los análisis de riesgo para el emprendimiento y se fijan los requisitos de aseguramiento de la calidad.

Implementación, pruebas y documentación

La implementación es parte del proceso en el que los ingenieros de software programan el código para el proyecto de trabajo que está en relación de las demandas del software, en esta etapa se realizan las pruebas de caja blanca y caja negra.

Las pruebas de software son parte esencial del proceso de desarrollo del software. Esta parte del proceso tiene la función de detectar los errores de software lo antes posible.

La documentación del diseño interno del software con el objetivo de facilitar su mejora y su mantenimiento se realiza a lo largo del proyecto. Esto puede incluir la documentación de un API, tanto interior como exterior. Prácticamente es como una receta de cocina


Despliegue y mantenimiento

El despliegue comienza cuando el código ha sido suficientemente probado, ha sido aprobado para su liberación y ha sido distribuido en el entorno de producción.

Entrenamiento y soporte para el software es de suma importancia y algo que muchos desarrolladores de software descuidan. Los usuarios, por naturaleza, se oponen al cambio porque conlleva una cierta inseguridad, es por ello que es fundamental instruir de forma adecuada a los futuros usuarios del software.

El mantenimiento o mejora de un software con problemas recientemente desplegado, puede requerir más tiempo que el desarrollo inicial del software. Es posible que haya que incorporar código que no se ajusta al diseño original con el objetivo de solucionar un problema o ampliar la funcionalidad para un cliente. Si los costes de mantenimiento son muy elevados puede que sea oportuno rediseñar el sistema para poder contener los costes de mantenimiento.

Modelos de Desarrollo de Software

Los modelos de desarrollo de software son una representación abstracta de una manera en particular. Realmente no representa cómo se debe desarrollar el software, sino de un enfoque común. Puede ser modificado y adaptado de acuerdo a las necesidades del software en proceso de desarrollo. [1]​ Hay varios modelos para perfilar el proceso de desarrollo, cada uno de las cuales cuenta con pros y contras. El proyecto debería escoger el más apropiado para sus necesidades. En ocasiones puede que una combinación de varios modelos sea apropiado. Existen tres paradigmas de los modelos de desarrollo de software:

1. Paradigma Tradicional:

Es uno de los paradigmas más antiguo, se inventó durante la creación del método estructurado. Si se elige un proyecto, el método varia en etapas.[2]​ Como todo modelo, existen sus pros y contras al usar este paradigma:

 

Si se aplica este paradigma, unos de los principales problemas , es que las etapas realizadas no son autónomas de las siguientes, creando una dependencia estructural y en el caso de un error atrasaría todo el proyecto. Se tiene que tener pautas bien definidas, y que no se incurra a modificación porque implicaría en que el software no cumpla con su ciclo de vida. Tener en cuenta que el cliente no se vea afectado por la impaciencia.[3]

2. Paradigma Orientado a Objetos: Estos modelos se basan en la Programación orientada a objetos; por lo tanto, se refiere al concepto de clase, el análisis de requisitos y el diseño. El modelo o paradigma orientado a objetos posee dos características principales, las cuales son:

  • Permite la re-utilización de software.
  • Facilita el desarrollo de herramientas informáticas de apoyo al desarrollo, el cual es simple al implementarla en una notación orientado a objetos llamado UML.[4]

3. Paradigma de Desarrollo Ágil: Es un paradigma de las Metodologías De Desarrollo basado en procesos ágiles. Estos intentan evitar los tediosos caminos de las metodologías tradicionales enfocándose en las personas y los resultados. Usa un enfoque basado en el Valor para construir software, colaborando con el cliente e incorporando los cambios continuamente.[4]

Modelo de cascada

El modelo de cascada define las siguientes etapas que deben cumplirse de forma sucesiva:

  1. Especificación de requisitos
  2. Diseño del software
  3. Construcción o Implementación del software
  4. Integración
  5. Pruebas (o validación)
  6. Despliegue (o instalación)
  7. Mantenimiento

Siguiendo el modelo de cascada de forma estricta, sólo cuando se finaliza una fase, comienza la otra. En ocasiones se realiza una revisión antes de iniciar la siguiente fase, lo que permite la posibilidad de cambios (lo que puede incluir un proceso de control formal de cambio). Las revisiones también se utilizan para asegurar que la fase anterior ha sido totalmente finalizada; los criterios para completar una fase se conocen frecuentemente con el término inglés "gate" (puerta). Este modelo desaconseja revisitar y revisar fases que ya se han completado. Esta falta de flexibilidad en un modelo de cascada puro ha sido fuente de crítica de los defensores de modelos más flexibles.

Modelo de espiral

La principal característica del modelo en espiral es la gestión de riesgos de forma periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, combinando algunos aspectos clave de las metodologías del modelo de cascada y del desarrollo rápido de aplicaciones, pero dando énfasis en un área que para muchos no jugó el papel que requiere en otros modelos: un análisis iterativo y concienzudo de los riesgos, especialmente en el caso de sistema complejos de gran escala.

La espiral se visualiza como un proceso que pasa a través de algunas interacciones con el diagrama de los cuatro cuadrantes representativos de las siguientes actividades:

  1. crear planes con el propósito de identificar los objetivos del software, seleccionados para implementar el programa y clarificar las restricciones en el desarrollo del software;
  2. Análisis de riesgos: una evaluación analítica de programas seleccionados, para evaluar como identificar y eliminar el riesgo;
  3. la implementación del proyecto: implementación del desarrollo del software y su pertinente verificación;

Modelo de espiral con énfasis en los riesgos, haciendo hincapié en las condiciones de las opciones y limitaciones para facilitar la reutilización de software, la calidad del software puede ayudar como una meta propia en la integración en el desarrollo del producto. Sin embargo, el modelo en espiral tiene algunas limitaciones, entre las que destacan:

  1. El énfasis se sitúa en el análisis de riesgo, y por lo tanto requiere de clientes que acepten este análisis y actúen en consecuencia. Para ello es necesaria confianza en los desarrolladores así como la predisposición a gastar más para solventar los temas, por lo cual este modelo se utiliza frecuentemente en desarrollo interno de software a gran escala.
  2. Si la implementación del riesgo de análisis afectará de forma esencial los beneficios del proyecto, no debería utilizarse este modelo.
  3. Los desarrolladores de software han de buscar de forma explícita riesgos y analizarlos de forma exhaustiva para que este modelo funcione.

La primera fase es la búsqueda de un plan para conseguir los objetivos con las limitaciones del proyecto para así buscar y eliminar todos los riesgos potenciales por medio de un cuidadoso análisis, y si fuera necesario incluyendo la fabricación de un prototipo. Si es imposible descartar algunos riesgos, el cliente ha de decidir si es conveniente terminar el proyecto o seguir adelante ignorando los riesgos. Por último, se evalúan los resultados y se inicia el diseño de la siguiente fase.

Desarrollo iterativo e incremental

El desarrollo iterativo recomienda la construcción de secciones reducidas de software que irán ganando en tamaño para facilitar así la detección de problemas de importancia antes de que sea demasiado tarde. Los procesos iterativos pueden ayudar a desvelar metas del diseño en el caso de clientes que no saben cómo definir lo que quieren.[5]

Desarrollo ágil

El desarrollo ágil de software utiliza un desarrollo iterativo como base para abogar por un punto de vista más ligero y más centrado en las personas que en el caso de las soluciones tradicionales. Los procesos ágiles utilizan retroalimentación en lugar de planificación, como principal mecanismo de control. La retroalimentación se canaliza por medio de pruebas periódicas y frecuentes versiones del software.

Hay muchas variantes de los procesos ágiles:

  • En el caso de la programación extrema (XP), las fases se realizan en pasos muy cortos (o "continuos") con respecto al anterior. El primer paso (intencionalmente incompleto) por los pasos puede ocurrir en un día o en una semana, en lugar de los meses o años de cada paso completo en el modelo en cascada. En primer lugar, se crean pruebas automatizadas para proveer metas concretas al desarrollo. Después se programa el código, que será completo cuando todas las pruebas se superan sin errores, y los desarrolladores ya no sabrían como mejorar el conjunto de pruebas necesario. El diseño y la arquitectura emergen a partir de la refactorización del código, y se da después de programar. El diseño lo realizan los propios desarrolladores del código. El sistema, incompleto, pero funcional se despliega para su demostración a los usuarios (al menos uno de los cuales pertenece al equipo de desarrollo). Llegado este punto, los profesionales comienzan a escribir las pruebas para la siguiente parte del sistema de más importancia.

Codificación y corrección

El desarrollo de codificación y corrección (en inglés "Code and fix") es, más que una estrategia predeterminada, el resultado de una falta de experiencia o presión que se ejerce sobre los desarrolladores para cumplir con una fecha de entrega.[6]​ Sin dedicar tiempo de forma explícita para el diseño, los programadores comienzan de forma inmediata a producir código. Antes o después comienza la fase de pruebas de software (a menudo de forma tardía) y los inevitables errores que se encuentran han de eliminarse antes de poder entregar el software.

Orientado a la Reutilización

La reutilización de software es un proceso donde se recurre al uso de activos de software en las especificaciones de análisis, diseños, implementación y pruebas de una aplicación o sistemas de software.[7]

La reutilización tiene ciertos Indicadores por ejemplo:

1. Entre el 40% y 60% de una aplicación es re-utilizable en otra.

2. Aproximadamente el 0% de una aplicación administrativa es re-utilizable.

3. Aproximadamente el 75% de las funciones son comunes a más de un programa.

4. Solo el 15% del código encontrado en muchos sistemas es único y novedoso a una aplicación específica.

El rango general de uso recurrente está entre el 15% y 85%.[8]

La reutilización tiene Principios como la existencia de parecidos en distintos sistemas de un mismo dominio, donde el software puede representarse como una combinación de módulos y los sistemas nuevos se puede caracterizar por diferencias respecto a los antiguos sistemas.[9]

Modelos de mejora de procesos

Capability Maturity Model Integration
El Capability Maturity Model Integration (CMMI), en español «Integración de Modelos de Madurez de Capacidades» es uno de los modelos líderes basados en mejores prácticas. Son evaluaciones independientes las que confirman el grado con el que una organización siguen sus propios procesos, que no evalúa la calidad de los procesos o del software que se produce. CMMI ha reemplazado a CMM y tiene un ámbito global, no sólo en procesos destinados al desarrollo del software.
ISO 9000
ISO 9000 describe estándares para un proceso organizado formalmente para resultar en un producto y los métodos de gestión y monitoreo del progreso. Aunque este estándar se creó inicialmente para el sector de producción, los estándares de ISO 9000 también se han aplicado al desarrollo del software. Al igual que CMMI, que una organización está certificada con el ISO 9000 no garantiza la calidad del resultado final, sólo confirma que se ha seguido los procesos establecidos.
ISO 15504
ISO 15504, también conocido como Software Process Improvement Capability Determination (SPICE), en español «Determinación de la Capacidad de Mejora del Proceso de Software» es un marco para la evaluación de procesos de software. Este estándar tiene como objetivo un modelo claro para poder comparar procesos. SPICE se utiliza como en el caso de CMMI. Modela procesos para gestionar, controlar, guiar y monitorear el desarrollo del software. Este modelo se utiliza entonces para medir lo que una organización o proyecto hace durante el desarrollo del software. Esta información se analiza para identificar puntos débiles y definir acciones para subsanarlos. También identifica puntos fuertes que pueden adoptarse en el resto de la organización.

Métodos formales

Los métodos formales son soluciones matemáticas para resolver problemas de software y hardware a nivel de requisitos, especificación y diseño. Ejemplos de métodos formales incluyen el Método B, la red de Petri, la demostración automática de teoremas, RAISE y el VDM. Hay varias notaciones de especificaciones formales, tales como el lenguaje Z. Más generalmente, se puede utilizar la teoría de autómatas para aumentar y validar el comportamiento de la aplicación diseñando un sistema de autómata finito.

Las metodologías basadas en los autómatas finitos permiten especificación de software ejecutable y evitar la creación convencional de código.

Los métodos formales se suelen aplicar en software de aviación, especialmente si es software de seguridad crítico. Los estándares de aseguramiento del software de seguridad, tales como DO178B demandan métodos formales en el nivel más alto de categorización (Nivel A).

La formalización del desarrollo de software está ganando en fuerza poco a poco, en otros ámbitos, con la aplicación del lenguaje de especificación OCL2.0 (y especializaciones tales como Java Modeling Language) y particularmente con Model-driven Architecture, que permite la ejecución de diseños, incluso especificaciones.

Otra tendencia que está surgiendo en el desarrollo de software es la redacción de especificaciones en algún tipo de lógica (normalmente una variación de FOL), para acto seguido ejecutar esa lógica como si se tratase de un programa. El lenguaje OWL, basado en lógica descriptiva, es un buen ejemplo. También se está trabajando en enlazar un idioma natural de forma automática con lógica, lógica que puede ejecutarse. Ejemplo en este campo es el Attempto Controlled English, una lógica de negocios de Internet, que no busca controlar el vocabulario o la sintaxis. Una características de los sistemas que apoyan el vínculo bidireccional inglés-lógica y ejecución directa de la lógica es que pueden explicar sus resultados en inglés en un nivel de negocios o científico.

Principales Roles en el proceso de Desarrollo de Software

Un Rol se define como una “Función que alguien o algo cumple” (Abstracta Academy, 2016).

Cada uno de los roles aportará al grupo parte del total necesario para tener éxito en el desarrollo. Los roles son necesarios para cubrir todas las especificaciones necesarias para cumplir un proceso ya que no todos tenemos las mismas cualidades y experiencias. Además al asignar roles, se definen objetivos y actividades para cada uno; lo anterior evitando que alguna actividad no sea asignada o que dos personas realicen el mismo trabajo.

Descripción de roles en el Proceso de Desarrollo de Software

El software se construye en equipo y hay muchas metodologías diferentes. Los roles se asignan de acuerdo a las capacidades de cada persona, así como también su especialización, experiencia e interés. Los roles más comunes son:

Gerente de proyecto

Tiene por función presentar informes sobre las litigaciones de riesgos, hacer cumplir los plazos y lleva el control de los costos. También organiza el equipo, realiza planificación y estima el tiempo de las actividades. En conclusión, resuelve problemas.

Analista de requerimientos

Se encarga del revelamiento de los requerimientos esenciales para el desarrollo del Software, la documentación de los requerimientos para así el resto del equipo lo pueda consultar en cualquier momento. Debe ser una persona con capacidad de abstracción y análisis.

Desarrollador de software o programador

Encargado de la concepción y el diseño, escribe el código, prueba lo que construye y se encarga de hacer el mantenimiento del código.

Testeador

Diseña y ejecuta las pruebas, para ello requiere conocer el producto a probar claro esta, estudiar funcionalidad del producto y desarrollar las pruebas que revelen incidentes críticos. Reporta los incidentes y provee información sobre la calidad del sistema.

Arquitecto de software

Determina las estructuras de la aplicación y las tecnologías con las que se construirá la aplicación. Está encargado del aseguramiento de la calidad, mejorar continuamente la arquitectura. Gestiona los requerimientos no funcionales, asume la dirección técnica para asegurar que todos los aspectos de la arquitectura se estén desarrollando de manera correcta.

Debe ser una persona con un innato sentido de liderazgo, dispuesto a formar a los integrantes del equipo, dispuesto a recibir y aplicar abiertamente recomendaciones.

Véase también

Referencias

  1. «Ingenieria en Software - Tema 3 Modelos Desarrollo: Modelos Evolutivos». Ingenieria en Software - Tema 3 Modelos Desarrollo. Consultado el 3 de abril de 2021. 
  2. «Unidad 3 Paradigmas de la ingenieria de software». owned030.blogspot.com. Consultado el 3 de abril de 2021. 
  3. . Archivado desde el original el 20 de abril de 2013. Consultado el 8 de abril de 2014. 
  4. Ingeniería de software
  5. «Iterative and Incremental Development: A Brief History». www.computer.org. Consultado el 3 de abril de 2021. 
  6. McConnell, Steve. «7: Lifecycle Planning». Rapid Development. Redmond, Washington: Microsoft Press. p. 140. 
  7. J.Sametinger.Software engineering with reusable components. Springer Verlag, Agosto 1997
  8. Jonas A. Montilva, Nelson Arape y Juan Andres Colmenares. (14 de noviembre de 2003). «Desarrollo de software basado en componentes». Consultado el 2 de abril de 2014. 
  9. . Archivado desde el original el 14 de junio de 2013. Consultado el 2 de abril de 2014. 

Enlaces externos

  • ", 1986
  • Gerhard Fischer, , 2001
  • Lydia Ash: The Web Testing Companion: The Insider's Guide to Efficient and Effective Tests, Wiley, May 2, 2003. ISBN 0-471-43021-8
  • SaaSSDLC.com — Software as a Service Systems Development Life Cycle Project
  • Systems Development Life Cycle (SDLC)[visual image]
  •   Datos: Q638608
  •   Multimedia: Software development
  • ALM (Application Lifecycle Management).

proceso, para, desarrollo, software, sugerido, este, artículo, sección, fusionado, proceso, 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 del desarrollo del 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 El Proceso para el desarrollo de software tambien denominado ciclo de vida del desarrollo de software es una estructura aplicada al desarrollo de un producto de software Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso Algunos autores consideran un modelo de ciclo de vida un termino mas general que un determinado proceso para el desarrollo de software Por ejemplo hay varios procesos de desarrollo de software especificos que se ajustan a un modelo de ciclo de vida de espiral Indice 1 Generalidades 2 Actividades del desarrollo de software 2 1 Planificacion 2 2 Implementacion pruebas y documentacion 2 3 Despliegue y mantenimiento 3 Modelos de Desarrollo de Software 3 1 Modelo de cascada 3 2 Modelo de espiral 3 3 Desarrollo iterativo e incremental 3 4 Desarrollo agil 3 5 Codificacion y correccion 3 6 Orientado a la Reutilizacion 4 Modelos de mejora de procesos 5 Metodos formales 6 Principales Roles en el proceso de Desarrollo de Software 6 1 Descripcion de roles en el Proceso de Desarrollo de Software 6 1 1 Gerente de proyecto 6 1 2 Analista de requerimientos 6 1 3 Desarrollador de software o programador 6 1 4 Testeador 6 1 5 Arquitecto de software 7 Vease tambien 8 Referencias 9 Enlaces externosGeneralidades EditarLa gran cantidad de organizaciones de desarrollo de software implementan metodologias para el proceso de desarrollo Muchas de estas organizaciones pertenecen a la industria armamentistica que en los Estados Unidos necesita un certificado basado en su modelo de procesos para poder obtener un contrato El estandar internacional que regula el metodo de seleccion implementacion y monitoreo del ciclo de vida del software es ISO 12207 Durante decadas se ha perseguido la meta de encontrar procesos reproducibles y predecibles que mejoren la productividad y la calidad Algunas de estas soluciones intentan sistematizar o formalizar la aparentemente desorganizada tarea de desarrollar software Otros aplican tecnicas de gestion de proyectos para la creacion del software Sin una gestion del proyecto los proyectos de software corren el riesgo de demorarse o consumir un presupuesto mayor que el planeado Dada la cantidad de proyectos de software que no cumplen sus metas en terminos de funcionalidad costes o tiempo de entrega una gestion de proyectos efectiva es algo imprescindible Algunas organizaciones crean un grupo propio Software Engineering Process Group abreviado SEPG encargado de mejorar los procesos para el desarrollo de software en la organizacion Actividades del desarrollo de software Editar Actividades del proceso de desarrollo de software representados en el desarrollo en cascada Hay algunos modelos mas para representar este proceso Planificacion Editar La importante tarea a la hora de crear un producto de software es obtener los requisitos o el analisis de los requisitos Los clientes suelen tener una idea mas bien abstracta del resultado final pero no sobre las funciones que deberia cumplir el software Una vez que se hayan recopilado los requisitos del cliente se debe realizar un analisis del ambito del desarrollo Este documento se conoce como especificacion funcional Planificacion es el paso previo al inicio de cualquier proyecto de desarrollo y sin dudas el mas importante En este se definen los requerimientos y funcionalidades que debe tener el software mediante el trabajo en conjunto entre los desarrolladores el departamento de ventas los estudios de mercado y fundamentalmente el contacto con el cliente En este punto se realizan asimismo los analisis de riesgo para el emprendimiento y se fijan los requisitos de aseguramiento de la calidad Implementacion pruebas y documentacion Editar La implementacion es parte del proceso en el que los ingenieros de software programan el codigo para el proyecto de trabajo que esta en relacion de las demandas del software en esta etapa se realizan las pruebas de caja blanca y caja negra Las pruebas de software son parte esencial del proceso de desarrollo del software Esta parte del proceso tiene la funcion de detectar los errores de software lo antes posible La documentacion del diseno interno del software con el objetivo de facilitar su mejora y su mantenimiento se realiza a lo largo del proyecto Esto puede incluir la documentacion de un API tanto interior como exterior Practicamente es como una receta de cocina Despliegue y mantenimiento Editar El despliegue comienza cuando el codigo ha sido suficientemente probado ha sido aprobado para su liberacion y ha sido distribuido en el entorno de produccion Entrenamiento y soporte para el software es de suma importancia y algo que muchos desarrolladores de software descuidan Los usuarios por naturaleza se oponen al cambio porque conlleva una cierta inseguridad es por ello que es fundamental instruir de forma adecuada a los futuros usuarios del software El mantenimiento o mejora de un software con problemas recientemente desplegado puede requerir mas tiempo que el desarrollo inicial del software Es posible que haya que incorporar codigo que no se ajusta al diseno original con el objetivo de solucionar un problema o ampliar la funcionalidad para un cliente Si los costes de mantenimiento son muy elevados puede que sea oportuno redisenar el sistema para poder contener los costes de mantenimiento Modelos de Desarrollo de Software EditarLos modelos de desarrollo de software son una representacion abstracta de una manera en particular Realmente no representa como se debe desarrollar el software sino de un enfoque comun Puede ser modificado y adaptado de acuerdo a las necesidades del software en proceso de desarrollo 1 Hay varios modelos para perfilar el proceso de desarrollo cada uno de las cuales cuenta con pros y contras El proyecto deberia escoger el mas apropiado para sus necesidades En ocasiones puede que una combinacion de varios modelos sea apropiado Existen tres paradigmas de los modelos de desarrollo de software 1 Paradigma Tradicional Es uno de los paradigmas mas antiguo se invento durante la creacion del metodo estructurado Si se elige un proyecto el metodo varia en etapas 2 Como todo modelo existen sus pros y contras al usar este paradigma Si se aplica este paradigma unos de los principales problemas es que las etapas realizadas no son autonomas de las siguientes creando una dependencia estructural y en el caso de un error atrasaria todo el proyecto Se tiene que tener pautas bien definidas y que no se incurra a modificacion porque implicaria en que el software no cumpla con su ciclo de vida Tener en cuenta que el cliente no se vea afectado por la impaciencia 3 2 Paradigma Orientado a Objetos Estos modelos se basan en la Programacion orientada a objetos por lo tanto se refiere al concepto de clase el analisis de requisitos y el diseno El modelo o paradigma orientado a objetos posee dos caracteristicas principales las cuales son Permite la re utilizacion de software Facilita el desarrollo de herramientas informaticas de apoyo al desarrollo el cual es simple al implementarla en una notacion orientado a objetos llamado UML 4 3 Paradigma de Desarrollo Agil Es un paradigma de las Metodologias De Desarrollo basado en procesos agiles Estos intentan evitar los tediosos caminos de las metodologias tradicionales enfocandose en las personas y los resultados Usa un enfoque basado en el Valor para construir software colaborando con el cliente e incorporando los cambios continuamente 4 Modelo de cascada Editar Articulo principal Desarrollo en cascada El modelo de cascada define las siguientes etapas que deben cumplirse de forma sucesiva Especificacion de requisitos Diseno del software Construccion o Implementacion del software Integracion Pruebas o validacion Despliegue o instalacion MantenimientoSiguiendo el modelo de cascada de forma estricta solo cuando se finaliza una fase comienza la otra En ocasiones se realiza una revision antes de iniciar la siguiente fase lo que permite la posibilidad de cambios lo que puede incluir un proceso de control formal de cambio Las revisiones tambien se utilizan para asegurar que la fase anterior ha sido totalmente finalizada los criterios para completar una fase se conocen frecuentemente con el termino ingles gate puerta Este modelo desaconseja revisitar y revisar fases que ya se han completado Esta falta de flexibilidad en un modelo de cascada puro ha sido fuente de critica de los defensores de modelos mas flexibles Modelo de espiral Editar Articulo principal Desarrollo en espiral La principal caracteristica del modelo en espiral es la gestion de riesgos de forma periodica en el ciclo de desarrollo Este modelo fue creado en 1988 por Barry Boehm combinando algunos aspectos clave de las metodologias del modelo de cascada y del desarrollo rapido de aplicaciones pero dando enfasis en un area que para muchos no jugo el papel que requiere en otros modelos un analisis iterativo y concienzudo de los riesgos especialmente en el caso de sistema complejos de gran escala La espiral se visualiza como un proceso que pasa a traves de algunas interacciones con el diagrama de los cuatro cuadrantes representativos de las siguientes actividades crear planes con el proposito de identificar los objetivos del software seleccionados para implementar el programa y clarificar las restricciones en el desarrollo del software Analisis de riesgos una evaluacion analitica de programas seleccionados para evaluar como identificar y eliminar el riesgo la implementacion del proyecto implementacion del desarrollo del software y su pertinente verificacion Modelo de espiral con enfasis en los riesgos haciendo hincapie en las condiciones de las opciones y limitaciones para facilitar la reutilizacion de software la calidad del software puede ayudar como una meta propia en la integracion en el desarrollo del producto Sin embargo el modelo en espiral tiene algunas limitaciones entre las que destacan El enfasis se situa en el analisis de riesgo y por lo tanto requiere de clientes que acepten este analisis y actuen en consecuencia Para ello es necesaria confianza en los desarrolladores asi como la predisposicion a gastar mas para solventar los temas por lo cual este modelo se utiliza frecuentemente en desarrollo interno de software a gran escala Si la implementacion del riesgo de analisis afectara de forma esencial los beneficios del proyecto no deberia utilizarse este modelo Los desarrolladores de software han de buscar de forma explicita riesgos y analizarlos de forma exhaustiva para que este modelo funcione La primera fase es la busqueda de un plan para conseguir los objetivos con las limitaciones del proyecto para asi buscar y eliminar todos los riesgos potenciales por medio de un cuidadoso analisis y si fuera necesario incluyendo la fabricacion de un prototipo Si es imposible descartar algunos riesgos el cliente ha de decidir si es conveniente terminar el proyecto o seguir adelante ignorando los riesgos Por ultimo se evaluan los resultados y se inicia el diseno de la siguiente fase Desarrollo iterativo e incremental Editar Articulo principal Desarrollo iterativo e incremental El desarrollo iterativo recomienda la construccion de secciones reducidas de software que iran ganando en tamano para facilitar asi la deteccion de problemas de importancia antes de que sea demasiado tarde Los procesos iterativos pueden ayudar a desvelar metas del diseno en el caso de clientes que no saben como definir lo que quieren 5 Desarrollo agil Editar Articulo principal Desarrollo agil de software El desarrollo agil de software utiliza un desarrollo iterativo como base para abogar por un punto de vista mas ligero y mas centrado en las personas que en el caso de las soluciones tradicionales Los procesos agiles utilizan retroalimentacion en lugar de planificacion como principal mecanismo de control La retroalimentacion se canaliza por medio de pruebas periodicas y frecuentes versiones del software Hay muchas variantes de los procesos agiles En el caso de la programacion extrema XP las fases se realizan en pasos muy cortos o continuos con respecto al anterior El primer paso intencionalmente incompleto por los pasos puede ocurrir en un dia o en una semana en lugar de los meses o anos de cada paso completo en el modelo en cascada En primer lugar se crean pruebas automatizadas para proveer metas concretas al desarrollo Despues se programa el codigo que sera completo cuando todas las pruebas se superan sin errores y los desarrolladores ya no sabrian como mejorar el conjunto de pruebas necesario El diseno y la arquitectura emergen a partir de la refactorizacion del codigo y se da despues de programar El diseno lo realizan los propios desarrolladores del codigo El sistema incompleto pero funcional se despliega para su demostracion a los usuarios al menos uno de los cuales pertenece al equipo de desarrollo Llegado este punto los profesionales comienzan a escribir las pruebas para la siguiente parte del sistema de mas importancia Codificacion y correccion Editar El desarrollo de codificacion y correccion en ingles Code and fix es mas que una estrategia predeterminada el resultado de una falta de experiencia o presion que se ejerce sobre los desarrolladores para cumplir con una fecha de entrega 6 Sin dedicar tiempo de forma explicita para el diseno los programadores comienzan de forma inmediata a producir codigo Antes o despues comienza la fase de pruebas de software a menudo de forma tardia y los inevitables errores que se encuentran han de eliminarse antes de poder entregar el software Orientado a la Reutilizacion Editar La reutilizacion de software es un proceso donde se recurre al uso de activos de software en las especificaciones de analisis disenos implementacion y pruebas de una aplicacion o sistemas de software 7 La reutilizacion tiene ciertos Indicadores por ejemplo 1 Entre el 40 y 60 de una aplicacion es re utilizable en otra 2 Aproximadamente el 0 de una aplicacion administrativa es re utilizable 3 Aproximadamente el 75 de las funciones son comunes a mas de un programa 4 Solo el 15 del codigo encontrado en muchos sistemas es unico y novedoso a una aplicacion especifica El rango general de uso recurrente esta entre el 15 y 85 8 La reutilizacion tiene Principios como la existencia de parecidos en distintos sistemas de un mismo dominio donde el software puede representarse como una combinacion de modulos y los sistemas nuevos se puede caracterizar por diferencias respecto a los antiguos sistemas 9 Modelos de mejora de procesos EditarCapability Maturity Model Integration El Capability Maturity Model Integration CMMI en espanol Integracion de Modelos de Madurez de Capacidades es uno de los modelos lideres basados en mejores practicas Son evaluaciones independientes las que confirman el grado con el que una organizacion siguen sus propios procesos que no evalua la calidad de los procesos o del software que se produce CMMI ha reemplazado a CMM y tiene un ambito global no solo en procesos destinados al desarrollo del software ISO 9000 ISO 9000 describe estandares para un proceso organizado formalmente para resultar en un producto y los metodos de gestion y monitoreo del progreso Aunque este estandar se creo inicialmente para el sector de produccion los estandares de ISO 9000 tambien se han aplicado al desarrollo del software Al igual que CMMI que una organizacion esta certificada con el ISO 9000 no garantiza la calidad del resultado final solo confirma que se ha seguido los procesos establecidos ISO 15504 ISO 15504 tambien conocido como Software Process Improvement Capability Determination SPICE en espanol Determinacion de la Capacidad de Mejora del Proceso de Software es un marco para la evaluacion de procesos de software Este estandar tiene como objetivo un modelo claro para poder comparar procesos SPICE se utiliza como en el caso de CMMI Modela procesos para gestionar controlar guiar y monitorear el desarrollo del software Este modelo se utiliza entonces para medir lo que una organizacion o proyecto hace durante el desarrollo del software Esta informacion se analiza para identificar puntos debiles y definir acciones para subsanarlos Tambien identifica puntos fuertes que pueden adoptarse en el resto de la organizacion Metodos formales EditarLos metodos formales son soluciones matematicas para resolver problemas de software y hardware a nivel de requisitos especificacion y diseno Ejemplos de metodos formales incluyen el Metodo B la red de Petri la demostracion automatica de teoremas RAISE y el VDM Hay varias notaciones de especificaciones formales tales como el lenguaje Z Mas generalmente se puede utilizar la teoria de automatas para aumentar y validar el comportamiento de la aplicacion disenando un sistema de automata finito Las metodologias basadas en los automatas finitos permiten especificacion de software ejecutable y evitar la creacion convencional de codigo Los metodos formales se suelen aplicar en software de aviacion especialmente si es software de seguridad critico Los estandares de aseguramiento del software de seguridad tales como DO178B demandan metodos formales en el nivel mas alto de categorizacion Nivel A La formalizacion del desarrollo de software esta ganando en fuerza poco a poco en otros ambitos con la aplicacion del lenguaje de especificacion OCL2 0 y especializaciones tales como Java Modeling Language y particularmente con Model driven Architecture que permite la ejecucion de disenos incluso especificaciones Otra tendencia que esta surgiendo en el desarrollo de software es la redaccion de especificaciones en algun tipo de logica normalmente una variacion de FOL para acto seguido ejecutar esa logica como si se tratase de un programa El lenguaje OWL basado en logica descriptiva es un buen ejemplo Tambien se esta trabajando en enlazar un idioma natural de forma automatica con logica logica que puede ejecutarse Ejemplo en este campo es el Attempto Controlled English una logica de negocios de Internet que no busca controlar el vocabulario o la sintaxis Una caracteristicas de los sistemas que apoyan el vinculo bidireccional ingles logica y ejecucion directa de la logica es que pueden explicar sus resultados en ingles en un nivel de negocios o cientifico Principales Roles en el proceso de Desarrollo de Software EditarUn Rol se define como una Funcion que alguien o algo cumple Abstracta Academy 2016 Cada uno de los roles aportara al grupo parte del total necesario para tener exito en el desarrollo Los roles son necesarios para cubrir todas las especificaciones necesarias para cumplir un proceso ya que no todos tenemos las mismas cualidades y experiencias Ademas al asignar roles se definen objetivos y actividades para cada uno lo anterior evitando que alguna actividad no sea asignada o que dos personas realicen el mismo trabajo Descripcion de roles en el Proceso de Desarrollo de Software Editar El software se construye en equipo y hay muchas metodologias diferentes Los roles se asignan de acuerdo a las capacidades de cada persona asi como tambien su especializacion experiencia e interes Los roles mas comunes son Gerente de proyecto Editar Tiene por funcion presentar informes sobre las litigaciones de riesgos hacer cumplir los plazos y lleva el control de los costos Tambien organiza el equipo realiza planificacion y estima el tiempo de las actividades En conclusion resuelve problemas Analista de requerimientos Editar Se encarga del revelamiento de los requerimientos esenciales para el desarrollo del Software la documentacion de los requerimientos para asi el resto del equipo lo pueda consultar en cualquier momento Debe ser una persona con capacidad de abstraccion y analisis Desarrollador de software o programador Editar Encargado de la concepcion y el diseno escribe el codigo prueba lo que construye y se encarga de hacer el mantenimiento del codigo Testeador Editar Disena y ejecuta las pruebas para ello requiere conocer el producto a probar claro esta estudiar funcionalidad del producto y desarrollar las pruebas que revelen incidentes criticos Reporta los incidentes y provee informacion sobre la calidad del sistema Arquitecto de software Editar Determina las estructuras de la aplicacion y las tecnologias con las que se construira la aplicacion Esta encargado del aseguramiento de la calidad mejorar continuamente la arquitectura Gestiona los requerimientos no funcionales asume la direccion tecnica para asegurar que todos los aspectos de la arquitectura se esten desarrollando de manera correcta Debe ser una persona con un innato sentido de liderazgo dispuesto a formar a los integrantes del equipo dispuesto a recibir y aplicar abiertamente recomendaciones Vease tambien EditarIngenieria de software Anexo Filosofias del desarrollo de software Scrum Metodologia de desarrollo de software Desarrollo agil de software Programacion extrema Prototipo Desarrollo de software Lenguaje unificado de modeladoReferencias Editar Este articulo o seccion se encuentra desactualizado La informacion suministrada ha quedado obsoleta o es insuficiente Este aviso fue puesto el 21 de enero de 2019 Ingenieria en Software Tema 3 Modelos Desarrollo Modelos Evolutivos Ingenieria en Software Tema 3 Modelos Desarrollo Consultado el 3 de abril de 2021 Unidad 3 Paradigmas de la ingenieria de software owned030 blogspot com Consultado el 3 de abril de 2021 1 5 Paradigmas de la Ingenieria de Software Archivado desde el original el 20 de abril de 2013 Consultado el 8 de abril de 2014 a b Ingenieria de software Iterative and Incremental Development A Brief History www computer org Consultado el 3 de abril de 2021 McConnell Steve 7 Lifecycle Planning Rapid Development Redmond Washington Microsoft Press p 140 J Sametinger Software engineering with reusable components Springer Verlag Agosto 1997 Jonas A Montilva Nelson Arape y Juan Andres Colmenares 14 de noviembre de 2003 Desarrollo de software basado en componentes Consultado el 2 de abril de 2014 Ciclo de vida del Software Archivado desde el original el 14 de junio de 2013 Consultado el 2 de abril de 2014 Enlaces externos EditarNo Silver Bullet Essence and Accidents of Software Engineering 1986 Gerhard Fischer The Software Technology of the 21st Century From Software Reuse to Collaborative Software Design 2001 Lydia Ash The Web Testing Companion The Insider s Guide to Efficient and Effective Tests Wiley May 2 2003 ISBN 0 471 43021 8 SaaSSDLC com Software as a Service Systems Development Life Cycle Project Systems Development Life Cycle SDLC visual image Datos Q638608 Multimedia Software development ALM Application Lifecycle Management Obtenido de https es wikipedia org w index php title Proceso para el desarrollo de software amp oldid 137212911, 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