Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
La crisis del software
1. Universidad Autónoma del Estado de
México
Centro Universitario UAEM Ecatepec
Ingeniería en Computación
LA CRISIS DEL SOFTWARE Y EL
PARADIGMA DE
PROGRAMACIÓN ORIENTADA A
OBJETOS.
CONCEPTOS BÁSICOS
Programación Orientada a Objetos
2. UNIDAD DE COMPETENCIA I.
ORÍGENES Y CONCEPTOS BÁSICOS DE LA PROGRAMACIÓN ORIENTADA A
OBJETOS
Objetivo:
Reconocer los aspectos históricos y
tecnológicos que dan importancia al
desarrollo de software orientado a objetos.
2
3. CONTENIDO
Introducción
Crisis del software
Criterios de calidad del software
Conceptos básicos de la P.O.O.
Reutilización
Polimorfismo
Genericidad
Clases y Objetos
Robustez
3
4. GUIÓN EXPLICATIVO
El contenido del presente material se divide en dos bloques que
pueden abordarse arbitrariamente, sin embargo para entender el
contexto general del paradigma orientado a objetos, se recomienda su
revisión de acuerdo al siguiente diagrama:
Conceptos
• Crisis del software básicos
• Criterios de calidad
• Clases y Objetos
• Evolución de la
programación O. • Métodos
O. • Reutilización
• Herencia
• Robustez
Introducción
4
6. CRISIS DEL SOFTWARE
La industria del software
no ha podido satisfacer la
demanda.
La complejidad del software
producido y demandado se
incrementa
constantemente.
6
7. CRISIS DEL SOFTWARE
Síntomas de que existe una crisis en la industria
1. Baja calidad del software.
2. Tiempo y presupuesto
excedido.
3. Confiabilidad
cuestionable.
4. Altos requerimientos de
personal para desarrollo y
mantenimiento.
7
8. CRISIS DEL SOFTWARE
¿Qué factores influyen en la crisis del software?
1. Aumento del poder
computacional.
2. Reducción del costo del
hardware.
3. Rápida obsolescencia de
hardware y software.
8
9. CRISIS DEL SOFTWARE
¿Qué factores influyen en la crisis del software?
4. Aceptación de la
computarización en las
empresas.
5. Incremento en el número
de usuarios de los
sistemas de software.
6. Tipo de usuario no
homogéneo aun en
sistemas hechos a la
medida.
9
10. CRISIS DEL SOFTWARE
¿Qué factores influyen en la crisis del software?
7. Personal de desarrollo y
mantenimiento diferente.
8. La magnitud del proyecto
9. Aumento en el conocimiento
del problema.
10. Cambios en el entorno
10
11. CRISIS DEL SOFTWARE
¿Cómo hacerle frente a esta crisis?
Usando un nuevo enfoque de desarrollo de
software, que permita:
a) Mantenerse al corriente frente a la creciente
demanda
b) Cumplir con los tiempos de entrega y costos
establecidos
c) Tener un mejor control del avance del proyecto de
software
d) Establecer un lenguaje común entre los
integrantes del esquipo de desarrollo de software
e) Generar entre desarrolladores y equipo de
soporte un plan de mantenimiento para los
productos de software implementados 11
13. CRITERIOS DE CALIDAD
La calidad puede describirse desde
distintos puntos de vista:
•Trascendental: “la calidad es algo que se
reconoce de inmediato, pero no es posible definir
explícitamente”.
•Del usuario: “La calidad se concibe en términos
de las metas específicas del usuario final. Si un
producto las satisface, tiene calidad”
•Del fabricante: “La define en términos de las
especificaciones originales del producto. Si éste las
cumple, tiene calidad”
•Del producto: “La calidad tiene que ver con las
características inherentes de un producto”
•Del valor: “La calidad esta relacionada con lo que
el cliente está dispuesto a pagar por un producto”.
13
14. CRITERIOS DE CALIDAD
Calidad del software
“Proceso eficaz del software que se aplica de manera
que crea un producto útil que proporciona valor
medible a quienes lo producen y a quienes lo utilizan”
14
15. CRITERIOS DE CALIDAD
Factores de la calidad de McCall
Se centran en tres aspectos importantes del
producto de software:
• Sus características operativas
• Su capacidad de ser modificado
• Su adaptabilidad a nuevos ambientes
15
16. CRITERIOS DE CALIDAD
Facilidad de recibir mantenimiento Portabilidad
Flexibilidad Reusabilidad
Susceptibilidad de someterse a pruebas Interoperabilidad
Revisión del producto Transición del producto
Operación del producto
Corrección Usabilidad Eficiencia
Confiabilidad Integridad
16
17. CRITERIOS DE CALIDAD
Factores de la calidad de McCall
• Corrección. Grado en el que el programa satisface sus
especificaciones y en el que cumple con los objetivos de la
misión del cliente.
• Confiabilidad. Grado en el que se espera que un programa
cumpla con su misión y con la precisión requerida.
• Eficiencia. Cantidad de recursos de cómputo y de código
requeridos por un programa para llevar a cabo su función.
• Integridad. Grado en el que es posible controlar el acceso de
personas no autorizadas al software o a los datos.
17
18. CRITERIOS DE CALIDAD
Factores de la calidad de McCall
• Usabilidad. Esfuerzo que se requiere para
aprender, operar, preparar las entradas e interpretar las salidas
de un programa.
• Facilidad de recibir mantenimiento. Esfuerzo requerido
para detectar y corregir un error en un programa.
• Flexibilidad. Esfuerzo necesario para modificar un programa
que ya opera.
• Susceptibilidad de someterse a pruebas. Esfuerzo que
se requiere para probar un programa a fin de garantizar que
realiza la función que se pretende.
18
19. CRITERIOS DE CALIDAD
Factores de la calidad de McCall
• Portabilidad. Esfuerzo que se necesita para transferir un
programa de un ambiente de sistema de hardware o software a
otro.
• Reusabilidad. Grado con el que un programa (o partes de
uno) pueden volverse a utilizar en otras aplicaciones.
• Interoperabilidad. Esfuerzo requerido para acoplar un
sistema con otro.
19
20. CRITERIOS DE CALIDAD
Factores de la calidad ISO 9126
Estándar desarrollado con la intensión de identificar
los atributos clave del software de cómputo.
• Funcionalidad. Gado en el que el software
satisface las necesidades planteadas según las
establecen los atributos siguientes:
• Adaptabilidad
• Exactitud
• Interoperabilidad
• Cumplimiento
• Seguridad
20
21. CRITERIOS DE CALIDAD
Factores de la calidad ISO 9126
• Confiabilidad. Cantidad de tiempo que el software
se encuentra disponible para su uso, según lo indican
los siguientes atributos:
• Madurez
• Tolerancia a fallas
• Recuperación
21
22. CRITERIOS DE CALIDAD
Factores de la calidad ISO 9126
• Usabilidad. Grado en el que el software es fácil de
usar, según lo indican los siguientes subatributos:
• Entendible
• Aprendible
• Operable
22
23. CRITERIOS DE CALIDAD
Factores de la calidad ISO 9126
• Eficiencia. Grado en el que el software emplea
óptimamente los recursos del sistema, según lo
indican los subatributos siguientes:
• Comportamiento del tiempo
• Comportamiento de los recursos
23
24. CRITERIOS DE CALIDAD
Factores de la calidad ISO 9126
• Facilidad de recibir mantenimiento. Facilidad con
la que pretenden efectuarse reparaciones al
software, según lo indican los siguientes atributos:
• Analizable
• Cambiable
• Estable
• Susceptible a someterse a pruebas
24
25. CRITERIOS DE CALIDAD
Factores de la calidad ISO 9126
• Portabilidad. Facilidad con la que el software
puede llevarse de un ambiente a otro según lo indican
los siguientes atributos:
• Adaptable
• Instalable
• Conformidad
• Sustituible
25
26. POO
AD
PM
PP
Evolución de la
programación: paradigma
y metodología
27. PARADIGMA
Es un determinado marco desde el cuál se
puede mirar, comprender, interpretar e
interactuar con eventos, aspectos u objetos
del mundo.
Puede describirse como:
elconjunto de conocimientos científicos que
imperan en una época determinada
Las formas de pensar y de sentir de la gente en
un determinado lugar y momento histórico.
27
28. PARADIGMA
En el contexto académico y de
investigación, es:
Una forma aceptada de resolver un problema en la
ciencia, que más tarde es utilizada como modelo
para la investigación y la formación de una teoría
¿En el contexto de programación?
los paradigmas de programación nos indican las
diversas formas que, a lo largo de la evolución de los
lenguajes, han sido aceptadas como estilos para
programar y para resolver los problemas por medio
de una computadora.
28
29. PARADIGMAS DE PROGRAMACIÓN
Los paradigmas de programación de uso
más extendido son:
Programación por procedimientos
Programación modular
Abstracción de datos
Programación Orientada a Objetos
29
30. PROGRAMACIÓN POR PROCEDIMIENTOS
Paradigma original de programación y de
uso más común
El programador se concentra en el
procesamiento, en el algoritmo requerido
para llevar a cabo el cómputo deseado
Lenguajes: Fortran, Pascal y C
La programación estructurada se considera como el
componente principal de la programación por
procedimientos.
30
31. PROGRAMACIÓN MODULAR
Con los años se dio mayor énfasis al diseño
de procedimientos que a la organización de
la información
Lo anterior originó que el tamaño de los
programas aumentara y en consecuencia la
dificultad para encontrar errores de ejecución
y darles mantenimiento
La programación modular surge como
remedio a esta situación
31
32. PROGRAMACIÓN MODULAR
¿Qué es un Módulo?
Conjunto de procedimientos afines junto con los
datos que manipulan
La programación modular consiste en:
Establecer los módulos que se requieren para la
resolución de un problema
Dividir el programa de modo que los
procedimientos y los datos queden ocultos en
los módulos
32
33. PARADIGMA DE ABSTRACCIÓN DE DATOS
Los lenguajes como ADA y C++ permiten
que un usuario defina tipos que se
comporten casi de la misma manera que los
tipos definidos por el lenguaje.
Estos tipos de datos definidos por el usuario
reciben el nombre de tipos abstractos
33
34. PARADIGMA DE ABSTRACCIÓN DE DATOS
El PAD consiste en:
Establecer las características de los tipos de
datos abstractos que se desean definir
Proporcionar un conjunto completo de
operaciones válidas y útiles para cada tipo de
dato
Cuando no hay necesidad de más de un objeto
de un tipo dado, no es necesario este estilo de
programación y basta con el estilo de
ocultamiento de datos por medio de módulos.
34
35. PROGRAMACIÓN ORIENTADA A OBJETOS
El paradigma de AD tiene el inconveniente
de que no hay una distinción entre las
propiedades generales y las particulares de
un conjunto de objetos
Expresar esta distinción y aprovecharla es lo
que define a la POO a través del concepto
de herencia
35
36. PROGRAMACIÓN ORIENTADA A OBJETOS
El paradigma de POO consiste en:
Definir que clases se desean
Proporcionar un conjunto completo de
operaciones para cada clase
Indicar explícitamente lo que los objetos de
la clase tienen en común empleando el
concepto de herencia
36
37. Clases
Abstracción Objetos
POO
Polimorfismo Herencia
Conceptos básicos de la
Programación Orientada a
Objetos
38. CONCEPTOS BÁSICOS DE LA POO
Definición de POO.
Es un importante conjunto de técnicas que pueden
utilizarse para hacer el desarrollo de programas
más eficiente, a la par que mejora la fiabilidad de
los programas
38
39. CONCEPTOS BÁSICOS DE LA POO
Principios de la Orientación a Objetos
Los programas de computadoras constan de 2
elementos: Código y Datos.
Un programa se puede organizar conceptualmente en
base a su código o a sus datos.
Existen 2 paradigmas que controlan el modo como se
escribe un programa
Paradigma procedimental (escrito alrededor de lo que está
sucediendo)
Paradigma Orientado a Objetos (escrito alrededor de quien
está siendo afectado)
39
40. CONCEPTOS BÁSICOS DE LA POO
Modelo Orientado a Procesos
Código que actúa sobre datos
Modelo Orientado a Objetos
Define objetos de datos, sus atributos y el modo en que se
pueden examinar o cambiar
Los objetos, datos y procedimientos se pueden comunicar con
otros objetos y datos
Un programa consta de una serie de objetos que se
comunican entre sí enviándose mensajes.
40
41. CONCEPTOS BÁSICOS DE LA POO
Clases
En el mundo real existen muchos objetos de la
misma clase.
P. ej. La clase Automóvil
Su automóvil es uno de los muchos automóviles del
mundo.
Un automóvil es una instancia de la clase de objetos
conocida como Automóvil
Los automóviles tiene un estado común
(velocidad, puertas, modelo y cuatro ruedas) y un
comportamiento (acelerar, frenar, dar vuelta).
Sin embargo, cada automóvil es independiente y
puede ser diferente de otros automóviles. 41
42. CONCEPTOS BÁSICOS DE LA POO
Definición de Clase
Una clase es un prototipo o modelo que
define las variables y métodos comunes a
todos los objetos de un cierto tipo.
42
43. CONCEPTOS BÁSICOS DE LA POO
Explicación del concepto Clase (1)
Una clase es como una plantilla o modelo que se
utiliza para crear objetos concretos
Una vez que se declara una clase, se debe
instanciar antes de que se pueda utilizar
Una clase consta de variables denominadas
campos junto con métodos que operan sobre esos
campos.
Una clase encapsula los componentes pasivos
(campos) y componentes activos (métodos) en una
única entidad.
43
44. CONCEPTOS BÁSICOS DE LA POO
Explicación del concepto Clase (2)
Una clase define las características de un grupo de
objetos que comparte ciertas características:
Almacenan los mismos tipos de datos
Pueden ejecutar las mismas operaciones
Sin embargo, cada objeto puede almacenar
valores reales diferentes y representa una
ocurrencia particular de esa clase de objetos.
44
45. CONCEPTOS BÁSICOS DE LA POO
Creación y uso de una Clase
Cuando se crea una instancia de una clase, se crea un
objeto de ese tipo y el sistema asigna memoria para
las variables instancia declaradas por la clase.
A continuación se puede invocar a los métodos del
objeto para realizar alguna tarea.
Dada una clase, un objeto - denominado también
instancia de la clase - es una variable que tiene los
campos de esa clase y puede llamar a los métodos de
esa clase.
45
46. CONCEPTOS BÁSICOS DE LA POO
Abstracción. Se enfoca en las características esenciales
de un objeto relativo a la perspectiva del observador.
Modularidad. Agrupa abstracciones en unidades
discretas. Es la propiedad de un sistema que se ha
descompuesto en un conjunto de módulos coherentes y
poco acoplados.
Herencia: Es clasificar u ordenar abstracciones. Las
abstracciones forman una jerarquía. Los objetos pueden
heredar propiedades de otros objetos. La herencia puede
ser simple o múltiple. (C++: Privado, Protegido, Público).
46
47. CONCEPTOS BÁSICOS DE LA POO
Encapsulación: Esconde los detalles de la
implementación de un objeto
Reutilización: Se refiere a la creación de objetos (bien
hechos) que pueden utilizarse en otros dominios
Ejecución: Se lleva a cabo por medio de propagación
de mensajes
Mensajes: El código privado que tiene el objeto puede
ser accesado solo por medio de mensajes. El mensaje
dice a que objeto se dirige, que procedimiento ejecutar y
cuales son los argumentos que deberá contener.
47
48. CONCEPTOS BÁSICOS DE LA POO
Métodos: Es un procedimiento privado de un
objeto que dice que hacer con un mensaje y como
hacerlo. Como cada objeto tiene sus propios
métodos, los objetos pueden responder diferente al
mismo mensaje.
Respuestas: Una vez recibido un mensaje, el
objeto manda su respuesta a otros objetos o al
sistema.
Polimorfismo: se refiere a la capacidad para que
varias clases derivadas de una antecesora utilicen
un mismo método de forma diferente. 48
49. BIBLIOGRAFÍA
Deytel Harvey M., Paul J, Deytel, Como
programar en Java , 5ª. Edición, Prentice Hall
México.
Goodrich Michel T., Tamassia
Roberto, Estructuras de datos y algoritmos en
Java 2ª. Edición, CECSA, México.
Ceballos Fco. Javier, Java 2 Curso de
Programación, AlfaOmega Ra-Ma, México.
Joyanes Aguilar Luis, Programación Orientada a
Objetos, segunda edición, McGraw Hill.
49