You are on page 1of 10

Ing. Soft. II - Tema 1.

El problema del Software


Las empresas se han convertido en organizaciones basadas en
información

Hay que procesarla

Se necesita software

Objetivo de la Ingeniería del Software:


9 Incrementar la calidad del software

Ing. Soft. II - Tema 1.1

Volumen de información

Capacidad de proceso

Coste
Software Hardware

Tiempo de desarrollo
Software Hardware

Errores
Software Hardware

1
Ing. Soft. II - Tema 1.1

Coste del proyecto de software por fases de desarrollo

100
90
80
70 67 Análisis
60 Diseño
50 Programación
40 Evaluación
30 Mantenimiento
20 15
10 8 7
3
0

Ing. Soft. II - Tema 1.1

Causas de mantenimiento

Cambios en los
4 3,4 requisitos
5,5 Cambios en los
formatos de los datos
6,2 Reparaciones Urgentes

41,8 Modificaciones de rutina


9
Cambios Hardware

Documentación
12,4 Mejoras en la eficiencia

17,6 Otros

2
Ing. Soft. II - Tema 1.1

Coste de corrección de errores

Errores introd. (%) Errores detectados Coste relativo de


(%) corrección

Fase de desarrollo

Análisis de
55 18 1.0
requisitos

Diseño 30 10 1.0-1.5

Test 10 50 1.0-5.0

Mantenimiento 5 22 10-100

Ing. Soft. II - Tema 1.1

Manejo de la complejidad en la construcción de Software


“Puesto que la construcción de software es en forma inherente una
actividad de sistemas, esto es, un ejercicio de interrelaciones
complejas, el esfuerzo de comunicación es grande y pronto
domina la disminución de tiempo de trabajo individual originado
por la división. Añadir más hombres alarga, no acorta, el plan de
trabajo.”

[Brooks, F.P., “The mythical man-month; Essays on software eng.”,


1975]

La complejidad del software no está en el tamaño del


problema a resolver, sino en la interconexión, i.e,
dependencia entre secciones del código.

3
Ing. Soft. II - Tema 1.1

Manejo de la complejidad en Programación


Ensamblador:
9 Pequeños programas.

9 Programación individual.

9 Problemas:
• ¿qué valores contienen los registros?
• ¿entra en conflicto un nuevo identificador con otro
previamente definido?
• ¿qué variables hay que iniciar antes de transferir el control
(goto) a otra sección del código?
...

Ing. Soft. II - Tema 1.1

Manejo de la complejidad en Programación


Lenguajes de alto nivel: Fortran, Cobol, Pascal,...
9 Resuelven el problema de las subrutinas (procedimientos):
• Manejo automático de variables locales
• Concordancia implícita de argumentos

9 Proliferan los equipos de programación.

9 Procedimiento oculta información sobre algoritmos, no datos.

9 Módulos Agrupan (ocultan) procedimientos y datos.


• Aparecen los conceptos “público” y “privado”

9 Los módulos no permiten la “instanciación”

4
Ing. Soft. II - Tema 1.1

Manejo de la complejidad en Programación


Lenguajes orientados a objetos: Smalltalk, Java, C++, Eiffel,...

9 Aparecen las clases como representación práctica del


concepto de Tipo Abstracto de Datos.

9 Clase Æ Módulo “instanciable” que define un tipo de datos.

9 Objeto Æ ejemplo concreto (instancia) de una clase.

9 La solución a un problema se plantea como una sociedad de


objetos que se comunican y colaboran para alcanzar la
solución.

Ing. Soft. II - Tema 1.1

Manejo de la complejidad en Programación


Lo importante es ver como se manejan las ABSTRACCIONES
9 Subrutinas: Permiten ocultar información sobre las operaciones
pero no sobre los datos. Por ejemplo unas subrutinas para
controlar las operaciones sobre una pila, los datos son
reponsabilidad del programador.
9 Modulos (Unidades). Permiten introducir subrutinas visibles y
no visibles. Así como datos locales y no exportados. Pero no
podemos crear un modulo para proteger cada pila de datos
diferente.
9 Objetos: Son una especie de módulos instanciables. Tenemos
los datos y operaciones. Ahora si que podemos instanciar un
objeto pila con sus datos asociados. Por tanto los objetos no
facilitan la reutilización y el mantenimiento.

10

5
Ing. Soft. II - Tema 1.1

Manejo de la complejidad en Desarrollo de Sistemas


Por ejemplo si fundamos una empresa: PROCAOS(1/2)
Dedicada a las herramientas de ayuda a la decisión en el
mercado de valores basadas en técnicas de Programación
Caótica. Producto estrella: MERCA2
Como organizamos la empresa?
9 Todos los componentes hacen de todo (hay pocos clientes y
trabajadores), interesa sacar el día a día y lo que tenemos que
hacer no importa quién lo haga. (subrutina)
9 Ahora crecemos tenemos muchos clientes, la cosa crece en
confusión, todos hacemos de todo, entonces no hay buena
sincronización, mucho esfuerzo en comunicación. El
rendimiento cae, no se soluciona con más gente. Dividimos
demasiado las tareas (subrutinas) y se pierde tiempo
comunicando entre la gente envuelta en cosas relacionadas.
9 Tenemos que cambiar la organización de la empresa o morir.

11

Ing. Soft. II - Tema 1.1

Manejo de la complejidad en Desarrollo de Sistemas


Por ejemplo si fundamos una empresa: PROCAOS (2/2)
¿cómo se hace eso de reorganizar la empresa?
9 Identificar cuál es el proceso de negocio
• Vender el producto
• Realizar pagos a empleados y suministradores
• Desarrollar software...
9 Asignar un papel (rol) a cada persona (elemento) con
implicación en el proceso
• Cliente
• Representante de Ventas
• Ingeniero del Software,...
9 Delimitar las responsabilidades dentro de la empresa
• Cómo colaboran los empleados.

12

6
Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Concepto de Delegación de Responsabilidades.
Ejemplo: Reparación de un coche

Marcos Reparar Vehiculo


Alverio, Mecánico
(Valencia) (Valencia)
Problema: no arranca

Método Empleado

Pedir Pieza: motor de arranque

Pedro, Servicio Técnico Volkswagen


(Madrid)
Adolf, Jefe Almacen Volkswagen Pedir Pieza: motor de arranque
(Munich)

Sascha, Responsable de Mantenimiento Volkswagen


Pedir Pieza: motor de arranque (Munich)

13

Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Mensajes y Métodos.
9 En POO, la acción se indica mediante la transmisión de un
mensaje a un agente (objeto) responsable de la acción.
9 El mensaje tiene codificada la petición de una acción y puede
contener información adicional (argumentos) para realizarla.
9 El receptor es el agente al cual se envía el mensaje. Si el
receptor acepta el mensaje, está aceptando la responsabilidad
de llevar a cabo la acción indicada.
9 En respuesta al mensaje, el receptor ejecutará algún método
para satisfacer la petición.

14

7
Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Clases y Objetos

9 Todos los objetos son ejemplares de una clase


9 El método aplicado por un objete en respuesta a un mensaje
queda determinado por la clase del receptor.
9 Todos los objetos de una clase usan el mismo método en
respuesta a mensajes similares
9 Objetos de distinta clase pueden responder al mismo mensaje,
aunque aplicando distintos métodos (polimorfismo).

15

Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Herencia

9 El conocimiento sobre una clase general (superclase o clase


base) es aplicable a una clase particular (subclase o clase
derivada).
9 Una superclase abstracta es una clase que se usa sólo para
crear subclases y no tiene ejemplares directos.
9 Excepciones a normas generales de comportamiento: la
información contenida en una subclase puede anular
información de una superclase.
9 Enlace de métodos: búsqueda ascendente entre clases,
comenzando en la clase receptor, para encontrar un método
que responda a un mensaje, si se alcanza la última superclase
sin encontrarlo se lanza un mensaje de error.

16

8
Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Diseño de soluciones OO
9 Diseñar con objetos implica delegar en otros la responsabilidad
de realizar acciones.
9 Dotar de responsabilidad a un objeto implica concederle
independencia y, por tanto, no interferir en su funcionamiento.
9 La independencia de los objetos incrementa el esfuerzo
dedicado a su diseño. La ventaja será la posibilidad de
reutilización.
9 En POO, ninguna acción se puede realizar si no hay un objeto
que se responsable de la misma.
9 La primera fase del diseño OO debe consistir en establecer los
responsables del proceso a realizar. Posteriormente, se
asignaran las tareas concretas que cada elemento debe llevar
a cabo.

17

Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Tipos o Responsabilidades habituales de las Clases:
9 Gestores o manejadores de datos (clases de datos)
• Mantienen información de datos. Son elementos básicos
del diseño.
9 Generadores y depósitos de datos:
• No retienen datos, generan o consumen datos en base a
peticiones concretas. Ej. Lectura y escritura de disco,
usuario de una aplicación.
9 Observadores de datos:
• No almacenan información, representan la información en
dispositivos de salida.
9 Clases auxiliares:
• Asisten en la ejecución de tareas complejas.

18

9
Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Tipos o Responsabilidades habituales de las Clases:
9 Ejemplo Cajero Automático

Verificador
NIP
Gestor de Cuenta

Lector de Tarjetas

Gestor de
Reintegros
Caja
Selector de Electrónica
Actividad

Gestor de
Ingresos

19

Ing. Soft. II - Tema 1.1

Repaso a las Características de la OO


Lenguajes de Programación Orientada a Objetos
9 Tipos de Lenguajes O.O
• Lenguajes procedimentales ampliados con características
OO (Object Pascal, C-Objective)
• Lengajes OO (basados en ) incluyendo características
procedimentales (C++, Java)
• Lenguajes OO puros (SmallTalk, Eifell).
9 Diferencias en:
• Estructura de definición de clase.
• Instanciación de objetos (automática/dinámica)
• Gestión de la memoria (explícita/recolector de basura)
• Existencia de tipos de datos (eficiencia/flexibilidad)
• Enlace mensaje-método (estático/dinámico).

20

10

You might also like