Multiple inheritance has long been plagued with the “diamond” inheritance problem, leading to solutions that restrict expressiveness, such as mixins and traits. Instead, we ad...
Programming languages are the primary mechanism by which software is created, yet most of us have access to only a few, fixed, programming languages. Any problem we wish to expre...
This paper introduces S.P.L.O.T., a Web-based reasoning and configuration system for Software Product Lines (SPLs). The system benefits from mature logic-based reasoning techniq...
Iterations are time-boxed periods with an intended outcome that is often a set of implemented requirements. Iterations are part of most common software development lifecycle model...
Model evolution is often supported by writing model transformation rules in specialized languages. This presents challenges to those who are unfamiliar with model transformation l...