Analysis and Design of Metrics for Aspect Oriented Systems
Avadhesh Kumar, Rajesh Kumar, P. S. Grover · Shodhganga · 2010
Aspect-Oriented Software Development (AOSD) is a relatively new programming paradigm, which encapsulates concerns that crosscut the modularity of traditional programming mechanisms such as Module-Oriented (MO) and Object-Oriented (OO). The concern that crosscuts the modularity of traditional programming mechanism is known as a crosscutting concern (Garcia et al., 2004). Examples of crosscutting concerns include logging, tracing, caching, security, resource pooling etc. The ability to modularize such concerns is expected to improve parallel development, comprehensibility, reuse, ease of change, reducing development costs, increasing dependability and adaptability. According to Alexander (2003), among the claimed benefits of this new technology is the reduction in the amount of code written and higher cohesion. There are many Aspect-Oriented Programming languages available in the industry, for exampleAspectJ (a Java extension), AspectC (a C extension), AspectC++ (a C++ extension), AspectXML (a XML extension), CaesarJ and Hyper/J (being used by IBM). However, AOSD still faces several problems. Quantitative assessment of some of the important characteristics such as modularity, maintainability, reusability, complexity and the overall quality of Aspect-Oriented (AO) technology is fairly unexplored. OO technology has matured enough and many quantitative models are available to determine various characteristics of this technology. But very few existing evaluations have been performed at qualitative and quantitative levels in AOSD. Since AO has some additional features from OO technology, there is a need to develop quantitative models to determine above said important characteristics of AO technology. In present study, our focus is on those AO languages that have features of Java and AO technology. In this category, we have selected AspectJ, CaesarJ and Hyper/J AOP languages. The proposed metrics in present work will be applicable to Java,