Figure 3: Software categories (a) in general (Siedersleben,
2004) and (b) adjusted for generative software.
CardGameGUI and Swing, it is a mixed form of these
two categories.
Now, having these categories, appropriate com-
ponents can be found. For example, a compo-
nent SheepsHeadRules in the category SheepsHead,
CardGameInfo and VirtualPlayer in CardGame,
CardGameInfoPresentation for CardGameGUI.
Considering this example, it can be seen that be-
side the 0 category, three other categories can be iden-
tified that exist in most software systems (see Fig. 3a):
• Application (A): containing only application
software, i.e., CardGame, SheepsHead and
CardGameGUI
• Technical (T): containing only technical software,
e.g. Java Swing classes.
2
• Combination of A and T (AT): e.g.
CardGameGUI-Swing because it refines both an
A (CardGameGUI) and a T (Swing) category.
3
(Siedersleben, 2004) summarizes the characteris-
tics and rules for the software categories as follows:
the categories are partially ordered, i.e., every cate-
gory can refine one or more categories. The emerging
category graph is acyclic. The category 0 (Zero) is
the root category, containing global software. A cat-
egory C is pure, if there is only one path from C to
0. Otherwise, the category is impure. In Fig. 3a only
the category AT is impure, because it refines the two
categories A and T. All other categories are pure.
Terminology
We call a class that has the category C a C-class. Fol-
lowing from the category graph in Fig. 2 there are:
AT-classes, A-classes, T-classes and 0-classes. For
2
Note that Swing classes are global (belonging to the
JDK) and well-tested; hence meet the criteria of the cat-
egory 0. But –as usually the user-interface should be
exchangeable– Swing classes are not necessarily global in a
specific software system.
3
In (Siedersleben, 2004) also the Representation (R) cat-
egory is presented. This category contains only software for
transforming A category software to T and vice versa. It is a
kind of cleaner version of AT. To demonstrate our approach,
the R category can be neglected.
the sake of readability, we do not explicitly mention
interfaces, albeit what applies to classes applies to in-
terfaces as well.
3 CATEGORIES FOR
GENERATIVE SOFTWARE
While (Siedersleben, 2004) aims for finding compo-
nents from the defined software categories, the goal
of this paper is to determine whether a specific class
should be generated or not by analyzing its depen-
dencies to other classes.
To illustrate this, consider the following example.
When having a class Book and a class Jupiter, which
of these classes are generation candidates? Of course,
it depends on the domain. If the domain is about plan-
ets, probably Jupiter is a candidate. In a carrier
media domain, Book would be a candidate. So, we
can say, that a generation candidate somehow relates
to the domain. But this condition is not enough. In
a library domain where different books exist, Book
would rather be general for the whole domain and
should probably not be generated at all. Hence, addi-
tionally to the domain affiliation, a generation candi-
date is not general for the whole domain. Technically
speaking, the class or interface should depend on a
specific model (or model element). Consequently, a
change in the model can imply the change of the gen-
erated class. Usually, classes that are global for the
whole domain are not affected by changes in a model.
We adjusted the category model in Fig. 3a to bet-
ter fit in with the domain. Fig. 3b shows the modified
category model.
The category A from Fig. 3a is renamed to D (Do-
main), to emphasize the domain. Consequently, the
mixed form AT (Application and Technical) becomes
DT (Domain and Technical). Category T remains un-
changed. The new category DG (domain global) indi-
cates software that is global for the whole domain and
helps to differentiate from D-classes that are specific
to the domain (a particular book, e.g., CookBook).
Because of the introduction of DG, the character-
istic of the 0 category changes somewhat. It contains
only global software that is well-tested and indepen-
dent of the domain, e.g., java.lang and java.util
of the JDK. To highlight the difference to the initial 0
definition, 0’ is used.
With the above objective in mind and upon search-
ing for generation candidates, in particular, classes of
the category D are interesting, i.e., D itself and DT,
refining the category of both D and T (see Fig. 3b).
The matrix in Fig. 4a underscores which software
category results if two categories are combined. A
MODELSWARD2015-3rdInternationalConferenceonModel-DrivenEngineeringandSoftwareDevelopment
500