Tema 1' Introduccin a la Ingeniera del Software y la Tecnologa de Objetos - PowerPoint PPT Presentation

1 / 52
About This Presentation
Title:

Tema 1' Introduccin a la Ingeniera del Software y la Tecnologa de Objetos

Description:

Debido a esto, el AOO reduce la distancia entre el punto de vista de los ... basada en objetos a un cambio de requisitos suelen estar mucho m s localizadas. ... – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 53
Provided by: lcc6
Category:

less

Transcript and Presenter's Notes

Title: Tema 1' Introduccin a la Ingeniera del Software y la Tecnologa de Objetos


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
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
  • 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
5
Curvas de fallos
HW
SW
6
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
  • 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)
9
Ciclos de vida contractual
10
Ciclos de vida tecn. de 4ª generación
11
Ciclos de vida construcción de prototipos
12
Ciclos de vida en espiral
13
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
  • 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
16
Diagramas de Flujo de Datos
Datos Flujo
17
Análisis Estructurado Elementos básicos
18
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
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
  • 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.
  • 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.
  • 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
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
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
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
27
Evolución Histórica
COMPONENTES
28
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
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?
  • 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
32
Conceptos básicos CLASES y OBJETOS
  • CLASE
  • Atributos
  • Operaciones
  • Comportamiento

33
Conceptos básicos PASO DE MENSAJES
  • Invocación de métodos
  • Medio de colaboración entre objetos

34
Conceptos básicos ENCAPSULACIÓN
  • Ocultación de detalles
  • Concepto de Interfaz
  • Independencia

Vol
35
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.

36
Conceptos básicos POLIMORFISMO
  • Ej Operación 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

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

38
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

39
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
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 y Mensajes
  • Métodos definen el comportamiento de una clase
  • Invocación de métodos Paso de Mensajes
  • obj.mens(args) mens(obj,args)

42
Clases
  • Estructuras que encapsulan datos y funciones

class Punto public Punto() float x,y void
trasladar(float, float) void cambiar_x(float
a)xa void cambiar_y(float b)yb float
distancia(Punto)
43
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
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
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
  • 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
  • //C
  • class Jugador
  • int salud
  • int fuerza
  • Jugador() // constructor - no tiene
    tipo
  • Jugador(int s, int f)// constructor
    alternativo
  • void mover()
  • void atacar()
  • JugadorJugador()
  • salud 0
  • fuerza 0

48
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
  • Smalltalk
  • Vehiculo subclass Coche
  • // extensión, restricción, modificación
  • ...
  • MiCoche Coche new ABC-1234

50
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

Detalles
51
Herencia
  • JAVA
  • class Elipse extends Figura
  • // extensión, restricción, modificación
  • C
  • class Elipse public Figura
  • // extensión, restricción, modificación
  • Smalltalk
  • Figura subclass Elipse
  • extensión, restricción, modificación
  • Python
  • class Elipse (Figura)
  • extensión, restricción, modificación

52
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
Polimorfismo
  • 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
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 ...
  • 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.
  • Introduciremos UML, y
  • veremos cómo realizar
  • Modelado estructural
  • Modelado del comportamiento
  • Modelado arquitectónico
  • Preparación
  • Tema 3. El Lenguaje de Modelado Unificado.
  • http//polaris.lcc.uma.es/amg/ISE/Tema3.zip
  • 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.
Write a Comment
User Comments (0)
About PowerShow.com