Desarrollo de software orientado a objetos
Revisión histórica de 1
Desafíos para requisitos de software cada vez más complejos. La industria del software desarrolló modelos de desarrollo de software orientados a objetos. En la actualidad, la tecnología orientada a objetos ha atraído una amplia atención como la mejor contramedida contra la "crisis del software". Lo que inicialmente fue considerado por la mayoría como un enfoque poco práctico y una curiosidad pasajera, ahora se adopta casi con entusiasmo. Muchos lenguajes de programación han introducido nuevas versiones que admiten la orientación a objetos. Se han propuesto una gran cantidad de métodos de desarrollo orientado a objetos. Las conferencias, seminarios académicos y cursos sobre orientación a objetos son muy populares. Muchas revistas académicas profesionales tienen páginas dedicadas a este tema. Algunos contratos de desarrollo de software incluso estipulan que se deben utilizar tecnologías y lenguajes OO. El desarrollo de software orientado a objetos fue tan atractivo en la década de 1990 como lo fue el desarrollo de software estructurado en la década de 1970, y el impulso del desarrollo de OO todavía se está acelerando.
Conceptos como “objetos” y “propiedades de los objetos” se remontan a principios de los años cincuenta. Aparecieron por primera vez en los primeros trabajos sobre inteligencia artificial. Sin embargo, el desarrollo real de la OO comenzó en 1966 (cuando estalló la Revolución Cultural en China). En ese momento, Christian Nygaard y Olly John Dahl desarrollaron el lenguaje Simula con un mecanismo de abstracción superior. Simula proporciona un mayor nivel de abstracción y encapsulación que las subrutinas; para simular problemas reales, se introducen los conceptos de abstracción de datos y clases. Casi al mismo tiempo, Alan Kay estaba trabajando duro en una computadora personal en la Universidad de Utah, donde quería implementar gráficos y simulaciones. Aunque el intento de Kai no tuvo éxito debido a limitaciones de software y hardware, su idea no se perdió. A principios de la década de 1970, se unió al Centro de Investigación de Palo Alto (PARC) y volvió a poner en práctica estas ideas.
En PARC, su grupo de investigación cree firmemente que la tecnología informática es la clave para mejorar los canales de comunicación entre personas y entre personas y máquinas. Apoyados en esta creencia e incorporando los conceptos de las clases Simula, desarrollaron el lenguaje Smalltalk. PARC lanzó la primera versión de Smalltalk en 1972. Por esta época, se definió formalmente el término "orientado a objetos". Smalltalk se considera el primer lenguaje verdaderamente orientado a objetos. El objetivo de Smalltalk es hacer que el diseño de software sea lo más automatizado posible. En Smalltalk, todo es un objeto: una instancia de una clase. En el mundo original de Smalltalk, los objetos estaban estrechamente vinculados a los sustantivos. Smalltalk también admite un entorno de desarrollo altamente interactivo y métodos de creación de prototipos. Este trabajo original no se publicó inicialmente, pero se consideró un interés académico altamente experimental.
Smalltalk-80 es un resumen de una serie de versiones de chat PARC, publicadas en 1981. Agosto de 1981 < & ltBYTE & gt& gtLa revista publicó los importantes resultados del equipo de desarrollo de Smalltalk. En la portada de esta revista, un globo aerostático se eleva desde una isla aislada, lo que marca el comienzo del pensamiento orientado a objetos de PARC. Es hora de lanzarlo a la comunidad de desarrollo de software. Al principio, el impacto fue sólo gradual, pero pronto alcanzó un nivel de éxito. Los globos aerostáticos despegaron y su impacto fue de gran alcance. Las primeras investigaciones de Smalltalk sobre entornos de desarrollo llevaron a una serie de desarrollos posteriores: ventanas, iconos, ratones y entornos de ventanas desplegables. Smalltalk también influyó en los lenguajes orientados a objetos de principios y mediados de la década de 1980, como Objective-C (1986), C++ (1986), Self (1987), EIF FL (1987) y Flavours (65437). Los objetos ya no se asocian simplemente con sustantivos, sino que también incluyen eventos y procesos. 1980 Grady Booch propuso por primera vez el concepto de diseño orientado a objetos (OOD). Luego siguieron otros y comenzaron a publicarse técnicas de análisis orientado a objetos. En 1985 apareció la primera base de datos comercial orientada a objetos. Desde 1990, el análisis, las pruebas, la medición y la investigación de gestión orientados a objetos han logrado grandes avances. Actualmente, los temas de vanguardia en tecnología de objetos incluyen patrones de diseño, sistemas de objetos distribuidos y aplicaciones de objetos basadas en redes.
2 Motivación
¿Por qué el movimiento orientado a objetos se desarrolló hasta un nivel tan violento? Parte de esto surge de la esperanza de larga data de la gente de que, al igual que otras tecnologías de desarrollo de software anteriores, pueda satisfacer las necesidades urgentes del desarrollo de software para una mayor, más rápida y más sólida productividad, confiabilidad, mantenibilidad y capacidad de administración. Aparte de eso, existen muchas razones para su popularidad.
El desarrollo orientado a objetos enfatiza el mapeo directo de los conceptos del dominio del problema a los programas e interfaces de software; la investigación psicológica también muestra que ver el mundo objetivo como muchos objetos se acerca más a una forma natural de pensar para los humanos. Los objetos son más estables que las funciones; los cambios en los requisitos del software suelen ser cambios relacionados con las funciones, y los objetos que realizan las funciones normalmente no cambian significativamente. Además, el desarrollo orientado a objetos apoya y fomenta el ocultamiento de información, la abstracción de datos y la encapsulación en las prácticas de ingeniería de software. Las modificaciones dentro de los objetos están aisladas localmente. El software orientado a objetos es fácil de modificar, ampliar y mantener.
La orientación a objetos también se ha extendido a todas las etapas del ciclo de vida del software, desde el análisis hasta la codificación. Y el enfoque orientado a objetos, naturalmente, admite la creación rápida de prototipos y RAD (desarrollo rápido de aplicaciones). El uso del desarrollo orientado a objetos fomenta la reutilización, no sólo del software sino también de los modelos de análisis y diseño. Además, la tecnología OO también promueve la intercambiabilidad del software, es decir, una aplicación en un nodo de la red puede utilizar recursos en otro nodo. El desarrollo orientado a objetos también soporta algunos fenómenos comunes en los sistemas de software actuales, como la concurrencia, la jerarquía y la complejidad. Hoy en día, a menudo necesitamos crear algún sistema de software, no sólo una aplicación de caja negra. Estos sistemas complejos a menudo contienen una jerarquía de múltiples subsistemas. El desarrollo orientado a objetos apoya la construcción de sistemas abiertos; existe una mayor flexibilidad en la integración de software utilizando diferentes aplicaciones. Finalmente, el uso del desarrollo orientado a objetos puede reducir los peligros de desarrollar sistemas complejos, principalmente porque la integración del sistema existe en todas las etapas del ciclo de vida del software.
3 Modelado orientado a objetos
El modelado orientado a objetos no es sólo un resumen de nuevos lenguajes de programación. Esta es una nueva forma de pensar, una nueva forma de pensar sobre la informática y la estructuración de la información. El modelado orientado a objetos trata los sistemas como objetos colaborativos. Estos objetos son encapsulaciones de estructura y comportamiento. Todos pertenecen a una determinada clase, y esas clases tienen una determinada estructura jerárquica. Toda la funcionalidad del sistema se logra mediante el envío de mensajes entre objetos. El modelado orientado a objetos puede considerarse como un marco conceptual con los siguientes elementos: abstracción, encapsulación, modularidad, jerarquía, clasificación, paralelismo, estabilidad, reutilización y escalabilidad.
La aparición del modelado orientado a objetos no fue una revolución informática. Más apropiadamente, es la evolución gradual de un enfoque de desarrollo de software orientado a procesos y estrictamente basado en datos. Este nuevo enfoque para el desarrollo de software está impulsado por dos cosas: la evolución de los lenguajes de programación y las demandas de dominios problemáticos cada vez más complejos. Aunque en la práctica el análisis y el diseño se realizan antes de la etapa de programación, desde una perspectiva histórica, es la innovación de los lenguajes de programación la que trae cambios en la tecnología de diseño y análisis. Asimismo, la evolución del lenguaje es una respuesta natural a las mejoras y demandas cada vez más complejas de los sistemas informáticos.
Entre los muchos factores que afectan a la OO, el más importante puede ser el avance de los métodos de programación. En las últimas décadas, el soporte de los lenguajes de programación para mecanismos de abstracción ha evolucionado a un nivel superior. Esta transición de direcciones (lenguaje de máquina) a nombres (lenguaje ensamblador), a expresiones (lenguajes de alto nivel de primera generación como Fortran), a control (lenguajes de alto nivel de segunda generación como Cobol), a procesos y funciones (lenguajes de alto nivel de segunda generación y principios de tercera generación, como Pascal), a módulos y datos (lenguajes de alto nivel de última generación, como módulo) y, finalmente, a objetos (basados en. El desarrollo de Smalltalk y otros lenguajes orientados a objetos permite la implementación de nuevas técnicas de análisis y diseño.
Estas nuevas tecnologías OO son en realidad la integración de métodos estructurados y métodos de bases de datos, centrándose en. El flujo de datos en un alcance pequeño, como el acoplamiento y la agregación, también son importantes. En última instancia, el comportamiento requiere un método de diseño orientado a procesos. La idea de modelado de datos de entidad-relación (diagrama ER) en la tecnología de bases de datos también se refleja en Método OO.
El avance de la arquitectura del hardware informático y la mejora del rendimiento de costes La introducción del concepto de objeto en el diseño de hardware ha tenido un cierto impacto en el desarrollo de los programas OO que suelen acceder a la memoria. y requieren una mayor velocidad de procesamiento.
Requieren y utilizan potentes capacidades de hardware informático. Las teorías de jerarquía y clasificación de la filosofía y las ciencias cognitivas también promovieron el surgimiento y desarrollo de la orientación a objetos. Finalmente, el creciente tamaño, complejidad y distribución de los sistemas informáticos han impulsado la tecnología OO en mayor o menor medida.
Debido a que hay muchos factores que afectan el desarrollo de OO y la tecnología OO en sí no está madura, existen muchas formulaciones diferentes de conceptos y terminología. No todos los lenguajes OO son iguales, difieren en terminología y conceptos. Aunque existe una tendencia unificada, todavía no existe una comprensión completa de cómo realizar análisis y diseño orientado a objetos, y no existe un símbolo unificado para describir estas actividades. (Nota: UML está trabajando en esta dirección) Sin embargo, el desarrollo de OO ha demostrado ser exitoso en los siguientes campos: gestión del tráfico aéreo, diseño de animación, banca, procesamiento de datos comerciales, sistemas de comando y control, CAD, CIM, bases de datos, sistemas expertos. , Reconocimiento de imágenes, análisis matemático, síntesis musical, sistemas operativos, control de procesos, software de estaciones espaciales, robótica, comunicaciones remotas, diseño de interfaces y diseño VLSI. No hay duda de que la aplicación de la tecnología orientada a objetos se ha convertido en la corriente principal del desarrollo de la industria del software.
4 Programación orientada a objetos
<1>Concepto
En la programación orientada a objetos, un programa se ve como una colección de objetos que cooperan. Cada objeto es una instancia de una clase y todas las clases forman una jerarquía mediante herencia. Los lenguajes orientados a objetos tienden a tener las siguientes características: función de generación de objetos, mecanismo de paso de mensajes, clase y mecanismo genético. Por supuesto, estos conceptos pueden aparecer y han aparecido de forma independiente en otros lenguajes de programación, pero sólo en los lenguajes orientados a objetos aparecen juntos, trabajando juntos y complementándose entre sí de una manera cooperativa única.
Modo de programación procesal: entrada de parámetros-generación de código-salida de resultado.
Para implementar una función, se pasan parámetros a un procedimiento de procesamiento y finalmente se devuelve el resultado del cálculo.
|Estructura de datos de objeto Patrón de programación orientada a objetos:
Interfaz|Operaciones de objeto y
Operaciones de objeto
En programación orientada a objetos, funciones Se obtiene a través de la comunicación con el objeto. Los objetos se pueden definir como entidades que encapsulan estado y comportamiento o como estructuras de datos (o propiedades) y operaciones. El estado son en realidad los datos y la información que deben almacenarse en un objeto para poder realizar un comportamiento. La interfaz de un objeto, también llamada protocolo, es una colección de mensajes a los que el objeto puede responder. Los mensajes son una forma para que los objetos se comuniquen, por lo que también son una forma de obtener funciones. Después de recibir un mensaje enviado, un objeto realiza una operación interna (a veces llamada método o procedimiento) o llama a la operación de otro objeto. Todos los objetos son instancias de clases. Una clase es una colección de objetos con las mismas características, o se puede decir que una clase es una plantilla que se puede utilizar para generar objetos. El método llamado cuando un objeto responde a un mensaje está determinado por el objeto que recibe el mensaje. Las clases se pueden organizar jerárquicamente. En esta jerarquía, las subclases pueden heredar estados y métodos de la superclase superior a ellas. Cuando un objeto recibe un mensaje, el proceso de encontrar el método correspondiente comienza con la clase del objeto y asciende en la jerarquía de esa clase. Finalmente, hasta que se encuentre un método o no se encuentre nada (se informará un error). En algunos idiomas, una clase determinada puede heredar de múltiples superclases, lo que se denomina herencia múltiple. Si se utiliza la unión dinámica, la herencia conduce al polimorfismo. El polimorfismo describe el siguiente fenómeno: si varias subclases redefinen una función de la superclase (todas con el mismo nombre de función), cuando se envía un mensaje a un objeto de la subclase, el mensaje se interpretará como operaciones diferentes. Un método también puede incluirse en la interfaz de una superclase y ser heredado por subclases sin tener que definirlo. Estas superclases también se denominan clases abstractas. No se pueden crear instancias de clases abstractas, por lo que solo se pueden usar para generar subclases.
Lenguaje& lt2 & gt
El lenguaje orientado a objetos contiene cuatro ramas básicas:
1 Basado en Smalltalk, incluidas cinco versiones de Smalltalk, con Smalltalk-80. como el representar.
2 Basado en c; incluido Objective-C, C++, Java.
3 Basado en LISP que incluye Flavours, XLISP, LOOPS y CLOS.
4Basado en PASCAL. Incluye objeto Pascal, turbo Pascal, Eiffel y ada 95.
Simula es en realidad el antepasado de todos estos lenguajes. Entre estos lenguajes OO, la denominación de los términos y la capacidad de admitir OO varían en distintos grados. Aunque Smalltalk-80 no admite herencia múltiple, todavía se considera el lenguaje más orientado a objetos.
Entre los lenguajes OO basados en C, Object-C fue desarrollado por Brad Cox. Tiene una rica biblioteca de clases y se ha utilizado con éxito en el desarrollo de grandes sistemas. C++ fue escrito por Bjarne Straustrup de Bell Labs. Extiende STRUCT en lenguaje C a una clase con capacidades de ocultación de datos. El polimorfismo se logra mediante funciones virtuales. C++ 2.0 admite herencia múltiple. En la mayoría de las áreas de software, especialmente en plataformas Unix, C++ es el lenguaje de programación orientado a objetos preferido. Java es una nueva generación de lenguaje orientado a objetos basado en Internet, similar a C y C++, desarrollado por Sun Microsystems. Se hizo popular con el auge de Internet en 1995. Los pequeños programas escritos en Java se pueden incrustar en HTML para su interpretación y ejecución, lo que lo convierte en multiplataforma. Java admite mecanismos de concurrencia y subprocesos múltiples como Ada, y es tan simple y portátil como C.
Los lenguajes basados en LISP se utilizan principalmente para aplicaciones de razonamiento y expresión de conocimiento. CLOS (Common LISP Object System) es la versión estándar de LISP orientado a objetos.
Entre los lenguajes basados en Pascal, Object Pascal fue desarrollado por Apple y Nicholas Voss para Macintosh, y su biblioteca de clases es MacApp. Turbo Pascal es desarrollado por Borland Company basado en Object Pascal.
Eiffel fue publicado en 1987 por Bertrand Meyer de Interactive Software Engineering. Su sintaxis es similar a Ada y se ejecuta en un entorno Unix. Cuando Ada apareció por primera vez en 1983, no admitía herencia ni polimorfismo, por lo que no estaba orientado a objetos. En 1995, finalmente se lanzó un Ada orientado a objetos, que fue el Ada 95.
Además de los lenguajes orientados a objetos mencionados anteriormente, algunos lenguajes también se consideran basados en objetos. Ellos son: Alphard, Crewe, Euclid, Gypsy, Mesa, Modula.
5 Ingeniería de software orientada a objetos
Ciclo de vida
Si bien los lenguajes orientados a objetos están logrando avances apasionantes, todos sabemos que codificar no es desarrollo de software. principal fuente de problemas. Por el contrario, los problemas de requisitos y análisis son más comunes y más costosos de corregir. Por lo tanto, la atención a las técnicas de desarrollo OO no sólo debe centrarse en la codificación, sino también en otros aspectos de la ingeniería de software. Las perspectivas de aplicación de los métodos OO al abordar el análisis y diseño de sistemas complejos y la reutilización del análisis y diseño también son muy prometedoras. Si admitimos que el desarrollo de software OO no se limita a actividades de codificación, entonces debemos adoptar un nuevo modelo de desarrollo, incluido un nuevo ciclo de vida del software. Actualmente el ciclo de vida más común es el modelo en cascada (estructurado). Fue el primer modelo de ciclo de vida después de la "crisis del software" de finales de los años 1960. Como se muestra a continuación.
Análisis-Diseño-Codificación-Prueba-Mantenimiento
Como se muestra en la figura, el proceso de desarrollo del ciclo de vida en cascada es progresivo; el flujo de actividades es básicamente unidireccional; Se supone que los desarrolladores tienen una comprensión clara del sistema en las primeras etapas de desarrollo. Desafortunadamente, cualquier actividad de desarrollo de software implica inevitablemente muchas iteraciones, ya sea que la programes con anticipación o no. Un buen diseñador es un practicante que puede trabajar tanto a nivel abstracto como en detalles concretos. En términos generales, las deficiencias del ciclo de vida en cascada se manifiestan en tres aspectos:
El método orientado a objetos comienza con el modelo del problema y luego identifica el objeto y lo refina continuamente. Es de naturaleza iterativa e incremental. Aquí, la creación rápida de prototipos y los circuitos de retroalimentación son estructuras estándar necesarias. El proceso de desarrollo es un proceso iterativo. A medida que avanzan las iteraciones, las funciones del sistema se mejoran constantemente. Aquí, los límites claros entre las fases de análisis, diseño y codificación en los modelos de desarrollo tradicionales se vuelven borrosos. La razón es que el concepto de objetos se utiliza durante todo el proceso de desarrollo. Los objetos y sus relaciones se convierten en el mismo medio de expresión en todas las etapas de análisis, diseño y codificación. El foco del desarrollo pasa de la codificación al análisis, de estar centrado en funciones a estar centrado en datos.
Además, el desarrollo orientado a objetos es iterativo y fluido, lo que hace que la reutilización sea más natural.
Recientemente, para mejorar la manejabilidad del desarrollo orientado a objetos, Boehm (1988) propuso un método de modelo de desarrollo en espiral que combina vistas macro y micro (macro y: microvista). La macro incluye tres etapas: 1. Análisis: encontrar e identificar objetos; 2. Diseño: inventar y diseñar objetos; 3. Implementación: crear y realizar objetos. Cada macro fase contiene algunas actividades micro iterativas.
6 OOA y OOD
Dado que la tecnología orientada a objetos es relativamente nueva, actualmente existen muchos métodos de análisis y diseño orientados a objetos. El análisis orientado a objetos (OOA) se basa en técnicas de modelado de información anteriores y puede definirse como un método de análisis que examina los requisitos utilizando los conceptos de clases y objetos que se encuentran en el vocabulario del dominio del problema. El resultado de OOA es una serie de objetos de "caja negra" derivados del dominio del problema. OOA suele utilizar "escenarios" para ayudar a determinar el comportamiento básico de los objetos. Una historia es una secuencia continua de actividades que tiene lugar en un dominio problemático. El concepto de "marco" es muy útil en OOA para un dominio de problema determinado. Un marco es el esqueleto de una aplicación o subsistema de aplicación, que contiene clases concretas o abstractas. En otras palabras, un marco es una jerarquía específica que contiene una clase principal abstracta que describe el dominio del problema. Una desventaja de todos los métodos OOA actualmente populares es que carecen de una forma fija.
En la etapa de diseño orientado a objetos, el enfoque cambia del espacio del problema al espacio de comprensión. OOD es un método de diseño que incluye descripciones de procesos lógicos y físicos del sistema diseñado y modelos estáticos y dinámicos del sistema (Booch, 1994).
En OOA y OOD, la gente se centra en la reutilización. Actualmente, los investigadores de tecnología orientada a objetos están intentando definir el concepto de "patrones de diseño". Es un "tesoro" reutilizable que se puede aplicar a diferentes áreas problemáticas. Normalmente, los patrones de diseño se refieren a estructuras o soluciones de diseño que ocurren varias veces. Si se categorizan sistemáticamente, pueden reutilizarse y formar la base para la comunicación entre diferentes diseños.
La tecnología OOD en realidad apareció antes que la tecnología OOA. En la actualidad, es difícil trazar una línea clara entre OOA y OOD. Por lo tanto, la siguiente descripción ofrece una descripción general (conjunta) de algunas técnicas de OOA/OOD comúnmente utilizadas.
Meyer utilizó el lenguaje como herramienta para expresar el diseño. (1988)
Las técnicas OOD de Booch ampliaron su trabajo anterior en Ada. Adopta un enfoque de "Gestalt de ida y vuelta", que incluye los siguientes procesos: identificar objetos, identificar la semántica de los objetos, identificar relaciones entre objetos e implementarlos, incluida una serie de iteraciones. Booch fue el primero en describir OOD utilizando diagramas de clases, diagramas de clasificación de clases, plantillas de clases y diagramas de objetos (1991).
La tecnología OOD de Wrifs-Brock está impulsada por agentes responsables. Las Tarjetas de Responsabilidad de Clase se utilizan para registrar qué clase es responsable de una función específica. Después de determinar las clases y sus responsabilidades, procederemos a un análisis de relaciones más detallado y a la implementación del subsistema. (1990)
Rumbaugh utiliza tres modelos para describir un sistema: 1. Modelo de objetos, que describe la estructura estática de los objetos en el sistema; 2. Modelo dinámico, que describe el cambio de estado del sistema a lo largo del tiempo; 3. Modelo de función, que describe la conversión de varios valores de datos en el sistema. Se utilizan diagramas de objetos, diagramas de transición de estados y diagramas de flujo de datos para describir estos tres modelos respectivamente. (1991)
Coad y Yourdon utilizan los siguientes pasos de OOA para determinar un modelo OO de múltiples capas (cinco niveles): encontrar clases y objetos, determinar estructuras y relaciones, determinar temas, definir atributos y definir servicios. . Los cinco pasos corresponden a los cinco niveles del modelo, a saber, la capa de clase y objeto, la capa de sujeto, la capa de estructura, la capa de atributos y la capa de servicio. Su enfoque OOD tiene múltiples capas y múltiples ingredientes. La organización jerárquica es la misma que la de OOA. Muchos aspectos incluyen: dominio del problema, interacción humana, gestión de tareas y gestión de datos.
Ivar Jacobson propuso el método Objectory (o método Jacobson), que es un método de ingeniería de software orientado a objetos que desarrolló en el sistema de destino sueco. El enfoque de Jacobson enfatiza el uso de "casos de uso". Los casos de uso se convierten en la base del modelo de análisis, que se describe con más detalle mediante diagramas de interacción para formar el modelo de diseño. Los casos de uso también impulsan los esfuerzos de prueba durante la fase de prueba. El método Jacobson es, con diferencia, el método industrial más completo.
(1992)
Existen muchas variaciones de los métodos anteriores y es imposible enumerarlas todas. En los últimos años, a medida que diversos métodos han evolucionado, también se han fusionado entre sí. En 1995, Booch, Rumbaugh y Jacobson propusieron conjuntamente la primera versión del lenguaje de modelado integrado UML (Unified Modeling Language). (Ahora se ha convertido en el estándar de facto para los lenguajes de modelado OO)
7 Problemas de gestión
Cuando las organizaciones adoptan técnicas de desarrollo orientadas a objetos, las actividades de gestión que respaldan el desarrollo de software inevitablemente cambiarán. ocurrir. Apostar por la tecnología OO significa cambiar los procesos de desarrollo, los recursos y las estructuras organizativas. (Goldberg 1995) La iteración, la creación de prototipos y la fluidez del desarrollo OO eliminan los límites entre las diferentes etapas de los modelos de desarrollo tradicionales. Es necesario redefinir nuevos límites. Al mismo tiempo, algunos métodos de medición del software ya no son aplicables. LOC (líneas de código) definitivamente está desactualizado. La cantidad de clases reutilizadas, la profundidad de la jerarquía de herencia, la cantidad de relaciones entre clases, el grado de acoplamiento entre objetos, la cantidad y el tamaño de las clases son más significativos. El trabajo sobre medición de software orientado a objetos es bastante nuevo, pero ya existen algunas referencias. (Lorenz 1993)
Es necesario reconsiderar tanto la asignación de recursos como la dotación de personal. El tamaño del equipo de desarrollo se está reduciendo gradualmente y los expertos que son buenos en reutilización se están volviendo populares. La atención debería centrarse en la reutilización en lugar del bloqueo. La verdadera realización de la reutilización requiere un conjunto de principios completamente nuevo. Además de ejecutar el contrato de software, también se deben establecer bibliotecas y marcos de aplicaciones. Las estrategias de inversión a largo plazo, así como el compromiso y el proceso de mantener esta riqueza reutilizable, se vuelven aún más importantes.
En cuanto al aseguramiento de la calidad del software, las actividades de prueba tradicionales siguen siendo necesarias, pero su calendario y definición deben cambiar. Por ejemplo, "atravesar" una característica implicaría activar una escena en la que una serie de objetos interactúan y envían mensajes para implementar una característica. Probar un sistema orientado a objetos es otro tema que requiere más investigación. Lanzar un prototipo estable requiere una gestión de configuración diferente a la del desarrollo estructurado de productos previamente controlado.
Otra cuestión que requiere atención en la gestión es el soporte de herramientas adecuadas. Es necesario un entorno de desarrollo orientado a objetos. Al mismo tiempo, también requiere navegadores de bibliotecas de clases, compiladores incrementales, depuradores que admitan la semántica de clases y objetos, soporte gráfico y verificación de referencias para actividades de diseño y análisis, herramientas de gestión de configuración y control de versiones, y aplicaciones de bases de datos similares a bibliotecas de clases.
La estimación de costos también es un problema a menos que la historia del desarrollo orientado a objetos sea suficiente para proporcionar datos sobre recursos y consumo. Los costos de reutilización actuales y futuros deben tenerse en cuenta en la fórmula de cálculo. Finalmente, los gerentes también deben comprender los riesgos que implica pasar a un enfoque orientado a objetos. Los ejemplos incluyen la mensajería, la explosión de la mensajería y el costo de la asignación y desasignación de memoria dinámica. También existen algunos riesgos iniciales, como la familiaridad con las herramientas y estrategias de desarrollo adecuadas, la capacitación adecuada y el desarrollo de la biblioteca de clases.
8 Transformación a orientada a objetos
El ciclo de esta transformación puede ser bastante largo. La formación es necesaria. También son necesarios programas de orientación experimentales. No se recomienda utilizar una combinación de imágenes estructuradas y orientadas a objetos. Cada vez hay más pruebas de que el éxito requiere una solución completa orientada a objetos.
9 El futuro
En general, la tecnología orientada a objetos es una evolución natural de la tecnología de desarrollo de software anterior y tiene grandes perspectivas de desarrollo de software en muchos campos de aplicación. Tomando prestado del discurso de Maurice Wilkes en la ceremonia del Premio Turing: "Los objetos son una de las innovaciones más interesantes en la industria del software desde la década de 1970 (1996). Sin embargo, el desarrollo orientado a objetos no es un paquete. El desarrollo de una panacea". curar todas las enfermedades está lejos de estar maduro. Sin embargo, aunque el futuro de la tecnología OO aún no se ha determinado, algunas predicciones hechas a principios de los años 1990 se han hecho realidad. (Winblad 1990) Ya existen bibliotecas de clases y marcos de aplicaciones en el mercado. Permite el acceso transparente a la información entre aplicaciones y entornos. Están surgiendo entornos que apoyan la comunicación del usuario entre aplicaciones y kits de herramientas multimedia de herencia orientada a objetos. Con la acumulación de experiencia, el desarrollo OO se volverá cada vez más popular y la tecnología OO se volverá cada vez más madura. Por supuesto, la tecnología OO también puede ser reemplazada o integrada por algunas tecnologías de desarrollo que se ocupan de niveles más altos de abstracción. Éstas son sólo conjeturas. Si bien las personas de las que hablamos sin duda quedarán obsoletas en un futuro próximo, por ahora todavía quedan muchas preguntas esperando a las que dediquemos verdadero entusiasmo.