Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
1. El producto Software 2. El concepto de Ingeniera del Software 3. El proceso de desarrollo del Software
Contenido
1 El producto Software
1.1. Definicin y tipos de software. 1.2. Propiedades del software. 1.3. Proceso de produccin. 1.4. Problemas durante el proceso de produccin. 1.5. Desastres ocasionados por el software.
1. El producto Software
Definicin de Software
El software es un transformador de informacin, para ello: adquiere, gestiona, modifica, produce o trasmite informacin. Software = Programa de computadora No es slo cdigo y datos, tambin forma parte del software la documentacin producida durante su desarrollo.
Mal funcionamiento (Calidad) Hay que mantener el volumen de software existente Mantenimiento Hay una demanda creciente de nuevo software Adaptacin a las nuevas tecnologas Incremento de la complejidad Como desarrollamos software?
VS
Tipos de software
Segn
el campo de aplicacin Software de sistemas Software de tiempo real Software de gestin Software de ingeniera cientfica Software empotrado Software de inteligencia artificial
Software
genrico: Productos que son producidos por una organizacin para ser vendidos al mercado. Software hecho a medida: Sistemas que son desarrollados bajo pedido a un desarrollador especfico.
Fundamentos de Ingeniera del Software 1.1. Definicin y tipos de Software 6
Caractersticas principales
1) El software es un producto lgico: se desarrolla, no se fabrica; se deteriora, no se estropea.
Caractersticas principales
2) El software crea modelos de la realidad.
Caractersticas principales
3) El software est formado por multiples piezas que deben encajar perfectamente.
Proceso de produccin
Definicin
Construccin
Evolucin
Qu?
Cmo?
Cambios !
10
Proceso de produccin
Definicin
Construccin
Evolucin
Qu vamos a construir? Tareas a realizar: Ingeniera de sistemas Ingeniera de requisitos Planificacin de proyectos
1.3. El proceso de Produccin 11
Proceso de produccin
Definicin
Construccin
Evolucin
Cmo lo vamos a construir? Tareas a realizar: Diseo del software Generacin del cdigo Prueba del software
1.3. El proceso de Produccin 12
Proceso de produccin
Definicin
Construccin
Evolucin
Proceso de produccin
Esfuerzo requerido por etapas
20,00%
50,00%
30,00%
Definicin Construccin Mantenimiento
Fundamentos de Ingeniera del Software 1.3. El proceso de Produccin 14
Mantenimiento
Cambios en los requisitos del usuario
Otros
Mejoras en la eficiencia
Cambios de emergencia
Documentacin
15
Problemas
1) Comunicacin entre personas.
Clientes
Desarrolladores
Fundamentos de Ingeniera del Software 1.4 Problemas durante el proceso de produccin 16
Problemas
1) Comunicacin entre personas.
17
Problemas
2) Incumplimiento de la planificacin.
solucin: horda mongoliana ?
Equipo de desarrollo
Fundamentos de Ingeniera del Software 1.4 Problemas durante el proceso de produccin 18
Problemas
3) Incorporar cambios durante etapas avanzadas del proceso.
Impacto del cambio
Coste
Definicin
Fundamentos de Ingeniera del Software
Construccin Mantenimiento
1.4 Problemas durante el proceso de produccin 19
Contenido
2 El concepto de Ingeniera del Software
20
Definicin de IS
Establecimiento de los principios y mtodos de la ingeniera a fin de obtener software de modo rentable que sea fiable y trabaje en mquinas reales. (Friz Bauer, 1972). Aplicacin prctica del conocimiento cientfico en el diseo y construccin de programas de computadora y la documentacin asociada y requerida para el desarrollo, operacin y mantenimiento del programa. (B. Bohem, 1976).
2.1 Definicin de IS
21
Definicin de IS
Estudio de los principios y mtodos para el desarrollo y mantenimiento de sistemas software. (M.V. Zelkowitz, 1978). Aplicacin de un enfoque sistmico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento del software; es decir, aplicacin de la ingeniera al software. (standard - IEEE, 1993). Conjunto de teoras, mtodos e instrumentos (tecnolgicos y organizativos) que permitan construir sistemas software con las caractersticas de calidad deseadas. (M. Marr, 2002 apuntes de clase).
2.1 Definicin de IS 22
Terminologa usada en IS
Sistema: Conjunto de elementos relacionados entre si y con el medio, que forman una unidad o un todo organizativo. Sistema basado en computadora: Conjunto o disposicin de elementos organizados para cumplir una meta predefinida al procesar informacin.
Documentacin y Procedimientos
Sistema Software
Sistema hardware
Bases de datos
Personas
23
Terminologa usada en IS
Sistema Software: Conjunto de piezas o elementos software relacionados entre si y organizados en subsistemas.
E2
E1 E5
E6
E7 E3 E4
SubSist1
SubSist2
24
Terminologa usada en IS
Modelo: Representacin de un sistema en un determinado lenguaje. De un mismo sistema se pueden construir muchos modelos.
25
Terminologa usada en IS
Principio: Elementos adquiridos mediante el conocimiento, que definen las caractersticas que debe poseer un modelo para ser una representacin adecuada de un sistema. Herramienta: Instrumentos que permiten la representacin de modelos. Tcnica: Modo de utilizacin de las herramientas.
Mi tcnica
26
Terminologa usada en IS
Heursticas: Conjunto de reglas empricas, que al ser aplicadas producen modelos que se adecuan a los principios.
Mtodo: Secuencia de actividades, para la obtencin de un producto (modelo), que describen como usar las herramientas y heursticas.
27
Resumen
Heursticas Tcnicas
Herramientas Metodos
Principios
Definicin de IS: Estudio de los principios, metodologas y herramientas que permiten o facilitan el desarrollo y mantenimiento de sistemas software
Fundamentos de Ingeniera del Software 2.2 Terminologa usada en IS 28
Contenido
3 El proceso de desarrollo del software
3.1. El proceso de desarrollo 3.2. Modelo secuencial: Ciclo de vida clsico 3.2. Modelos Iterativos - Modelo incremental parcial - Prototipado - Modelo en espiral 3.3. Proceso unificado 3.4. Mtodos giles
Fundamentos de Ingeniera del Software 29
Secuenciales: hasta que no se acaba totalmente una etapa no comienza la siguiente No secuenciales o iterativos: el desarrollo se considera un proceso evolutivo en el que se parte de un software con funcionalidad mnima y se desarrolla progresivamente
30
Etapas principales
Especificacin de requisitos: Anlisis del problema a resolver. Documento en el que se dice qu debe hacer el sistema software.
Diseo: Bsqueda de la solucin. Descripcin de los componentes, sus relaciones y funciones que dan solucin al problema. Implementacin. Traduccin del diseo a un lenguaje de programacin entendible por una mquina. El cdigo
Control de la calidad: debe realizarse durante todo el proceso de desarrollo. Revisiones de todo lo que se va obteniendo junto con la prueba del cdigo. Mantenimiento o evolucin - reparar fallos en el sistema cuando sea descubiertos o adaptar el software a los nuevos entornos. Planificacin: Estimar el tiempo y los costes de desarrollo del software
3.1 El proceso de desarrollo 31
Cada fase se caracteriza por una actividad fundamental (que da nombre a esa fase) y otras actividades parciales. Cada una de estas fases posee unos objetivos concretos, y una serie de productos que se tendrn que obtener al final de la misma.
32
Operacin y mantenimiento
33
Modelos iterativos
Caractersticas: Permite un entendimiento incremental del problema (refinamientos sucesivos) Habilita una fcil retroalimentacin de usuario Objetivos parciales y Metas especficas El progreso es medido conforme avanzan las implementaciones
Requerimientos
Anlisis y Diseo
Se reducen, tan pronto como sea posible, los riesgos altos (tcnicos, de requisitos, de usabilidad ...)
Progreso visible en las primeras etapas.
e produce una temprana retroalimentacin. El proS ducto se refina y terminara mas cerca de las necesidades reales del usuario.
Manejo de la complejidad (pasos cortos y sencillos). l conocimiento que se adquiere en una iteracin E puede ser usado en el resto. e involucra continuamente al usuario (evaluacin, S retroalimentacin y obtencin y refinamiento de requisitos).
3.3 Modelos Iterativos 35
(*)
Caractersticas: Secuencial con iteraciones. Alguna comunicacin con el cliente(*). Optimizacin de los equipos de trabajo.
Diseo arquitectnico
Diseo detallado
...
Diseo detallado
...
Implementacin y prueba de unidad
...
...
Prototipado
Prototipo: Versin del software que se utiliza para demostrar los conceptos, probar las opciones de diseo y de forma general, comprender mejor el problema y sus posibles soluciones. Producto de funcionamiento limitado en cuanto a la capacidad, confiabilidad o eficiencia (Calidad del producto?).
Tipos de prototipos:
Prototipo evolutivo: El prototipo se transforma en etapas sucesivas hasta convertirse en el sistema final a entregar.
Se usa para:
Facilitar la obtencin y validacin de requisitos (desechable). Estudios de viabilidad (desechable). Propuestas de soluciones alternativas a un problema (desechable). En casos muy concretos como producto final (evolutivo).
37
Prototipado
Ventajas:
Se identifican las malas interpretaciones entre usuarios y desarrolladores Ayuda durante el proceso de validacin (completitud) Demostramos rpidamente la viabilidad del proyecto Se reducen los costos de desarrollo l cliente ve una versin inicial del software al comienzo del E proyecto
Inconvenientes:
Crea falsas expectativas por parte del cliente/usuario. Decisiones de diseo del prototipo que pasen a formar parte del producto final.
3.3 Modelos Iterativos
38
Necesidades iniciales
Prototipo
Demostracin y prueba del prototipo (*)
Fundamentos de Ingeniera del Software 3.3 Modelos Iterativos 39
Prototipado
En la evaluacin del sistema se decide:
El uso de prototipos en base a los siguientes criterios: Tipo de aplicacin. Complejidad. Caractersticas del cliente. Caractersticas del proyecto. Disponibilidad de herramientas para su construccin Tcnicas y lenguajes apropiados. Componentes reutilizables.
40
Modelo en espiral
Modelo en espiral de boehm.
Planificacin y bsqueda de alternativas Comunicacin con el cliente Puntos de entrada Construccin de prototipos Evaluacin de alternativas Anlisis de riesgos
41
Proceso unificado
Actividades
Flujos de Trabajo de Procesos
Fases
Inicio ElaboracinConstruccin
Transicin
Iteracin Iter. Iter. Iter. Iter. Iter. Iter. Preliminar #1 #2 #n #n+1 #n+2 #m
Iter.
#m+1
Iteraciones
Fundamentos de Ingeniera del Software 3.4 Proceso Unificado (PU) 42
Proceso unificado
Caractersticas:
Soporta tcnicas y modelado Orientado a objetos. Adaptable a cualquier tipo de sistema, desde los ms simples a los ms complejos. Enfocado en los riesgos, afrontando en las etapas iniciales los elementos de mayor riesgo y complejidad. Dirigido por casos de uso, desarrollndose en cada iteracin determinados casos de uso. Centrado en la arquitectura, mostrando y decidiendo los distintos aspectos arquitectnicos que presenta un sistema software en etapas tempranas, para que sirvan de base a las dems.
3.4 Proceso Unificado (PU) 43
Proceso unificado
Fases:
Proceso unificado
Ejemplo concreto de PU para un sistema simple
45
Mtodos Agiles
Muchos proyectos generan menos valor del esperado Snowbird, Utah (USA) feb 2001. Por qu tantos proyectos de desarrollo de software no se terminan a tiempo, cuestan ms que lo presupuestado originalmente, tienen problemas de calidad serios y generan menor valor que el esperado? Se preguntaron 17 expertos, que despus elaboraron el Manifiesto gil
46
Mtodos Agiles
47
Mtodos Agiles
48