Clásicas
Cascada
El modelo de cascada original se desarrolló entre las décadas de los años 60 y 70,y se define como una secuencia de actividades, donde la estrategia principal es seguir el progreso del desarrollo de software hacia puntos de revisión bien definidos
Fases del modelo cascada:
- Ingeniería y análisis del sistema: análisis y de diseño de todos los componentes del sistema computacional.
- Análisis de requisitos software: se debe conocer que necesita el usuario para saber que necesidades debemos cubrir.
- Diseño:en esta fase se realizan los algoritmos necesarios para que se cumplan los requerimientos del usuario, así como también los análisis necesarios para saber que herramientas usar en la etapa de codificación. se dividen en:
- Diseño de alto nivel o arquitectónico.
- Diseño detallado.
Codificación: es la fase de programación propiamente dicha
Pruebas: las componentes una vez programadas, se ensamblan para formar el sistema y se demuestra que trabaja correctamente antes de ser puesto en práctica por el usuario. Existen varios tipos de pruebas:
- Pruebas de unidad.
- Pruebas de integración.
- Pruebas de sistema.
Mantenimiento: el software necesitará cambios después de la entrega. los tipos de mantenimiento son:
- Mantenimiento preventivo y perfectivo.
Incremental
El modelo incremental consiste de un desarrollo inicial de la arquitectura completa del sistema, seguida de incrementos y versiones parciales.
Cada incremento agrega funcionalidad adicional o mejorada sobre el sistema. Conforme se completa cada etapa, se verifica e integra la última versión con las demás versiones ya completadas del sistema.
Durante cada incremento, el sistema se evalúa con respecto al desarrollo de versiones futuras. Las actividades se dividen en procesos y subprocesos, dando lugar al término fábrica de software (en inglés, software Factory). Para que la secuencia de desarrollo sea exitosa, es esencial definir etapas que no requieran cambiar los resultados anteriores al agregar nuevas. Por lo tanto, es importante comprender al inicio los requisitos completos del sistema, algo que normalmente es muy difícil de lograr.
Evolutivo
Este modelo considera que el desarrollo de sistemas es un proceso de cambios progresivos mediante deltas (cambios) de especificación de requerimientos. El modelo evolutivo es también conocido como desarrollo rápido de aplicaciones (en inglés, RAD—rapid application development), que se basa tradicionalmente en el uso de prototipos (en inglés, rapid prototyping).
Un prototipo de software se considera como un medio para especificar los requisitos y un enlace de comunicación entre el usuario final y el diseñador, ayudando a reducir el riesgo de carecer de requerimientos iniciales completos y estables.
Espiral
El modelo espiral, desarrollado durante la década de los años 80, es una extensión del modelo de cascada.
Cada ciclo del modelo espiral termina con una revisión que discute los logros actuales y los planes para el siguiente ciclo. Al igual que el modelo evolutivo, el modelo espiral incorpora una estrategia de uso de prototipos como parte del manejo del riesgo.
Prototipos
Un prototipo es una versión preliminar, intencionalmente incompleta o reducida de un sistema. El uso de prototipos es una estrategia que puede aplicarse en casi todas las actividades del proceso de software. El propósito de los prototipos es obtener de manera rápida la información necesaria como ayuda en la toma de decisiones.
Los siguientes son algunos tipos de prototipo:
- Los prototipos de requisitospermiten que los usuarios perciban la funcionalidad del producto final a través del diseño de interfaces o pantallas del sistema. El objetivo es ayudar a aclarar los requisitos y solicitar nuevas ideas.
- Los prototipos de análisispermiten generar rápidamente una arquitectura general que considere las características principales del sistema de acuerdo con la especificación de requisitos.
- Los prototipos de diseñopermiten explorar y comprender la arquitectura particular de un sistema para poder evaluar aspectos como cuellos de botella (rendimiento y uso de memoria) o incoherencias en el diseño.
Basado en componentes
Ingeniería de Software Basada en Componentes (ISBC).
La ISBC parte de la idea de la integración de componentes software ya existente
(Desarrollo ascendente o bottom-up). Las tecnologías de objetos proporcionan el marco de trabajo técnico, para la ingeniería de software, para un modelo de proceso basado en componentes. El paradigma orientado a objetos enfatiza la creación de clases que encapsulan tanto los datos como los algoritmos para manejar esos datos. Si se diseñan y se implementan adecuadamente, las clases Orientadas a objetos son reutilizables por diferentes aplicaciones.
Fases de Ingeniería y Construcción y Acción de éste modelo por una sola fase de Construcción y adaptación de la Ingeniería:
- Comunicación con el cliente- las tareas requeridas para establecer comunicación entre el desarrollador y el cliente.
- Planificación- las tareas requeridas para definir recursos, el tiempo y otra información relacionadas con el proyecto.
- Análisis de riesgos- las tareas requeridas para evaluar riesgos técnicos y de gestión.
- Construcción y adaptación de la Ingeniería
- Evaluación del cliente- las tareas requeridas para obtener la reacción del cliente según la evaluación de las representaciones del software creadas durante la etapa de ingeniería e implementada durante la etapa de instalación.
Metodologías Agiles
Esta metodología nace en febrero del 2001 en una reunión celebrada en Utah EEUU.
Principales ideas de la metodología ágil:
- Se encarga de valorar al individuo y las iteraciones del equipo más que a las herramientas o los procesos utilizados.
- Se hace mucho más importante crear un producto software que funcione que escribir mucha documentación.
- El cliente está en todo momento colaborando en el proyecto.
- Es más importante la capacidad de respuesta ante un cambio realizado que el seguimiento estricto de un plan
Otras metodologías
Scrum
Es un marco de trabajo para la gestión y desarrollo de software basada en un proceso iterativo e incremental, Scrum estaba enfocado a la gestión de procesos de desarrollo de software, puede ser utilizado en equipos de mantenimiento de software, o en una aproximación de gestión de programas: Scrum de Scrums.
Programación Extrema
La programación extrema o eXtreme Programming (XP) es una metodología de desarrollo de la ingeniería de software formulada por Kent Beck, autor del primer libro sobre la materia, Extreme Programming Explained: Embrace Change(1999). Es el más destacado de los procesos ágiles de desarrollo de software.
Ganar Ganar
El modelo ganar-ganar (en inglés, win-win) extiende el modelo espiral, haciendo énfasis en la identificación de las condiciones de ganancia para todas las partes, creando un plan para alcanzar las condiciones ganadoras y evitar los riesgos correspondientes. Se establecen las reglas para definir el proceso de desarrollo del proyecto, tomando en cuenta todas las partes implicadas. El modelo no necesita mucho tiempo de gestión. Esto permite utilizarlo tanto en proyectos pequeños como grandes.
Se consideran cuatro los ciclos, cada uno compuesto de cuatro actividades.
- Ciclo 0 (grupos de aplicación) se determina la viabilidad de un grupo apropiado de aplicaciones.
- Ciclo 1 (objetivos del ciclo de vida de la aplicación) se desarrollan los objetivos del ciclo de vida, incluyendo prototipos, planes y especificaciones de aplicaciones individuales, y se verifica la existencia de al menos una arquitectura viable para cada aplicación. En el
- Ciclo 2 (arquitectura del ciclo de vida de la aplicación) se establece una arquitectura del ciclo de vida detallado, se verifica su viabilidad, y se determina que no existen riesgos mayores en satisfacer los planes y especificaciones.
- Ciclo 3 (capacidad de operación inicial) se alcanza una capacidad operacional inicial para cada etapa crítica del proyecto en el ciclo de vida del software.
Proceso Unificado
El proceso unificado considera como aspecto esencial del desarrollo de software una visión que parte de la arquitectura del sistema, siguiendo un proceso iterativo e incremental. El proceso considera e integra diferentes aspectos, como son los ciclos, fases, flujos de trabajo, mitigación de riesgo, control de calidad, administración de proyecto y control de configuración.
Ingeniería Web
Es una aplicación de software que permite al usuario recuperar y visualizar documentos de hipertexto, comúnmente descritos en HTML.
Los sitios web pueden ser categorizados de la siguiente forma:
- Sólo estático que se enfoca en la organización de la estructura y el contenido, en la forma como se va a presentar la información y que sea fácil de manejar para cualquier usuario, pero debe tener en cuenta la eficiencia y la confiabilidad.
- Sitio estático con formularios de entrada este sitio tiene las mismas características que el anterior, adicionándole que él le permite a los usuarios la interacción por medio de cuestionarios, comentario y sugerencias.
- Sitio con acceso de datos dinámicos aquí, además de las características antes mencionadas, cuenta con bases de datos en las cuales el usuario puede realizar consultas y búsquedas.
- Sitio creado dinámicamente en este sitio los requerimientos son parecidos, pero deben suplir con las necesidades de cada usuario; creando sitios dinámicos que sean compatibles con el entorno de navegación de cada usuario.
- Aplicación de software basada en la Web este sitio puede tener todas las características antes mencionadas, pero logrando un parecido con una implementación cliente/servidor comúnmente conocido que a un sitio web estático.
En general, las aplicaciones web, necesitan ser funcionales, mantenible, escalables y seguras. Como podemos ver, la actual demanda de las aplicaciones web es totalmente diferente de las aplicaciones convencionales y por lo tanto hay una gran necesidad de la ingeniería web.
Referencias:
Blog spot y Google Académico
[sociallocker]
3 Metodologías de desarrollo de software
[/sociallocker]