A Java-based approach for teaching principles of adaptive and evolvable software

Jeff Gray
2004 Science of Computer Programming  
The ability to adapt a software artifact is essential toward handling evolving stakeholder requirements. Adaptation is also vital in many areas where software is required to adjust to changing environment conditions (e.g., the growing presence of embedded systems). Current techniques for supporting adaptability and evolvability can be categorized as static (happening at compile-time or design-time), or dynamic (adaptation during the actual execution of the system). This paper describes a
more » ... -topics software engineering course that uses Java as a foundation for teaching concepts of static and dynamic adaptation. The course surveys Java-related research in the areas of metaprogramming and reflection, aspect-oriented software development, model-driven computing, and adaptive middleware.
doi:10.1016/j.scico.2004.02.005 fatcat:q75rilfmn5eslo2uddw5yx5kny