Visitas: 7971  
Tiempo total: 167 días con 1:11:31 hrs  

Ingeniería de software es la aplicación de enfoques sistemáticos y disciplinados al desarrollo de software, para esto se han creado modelos y metodologías para la correcta utilización del tiempo y recursos que una empresa o entidad disponen.

A continuación se listan los distintos modelos y metodologías del desarrollo de software:

  1. Modelo en cascada o Clásico (modelo tradicional)
  2. Modelo de prototipos
  3. Modelo en espiral
  4. Desarrollo por etapas
  5. Desarrollo iterativo y creciente o Iterativo e Incremental
  6. RAD
  7. Desarrollo concurrente
  8. Proceso Unificado
  9. RUP

Los modelos de desarrollo de software ofrecen un marco de trabajo usado para controlar el proceso de desarrollo de sistemas de información, estos marcos de trabajo consisten en una filosofía de desarrollo de programas la cual debe de contar con las herramientas necesarias para la asistencia del proceso de desarrollo.

Modelos y metodologías
Los distintos modelos y metodologías para el desarrollo de software son:

  • Modelo en cascada
    Este es el modelo en el cual se ordenan rigurosamente las etapas del desarrollo del software, de esto se obtiene que el inicio de una etapa de desarrollo deba de esperar el fin de la etapa anterior. De esto se obtiene que cualquier error detectado lleve al rediseño del área de código afectado, lo cual aumenta de costo el desarrollo del proyecto.
  • Modelo de prototipos
    Pertenece a los modelos evolutivos, en el cual el prototipo debe de ser construido rápidamente y con la utilización escasa de recursos. El prototipo es construido para mostrárselo al cliente, obtener criticas y retroalimentación, con lo cual se obtendrán los requisitos específicos para la aplicación a partir de las metas graficas que son mostradas.Las etapas de este modelo son:

    1. Plan rápido
    2. Modelo
    3. Construcción del prototipo
    4. Entrega y retroalimentación
    5. Comunicación
    6. Entrega del desarrollo final

    Entre sus ventajas se encuentra que, es apto para el cliente que conoce a grandes rasgos el objetivo del software y a su vez, al equipo de desarrollo le ofrece una mejor visibilidad de la interacción del cliente con el software y el ambiente en el cual debe de realizarse.

  • Modelo en espiral
    Es el modelo en el cual las actividades se desarrollan en espiral, estas actividades se realizan conforme se van seleccionando de acuerdo al análisis de riesgo.En cada iteración en este modelo, se deberán de tomar en cuenta los objetivos, las alternativas que se deberán de tomar de acuerdo a las características, estas son experiencia personal, requisitos a cumplir, las formas de gestión del sistema, entre otros.  Este modelo tiene dos formas en las cuales se debe de planificar el proyecto, la forma angular, la cual indica únicamente el avance del software dentro del proyecto y la forma radial, la cual indica el aumento del costo dado que cada iteración conlleva más tiempo de desarrollo.
  • Desarrollo por etapas
    Es similar al modelo por etapas, sin embargo se diferencia en que al momento de la crítica o bien retro alimentación por parte del usuario final, no se obtendrán completamente las características del software. Estas se irán descubriendo en el proceso del avance del software, mediante la creación de las diferentes versiones del código.En este modelo, se distinguen las siguientes fases:

    1. Especificación conceptual
    2. Análisis de requisitos
    3. Diseño inicial
    4. Codificación y depuración.
  • Desarrollo iterativo y creciente
    Resuelve los problemas encontrados en el modelo en cascada, en cual ofrece entornos de trabajo con técnicas para su correcta utilización. Este tipo de modelo es esencial para el método de programación extrema.Este tipo de programación consiste en la realización de programas de manera incremental, la cual sirve para obtener ventaja de lo que se ha realizado a lo largo del proyecto. En este se entran a varias iteraciones con las cuales se obtendrá el software final y a su vez, se le agregaran nuevas funcionalidades a cada etapa.Se puede dividir en los siguientes procesos:

    1. Etapa de inicialización
      La meta de esta etapa es la construcción de un producto en el cual se pueda obtener retroalimentación de parte del usuario final.
    2. Etapa de iteración
      Consiste en el análisis, rediseño e implementación del producto de las iteraciones anteriores.
    3. Lista de control del proyecto.
      Son las tareas que se crean que describen las partes que conforman el proyecto, son implementadas y rediseñadas en cada etapa de iteración del producto.
  • RAD o desarrollo de aplicaciones rápidas
    Como su nombre lo indica permite la construcción rápida de sistemas utilizables. Está compuesto por un grupo reducido de personas incluyendo desarrolladores y testers del sistema. También se debe de hacer énfasis al desarrollo de la aplicación cumpliendo correctamente las funcionalidades principales, dejando a un lado a las implementaciones secundarias.Este modelo toma principalmente en cuenta las características de usabilidad, utilidad y rapidez de la ejecución de la aplicación.
  • Desarrollo concurrente
    Se conoce como ingeniería concurrente y es utilizado en su mayoría para aplicaciones cliente servidor, en el cual se describen los múltiples procesos que ocurren simultáneamente en la aplicación. Una de las características de este proceso es que está orientado a las necesidades del usuario, las decisiones de la gestión y los resultados de las revisiones.Las ventajas que se pueden mencionar es que está orientado a grupos de trabajo independientes, proporcionando una visión exacta de lo que se lleva desarrollado del proyecto. Las desventajas se tiene que se necesitan de grupos de trabajo y de las condiciones necesarias para su implementación.
  • Proceso unificado
    Este proceso se distingue por la utilización de casos de uso, el cual está centrado en la arquitectura y la utilización de iteraciones incrementales. Este es un marco de trabajo extensible, el cual puede ser implementado hacia otros proyectos de distintas organizaciones. Este proceso es utilizado para evitar problemas legales con el método RUB dado que este otro método es una marca registrada de IBM.En cada iteración, se busca el avance e iteración en determinadas áreas, con la cual se obtendrán resultados en los cuales se puede constatar el tiempo que se ha dedicado a las distintas áreas en el desarrollo de software.Sus principales características son: es iterativo e incremental, dirigido por casos de uso, centrado en la arquitectura y enfocado en los riesgos.
  • RUP o proceso unificado relacional
    Es propiedad de IBM desarrollado por la empresa Rational Software, es conocido como RUP y llamado Proceso Unificado Rational, por el nombre de la empresa. Es uno de los modelos más utilizado en el análisis, diseño e implementación de la documentación de sistemas orientados a objetos.Los principios básicos de este método son: adaptar el proceso, equilibrar prioridades, demostrar valor iterativamente, colaboración entre equipos, elevar el nivel de abstracción y enfocarse a la calidad.

Referencias

[https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Modelos_y_filosof.C3.ADas_de_desarrollo_de_software]
[https://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software]
[http://es.wikipedia.org/wiki/Desarrollo_en_cascada]
[http://es.wikipedia.org/wiki/Modelo_de_prototipos]
[http://es.wikipedia.org/wiki/Desarrollo_en_espiral]
[http://es.wikipedia.org/wiki/Desarrollo_por_etapas]
[http://es.wikipedia.org/wiki/Desarrollo_iterativo_y_creciente]
[http://www.slideshare.net/jenyferutitiaja/rad-desarrollo-rpido-de-aplicaciones]
[https://es.wikipedia.org/wiki/Desarrollo_r%C3%A1pido_de_aplicaciones]
[http://ingenieraupoliana.blogspot.com/2010/10/modelo-de-desarrollo-concurrente.html]
[http://es.wikipedia.org/wiki/Proceso_Unificado]
[http://es.wikipedia.org/wiki/Proceso_Unificado_de_Rational]

1+