Open ekuiter opened 4 months ago
I do not think that throwing more terms to students is the right way to go here. However, we could do this in Lecture 8 when we compare the different techniques and could provide an overview in terms of a Venn diagramm.
The term SPL is more used as that of a vision and we are not claiming that every technique is actually leading to a product line, especially for the ad-hoc techniques.
Currently, the course promises to teach implementation techniques for software product lines. However, not all presented implementation techniques are specific to software product lines (i.e., they do not fit the definition of a software product line well).
For example:
about:config
implement a lot of variability - but we would not consider Windows or Firefox to be a software product line for this reason.This is somewhat problematic, as I find myself struggling to delineate what a software product line is or is not in the exercise. I also find myself arguing that the lecture presents a somewhat idealized image of a software product line, which does not necessarily correspond to what students will encounter and build in practice.
I think this is mostly a philosophical/semantic issue of terminology and could probably be fixed or at least improved by (briefly) discussing and comparing (for example) the following concepts in the (first?) lecture, for example in a picture (e.g., a Venn diagram):
... and then concluding this philosophical discussion with the remark that we basically consider these all to be the same thing and that we won't distinguish them in the remainder of the lecture. Or even better, we could distinguish them in the remainder of the lecture by fitting them into the picture, respectively (which also enables students to name a kind of variability correctly when they see it).
I think the lecture is currently needlessly restrictive with its titular focus on "software product lines". We actually teach all kinds of techniques for implementing software variability in general, which kind of muddles the concept of what a software product line actually is. In principle, one could argue that the lecture could even be renamed to "software variability" or "configurable systems" (although I probably would not go that far).
(partially inspired by reading Bringing Together Configuration Research: Towards a Common Ground, and other papers arguing/giving up arguing about terminology)