Está en la página 1de 5

Estrategias para Relacionar el Dominio del Problema con el

Dominio del Programa para la Comprensión de Programas


José Luis Albanes Mario Marcelo Berón
Departamento de Informática Departamento de Informática
Universidad Nacional de San Luis Universidad Nacional de San Luis
San Luis – Argentina San Luis – Argentina
email: jlalbanes@gmail.com email: mberon@unsl.edu.ar
Pedro Rangel Henriques Maria João Pereira
Departamento de Informática Departamento de Informática
Universidade do Minho Instituto Politécnico de Bragança
Braga – Portugal Bragança – Portugal
pedrorangelhenriques@gmail.com mjoao@ipb.pt

Resumen de Software a Fin de Facilitar su Comprensión. Qui-


xote es un proyecto bilateral entre Argentina y Por-
La comprensión de programas es una disciplina tugal que está avalado por el Ministerio de Ciencia,
de la ingenierı́a de software cuyo propósito funda- Tecnologı́a e Innovación Productiva de la Nación
mental es simplificar al programador la tarea de en- Argentina (Mincyt) y la Fundação para a Ciência e
tender programas. Uno de los principales desafı́os Tecnologı́a de Portugal (FCT). En dicho proyecto
en el área de Comprensión de Programas consiste participan la Universidad Nacional de San Luis y
en relacionar dos dominios muy importantes como la Universidad de Minho. Entre las tareas realiza-
lo son: el Dominio del Problema y el Dominio del das en el contexto del proyecto Quixote se encuen-
Programa. El primero hace referencia a la salida del tran diferentes misiones de investigación realizadas
sistema y el segundo a las componentes del progra- desde Argentina hacia Portugal y viceversa. Todas
ma utilizadas para producir dicha salida. En este las misiones realizadas han sido solventadas por el
artı́culo se presenta una lı́nea de investigación cuya Mincyt y la FCT. Se prevé en que en el transcurso
principal finalidad es el estudio, análisis, creación de este año y a inicios del dos mil doce la realiza-
y desarrollo de estrategias de interconexión de do- ción de dos misiones de investigación. En la primera
minios que faciliten el entendimiento del software. docentes de la Universidade do Minho visitarán la
Este artı́culo se centra principalmente en aquellas Universidad de San Luis para establecer un punto
que relacionan el dominio del problema con el do- de situación de las investigaciones realizadas. En
minio del programa. la segunda docentes de la Universidad Nacional de
Palabras Clave: Comprensión de Programas, Do- San Luis, particularmente del Área de Programa-
minio del Problema, Dominio del Programa. ción, Metodologı́as y Desarrollo de Software, visi-
tarán la Univerisdade do Minho para elaborar los
informes correspondientes al cierre del proyecto. Es
1. Contexto importante notar que la Universidad de San Luis
y la Universidade do Minho mantienen un vı́nculo
Este trabajo se encuentra enmarcado en el con- de amistad y laboral desde hace aproximadamente
texto del proyecto Quixote: Desarrollo de Modelos cinco años y por lo tanto Quixote es otro resultado
del Dominio del Problema para Inter-relacionar las fructı́fero del vı́nculo establecido entre ambas ins-
Vistas Comportamental y Operacional en Sistemas
tituciones. desarrolladores o arquitectos de software. Existen
Para finalizar esta descripción, es importante muchos productos destinados a facilitar la com-
mencionar que Quixote surge como iniciativa de los prensión de software [BHU07]. Sin embargo, en mu-
integrantes del proyecto de investigación: Ingenierı́a chas situaciones, no es claro como las teorı́as cog-
de Software: Conceptos, Métodos y Herramientas nitivas, estrategias de visualización y extracción de
en un Contexto de Ingenierı́a de Software en Evo- la información se instancian en dichos productos
lución y del Grupo de Procesamiento de Lenguajes [SFM, Ext02, NG84].
de la Universidade do Minho. Ambos grupos tienen
una trayectoria exitosa en el contexto de la realiza-
ción de trabajos conjuntos que implican: la elabo- 2.1. El Desafı́o para la Comprensión
ración de: tesis, publicaciones y proyectos (Quixote de Programas
es fruto de esa experiencia).
Actualmente se han realizado muchos trabajos
que intentan facilitar la Comprensión de Progra-
mas [Sto05]. Esos trabajos presentan interesantes
2. Comprensión de Progra- estrategias que exploran y visualizan el Domino del
mas Programa dejando al programador la tarea de in-
terpretar la tarea que realizan en el Dominio del
La comprensión de programas se traduce en la Problema. También se pudo comprobar que son es-
habilidad de entender una pieza de código escrito casas las estrategias que intentan vincular (aunque
en un lenguaje de alto nivel. Un programa no es sea débilmente) ambos dominios [LF94, SWM].
más que una secuencia de instrucciones que serán Por lo expuesto en el párrafo anterior se puede
ejecutadas de forma tal que se garantiza una de- afirmar que el principal desafı́o en esta área con-
terminada funcionalidad. El lector de un programa siste en Relacionar correctamente el Dominio del
consigue extraer el significado del mismo cuando Problema con el Dominio del Programa. En otras
comprende de que forma el código cumple con la palabras lo que se pretende relacionar es la salida
tarea para la cual fue creado [Wal02]. del sistema (Dominio del Problema) con las com-
El área de comprensión de programas es una de ponentes de software utilizadas para producir dicha
las más importantes de la Ingenierı́a del Softwa- salida (Dominio del Programa).
re, porque es necesaria para tareas de reutilización, Una forma de concretar la relación mencionada
inspección, manutención, migración y extensión de previamente, consiste en reconstruir la relación real
sistemas de software [VMV95, SFM, EKS01]. Pue- entre el Dominio del Problema y el Dominio del
de también ser utilizada en áreas como ingenierı́a Programa, por medio de una relación virtual. Para
reversa o en ıa enseñanza de lenguajes de programa- alcanzar este objetivo se debe: i) Construir una re-
ción. La tarea de comprensión de programas puede presentación del Dominio del Problema; ii) Cons-
tener diferentes significados y puede ser vista des- truir una representación del Dominio del Progra-
de diferentes perspectivas. El usuario puede estar ma y iii) Definir un Procedimiento de Vinculación.
interesado en como la computadora ejecuta las ins- La aproximación descripta anteriormente se puede
trucciones con el objetivo de comprender el flujo de conceptualizar como un meta modelo de compren-
control y de datos, o puede querer verificar los efec- sión el cual puede ser instanciado con modelos par-
tos que la ejecución tiene sobre el objeto que esta ticulares de comprensión, los cuales a su vez pueden
siendo controlado por el programa. Considerando ser utilizados como base para la creación de estra-
estos niveles de abstracción, el desarrollo de herra- tegias de comprensión. Esta conceptualización es la
mientas versátiles de inspección visual de código es utilizada para el estudio y creación de estrategias
crucial en la tarea de comprensión de programas. de interconexión de dominios.
La Comprensión de Programas es una discipli- El artı́culo se encuentra organizado como se des-
na que tiene como objetivo, desarrollar Modelos, cribe a continuación. La sección 3 presenta una des-
Métodos, Técnicas y Herramientas basados en un cripción la lı́nea de investigación, sus objetivos y re-
proceso cognitivo y de ingenierı́a con el propósi- sultados alcanzados. Finalmente, la sección 4 men-
to de facilitar el entendimiento del software a los ciona las actividades, relacionadas con la formación
de recursos humanos, llevadas a cabo en el contexto SVSi (Simultaneous Visualization Strategy
del proyecto. Improved): Esta estrategia es una combinación
de SVS y BORS. A través de SVS se puede ob-
servar la salida del sistema y las funciones del
3. Lı́nea de Investigación programa usadas para producir dicha salida.
Dichas funciones, son almacenadas en un ar-
Los investigadores en Ingenierı́a de Software sos- chivo y luego interpretadas por los algoritmos
tienen que: Un programador entiende un programa utilizados por BORS para construir explicacio-
cuando puede relacionar la vista Comportamental nes. Es importante notar que SVSi elimina la
(la salida del sistema), con la vista Operacional (las necesidad de inspeccionar manualmente el Do-
componentes del programa que se utilizaron para minio del Problema, ya que permite visualizar
producir dicha salida). la salida del sistema de estudio sincronizada
La afirmación realizada en el párrafo precedente con la lista de funciones llamadas.
se basa en que dicha relación permite que el progra-
mador pueda localizar rápidamente los objetos del A pesar de los resultados obtenidos, en cuanto a
programa que se utilizaron para una funcionalidad la interconexión de los Dominios del Problema con
especı́fica del sistema de estudio. el Dominio del Programa se refiere, se piensa que
A través del estudio del estado del arte se ha es posible encontrar relaciones más fuertes que las
podido detectar la existencia de algunas estrategias actuales. Con esto se hace referencia a construir
que permiten relacionar el Dominio del Problema un modelo del Dominio del Problema y decorar ese
con el Dominio del Programa [BPOdC10]. Entre modelo con las componentes del programa que im-
esas estrategias se destacan: plementan cada una de sus partes. La no trivialidad
de este proceso llevó al grupo de investigación a
SVS (Simultaneous Visualization Strategy):
profundizar los estudios relacionados con la elabo-
Permite que las componentes de software usa-
ración de estrategias de interconexión del Dominio
das en tiempo de ejecución sean visualizadas
del Problema con el Dominio del Programa con las
mientras el sistema se ejecuta. Una debilidad
caracterı́sticas antes mencionadas.
de esta técnica es la imposibilidad de obtener
explicaciones del comportamiento del sistema
debido a la forma en la que se representa la 3.1. Análisis Comportamental
información dinámica.
El Análisis Comportamental (AC) es una pro-
BORS (Behavioral-Operational Relation Stra- puesta de estrategia de interconexión del Dominios
tegy): Requiere que el sistema sea ejecutado y del Problema con el Dominio del Programa elabo-
que cierta clase de información dinámica, co- rada por el grupo de investigación. AC es una estra-
mo por ejemplo las funciones usadas durante gia muy importante porque provee una solución al
la ejecución del sistema, sea recuperada. Des- problema de vincular un modelo del Dominio del
pués de eso dicha información es procesada por Problema con las componentes del programa que
algoritmos que construyen explicaciones rela- implementan cada una de sus partes.
cionadas con la ejecución del sistema. En esta AC es una estrategia que permite relacionar el
técnica existe una fase de inspección manual Dominio del Problema con el Dominio del Progra-
que recupera nombres de funciones relaciona- ma; utilizando información estática y dinámica del
das con un determinado concepto del dominio sistema de estudio.
del problema lo que introduce complejidades La primera hace referencia a: tipos, variables,
en el proceso de comprensión. Es importante funciones, etc.; definidas en el código fuente del pro-
notar que dicho proceso de inspección se reali- grama. La segunda se centra en la recuperación de
za utilizando la técnica del grep. Está técnica las componentes de software usadas en tiempo de
consiste en buscar palabras claves, por concor- ejecución.
dancia sintáctica, en el código fuente del pro- Para la extracción de información estática se uti-
grama utilizando el comando grep provisto por lizan técnicas de compilación tradicionales. Es decir
los sistemas operativos Linux, Unix, etc. se construye un analizador sintáctico con las accio-
grama. Sin embargo, es posible mejorar esta corres-
pondencia a través de la introducción de represen-
taciones del Dominio del Problema, como por ejem-
plo los Mapas Conceptuales, Modelos de Dominio o
Casos de Uso de UML decorados con las funciones
del sistema que implementan cada concepto.
Para clarificar la idea descripta en el párrafo pre-
cedente, asuma que el sistema de estudio es un
Módulo de simulación perteneciente a un SCADA
(Sistema de Supervisión, control y Adquisición de
datos) y que su mapa conceptual es el que se mues-
tra en la Figura 1. Después (Antes o al mismo tiem-
Figura 1: Mapa Conceptual de un Módulo de simu- po) de la construcción de la representación el pro-
lación perteneciente a un sistema SCADA. gramador puede ejecutar el sistema instrumentado
para concretizar cada concepto. En otras palabras,
el programador usa el sistema para: Seleccionar Au-
tomatismo, adquirir información, encender/apagar
nes semánticas apropiadas para extraer la informa- automatismo, etc. Para cada operación, se registran
ción deseada. las trazas de ejecución y esta información se asocia
Para la extracción de la información dinámica, a cada concepto.
se define un esquema de Instrumentación de Códi- El resultado es una representación del Domi-
go. Esta técnica consiste en la inserción de senten- nio del Problema decorada con las componentes
cias dentro del código fuente del sistema de estudio del programa empleadas para llevar a cabo ca-
con la finalidad de recuperar las componentes del da concepto. El lector puede percibir que la rela-
programa que se utilizaron para producir la salida. ción comportamental-operacional que se alcanza es
Este esquema inserta funciones de inspección que una relación comportamental-operacional con más
muestran los nombres de las funciones ejecutadas semántica. Es posible hacer esta afirmación, por-
por el sistema y otra información que el programa- que el esquema conceptual describe el dominio del
dor considere importante. problema y por cada concepto se muestran las fun-
Básicamente el Análisis Comportamental consis- ciones utilizadas para concretarlo. El mismo pro-
te en: i) Reproducir cada comportamiento del sis- cedimiento se puede aplicar usando herramientas
tema; ii) Registrar las operaciones realizadas y iii) estándares de ingenierı́a tal como los Diagramas de
Procesar la información con el objetivo de recu- Caso de Uso de UML o el Modelo de Dominio. La
perar conocimiento. Por una parte, se utiliza una ventaja de esta aproximación es que los resultados
técnica de intrumentación de código como la des- obtenidos se integran con más facilidad a los pro-
cripta al comienzo de esta sección, para extraer la yectos de desarrollo de software.
información dinámica del sistema. Por la otra, el La implementación de este esquema basicamen-
programador debe ejecutar el sistema y usar todas te requiere de: i) Técnicas de recuperación de las
sus funcionalidades. Para cada funcionalidad, se re- trazas de ejecución; ii) Estrategias de extracción
gistra cada traza de ejecución y se asigna a cada de información estática que brinden información
una de ellas un nombre semántico. más precisa de los datos reportados por el análi-
Cuando se realizan todas las tareas explicadas sis dinámico; y iii) Una herramienta de Modelado
previamente se aplican técnicas de análisis del flu- Conceptual.
jo de ejecución de las funciones que posibiliten la Esta aplicación se puede implementar como parte
extracción de la información más relevante. Con el de una Herramienta de Comprensión de Programas,
procedimiento descrito previamente, el programa- en este caso tal vez sea posible asociar los elemen-
dor tiene solamente las funcionalidades del sistema tos conceptuales con las componentes del programa
aisladas con las componentes del programa asocia- automáticamente, decorando el modelo con infor-
das. El lector puede observar que esta es una clase mación dinámica y estática proveniente del código
de relación entre los Dominios del Problema y Pro- fuente.
4. Formación de Recursos Hu- gram Comprehension, 2002. Procee-
dings. 10th International Workshop
manos on, pages 281–284, 2002.
Actualmente los temas abordados por esta lı́nea [LF94] H. Lieberman and C. Fry. Bridging
de investigación están siendo desarrollandos como the gulf between code and behavior
parte de una tesis de Maestrı́a en Ingenierı́a de in programming. In ACM Conference
Software en la Universidad Nacional de San Luis. on Computers and Human Interface,
Además se está trabajando en conjunto con inte- Denver, Colorado, April 1994.
grantes de otra lı́nea de investigación que se encar-
ga de estudiar técnicas de instrumentación de códi- [NG84] J. D. Novak and D. B. Gowin. Lear-
go. A través del trabajo colaborativo de la lı́nea ning How to Learn. Cambridge Uni-
de investigación aquı́ presentada y la previamente versity Press, 1984.
mencionada se están desarrollando trabajos de li-
cenciatura relacionados con la vinculación del Do- [SFM] M. A. Storey, F. D. Fracchia, and
minio del Problema con el Dominio del Programa Müller. Cognitive design elements to
para faciliar el entendimiento de los sistemas de support the construction of a mental
software. Se espera en el futuro poder extender las model during software exploration.
investigaciones realizadas en esta lı́nea de investi- [Sto05] M. A. Storey. Theories, methods and
gación con el propósito de elaborar tesis de grado tools in program comprehension: past,
y posgrado. present and future. Proceedings of the
13th International Workshop on Pro-
gram Comprehension, pages 181–191,
Referencias 2005.
[BHU07] M. Beron, P. Henriques, and R. Uzal. [SWM] M. A. Storey, K. Wong, and Müller.
Program Inspection to interconnect How do program understanding tools
Behavioral and Operational Views for affect how programmers understand
Program Comprehension. Technical programs?
Report, 2007.
[VMV95] A. Von Mayrhauser and A. M.
[BPOdC10] Mario M. Berón, Maria João V. Pe- Vans. Program comprehension during
reira, Nuno Oliveira, and Daniela software maintenance and evolution.
da Cruz. Svs, bors, svsi: Three Computer, 28(8):44–55, 1995.
strategies to relate problem and pro-
gram domains. In Proceedings of the [Wal02] A. Walenstein. Theory-based analy-
2010 IEEE 18th International Con- sis of cognitive support in softwa-
ference on Program Comprehension, re comprehension tools. In IWPC
ICPC ’10, pages 60–61, Washington, ’02: Proceedings of the 10th Interna-
DC, USA, 2010. IEEE Computer So- tional Workshop on Program Com-
ciety. prehension, page 75, Washington, DC,
USA, 2002. IEEE Computer Society.
[EKS01] T. Eisenbarth, R. Koschke, and D. Si-
mon. Aiding program comprehen-
sion by static and dynamic feature
analysis. In ICSM’01: Proceedings of
the IEEE International Conference on
Software Maintenance (ICSM’01), pa-
ge 602, Washington, DC, USA, 2001.

[Ext02] C. Exton. Constructivism and pro-


gram comprehension strategies. Pro-

También podría gustarte