01 intro i-sw

334 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
334
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

01 intro i-sw

  1. 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 1 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/ UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 2 1
  2. 2. Introducción a la Ingeniería de Software Contenido z Conceptos básicos de Ingeniería de Software z 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 UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 3 Introducción a la Ingeniería de Software Objetivos z Presentar al alumno los conceptos básicos relacionados con la Ingenierí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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 4 2
  3. 3. Introducción a la Ingeniería de Software Conceptos básicos de Ingeniería de Software [1] z El término “Ingeniería de Software” surge a final de los años 60 dentro de una conferencia dedicada a “la crisis del software”. z La Ingeniería de Software se define cómo la disciplina tecnológica relacionada con la producción sistemática y el mantenimiento de productos de software que son desarrollados y modificados en el tiempo previsto y dentro de los costos estimados. Ø El objetivo de la Ingeniería de Software es producir productos de software. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 5 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ón que 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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 6 3
  4. 4. Introducción a la Ingeniería de Software Conceptos básicos de Ingeniería de Software [3] Métodos Ingeniería de Software Herramientas Procedimientos z Ingeniería del Software: Ø“Conjunto de métodos, herramientas y procedimientos para producir software de gran calidad” [R. Pressman] UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 7 Introducción a la Ingeniería de Software Conceptos 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 los métodos. z Los procedimientos relacionan formalmente los métodos y las herramientas. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 8 4
  5. 5. Introducción a la Ingeniería de Software Factores de calidad de Software [1] z La calidad del software es una noción que puede ser descrita mediante una serie de factores, que pueden ser: Ø Externos: observables por los usuarios del producto. Ø Internos: observables por profesionales de la computación . UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 9 Introducción a la Ingeniería de Software Factores 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 de requerimientos. Ø Robustez: Capacidad de un sistema software para funcionar en situaciones anormales. Ø Modificabilidad: Facilidad de un producto para adaptarse al cambio de especificaciones. Ø Reusabilidad: Facilidad para ser reutilizado en todo o en parte para nuevas aplicaciones. Ø Compatibilidad: Facilidad de los productos software para combinarse unos con otros. Ø Eficiencia: Buen uso de los recursos Software y Hardware disponibles. Ø (cont.) UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 10 5
  6. 6. Introducción a la Ingeniería de Software Factores 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 de validació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 UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 11 Introducción a la Ingeniería de Software Ciclo de vida de Software z Ciclo de vida: Sucesión de etapas por las que atraviesa un producto software 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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 12 6
  7. 7. Introducción a la Ingeniería de Software Ciclo 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. Análisis Diseño Codificación Integración Ciclo de vida clásico ideal UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 13 Introducción a la Ingeniería de Software Ciclo 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 Pruebas Unitarias Pruebas de Integración Pruebas de aceptación A todas las fases Mantenimiento UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 14 7
  8. 8. Introducción a la Ingeniería de Software Ciclo 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). UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 15 Introducción a la Ingeniería de Software Ciclo de vida de Software: Prototipado [1] z Prototipear consiste en construir una versión inicial de un producto, en la cual se describe la interacción hombre-máquina sin implementar completamente la funcionalidad del sistema (prototipo sin funcionalidad). z Utilidad: Ø Ayuda a los analistas a establecer las necesidades del cliente. Ø Ayuda a los desarrolladores a mejorar los productos. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 16 8
  9. 9. Introducción a la Ingeniería de Software Ciclo de vida de Software: Prototipado [2] Especificación Construcción Análisis del Prototipo Validación Diseño UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 17 Introducción a la Ingeniería de Software Ciclo 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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 18 9
  10. 10. Introducción a la Ingeniería de Software Ciclo de vida de Software: Evolutivo [1] z Proceso evolutivo (espiral) UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 19 Introducción a la Ingeniería de Software Ciclo 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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 20 10
  11. 11. Introducción a la Ingeniería de Software Principios del diseño z Los principios fundamentales sobre los que se sustenta la Ingeniería de Software son: Ø Abstracción Ø Ocultamiento de Información Ø Modularidad UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 21 Introducción a la Ingeniería de Software Principios 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’); requiere efectos modifica UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 22 11
  12. 12. Introducción a la Ingeniería de Software Principios 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 siguiente plantilla: Nombre = Procedimiento (v1: T1,..,vn: Tn) Retorna( v1’:T1’,..,vm’:Tm’); requiere efectos modifica Ø “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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 23 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 es igual al tamaño del vector mas uno. Quitar_Duplicados = Procedimiento( a: array[integer ) Retorna( ); modifica: a efectos: quita los elementos duplicados de a. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 24 12
  13. 13. 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.. Dn Rango = Ro U R1 U.. Rn Procedimiento: Do --> Normal(Ro) Procedimiento: D1 --> Excepcional(R1). ..... Procedimiento: Dn --> Excepcional(Rn) UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 25 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. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 26 13
  14. 14. 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 esos objetos. Ø Se puede emplear la siguiente plantilla: Nombre = Tipo de datos es Operacion1, Operacion2, ..., Operacionn Descripción Operaciones Fin Nombre UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 27 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 enteros Operaciones Crear = Procedimiento() Retorna( S: Conjunto_Enteros ) Efectos: Devuelve un conjunto vacío de enteros. Insertar = Procedimiento( S: Conjunto_Enteros, x: Int) Modifica: S Efectos : Añade x a S. ... Fin Nombre UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 28 14
  15. 15. 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ón contenida en ellos sea inaccesible a todos aquellos módulos que no necesiten tal información” (David Parnas, 1970) INTERFAZ DATOS INTERNOS UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 29 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 los diseñadores a construir sistemas software formados por elementos autónomos y organizados en arquitecturas sencillas”. z Guías de modularidad: ØPocas interfaces. ØInterfaces estrechas. ØInterfaces explícitas. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 30 15
  16. 16. 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 entre ellos debe acercarse más al número mínimo que al máximo” Menos adecuado Más adecuado Modulo1 Modulo 3 Modulo1 Modulo 3 Comunicación Modulo 4 Modulo 4 Modulo 2 Modulo 2 UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 31 Introducción a la Ingeniería de Software Principios del diseño: Modularidad [3] z Interfaces estrechas: Si dos módulos se comunican deben de intercambiar el mínimo de información posible. datos entrada Módulo 1 Módulo 2 datos salida datos Módulo 1 Módulo 2 globales z Interfaces explícitas: La comunicación entre dos módulos debe poder deducirse a partir del texto de ambos. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 32 16
  17. 17. Introducción a la Ingeniería de Software Principios del diseño z “Aunque los computadores han tenido mucho éxito, la experiencia diaria de uso de computadores es asociada muchas veces con dificultad, pena y otras barreras para la mayoría de la gente... La falta de usabilidad del software y un diseño pobre de los programas son una vergüenza secreta de la industria.” Ø (Mitchell Kapor, Software Design Manifesto, 1990) UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 33 Introducción a la Ingeniería de Software Resumen z Conceptos básicos de Ingeniería de Software z 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 UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 34 17
  18. 18. Introducción a la Ingeniería de Software Quiz z Explique el aporte y la relación entre métodos, herramientas y procesos 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? UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 35 Introducción a la Ingeniería de Software Quiz z Explique las causas del fenómeno definido en el dibujo. UTFSMEXUMBRA I N SOLEM Fundamentos de Ingeniería de SW 36 18

×