Herramientas de Desarrollo de Software: Hacia la Construcción de una Ontología Lornel A. Rivas 1,2, María Pérez 2, Luis E. Mendoza 2, y Anna Grimán 2 1 Gerencia de Investigación, Instituto Nacional de Investigaciones Agrícolas, Avenida Universidad, vía El Limón, Apartado 2103, Maracay, Edo. Aragua, Venezuela lornelr@inia.gob.ve 2 Departamento de Procesos y Sistemas, Edificio de Matemáticas y Sistemas, Laboratorio de Investigación en Sistemas de Información (LISI), Universidad Simón Bolívar, Apartado 89000, Baruta, Caracas, 1080-A, Venezuela {movalles, lmendoza, agriman}@usb.ve Resumen. Las herramientas para el desarrollo de software (HDS) desempeñan un importante papel en el desarrollo de aplicaciones. Como parte de la ingeniería de software (IS), las HDS han experimentado cambios en los últimos años. Aún ante la existencia de numerosas herramientas, es necesario abordar temas genéricos sobre las HDS, identificar tópicos relevantes y sus relaciones para facilitar su comprensión y análisis. Esta investigación en progreso, establece la construcción de una ontología que describe conceptos y relaciones para la investigación en HDS. Parte de las HDS 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 HDS, las características que definen sus beneficios y las taxonomías disponibles. Ello procura establecer conexiones y motivar una visión de conjunto para su análisis. Palabras clave: herramientas, ingeniería de software, ontología, desarrollo de software. 1. Introducción Las herramientas de desarrollo de software (HDS) han desempeñado un importante papel en el desarrollo de aplicaciones. Como consecuencia del avance tecnológico éstas han experimentado también continuos cambios. Así como se cuenta en la actualidad con documentación sobre las numerosas HDS disponibles, y con trabajos de investigación que revelan avances en herramientas particulares, existe también en la literatura evidencia de que los escritos técnicos genéricos sobre HDS son relativamente escasos [4], identificándose la pertinencia de canalizar iniciativas para la formulación de modelos conceptuales, que apoyen la compresión (y el uso posterior) de las HDS.
En este trabajo en progreso, se formula una ontología que identifica los tópicos relevantes de las HDS y sus relaciones y genera elementos de referencia para futuros trabajos. Además de esta introducción, el trabajo presenta en la sección 2 una breve descripción de la metodología utilizada. En la sección 3 y 4 se explica la construcción de la ontología a través del análisis del contexto de la ingeniería de software y de las herramientas el desarrollo, respectivamente. Finalmente, en la sección 5 se exponen las conclusiones obtenidas. 2. Metodología Según [7] una ontología es una descripción explícita y formal de conceptos en un dominio de discurso. A continuación se mencionan las actividades realizadas, en el marco de la metodología propuesta por estos autores [7] para crear ontologías: a) se identificaron conceptos comunes de cada tema, y otros no comunes pero sí relevantes; b) se tomó en cuenta información recientes sobre aspectos asociados a las HDS; c) no se encontraron ontologías sobre este tema; d) los términos importantes son descritos a lo largo de este artículo, destacando jerarquías y relaciones; e) no se especifican las propiedades ni se crean instancias dado que aún no se aplica a ningún caso de estudio. 3. Las Herramientas en el Contexto de la Ingeniería de Software Desde sus inicios, la IS ha estado relacionada con otras disciplinas de la ingenierí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 la IS abarca todos los aspectos de la producción del software [12]. 3.1 Las Herramientas como Área de Conocimiento de la IS Las disciplinas conforman una visión de contexto de la IS. Hacia lo interno, existen un conjunto de áreas de conocimiento que facilitan la comprensión del alcance y las limitaciones de diferentes temas en la IS. Estas áreas son: Requerimientos, Diseño, Construcción, Pruebas y Mantenimiento de software, Gestión de la configuración, Gestión de la ingeniería y del 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 contribuyen a la producción de software de alta calidad, con bajo costo y en el menor tiempo posible. 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], una perspectiva que la representa en un conjunto cuatro grandes capas o niveles -que integran a su vez diferentes conceptos - con ciertas relaciones entre ellas (Fig. 1). Estas capas se describen a continuación: Enfoque de Calidad. Establece el 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. El Proceso. Permite un desarrollo racional de la IS [8] y comprende actividades técnicas y de gestión propias asociadas al ciclo de vida del software [4]. Está determinado por un modelo, una representación formal de un sistema [10]. En la IS, un modelo se comporta también como una estrategia de desarrollo [8]. Fig. 1. Herramientas como una capa de la IS. El Método. Un método es una guía general para ayudar al desempeño de una actividad [10]. En la IS, los métodos indican cómo construir el software. Los métodos tienen dimensiones de eficiencia y de efectividad, sentido del 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 un grado de adecuación que depende generalmente del contexto de aplicación. Instrumento o herramienta, sería aquello que nos permite transportarnos por el método [2]. Así, las HDS 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 HDS como herramientas basadas en computadoras que asisten el proceso de ciclo de vida de software [4], consolidadas 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 o software que es utilizado para diseñar y para implementar otro software [12]. Permiten automatizar acciones bien definidas, reduciendo también la carga cognitiva del ingeniero de software, quien requiere 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 [1, 11]. Las HDS automatizan metodologías de software y desarrollo de sistemas y se vinculan con los diferentes conceptos involucrados en el desarrollo (Fig. 2). Fig. 2. Visión ampliada de las herramientas como una capa de la IS. 4.1 Mejoras que Provee el Uso de HDS El soporte que brindan las HDS al proceso de desarrollo proporciona importantes ventajas para el equipo de trabajo de IS (Fig. 3). Estas mejoras se sintetizan en: a) Apoyan a las metodologías y métodos [1, 5], integrando actividades y propiciando visión de continuidad entre fases metodológicas; b) Mejoran la comunicación entre los actores involucrados, facilitándoles compartir su trabajo [5] y desempeñarlo de forma dinámica e iterativa; c) Establecen métodos efectivos para almacenar y utilizar los datos [1], lo que permite organizar y correlacionar componentes, para accesarlos a través de un repositorio [5]; d) Agregan eficiencia al mantenimiento, ya que los programas son construidos sobre las mismas estructuras y estándares, facilitando la adherencia a la disciplina de diseño [1, 9] y facilitan también la conversión automática de programas a versiones más recientes de lenguajes de programación [12]; y, e) 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. Resalta la consideración de que los beneficios potenciales sólo pueden ser alcanzados si las HDS son utilizadas de forma correcta [5].
Fig. 3. Mejoras que provee el uso de HDS. 4.2 Clasificaciones de las Herramientas Establecer una clasificación resulta importante para comprender los tipos de herramientas disponibles y su soporte al proceso del software [5]. En adelante se exponen las principales perspectivas, o formas de clasificación de las HDS, disponibles en la literatura. 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. 4 se representan estas tres perspectivas, en una manera bastante general (razón por la cual las HDS funcionales no se describen en detalle). Fig. 4. Clasificación de HDS desde diferentes perspectivas. De acuerdo con las funciones que la herramienta soporta. En esta perspectiva, las HDS se clasifican según su función específica dentro del proceso de desarrollo [8, 12]. En la literatura se identifican hasta 22 tipos de herramientas clasificadas funcionalmente [8]. Estas clasificaciones 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 se basa en el sujeto a quien soporta la herramienta, y las define como: a) De Alto nivel, que ayudan principalmente a los analistas y diseñadores, permitiéndoles crear y modificar el sistema [1]; y, b) De Bajo nivel, utilizadas por programadores y trabajadores quienes deben implementar los sistemas diseñados.
De acuerdo con el proceso. En esta clasificación se definen tres categorías: a) las Herramientas, que ayudan a tareas puntuales y se utilizan a discreción del ingeniero de software; b) los Bancos de trabajo, que agrupan herramientas que mantienen algún grado de integración y soportan a un método que incluye un modelo del proceso [8]; y, c) los Ambientes, que apoyan a los procesos de software, incluyen bancos de trabajo integrados y soportan a los datos, al control y a la integración [3]. Tópicos de las herramientas, como sub área de conocimiento de la IS. A modo de cierre, resulta pertinente considerar la definición de los tópicos relativos a las HDS [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. 5). Fig. 5. Tópicos de las HDS, 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. 6 una expresión integradora de las mismas. Si bien en la Fig. 6 no expresa con detalle todos los tipos de HDS 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. 5. Conclusiones En este artículo se propone una visión global de las HDS, que facilita la comprensión de los temas que se abordan en esta primera etapa de investigación, y los que sean agregados y debidamente relacionados durante la construcción de la ontología. Esta expone, asimismo, los elementos de referencia para el análisis contextual de características de las HDS, como apoyo al desarrollo de proyectos de IS. La revisión bibliográfica muestra que las HDS, junto con los métodos, constituyen un área de conocimiento específica y relevante de la IS, que es a su vez parte de un conjunto de disciplinas relacionadas de la ingeniería. En este contexto, las HDS contribuyen a la producción de software de alta calidad, a bajo costo y en el menor tiempo posible. Sin embargo, sus beneficios potenciales serán logrados sólo si las HDS se utilizan en forma correcta.
Fig. 6. Visión global de las perspectivas de clasificación de las HDS. Agradecimientos. Esta investigación fue financiada por el FONACIT, Venezuela, a través del proyecto S1-2005000165. Referencias 1. Alter, S. Information systems. The foundation of e-business. (4th. ed.). USA: Prentice Hall (2002). 2. Callaos, N. Metodología sistémica de sistemas. Conceptos y aplicaciones. Trabajo de ascenso a la categoría de titular. Venezuela: Universidad Simón Bolívar, (1995). 3. Fuggetta, A. A classification of CASE technology. Computer. Publication, 26 (12), (1993), 25-38. 4. IEEE. Guide to the software engineering body of knowledge SWEBOK. A project of the IEEE Computer Society Professional Practices Committee. USA: IEEE computer Society (2004) 5. Kendall; Kendall. Systems analysis and design (5th ed.) USA: Prentice Hall (2002). 6. Martin, E., Brown, C., De Hayes, D.; Hoffer, J.; Perkins, W.; Managing information technology (5th. ed.) USA: Prentice Hall (2004). 7. Noy, N. y McGuinness, D. Ontology Development 101: A Guide to Creating Your First Ontology. in Protege Documentation. Stanford University: Stanford, CA. (2001). 8. Pressman. Ingeniería del software (6ta ed.). España: McGraw-Hill (2005). 9. Premkumar, G., Potter, M. Adoption of computer aided software engineering (CASE) technology: an innovation adoption perspective. Data base advances. 26 (2y3), (1995), 105-124. 10. Rumbaugh, J. OMT Insigh. Perspectives on modeling from the Journal of Object-Oriented Programming. England: Cambridge University Press (1998). 11. Sharma, S.; Rai, A. CASE deployment in IS organizations. Comm. of the ACM, 43(1), (2000), 80-88. 12. Sommerville, I. Ingeniería del Software (7ma. ed.) España: Pearson Educación (2005). 13. Whitten, J., y Bentley, L. Systems Analysis and Design Methods. (6 th. ed.) USA: McGraw Hill (2004).