la crisis del software
DESCRIPTION
TRANSCRIPT
LA CRISIS DEL SOFTWARE Y EL PARADIGMA DE PROGRAMACIÓN ORIENTADA A OBJETOS.CONCEPTOS BÁSICOS
Universidad Autónoma del Estado de MéxicoCentro Universitario UAEM Ecatepec
Ingeniería en Computación
Programación Orientada a Objetos
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
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
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:
4
• Crisis del software
• Criterios de calidad
• Evolución de la programación O. O. Introducció
n
• Clases y Objetos• Métodos• Reutilización• Herencia• Robustez
Conceptos básicos
Crisis del software
CRISIS DEL SOFTWARECRISIS DEL SOFTWARE
6
La complejidad del software producido y demandado se incrementa constantemente.
La complejidad del software producido y demandado se incrementa constantemente.
La industria del software no ha podido satisfacer la demanda.
La industria del software no ha podido satisfacer la demanda.
CRISIS DEL SOFTWARECRISIS DEL SOFTWARE
7
1. Baja calidad del software.
2. Tiempo y presupuesto excedido.
3. Confiabilidad cuestionable.
4. Altos requerimientos de personal para desarrollo y mantenimiento.
1. Baja calidad del software.
2. Tiempo y presupuesto excedido.
3. Confiabilidad cuestionable.
4. Altos requerimientos de personal para desarrollo y mantenimiento.
Síntomas de que existe una crisis en la industriaSíntomas de que existe una crisis en la industria
CRISIS DEL SOFTWARECRISIS DEL SOFTWARE
8
1. Aumento del poder computacional.
2. Reducción del costo del hardware.
3. Rápida obsolescencia de hardware y software.
1. Aumento del poder computacional.
2. Reducción del costo del hardware.
3. Rápida obsolescencia de hardware y software.
¿Qué factores influyen en la crisis del software?¿Qué factores influyen en la crisis del software?
CRISIS DEL SOFTWARECRISIS DEL SOFTWARE
9
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.
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.
¿Qué factores influyen en la crisis del software?¿Qué factores influyen en la crisis del software?
CRISIS DEL SOFTWARECRISIS DEL SOFTWARE
10
7. Personal de desarrollo y mantenimiento diferente.
8. La magnitud del proyecto
9. Aumento en el conocimiento del problema.
10. Cambios en el entorno
7. Personal de desarrollo y mantenimiento diferente.
8. La magnitud del proyecto
9. Aumento en el conocimiento del problema.
10. Cambios en el entorno
¿Qué factores influyen en la crisis del software?¿Qué factores influyen en la crisis del software?
CRISIS DEL SOFTWARECRISIS DEL SOFTWARE
11
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
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
¿Cómo hacerle frente a esta crisis?¿Cómo hacerle frente a esta crisis?
Criterios de CalidadDel software
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
13
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”.
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”.
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
14
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”
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”
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
15
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
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
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
16
Transición del producto
Operación del producto
Revisión del producto
Facilidad de recibir mantenimientoFlexibilidadSusceptibilidad de someterse a pruebas
PortabilidadReusabilidadInteroperabilidad
Corrección Usabilidad Eficiencia Confiabilidad Integridad
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
17
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.
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.
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
18
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.
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.
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
19
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.
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.
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
20
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
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
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
21
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
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
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
22
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
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
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
23
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
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
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
24
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
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
CRITERIOS DE CALIDADCRITERIOS DE CALIDAD
25
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
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
Evolución de la programación: paradigma
y metodología
PP
PMAD
POO
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: el conjunto 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
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
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
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
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
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
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
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
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
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
Conceptos básicos de la Programación Orientada a
Objetos
POO
Clases
Objetos
HerenciaPolimorfismo
Abstracción
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
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
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
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
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
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
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
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
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
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
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
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