Thesis topic "Co-evolution for a development stack"
(C) 2015, Software Languages Team, University of Koblenz, Ralf Lämmel
Context
Co-evolution in software development describes the situation in which one software artifact or component in a system needs to co-change in response to changes applied to another artifact or component. Here are examples of the two (or more) artifacts or components that may engage in co-evolution:
- Client versus server in a distributed system (e.g., a web application)
- Object model versus database (e.g., in a system with object-relational mapping)
- Model versus view (in a system with a loosely coupled binding between model and view)
- IOC configuration versus underlying POJOs (e.g., when using frameworks such as Spring IOC)
- Scripts versus components referenced by scripts (e.g., when using batch processing)
Objective
- Find evidence of co-evolution challenges in existing projects
- Classify and characterize these challenges more precisely
- Suggest transformations for automated co-evolution
- Possibly (selectively) formalize and/or implement such transformations
Methodology
One option is to carry out this research as a case study by analyzing either:
- one or more open-source projects, or
- a closed source project, subject to some limited non-disclosure, where necessary.
The actual methodology would (optionally) include elements such as:
- Code analysis in the realm of "mining software repositories" (analysis of commit history)
- Dependency analysis (traceability recovery) between software artifacts
- Interviews with developers to identify some scenarios of co-evolution
- Systematic study of technology documentation and samples
Further reading
- http://dblp.uni-trier.de/rec/bibtex/conf/icsoft/SchinkKSL11
- http://dblp.uni-trier.de/rec/bibtex/conf/csmr/CleveHRH08
- http://dblp.uni-trier.de/rec/bibtex/conf/se/Schink13
Research conferences such as MSR, ICSM, SLE, CSMR, WCRE, ICPC, SANER on DBLP.
page revision: 3, last edited: 14 Nov 2015 15:10