Proceso de desarrollo de sofware

47
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 software Facilitador: Prof. Jesús Chaparro Equipo LICAUROS Bachilleres: Barreto Daniela Grillet Diego Idrogo Simon MATURÍN, Enero de 2013

description

Breve presentacion del proceso de desarrollo de software

Transcript of Proceso de desarrollo de sofware

Page 1: Proceso de desarrollo de sofware

UNIVERSIDAD DE ORIENTEDEPARTAMENTO DE INGENIERÍA DE SISTEMAS

ANÁLISIS Y DISEÑO DE SISTEMAS DE INFORMACIÓN – UNIDAD IV

Proceso de desarrollo de software

Facilitador:Prof. Jesús Chaparro

Equipo LICAUROS

Bachilleres:Barreto DanielaGrillet DiegoIdrogo Simon

MATURÍN, Enero de 2013

Page 2: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Introducción

Un 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.

Page 3: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Introducción

Sin 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.

Page 4: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Introducción

Pressman, caracteriza la Ingeniería de Software como “unatecnología multicapa”

Page 5: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Introducción

Las 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.

Page 6: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Introducción

El 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.

Page 7: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Introducción

La 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.

Page 8: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

Un proceso de desarrollo de software tiene como propósito laproducción eficaz y eficiente de un producto software que reúnalos requisitos del cliente.

Page 9: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

Aunque 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.

Page 10: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

Un 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.

Page 11: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

El 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.

Page 12: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

A pesar de la variedad de propuestas de proceso de software,existe un conjunto de actividades fundamentales que seencuentran presentes en todos ellos :

1. Especificación de software: Se debe definir la funcionalidad yrestricciones operacionales que debe cumplir el software.2. Diseño e Implementación: Se diseña y construye el software deacuerdo a la especificación.3. Validación: El software debe validarse, para asegurar quecumpla con lo que quiere el cliente.4. Evolución: El software debe evolucionar, para adaptarse a lasnecesidades del cliente.

Page 13: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

Otra 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

Page 14: Proceso de desarrollo de sofware

Proceso de desarrollo de software

El proceso de desarrollo del software

•Quién: Las Personas participantes en el proyecto de desarrollodesempeñando uno o más Roles específicos.

•Qué: Un Artefacto3 es producido por un Rol en una de susActividades. Los Artefactos se especifican utilizando Notacionesespecíficas. Las Herramientas apoyan la elaboración deArtefactos soportando ciertas Notaciones.

•Cómo y Cuándo: Las Actividades son una serie de pasos quelleva a cabo un Rol durante el proceso de desarrollo. El avancedel proyecto está controlado mediante hitos que establecen undeterminado estado de terminación de ciertos Artefactos.

Page 15: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Sommerville 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.”

Page 16: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Este 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.

Codificar y corregir

Page 17: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Este 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.

Codificar y corregir

Page 18: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

1.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.

Modelo en cascada

Page 19: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

4. 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.

Modelo en cascada

Page 20: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Una fase no comienza hasta que termine la fase anterior ygeneralmente se incluye la corrección de los problemasencontrados en fases previas.

Modelo en cascada

Page 21: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Una 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.

Desarrollo evolutivo

Page 22: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Desarrollo 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.

Desarrollo evolutivo

Page 23: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Enfoque 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.

Desarrollo evolutivo

Page 24: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Este modelo se basa en transformaciones formales de los requisitoshasta llegar a un programa ejecutable.

Desarrollo formal de sistemas

Page 25: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Como su nombre lo indica, es un modelo fuertemente orientado ala reutilización. Este modelo consta de 4 fases ilustradas en laFigura.

Desarrollo basado en reutilización

Page 26: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Las 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.

Desarrollo basado en reutilización

Page 27: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Mills 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 .

Procesos iterativos

Page 28: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Entre 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.

Procesos iterativos

Page 29: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Algunas 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.

Procesos iterativos

Page 30: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

El modelo de desarrollo enespiral es actualmente unode los más conocidos y fuepropuesto por Boehm. Elciclo de desarrollo serepresenta como unaespiral, en lugar de unaserie de actividadessucesivas con retrospectivade una actividad a otra.

Procesos iterativos

Page 31: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

Cada 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.

Procesos iterativos

Page 32: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Modelos de proceso software

3.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.

Procesos iterativos

Page 33: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Metodologías para desarrollo de software

Un 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.

Page 34: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Metodologías para desarrollo de software

Los 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.

Metodologías estructuradas

Page 35: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Metodologías para desarrollo de software

Su 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.

Metodologías orientadas a objetos

Page 36: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Metodologías para desarrollo de software

Las 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.

Metodologías ágiles

Page 37: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Metodologías para desarrollo de software

Un 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).

Metodologías ágiles

Page 38: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Metodologías para desarrollo de software

Entre 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 .

Metodologías ágiles

Page 39: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

Las 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.

Page 40: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

Se 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.

Page 41: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

El 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.

Page 42: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

No 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.

Tipos de Herramientas CASE

Page 43: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

I-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.

Tipos de Herramientas CASE

Page 44: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

U-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.

Tipos de Herramientas CASE

L-CASE : dirigidas a las últimas fases del desarrollo: construcción eimplantación.

Page 45: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

1. 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.

Beneficios de las Herramientas CASE

Page 46: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

2. 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.

Beneficios de las Herramientas CASE

Page 47: Proceso de desarrollo de sofware

Proceso de desarrollo de software

Herramientas CASE para el proceso de desarrollo de Software

3. Generación de códigoLa ventaja más visible de esta característica es la disminución deltiempo necesario para preparar un programa. Sin embargo, lageneración del código también asegura una estructura estándary consistente para el programa (lo que tiene gran influencia en elmantenimiento) y disminuye la ocurrencia de varios tipos deerrores, mejorando de esta manera la calidad. Las característicasde la generación del código permiten volver a utilizar el softwarey las estructuras estándares para generar dicho código, así comoel cambio de una especificación modular, lo que significa volver agenerar el código y los enlaces con otros módulos.

Beneficios de las Herramientas CASE