MODULARIZING SCIENTIFIC LIBRARIES WITH ASPECT-ORIENTED AND GENERATIVE PROGRAMMING TECHNIQUES

Scientific computing libraries represent complex software that are often difficult to understand, evolve, and maintain. As systems become larger and more complex with additional requirements, they are subject to decay over a period of time, making it increasingly difficult to address changing stakeholder requirements. New approaches for software engineering and programming language design, such as aspect-oriented software development and generative programming, have been investigated recently as effective techniques for improving modularization of software. In particular, aspects have the potential to interact with many different kinds of language constructs in order to modularize crosscutting concerns. This paper presents an analysis of Blitz++, which is a well-known C++ class library for scientific computing. The analysis demonstrates through various examples how aspectoriented and generative programming techniques can be applied in modularizing crosscutting concerns that have been identified in Blitz++. This improves software maintainability by reducing code size and de-coupling crosscutting concerns to enable easier change evolution.

[1]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[2]  Cristina V. Lopes,et al.  A study on exception detection and handling using aspect-oriented programming , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[3]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[4]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[5]  Jeffrey G. Gray,et al.  Reinventing explicit parallel programming for improved engineering of high performance computing software , 2004, ICSE 2004.

[6]  Dennis Gannon,et al.  HPC++: experiments with the parallel standard template library , 1997, ICS '97.

[7]  John R. Gilbert,et al.  Aspect-Oriented Programming of Sparse Matrix Code , 1997, ISCOPE.

[8]  John R. Gurd,et al.  Using AspectJ to separate concerns in parallel scientific Java code , 2004, AOSD '04.

[9]  Olaf Spinczyk,et al.  Generic Advice: On the Combination of AOP with Generative Programming in AspectC++ , 2004, GPCE.

[10]  Jeremy G. Siek,et al.  The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra , 1998, ISCOPE.

[11]  Jeffrey G. Gray,et al.  A technique for constructing aspect weavers using a program transformation engine , 2004, AOSD '04.

[12]  Christoph W. Kessler,et al.  Crosscutting Concerns in Parallelization by Invasive Software Composition and Aspect Weaving , 2006, Proceedings of the 39th Annual Hawaii International Conference on System Sciences (HICSS'06).

[13]  Vladimir Getov,et al.  High-Performance Parallel Programming in Java: Exploiting Native Libraries , 1998, Concurr. Pract. Exp..

[14]  Dennis Gannon,et al.  Active Libraries: Rethinking the roles of compilers and libraries , 1998, ArXiv.

[15]  Markus Schordan,et al.  Parallel object‐oriented framework optimization , 2004, Concurr. Comput. Pract. Exp..

[16]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[17]  Thomas Ledoux,et al.  Aspect-Oriented Software Development , 2003 .

[18]  Mla Citations,et al.  Getting Started with , 2006 .

[19]  Markus Schordan,et al.  A Source-to-Source Architecture for User-Defined Optimizations , 2003, JMLC.