Técnicas de NLP y WSD Asistiendo Al Desarrollo de Software Orientado a Aspectos Alejandro Rago 1 y Claudia Marcos 2 , 1 Facultad de Ciencias Exactas, UNCPBA, Campus Universitario, Pje. Arroyo Seco (B7001BBO), Tandil, Buenos Aires, Argentina +54 2293 439681/2 arago@alumnos.exa.unicen.edu.ar 2 ISISTAN Instituto de Sistemas Tandil, Facultad de Ciencias Exactas, UNCPBA, Campus Universitario, Pje. Arroyo Seco (B7001BBO), Tandil, Buenos Aires, Argentina +54 2293 439681/2 - ext. 26 cmarcos@.exa.unicen.edu.ar Abstract. El Desarrollo de Software Orientado a Aspectos (DSOA) provee medios sistemáticos para la identificación, modularización, representación y composición de crosscutting concerns en unidades denominadas aspectos. La ingeniería de requerimientos orientada a aspectos intenta identificar los posibles aspectos desde las primeras etapas del ciclo de vida de un sistema. La identificación de los aspectos en esta etapa mejora la traceabilidad entre los requerimientos y artefactos posteriores, facilita una estimación más sencilla del impacto del cambio y, particularmente, reduce el peligro de cambios no esperados en los productos de software. En este trabajo se presenta un enfoque de identificación de aspectos tempranos el cual realiza un análisis sintáctico y semántico de la funcionalidad del sistema especificada por medio de casos de uso. Para identificar los aspectos se utilizan técnicas de NLP (Natural Language Processing) y algoritmos WSD (Word Sense Disambiguation). Keywords: aspectos tempranos, identificación de aspectos, análisis sintáctico y semántico. 1 Introducción El Desarrollo de Software Orientado a Aspectos (DSOA) [1,2] es un paradigma de programación cuya idea principal es proporcionar un soporte avanzado para la separación de concerns (características del sistema) introduciendo una nueva unidad modular denominada aspecto. En un sistema es posible encapsular en unidades funcionales algunos concerns, sin embargo existen otros que atraviesan los módulos correspondientes a la descomposición principal de una aplicación. Ejemplos de dichos concerns son sincronización, persistencia o logging, entre otros. Estos concerns, denominados concerns crosscutting [3], se refieren a factores de calidad o funcionalidad del software que no pueden ser efectivamente modularizados usando las técnicas de desarrollo de software existentes. Lograr una buena separación de concerns [3] desde etapas tempranas del desarrollo de software, como la elicitación de requerimientos y el diseño arquitectónico, es