You are on page 1of 21

Tema 12

del Software

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Introduccin a la Ingeniera del Software


3

Ingeniera

Qu es el Software?
del Software

Ingeniera

PROGRAMAS + ESTRUCTURAS DE DATOS + DOCUMENTACIN

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Programas: Secuencia de instrucciones interpretables por una mquina para resolver un problema. Estructuras de Datos: Informacin estructurada representable en una mquina que manipula el programa en la resolucin del problema. Documentacin: Describe por un lado, el funcionamiento y el uso del programa, y por otro, su construccin.
4

SOFTWARE

Qu es la Ingeniera del Software?


del Software Introduccin a la Ingeniera

En general, se entiende por INGENIERA, la aplicacin prctica y eficiente de los conocimientos cientficos. En el contexto de la produccin de software, la INGENIERA DEL SOFTWARE, es una disciplina de ingeniera que integra mtodos, herramientas y procedimientos para el desarrollo del software, aplicados de manera sistemtica y organizada desde un enfoque de calidad. La ingeniera del software comprende: Procesos del desarrollo del software. Mtodos y tcnicas para el desarrollo de software. Herramientas automticas de ayuda al desarrollo de software. Sistemas de evaluacin de la calidad del software.
5

Metodologa y Tecnologa de la Programacin II

Desarrollo de Software a Pequea Escala


del Software

Ingeniera

Proceso simple Modelado mnimo Herramientas simples Puede hacerlo una persona Desarrollo artesanal Bajo coste No precisa apenas de ingeniera!

sola

Paso 1

Paso 2

Introduccin a la

Paso 3

Paso 4
6

Metodologa y Tecnologa de la Programacin II

Desarrollo de Software a Gran Escala


del Software

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Ingeniera

Proceso complejo Modelado y diseo Herramientas sofisticadas Equipo de trabajo Coste muy elevado Gestin del proyecto Posiblemente plazos de terminacin Necesidad de Ingeniera!

Perspectiva Histrica del Desarrollo de Software


del Software

Dcada 50-60:
Software como un aadido. Desarrollo artesanal, a medida. Lenguajes de bajo nivel.

Dcada 80-90:
Tecnologa de SGBDs, SOs... Nuevos paradigmas de programacin (OO, C/S)

90s - actualidad:
Anlisis/Diseo OO. Tecnologa CASE Componentes y reutilizacin Interoperabilidad (CORBA, .NET...) Internet ISw. distribuida repositorios de componentes reutilizables e-business; e-commerce ...
8

Ingeniera

Dcada 60-70:
Software como producto. Dcada lenguajes compilacin. Crisis del software. y

Introduccin a la

Dcada 70-80:
Programacin estructurada. Ingeniera del Software. Primeros mtodos estructurados.

Metodologa y Tecnologa de la Programacin II

La Problemtica Actual del Software


del Software Ingeniera

Incapacidad para estimar tiempo, coste y esfuerzo para el desarrollo de un producto software. Falta de calidad del producto software. Avance del hardware y necesidad de aplicaciones ms complejas. Cambio en la relacin entre el coste hardware/software.
Porcentaje del coste total del sistema
100 80 60 40 20 0 60 70 80 aos

Hardware Software

Metodologa y Tecnologa de la Programacin II

Introduccin a la

La Problemtica Actual del Software


del Software Introduccin a la
Metodologa y Tecnologa de la Programacin II

Ingeniera

Porqu lleva tanto tiempo terminar los programas? Porqu es tan elevado su coste? Porqu no podemos encontrar todos los errores antes de entregar el software a nuestros clientes? Porqu nos resulta difcil constatar el progreso conforme se desarrolla el software?

10

Algunas Causas
del Software Introduccin a la Ingeniera

Naturaleza no fsica del software. Problemas derivados de la intervencin de grupos. Problemas de comunicacin con los clientes. Poco esfuerzo en el anlisis y el diseo. Herramientas comerciales poco adecuadas. Problemas de gestin Planificaciones optimistas, plantillas poco cualificadas... Difusin limitada de las nuevas tcnicas, mtodos y herramientas. ...industria pendiente de su revolucin industrial.

Metodologa y Tecnologa de la Programacin II

11

Mitos del Software


del Software Introduccin a la Ingeniera

Metodologa y Tecnologa de la Programacin II

Mitos del directivo: Basta con tener ordenadores de la ltima generacin. Para acelerar un proyecto siempre se pueden aadir ms programadores. Mitos del cliente: Te explico por encima lo que quiero y ms adelante concretamos. Los cambios son fciles de incorporar. Mitos del programador: El trabajo termina cuando el programa funciona. Hasta que el programa no est terminado no se puede probar. Lo nico que hay que darle al cliente es un programa que funcione.

12

El Problema de la Comunicacin
del Software Ingeniera
1. Lo que el director desea

2. Como lo define el director de proyecto

3. Como se disea el Sistema.

Introduccin a la

4. Como lo desarrolla el programador

5. Como queda tras las pruebas

6. Lo que realmente el usuario quera.

Metodologa y Tecnologa de la Programacin II

13

Coste del Software


del Software

El coste de desarrollo es muy inferior al coste de mantenimiento Desarrollo (30%)

Ingeniera

Mantenimiento (70%)

Introduccin a la

Se puede reducir el coste de mantenimiento en la fase de desarrollo? Si, desarrollando software de calidad!
14

Metodologa y Tecnologa de la Programacin II

Calidad del Software


del Software

Metodologa y Tecnologa de la Programacin II

Fiable Capacidad de ofrecer los mismos resultados bajo las mismas condiciones. Eficiente Utilizacin ptima de los recursos de la mquina. Robusto No poseer un comportamiento catastrfico ante situaciones excepcionales (tolerante a fallos). Correcto Se ajusta a las especificaciones dadas por el usuario.

Introduccin a la

Portable Capaz de integrarse en entornos distintos con el mismo esfuerzo. Adaptable (extensibilidad) Modificar alguna funcin sin que afecte a sus actividades. Inteligible Diseo claro, bien estructurado y documentado. No Errneo No exista diferencia entre los valores reales y los calculados Reutilizable (reusabilidad)
15

Ingeniera

Tecnologa Estratificada
del Software

Ingeniera del Software


Herramientas Mtodos Proceso Enfoque de Calidad

Ingeniera Introduccin a la

La calidad es la base del proceso. El proceso la base de integracin de la tecnologa utilizada en el desarrollo del software. La tecnologa proporciona los mtodos sobre los que se apoyan las herramientas de desarrollo.
16

Metodologa y Tecnologa de la Programacin II

Principios de la Ingeniera del Software


del Software

Abstraccin
Permite parcelar la complejidad. Por ello se olvidan aspectos irrelevantes del sistema y se potencian los fundamentales.

Encapsulamiento u Ocultacin de la informacin


Esconder todos los detalles que no afecten a otros mdulos, definiendo interfaces estrictos que sirvan de interaccin entre los distintos modelos.

Ingeniera

Modularidad
Descomposicin de la solucin en mdulos independientes.

Localizacin
Agrupacin de todos aquellos elementos afectados por un mismo hecho.

Introduccin a la

Uniformidad
Todos los mdulos deben tener una notacin similar.

Completitud
Deben estar desarrollados todos los aspectos del sistema.

Validacin y Verificacin
fcilmente validable y verificable.
17

producto final debe ser Metodologa yEl Tecnologa de la Programacin II

Proceso de Desarrollo de Software


del Software Introduccin a la Ingeniera

Es un conjunto estructurado de actividades necesarios para desarrollar un producto software. Distintos procesos de software organizan las actividades de diferentes formas, y las describen con diferente nivel de detalle. No obstante, todos los procesos deben cubrir tres fases: Definicin y especificacin del sofware a desarrollar. Desarrollo del software. Mantenimiento del software. Dependiendo del producto software a desarrollar, algunos procesos son ms convenientes que otros.

Metodologa y Tecnologa de la Programacin II

18

Fases del Proceso de Desarrollo de Software


del Software Ingeniera

Introduccin a la

Definicin (Qu?): Anlisis del sistema Planificacin del proyecto Anlisis de riesgos y viabilidad Anlisis de requisitos Desarrollo (Cmo?): Diseo Status Status Codificacin Quo Quo Prueba Mantenimiento (Cambio): Correccin Adaptacin Mejora

Definicin Definicin

Desarrollo Desarrollo

Mantenimiento Mantenimiento Integracin Integracin

Metodologa y Tecnologa de la Programacin II

19

Fase de Definicin
del Software

Se centra en el QU hay que hacer. Anlisis del sistema:


Determinacin del papel que va a desempear el software dentro del sistema informtico (mbito).

Planificacin del proyecto:


Ingeniera

Anlisis de riesgos y viabilidad el proyecto. Asignacin de recursos. Estimacin de costos. Definicin y planificacin de tareas.

Introduccin a la

Anlisis de requerimientos:
Definicin detallada de las funciones que debe realizar el software. Criterios y pruebas de validacin del software.

Se elabora el documento de requisitos del software.


20

Metodologa y Tecnologa de la Programacin II

Fase de Desarrollo
del Software Introduccin a la Ingeniera

Se centra en el CMO hacerlo. Diseo: Arquitectura de la aplicacin Estructura de los datos Detalles procedimentales Diseo de las interfaces Codificacin: Eleccin del lenguaje de programacin Traduccin del diseo al lenguaje Prueba: Diseo de los test de prueba: test de caja negra y test de caja blanca. Planificacin de las pruebas
21

Metodologa y Tecnologa de la Programacin II

Fase de Mantenimiento
del Software Introduccin a la Ingeniera

Se ocupa de los CAMBIOS que experimenta el software durante su vida til. Mantenimiento correctivo: Correccin de errores detectados por el usuario. Mantenimiento adaptativo: Adaptacin del software a nuevos requisitos. Adaptacin del software a nuevas tecnologas. Mantenimiento perfectivo: Incorporacin de nuevas funcionalidades. Mantenimiento preventivo: Cambios para anticiparse a fallos o a cambios mayores. Esta fase vuelve a aplicar las fases de defincin y desarrollo pero en el contexto del software existente.
22

Metodologa y Tecnologa de la Programacin II

Coste de los Cambios


del Software Ingeniera

Los cambios en las primeras etapas son menos costosos que en las ltimas. Coste del cambio

60-100x 1x Definicin 1,5-6x Desarrollo Mantenimiento


23

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Ciclo de Vida del Software


del Software Introduccin a la Ingeniera

Sucesin de etapas por las que atraviesa un producto software a lo largo de su existencia (desde su concepcin hasta su muerte funcional): 1. Fase de requerimientos 2. Fase de especificacin 3. Fase de diseo 4. Fase de implementacin 5. Fase de integracin 6. Fase de mantenimiento 7. Fase de retirada

Metodologa y Tecnologa de la Programacin II

24

Modelos de Proceso de Ciclo de Vida


del Software Introduccin a la Ingeniera

Modelos lineales: Modelo construir-y-corregir Modelo lineal Modelos iterativos: Modelo de cascada Modelo de prototipado Modelos evolutivos: Modelo incremental Modelo en espiral Otros modelos: Modelo de transformacin formal Modelo basado en reutilizacin Programacin extrema
25

Metodologa y Tecnologa de la Programacin II

Modelo Construir y Corregir


del Software Introduccin a la Ingeniera

Consiste en escribir un programa y corregirlo hasta que satisfaga las funcionalidades deseadas. No es realmente un modelo de un proceso de desarrollo. Inconvenientes: No existe especificacin de requisitos. No hay diseo. Poco satisfactorio en grandes proyectos. No obstante, muchos proyectos siguen este modelo an.

Construir Construir la la primera primera versin versin

Modificar Modificar hasta hasta que que el el cliente cliente est est satisfecho satisfecho

Fase Fase de de Mantenimiento Mantenimiento

Metodologa y Tecnologa de la Programacin II

26

Modelo Lineal
del Software Introduccin a la Ingeniera

Las fases del proceso de desarrollo se producen secuencialmente y hasta que no acaba una no comienza la siguiente. Inconvenientes: Todos requerimientos deben establecerse claramente al comienzo del proceso (requerimientos estticos). No existe vuelta atrs (retroalimentacin). La primera versin que prueba el cliente es la final. Desarrollo secuencial (bloqueos entre etapas).
Ingeniera de Sistemas/informacin anlisis diseo codificacin pruebas

Metodologa y Tecnologa de la Programacin II

27

Modelo de Cascada
del Software

Las fases del proceso de desarrollo se producen secuencialmente pero con retroalimentacin. Fue el primer modelo de proceso de desarrollo publicado (Royce, 1970).
Anlisis Anlisis Diseo Diseo Codificacin Codificacin Prueba Prueba Mantenimiento Mantenimiento
28

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Ingeniera

Caractersticas del Modelo de Cascada


Ventajas: Es simple y proporciona un marco para aplicar mtodos. Existe cierta retroalimentacin entre las fases del proceso. Cada fase genera su propia documentacin. til en proyectos de corta duracin. Inconvenientes: Poco til cuando los requerimientos son dinmicos. Poco realista, ya que los proyectos reales no siguen un flujo secuencial. Hasta que no termina una fase, no comienza la siguiente. La primera versin que prueba el cliente es la final. Propagacin de errores a pesar de la retroalimentacin (efecto bola de nieve). Metodologa y Tecnologa de la Programacin II 29
Introduccin a la Ingeniera del Software

Tasas de Errores y Efecto Bola de Nieve


del Software
50 45 40 35 30 25 20 15 Tasa de error

Ingeniera

10 5 0 ANLISIS IMPLEMENTACIN

ANLISIS DISEO IMPLEMENTACIN PRUEBAS MANTENIMIENTO

Introduccin a la

Metodologa y Tecnologa de la Programacin II

COSTE DE ELIMINACIN DE ERRORES

30

Modelo de Cascada en V
del Software

Mundo Real
Anlisis Anlisis Validacin Mantenimiento Mantenimiento

Ingeniera

Sistema
Verificacin Diseo Diseo Integracin Integracin

Introduccin a la

Mdulo
Codificacin Codificacin

Sentencia
31

Metodologa y Tecnologa de la Programacin II

Modelo de Cascada en V Ampliado


del Software

Mundo Real
Anlisis Anlisis de de Requerimientos Requerimientos Anlisis Anlisis del del Software Software Diseo Diseo de de la la Arquitectura Arquitectura Diseo Diseo Detallado Detallado
Validacin del sistema

Mantenimiento Mantenimiento Pruebas Pruebas de de Aceptacin Aceptacin

Aplicacin Sistema

Ingeniera

Verificacin del sistema Verificacin del subsistema

Subsistema
Introduccin a la

Integracin Integracin del del Sistema Sistema

Mdulo Sentencia

Integracin de Verificacin Integracin de Subsistemas Subsistemas del mdulo Prueba Prueba de de Unidades Unidades
32

Codificacin Codificacin

Metodologa y Tecnologa de la Programacin II

Ejemplo de Proceso de Desarrollo de Cascada


del Software
Planificacin: Estimacin de tiempo y recursos Estimacin de riesgos Lista detallada de tareas Diagrama de dependencias Establecimiento de metas Diagramas Gantt, PERT, etc Especificacin: Descripcin del sistema desde la perspectiva de usuario Descripcin detallada de la entrada y salida de datos Manejo de errores Redimiento y fiabilidad necesarios. Diseo de la arquitectura: Diseo descendente Eleccin del lenguaje de programacin Criterios de reutilizacin Diseo de las interfaces de los mdulos Diseo detallado: Diseo de estructuras de datos para cada mdulo Diseo de algoritmos de cada mdulo Codificacin: Traduccin del diseo detallado a cdigo. Prueba: Test de caja blanca Test de caja negra Mantenimiento

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Ingeniera

33

Modelo de Cascada con Prototipado Desechable


del Software

Igual que el modelo en cascada pero incorporando la construccin de un prototipo desechable en la fase de anlisis, para ayudar a capturar los requisitos.
Anlisis Anlisis Diseo Diseo Codificacin Codificacin Prueba Prueba Mantenimiento Mantenimiento
34

Metodologa y Tecnologa de la Programacin II

Introduccin a la

Ingeniera

Prototipado Prototipado

Prototipos
del Software Introduccin a la Ingeniera

Un PROTOTIPO es un modelo o maqueta de un sistema que se construye para comprender mejor el problema y sus posibles soluciones. Permite: Evaluar mejor los requisitos Probar opciones de diseo Caractersticas de un prototipo: Funcionalidad limitada (slo se implementan las principales funcionalidades). Poca fiabilidad. Desarrollo rpido. Coste aproximado del 10% del coste total.

Metodologa y Tecnologa de la Programacin II

35

Modelo de Cascada con Prototipado Desechable


del Software Introduccin a la Ingeniera

Ventajas: Ayuda a mitigar el efecto de bola de nieve. El cliente ve pronto en funcionamiento una versin preeliminar del producto, lo que le ayuda a concretar sus requerimientos. Permite validar la correccin de la especificacin. Permite examinar la viabilidad y la utilidad de la aplicacin Inconvenientes: Se puede caer en la tentacin de desarrollar el producto final a partir del prototipo. Se pueden arrastrar decisiones de diseo tomadas para el prototipo pero no vlidas para el sistema final. Se pierde tiempo en la construccin del prototipo.
36

Metodologa y Tecnologa de la Programacin II

Uso de Prototipos
del Software Introduccin a la Ingeniera

Los prototipos se pueden utilizar en prcticamente todos los procesos de desarrollo de software pero son especialmente tiles cuando: El rea de aplicacin no est bien definida (bien por su dificultad o por falta de tradicin en su aplicacin). El coste de rechazo por parte de los usuarios, por no cumplir sus expectativas, es muy alto. Es necesario evaluar previamente el impacto del sistema en los usuarios y en la organizacin. Se usan nuevos mtodos, tcnicas, tecnologa.

Metodologa y Tecnologa de la Programacin II

37

Modelo de Prototipado Evolutivo


del Software Ingeniera

Comienza con un sistema relativamente simple que implementa los requisitos ms importantes o mejor conocidos. El prototipo se aumenta o cambia en cuanto se descubren nuevos requisitos. Finalmente, se convierte en el sistema requerido.
Construccin/ Construccin/ Revisin Revisin del del prototipo prototipo

Nuevos Nuevos Requisitos Requisitos

Introduccin a la

Validacin Validacin del del Cliente Cliente

Prueba Prueba del del Prototipo Prototipo


38

Metodologa y Tecnologa de la Programacin II

Modelo Incremental
del Software

El sistema se desarrolla a trozos: Primero las funcionalidades prioritarias y luego se van incorporando el resto de funcionalidades.
incremento 1
anlisis diseo codificacin pruebas

Ingeniera

Entregable del 1er incremento Entregable del 2 incremento Entregable del 3er incremento

incremento 2

anlisis

diseo

codificacin

pruebas

incremento 3

anlisis

diseo

codificacin

pruebas

Introduccin a la

incremento 4

anlisis

diseo

codificacin

pruebas

Entregable del 4 incremento

Tiempo Calendario
39

Metodologa y Tecnologa de la Programacin II

Modelo Incremental
del Software Introduccin a la Ingeniera

Ventajas: Tiene en cuenta la naturaleza evolutiva del software. Los primeros incrementos permiten descubrir nuevos requerimientos para los prximos incrementos. El cliente recibe pronto versiones operativas (aunque incompletas) del producto, y como consecuencia, se involucra ms en el proceso. Funciona bien cuando el equipo de programadores es escaso. Inconvenientes: Problemas para determinar las funcionalidades a desarrollar en cada incremento. El primer incremento suele ser el ncleo del producto. Peligro de caer en el modelo Construir y Corregir.
40

Metodologa y Tecnologa de la Programacin II

Modelo en Espiral
del Software

Se realizan varios ciclos de desarrollo pasando por todas las etapas y aadiendo funcionalidades al sistema en cada vuelta. Se presta especial inters al anlisis de riesgos y a la evaluacin por parte del cliente.
Planificacin

Ingeniera

Comunicacin con el cliente

Anlisis de Riesgos

Introduccin a la

Ingeniea

Evaluacin del Cliente

Construccin y Liberacin
41

Metodologa y Tecnologa de la Programacin II

Modelo en Espiral Detallado


del Software
Determinar Objetivos alternativas, restricciones Evaluar alternativas, identificar y resolver los riesgos
Anlis de riesgos Anlis de riesgos

Ingeniera

Anlis de riesgos REVISIN Plan de requisitos Plan del ciclo de vida

Anlis deProto- Prototipo 2 Prototipo 3 riesgos tipo 1

Prototipo operativo

Introduccin a la

Plan de desarrollo Plan de Integracin y prueba

Simulaciones, modelos, benchmarks Concepto de operacin Requisitos Diseo del software producto Diseo Validacin de detallado cdigo requisitos Pruebas V y V. del diseo Integracinunitarias Prueba de y prueba Servicio aceptacin

Planificar las fases siguientes

Metodologa y Tecnologa de la Programacin II

Desarrollar, verificar el producto del siguiente nivel

42

Modelo en Espiral
del Software Introduccin a la Ingeniera

Ventajas: Incorpora objetivos de calidad. Permite reducir riesgos. Existe un reconocimiento explcitos de diferentes alternativas para conseguir los objetivos del proyecto. Permite acomodar otros modelos. Se adapta bien a cualquier tipo de actividad. Muy til para software a gran escala. Inconvenientes: Poco utilizado hasta el momento. Requiere cierta experiencia en evaluacin de riesgos.

Metodologa y Tecnologa de la Programacin II

43

You might also like