La crisis del software

49
LA CRISIS DEL SOFTWARE Y EL PARADIGMA DE PROGRAMACIÓN ORIENTADA A OBJETOS. CONCEPTOS BÁSICOS Universidad Autónoma del Estado de México Centro Universitario UAEM Ecatepec Ingeniería en Computación Programación Orientada a Objetos

description

 

Transcript of La crisis del software

Page 1: La crisis del software

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

Page 2: La crisis del software

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

Page 3: La crisis del software

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

Page 4: La crisis del software

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

Page 5: La crisis del software

Crisis del software

Page 6: La 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.

Page 7: La crisis del software

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

Page 8: La crisis del software

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?

Page 9: 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?

Page 10: 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?

Page 11: 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?

Page 12: La crisis del software

Criterios de CalidadDel software

Page 13: La crisis del 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”.

Page 14: La crisis del software

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”

Page 15: La crisis del software

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

Page 16: La crisis del software

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

Page 17: La crisis del software

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.

Page 18: La crisis del software

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.

Page 19: La crisis del software

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.

Page 20: La crisis del software

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

Page 21: La crisis del software

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

Page 22: La crisis del software

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

Page 23: La crisis del software

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

Page 24: La crisis del software

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

Page 25: La crisis del software

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

Page 26: La crisis del software

Evolución de la programación: paradigma

y metodología

PP

PMAD

POO

Page 27: La crisis del software

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

Page 28: La crisis del software

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

Page 29: La crisis del software

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

Page 30: La crisis del software

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

Page 31: La crisis del software

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

Page 32: La crisis del software

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

Page 33: La crisis del software

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

Page 34: La crisis del software

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

Page 35: La crisis del software

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

Page 36: La crisis del software

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

Page 37: La crisis del software

Conceptos básicos de la Programación Orientada a

Objetos

POO

Clases

Objetos

HerenciaPolimorfismo

Abstracción

Page 38: La crisis del software

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

Page 39: La crisis del software

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

Page 40: La crisis del software

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

Page 41: La crisis del software

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

Page 42: La crisis del software

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

Page 43: La crisis del software

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

Page 44: La crisis del software

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

Page 45: La crisis del software

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

Page 46: La crisis del software

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

Page 47: La crisis del software

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

Page 48: La crisis del software

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

Page 49: La crisis del software

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