01 intro i-sw
-
Upload
efar-agrrmz -
Category
Education
-
view
178 -
download
1
Transcript of 01 intro i-sw
1
Fundamentos de Ingeniería de SW 1
Fundamentos de Ingeniería de Software
Marcello Visconti y Hernán AstudilloDepartamento de Informática
Universidad Técnica Federico Santa María{visconti,hernan} at inf.utfsm.cl
Fundamentos de Ingeniería de SW 2UTFSM
EX UMBRA SOLEMIN
Presentación
z InstructoresØ Marcello Visconti
qOficina: F-216
Ø Hernán AstudilloqOficina: F-118
z Horario & materialesØ Clases: Ma-Mi 7-8 y 9-10; sala M.203Ø Ayudantías y evaluaciones: Ju 7-8, M-201 y M-203Ø www.inf.utfsm.cl/~visconti/ili236/
2
Fundamentos de Ingeniería de SW 3UTFSM
EX UMBRA SOLEMIN
z Conceptos básicos de Ingeniería de Softwarez El Software: Factores de CalidadØ Factores ExternosØ Factores Internos
z El ciclo de vida de Desarrollo de SoftwareØ Ciclo de vida clásicoØ Ciclo de vida con prototipadoØ Ciclo de vida evolutivo
z Principios del diseñoØ AbstracciónØ Ocultamiento de InformaciónØ Modularidad
Introducción a la Ingeniería de SoftwareContenido
Fundamentos de Ingeniería de SW 4UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareObjetivos
z Presentar al alumno los conceptos básicos relacionados con laIngeniería de Software.
z Estudiar diversos ciclos de vida.z Presentar los principios de ingeniería que se emplean en la etapa de
diseño.
3
Fundamentos de Ingeniería de SW 5UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareConceptos básicos de Ingeniería de Software [1]
z El término “Ingeniería de Software” surge a final de los años 60 dentrode una conferencia dedicada a “la crisis del software”.
z La Ingeniería de Software se define cómo la disciplina tecnológicarelacionada con la producción sistemática y el mantenimiento deproductos de software que son desarrollados y modificados en eltiempo previsto y dentro de los costos estimados.Ø El objetivo de la Ingeniería de Software es producir productos de software.
Fundamentos de Ingeniería de SW 6UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Conceptos básicos de Ingeniería de Software [2]
z Los productos de software caen en dos categorías:Ø Productos genéricos: Desarrollados para un mercado (p.ej. MS Office).Ø Productos a medida: Encargados por un cliente (p.ej. SIGA).
z Productos de software: sistemas de software junto a la documentaciónque describe cómo instalarlo y usarlo.Ø Documentación de requerimientos.Ø Documentación de diseño.Ø Código fuente.Ø Planes de pruebas del sistema.Ø Principios de operación.Ø Instrucciones de instalación.Ø Procedimientos de mantenimiento.Ø Manuales de usuario.
4
Fundamentos de Ingeniería de SW 7UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareConceptos básicos de Ingeniería de Software [3]
z Ingeniería del Software:Ø“Conjunto de métodos, herramientas y procedimientos para producirsoftware de gran calidad” [R. Pressman]
Métodos
Herramientas Procedimientos
Ingeniería
de Software
Fundamentos de Ingeniería de SW 8UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareConceptos básicos de Ingeniería de Software [4]
z Los métodos describen cómo construir técnicamente el software.Comprende las actividades de:Ø Planificación y estimación de proyectos.Ø Análisis de requisitos.Ø Diseño.Ø Codificación.Ø Prueba.Ø Mantenimiento.
z Las herramientas dan soporte automático o semiautomático a losmétodos.
z Los procedimientos relacionan formalmente los métodos y lasherramientas.
5
Fundamentos de Ingeniería de SW 9UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareFactores de calidad de Software [1]
z La calidad del software es una noción que puede ser descrita medianteuna serie de factores, que pueden ser:Ø Externos: observables por los usuarios del producto.Ø Internos: observables por profesionales de la computación.
Fundamentos de Ingeniería de SW 10UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareFactores de calidad de Software [2]
z Factores de calidad externos:Ø Corrección: Capacidad de los productos software de ejecutar exactamente
sus tareas tal cómo están definidas en su especificación derequerimientos.
Ø Robustez: Capacidad de un sistema software para funcionar en situacionesanormales.
Ø Modificabilidad: Facilidad de un producto para adaptarse al cambio deespecificaciones.
Ø Reusabilidad: Facilidad para ser reutilizado en todo o en parte para nuevasaplicaciones.
Ø Compatibilidad: Facilidad de los productos software para combinarse unoscon otros.
Ø Eficiencia: Buen uso de los recursos Software y Hardware disponibles.Ø (cont.)
6
Fundamentos de Ingeniería de SW 11UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareFactores de calidad de Software [3]
z Factores de calidad externos (cont.):Ø Portabilidad: Facilidad para adaptarse a otros entornos software o
hardware.Ø Verificabilidad: Facilidad para preparar procedimientos de aceptación, en
particular datos de prueba, para detectar fallos durante las fases devalidación y operación.
Ø Integridad: Capacidad de un sistema para proteger sus documentos(programas, datos) contra accesos y modificaciones no autorizados.
Ø Facilidad de uso: Capacidad de aprender a manejar un sistema software,operar con el, preparar datos de entrada, interpretar resultados, etc.
z Factores de calidad internos:Ø Modularidad: Independencia funcional de los componentes del programa.Ø Legibilidad: Facilidad de lectura e interpretación del código del programa
Fundamentos de Ingeniería de SW 12UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software
z Ciclo de vida: Sucesión de etapas por las que atraviesa un productosoftware a lo largo de su desarrollo y existencia.
z Existen distintas formas o paradigmas de ciclo de vida:Ø Clásico.Ø Clásico con prototipado.Ø Evolutivo o en espiral.Ø Prototipado puro.Ø Combinación de estilos, etc.
7
Fundamentos de Ingeniería de SW 13UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Clásico [1]
z Propuesto por W. Royce a principios de los años 70.z Aplicación secuencial de una serie de pasos.z Cada paso genera entradas y documentación para la siguiente.
Ciclo de vida clásico ideal
Análisis Diseño Codificación Integración
Fundamentos de Ingeniería de SW 14UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Clásico [2]
z El ciclo de vida clásico real tiene la siguiente forma:
Análisis
Diseño
Codificación
Mantenimiento
Pruebas
Unitarias
Pruebas de
Integración
Pruebas de
aceptación
A todas las fases
8
Fundamentos de Ingeniería de SW 15UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Clásico [3]
z Críticas al ciclo de vida clásico:Ø Proyectos raramente siguen el flujo secuencial.Ø Dificultad para establecer los requerimientos al principio del proceso.Ø Errores detectados tardíamente.Ø Mantenimiento por “parcheado” (Corregir según se presenten los
problemas).
Fundamentos de Ingeniería de SW 16UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Prototipado [1]
z Prototipear consiste en construir una versión inicial de un producto, enla cual se describe la interacción hombre-máquina sin implementarcompletamente la funcionalidad del sistema (prototipo sinfuncionalidad).
z Utilidad:Ø Ayuda a los analistas a establecer las necesidades del cliente.Ø Ayuda a los desarrolladores a mejorar los productos.
9
Fundamentos de Ingeniería de SW 17UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Prototipado [2]
AnálisisConstrucción del Prototipo
Diseño
Validación
Especificación
Fundamentos de Ingeniería de SW 18UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Prototipado [3]
z Clases de prototipos:Ø Vertical: desarrolla completamente algunas de las facetas del producto.Ø Horizontal: desarrolla parcialmente todas las facetas del producto.Ø Evolutivo: La versión final es el producto ya construido.Ø Desechable: Se usa sola para la captación de requerimientos y
funcionalidad.
z Observaciones sobre el prototipado:Ø Facilita la captación de los requerimientos del cliente.Ø Reduce el riesgo de “parcheado” del producto final.Ø La construcción del prototipo supone una inversión adicional.Ø El cliente ve funcionando una versión de lo que será su programa sin
asumir que dicha versión no es robusta ni completa.
10
Fundamentos de Ingeniería de SW 19UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Evolutivo [1]
z Proceso evolutivo (espiral)
Fundamentos de Ingeniería de SW 20UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareCiclo de vida de Software: Evolutivo [2]
z Sistemas OO tienden a evolucionar en el tiempo.z Modelo evolutivo de proceso acoplado es el mejor paradigma para la
Ingeniería del SW OO.Ø Fomenta el ensamblaje (reuso) de componentes.
11
Fundamentos de Ingeniería de SW 21UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwarePrincipios del diseño
z Los principios fundamentales sobre los que se sustenta la Ingenieríade Software son:Ø AbstracciónØ Ocultamiento de InformaciónØ Modularidad
Fundamentos de Ingeniería de SW 22UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwarePrincipios del diseño: Abstracción [1]
z Mecanismos de abstracción:Ø Abstracción de procedimientos o funcional.Ø Abstracción funcional con excepciones.Ø Abstracción de datos.
Nombre = Procedimiento (v1: T1,..,vn: Tn) Retorna( v1’:T1’,..,vm’:Tm’);
requiereefectos
modifica
12
Fundamentos de Ingeniería de SW 23UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwarePrincipios del diseño: Abstracción [2]
z Abstracción de procedimientos o funcional.Ø Relacionada con los procedimientos o funciones de un lenguaje de
programación.Ø Proporciona una función de un conjunto de entradas a un conjunto de
salidas, pudiendo eventualmente modificar algunas de las entradas.
z Las abstracciones funcionales se pueden especificar con la siguienteplantilla:
Ø “Requiere” contiene las precondiciones de la abstracción.Ø “Modifica” lista los parámetros de entradas que son modificados.Ø “Efectos” describe cómo transforma las entradas en salidas.
Nombre = Procedimiento (v1: T1,..,vn: Tn) Retorna( v1’:T1’,..,vm’:Tm’);
requiereefectos
modifica
Fundamentos de Ingeniería de SW 24UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Abstracción [3]
z Ejemplos de abstracciones funcionales.
Concatenar = Procedimiento( a, b: String ) Retorna( c: String );
efectos: devuelve en c la concatenación de los strings a y b.
Buscar = Procedimiento( a: array[integer , x:integer) Retorna( i: integer );
requiere: a ordenado en orden ascendente.efectos: Si x ocurre en a, retorna la posición que ocupa. En otro caso i esigual al tamaño del vector mas uno.
Quitar_Duplicados = Procedimiento( a: array[integer ) Retorna( );
modifica: aefectos: quita los elementos duplicados de a.
13
Fundamentos de Ingeniería de SW 25UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Abstracción [4]
z Abstracciones funcionales con excepciones.Ø Contienen más de un estado de terminación.Ø Proporcionan un conjunto de funciones, de la forma:
Procedimiento: Dominio --> Rango.
Dominio = Do U D1 U.. DnRango = Ro U R1 U.. Rn
Procedimiento: Do --> Normal(Ro)
Procedimiento: D1 --> Excepcional(R1)......Procedimiento: Dn --> Excepcional(Rn)
Fundamentos de Ingeniería de SW 26UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Abstracción [5]
z Ejemplo de abstracciones funcionales con excepciones:
Nombre = Procedimiento(v1: T1,..,vn: Tn)
Retorna( v1’:T1’,..,vm’:Tm’) Señala( NombreExcepcion1( v1”:T1”,...,vn”:Tk”),
...NombreExcepcionn(...));
Buscar = Procedimiento(a:array[int ] , x: int) Retorna( i:int)
Señala( No_Ocurre, No_Ordenado, Ocurre(num:int )efectos: Si a no esta ordenado en orden ascendente señala no_ordenado.Señala No_Ocurre si x no ocurre. Si x ocurre una vez devuelve su posición.Si ocurre varias señala Ocurre, siendo Num el número de veces.
14
Fundamentos de Ingeniería de SW 27UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Abstracción [6]
z Abstracciones de datos.Ø Relacionadas con el concepto de tipo abstracto de datos.Ø Una abstracción de datos está formada por un conjunto de objetos y un
conjunto de operaciones (abstracciones funcionales) que manipulan esosobjetos.
Ø Se puede emplear la siguiente plantilla:
Nombre = Tipo de datos es Operacion1, Operacion2, ..., Operacionn
DescripciónOperaciones
Fin Nombre
Fundamentos de Ingeniería de SW 28UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Abstracción [7]
z Ejemplo de abstracción de datos:
Conjunto_Enteros = Tipo de datos es Crear, Insertar, Miembro_de, Elegir, Tamaño
Descripción: El tipo representa conjuntos no acotados de enterosOperaciones
Crear = Procedimiento() Retorna( S: Conjunto_Enteros )Efectos: Devuelve un conjunto vacío de enteros.
Insertar = Procedimiento( S: Conjunto_Enteros, x: Int)Modifica: SEfectos : Añade x a S.
...Fin Nombre
15
Fundamentos de Ingeniería de SW 29UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Ocultamiento de información
z Principio de ocultamiento de información:Ø“Los módulos de un sistema deben diseñarse de modo que la informacióncontenida en ellos sea inaccesible a todos aquellos módulos que nonecesiten tal información” (David Parnas, 1970)
INTERFAZ
DATOS INTERNOS
Fundamentos de Ingeniería de SW 30UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Modularidad [1]
z Modularidad:Ø“Un método de diseño software se dice que es modular si ayuda a losdiseñadores a construir sistemas software formados por elementosautónomos y organizados en arquitecturas sencillas”.
z Guías de modularidad:ØPocas interfaces.ØInterfaces estrechas.ØInterfaces explícitas.
16
Fundamentos de Ingeniería de SW 31UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Modularidad [2]
z Pocas interfaces:Ø“En un sistema formado por N módulos, el número de conexiones entreellos debe acercarse más al número mínimo que al máximo”
Menos adecuado Más adecuado
Comunicación
Modulo1 Modulo 3
Modulo 2 Modulo 4
Modulo1 Modulo 3
Modulo 2 Modulo 4
Fundamentos de Ingeniería de SW 32UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño: Modularidad [3]
z Interfaces estrechas: Si dos módulos se comunican deben deintercambiar el mínimo de información posible.
z Interfaces explícitas: La comunicación entre dos módulos debe poderdeducirse a partir del texto de ambos.
Módulo 1 Módulo 2datos
globales
Módulo 1 Módulo 2
datos entrada
datos salida
17
Fundamentos de Ingeniería de SW 33UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de Software Principios del diseño
z “Aunque los computadores han tenido mucho éxito, la experienciadiaria de uso de computadores es asociada muchas veces condificultad, pena y otras barreras para la mayoría de la gente... La faltade usabilidad del software y un diseño pobre de los programas sonuna vergüenza secreta de la industria.”Ø (Mitchell Kapor, Software Design Manifesto, 1990)
Fundamentos de Ingeniería de SW 34UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareResumen
z Conceptos básicos de Ingeniería de Softwarez El Software: Factores de CalidadØ Factores ExternosØ Factores Internos
z El ciclo de vida de Desarrollo de SoftwareØ El ciclo de vida clásicoØ El ciclo de vida clásico con prototipadoØ El ciclo de vida evolutivo
z Ingeniería de SoftwareØ Principios de Ingeniería en la etapa de diseño
18
Fundamentos de Ingeniería de SW 35UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareQuiz
z Explique el aporte y la relación entre métodos, herramientas yprocesos de Ingeniería de Software.
z ¿Porqué queremos productos de calidad?z ¿Qué es un ciclo de vida?z ¿Porqué se dice que el ciclo de vida evolutivo es mejor?
Fundamentos de Ingeniería de SW 36UTFSM
EX UMBRA SOLEMIN
Introducción a la Ingeniería de SoftwareQuiz
z Explique las causas delfenómeno definido en eldibujo.