Proceso de desarrollo de sofware

1,907 views

Published on

Breve presentacion del proceso de desarrollo de software

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,907
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
103
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Proceso de desarrollo de sofware

  1. 1. UNIVERSIDAD DE ORIENTE DEPARTAMENTO DE INGENIERÍA DE SISTEMAS ANÁLISIS Y DISEÑO DE SISTEMAS DE INFORMACIÓN – UNIDAD IV Proceso de desarrollo de softwareFacilitador: Bachilleres:Prof. Jesús Chaparro Barreto Daniela Grillet DiegoEquipo LICAUROS Idrogo Simon MATURÍN, Enero de 2013
  2. 2. Proceso de desarrollo de softwareIntroducciónUn sistema informático está compuesto porhardware y software.En cuanto al hardware, su producción se realiza sistemáticamentey la base de conocimiento para el desarrollo de dicha actividad estáclaramente definida.
  3. 3. Proceso de desarrollo de softwareIntroducciónSin embargo, respecto del software, su construcción y resultadoshan sido históricamente cuestionados debido a los problemasasociados.El “IEEE Standard Glossary of Software Engineering Terminology”ha desarrollado una definición más completa para ingeniería delsoftware: La aplicación de un enfoque sistemático, disciplinado ycuantificable para el desarrollo, operación y mantenimiento delsoftware; es decir, la aplicación de ingeniería al software.
  4. 4. Proceso de desarrollo de softwareIntroducciónPressman, caracteriza la Ingeniería de Software como “unatecnología multicapa”
  5. 5. Proceso de desarrollo de softwareIntroducciónLas herramientas de la ingeniería del software proporcionan unsoporte automático o semi-automático para el proceso y losmétodos, a estas herramientas se les llama herramientas CASE(Computer-Aided Software Engineering).Los métodos de la ingeniería de software indican cómo construirtécnicamente el software. Los métodos abarcan una gran gama detareas que incluyen análisis de requisitos, diseño, construcción deprogramas, pruebas y mantenimiento.
  6. 6. Proceso de desarrollo de softwareIntroducciónEl proceso define un marco de trabajo para un conjunto de áreasclave, las cuales forman la base del control de gestión deproyectos de software y establecen el contexto en el cual: seaplican los métodos técnicos, se producen resultados detrabajo, se establecen hitos, se asegura la calidad y el cambio segestiona adecuadamente.
  7. 7. Proceso de desarrollo de softwareIntroducciónLa gestión total de la calidad y las filosofías similares fomentan unacultura continua de mejoras de procesos que conduce al desarrollode enfoques cada vez más robustos para la ingeniería del software.
  8. 8. Proceso de desarrollo de softwareEl proceso de desarrollo del softwareUn proceso de desarrollo de software tiene como propósito laproducción eficaz y eficiente de un producto software que reúnalos requisitos del cliente.
  9. 9. Proceso de desarrollo de softwareEl proceso de desarrollo del softwareAunque un proyecto de desarrollo de software es equiparable enmuchos aspectos a cualquier otro proyecto de ingeniería, en eldesarrollo de software hay una serie de desafíos adicionales,relativos esencialmente a la naturaleza del producto obtenido.Un producto software en sí es complejo, es prácticamente inviableconseguir un 100% de confiabilidad de un programa por pequeñoque sea.
  10. 10. Proceso de desarrollo de softwareEl proceso de desarrollo del softwareUn producto software es intangible y por lo general muyabstracto, esto dificulta la definición del producto y sus requisitos,sobre todo cuando no se tiene precedentes en productos softwaresimilares. Esto hace que los requisitos sean difíciles de consolidartempranamente.
  11. 11. Proceso de desarrollo de softwareEl proceso de desarrollo del softwareEl proceso de desarrollo de software no es único. No existe unproceso de software universal que sea efectivo para todos loscontextos de proyectos de desarrollo. Debido a esta diversidad, esdifícil automatizar todo un proceso de desarrollo de software.
  12. 12. Proceso de desarrollo de softwareEl proceso de desarrollo del software A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos : 1. Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. 2. Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación. 3. Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente. 4. Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.
  13. 13. Proceso de desarrollo de softwareEl proceso de desarrollo del softwareOtra perspectiva utilizada para determinar los elementos delproceso de desarrollo de software es establecer las relacionesentre elementos que permitan responder Quién debe hacerQué, Cuándo y Cómo debe hacerlo
  14. 14. Proceso de desarrollo de softwareEl proceso de desarrollo del software •Quién: Las Personas participantes en el proyecto de desarrollo desempeñando uno o más Roles específicos. •Qué: Un Artefacto3 es producido por un Rol en una de sus Actividades. Los Artefactos se especifican utilizando Notaciones específicas. Las Herramientas apoyan la elaboración de Artefactos soportando ciertas Notaciones. •Cómo y Cuándo: Las Actividades son una serie de pasos que lleva a cabo un Rol durante el proceso de desarrollo. El avance del proyecto está controlado mediante hitos que establecen un determinado estado de terminación de ciertos Artefactos.
  15. 15. Proceso de desarrollo de softwareModelos de proceso softwareSommerville define modelo de proceso de software como “Unarepresentación simplificada de un proceso de software,representada desde una perspectiva específica. Por su naturalezalos modelos son simplificados, por lo tanto un modelo de procesosdel software es una abstracción de un proceso real.”
  16. 16. Proceso de desarrollo de softwareModelos de proceso softwareCodificar y corregirEste es el modelo básico utilizado en los inicios del desarrollo desoftware. Contiene dos pasos:•Escribir código.•Corregir problemas en el código.Se trata de primero implementar algo de código y luego pensaracerca de requisitos, diseño, validación, y mantenimiento.
  17. 17. Proceso de desarrollo de softwareModelos de proceso softwareCodificar y corregirEste modelo tiene tres problemas principales :•Después de un número de correcciones, el código puede teneruna muy mala estructura, hace que los arreglos sean muycostosos.•Frecuentemente, aún el software bien diseñado, no se ajusta alas necesidades del usuario, por lo que es rechazado o sureconstrucción es muy cara.•El código es difícil de reparar por su pobre preparación paraprobar y modificar.
  18. 18. Proceso de desarrollo de softwareModelos de proceso softwareModelo en cascada1.Definición de los requisitos: Los servicios, restricciones yobjetivos son establecidos con los usuarios del sistema. Se buscahacer esta definición en detalle.2.Diseño de software: Se particiona el sistema en sistemas desoftware o hardware. Se establece la arquitectura total delsistema. Se identifican y describen las abstracciones y relacionesde los componentes del sistema.3.Implementación y pruebas unitarias: Construcción de losmódulos y unidades de software. Se realizan pruebas de cadaunidad.
  19. 19. Proceso de desarrollo de softwareModelos de proceso softwareModelo en cascada4. Integración y pruebas del sistema: Se integran todas lasunidades. Se prueban en conjunto. Se entrega el conjuntoprobado al cliente.5. Operación y mantenimiento: Generalmente es la fase máslarga. El sistema es puesto en marcha y se realiza la corrección deerrores descubiertos. Se realizan mejoras de implementación. Seidentifican nuevos requisitos.
  20. 20. Proceso de desarrollo de softwareModelos de proceso softwareModelo en cascadaUna fase no comienza hasta que termine la fase anterior ygeneralmente se incluye la corrección de los problemasencontrados en fases previas.
  21. 21. Proceso de desarrollo de softwareModelos de proceso softwareDesarrollo evolutivoUna ventaja de este modelo es que se obtiene una rápidarealimentación del usuario, ya que las actividades deespecificación, desarrollo y pruebas se ejecutan en cada iteración.
  22. 22. Proceso de desarrollo de softwareModelos de proceso softwareDesarrollo evolutivoDesarrollo Exploratorio: El objetivo de este enfoque es explorarcon el usuario los requisitos hasta llegar a un sistema final. Eldesarrollo comienza con las partes que se tiene más claras. Elsistema evoluciona conforme se añaden nuevas característicaspropuestas por el usuario.
  23. 23. Proceso de desarrollo de softwareModelos de proceso softwareDesarrollo evolutivoEnfoque utilizando prototipos: El objetivo es entender losrequisitos del usuario y trabajar para mejorar la calidad de losrequisitos. A diferencia del desarrollo exploratorio, se comienzapor definir los requisitos que no están claros para el usuario y seutiliza un prototipo para experimentar con ellos. El prototipoayuda a terminar de definir estos requisitos.
  24. 24. Proceso de desarrollo de softwareModelos de proceso softwareDesarrollo formal de sistemasEste modelo se basa en transformaciones formales de los requisitoshasta llegar a un programa ejecutable.
  25. 25. Proceso de desarrollo de softwareModelos de proceso softwareDesarrollo basado en reutilizaciónComo su nombre lo indica, es un modelo fuertemente orientado ala reutilización. Este modelo consta de 4 fases ilustradas en laFigura.
  26. 26. Proceso de desarrollo de softwareModelos de proceso softwareDesarrollo basado en reutilizaciónLas ventajas de este modelo son:•Disminuye el costo y esfuerzo de desarrollo.•Reduce el tiempo de entrega.•Disminuye los riesgos durante el desarrollo.Desventajas de este modelo:•Los “compromisos” en los requisitos son inevitables, por locual puede que el software no cumpla las expectativas delcliente.•Las actualizaciones de los componentes adquiridos no están enmanos de los desarrolladores del sistema.
  27. 27. Proceso de desarrollo de softwareModelos de proceso softwareProcesos iterativosMills sugirió el enfoque incremental de desarrollo como una formade reducir la repetición del trabajo en el proceso de desarrollo ydar oportunidad de retrasar la toma de decisiones en los requisitoshasta adquirir experiencia con el sistema .
  28. 28. Proceso de desarrollo de softwareModelos de proceso softwareProcesos iterativosEntre las ventajas del modelo incremental se encuentran:•Los clientes no esperan hasta el fin del desarrollo para utilizarel sistema. Pueden empezar a usarlo desde el primer incremento.•Los clientes pueden aclarar los requisitos que no tengan clarosconforme ven las entregas del sistema.•Se disminuye el riesgo de fracaso de todo el proyecto, ya que sepuede distribuir en cada incremento.•Las partes más importantes del sistema son entregadasprimero, por lo cual se realizan más pruebas en estos módulos yse disminuye el riesgo de fallos.
  29. 29. Proceso de desarrollo de softwareModelos de proceso softwareProcesos iterativosAlgunas de las desventajas identificadas para este modelo son:•Cada incremento debe ser pequeño para limitar el riesgo(menos de 20.000 líneas).•Cada incremento debe aumentar la funcionalidad.•Es difícil establecer las correspondencias de los requisitoscontra los incrementos.•Es difícil detectar las unidades o servicios genéricos para todo elsistema.
  30. 30. Proceso de desarrollo de softwareModelos de proceso softwareProcesos iterativos El modelo de desarrollo en espiral es actualmente uno de los más conocidos y fue propuesto por Boehm. El ciclo de desarrollo se representa como una espiral, en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra.
  31. 31. Proceso de desarrollo de softwareModelos de proceso softwareProcesos iterativosCada ciclo de desarrollo se divide en cuatro fases:1.Definición de objetivos: Se definen los objetivos. Se definen lasrestricciones del proceso y del producto. Se realiza un diseñodetallado del plan administrativo. Se identifican los riesgos y seelaboran estrategias alternativas dependiendo de estos.2.Evaluación y reducción de riesgos: Se realiza un análisisdetallado de cada riesgo identificado. Pueden desarrollarseprototipos para disminuir el riesgo de requisitos dudosos. Sellevan a cabo los pasos para reducir los riesgos.
  32. 32. Proceso de desarrollo de softwareModelos de proceso softwareProcesos iterativos3.Desarrollo y validación: Se escoge el modelo de desarrollodespués de la evaluación del riesgo. El modelo que se utilizará(cascada, sistemas formales, evolutivo, etc.) depende del riesgoidentificado para esa fase.4.Planificación: Se determina si continuar con otro ciclo. Seplanea la siguiente fase del proyecto.Este modelo a diferencia de los otros toma en consideraciónexplícitamente el riesgo, esta es una actividad importante en laadministración del proyecto.
  33. 33. Proceso de desarrollo de softwareMetodologías para desarrollo de softwareUn proceso de software detallado y completo suele denominarse“Metodología”. Las metodologías se basan en una combinaciónde los modelos de proceso genéricos (cascada, evolutivo,incremental, etc.). Adicionalmente una metodología deberíadefinir con precisión los artefactos, roles y actividadesinvolucrados, junto con prácticas y técnicas recomendadas, guíasde adaptación de la metodología al proyecto, guías para uso deherramientas de apoyo, etc.
  34. 34. Proceso de desarrollo de softwareMetodologías para desarrollo de softwareMetodologías estructuradasLos métodos estructurados comenzaron a desarrollarse a fines delos 70’s con la Programación Estructurada, luego a mediados delos 70’s aparecieron técnicas para el Diseño (por ejemplo: eldiagrama de Estructura) primero y posteriormente para elAnálisis (por ejemplo: Diagramas de Flujo de Datos). Estasmetodologías son particularmente apropiadas en proyectos queutilizan para la implementación lenguajes de 3ra y 4ta generación.
  35. 35. Proceso de desarrollo de softwareMetodologías para desarrollo de softwareMetodologías orientadas a objetosSu historia va unida a la evolución de los lenguajes deprogramación orientada a objeto, los más representativos: a finesde los 60’s SIMULA, a fines de los 70’s Smalltalk-80, la primeraversión de C++ por Bjarne Stroustrup en 1981 y actualmente Java11o C# de Microsoft. A fines de los 80’s comenzaron a consolidarsealgunos métodos Orientadas a Objeto.
  36. 36. Proceso de desarrollo de softwareMetodologías para desarrollo de softwareMetodologías ágilesLas metodologías no ágiles son aquellas que están guiadas por unafuerte planificación durante todo el proceso de desarrollo;llamadas también metodologías tradicionales o clásicas, donde serealiza una intensa etapa de análisis y diseño antes de laconstrucción del sistema.
  37. 37. Proceso de desarrollo de softwareMetodologías para desarrollo de softwareMetodologías ágilesUn proceso es ágil cuando el desarrollo de software esincremental (entregas pequeñas de software, con ciclos rápidos),cooperativo (cliente y desarrolladores trabajan juntosconstantemente con una cercana comunicación), sencillo (elmétodo en sí mismo es fácil de aprender y modificar, biendocumentado), y adaptable (permite realizar cambios de últimomomento).
  38. 38. Proceso de desarrollo de softwareMetodologías para desarrollo de softwareMetodologías ágilesEntre las metodologías ágiles identificadas en:•Extreme Programming.•Scrum.•Familia de Metodologías Crystal.•Feature Driven Development.•Proceso Unificado Rational, una configuración ágil.•Dynamic Systems Development Method.•Adaptive Software Development.•Open Source Software Development .
  39. 39. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareLas Herramientas de Ayuda al Desarrollo de Sistemas deInformación, surgieron para intentar dar solución a los problemasinherentes a los proyectos de generación de aplicacionesinformáticas: plazos y presupuestos incumplidos, insatisfaccióndel usuario, escasa productividad y baja calidad de los desarrollos,entre otros. Algunas de estas herramientas se dirigenprincipalmente a mejorar la calidad, como es el caso de lasherramientas CASE.
  40. 40. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareSe puede definir a las Herramientas CASE como un conjunto deprogramas y ayudas que dan asistencia a los analistas, ingenierosde software y desarrolladores, durante todos los pasos del Ciclo deVida de desarrollo de un Software.
  41. 41. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareEl empleo de herramientas Case permiten integrar el proceso deciclo de vida:• Análisis de datos y procesos integrados mediante un repositorio.• Generación de interfaces entre el análisis y el diseño.• Generación del código a partir del diseño.• Control de mantenimiento.
  42. 42. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareTipos de Herramientas CASENo existe una única clasificación de herramientas CASE, es difícilincluirlas en una clase determinada. Podrían clasificarseatendiendo a:• Las plataformas que soportan.• Las fases del ciclo de vida del desarrollo de sistemas que abarca.• La arquitectura de las aplicaciones que produce.• Su funcionalidad.
  43. 43. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareTipos de Herramientas CASEI-CASE : abarcan todas las fases del ciclo de vida del desarrollo desistemas. Las herramientas I-CASE se basan en una metodología.Tienen un repositorio y aportan técnicas estructuradas para todaslas fases del ciclo de vida. Estas son las características que lesconfieren su mayor ventaja: una mejora de la calidad de losdesarrollos. Sin embargo, no todas ellas son modernas en elsentido de aprovechar la potencia de las estaciones de trabajo ola utilización de lenguajes de alto nivel o técnicas de prototipo.
  44. 44. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareTipos de Herramientas CASEU-CASE: orientadas a la automatización y soporte de lasactividades desarrolladas durante las primeras fases deldesarrollo: análisis y diseño.Una estrategia posible es utilizar una U-CASE para análisis ydiseño, combinada con otras herramientas más modernas para lasfases de construcción y pruebas. En este caso, habría que vigilarcuidadosamente la integración entre las distintas herramientas.L-CASE : dirigidas a las últimas fases del desarrollo: construcción eimplantación.
  45. 45. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareBeneficios de las Herramientas CASE1. Facilidad para la revisión de aplicacionesLa experiencia muestra que una vez que las aplicaciones seimplementan, se emplean por mucho tiempo. Las herramientasCASE proporcionan un beneficio substancial para lasorganizaciones al facilitar la revisión de las aplicaciones. Contarcon un depósito central agiliza el proceso de revisión ya que ésteproporciona bases para las definiciones y estándares para losdatos. Las capacidades de generación interna, si se encuentranpresentes, contribuyen a modificar el sistema por medio de lasespecificaciones más que por los ajustes al código fuente.
  46. 46. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareBeneficios de las Herramientas CASE2. Soporte para el desarrollo de prototipos de sistemasEn general, el desarrollo de prototipos de aplicaciones tomavarias formas. En ocasiones se desarrollan diseños para pantallasy reportes con la finalidad de mostrar la organización ycomposición de los datos, encabezados y mensajes. Los ajustesnecesarios al diseño se hacen con rapidez para alterar lapresentación y las características de la interface. Sin embargo, nose prepara el código fuente, de naturaleza orientada haciaprocedimientos, como una parte del prototipo.
  47. 47. Proceso de desarrollo de softwareHerramientas CASE para el proceso de desarrollo de SoftwareBeneficios de las Herramientas CASE 3. Generación de código La ventaja más visible de esta característica es la disminución del tiempo necesario para preparar un programa. Sin embargo, la generación del código también asegura una estructura estándar y consistente para el programa (lo que tiene gran influencia en el mantenimiento) y disminuye la ocurrencia de varios tipos de errores, mejorando de esta manera la calidad. Las características de la generación del código permiten volver a utilizar el software y las estructuras estándares para generar dicho código, así como el cambio de una especificación modular, lo que significa volver a generar el código y los enlaces con otros módulos.

×