martes, 5 de octubre de 2010

Cada una de las metodologías de desarrollo del software.


Metodologías de desarrollo del software:
Metodologías estructuradas. Se pasa de una visión más general del problema con un nivel de abstracción alto (cercano a las personas), a un nivel de abstracción más bajo (cercano a la máquina). Se dividen en:
                    · Metodologías orientadas a procesos. Estudian cómo son transformados los                                                                                flujos de datos por los procesos, desde la entrada hasta la salida. Por tanto, hacen más   hincapié en los procesos que en los datos.
                    · Metodologías orientadas a datos: se centran en el estudio de los datos a la entrada y de los resultados a la salida. Para ello definen cómo son esos datos, los agrupan en estructuras de datos, y posteriormente describen los procesos. Podemos clasificar a estas metodologías en orientadas a datos jerárquicos (definir primero las estructuras de los datos de entrada y salida (análisis de los datos), mezclarlas todas en una estructura jerárquica de programa y después ordenar detalladamente la lógica procedimental del programa (análisis de los procesos) para que se ajuste a esta estructura jerárquica) y orientadas a datos no jerárquicos (analiza los datos para crear un modelo que integre las entidades y las relaciones entre ellas. Estas entidades representan los elementos de la organización).
                    · Metodologías mixtas. Toman en consideración tanto los procesos como los datos, añadiendo el factor tiempo según un modelo de eventos.   
-          Metodologías orientadas a objetos. Principales características:
        · Forma disciplinada de asignar y organizar tareas y responsabilidades.
        · Desarrollo iterativo e incremental.
        · Proporciona mecanismos de gestión del proyecto administrando horarios  y recursos.
                    · Facilita la gestión de requisitos a través de un proceso completo para su recogida y documentación guiado por casos de uso.
                    · Centrado en la arquitectura para buscar su robustez con un producto que tenga el comportamiento deseado.
                    · Basada en componentes reutilizables.
                    · Modelado visual del software utilizando el estándar UML que asegura el uso de herramientas CASE.
                    · Fácil de dividir el sistema en varios subsistemas independientes.
                    · Control de cambios a lo largo de todo el proceso, guardando todas las versiones del proyecto. 
                    · Verificación de la calidad del software a través de diferentes mecanismos de control en los que participa todo el equipo de desarrollo.
                    · Adaptable a cualquier tipo de proyecto y organización independiente del tamaño o complejidad.
-          Metodologías mixtas de las administraciones: Merise, SSADM, Métrica, Eurométodo.
-          Metodologías para sistemas de tiempo real. Un sistema informático que debe captar señales sin perder ninguna y que debe contestar a las mismas antes de un determinado momento es un sistema de tiempo real.
-          Metodologías Ágiles. Se basan en el trabajo en equipo y pretenden:
-                  Centrarse en el desarrollo y en satisfacer al cliente, es decir, producir un sistema con las funcionalidades correctas. Esto significa que el sistema final tiene que incluir sólo el mínimo número de características necesarias para satisfacer por completo al cliente real.
-                         Mejorar las predicciones y previsiones para cumplir plazos y ajustarse a los recursos.
-                       Eliminar riesgos tomando en consideración la incertidumbre.
-                         Disminuir costes. Por ejemplo, deben eliminarse actividades relacionadas con algunos productos intermedios, como documentos formales de especificaciones que no tienen una relación directa clara con el resultado final del producto.

Metodologías de desarrollo del software.


Metodologías de desarrollo del software:
-          Metodologías estructuradas.
-          Metodologías orientadas a objetos.
-          Metodologías mixtas de las administraciones.
-          Metodologías para sistemas de tiempo real.
-          Metodologías Ágiles.

lunes, 4 de octubre de 2010

Modelos de ciclo de vida del software.


-         Modelo en Cascada. Toma las actividades fundamentales de especificación, desarrollo, validación y evolución y las representa como fases separadas del proceso. Sus fases son:
      · Definición de los requisitos.
      · Diseño de software.
      · Implementación y pruebas unitarias.
      · Integración y pruebas del sistema.
      · Operación y mantenimiento.    
-         Modelos evolutivos. La idea de este modelo parte del desarrollo de una implantación del sistema inicial, exponerla a los comentarios del usuario y refinarla en sucesivas versiones hasta que se desarrolle el sistema adecuado. Existen dos tipos de desarrollo en este modelo:
      · Desarrollo Exploratorio.
      · Enfoque utilizando prototipos.   
-         Modelo en Espiral. Es una variante de los modelos evolutivos y actualmente uno de los más conocidos. El ciclo de desarrollo se representa como una espiral, en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra, que realmente es lo que ocurre. Una característica importante del modelo en espiral es que cada ciclo se completa con una revisión en la que participan los principales agentes que tienen relación con el producto. Sus fases son:
      · Definición de objetivos.
      · Evaluación y reducción de riesgos.
      · Desarrollo y validación.
      · Planificación.  
-         Modelo Incremental. El enfoque incremental de desarrollo surge como una forma de reducir la repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema.
-         Modelo orientado a la reutilización. Es un modelo orientado a la reutilización. Consta de 4 fases:
      · Análisis de componentes.
      · Modificación de requisitos.
      · Diseño del sistema con reutilización.
      · Desarrollo e integración.      

El ciclo de vida del software y sus fases.


Podemos definir el ciclo de vida del software como el conjunto de fases por las que pasa el sistema que se está desarrollando desde que nace la idea inicial hasta que el software es retirado o reemplazado por otro más adecuado.
Sus fases son:
-          Análisis y diseño. Estudio del problema y planteamiento de soluciones.
-          Implementación. Confección de la solución elegida.
-          Pruebas. Proceso para comprobar la calidad del producto.
-          Adaptación. Instalación al cliente para que pueda usarlo.
-          Mejoras. Retoques que permiten hacer más atractivo el uso.
-          Correcciones. Solución de errores o ajustes para evitar problemas.

Fases de desarrollo del software.


-          Análisis de requisitos. Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios.
-          Diseño y arquitectura. Se refiere a determinar cómo funcionará de forma general sin entrar en detalles. Consiste en incorporar consideraciones de la implementación tecnológica, como el hardware, la red, etc. Se definen los Casos de Uso para cubrir las funciones que realizará el sistema, y se transforman las entidades definidas en el análisis de requisitos en clases de diseño, obteniendo un modelo cercano a la programación orientada a objetos.
-          Programación. Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no es necesariamente la porción más larga. La complejidad y la duración de esta etapa está íntimamente ligada al o a los lenguajes de programación utilizados.
-          Pruebas. Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo.
-          Documentación. Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.
-          Mantenimiento. Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la ingeniería civil, arquitectura y trabajo de construcción es dar mantenimiento.