I received my Ph.D. degree from the School of Information and Computer Sciences at the University of California, Irvine in 2012. I received my Master's degree from the Hong Kong Polytechnic University and received my Bachelor's degree from the Tsinghua University, both in the computer science major.
My research interests include software engineering, software architectures, software product lines, and self-adaptive software systems. My current research focuses on architecture-implementation mapping that automatically processes the architectural model to generate, update, and identify the corresponding implementation in source code to maintain their conformance. This is essential to the wide-scale application of software architectures to address the increasing complexity and variability of modern software systems. My students and I have developed novel techniques, including 1.x-way mapping and 1.x-line mapping, to support evolutions of both single software systems and software product lines. In particular, we built software tools (e.g., xMapper, xLineMapper) to realize these techniques and successfully applied them to real software systems (e.g., Apache Solr).
My research addresses implementing software architecture, maintaining architecture-implementation conformance during architectural evolution, and tracing architectural implementation in source code. The following is a list of research projects that I have worked on.
Architecture-implementation mapping is a process of converting architecture specifications to and from source code with the goal of maintaining their conformance. 1.x-line mapping addresses architecture-implementation mapping during development and evolution of a family of software products that have extensive commonality (i.e., software product line). This is a challenge that fails to be addressed by existing approaches. The 1.x-line approach can trace a product line feature to the architecture and source code, and automatically update the architecture and source code to maintain their conformance when feature changes occur. We implemented an Eclipse-based toolset named xLineMapper to support the approach and conducted a case study with the Apache Solr open-source system. More detailed introduction of 1.x-line mapping can be found in our ICSA 2017 paper and in our ACM TOSEM paper.
A video demo of the xLineMapper tool that we built is available online.
Architecture-implementation mapping is a process of converting architecture specifications to and from source code with the goal of maintaining their conformance. Depending on which artifacts can be manually changed, there are approaches of one-way mapping and two-way mapping. 1.x-way mapping is a new approach that only allows changes to be initiated in the architecture (“1”) and a separated portion of the code (“.x”). Suppression of manual changes of architecture-prescribed code, automatic mapping of specific kinds of architecture changes to code in specific ways, and support for behavioral mappings are three most important features of 1.x-way mapping. We built a tool called xMapper for 1.x-way mapping in the ArchStudio architecture development environment. More detailed introduction of 1.x-way mapping can be found in our ICSE 2012 paper and in our ACM TOSEM paper.
A video demo of the xMapper tool that we built is available online.
ArchFeature is a modeling approach and tool that we developed to reduce the overhead and effort involved in product line architecture modeling. It specifically addresses the difficulty of manually editing and updating guard conditions accompanied with variation points in the PLA (i.e. variability modeling), and the cognition overhead of identifying feature-related architecture elements. ArchFeature extends an existing XML-based architecture description language, xADL and integrates feature specification into the product line architecture model. It then provides tool support to fully automate operations such as variability modeling, development and maintenance of feature-architecture relationships, and derivation of architecture instances for a product of the product line. ArchFeature allows us to easily create and maintain a product line architecture model, so that we can focus on the research on implementation and evolution of product line architectures.
CS 311 - Data Structures and Algorithms: Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021
CS 441 - Software Engineering: Fall 2018, Spring 2019, Fall 2019, Spring 2020
SE 370 - Introduction to Software Engineering: Spring 2021
* SE 451 - Software Requirements and Design: Fall 2019, Fall 2020
* SE 461 - Software Testing and Quality: Spring 2020, Spring 2021
* SE 481 - Software Project Planning and Management: Fall 2020
* New core courses of the Software Engineering Bachelor's Program that I developed and taught.
Erik Anderson is a senior studying Computer Science at CSUSM. He was a volunteer for HappyCoding at the school's annual Super STEM Saturday. When he is not researching or studying, Erik enjoys hiking and photography.
A part of Summer Scholars 2019, Erik is researching an architecture-focused approach to software development. He is using an Eclipse plug in called ArchStudio to break an open source program down into components. By this process Erik hopes to discover any differences compared to conventional software development methods.