01 intro i-sw

18
1 Fundamentos de Ingeniería de SW 1 Fundamentos de Ingeniería de Software Marcello Visconti y Hernán Astudillo Departamento de Informática Universidad Técnica Federico Santa María {visconti,hernan} at inf.utfsm.cl Fundamentos de Ingeniería de SW 2 UTFSM EXUMBRA SOLEM IN Presentación z Instructores Marcello Visconti q Oficina: F-216 Hernán Astudillo q Oficina: 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/

Transcript of 01 intro i-sw

Page 1: 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/

Page 2: 01 intro i-sw

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.

Page 3: 01 intro i-sw

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.

Page 4: 01 intro i-sw

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.

Page 5: 01 intro i-sw

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

Page 6: 01 intro i-sw

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.

Page 7: 01 intro i-sw

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

Page 8: 01 intro i-sw

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.

Page 9: 01 intro i-sw

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.

Page 10: 01 intro i-sw

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.

Page 11: 01 intro i-sw

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

Page 12: 01 intro i-sw

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.

Page 13: 01 intro i-sw

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.

Page 14: 01 intro i-sw

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

Page 15: 01 intro i-sw

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.

Page 16: 01 intro i-sw

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

Page 17: 01 intro i-sw

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

Page 18: 01 intro i-sw

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.