Modelos de proceso de software

Document Sample
Modelos de proceso de software Powered By Docstoc
					              Modelos de proceso de
                    software
                             Ing. Rubén Darío García Guzmán
                                   Universidad de Caldas
                                   Facultad de Ingeniería
                          Ingeniería de Sistemas y Computación
                                  Ingeniería del Software I



18 de noviembre de 2011             Ing. Rubén Darío García Guzmán
                              Introducción
• Para construir la ingeniería del software adecuadamente, se debe
  definir un proceso de desarrollo de software.
• El trabajo que se asocia a la ingeniería del software se puede definir
  en 3 fases:
• La fase de definición
      – Se centra sobre el QUÉ.
      – Identificar que información ha de ser procesada.
      – Han de identificarse los requisitos claves del sistema y del software.
• La fase de desarrollo
      – Se centra en el CÓMO
      – ¿Cómo ha de diseñarse la solución en general?
      – Planeación estricta de la solución
• La fase de mantenimiento
      – Se centra en el CAMBIO




 18 de noviembre de 2011            Ing. Rubén Darío García Guzmán
      Modelos de proceso del software
“Para resolver problemas reales de desarrollo de software, se debe
   incorporar una estrategia de desarrollo que acompañe al proceso, los
   métodos, las herramientas y las fases genéricas ya descritas. Esta
   estrategia se llama Modelo de proceso o paradigma de ingeniería
   del software. Este modelo se determina de acuerdo con la naturaleza
   del proyecto y de la aplicación, los métodos, las herramientas que se
   van a utilizar, los controles y las entregas que se requieren.
Todo el desarrollo de software se puede caracterizar como un bucle de
   resolución de problemas en el que se encuentran 4 etapas distinta:
   Estado actual, definición de problemas, desarrollo técnico e
   integración de soluciones. A veces estas 4 etapas se aplican no
   solo a la solución de un problema general, sino también a la solución
   de pequeños problemas más puntuales en un modelo recursivo.”

    Pressman S. Roger. Ingeniería del Software. Un enfoque practico.
    Quinta edición. Pag 19



 18 de noviembre de 2011    Ing. Rubén Darío García Guzmán
    Modelos prescriptivos de proceso
         de software (Rigidos)
• Estos modelos buscan la estructura y el orden en el
  desarrollo de software.
• Algunos críticos esgrimen en su contra que se preocupan
  más por la documentación y el seguimiento estricto de los
  pasos, que por el producto final (software) en tiempos
  adecuados.
• En casi todos los modelos, el marco de trabajo del
  proceso incluye: Comunicación, planeación, construcción
  y desarrollo.
• En general prescriben actividades del marco de trabajo,
  acciones de ingeniería del software, tareas, productos del
  trabajo, aseguramiento de la calidad, mecanismos de
  control, así como el flujo de trabajo.


18 de noviembre de 2011   Ing. Rubén Darío García Guzmán
                              Modelos en cascada
Modelo Lineal Secuencial
• También llamado “Ciclo de vida básico del software”
• Es el modelo más antiguo de la Ingeniería del software.
• Sugiere un enfoque sistemático, secuencial para el desarrollo de software.
• Inicia en un nivel de sistemas y progresa con el análisis, diseño,
   implementación, pruebas y mantenimiento.
Fases:
• Comunicación
         – Inicio del proyecto
         – Recopilación de requisitos:
                • Conocer realmente las necesidades de los clientes
•      Planeación
         – Estimación:
                • Hacer una proyección de criterios como tiempo, costo, esfuerzo, etc
         – Itinerario
                • Determinar las acciones, tareas, personas y el plan a seguir para el desarrollo del proyecto
         – Segumiento
                • Establecer una línea base del proyecto, para poderla seguir a cabalidad.


    18 de noviembre de 2011                  Ing. Rubén Darío García Guzmán
                              Modelos en cascada
•      Modelado
         – Análisis de requerimientos
                • Sirve para comprender la naturaleza de los programas a desarrollar.
                • El ingeniero debe comprender el dominio de información del software, la función
                  requerida, el comportamiento, el rendimiento y la interconexión.
         – Diseño
                • Es un proceso de muchos pasos que se centra en 4 atributos del programa
                       –      Estructura de datos, arquitectura de software, representaciones de interfaz y detalle procedimental
                              (algoritmo).
                • Traduce los requisitos en una representación del software para evaluar su calidad previo a
                  la codificación.
•      Construcción
         – Generación de Código
                •    El diseño se traduce en una forma legible por la máquina, usando lenguajes de
                    programación o lenguajes 4gl entre otros.
         – Pruebas
                • Se prueba la funcionalidad, haciendo un test de los procesos lógicos internos
                • Se busca detectar errores y garantizar que el software hace exactamente lo que debe
                  hacer.




    18 de noviembre de 2011                           Ing. Rubén Darío García Guzmán
                              Modelos en cascada
•      Despliegue
         –   Entrega
                •   Llevar el producto al cliente y dejarlo listo para su funcionamiento. Incluye capacitación en muchos casos
         –   Soporte
                •   Es el clásico Mantenimiento
                •   El software debe sufrir cambios, por errores, nuevas necesidades y requerimientos, modernización de la
                    funcionalidad o adaptación a cambios del medio externo.
         –   Retroalimentación
                •   Es una acción normal en cualquier proceso, tomar la evaluación del producto, para mejorar nuevas
                    versiones




    18 de noviembre de 2011                       Ing. Rubén Darío García Guzmán
                    Modelos Incrementales
Modelo Incremental
• Combina elementos del modelo lineal secuencial aplicados
  repetidamente
• Este modelo aplica secuencias lineales de forma escalonada mientras
  progresa el tiempo en el calendario.
• En cada iteración produce un “incremento” del software, es decir,
  agrega una funcionalidad nueva o mejora una existente.
• A veces, el flujo de proceso de cualquier incremento puede incorporar
  el paradigma de construcción de prototipos que se verá más adelante.
• A menudo, en un modelo incremental, la primera iteración es un
  producto esencial, con requisitos muy básicos.
• Es el cliente quien evalúa ese primer incremento para solicitar nuevas
  funcionalidades, que se harán en otro(s) incrementos.
• Se trabaja con planes para siguientes incrementos.



 18 de noviembre de 2011    Ing. Rubén Darío García Guzmán
                    Modelos Incrementales
Modelo Incremental
• Se trabaja con planes para siguientes incrementos.
• El objetivo de este modelo es entregar un producto operacional con cada
  incremento.
• Los primeros incrementos son versiones incompletas del producto final, que
  va siendo evaluado por el usuario final y a su vez, va creciendo según
  necesidades.
• Este modelo es muy usado cuando los equipos de desarrollo no son muy
  grandes o no hay mucho personal disponible.




 18 de noviembre de 2011      Ing. Rubén Darío García Guzmán
                       Modelos Incrementales
Modelo DRA (Desarrollo Rápido de Aplicaciones) RAD en inglés.
• Este modelo resalta un ciclo de desarrollo corto.
• Se podría ver como una adaptación “veloz” del modelo en cascada.
• Es necesario entender bien los requisitos y limitar el ámbito del proyecto.
• Permite crear un sistema completo en un tiempo corto de 60 a 90 días.
• En su marco de trabajo:
• La comunicación trabaja para entender el problema de negocio y las
  características de la información que debe cumplir el software.
• La planeación es necesaria por que varios equipos de software trabajan en
  paralelo sobre diversas funcionalidades.
• El modelado incluye tres grandes fases:
         – Modelado de negocios
         – Modelado de datos
         – Modelado de proceso
•      También establece representaciones de diseño, básicas para la actividad de
       construcción.



    18 de noviembre de 2011       Ing. Rubén Darío García Guzmán
                    Modelos Incrementales
Modelo DRA (Desarrollo Rápido de
   Aplicaciones) RAD en inglés.
• La construcción resalta el empleo de
   componentes de software existentes
   (reutilización) y la generación de
   herramientas automáticas como
   generadores de código traductores de
   Diagramas E-R a esquemas de base de
   datos, etc.
• El despliegue establece una base para
   las iteraciones subsecuentes.
• Este modelo está marcado por las
   restricciones de tiempo.
• Si se puede “dividir” el modelo de
   negocio de manera que cada gran
   función se pueda desarrollar en menos
   de tres meses, esta aplicación es
   candidata para el modelo DRA.




 18 de noviembre de 2011        Ing. Rubén Darío García Guzmán
                           Modelos evolutivos
Modelo de construcción de prototipos
• A veces un cliente define un conjunto de objetivos generales para el software,
  pero no identifica los requisitos detallados de entrada, proceso o salida.
• A veces, el responsable del desarrollo del software puede no estar muy
  seguro de la eficacia de un algoritmo, de la capacidad de adaptación de un
  sistema operativo, o de la forma en que debería tomarse la interacción
  hombre-máquina.
• En estas y otras situaciones el mejor enfoque puede ser el paradigma de
  construcción de prototipos.
• Aunque este modelo se puede utilizar en contexto individual, pero también
  como parte constitutiva de otros modelos de proceso.
• Este paradigma ayuda al ingeniero de sistemas y al cliente a entender de
  mejor manera cual será el resultado de la construcción cuando los requisitos
  estén satisfechos.



 18 de noviembre de 2011        Ing. Rubén Darío García Guzmán
                           Modelos evolutivos
Modelo de construcción de prototipos
• Este comienza con la
  comunicación. El desarrollador y el
  cliente se encuentran y definen los
  objetivos globales para el software.
• Identifican los requisitos conocidos
  y las áreas del esquema en donde
  es obligatoria más definición.
• Se hace un “diseño rápido”, que se
  centra en una representación de
  los aspectos del software que
  serán visibles para el cliente
  (entradas y salidas).




 18 de noviembre de 2011        Ing. Rubén Darío García Guzmán
                           Modelos evolutivos
Modelo de construcción de prototipos
• El diseño rápido lleva a la
  construcción de un prototipo.
• El prototipo lo revisa el usuario y se
  utiliza para refinar los requisitos del
  software a desarrollar.
• La iteración ocurre cuando el
  prototipo se pone a punto para
  satisfacer las necesidades del
  cliente, permitiendo que al mismo
  tiempo el desarrollador comprenda
  mejor lo que debe hacer.




 18 de noviembre de 2011         Ing. Rubén Darío García Guzmán
                           Modelos evolutivos
Modelo en Espiral
• Es un modelo de proceso que conjuga la naturaleza iterativa de construcción
  de prototipos con los aspectos controlados y sistémicos del modelo lineal
  secuencial.
• Proporciona el potencial para el desarrollo rápido de versiones incrementales
  del software.
• En este modelo, el software se desarrolla en una serie de versiones
  incrementales.
• Las primeras entregas pueden ser modelos en papel o prototipos.
• Durante las últimas iteraciones se tienen versiones cada vez más completas
  del sistema.
• Este modelo se dividen en actividades de marco de trabajo también llamadas
  regiones de tarea.




 18 de noviembre de 2011        Ing. Rubén Darío García Guzmán
                              Modelos evolutivos
Modelo en Espiral - Regiones de tarea
•      Comunicación: Las tareas requeridas para
       establecer comunicación entre el
       diseñador y el cliente.
•      Planeación: Las tareas requeridas para
       definir recursos, tiempo y otra información
       relacionada con el proyecto.
•      Análisis de riesgos: Las tareas requeridas
       para evaluar riesgos técnicos y de gestión.
•      Modelado: Las tareas requeridas para
       construir una o mas representaciones de
       la aplicación.
•      Construcción y acción: Las tareas
       requeridas para construir, probar, instalar
       y proporcionar soporte al usuario.
•      Evaluación del cliente: Las tareas
       requeridas para obtener la reacción del
       cliente.


    18 de noviembre de 2011              Ing. Rubén Darío García Guzmán
                           Modelos evolutivos
Modelo en Espiral
• Para proyectos pequeños, el número de
   tareas 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.
• Cuando comienza el proceso, el equipo
   de ingeniería del software gira alrededor
   del espiral comenzando por el centro.
• El primer circuito de la espiral puede
   producir el desarrollo de una
   especificación de productos.




 18 de noviembre de 2011           Ing. Rubén Darío García Guzmán
                           Modelos evolutivos
Modelo en Espiral
• Los pasos siguientes en la espiral se
   pueden utilizar para desarrollar un
   prototipo y progresivamente versiones
   mas sofisticadas.
• Cada paso por la región de planificación
   produce un ajuste en el plan del
   proyecto en cuanto a tiempo, costos y
   planificación, así como el número de
   iteraciones faltante.




 18 de noviembre de 2011          Ing. Rubén Darío García Guzmán
                              Modelos evolutivos
Modelo de desarrollo concurrente
•      También llamado ingeniería concurrente se
       representa como una serie de actividades de
       marco de trabajo, acciones e ingeniería del
       software y sus estados asociados.
•      Por ejemplo, la actividad de modelado se
       puede definir como las acciones construcción
       de prototipos, modelado, y especificación de
       análisis y diseño.
•      En este modelo, todas las tareas existen de
       forma concurrente, pero se encuentran en
       diferentes estados
•      El modelo define una serie de eventos que
       dispararán transiciones de estado a estado
       para cada una de las actividades, acciones o
       tareas de la ingeniería del software.
•      Este modelo se aplica a todos los tipos de
       desarrollo de software y proporciona una
       visión exacta del estado actual de un
       proyecto.


    18 de noviembre de 2011               Ing. Rubén Darío García Guzmán
                   Modelos especializados
Modelo de desarrollo basado en componentes
• Actualmente se ha desarrollado un mercado de
   componentes de software comercial, que son desarrollos
   hechos por fabricantes que se pueden adquirir para
   construir o complementar proyectos de software
   particular.
• Esto se puede hacer debido a la integración de dichos
   componentes, gracias a interfaces bien definidas.
• Este modelo incorpora muchas de las características del
   modelo en espiral, es evolutivo y exige un enfoque
   iterativo para la creación de software.
• Las actividades de modelado y construcción comienzan
   con la identificación de los componentes candidatos.
• Estos componentes se pueden diseñar como módulos de
   software convencional o como clases o paquetes de
   clases orientados a objetos.



 18 de noviembre de 2011         Ing. Rubén Darío García Guzmán
                      Modelos especializados
Modelo de desarrollo basado en componentes
• En este modelo, el desarrollo de software incorpora los
   siguientes pasos:
         –   Los productos basados en componentes disponibles se investigan
             y evalúan para el dominio de aplicación en cuestión.
         –   Se consideran los aspectos de integración de componentes.
         –   Se diseña una arquitectura de software para adaptar los
             componentes.
         –   Los componentes se integran en la arquitectura.
         –   Se realizan pruebas detalladas para asegurar una funcionalidad
             apropiada.
•      Este modelo conlleva a la reutilización de software, uno
       de los principios de diseño de la ingeniería del software.
•      En la actualidad, las metodologías que más propenden
       por el desarrollo de componentes son las del paradigma
       orientado a objetos.




    18 de noviembre de 2011                  Ing. Rubén Darío García Guzmán
                      Modelos especializados
Modelo de métodos formales
•      Comprende un conjunto de actividades que conducen a la especificación matemática
       del software.
•      Al utilizar métodos formales, se proporcionan mecanismos para eliminar muchos de los
       problemas difíciles de superar con paradigmas tradicionales de ingeniería de software.
•      Estos métodos permiten que el ingeniero del software especifique, desarrolle y verifique
       los sistemas al aplicar notación matemática rigurosa.
•      Una variación de este enfoque es llamada “Ingeniería del software de sala limpia”.
•      La ambigüedad, la incompletitud y la inconsistencia se descubre y se corrigen mas
       fácilmente.
•      Aunque es interesante, aun no existen enfoques establecidos y se definen problemas
       como:
         –   Es un método bastante caro y que lleva mucho tiempo.
         –   Se requiere un estudio detallado porque pocos responsables del desarrollo de software tienen los
             antecedentes necesarios para aplicar métodos formales.
         –   Es difícil utilizar los modelos como un método de comunicación con clientes que no tienen muchos
             conocimientos técnicos.


    18 de noviembre de 2011                   Ing. Rubén Darío García Guzmán
                      Modelos especializados
Modelo de desarrollo de software orientado a aspectos
•      En la actualidad se habla más de la Programación Orientada a Aspectos (POA o AOP
       en ingles) que del modelo de proceso orientado a aspectos.
•      Este es un paradigma de ingeniería del software que proporciona un proceso y enfoque
       metodológico para definir, especificar, diseñar, y construir aspectos.
•      Pero ¿Qué es un aspecto?
•      Los aspectos son los elementos de funcionalidad del software, algunos de esos
       elementos son propios del negocio (los requisitos funcionales), otros son propiedades
       de alto nivel (seguridad, falta de tolerancia) y otros son sistemáticos (sincronización de
       tareas o gestión de memoria)
•      La POA deja a los lenguajes tradicionales la funcionalidad del negocio y vuelve
       transversal a todo el software las propiedades de alto nivel o técnicas del sistema,
       haciendo que no haya que programarlas muchas veces, sino solo invocarlas después
       de haberlas programado una vez




    18 de noviembre de 2011            Ing. Rubén Darío García Guzmán
                              Bibliografía
•          PRESSMAN, Roger S. Ingeniería del software, un enfoque práctico.
           Sexta Edición, McGraw Hill, México, 2006
•          PRESSMAN, Roger S. Ingeniería del software, un enfoque práctico.
           Quinta Edición, McGraw Hill, México, 2002
•          SOMMERVILLE Ian, Ingenieria del software, sexta edición, Addison
           Wesley, México, 2002.
WEB
•   Ingeniería del software. Ian Sommerville
•   http://books.google.com.co/books?id=gQWd49zSut4C&pg=PA8&dq
    =%22Paradigmas+de+desarrollo+de+Software%22&hl=es&ei=E3V
    PTLztNYH_8Abxg4jRDQ&sa=X&oi=book_result&ct=result&resnum
    =1&ved=0CCsQ6AEwAA#v=onepage&q=%22Paradigmas%20de%
    20desarrollo%20de%20Software%22&f=false




    18 de noviembre de 2011     Ing. Rubén Darío García Guzmán
                          Trabajo
Individual
1. Elabore un paralelo de los distintos modelos de
     procesos presentados, especificando características y
     definiendo ventajas y desventajas.
2. Si tuviera que hacer un software de animación para
     crear películas en tercera dimensión del estilo Shrek
     para siempre o Toy Story 3, que paradigma(s) utilizaría y
     por que?
Grupal
En grupos de 3 personas contesten:
1. En que casos de proyectos de desarrollo de software
     consideran que se debe usar el proceso de prototipos.
     Citen 2 ejemplos y justifiquen, de igual manera, citen y
     justifiquen un ejemplo donde sería apropiado aplicar el
     paradigma evolutivo del modelo en espiral.
18 de noviembre de 2011   Ing. Rubén Darío García Guzmán

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:212
posted:11/18/2011
language:Spanish
pages:25