Title: Tema 1' Introduccin a la Ingeniera del Software y la Tecnologa de Objetos
1Tema 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
2Programa
- 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
3Definició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.
4Influencia de los costes de ingeniería
5Curvas de fallos
HW
SW
6Aplicaciones 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.
7La 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
8Ciclos de vida clásico (en cascada)
9Ciclos de vida contractual
10Ciclos de vida tecn. de 4ª generación
11Ciclos de vida construcción de prototipos
12Ciclos de vida en espiral
13Visió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.
14Aná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.
15Análisis Estructurado Modelos
16Diagramas de Flujo de Datos
Datos Flujo
17Análisis Estructurado Elementos básicos
18Metodologí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.
19Modelos 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.
20Deficiencias 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.
21Ventajas 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.
22Ventajas 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.
23Introducció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.
24En 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.
25Programa
- 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.
26Evolución Histórica
27Evolución Histórica
COMPONENTES
28Introducció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.
29Programa
- 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.
30Qué 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
31Las clases y los objetos están en todas partes
32Conceptos básicos CLASES y OBJETOS
- CLASE
- Atributos
- Operaciones
- Comportamiento
33Conceptos básicos PASO DE MENSAJES
- Invocación de métodos
- Medio de colaboración entre objetos
34Conceptos básicos ENCAPSULACIÓN
- Ocultación de detalles
- Concepto de Interfaz
- Independencia
Vol
35Conceptos 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.
36Conceptos básicos POLIMORFISMO
- 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
37Conceptos 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)
38Hasta aquí deberíamos tener claro ...
- Cómo surge el enfoque OO.
- Cómo funciona un sistema OO.
- El concepto y la representación de
39Programa
- 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
41Mé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)
42Clases
- 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)
43Colaboració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
- ...
44Agregació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)
45Composició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 )
46Construcció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
47Construcció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
48Construcció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)
49Construcción y Destrucción
- Smalltalk
- Vehiculo subclass Coche
- // extensión, restricción, modificación
- ...
- MiCoche Coche new ABC-1234
50Herencia
- 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
51Herencia
- 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
52Herencia
- 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
53Polimorfismo
- 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
54Encapsulació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.
55Al 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
56A 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.