miércoles, 4 de marzo de 2015

Modelo Lineal secuencial
Se tiene un modelo que lleva un desarrollo incremental, esto nos dice que se desarrolla el software en etapas y que después del término de una etapa no es posible regresar a ella, este modelo tiene cuatro etapas que son:

ü  Planificación: se determinan los objetivos, metas, requerimientos y restricciones en el proyecto.
ü  Análisis de riesgos: identificación de situaciones inconvenientes para evitarlas y solucionarlas.
ü  Ingeniera: desarrollo del producto con respecto al diseño y otras consideraciones planteadas.
ü  Evaluación del cliente: valorización de los resultados del proyecto (producto obtenido).  

Y se tiene implícita la realización de estas actividades:


ü  Análisis de requerimientos: en esta etapa se procede a recopilar todos los requisitos que debe cumplir el software a desarrollar, el cliente aquí tiene un papel fundamental, ya que analiza junto con los desarrolladores del software los requisitos que debe cumplir el software a desarrollar.
ü  Diseño: esta etapa está enfocada hacia el desarrollo de un esbozo de la arquitectura, la interfaz y el manejo de datos del software.
ü  Generación  de código: es cuando se implementa el diseño del software en algún lenguaje de programación definido en el mismo diseño.
ü  Pruebas: se hace una revisión de los procesos que realiza el software, para determinar que esté haciendo lo planteado para cumplir con los requerimientos.
ü  Mantenimiento: se verifica el correcto funcionamiento del software en su entorno de uso, y si existen errores o defectos, proceden a corregirlos.

Modelo de creación de un prototipo
El Modelo de prototipos, en Ingeniería de software, pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos. El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final. Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará.

El modelo de creación de un prototipo consta de 6 etapas las cuales son:

ü  Plan rápido.
ü  Modelado, diseño rápido
ü  Construcción del Prototipo
ü  Desarrollo, entrega y retroalimentación
ü  Comunicación
ü  Entrega del desarrollo final


Modelo Evolutivo
Como el modelo de desarrollo incremental, el modelo de desarrollo evolutivo (algunas veces denominado como prototipo evolutivo) construye una serie de grandes versiones sucesivas de un producto. Sin embargo, mientras que la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto.

En el modelo evolutivo, los requerimientos son cuidadosamente examinados, y sólo esos que son bien comprendidos son seleccionados para el primer incremento. Los desarrolladores construyen una implementación parcial del sistema que recibe sólo estos requerimientos.

Note que el desarrollo evolutivo es 100% compatible con el modelo cascada. El desarrollo evolutivo no demanda una forma específica de observar el desarrollo de algún incremento. Así, el modelo cascada puede ser usado para administrar cada esfuerzo de desarrollo. Obviamente, el desarrollo incremental y evolutivo puede ser combinado también.

El desarrollo de software en forma evolutiva requiere un especial cuidado en la manipulación de documentos, programas, datos de test, etc. desarrollados para distintas versiones del software.

Características
ü  Es evolutivo
ü  Posee un enfoque evolutivo para la creación de software
ü  Comienza con la identificación de las clases más importantes
ü  Examina los datos que se van a manejar
ü  Permite la reutilización del software
ü  El ensamblaje de los componentes reduce el 70 del 100% del tiempo del ciclo del desarrollo del software y un 84 del 100% del costo del proyecto.


Ventajas y Desventajas.
Ventajas
Desventajas
     Reutilización del software.
 Genera mucho tiempo en el desarrollo del sistema.

    Simplifica las pruebas; pues estas se le hacen a los componentes antes de probar el conjunto completo de componentes ensamblados.

     Modelo costoso.
     Simplifica el mantenimiento del sistema.
 Requiere experiencia en la identificación de riesgos.
     Mayor calidad.
     Genera mucho trabajo adicional.


Ejemplo: A manera de ejemplo, pensemos en un equipo de sonido con cada una de sus piezas o componentes; es probable que por separado puedan ser funcionales, pero para que verdaderamente desempeñen la función que deberían, tienen que estar unidas formando un todo.



El modelo evolutivo está compuesto por dos tipos el cual son:

ü  Modelo Incremental.
ü  Modelo en Espiral.


El Modelo Incremental combina elementos del MLS con la filosofía interactiva de construcción de prototipos.

En una visión genérica, el proceso se divide en 4 partes: Análisis, Diseño, Código y Prueba. Sin embargo, para la producción del Software, se usa el principio de trabajo en cadena o “Pipeline”, utilizado en muchas otras formas de programación. Con esto se mantiene al cliente en constante contacto con los resultados obtenidos en cada incremento.

Es el mismo cliente el que incluye o desecha elementos al final de cada incremento a fin de que el software se adapte mejor a sus necesidades reales. El proceso se repite hasta que se elabore el producto completo. De esta forma el tiempo de entrega se reduce considerablemente.

Al igual que los otros métodos de modelado, el Modelo Incremental es de naturaleza interactiva pero se diferencia de aquellos en que al final de cada incremento se entrega un producto completamente operacional.




El Modelo Incremental se puede ver aquí en forma gráfica: (Características)
ü  Se evitan proyectos largos y se entrega algo de valor a los usuarios con cierta frecuencia.
ü  El usuario se involucra más.
ü  Difícil de evaluar el coste total.
ü  Difícil de aplicar a los sistemas transaccionales que tienden a ser integrados y a operar como un todo.
ü  Requiere gestores experimentados.
ü  Los errores en los requisitos se detectan tarde.
ü  El resultado puede ser muy positivo.


Ventajas y Desventajas.
Ventajas:
Desventajas:
      Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se implementa la funcionalidad parcial.
           El modelo Incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.
       También provee un impacto ventajoso frente al cliente, que es la entrega temprana de partes operativas del Software.
    Requiere de mucha planeación, tanto administrativa como técnica.
     El modelo proporciona todas las ventajas del modelo en cascada realimentado, reduciendo sus desventajas sólo al ámbito de cada incremento.
         Requiere de metas claras para conocer el estado del proyecto.
      Resulta más sencillo acomodar cambios al acotar el tamaño de los incrementos.


Es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal secuencial. Proporciona el potencial para el desarrollo rápido de versiones incrementales del software. En el modelo espiral, el software se desarrolla en una serie de versiones incrementales. Durante las primeras iteraciones, la versión incremental podría ser un modelo en papel o un prototipo. Durante las últimas iteraciones, se producen versiones cada vez más completas del sistema diseñado.

El modelo en espiral se divide en un número de actividades de marco de trabajo, también llamadas regiones de tareas. Generalmente, existen entre tres y seis regiones de tareas.

ü 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.
ü  Ingeniería: Las tareas requeridas para construir una o más representaciones de la aplicación.
ü  Construcción y acción: Las tareas requeridas para construir, probar, instalar y proporcionar soporte al usuario (por ejemplo: documentación y práctica).
ü  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.

Cada una de las regiones está compuesta por un conjunto de tareas del trabajo, llamado conjunto de tareas, que se adaptan a las características del proyecto que va a emprenderse. Para proyectos pequeños, el número de tareas de trabajo y su formalidad es bajo. Para proyectos mayores y más críticos cada región de tareas contiene tareas de trabajo que se definen para lograr un nivel más alto de formalidad. En todos los casos, se aplican las actividades de protección (por ejemplo: gestión de configuración del software y garantía de calidad del software).

El modelo en espiral es un enfoque realista del desarrollo de sistemas y de software a gran escala. Como el software evoluciona, a medida que progresa el proceso el desarrollador y el cliente comprende y reaccionan mejor ante riesgos en cada uno de los niveles evolutivos.


Ventajas y Desventajas.
El modelo en espiral puede adaptarse y aplicarse a lo largo de la vida del software de computadora.
Resulta difícil convencer a grandes clientes de que el enfoque evolutivo es controlable.
Como el software evoluciona a medida que progresa el proceso, el desarrollador y el cliente comprenden y reaccionan mejor ante riesgos en cada uno de los nivele evolutivos.
Debido a su elevada complejidad no se aconseja utilizarlo en pequeños sistemas.
El modelo en espiral permite a quien lo desarrolla aplicar el enfoque de construcción de prototipos en cualquier etapa de evolución del producto.
Genera mucho tiempo en el desarrollo del sistema
El modelo en espiral demanda una consideración directa de los riesgos técnicos en todas las etapas del proyecto y si se aplica adecuadamente debe reducir los riesgos antes de que se conviertan en problemas.
Modelo costoso
En la utilización de grandes sistemas ha doblado la productividad.
Requiere experiencia en la identificación de riesgos

Diferencias entre el modelo Incremental y Espiral
ü  El modelo en espiral es un tipo de modelo basado en el desarrollo iterativo. Se diferencia del modelo iterativo incremental en que más que representarlo como una secuencia de actividades se representa como una espiral donde cada ciclo en la espiral representa una fase del proceso del software. Así, por ejemplo, el ciclo más interno podría referirse a la especificación de requerimientos y el siguiente ciclo al diseño.

ü  La diferencia principal entre este modelo y los vistos hasta ahora es la evaluación del riesgo. El riesgo es todo aquello que pueda ir mal. Por ejemplo, si la intención es utilizar un lenguaje de programación, un riesgo posible es que los compiladores disponibles no produzcan código objeto  eficiente.  Los riesgos originan problemas en el proyecto como por ejemplo, el exceso de costes. Por lo tanto, la disminución de los riesgos es una actividad muy importante.

Modelos de métodos formales
El modelo de métodos formales acompaña a un conjunto de actividades que conducen a la especificación matemática del software de computadora. Los métodos formales permiten que un ingeniero del software especifique, desarrolle y verifique un sistema basado en computadora aplicando una notación rigurosa y matemática.

La ambigüedad, lo incompleto y la inconsistencia se descubren y se corrigen más fácilmente, no mediante una revisión a propósito para el caso, sino mediante la aplicación del análisis matemático. Cuando se utilizan métodos formales durante el diseño, sirven como base para la verificación de programas y por consiguiente permiten que el ingeniero del software descubra y corrija errores que no se pudieron detectar de otra manera.

Gráfico de los modelos de métodos formales


Modelo de Desarrollo Rápido de Aplicaciones
El RAD es un proceso de desarrollo de software, El método comprende el desarrollo iterativo, la construcción de prototipos y el uso de utilidades CASE. Tradicionalmente, el desarrollo rápido de aplicaciones tiende a englobar también la usabilidad, utilidad y la rapidez de ejecución.

El Desarrollo Rápido de Aplicaciones es un modelo de proceso del desarrollo del software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto. El enfoque DRA comprende las siguientes fases:

ü  Modelado de gestión: el flujo de información entre las funciones de gestión se modela de forma que responda a las siguientes preguntas: ¿Qué información conduce el proceso de gestión? ¿Qué información se genera? ¿Quién la genera? ¿A dónde va la información? ¿Quién la proceso?
ü  Modelado de datos: el flujo de información definido como parte de la fase de modelado de gestión se refina como un conjunto de objetos de datos necesarios para apoyar la empresa. Se definen las características (llamadas atributos) de cada uno de los objetos y las relaciones entre estos objetos.
ü  Modelado de proceso: los objetos de datos definidos en la fase de modelado de datos quedan transformados para lograr el flujo de información necesario para implementar una función de gestión. Las descripciones del proceso se crean para añadir, modificar, suprimir, o recuperar un objeto de datos. Es la comunicación entre los objetos.
ü  Generación de aplicaciones: El DRA asume la utilización de técnicas de cuarta generación. En lugar de crear software con lenguajes de programación de tercera generación, el proceso DRA trabaja para volver a utilizar componentes de programas ya existentes (cuando es posible) o a crear componentes reutilizables (cuando sea necesario).
ü  Pruebas de entrega: Como el proceso DRA enfatiza la reutilización, ya se han comprobado muchos de los componentes de los programas. Esto reduce tiempo de pruebas. Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las interfaces a fondo.



El Modelo de Ensamblaje de Componentes.
Incorpora muchas de las características del Modelo Espiral. Es evolutivo por naturaleza y exige un enfoque interactivo para la creación del software. Sin embargo, el modelo ensamblador de componentes configura aplicaciones desde componentes separados del software (algunas veces llamados "clases").

Esto se debe gracias a que, si se desean y se implementan adecuadamente, las clases orientadas a objetos son reutilizables por las diferentes aplicaciones y arquitecturas de sistemas basados en computadoras.
Técnicas de Cuarta Generación
Las técnicas de cuarta generación son un conjunto muy diverso de métodos y herramientas que tienen por objeto el de facilitar el desarrollo del software, facilitan al que desarrolla el software la propiedad de especificar algunas características del mismo a alto nivel, más tarde, la herramienta genera automáticamente el código fuente a partir de esta especificación.

Los tipos más comunes de generadores de código cubren uno o varios de los siguientes aspectos:

ü  Acceso a base de datos: utilizando lenguajes de consulta de alto nivel.
ü Generación de pantallas: permitiendo diseñar la pantalla dibujándola directamente, incluyendo además el control del cursor y la gestión de los errores de los datos de entrada.
ü  Gestión de entornos gráficos.
ü  Generación de informes.: Como otros paradigmas, T4G comienza con el paso de recolección de requerimientos. En el mejor de los casos el cliente debería describir los requerimientos y estos traducirse directamente a un prototipo operacional pero en general esto no es así. El cliente puede no estar seguro de lo que necesita, puede ser ambiguo en la especificación de hechos que son conocidos y puede ser incapaz o no desear especificar la información en la forma que una herramienta T4G puede construirla, además las herramientas actuales T4G no son lo suficientemente sofisticadas para acomodar realmente lenguaje natural y no lo serán por algún tiempo.