La crisis del software

Post on 16-Nov-2014

2.019 views 3 download

description

 

Transcript of 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

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