lunes, 20 de octubre de 2014

Modelos de desarrollo de software

Clasificación de las metodologías
Existen dos metodologías que tienen analogía en la práctica con los paradigmas de programación. Metodología estructurada y metodología orientada a objetos.
• Metodología estructurada: la orientación de esta metodología se dirige hacia los procesos que intervienen en el sistema a desarrollar, es decir, cada función a realizar por el sistema se descompone en pequeños módulos individuales. Es más fácil resolver problemas pequeños, y luego unir cada una de las soluciones, que abordar un problema grande.
• Metodología orientada a objetos: a diferencia de la metodología mencionada anteriormente, ésta no comprende los procesos como funciones sino que arma módulos basados en componentes, es decir, cada componente es independiente del otro. Esto nos permite que el código sea reutilizable. Es más fácil de mantener porque los cambios están localizados en cada uno de estos componentes.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPQkruHzyouPnYG-i5R5da9j5O4hEnd2wmMS112H2N_mpfTyweWE0K3solbEd5_sbm6WlW0LqAmFZikyvHuw0IdI7atHzuiMVoFLlpSRFx93r9ESbSw5YGAr0ZaXXnLabbY5rGaunT7Zo/s1600/Mapa+conceptual.png

Ciclos de vida del software

La ingeniería de software, por supuesto, se presenta a sí misma como otra causa valiosa, pero es un colirio: si lee cuidadosamente su literatura y analiza lo que realmente hacen quienes se avocan a ella, descubrirá que la ingeniería de software ha adoptado como su estatuto "Cómo programar si usted no puede". Edsger Dijkstra.

Ciclo de vida del software
El proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema.
Confiable, predecible y eficiente.
El objetivo es determinar el orden de las etapas involucradas en el desarrollo del software, establecer el criterio de transición para progresar de una etapa a la siguiente: 
  • Criterio para determinar la finalización
  • Criterio para comenzar y elegir la siguiente.

Así un modelo de proceso apunta a:
¿Qué debemos hacer a continuación?
¿Por cuánto tiempo debemos hacerlo?



Definición de Metodología
La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto para llevarlo a cabo con altas posibilidades de éxito. Esta sistematización nos indica cómo dividiremos un gran proyecto en módulos más pequeños llamados etapas, y las acciones que corresponden en cada una de ellas, nos ayuda a definir entradas y salidas para cada una de las etapas y, sobre todo, normaliza el modo en que administraremos el proyecto. Entonces, una metodología para el desarrollo de software son los procesos a seguir sistemáticamente para idear, implementar y mantener un producto software desde que surge la necesidad del producto hasta que cumplimos el objetivo por el cual fue creado.
Desde un punto de vista general puede considerarse que el ciclo de vida de un software tiene tres etapas claramente diferenciadas, las cuales se detallan a continuacion:
 Planificación: idearemos un planeamiento detallado que guíe la gestión del proyecto,temporal y económicamente.
 Implementación: acordaremos el conjunto de actividades que componen la realización del producto.
 Puesta en producción: nuestro proyecto entra en la etapa de definición, allí donde se lo presentamos al cliente o usuario final, sabiendo que funciona correctamente y responde a los requerimientos solicitados en su momento
Objetivos de cada etapa
En cada una de las etapas de un modelo de ciclo de vida, se pueden establecer una serie de objetivos, tareas y actividades que lo caracterizan.
Haremos un repaso y una pequeña descripción de cada una de las etapas del ciclo de vida del software; una vez conocidas las etapas, tendremos que analizar cómo abordarlas en su conjunto. Existen distintos modelos de ciclo de vida, y la elección de un modelo para un determinado tipo de proyecto es realmente importante; el orden de las etapas es uno de estos puntos importantes, Si elegimos el modelo de cascada puro en el cual la validación se realiza al final del proyecto, y luego debemos retomar etapas previas, puede resultarnos no sólo incómodo, sino costoso.
Expresión de necesidades: esta etapa tiene como objetivo el armado de un documento en el cual se reflejan los requerimientos y funcionalidades que ofrecerá al usuario el sistema a implementar (qué, y no cómo, se va a implementar).
Especificaciones: formalizamos los requerimientos; el documento obtenido en la etapa anterior se tomará como punto de partida para esta etapa.
 Análisis: determinamos los elementos que intervienen en el sistema a desarrollar, su estructura, relaciones, evolución temporal, funcionalidades, tendremos una descripción clara de qué producto vamos a construir, qué funcionalidades aportará y qué comportamiento tendrá.
• Diseño: ya sabemos qué hacer, ahora tenemos que determinar cómo debemos hacerlo (¿cómo debe ser construido el sistema en cuestion?; definimos en detalle entidades y relaciones de las bases de datos, seleccionamos el lenguaje que vamos a utilizar, el Sistema Gestor de Bases de Datos, etc.).
• Implementación: empezamos a codificar algoritmos y estructuras de datos, definidos
en las etapas anteriores, en el correspondiente lenguaje de programación
para un determinado sistema gestor de bases de datos. En muchos proyectos
se pasa directamente a esta etapa; son proyectos muy arriesgados que adoptan un modelo de ciclo de vida de code & fix (codificar y corregir) donde se eliminan las etapas de especificaciones, análisis y diseño con la consiguiente pérdida de control sobre la gestión del proyecto.