La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Departamento de Lenguajes y Ciencias de la Computación

Presentaciones similares


Presentación del tema: "Departamento de Lenguajes y Ciencias de la Computación"— Transcripción de la presentación:

1 Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos
Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros en Informática Universidad de Málaga

2 1. Introducción a la Ingeniería del Software
Tema 1. Sistemas Software complejos Programa 1. Introducción a la Ingeniería del Software Sistemas Software complejos. Ciclo de vida del software. Evolución de la Ingeniería del Software. Análisis clásico. Análisis estructurado. Introducción al AOO. 2. Introducción a la Tecnología de Objetos

3 Definición y características del SW
Tema 1. Sistemas Software complejos Definición y características del SW Software: (1) instrucciones de ordenador que cuando se ejecutan cumplen una función y tienen un comportamiento deseados, (2) estructuras de datos que facilitan a los programadores la adecuada manipulación de la información, y (3) documentos que describen la operación y el uso de los programas. Características del software:  El software se desarrolla, no se fabrica en sentido estricto.  El software no se estropea.  La mayoría del software se construye a medida.

4 Influencia de los costes de ingeniería
Tema 1. Sistemas Software complejos Influencia de los costes de ingeniería

5 Tema 1. Sistemas Software complejos
Curvas de fallos HW SW

6 Aplicaciones del software
Tema 1. Sistemas Software complejos Aplicaciones del software Software de sistemas. Software de tiempo real. Software de gestión. Software científico y de ingeniería. Software de ordenadores personales. Software empotrado. Software de inteligencia artificial.

7 La Ingeniería del Software
Tema 1. Sistemas Software complejos La Ingeniería del Software Problemas del software.  La planificación y la estimación de costes son muy imprecisas.  La productividad es baja.  La calidad es mala.  El cliente queda insatisfecho. Ingeniería del software: Establecimiento y uso de principios de ingeniería robustos, orientados a garantizar la obtención de software económico, fiable y eficiente sobre máquinas reales. Métodos Herramientas Procedimientos

8 Ciclos de vida: clásico (en cascada)
Tema 1. Sistemas Software complejos Ciclos de vida: clásico (en cascada)

9 Ciclos de vida: contractual
Tema 1. Sistemas Software complejos Ciclos de vida: contractual

10 Ciclos de vida: tecn. de 4ª generación
Tema 1. Sistemas Software complejos Ciclos de vida: tecn. de 4ª generación

11 Ciclos de vida: construcción de prototipos
Tema 1. Sistemas Software complejos Ciclos de vida: construcción de prototipos Recolección y refinamiento de requisitos Diseño rápido Construcción de prototipos Evaluación Desarrollo del producto final

12 Ciclos de vida: en espiral
Tema 1. Sistemas Software complejos Ciclos de vida: en espiral

13 Visión genérica de la Ingeniería del Software.
Tema 1. Sistemas Software complejos Visión genérica de la Ingeniería del Software. Definición. ¿Qué? Análisis del sistema. Establecer el ámbito del software. Análisis de requisitos del sistema software. Definición detallada de la función del software. Planificación. Análisis de riesgos. Asignación de recursos. Definición de tareas. Estimación de costes. Desarrollo. ¿Cómo? Diseño. Arquitectura de la aplicación. Estructura de los datos. Estructura interna de los programas. Diseño de las interfaces. Codificación. Pruebas. Mantenimiento. El cambio. Corrección de errores. Cambios en el entorno. Cambios en los requisitos.

14 Análisis Clásico vs. Análisis Estructurado
Tema 1. Sistemas Software complejos Análisis Clásico vs. Análisis Estructurado Especificaciones utilizando análisis clásico. Monolíticas. Redundantes. Ambiguas. Imposibles de mantener o modificar. Especificaciones utilizando análisis estructurado. Gráficas. Particionadas. Mínimamente redundantes. Transparentes.

15 Análisis Estructurado: Modelos
Tema 1. Sistemas Software complejos Análisis Estructurado: Modelos Punto de vista del proceso: Diagramas de Flujo de Datos. Especificaciones de Proceso. Punto de vista de los datos: Diagramas de Entidad/Relación. Punto de vista del comportamiento: Diagramas de Flujo de Control. Especificaciones de Control. Diagramas de Estados. Diccionario de Datos

16 Diagramas de Flujo de Datos
Tema 1. Sistemas Software complejos Diagramas de Flujo de Datos leer concentracion abrir valvula leer temp calcular flujo sistema control alarma leer presion control usuario Datos Flujo

17 Análisis Estructurado: Elementos básicos
Tema 1. Sistemas Software complejos Análisis Estructurado: Elementos básicos

18 Metodología del análisis estructurado
Tema 1. Sistemas Software complejos Metodología del análisis estructurado Fases. Creación del modelo de procesos. DFDs y PSPECs Creación del modelo de control. DFCs CSPECs y DEs Creación del modelo de datos. DERs El problema de la consistencia entre los modelos.

19 Tema 1. Sistemas Software complejos
Modelos del sistema Modelo esencial (o lógico) del sistema: representa lo que el sistema debe hacer con objeto de satisfacer los requisitos del usuario. Tiene que estar (al menos idealmente) completamente libre de detalles de implementación. Errores comunes incluyen: Secuenciar de forma arbitraria las funciones de los DFDs. Utilizar ficheros temporales o de backup. Utilizar información redundante o derivada.    Modelo de implementación: versión revisada y anotada del modelo esencial, donde se especifican detalles como: Elección de dispositivos de entrada y salida. Elección de los dispositivos de almacenamiento. Formato de las entradas y salidas. Secuencia de operaciones de entrada y salida. Volumen de datos. Tiempo de respuesta. Copias de seguridad y descarga de datos del sistema. Seguridad.

20 Deficiencias del análisis estructurado
Tema 1. Sistemas Software complejos Deficiencias del análisis estructurado Descomposición funcional. Requiere traducir el dominio del problema en una serie de funciones y subfunciones. El analista debe comprender primero el dominio del problema y a continuación documentar las funciones y subfunciones que debe proporcionar el sistema. No existe un mecanismo para comprobar si la especificación del sistema expresa con exactitud los requisitos del sistema. Flujo de datos. Este enfoque se adapta bien al uso de sistemas informáticos para implementar el sistema, pero no es nuestra forma habitual de pensar. Modelo de datos. La relación entre los modelos es muy débil, y hay muy poca influencia de un modelo en otro. En la práctica, los modelos de procesos y de datos de un mismo sistema se parecen muy poco. En muchos casos son visiones irreconciliables, no del mismo sistema, sino de dos puntos de vista totalmente diferentes de organizar la solución.

21 Ventajas del AOO (1) Dominio del problema. Comunicación. Consistencia.
Tema 1. Sistemas Software complejos Ventajas del AOO (1) Dominio del problema. El paradigma OO es más que una forma de programar. Es una forma de pensar acerca de un problema en términos del mundo real en vez de en términos de un ordenador. El AOO permite analizar mejor el dominio del problema, sin pensar en términos de implementar el sistema en un ordenador. El AOO permite pasar directamente el dominio del problema al modelo del sistema. Comunicación. El concepto OO es más simple y está menos relacionado con la informática que el concepto de flujo de datos. Esto permite una mejor comunicación entre el analista y el experto en el dominio del problema (es decir, el cliente). Consistencia. Los objetos encapsulan tanto atributos como operaciones. Debido a esto, el AOO reduce la distancia entre el punto de vista de los datos y el punto de vista del proceso, dejando menos lugar a inconsistencias o disparidades entre ambos modelos. El término dominio del problema o dominio de aplicación es uno de los más usados en el paradigma orientado a objetos. Se refiere al campo de aplicación del sistema, es decir, a qué es el sistema, entendido desde su propio campo de aplicación, más que a su descripción en términos de una implementación en ordenador.

22 Ventajas del AOO (2) Expresión de características comunes.
Tema 1. Sistemas Software complejos Ventajas del AOO (2) Expresión de características comunes. La herencia expresa explícitamente las características comunes de una serie de objetos que en otros enfoques quedan escondidas y llevan a duplicar entidades en el análisis y código en los programas. El paradigma OO proporciona mecanismos que permiten reutilizar aquello que es común, sin impedir por ello describir las diferencias. Resistencia al cambio. Los cambios en los requisitos afectan notablemente a la funcionalidad de un sistema y por tanto al software desarrollado con métodos estructurados. Los objetos que componen o maneja el sistema son mucho más estables. Las modificaciones necesarias para adaptar una aplicación basada en objetos a un cambio de requisitos suelen estar mucho más localizadas. Reutilización. Aparte de la reutilización interna, el paradigma OO desarrolla modelos mucho más próximos al mundo real, con lo que aumentan las posibilidades de reutilización. Es probable que en futuras aplicaciones nos encontremos con objetos iguales o similares a los de la actual.

23 Aparición: Comienzos de la década de los 80
Tema 1. Sistemas Software complejos Introducción al AOO Aparición: Comienzos de la década de los 80 Evolución: Lenguajes-Diseño-Análisis Análisis: Coad/Yourdon, Jacobson, Booch, OMT (Rumbaugh) y finalmente UML (los tres amigos) . El Análisis Orientado a Objetos (AOO) se basa en conceptos sencillos: objetos y atributos, el todo y las partes, clases y miembros. Este enfoque pretende conseguir modelos que se ajusten mejor al problema real, a partir del conocimiento del llamado dominio del problema, evitando que influyan en el análisis consideraciones de que estamos analizando un sistema para implementarlo en un ordenador.

24 Tema 1. Sistemas Software complejos
En resumen... Cada vez es más evidente la necesidad de aplicar métodos de ingeniería al proceso de desarrollo de software. Los métodos aplicados en otras industrias no son adecuados debido a las especiales características de los productos sw. La Ingeniería del Software ha tenido una evolución paralela a la de los lenguajes y técnicas de programación (aunque con retraso). El enfoque orientado a objetos aporta una serie de ventajas importantes como la familiaridad con los conceptos (que facilita la comunicación con el cliente), la facilidad para representar sistemas sin la influencia de las características de implementación en el ordenador, la integración con los métodos de diseño e implementación y la consistencia entre las diferentes vistas de un sistema.

25 1.2. Introducción a la Tecnología de Objetos
Tema 1. Sistemas Software complejos Programa 1.2. Introducción a la Tecnología de Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

26 Evolución Histórica Lenguajes Máquina / Ensamblador Cód.Inst.Simb.
Tema 1. Sistemas Software complejos Evolución Histórica A B S T R C I Ó N O P E L D Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring. PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Datos Lenguajes Orientados a Objetos Métodos Mensajes

27 Evolución Histórica COMPONENTES Eventos Invocación remota Componentes
Tema 1. Sistemas Software complejos Evolución Histórica A B S T R C I Ó N O P E L D Lenguajes Máquina / Ensamblador Cód.Inst.Simb. Macros Id = Dir Mem. Manip.Total de Datos FORTRAN Subrutinas Funciones Id. Simb. Tipos Oper. restring. PASCAL Anidamiento Subprogramas Registros Tipos definidos Gest. Din. Mem MODULA-2 ADA Encapsulam. Octult. Inform. Espec - Impl Tipo Abstracto de Orientados a Objetos Métodos Mensajes COMPONENTES Eventos Invocación remota Componentes

28 Razones para la crisis del software
Tema 1. Sistemas Software complejos Introducción Razones para la crisis del software ¿Hacer un lápiz es difícil? ¿La industria del software se parece más a ... la fabricación de armas? la fontanería? Tecnología / objetivo.

29 El Paradigma Orientado a Objetos
Tema 1. Sistemas Software complejos Programa El Paradigma Orientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

30 ¿Qué es la Orientación a Objetos?
Tema 1. Sistemas Software complejos ¿Qué es la Orientación a Objetos? El concepto surge en los lenguajes de programación Se organiza el software como una colección de objetos discretos que encapsulan Estructuras de Datos y Comportamiento. Un sistema OO funciona mediante la colaboración entre los objetos que se comunican entre sí. El concepto se extiende a los métodos de análisis y diseño Se utilizan los objetos del mundo real como base para construir modelos Los elementos que forman los sistemas del mundo real se corresponden con objetos software

31 Las clases y los objetos están en todas partes
Tema 1. Sistemas Software complejos Las clases y los objetos están en todas partes Vehículo Punto Figura Animal Platero:Animal (1,3) (2,2) (2,1) (5,2.5)

32 Conceptos básicos: CLASES y OBJETOS
Tema 1. Sistemas Software complejos Conceptos básicos: CLASES y OBJETOS Lavadora marca modelo capacidad: integer ... Programar PonerRopa CerrarPuerta Lavar CLASE Atributos Operaciones Comportamiento OBJETO Valores de los atributos Estado Identidad ID:Lavadora marca=“Lapava” capacidad=5 estado=centrifugando

33 Conceptos básicos: PASO DE MENSAJES
Tema 1. Sistemas Software complejos Conceptos básicos: PASO DE MENSAJES Invocación de métodos Medio de colaboración entre objetos :MandoADistancia :Televisor Conectar() Canal(4)

34 Conceptos básicos: ENCAPSULACIÓN
Tema 1. Sistemas Software complejos Conceptos básicos: ENCAPSULACIÓN Sens => VolUp => => Settings.vol++ => DAC23.out=0.7 => Amp02.gain=1.7 => OSD, Pref, ... Ocultación de detalles Concepto de Interfaz Independencia Vol+ Sens3 => Vol++ => DAC31.out=2.1 => Amp27.gain=1.3 => OSD, Pref, ...

35 Conceptos básicos: HERENCIA
Tema 1. Sistemas Software complejos Conceptos básicos: HERENCIA Generalización / Especialización Los objetos “heredan” las características de la clase. Las clases pueden heredar de otras clases. Extensión. Restricción. Modificación. Utilidad: Abstracción. Reutilización. Electrodoméstico tensión consumo Conectar Desconectar Hormiga Lavadora Televisor Plancha capacidad numCanales vapor

36 Conceptos básicos: POLIMORFISMO
Tema 1. Sistemas Software complejos Conceptos básicos: POLIMORFISMO Ej: Operación “Abrir” Puerta Plazo Puerto Cuenta Abrir() Permite al modelador hablar el lenguaje del cliente. Evita asignar identificadores artificiosos para distinguir las operaciones. Contribuye a la reutilización de código. Ej: Operación “Enchufar” TomaDeCorriente tensión Enchufar(e:Electrodoméstico)

37 Conceptos básicos: ASOCIACION
Tema 1. Sistemas Software complejos Conceptos básicos: ASOCIACION Modela la relación entre objetos (necesaria para que se comuniquen y colaboren) Asociación-Clase / Enlace-Objeto Tipos básicos: Asociación Herencia Agregación / Composición (agregación fuerte) Coche Motor Árbol Hoja

38 Hasta aquí deberíamos tener claro ...
Tema 1. Sistemas Software complejos Hasta aquí deberíamos tener claro ... Cómo surge el enfoque OO. Cómo funciona un sistema OO. El concepto y la representación de: Asociación Agregación Herencia Polimorfismo Paso de mensajes Encapsulación Clase y Objeto Atributos Operaciones Comportamiento Identidad Interfaz

39 El Paradigma Orientado a Objetos
Tema 1. Sistemas Software complejos Programa El Paradigma Orientado a Objetos Historia e introducción. Conceptos básicos. Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

40 OBJETO = Instancia de una CLASE
Tema 1. Sistemas Software complejos Clases y Objetos CLASE = MODULO + TIPO Criterio de Modularización Estado + Comportamiento Entidad estática (en general) OBJETO = Instancia de una CLASE Objeto (Clase)  Valor (Tipo) Identidad Entidad dinámica Cada objeto tiene su propio estado Objetos de una clase comparten su comportamiento

41 Métodos: definen el comportamiento de una clase
Tema 1. Sistemas Software complejos Métodos y Mensajes Métodos: definen el comportamiento de una clase Invocación de métodos: Paso de Mensajes obj.mens(args) mens(obj,args) Punto x,y: float trasladar(a,b) distancia(pto) Estado e identidad Comportamiento P1:Punto X=2 Y=2 trasladar(1,-1)

42 Estructuras que encapsulan datos y funciones
Tema 1. Sistemas Software complejos Clases Estructuras que encapsulan datos y funciones CONSTRUCTOR “Punto.hpp” class Punto { public: Punto(); float x,y; void trasladar(float, float); void cambiar_x(float a){x=a;}; void cambiar_y(float b){y=b;}; float distancia(Punto); }; VARIABLES DE ESTADO (DATOS MIEMBRO) MÉTODOS (FUNCIONES MIEMBRO)

43 Colaboración entre objetos
Tema 1. Sistemas Software complejos Colaboración entre objetos Los objetos (clases) colaboran para resolver problemas. La forma en que los objetos (clases) colaboran puede ser muy variada: Asociación simple Herencia Agregación Composición ...

44 Agregación de objetos class Segmento { private Punto inicio,final;
Tema 1. Sistemas Software complejos Agregación de objetos class Segmento { private Punto inicio,final; public Segmento(Punto p) {inicio = Punto(); final = p;} public float longitud() {return inicio.distancia(final);} public void trasladar(float a,float b) {inicio.trasladar(a,b); final.trasladar(a,b);} }

45 Composición de objetos
Tema 1. Sistemas Software complejos Composición de objetos public class Habitacion { private int numHabitacion; private int numCamas; // declaración de métodos ... } public class Hotel1 { Habitacion h1; Habitacion h2; // resto declaraciones h1 = new Habitacion( 222 );

46 Construcción y Destrucción
Tema 1. Sistemas Software complejos Construcción y Destrucción Diferentes mecanismos para la creación y la eliminación de objetos, dependiendo del lenguaje. Construcción de objetos (reservar memoria): Constructores (C++, Eiffel, Java) Métodos de clase (Smalltalk) Eliminación de objetos (liberar memoria): Destructores (C++) Recolección automática de memoria –garbage collection- (Smalltalk, Eiffel, Java) Detalles

47 Construcción y Destrucción
Tema 1. Sistemas Software complejos Construcción y Destrucción //C++ class Jugador { int salud; int fuerza; Jugador(); // constructor - no tiene tipo Jugador(int s, int f);// constructor alternativo void mover(); void atacar(); }; Jugador::~Jugador() { salud = 0; fuerza = 0; }

48 Construcción y Destrucción
Tema 1. Sistemas Software complejos Construcción y Destrucción JAVA class Circulo extends Elipse { // extensión, restricción, modificación; public Circulo () { ... }; public Circulo (int radio) { ... }; } ... Circulo c1; c1 = new Circulo(4);

49 Construcción y Destrucción
Tema 1. Sistemas Software complejos Construcción y Destrucción Smalltalk Vehiculo subclass: #Coche // extensión, restricción, modificación; ... MiCoche := Coche new: ’ABC-1234’

50 Posibilidad de reutilizar código
Tema 1. Sistemas Software complejos Herencia Posibilidad de reutilizar código Algo más que incluir ficheros o importar módulos Distintos tipos de herencia: simple / múltiple de implementación/de interfaz Limitaciones Problemas Figura Polígono Elipse Círculo Irregular Regular Detalles

51 Herencia JAVA class Elipse extends Figura {
Tema 1. Sistemas Software complejos Herencia JAVA class Elipse extends Figura { // extensión, restricción, modificación } C++ class Elipse : public Figura { Smalltalk Figura subclass: #Elipse ”extensión, restricción, modificación” Python class Elipse (Figura)

52 Extensión y Reutilización de código
Tema 1. Sistemas Software complejos Herencia Extensión y Reutilización de código Una clase derivada hereda el comportamiento de su clase padre Redefinición de métodos Clases abstractas Herencia múltiple / Herencia repetida

53 Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes
Tema 1. Sistemas Software complejos Polimorfismo puntero a objeto en C++ Una variable puede referirse a objetos de una clase distinta de la que se ha declarado Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes Restricción en base a la herencia

54 Las clases ocultan los detalles de realización de los métodos.
Tema 1. Sistemas Software complejos Encapsulación Las clases ocultan los detalles de realización de los métodos. Los “usuarios” (los objetos que invocan esos métodos) conocen el interfaz y la semántica. No tienen que preocuparse de los detalles. El concepto de interfaz puede ampliarse. Contribuye a la reusabilidad del código.

55 Al fin del tema debemos tener claro ...
Tema 1. Sistemas Software complejos Al fin del tema debemos tener claro ... Cómo surge y evoluciona el concepto OO. Cuáles son los elementos y características básicas de este enfoque. Cómo se plasma el enfoque OO en los lenguajes de programación. Las particularidades que se introducen sobre los conceptos básicos al aplicarlos en sistemas reales

56 A continuación ... El Lenguaje de Modelado Unificado.
Tema 1. Sistemas Software complejos A continuación ... El Lenguaje de Modelado Unificado. Introduciremos UML, y veremos cómo realizar Modelado estructural Modelado del comportamiento Modelado arquitectónico Preparación: Tema 3. El Lenguaje de Modelado Unificado. Caps. 1,3,4,5. Schmuller. Teach yourself UML in 24 hours. Cap, 1. “Los 3 amigos”, The Unified Modeling Language. Probar/Jugar con Rational Rose y MagicDraw UML.


Descargar ppt "Departamento de Lenguajes y Ciencias de la Computación"

Presentaciones similares


Anuncios Google