SPin is a tool that helps software developers who are using the CASE-Tool Fujaba. It provides the ability to automate tasks and to view models from different point of views. Additionally it helps in reverse engineering of metamodels that have been implemented with the programming language Java.
SPin provides basic support for Stratification. It provides an annotation metamodell that can be used to annotate model elements in Fujaba. These model elements can, e.g. be elements from the UML metamodel. As Fujaba is extendible by a plugin-mechanism, own model elements can be attached to Fujaba, that then can be annotated with SPin.
An annotation is an abstract markup that represents a pattern (e.g., a GoF design pattern, like Singleton, Visitor or Observer) or a system aspect. Those annotations can be refined to a more concrete specification and then be exported to Java code.
A transformation process is defined in a transformation rule that can be created with SPin. Some predefined rules already exist and are ready-to-use.
SPin is able to create UML classes from corresponding Java classes. This mechanism allows to create a graphical representation of a Java class that exists as Java bytecode.