Proceso de desarrollo de sofware

Preview:

DESCRIPTION

Breve presentacion del proceso de desarrollo de software

Citation preview

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

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.

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.

Proceso de desarrollo de software

Introducción

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

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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.

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.

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.

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

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

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.

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

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

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