Universidad Latinoamericana de Ciencia y Tecnología Facultad de Ingeniería Escuela de Ingeniería Informática Trabajo final para optar por el grado de Licenciatura en Ingeniería de Sistemas con énfasis en Desarrollo de Software Tema: “Los lenguajes de informática orientados a objetos y orientados a eventos” Sustentante: Ing. Emilio Cordero Vindas Cédula: 1-0841-0246 Profesor: Lic. Miguel Pérez Montero I Cuatrimestre-2008 “Los lenguajes de informática orientados a objetos y orientados a eventos" Tabla de Contenidos RESUMEN......................................................................................................................................................................... 3 PALABRAS CLAVE ......................................................................................................................................................4 ABSTRACT....................................................................................................................................................................... 5 WORDS KEY..............................................................................................................................................................6 INTRODUCCIÓN.............................................................................................................................................................7 PROGRAMACIÓN ORIENTADA A OBJETOS........................................................................................................ 8 CONCEPTOS FUNDAMENTALES. ......................................................................................................................9 CARACTERÍSTICAS DE LA POO ..................................................................................................................... 10 ALGUNOS LENGUAJES ORIENTADOS A OBJETOS................................................................................... 11 LENGUAJES ORIENTADOS A EVENTOS............................................................................................................. 12 LENGUAJES ORIENTADOS A EVENTOS ...................................................................................................... 13 VENTAJAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS ......................................................... 13 VENTAJAS DE LA PROGRAMACIÓN ORIENTADA A EVENTOS ........................................................ 13 ILUSTRACIÓN Nº 01 ............................................................................................................................................. 14 DIAGRAMA QUE RESUME LAS PRINCIPALES DIFERENCIAS ENTRE AMBOS PARADIGMAS. ........................................................................................................................................................................................ 14 TENDENCIAS ACTUALES EN LAS GRANDES Y MEDIANAS EMPRESAS EN EL USO DE DE ESTAS TECNOLOGÍAS ............................................................................................................................................... 15 REINGENIERÍA DE PROCESOS ......................................................................................................................... 15 MODELIZACIÓN DE SISTEMAS ....................................................................................................................... 17 REINGENIERÍA DE SISTEMAS .......................................................................................................................... 18 POTENCIALES BENEFICIOS DE LOS LENGUAJES ORIENTADOS A OBJETOS ............................. 18 ALGUNAS ESTADÍSTICAS A NIVEL MUNDIAL EN EL USO DE ESTOS LENGUAJES ........................ 20 TABLA DE ESTADÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN .......................................... 21 CONCLUSIÓN ............................................................................................................................................................... 22 REFERENCIAS BIBLIOGRÁFICAS ........................................................................................................................ 23 2 “Los lenguajes de informática orientados a objetos y orientados a eventos" Resumen En la actualidad, las empresas deben preocuparse no sólo de capacitar o contratar personal competente en el área de informática; sino también de adquirir herramientas adecuadas para un desarrollo idóneo de los sistemas informáticos requeridos. Razón por la cual, es necesario que se informen un poco más acerca de las herramientas de desarrollo existentes hoy día en el mercado y a su vez, es indispensable saber cuáles de ellas irían de acuerdo con un rápido y vertiginoso crecimiento en el mercado de las tecnologías y la oportunidad de crecimiento con respecto a la competencia. Las antiguas y tradicionales formas de desarrollo, que también hoy, se encuentran en el mercado, ofrecen poca flexibilidad y son más difíciles de acoplar a los nuevos desafíos que exige el mercado; a diferencia de las nuevas formas de desarrollo que permiten la reutilización de código fuente; lo cual trae como beneficios una mejor y óptima forma de adaptarse a un mercado en constante cambio y crecimiento, el cual le exige cada vez más a las empresas y por ende, a sus competidores en el área de tecnologías de información. Por todo lo anteriormente expuesto, se considera recomendable prestarle mucha atención a los lenguajes orientados a objetos y los orientados a eventos, ya que los primeros nos proporcionan la característica principal de abstraer la realidad por medio de objetos; cualidad que los hace verdaderamente únicos e irreemplazables a la hora de desarrollar sistemas. Palabras Clave 3 “Los lenguajes de informática orientados a objetos y orientados a eventos" Empresas Mercado Herramientas de desarrollo Tecnologías de información Sistemas de información Orientación a objetos Orientación a eventos 4 “Los lenguajes de informática orientados a objetos y orientados a eventos" Abstract Currently companies must not worry only for training or hire staff highly qualified in data technologies area, but for getting adequate tools for a suitable development in required data processing systems. For that reason, it’s necessary to be more informed about current development tools in market, and at the same time, it's indispensable to know which of those tools would go according to a fast and vertiginous growth in technology markets, and growing opportunities, with regard to competition. Old and traditional tools of development, also found in market today, offer less flexibility and harder to couple with new required changes in market which doesn't happen with new development tools, which let source code reuse, which brings benefits such us a better and optimum way to get adapted to a constantly changing and growing market, which demands companies y competitors, more and more each time, in data technologies area. 5 “Los lenguajes de informática orientados a objetos y orientados a eventos" WORDS KEY • • • • • • • Companies Market Development tools Technologies of information Information systems Oriented to objects Oriented to events 6 “Los lenguajes de informática orientados a objetos y orientados a eventos" Introducción Por la actual y urgente necesidad de muchas empresas de maximizar la eficiencia en sus servicios, a la misma vez de un rápido y vertiginoso desarrollo en las Tecnología de Información, es que se requiere que los procesos y desarrollos de sistemas estén bien estructurados y con capacidad de adaptarse al cambio constante que exige el mercado, tanto a nivel mundial como nacional. Esto requiere contar con sistemas que les procuren a los desarrolladores, las capacidades suficientes para desarrollar sistemas informáticos a los que puedan dárseles un rápido y continuo mantenimiento al código. Si bien es cierto, muchas empresas no cuentan con lenguajes de programación fáciles de adaptar al cambio que exige un mercado tan competitivo como el actual, en materia de Tecnología de Información, es por este motivo que la elección de la mejor herramienta de programación es de vital importancia en el diario crecimiento de la empresa, así también, para una mejor competitividad y una mayor capacidad de respuesta a los clientes; quienes hoy día son la base esencial del desarrollo de tecnologías cada vez más eficientes y eficaces. Algo que se debe apreciar a la hora de seleccionar una herramienta de desarrollo, es la capacidad que tenga dicha herramienta para amoldarse a continuos cambios en la empresa o en las empresas a las que se les brinde el desarrollo de sistemas, ya sea por la facilidad que pueda proporcionársele al cliente en sus posibles modificaciones; como la rapidez con que se permita dar respuesta a los usuarios. Muchas veces las empresas optan por adquirir herramientas de bajo costo, pero esto repercute en el costo de desarrollo, como en la confiabilidad por parte de sus clientes. En este momento, empresas como Microsoft y Sun1, entre otras, presentan grandes alternativas viables y de gran calidad para el desarrollo de sistemas, con esto le brindan a las empresas la posibilidad de escoger bien entre varias opciones la herramienta o las herramientas que mejor se ajuste a ellas en cuanto a precio y calidad. 1 Sun Microsystems es una empresa informática de Silicon Valley, fabricante de semiconductores y software. Fue constituida en 1982 por el alemán Andreas von Bechtolsheim y los norteamericanos Vinod Koshla, Bill Joy, Scott McNealy y Marcel Newman. Las siglas SUN se derivan de «Stanford University Network», proyecto que se había creado para interconectar en red las bibliotecas de la Universidad de Stanford 7 “Los lenguajes de informática orientados a objetos y orientados a eventos" Programación orientada a objetos La Programación Orientada a Objetos es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente, son muchos los lenguajes de programación que soportan la orientación a objetos. El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, las operaciones se pueden realizar con él. La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador. La programación orientada a objetos expresa un programa como un conjunto de éstos, que colaboran entre ellos para realizar tareas. Esto permite modularizar los programas, lo que genera funcionalidades reutilizables a lo largo de las rutinas de programación, de manera tal que se realicen “llamadas” a los mismos, sin tener que rescribir el código, con lo que se consigue darle el toque de funcionalidad que requiere todo desarrollo de un sistema complejo de programación. De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación, a su vez, favorece el cambio de estado en los propios objetos. Esta característica logra que se traten como unidades indivisibles, en las que no se separan, ni deben separarse el estado y el comportamiento. Los objetos se comunican entre sí logrando mejorar las funcionalidades del código y del producto final, dicha comunicación debe quedar implícita a la hora de escribir el código, para que con simples rutinas se recree un proceso extenso. Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere métodos para poder tratar los atributos con los que cuenta. El programador debe pensar en ambos conceptos, indistintamente, sin separar ni darle mayor importancia a ninguno de ellos, pues al hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera, se estaría 8 “Los lenguajes de informática orientados a objetos y orientados a eventos" realizando una programación estructurada programación orientado a objetos. camuflada en un lenguaje de Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar en términos de procedimientos o funciones, y en segundo lugar, en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Por el contrario, los programadores que emplean este nuevo paradigma, primero definen objetos para luego enviarles mensajes, solicitándoles que realicen sus métodos por sí mismos. Conceptos Fundamentales. La programación orientada a objetos es una nueva forma de programar que trata de encontrarle una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes (Wikipedia, abril 2008): Objeto: Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Corresponden a los objetos reales del mundo que nos rodea o a objetos internos del sistema (del programa). Es una instancia a una clase. Clase: Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje", es lo que el objeto puede hacer y puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. Evento: Un suceso en el sistema (tal como una interacción del usuario con la máquina o un mensaje enviado por un objeto), la reacción que puede desencadenar un objeto, es decir, la acción que genera. Mensaje: Comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. 9 “Los lenguajes de informática orientados a objetos y orientados a eventos" Propiedad o atributo: Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método. Estado interno: Propiedad invisible de los objetos, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). Características de la POO Abstracción: Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema, sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. Encapsulamiento: Significa reunir todos los elementos que puedan considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural y cada tipo de objeto expone una interfaz a otros objetos, que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación, ante aquellos quienes no tengan derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos. Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. 10 “Los lenguajes de informática orientados a objetos y orientados a eventos" Herencia: Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que re-implementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y éstas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase que de otra, se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java y C#). Lenguajes orientados a objetos Algunos lenguajes orientados a objetos. ActionScript, ActionScript 3, Ada, C++, C#, Delphi,Java, Perl (soporta herencia múltiple), PHP (en su versión 5),PowerBuilder, Python, Smalltalk, Turbo Pascal 7,VB.NET, Visual FoxPro, XBase++, Gambas, entre otros. Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas, algunos otros han ido incorporando características del paradigma de programación orientada a objetos, para ir adaptándose a los cambios que requiere el entorno y las nuevas técnicas de programación, para ir así cambiándose a una nueva generación de desarrollo, lo cual está en un proceso de maduración. 11 “Los lenguajes de informática orientados a objetos y orientados a eventos" Lenguajes orientados a eventos Como ya se ha mencionado, una serie de lenguajes de programación cuentan con características particulares en torno al manejo de estructuras internas y con elementos de programación tradicionales, lo que hace que éstos cuenten con poca modularidad y por ende, con poca capacidad para reutilizar código como se puede hacer con los lenguajes orientados a objetos, por el hecho de crear objetos, encapsular funciones, reutilizar código, realizar llamadas a rutinas y otras características adicionales. Los lenguajes visuales orientados al evento y con manejo de componentes dan al usuario, que no cuenta con mucha experiencia en desarrollo, la posibilidad de construir sus propias aplicaciones, al utilizar interfaces gráficas sobre la base de ocurrencia de eventos. Para soportar este tipo de desarrollo interactúan dos tipos de herramientas, una que permite realizar diseños gráficos y un lenguaje de alto nivel que permite codificar los eventos. Con dichas herramientas es posible desarrollar cualquier tipo de aplicaciones basadas en el entorno. Visual Basic es uno de los lenguajes de programación que más entusiasmo despiertan entre los programadores de computadoras, tanto expertos como novatos. Se tiene la posibilidad de realizar desarrollos rápidos, con grandes aplicabilidades y de forma gráfica, motivo por el cual se tiene como predilecto para los desarrolladores con poca experiencia, en función de la economía de tiempo que implica dicha incursión. “Visual Basic es un lenguaje de programación visual, también llamado lenguaje de 4ta. Generación” (Wikipedia, 2008). Esto quiere decir que un gran número de tareas se realizan sin escribir código, simplemente con operaciones gráficas realizadas con el ratón sobre la pantalla. Son eventos típicos el click sobre un botón, hacer doble click sobre el nombre de una archivo para abrirlo, arrastrar un icono, pulsar una tecla o combinación de teclas, elegir una opción de un menú, escribir en una caja de texto o formulario, o simplemente mover el ratón, también encontramos los soportes a los métodos y propiedades, que no son más que acciones en tiempo de ejecución, algunos no son programados por el usuario, sino que son las propias del lenguaje. La Programación Orientada a Eventos facilita el proceso de programación visual por su practicidad al generar rápidamente algunas aplicaciones basadas en objetos visuales. 12 “Los lenguajes de informática orientados a objetos y orientados a eventos" Lenguajes Orientados a Eventos Visual Basic 6.0, SmartFlow, Visual C, entre otros. Ventajas de la Programación Orientada a Objetos Uniformidad. Pues la representación que los objetos llevan implica el análisis, el diseño y la codificación de los mismos. Comprensión. Tanto los datos que componen los objetos, como los procedimientos que los manipulan, están agrupados en clases, que se corresponden con las estructuras de información que el programa trata. Flexibilidad. Al tener relacionados los procedimientos que manipulan los datos con los datos a tratar, cualquier cambio que se realice sobre ellos quedará reflejado automáticamente en cualquier lugar donde estos datos aparezcan. Estabilidad. Dado que permite un tratamiento diferenciado de aquellos objetos que permanecen constantes en el tiempo sobre aquellos que cambian con frecuencia, faculta aislar las partes del programa que permanecen inalterables en el tiempo. Reusabilidad. La noción de objeto permite que programas que traten las mismas estructuras de información reutilicen las definiciones de objetos empleadas en otros programas e incluso los procedimientos que los manipulan. De esta forma, el desarrollo de un programa puede llegar a ser una simple combinación de objetos ya definidos donde éstos están relacionados de una manera particular. Ventajas de la Programación Orientada a Eventos Múltiples eventos que dependen del sistema operativo y del lenguaje de programación utilizado. Al ejecutarse un programa así programado, se iniciará con el código correspondiente a su ejecución y luego, éste esperará que ocurra un evento. Cuando ocurre, se ejecutará el código correspondiente al evento que se realizó. 13 “Los lenguajes de informática orientados rientados a objetos y orientados a eventos" Ilustración Nº 01 Diagrama que resume las principales diferencias entre ambos paradigmas. Fuente: http://www.monografias.com/trabajos14/progorie/progorie.shtml Extraída del trabajo cuyo título es “Programación “Programación orientada a Objetos” Objetos y en inglés (OOP, Object Oriented Programming) Programming), del autor Tejerina Martín 14 “Los lenguajes de informática orientados a objetos y orientados a eventos" Tendencias actuales en las grandes y medianas empresas en el uso de de estas tecnologías “Muchos de los conceptos subyacentes a la orientación a objetos existen desde hace más de treinta años, sin embargo, la tecnología orientada a objetos es una disciplina relativamente reciente que ha surgido como respuesta a lo que fue llamada la “crisis del software” (Wikipedia, marzo 2008) . La causa se encuentra en que anteriormente, con los medios de programación tradicionales, la gestión de un gran sistema software era más difícil que mantener otros tipos de estructuras complejas como puentes o aviones. En cuanto a la plataforma Java, los servidores de aplicaciones basados en la especificación EJB (“Enterprise JavaBeans”), incorporan un motor de persistencia a través del mecanismo conocido como “entity beans”, sin embargo, éstos no son un mecanismo de persistencia totalmente recomendable, pues no permiten implementar algunas características de la programación orientada a objetos (por ejemplo, herencia) y además, obligan a una forma de programar diferente a los objetos normales de Java (POJOs, “Plain Old Java Objects”, por sus siglas en inglés). La plataforma .NET, por su relativa novedad, está más inmadura que la plataforma Java. Además, al ser una plataforma propietaria es más difícil encontrar proyectos de código abierto para ella. Por esta razón, es decir, que no hay tanta variedad de motores de persistencia en esta plataforma es que recientemente, Microsoft ha anunciado un motor de persistencia llamado Objectspaces para .NET 2004. Mientras tanto, se puede usar ORM.NET, que es un motor de persistencia comercial para .NET. Reingeniería de Procesos La reingeniería de procesos comerciales, BPR (Business Process Re-Engineering) y la reingeniería comercial, BRE (Business ReEngineering) plantean nuevos desafíos y tareas para los profesionales de Tecnologías de la Información (TI). Estos desafíos son reflejo, a su vez, de aquellos a los que se enfrentan las empresas: alcanzar mejoras radicales en las áreas de costos, calidad, servicio y rapidez. La tecnología de objetos no resuelve estas tareas mediante una mejora incremental de la forma en que se crean Sistemas de Información, sino cambiando radicalmente su estructura. 15 “Los lenguajes de informática orientados a objetos y orientados a eventos" Si se descartan las viejas formas de trabajar, las posibilidades de que sean eliminados también los Sistemas de Información subyacentes que sirven de soporte a los procesos comerciales, son mayores. Al aumentar el número de empresas y organizaciones que utilizan las Tecnologías de la Información como un componente de sus productos o servicios, o como un medio de ofrecer sus productos/servicios a sus clientes, la capacidad de realizar una reingeniería de los Sistemas de Información se convertirá en un componente crítico de la reingeniería BPR. La tecnología de objetos es un enfoque dirigido a crear Sistemas de Información con base en componentes que pueden ser extraídos de sistemas existentes y reagrupados para producir nuevos Sistemas. Estos componentes se conocen como objetos. Resulta interesante que este nuevo enfoque respecto a las Tecnologías de la Información va en apoyo de muchas de las ideas que están detrás de la reingeniería BPR. En lugar de examinar los beneficios de un enfoque de tecnología de objetos en relación con el software, en este artículo se analizan los beneficios y las sinergias resultantes de utilizar la tecnología de objetos en el contexto de programas BPR y BRE. Los Sistemas de Información tradicionales se han inclinado sobre todo por unidades funcionales monolíticas, dando lugar a aplicaciones que son ellas mismas monolíticas. En contraste, los sistemas orientados a objetos contienen conjuntos de objetos en cooperación, que pueden ser empaquetados en aplicaciones y ser compartidos por éstas. Estos objetos pueden ser grandes o pequeños, y tan sencillos o complejos como la actividades que automatizan o soportan. En última instancia, los sistemas orientados a objetos desecharán el bagaje funcional de las aplicaciones y se concentrarán en suministrar objetos con los que los usuarios deberán interactuar en algún momento durante un proceso comercial, ya sea para realizar algún cómputo o para extraer/manipular alguna información. El fraccionamiento de la estructura monolítica de las aplicaciones tendrá efectos profundos en la forma en que se definan los Sistemas de Información, en cómo se realice su reingeniería y en cómo sean construidos. A continuación, se analiza con más detalle cada una de estas áreas. En Costa Rica, una institución pública como el Ministerio de Hacienda, a través de su Dirección General de Aduanas, por medio del Departamento de Informática de Aduanas ha puesto en marcha el exitoso producto TIC@, que es la modernización del sistema de control aduanero existente hasta el año 2006, este producto se vale de las tecnologías de última generación para publicar vía Web los datos más relevantes en esta área de competencia, vemos como navieras u otros entes pueden transmitir sus cargas vía XML, mediante una red de valor agregado denominada VAN, la cual procesa la información transmitida y la almacena en las respectivas tablas, interactuando con los datos del sistema, posteriormente generando un mensaje XML de respuesta, el cual llega casi de manera inmediata 16 “Los lenguajes de informática orientados a objetos y orientados a eventos" a su destino, lo cual agiliza definitivamente los procesos, por tanto, se tiene como un ejemplo alentador, el uso de tecnologías orientadas a objeto en una macro aplicación como lo es el sistema de aduanas de nuestro país, lo cual ha provocado una verdadera revolución en cuanto a la manera de realizar los trámites de importación y exportación a nivel nacional. Todo esto implicó una reingeniería en los procesos y por supuesto, en los sistemas que en su mayoría utilizaban el modo carácter para realizar las mismas operaciones y demoraban más tiempo, por lo que merece mención importante el esfuerzo de los visionarios para poder realizar un trabajo de alto nivel y así aliarse de la tecnología para incrementar la productividad y mejorar la recaudación de los impuesto provenientes de estas actividades. Modelización de Sistemas El cambio desde una visión funcional a una visión de proceso plantea nuevos requerimientos en relación con la forma en que se especifican y diseñan Sistemas. No será suficiente con descomponer funcionalmente la lógica de una aplicación, manteniéndola separada de los datos sobre los que actúa. Lo que se necesita es un enfoque, en la creación de modelos, que pueda ser utilizado tanto para la conversión o mapping de procesos comerciales, para modelizar los objetos necesarios para el soporte de esos procesos. La tarea cambiará, desde el soporte de una función comercial, hasta soportar un flujo de trabajo o workflow a lo largo de un proceso comercial. Los sistemas workflow convencionales, que intentan orquestar el trabajo entre aplicaciones monolíticas y tareas manuales, no podrán en última instancia, ofrecer la flexibilidad que requieren las iniciativas BPR. En contraste, los Sistemas creados utilizando objetos están fundados inherentemente en un modelo workflow explícito que anima a los diseñadores de Sistemas a distribuir el trabajo entre múltiples objetos que actúan en cooperación. La tecnología de orientación a objetos ofrece técnicas de modelización que permiten definir objetos y relacionarlos de tal manera que puedan desarrollarse como procesos comerciales o como Sistemas de información. Como existe un lenguaje uniforme para expresar procesos comerciales y procesos de Información es posible establecer una relación entre ambos. Los procesos comerciales pueden actuar interactivamente con objetos software, y el modelo de workflow puede establecerse explícitamente de manera que muestre los cambios entre tareas manuales y automáticas. La utilización de técnicas de modelización para describir empresas y actividades comerciales no es nueva, ya se han utilizado técnicas de modelización de datos tradicionales para crear modelos de empresa, no obstante, a diferencia de los enfoques tradicionales, las técnicas orientadas a objetos no obligan a quienes 17 “Los lenguajes de informática orientados a objetos y orientados a eventos" crean los modelos de procesos comerciales a dividir sus modelos artificialmente en datos y procesos, sino que los objetos contienen todos los aspectos de los datos y de su comportamiento, y pueden utilizarse para representar entidades comerciales estáticas, como departamentos, tareas comerciales como por ejemplo, aprobaciones de créditos, y subprocesos como tramitación de pedidos. Una consecuencia importante de esta aproximación de modelado uniforme es que, con el tiempo, el ajuste entre el funcionamiento comercial y los Sistemas de Información se mejorará. Este aspecto de reconfigurabilidad es el que está posicionando a los proyectos BPR como una ventaja comercial progresiva, en lugar de los puntos de revolución aislados que eran percibidos hasta ahora. Reingeniería de Sistemas Los cambios incrementales en los procesos comerciales quedarán reflejados en cambios en el modelo de objeto comercial y pueden dar lugar a cambios en el modelo de objeto de software. Los cambios radicales en los procesos comerciales pueden dar lugar a la creación de modelos diferentes de objetos comerciales y de software, también es posible reconstituir los modelos reutilizando objetos que hayan sido previamente definidos y re-orquestando la forma en que actúan interactivamente entre sí. Además, pueden introducirse nuevos objetos que representen nuevas prácticas comerciales, y relacionarlos con objetos antiguos. Potenciales Beneficios de los Lenguajes Orientados a Objetos Los beneficios de la programación orientada a objetos son más que los que pueden verse a simple vista. El énfasis en las propiedades esenciales de un objeto, obliga desarrollador a pensar cuidadosamente qué es un objeto y qué es lo que hace con el resultado de que el sistema es normalmente más preciso, general y robusto que si pusiéramos el énfasis en los procedimientos y los datos por separado. “La reutilización de modelos de objetos existentes es de importancia crítica, la estructuración o empaquetamiento y la gestión de toda la variedad y número de objetos” (www.design-nation.net, noviembre, 2004). Considerar cada objeto comercial como una tarea elemental dentro de un proceso comercial, por ejemplo, resultaría inmanejable. Las técnicas de modelización de objetos permiten estructurar los objetos como componentes de otros objetos (acumulaciones) y también permiten que los objetos sean refinamientos u optimizaciones de otros objetos. Estos dos mecanismos de estructuración hacen posible crear y desarrollar modelos de objetos en formas que resulten más útiles y significativas. La acumulación o suma de objetos permite agruparlos para formar objetos mayores, mientras que el refinamiento de los objetos hace posible la portabilidad de modelos de objetos, ya sea entre empresas y organizaciones de un mismo sector, o entre organizaciones de diferentes sectores. Así, un modelo de objeto 18 “Los lenguajes de informática orientados a objetos y orientados a eventos" que representase la atención a clientes en el sector hotelero, si fuera lo suficientemente general podría ser refinado por dos cadenas de hoteles para introducir prácticas y conceptos comerciales específicos, o podría ser utilizado por una organización (también con los refinamientos apropiados) en el sector de los viajes de empresa. Para un informático, el darle mantenimiento a los programas día a día va a ser fácil, ya que se programan muchas clases, en vez de poner código en botones y si se utiliza la encapsulación y el polimorfismo será más fácil hacer llamados a objetos ya hechos y éstos a su vez, pueden modificarse e irse mejorando en el camino. Ilustremos este aspecto con un ejemplo: si se tiene que hacer un sitio Web, el trabajo que presenta cargarse dos campos de texto y un botón, para que el usuario introduzca su nombre de usuario y contraseña y envíe esos datos a un script en php en el servidor, para que éste compruebe si dicho usuario puede visualizar el resto de la Web, esta verificación sería en pocas líneas, por lo cual es más práctico y mejor estructurado. 19 “Los lenguajes de informática orientados a objetos y orientados a eventos" Algunas estadísticas a nivel mundial en el uso de estos lenguajes Índice de TIOBE Software institución u organismo que mide la popularidad de los lenguajes de programación, además, TIOBE Software elabora una lista mensual haciendo cálculos mediante los resultados que arrojan motores de búsqueda populares, como GOOGLE, MSN y YAHOO. “Java sigue estando en primer lugar, se recuperó del descalabro que sufriera a mediados del 2004” (WWW.TIOBE.COM, Abril 2008), por lo que en la actualidad es uno de los lenguajes más difundidos. • • • • • C está actualmente de segundo. PHP está de cuarto, sólido. Basic subió… sigue siendo una gran alternativa. Perl bajó a su nivel más bajo en cinco años. C# sigue duro en el séptimo lugar. Por allá abajo en el puesto 20 y subiendo está VB.NET. De los datos sorprendentes es que Visual FoxPro subió muchísimo en un año y lenguajes antiguos, como Pascal, siguen siendo populares y se usan en sus versiones recientes. Un dato increíble: COBOL lo siguen usando. 20 “Los lenguajes de informática orientados a objetos y orientados a eventos" Tabla de Estadísticas de los Lenguajes de Programación La siguiente tabla hace una comparación entre abril del año 2007 y abril del 2008, según TIOBE2, acerca de la evolución y uso de los lenguajes de programación más utilizados. Tabla 1 Estadísticas TIOBE, Popularidad de Lenguajes de Programación. Posición Posición Abril del 2008 Abril del 2007 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 5 4 3 6 7 8 10 11 9 14 13 12 21 17 22 18 16 31 Lenguaje de Programación Porcentaje Anual de Uso Java C (Visual) Basic PHP C++ Perl Python C# Ruby Delphi JavaScript D PL/SQL SAS Pascal Lisp/Scheme FoxPro/xBase COBOL Ada ColdFusion 20.529% 14.684% 11.699% 10.328% 9.945% 5.934% 4.534% 3.834% 2.855% 2.665% 2.434% 1.169% 0.608% 0.572% 0.513% 0.476% 0.459% 0.409% 0.393% 0.384% Factor Diferencial de Uso +2.17% -0.25% +3.42% +1.69% -0.77% -0.10% +0.72% +0.28% +0.06% +0.33% -0.70% -0.35% -1.28% -1.63% -0.06% -0.20% -0.09% -0.24% -0.29% +0.11% Tomado de la siguiente dirección: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 2 TIOBE es una comunidad que se encarga de medir la popularidad de los lenguajes de programación actuales basándose mensualmente en la disponibilidad mundial de ingenieros, cursos, vendedores de software 21 “Los lenguajes de informática orientados a objetos y orientados a eventos" Conclusión Se propone la toma de conciencia por parte de las empresas que desarrollan sus propios sistemas; así como la investigación minuciosa, por parte de las dedicadas a desarrollar sistemas a terceros, acerca de qué tipo de herramientas de desarrollo existen en el mercado y sobre su posible potencial. Esta recomendación se brinda para que con todos los argumentos del caso puedan definir y adoptar nuevas y mejores herramientas, puesto que muchas de estas empresas se dejan llevar por herramientas convencionales y que a futuro resulten baratas, pero poco flexibles y muy difíciles de adaptar al cambio que exige un mercado en continuo crecimiento, como lo es el mercado de las Tecnologías de Información. Se le presenta al lector una nueva alternativa para elegir una buena herramienta que lo lleve al éxito de sus metas empresariales y que conlleve proyección hacia el futuro; por medio de la comparación de dos tipos principales de programación utilizada por las herramientas de desarrollo de sistemas más comunes; para que pueda determinarse cuál de estos dos tipos de programación será la que mejor le convenga, es que se presentó el muestreo de sus características, de sus debilidades y fortalezas. Mediante algunos gráficos comparativos se le detalló al lector cómo ha evolucionado la programación orientada a objetos, a tal punto que hace ver a las demás tipos de programación como si fueran herramientas obsoletas, situación que nos pone a pensar al respecto y a reflexionar en qué posición vamos a estar en el futuro, a nivel de empresa como y a nivel personal, como desarrolladores que somos, si seguimos dándole crédito a metodologías de desarrollo poco flexibles y de lento desarrollo. 22 “Los lenguajes de informática orientados a objetos y orientados a eventos" Referencias Bibliográficas Wiki pedía la Enciclopedia Libre. Recuperado el 3 de Marzo de 2008; “Programación Orientada a Objetos.” http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos. Wiki pedía la Enciclopedia Libre. Recuperado el 3 de octubre de 2007; http://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos. DICCIONARIO INFORMÁTICO. http://www.alegsa.com.ar/Dic/programacion%20orientada%20a%20eventos.php Pagina “Monografías”; Recuperado el 3 de Febrero de 2008; www.monografias.com/trabajos14/progorie/progorie.shtml Blog “design-nation.blog/es”; Públicado en Noviembre 27, 2004; http://www.design-nation.net/es/archivos/000433.php TIOBE Programming Community for May 2008. “PowerShell on its way to the top 20” http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Articulo “Crisis del Software” http://www.lacaraoscura.com/2006/03/16/tpci-tiobe-programming-communityindex/ http://es.wikipedia.org/wiki/Crisis_del_Software Articulo “Reingenieria de Software; Reingenieria de Sistemas”; Danielle Romero 15/04/2004. http://www.elrinconcito.com/articulos/Reingenieria/Articulo.htm Fundamentos del diseño y la programación orientada a objetos Sergio M Fernández Sastre, editorial McGraw Hill Ingeniería de software, Sommerville I, editorial Addison-Wesley Object-Oriented Programming, Coad P . Editorial Yourdon Press. 23