P. 1
El Desarrollo de Software OO

El Desarrollo de Software OO

|Views: 26|Likes:
Published by paelams

More info:

Categories:Types, Research
Published by: paelams on Dec 18, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

12/18/2010

pdf

text

original

Diseño y Programación Orientada a Objetos: Un enfoque científico

Dr. Ingeniero en Informática Luis Joyanes Aguilar Ingeniero en Informática Salvador Sánchez Alonso Facultad de Informática Departamento de Lenguajes y Sistemas Informáticos e Ingeniería de Software Universidad Pontificia de Salamanca en Madrid

Diseño y Programación Orientada a Objetos: Un enfoque científico
El desarrollo de Software OO

Facultad de Informática Departamento de Lenguajes y Sistemas Informáticos e Ingeniería de Software Universidad Pontificia de Salamanca en Madrid

El desarrollo de software OO

Introducción: la complejidad del software Factores de calidad del software Fundamentos de la orientación a objetos La orientación a objetos Propiedades del modelo de objetos Lenguajes de programación OO Beneficios de la orientación a objetos

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
3

Introducción: la complejidad del software (I)
La escritura de un gran programa requiere la escritura de grandes cantidades de nuevo software y la reutilización del software existente. Tamaño del software:
Hace dos/tres décadas: programas en lenguaje emsamblador en torno a centenares de líneas  Hoy: lenguajes de alto nivel con centenares de millares, o incluso millones de líneas de código. 

Ambitos de la Complejidad:
Complejidad del problema: la implementación se descompone en centenares y a veces miles de módulos independientes que implica tener un equipo de desarrolladores.  Complejidad humana : cuantos más desarrolladores, las comunicaciones entre ellos son más complejas, la coordinación es difícil: equipos dispersos geográficamente (proyectos grandes) 

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
4

Introducción: la complejidad del software (II)
Estancamiento de las soluciones tradicionales : 

Las metodologías y técnicas estructurales de los 70 y 80, no han eliminado el problema de la crisis del software: han surgido nuevas herramientas y métodos, pero la complejidad del problema ha crecido considerablemente.

Sistemas orientados a objetos:
Proporcionan el rendimiento, la flexibilidad y funcionalidad requerida para implementaciones prácticas.  La programación se puede hacer con extensiones de lenguajes comerciales: Object-Pascal o C++, y lenguajes OO puros como Smalltalk y Eiffel.  Aumentan la variedad de aplicaciones que se pueden programar ya que se liberan las restricciones de los tipos de datos predefinidos.  Acomodan estructuras de datos heterogéneos y complejos: se pueden añadir nuevos tipos de datos sin modificar código existente. 

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
5

Introducción: la complejidad del software (III)
Propuestas de reutilización (reusability) de componentes software: 

Bloques iniciales para la construcción del programa, similares a la construcción de cualquier objeto complejo (tal como un automóvil) que se construye ensamblando sus partes.

POO no sólo son nuevos lenguajes de programación, sino un nuevo modo de pensar y diseñar aplicaciones.

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
6

Factores de Calidad del software (I)
Eficiencia 

Capacidad de un software para hacer un buen uso de los recursos que manipula.

Transportabilidad (portabilidad) 

Facilidad con la que un software puede ser transportado sobre diferentes sistemas físicos o lógicos.

Verificabilidad (facilidad de verificación) 

Capacidad para soportar los procedimientos de validación y de aceptar juegos de pruebas o ensayo de programas.

Integridad 

Capacidad de un software a proteger sus propios componentes contra los procesos que no tengan derecho de acceso a ellos. Septiembre 1999
7

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Factores de Calidad del software (II)
Facilidad de uso 

Un software es fácil de utilizar si se puede comunicar con él de manera cómoda.

Corrección 

Capacidad de los productos software de realizar exactamente las tareas definidas por su especificación.

Robustez 

Capacidad para funcionar incluso en situaciones anormales.

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
8

Factores de Calidad del software (III)
Extensibilidad
Facilidad que tienen los productos de adaptarse a cambios en su especificación.  Dos principios fundamentales: diseño simple y descentralización. 

Reutilización 

Capacidad de los productos de ser reutilizados, en su totalidad o en parte, en nuevas aplicaciones.

Compatibilidad 

Facilidad de los productos para ser combinados con otros.

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
9

Fundamentos de la Orientación a Objetos (I)
Causas que impulsan el desarrollo de la POO: 
   

la POO es especialmente adecuada para la realización de prototipos y simulación de programas los mecanismos de encapsulamiento de POO soportan un alto grado de reutilización de código, que se incrementa por sus mecanismos de herencia la OO soluciona muchas de las limitaciones de los modelos de BBDD tradicionales, incluido el modelo relacional gran aumento de Lenguajes de Programación Orientados a Objetos (LPOO) implementación de interfaces de usuario gráficos (por iconos) y visuales.

El paradigma OO se revela como el más adecuado para la elaboración del diseño y desarrollo de aplicaciones. Se caracteriza por la utilización del diseño modular OO y la reutilización del software.

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
10

Fundamentos de la Orientación a Objetos (II)
Especial énfasis en la abstracción (capacidad para encapsular y aislar la información del diseño y la ejecución). Su base fundamental son los TAD,s (tipos abstractos de datos): definición de nuevos tipos -clases- de objetos sin necesidad de especificar los detalles de implementación Un TAD se corresponde con un conjunto de datos y un número de operaciones primitivas que se pueden realizar sobre esos valores. 

Ejemplo: una pila.

Los objetos pasan a ser los elementos fundamentales en este nuevo marco, en detrimento de los subprogramas que lo han sido en los marcos tradicionales

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
11

La Orientación a Objetos
Conjunto de disciplinas (ingeniería) que desarrollan y modelan software que facilita la construcción de sistemas complejos a partir de componentes. Trata de cumplir las necesidades de los usuarios finales, y las propias de los desarrolladores de productos software mediante la modelización del mundo real. El soporte fundamental es el modelo de objetos. Los cuatro elementos (propiedades) más importantes de este modelo (Booch 94) son: abstracción, encapsulamiento, modularidad y jerarquía. Además de éstas, suele incluirse el polimorfismo. Según Booch, si alguno de estos elementos no existe, se dice que el modelo no es orientado a objetos.

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
12

Propiedades del modelo de objetos (I)
Abstracción: 

Una abstracción se centra en la vista externa de un objeto  Separar el comportamiento esencial de un objeto de su implementación  Una clase (elemento clave en la POO) es una descripción abstracta de un grupo de objetos.

Encapsulamiento:
Propiedad que permite asegurar que el contenido de la información de un objeto está oculta al mundo exterior: el objeto A no conoce lo que hace el objeto B y viceversa.  También se conoce como ocultación de la información.  Es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales. 

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
13

Propiedades del modelo de objetos (II)
Modularidad: 

propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.  Consiste en dividir un programa en módulos que se pueden compilar por separado, pero que tienen conexiones con otros módulos.

Jerarquía:
Propiedad que permite una ordenación de las abstracciones.  Las dos jerarquías más importantes de un sistema generalización/especialización y agregación. 

complejo

son:

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
14

Propiedades del modelo de objetos (III)
Polimorfismo :
Propiedad que indica la posibilidad de que una entidad tome muchas formas.  Permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento.  Requiere ligadura dinámica o postergada, que sólo se puede producir en lenguajes de programación orientados a objetos.  Ejemplo: la operación comer de la clase mamífero. 

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
15

Lenguajes de programación OO
El primer lenguaje de programación que introdujo conceptos de orientación a objetos fue Simula-67. Smalltalk: Primer lenguaje OO puro (1976). Entorno visual + biblioteca de clases predefinidas. En los ochenta, destacan extensiones de lenguajes tradicionales tales como C++ y Objective-C (extensiones de C), Modula-2 y Object Pascal (extensión de Pascal) e incluso Object Cobol. Eiffel, creado por Bertrand Meyer soporta todas las propiedades fundamentales de objetos. Rápido crecimiento. Java: Lenguaje mixto con sintaxis pseudo-C++ muy enfocado a aplicaciones en Internet (concepto de máquina virtual).

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
16

Lenguajes de programación OO (II)
Lenguajes puros= objetos + mensajes + clases Lenguajes híbridos= lenguaje base tradicional + objetos + mensajes + clases Los lenguajes puros son más difíciles de aprender en un principio y son menos potentes (no está demostrado). Los lenguajes puros utilizan todas las ventajas de la tecnología. Mayor facilidad de reutilización. Más popular de los lenguajes híbridos: C++. Más popular de los lenguajes puros: Smalltalk.

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
17

Beneficios de la tecnología de objetos
Razón para introducir métodos de TO en los procesos de desarrollo: aumento de la fiabilidad y productividad del desarrollador. Mejora de la Fiabilidad:
Cada objeto es simplemente "una caja negra" con respecto a los objetos externos con los que debe comunicarse: Las estructuras de datos internos y métodos se pueden refinar sin afectar a otras partes de un sistema.  Los sistemas tradicionales presentan con frecuencia efectos laterales no deseados.  Las tecnologías de objetos ayudan a los desarrolladores a tratar la complejidad en el desarrollo del sistema. 

Mejora de la Productividad:
Las clases de objetos se pueden hacer reutilizables de modo que cada subclase o instancia de un objeto puede utilizar el mismo código de programa para la clase.  Desarrollo más rápido y flexible.  Mantenimiento más sencillo y rápido. 

©Luis Joyanes, Salvador Sánchez Universidad Pontificia de Salamanca en Madrid
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software

Septiembre 1999
18

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->