La reusabilidad del software ha sido un campo de investigación desde los inicios de la de la informática como ciencia y mantiene su interés hasta el día de hoy. Los lenguajes y paradigmas de programación emergentes ya tratan implícitamente la cuestión de cómo ofrecer mejores mecanismos para reutilizar código. A lo largo de la evolución de los diferentes conceptos de reutilización, los fragmentos de código encapsulado emergieron como la principal entidad para una reutilización exitosa. Como consecuencia, las tecnologías y plataformas de desarrollo recientes proponen varios mecanismos para encapsular código en diferentes tipos de artefactos reutilizables. En la actualidad existe un amplio número de tecnologías para la generación y la distribución de estos artefactos que a su vez aprovechan los diferentes mecanismos y conceptos de reutilización. Por ende, el dominio de la reutilización se ha transformado paulatinamente en un campo cada vez más complejo y disperso. A pesar de esta complejidad y de la diversidad de los artefactos y tecnologías asociadas, el hecho de que la misma idea principal forma la base común de todas ellas apoya la afirmación a priori de que se pueden identificar criterios para establecer clasificaciones entre los artefactos. La importancia de la clasificación en cualquier dominio de conocimiento es incuestionable ya que provee una estructura básica para estudiar, desarrollar y ampliar este dominio apropiada y sistemáticamente. Sin embargo, todavía existen muy pocos estudios que proponen este tipo de criterios para ordenar y clasificar el dominio de los artefactos reutilizables. Además, no todos siguieron un riguroso procedimiento científico para obtener sus resultados, lo que es una debilidad de facto que todavía afecta con demasiada frecuencia a la investigación en la ingeniería de software. Los procedimientos científicos para estudiar estos aspectos son esenciales para consolidar teorías, conceptos, y para comprobar científicamente aquel conocimiento de la ingeniería de software que, a pesar de poder estar ampliamente aceptado, muchas veces carece de un real fundamento científico. Por ello, creemos que existe una necesidad creciente de atender esta tarea y pretendemos contribuir a ello con este trabajo. Debido a la amplitud de este dominio es imposible de tratarlo en su totalidad dentro del margen limitado de esta tesis. Por lo tanto el autor se centra aquí en el análisis de un aspecto específico de los artefactos reutilizables, concretamente la base tecnológica que los soporta. Este objeto ha sido elegido intencionadamente ya que el soporte tecnológico es un elemento fundamental sin el cual la reutilización no existiría como una actividad sistemática, impidiendo su aplicación real. Además es un aspecto relativamente objetivo, lo que permite desarrollar criterios de clasificación y dimensiones directamente aplicables y útiles. Asimismo creemos que este primer paso es importante para crear una base para trabajos sucesivos que traten de analizar, clasificar y ordenar otros aspectos fundamentales de la reutilización de software. Para cumplir nuestro objetivo con una elevada rigurosidad científica y una metodología solida hemos adoptado un proceso de investigación cualitativa y secundaria. La selección de registros bibliográficos como datos principales sigue un procedimiento que basa en los principios de la revisión sistemática en combinación con prácticas de la investigación cualitativa. La extracción iterativa de muestras y códigos desde los datos primarios y la sucesiva síntesis de aquellos extractos has sido inspirada en gran parte por el Muestreo Teórico. El contenido de esta tesis se estructura de la forma siguiente: El capítulo 2 describe la estructura básica de la tesis que consiste en tres pilares principales. El primer pilar trata del objeto de la investigación, la reusabilidad de software en general y de los artefactos de software reutilizables más en concreto. El contenido de esta descripción resulta de la primera iteración del cíclico proceso de investigación aplicado. Primero describe el estado del arte de la reutilización de software partiendo desde las principales fases del proceso de reutilización y los componentes implicados, tanto desde la perspectiva tecnológica como la perspectiva no-tecnológica. Esta división del campo de investigación y la asociación de los términos a las diferentes fases y perspectivas ayuda a identificar la esencia de los artefactos reutilizables y permite posicionarlos en un sub-campo más específico. Con este enfoque concretizado, se extrajo una caracterización concreta de definiciones relevantes, analizando y describiendo sus principales características como la encapsulación, el bajo acoplamiento, el ocultamiento de información, etc. Estas características finalmente sirvieron para identificar las dimensiones de la clasificación definitiva. El segundo pilar resume el estado del arte de las clasificaciones y su significado para la ciencia y para la ingeniería de software. Subraya la importancia de las clasificaciones para mejorar la comprensión y comunicación entre miembros de una comunidad de conocimiento, abstrayendo y nombrando los conceptos principales de su entorno y creando con ello un lenguaje común. Además, esta parte describe brevemente los principales tipos de taxonomías y sus ventajas y desventajas para evaluar finalmente la clasificación que se presenta más adelante en esta tesis. Dado que las clasificaciones representan una visión conjunta que condiciona diferentes elementos desde una perspectiva determinada, también sirven como un tipo de teoría científica. Por lo tanto, el tercer pilar analiza el papel y el peso de la ciencia en la ingeniería de software, con un enfoque especial en los tipos, en el uso y en la madurez de las teorías existentes por un lado, y las metodologías aplicadas en la investigación de la ingeniería de software por otro lado. Las teorías se pueden dividir en cinco tipos diferentes de los cuales el primer tipo describe ¿lo que es¿ y subsuma las clasificaciones como una forma válida de representación. En esta parte se describen las principales fases y los principales aspectos de la metodología aplicada en la investigación de ingeniería de software, como la recolección y análisis de datos, los orígenes de los datos y los procesos de deducción de teorías y la validación de hipótesis. El capítulo 3 describe brevemente la cuestión principal y el objetivo de la tesis que resulta parcialmente del análisis del estado del arte del capítulo anterior. Reitera la importancia de los artefactos reutilizables de software en el campo de la ingeniería de software y la variedad de los diferentes tipos de artefactos. Además apunta que a pesar de la cantidad de investigación que se ha realizado durante las últimas décadas para analizar estos diferentes tipos, se adolece de una investigación con una visión amplia y estructurada del campo. Subraya la importancia especial del soporte tecnológico ya que solo con ello se puede garantizar el mantenimiento sistemático durante el continuo proceso de desarrollo y reutilización de software. La síntesis del capítulo resulta en la pregunta principal que nos guió hasta el resultado final de la investigación: ¿Cuáles son las dimensiones principales de los artefactos reutilizables de software? El capítulo 4 describe los fundamentos de la metodología aplicada y sus aplicaciones en el contexto de la investigación de la ingeniería de software. La metodología es un proceso hibrido que se compone de conceptos de la revisión sistemática y conceptos del muestreo teórico. En una primera parte se describen los conceptos principales de la revisión sistemática y su aplicación en la ingeniería de software. El origen de esta metodología se encuentra en las ciencias de la salud donde se aplica principalmente como una investigación secundaria que resume datos de estudios primarios, por lo que ayudó en esta tesis a identificar y documentar una selección de estudios. No obstante, la revisión sistemática se usa normalmente para datos cuantitativos mientras esta tesis analiza principalmente datos cualitativos. Por ello se evaluaron además metodologías de revisión de datos cualitativas, muchas de ellas basadas en la revisión sistemática. Se ha expuesto un breve resumen de estas metodologías justificando al mismo tiempo porqué ninguna de estas metodologías sirvió para los fines de esta tesis. Como alternativa se propone adoptar varios conceptos principales del muestreo teórico para crear un método viable. Estos conceptos y su aplicación en la ingeniería de software se explican a continuación. La segunda parte del capítulo 4 expone el método compuesto tal como se aplicó en esta tesis. Defiende el nivel de rigurosidad científica de la metodología y expone el Review Report, recomendado por las reglas de la revisión sistemática. El informe especifica las diferentes fases de la revisión ejecutadas durante el proceso de investigación de esta tesis. El informe documenta el proceso completo de investigación. Por lo tanto, en esta parte están listados aquellos capítulos de la tesis que reflejan las fases obligatorias del Review Report, indicando así que la tesis sigue las normas de una revisión sistemática. La tercera parte del capítulo 4 describe el Review Protocol preparatorio que lista las premisas y requerimientos definidos antes de efectuar el proceso. Se compone de cinco partes diferentes. Primero, se repite brevemente la pregunta principal de investigación. Después se explica la estrategia de búsqueda de datos, es decir, el método y los criterios según el cual las publicaciones han sido buscadas, como por ejemplo el tipo de las publicaciones, los términos de búsqueda y la lista de librerías dónde se ha realizado la búsqueda. Además explica cómo se han administrado las entradas bibliográficas. A continuación se definen los criterios de selección para filtrar la literatura relevante. La selección de estos criterios es un proceso iterativo que se refina y completa de forma dinámica a lo largo del análisis de la literatura identificada durante la búsqueda principal. La lista final de los criterios se compone tanto de criterios formales, p.ej. el período o el idioma, como de criterios en cuanto al contenido, es decir tópicos relevantes como p.ej. los beneficios de la reutilización, cualidades de la reutilización, etc. Después se definen los criterios de calidad, y por último, la estrategia para extraer los datos. El capítulo 5 presenta la clasificación final como resultado de la aplicación de la metodología descrita anteriormente. La clasificación está dividida entre las tres dimensiones ortogonales de contrato, independencia y composición, con cada una explicando diferentes niveles de una característica principal. Cada nivel está descrito por su característica distintiva seguido por múltiples ejemplos que se localizaron durante el proceso de la revisión de la literatura. La característica que representa la primera dimensión (contrato) describe diferentes niveles de expresividad dela interfaz que expone la información sobre cómo invocar el artefacto, mientras oculta otra información interna. Aparte de la descripción sintáctica es posible describir reglas y factores que tienen que ser respetados para hacer un uso correcto del artefacto. La estrictez del contrato del artefacto depende delo extenso de la descripción de este contrato. El contrato tiene que ser presentado en una forma legible y verificable computacionalmente. Por ello tiene que haber unas especificaciones sintácticas para describir estas reglas y factores. En esta dimensión se describen cinco niveles diferentes que han sido identificados a lo largo de la investigación y que cumplen con estos requisitos. El primer nivel de contrato identificado consiste en no exponer ningún tipo de interfaz del artefacto para su reutilización. Refleja el tipo más rudimentario y ciertamente más antiguo de la especificación de un artefacto. El segundo nivel expone las informaciones básicas que ofrecen la mayoría de los lenguajes de programación modernos, especialmente los lenguajes orientados a objetos. La especificación consiste en elementos como el nombre del artefacto, las dependencias, variables, constantes, etc. El tercer nivel añade el concepto generalmente conocido como design by contract, consistiendo en tres elementos principales: las pre-condiciones que definen qué tipo de requisito tiene que ser cumplido para poder usar el artefacto de forma correcta, las post-condiciones que definen los atributos que se cumplen por parte del artefacto después de su utilización, y las invariantes, para definir los elementos del artefacto cuyo estado se mantiene igual antes y después de su utilización. En el cuarto nivel se definen los protocolos, que permiten definir el orden de llamada a los elementos expuestos por un artefacto. Los protocolos sirven principalmente para detectar anticipadamente errores en un sistema antes de su ejecución. El quinto nivel se dedica a la calidad del servicio de un artefacto, usando métricas cuantitativas para definir características no-funcionales. La característica descrita en la segunda dimensión (independencia) describe diferentes niveles desacoplamiento de un artefacto de su entorno para ofrecerle una mayor reutilización, preferiblemente mediante el soporte de la plataforma tecnológica subyacente. Los niveles van desde la simple posibilidad de integrar el código dentro de una función, clase o un módulo, y este nuevamente en una librería, hasta algunas opciones mas avanzadas como la realización de una llamada remota en una red. No obstante, algunas dependencias permanecen dentro del artefacto aislado. Aquí denominamos aquellas dependencias como dependencias de plataforma, usando el término plataforma de una manera muy amplia. En total se han detectado cinco tipos diferentes de independencia de plataforma. El primer nivel es la independencia del contexto que implica básicamente que un artefacto puede ser reutilizado repetitivamente dentro de la misma aplicación, independientemente del origen de la llamada. El segundo nivel es la independencia de la aplicación que reutiliza el artefacto. Es decir que el artefacto está situado (normalmente) en algún tipo de depósito fuera de una aplicación. Este depósito sirve como punto de acceso central para las aplicaciones de su entorno. El tercer nivel es la independencia del lenguaje de programación, un concepto principalmente atendido por los modelos de componentes de software. Se trata de reutilizar un artefacto independientemente del lenguaje usado para implementarlo. El cuarto nivel de independencia que hemos identificado es la independencia del tipo de sistema operativo para proveer el artefacto, es decir el artefacto puede ser ejecutado en diferentes sistemas operativos. El quinto y último nivel de la dimensión de independencia describe la independencia de la localización, tratando el dominio de los sistemas distribuidos. Distinguimos entre la independencia homogénea entre dos plataformas de un mismo sistema y la independencia heterogénea, donde el tipo de la plataforma es irrelevante. La tercera y última dimensión (composición) describe la característica de acoplamiento de los artefactos, que se compone por diferentes niveles de autonomía cuando se conectan dos artefactos. El artefacto que resulta de una composición puede ser otro artefacto independiente, con su propio interfaz, y diferente de la suma de las interfaces de sus partes constituyentes. Otra pregunta es si las partes son todavía identificables y accesibles después de la composición o si desaparecen, lo que significa si la identidad o los interfaces de las partes compuestas son todavía visibles dentro del artefacto compuesto resultante. Además influye el aspecto de la comunicación entre artefactos siendo directo o indirecto. Estos diferentes elementos influyen a la hora de identificar los cuatro niveles de acoplamiento que se describen en esta dimensión. El primer nivel describe la sustitución, donde un artefacto es insertado lexicalmente, sustituyendo un marcador de posición. El segundo nivel define la agregación, donde se componen dos artefactos de forma posesiva, pero manteniendo la integridad de ambos artefactos. El tercer nivel de composición es la cooperación, donde los artefactos mantienen su autonomía e interactúan directamente. El cuarto y último nivel de la composición es la intermediación, donde los artefactos ya no interactúan directamente entre ellos sino a través de un intermediario. El capítulo 6 recoge el resultado de la investigación y lo cualifica en base a los criterios de evaluación expuestos en el capítulo 2 y en base a la experiencia ganada durante el proceso de la investigación. Este capítulo se divide en tres partes. En la primera parte se evalúa la calidad de la metodología y se resumen sus mayores ventajas y desventajas. En la descripción de las ventajas se resume porqué la aplicación de la metodología ayuda a garantizar una mejor calidad de los resultados y a ejecutar el proceso exhaustivo de revisión y análisis de la literatura. Pero sobre todo remarca su aportación a la hora de proveer el investigador con elementos para hacer su proceso de investigación más transparente. En las desventajas se describen los puntos más críticos frente a la metodología que el autor de esta tesis ha identificado. Principalmente proceden del tipo de investigación que ha sido tratado en este trabajo de investigación y de los recursos limitados que ofrece una investigación de la envergadura de una tesis doctoral. La segunda parte del capítulo de la discusión evalúa la revisión sistemática, la clasificación y la teoría propuestas como resultado de la investigación de esta tesis. La evaluación de la revisión sistemática es realizada en base a cuatro características básicas de las fuentes de datos. Estas características han sido encontradas en la literatura técnica pertinente y sirven concretamente para evaluar la evidencia de una síntesis. La evaluación de la clasificación está realizada en base a las seis directrices descritas en el capítulo dedicado a la ciencia de la clasificación. En concreto se trata de la integridad, la precisión, la consistencia, la extensibilidad, la usabilidad y la eficiencia económica de la clasificación. Manifiestamente, la aplicación de estas directrices cualitativas resulta algo difusa, sin embargo nos ofrece una aproximación admisible para discutir y defender la calidad del resultado. La evaluación de la teoría se compone por dos partes. En la primera parte se analiza si el resultado de esta tesis cumple con los cuatro criterios principales de una teoría: los medios de representación describen la forma en la que se presenta la teoría, los conceptos describen los elementos que forman parte de la teoría, la declaración de relaciones describe cómo están relacionadas las partes de la teoría, y finalmente el alcance, que describe el nivel de generalización que representa la teoría y sus límites. En la segunda parte se hace una breve evaluación del resultado de la investigación en base a varios factores de calidad como parsimonia, exhaustividad, utilidad, exactitud, grado de precisión y consistencia. La tercera y última parte del capítulo dedicado a la discusión hace una breve reflexión sobre el posicionamiento del resultado en el entorno de la teoría de la ciencia, ya que argumentamos que la falta de una base teórica estable es una de las mayores debilidades de la ciencia de la ingeniería de software que tratamos de consolidar con esta tesis. Finalmente, el capítulo 7 expone un resumen y describe un posible camino para profundizar esta rama de investigación. El inicio del resumen parte de una definición del objetivo de esta tesis partiendo del estado del arte de la reusabilidad y la importancia de los artefactos para la reutilización de software. Reitera que el dominio de la reutilización de software no solo carece de una base teórica sino también de un procedimiento científico para constituir este fundamento. Se resume la propuesta de la tesis para afrontar este defecto y sus orígenes científicos, consistiendo en la metodología compuesta y el resultado obtenido, y la evaluación de este resultado. Finalmente se proponen vías para seguir investigando a partir del resultado expuesto, con el fin de no solo analizar el estado de los artefactos pero ampliarlo con reglas y orientaciones concretas sobre su aplicación práctica.
© 2008-2024 Fundación Dialnet · Todos los derechos reservados