Aspect-Oriented Programming (AOP) is recognized as one of the main techniques for separation of concerns. AOP has been used for automatic evaluation of the usability of WIMP applications, with the aim of monitoring events and GUI components and recording data in logs. A weakness of AOP approaches is low semantic value and a low level of abstraction of the results. One possible solution to overcome these limitations is to use an AO framework for assessing the usability of user tasks. However, little research has been devoted the development of AO frameworks from scratch. Although different design and programming patterns are available, insufficient experience has been reported regarding their application in the development of frameworks. This paper presents AJMU, an AO framework for the automatic evaluation of the usability of user tasks in desktop applications. AJMU was developed from scratch, using AO patterns. This paper also reports on experiments involving AJMU's instantiation with real applications.Key words: Usability, framework, aspect-oriented programming, design patterns, Aspect J
INTRODUCTIONAspect-Oriented Programming (AOP; Kiczales et al., 1997) has been used to implement the automatic evaluation of the usability of WIMP applications (Bateman et al., 2009;Holzinger et al., 2011;Humayoun et al., 2009;Shekh and Tyerman, 2010;Tao, 2008Tao, , 2012Tarta and Moldovan, 2006). The predominant approach in this research has been to trace events and the execution of GUI components and store the data in a log, without any context of greater significance. Consequently, the evaluation of usability has little relevance for the evaluator and is not at an appropriate level of abstraction.An AO framework that automatically assesses the different factors of usability (efficiency, effectiveness and satisfaction) for user tasks would be a more appropriate tool. A user task is a unit of analysis that is more relevant and more complex, requiring the implementation of diverse functions, relationships and interactions. Even though popular AO frameworks exist (Spring AOP and JBoss AOP), research on AO frameworks is still in a nascent stage. AOP has primarily been proposed to overcome the weaknesses of OO frameworks (Kulesza et al., 2006;Santos et al., 2007;Vaira and Caplinskas, 2011) and not so much for building frameworks from scratch.When developing a framework rather than an ordinary application, some program constructs or "design elements," are very important. These design elements include abstract modules (classes