HERRAMIENTAS DE DESARROLLO DE SOFTWARE: HACIA LA CONSTRUCCIÓN DE UNA ONTOLOGÍA Lornel A. Rivas Gerencia de Investigación. Instituto Nacional de Investigaciones Agrícolas. Maracay - Venezuela lornelr@inia.gob.ve Maria Pérez, Luis E. Mendoza y Anna Grimán Laboratorio de Investigación en Sistemas de Información (LISI), Departamento de Procesos y Sistemas, Universidad Simón Bolívar. Apartado Postal 89000, Caracas 1080-A. Caracas - Venezuela. {movalles, lmendoza y agriman}@usb.ve Las herramientas para el desarrollo de software (HIS) desempeñan un importante papel en el desarrollo de aplicaciones. Como parte de la Ingeniería de software (IS), las HIS han experimentado continuos cambios en los últimos años. Por ello, a pesar de la existencia de numerosas herramientas, se hace necesario abordar temas genéricos sobre las HIS, identificar tópicos relevantes y sus relaciones para facilitar su comprensión y análisis. Esta investigación en progreso, utiliza la metodología de Noy y McGuiness para desarrollar los primeros pasos en la construcción de una ontología, que describa conceptos y relaciones de referencia para la investigación en HIS. El artículo parte de las HIS en el contexto de la IS: las disciplinas, las áreas de conocimiento y las herramientas como una capa de la IS, para dar lugar a una exploración mayor sobre las definiciones de HIS, las características que definen sus beneficios y las taxonomías disponibles. Todo ello procura establecer conexiones y motivar una visión de conjunto para su análisis. Palabras claves: Herramientas, ingeniería de software, ontología, desarrollo de software 1. INTRODUCCIÓN Las herramientas de desarrollo de software (HIS) han desempeñado desde sus inicios un importante papel en el desarrollo de aplicaciones. Como parte de la ingeniería de software (IS), las HIS han experimentado también continuos cambios, consecuencia del creciente avance tecnológico propio de los últimos años. Este cambio ha sido un factor con especial influencia sobre la IS, así como también sobre otras disciplinas relacionadas, e impulsa una alta tasa de cambio en las HIS. Actualmente éstas son numerosas y apoyan en múltiples formas diferentes dimensiones del desarrollo de software en general. Así como se dispone en la actualidad de numerosas herramientas, con su respectiva documentación y se cuenta también con diversos trabajos de investigación que revelan los avances en herramientas particulares, existe en la literatura evidencia de que los escritos técnicos genéricos sobre herramientas de ingeniería de software son relativamente escasos [4]. En diferentes contextos, se ha identificado recientemente la pertinencia de canalizar iniciativas de investigación orientadas a la formulación de modelos conceptuales, que apoyen la compresión (y el uso posterior) de las HIS. En este trabajo, que es parte de una investigación en progreso en el área de modelos para herramientas y métodos, se propone la formulación de una ontología, que facilite la identificación de tópicos relevantes a las HIS y sus relaciones, que considere las particularidades que las caracterizan tanto en lo interno como en el marco general de la IS, y que genere a su vez elementos de referencia para futuros trabajos. Por ello este artículo describe en su sección 2 la metodología utilizada para la construcción de la Ontología, en la sección 3 describe las clases y jerarquías correspondientes al ámbito de las HIS y en la sección 4 la relación de las HIS con el proceso de desarrollo. Se cierra con las conclusiones.
2. METODOLOGÍA Según [7] una ontología es una descripción explícita y formal de conceptos en un dominio de discurso. Estos autores en su metodología para crear ontologías, proponen los siguientes siete pasos: 1. Determinar el dominio y el alcance, 2. Considerar la reutilización de ontologías existentes, 3. Enumerar los términos importantes, 4. Definir las clases y su jerarquía, 5. Definir las propiedades de las clases, 6. Definir las relaciones de las clases y 7. Crear las instancias respectivas. En este artículo, no se detallan cada uno de los pasos propuestos. Sin embargo, a continuación se resaltan las actividades realizadas en cada uno de ellos: (1) para encontrar los términos relevantes se identificaron aquellos conceptos comunes de cada definición, así como también los no comunes pero más importantes; (2) para restringir el alcance, se tomaron en cuenta versiones recientes de aspectos asociados a las HIS; (3) no se encontraron ontologías en el tema de esta investigación; (4) los términos importantes son descritos iterativamente a lo largo de este artículo, destacando jerarquías y relaciones; (5) a este nivel no se especifican las propiedades ni se crean las instancias dado que aun no se aplica a ningún caso de estudio. 3. LAS HERRAMIENTAS EN EL CONTEXTO DE LA INGENIERÍA DE SOFTWARE En una visión hacia el desarrollo de una ontología que procure, a partir del modelado, representar un conjunto de temas que son relevantes a las HIS, un mapa conceptual que sirva de apoyo al estudio de estas herramientas en diversos contextos, se organizan un conjunto de aspectos que sirven referencia para su ubicación dentro de un marco ampliado. Desde sus inicios, la IS ha estado relacionada con otras disciplinas de la ingeniería, con las cuales se encuentra en sus propias fronteras (Fig. 1). De acuerdo con IEEE estas disciplinas corresponden a: Ingeniería en computación, Ciencias de la computación, Gestión, Mantenimiento, Matemáticas, Gestión de proyectos, Gestión de la calidad, Ergonomía del software e Ingeniería de sistemas [4]. Así, en el marco de sus propios principios y sin concebirse de manera aislada de otras disciplinas logra abarcar todos los aspectos de la producción del software, desde las etapas iniciales hasta la especificación del sistema [12]. Fig. 1. IS y disciplinas relacionadas. 3.1 Las herramientas como área de conocimiento de la IS Las disciplinas apoyan una visión de contexto externo de la IS. Hacia lo interno, existen también un conjunto de áreas de conocimiento que apoyan la comprensión del alcance y las limitaciones de diferentes temas involucrados dentro de la IS (Fig. 2). Estas áreas de conocimiento son: Requerimientos de software, Diseño de software, Construcción de software, Pruebas de software, Mantenimiento de software, Gestión de la configuración de software, Gestión de la ingeniería de software, Proceso de la ingeniería de software, herramientas y métodos de software, y Calidad de software. De este modo, las herramientas de software y los métodos, integran un área específica de la IS, y como parte este conjunto de áreas en general, contribuye a la producción de software de alta calidad, con bajo costo y en el menor tiempo posible.
Fig. 2. Herramientas como área de conocimiento de la IS 3.2 Herramientas en el ámbito de la IS como tecnología multicapas Pressman plantea una arquitectura general de la IS como una tecnología multicapas [8], esto es, la IS desde una perspectiva que la representa en un conjunto de capas o niveles -que integran a su vez diferentes conceptos - con ciertas relaciones entre ellas. En particular, Pressman presenta a la IS en cuatro grandes capas relacionadas estrecha y dinámicamente entre sí: las Herramientas, los Métodos, el Proceso y el Enfoque de calidad (Fig. 3). Fig. 3. Herramientas como una capa de la IS Enfoque de Calidad. Esta capa establece un apoyo sobre el cual debe sustentarse necesariamente cualquier enfoque de IS [8] y determina una vinculación directa del desarrollo de software con la satisfacción de los requerimientos de los usuarios. La calidad posee dimensiones de proceso y de producto, las cuales requieren la consideración de un conjunto de criterios durante todo el proceso de desarrollo. El Proceso. Esta capa establece una unión para las restantes y permite un desarrollo racional de la IS [8]. Comprende, en un nivel, las actividades técnicas y de gestión dentro del ciclo de vida del software; En un segundo nivel, comprende la definición, implementación, medición, gestión, cambio y mejoras del ciclo de vida en sí mismo [4]. El proceso se sustenta en un enfoque de calidad y está determinado ampliamente por un modelo, o un paradigma en particular. Un modelo, a su vez, es una representación formal de un sistema [10]. En la IS, un modelo de desarrollo se comporta también como una estrategia de desarrollo [8], o como una descripción de un proceso de software que se presenta desde cierta perspectiva [12]. El Método. Un método es una guía general para ayudar al desempeño de una actividad, que puede ser aplicada en diferentes situaciones por personas diferentes [10], es un camino para pensar y/o actuar [2]. En la IS, los métodos indican cómo construir técnicamente el software, se relacionan con las áreas de conocimiento y facilitan la gestión de las actividades. Los métodos, asimismo, tienen dimensiones de eficiencia y de efectividad. En este sentido, para Callaos, Método - al igual que camino - tiene el sentido de proceso y del producto, cualidades que se atribuyen directamente a la calidad del software [2]. Las Herramientas. Todo método tiene uno o varios instrumentos y técnicas asociados a él, con mayor o menor grado de adecuación, lo cual depende generalmente del contexto de aplicación. Instrumento o herramienta, en un contexto metódico, sería aquello que nos permite transportarnos por el método [2]. Así, las herramientas de la IS proporcionan un enfoque automático o semi automático para el proceso y para los métodos.
4. HERRAMIENTAS DE DESARROLLO DE SOFTWARE Actualmente se considera a las HIS como herramientas basadas en computadoras que asisten el proceso de ciclo de vida de software [4]. Este tema está también consolidado en la literatura en la forma de Ingeniería de software asistida por computadora (CASE, por sus siglas en inglés), esto es, software que se utiliza para ayudar a las actividades del proceso de software [12], o software que es utilizado para diseñar y para implementar otro software [12]. Las HIS están diseñadas para apoyar métodos de IS, reduciendo cualquier carga administrativa asociada con la aplicación del método manualmente. Permiten automatizar acciones bien definidas, reduciendo también la carga cognitiva del ingeniero de software, quien debe tener libertad para concentrarse en los aspectos creativos del proceso. Este soporte, se traduce en mejoras a la calidad y la productividad en el diseño y desarrollo de sistemas, [1] [11]. Las HIS automatizan metodologías de software y desarrollo de sistemas y se vinculan con los diferentes conceptos involucrados en el desarrollo (Fig. 4). Fig. 4. Visión ampliada de las herramientas como una capa de la IS 4.1 Mejoras que provee el uso de HIS El soporte que brindan las herramientas al proceso de desarrollo proporciona importantes ventajas para el equipo de trabajo de IS. Estas mejoras se argumentan en términos de los siguientes factores: Apoyan a las metodologías y métodos [1] [5], integrando actividades y propiciando visión de continuidad entre fases metodológicas; Mejoran la comunicación entre los actores involucrados. Les facilita a usuarios, técnicos y equipo, en general, compartir su trabajo [5] y desempeñarlo de forma dinámica e iterativa; Establecen métodos efectivos para almacenar y utilizar los datos generados durante el análisis, diseño y desarrollo [1]. Ello permite organizar y correlacionar componentes de diseño, para accesarlos a través de un repositorio [5]. También facilitan la comprensión a partir de un diccionario de datos y la vigilancia de inconsistencias [1]; Agregan eficiencia al mantenimiento, ya que los programas son construidos sobre las mismas estructuras y estándares [1]. Asimismo, facilitan la conversión automática de programas a versiones más reciente de lenguajes de programación [12]; Automatizan porciones del análisis y diseño tediosas y propensas a error [5], con influencia sobre la generación de código, las pruebas y el control; Facilitan considerablemente la estandarización de los procesos de trabajo y la adherencia a la disciplina de diseño [9]. Estos factores, que resaltan en general los beneficios de las herramientas, se sintetizan en la Fig. 5. En este tema, se resalta la consideración de que los beneficios potenciales sólo pueden ser alcanzados si las HIS son utilizadas de forma correcta [5]. Este es un planteamiento que será especialmente útil al momento de analizar la multiplicidad de herramientas disponibles y determinar los criterios para su selección de acuerdo con la naturaleza del proyecto.
Fig. 5. Mejoras que provee el uso de HIS 4.2 Clasificaciones de las herramientas Las HIS varían ampliamente en número y en el alcance. Establecer una organización, clasificación o taxonomía de las HIS resulta importante para comprender los diferentes tipos de herramientas disponibles y las maneras como soportan a las actividades de proceso del software [5]. Ello puede facilitar también a gestores de proyectos el análisis de los criterios pertinentes según la naturaleza del proyecto, bien sea para la selección de la herramienta como para su uso posterior. Existen diversas formas de clasificación de las HIS. Algunas de ellas son: de acuerdo con las funciones específicas que soportan [12] [8] [6], de acuerdo con las actividades de proceso [3], según los actores a quienes soporta la herramienta [1] [5], según los tópicos que comprenden dentro de un área de conocimiento de la IS [4]. En adelante se exponen las principales perspectivas disponibles en la literatura. De acuerdo con las funciones que la herramienta soporta. En esta perspectiva, las HIS se clasifican de acuerdo con su función específica dentro del proceso de desarrollo [12] [8]. En la literatura se identifican hasta 22 tipos de herramientas clasificadas funcionalmente [8]. Por ello, es importante considerar que las clasificaciones funcionales tienen una intención orientadora, apuntan a mostrar la amplitud de las herramientas y sus aportes a distintas etapas del desarrollo [12], más que a establecer taxonomías rigurosas. De acuerdo con el actor que es soportado por la herramienta. Esta perspectiva, basada en el sujeto a quien soporta la herramienta, las define como: 1) De Alto nivel, que ayudan principalmente a los analistas y diseñadores, permitiéndoles crear y modificar el sistema diseñado [1], con apoyo en un repositorio (una colección de registros, elementos, diagramas, pantallas, entre otros); y 2) De Bajo nivel, utilizadas frecuentemente por programadores y trabajadores quienes deben implementar los sistemas diseñados. Apoyan la generación de código fuente, eliminando el esfuerzo de programación. De acuerdo con el proceso. En esta clasificación se definen tres categorías: Herramientas, Bancos de trabajo y Ambientes. Las Herramientas, ayudan a tareas puntuales y se utilizan a discreción del ingeniero de software para ayudar al proceso; los Bancos de trabajo, agrupan herramientas que mantienen algún grado de integración y soportan a un método que incluye un modelo del proceso [8]; los Ambientes, apoyan a una parte sustancial de los procesos de software, incluyen bancos de trabajo integrados y soportan a los datos, al control y a la integración, así como también al proceso en su dimensión mas general [3]. En la práctica, los límites entre estas clasificaciones son difusos [8], lo cual contribuye al argumento de que no es fácil ubicar una herramienta utilizando una clasificación particular. En la Fig. 6 se representan estas tres perspectivas, en una manera bastante general (razón por la cual las HIS funcionales no se describen en detalle).
Fig. 6. Clasificación de HIS desde diferentes perspectivas Tópicos de las herramientas, como sub área de conocimiento de la IS. A modo de cierre en este tema, resulta pertinente tomar en cuenta la definición de los tópicos relativos a las herramientas de IS [4]. En esta clasificación existe un conjunto de herramientas dentro de cada tópico, cuyo campo de acción se asocia no sólo con las actividades propias de cada uno de estos, sino también se considera el caso de herramientas que prestan soporte con un carácter transversal, como el caso de las herramientas misceláneas (Fig. 7). Fig. 7. Tópicos de las HIS, como sub área de conocimiento de la IS Con la intención de procurar una visión global de estas perspectivas, se presenta en la Fig. 8 una expresión integradora de las mismas. Si bien en la Fig. 8 no se representan con detalle todos los tipos de HIS a los cuales se ha hecho referencia en este trabajo - dado su número - se resalta la oportunidad de establecer relaciones y motivar el análisis, como aporte al proceso de conformación del mapa conceptual. Fig. 8. Visión global de las perspectivas de clasificación de las HIS.
CONCLUSIONES En este artículo se propone una visión global de las HIS, que facilita la comprensión de los temas que se abordan en esta primera etapa de investigación, y posteriormente los que sean agregados y debidamente relacionados durante la construcción de la ontología. Esta facilitará, asimismo, elementos de referencia para el análisis contextual de características de las HIS, como apoyo a las actividades del equipo de desarrollo de proyectos de IS. La revisión bibliográfica muestra que las HIS, junto con los métodos, constituyen un área de conocimiento específica de la IS, que es a su vez parte de un conjunto de disciplinas de la ingeniería en diversa forma relacionadas. En este contexto, las HIS contribuyen a la producción de software de alta calidad, con bajo costo y en el menor tiempo posible. Las HIS están diseñadas para poyar métodos de IS, reduciendo la carga administrativa y cognitiva de las personas. Traen consigo importantes mejoras a la calidad y la productividad en el diseño y desarrollo. Sin embargo, los beneficios potenciales serán logrados sólo si las HIS se utilizan en forma correcta. Existen además diferentes perspectivas para el estudio de las HIS, las cuales tienen un carácter orientador, y su estudio debe tener en cuenta diversos factores asociados al proyecto. AGRADECIMIENTOS Resulta importante destacar que este artículo se enmarca en un proyecto nacional (FONACIT S1 2005000165), el cual se orienta a la elaboración de métodos y modelos de desarrollo de software que contribuyan a mejorar los procesos productivos de empresas venezolanas que desarrollan software, así como también a mejorar la calidad de sus productos. Se expresa una nota de agradecimiento a los actores que apoyan y que hacen parte de este proyecto, en cuyo marco se desarrollan en la actualidad importantes iniciativas. REFERENCIAS 1. Alter,S. (2002). Information systems. The foundation of e-business. (4th. ed.). USA: Prentice Hall. 2. Callaos, N. (1995). Metodología sistémica de sistemas. Conceptos y aplicaciones. Trabajo de ascenso a la categoría de titular. Venezuela : Universidad Simón Bolívar 3. Fuggetta, A. (1993). A classification of CASE technology. Computer. Publication, 26 (12), 25-38. 4. IEEE (2004) Guide to the software engineering body of knowledge SWEBOK. A project of the IEEE Computer Society Professional Practices Committee. USA: IEEE computer Society 5. Kendall; Kendall (2002). Systems analysis and design (5th ed.) USA: Prentice Hall. 6. Martin, E., Brown, C., De Hayes, D.; Hoffer, J.; Perkins, W. (2004); Managing information technology (5th. ed.) USA: Prentice Hall. 7. Noy, N. y McGuinness, D. (2001) Ontology Development 101: A Guide to Creating Your First Ontology. in Protege Documentation. Stanford University: Stanford, CA. 8. Pressman (2005). Ingeniería del software (6ta ed.). España: McGraw-Hill. 9. Premkumar, G., Potter, M. (1995) Adoption of computer aided software engineering (CASE) technology: an innovation adoption perspective. Data base advances. 26 (2y3), 105-124. 10.Rumbaugh, J (1998). OMT Insigh. Perspectives on modeling from the Journal of Object-Oriented Programming. England: Cambridge University Press. 11.Sharma, S y Rai, A (2000). CASE deployment in IS organizations. Communications of the ACM, 43(1), 80-88. 12.Sommerville (2005) Ingeniería del Software (7ma. ed.) España: Pearson Educación 13.Whitten, J., y Bentley, L. (2004).Systems Analysis and Design Methods. (6 th. ed.) USA: McGraw Hill.