<?xml version="1.0" standalone="no"?>

<!DOCTYPE Plugin SYSTEM "http://www.upb.de/cs/fujaba/DTDs/PluginList.dtd">

<PluginList name="Stratification and Reverse Engineering">

<Plugin pluginClass="de.tud.SPin.SPin">

	<Name>SPin</Name>

	<Version major="1" minor="5" build="20060320"/>

	<PluginLib>SPin.jar</PluginLib>

	<Source>http://www.klarEntwickelt.de/SPin/download/v1_5/SPin_20060320.zip</Source>

	<Help helpURL="http://www.klarEntwickelt.de/SPin/"/>

	<Vendor>Felix Klar</Vendor>

	<Contact>felix@klarEntwickelt.de</Contact>

	<Kernel major="4" minor="3" revision="2"/>
  
	<RequiredPlugins>
<!--
		<PluginId pluginClass="de.upb.javaast.JavaASTPlugin" major="1" minor="1"/>
		<PluginId pluginClass="de.upb.javaparser.JavaParserPlugin" major="3" minor="1"/>
		<PluginId pluginClass="de.upb.assocdetection.AssocDetectionPlugin" major="1" minor="0"/>
-->
	</RequiredPlugins>

	<Classpath>
		<Path>lib\jreversepro.jar</Path>
	</Classpath>
  
	<Description>

		<ShortDescription>Realization of Architecture Stratification. Reverse
engineering of Java bytecode.</ShortDescription>

		<DetailedDescription>SPin enables Architecture Stratification in Fujaba
and provides a mechanism called 'VMSynchronizer' that is able to reverse
engineer Java bytecode into a UML classdiagram. For that, just create a
UML class with a full qualified name of a corresponding Java class (e.g.
'java.lang.Object'), right click on the UML class and invoke 'SPin -> sync with VM'.

To realize Architecture Stratification, new diagram elements are provided,
namely R(efinement)Annotation and R(efinement)Link. Those elements can be used
by a software-engineer to annotate common diagrams.

Additionally SPin allows developers to define TransformationRules,
which are stored in a library. Rules can be used to transform (annotated) diagrams.
A rule normally checks if an annotation is matched and if so,
it starts a transformation-process. One can create new TransformationRules
which e.g. operate on the Fujaba-UML-Metamodel.

The intention is to use the provided annotations in combination
with a TransformationRule A that makes a diagram more concrete (refinement-step)
and a TransformationRule B (which must be the inverse of A)
that makes a diagram more abstract (reversed refinement-step).

Using this mechanism one has different views on a UMLClassDiagram
and can add/remove aspects and design-patterns to/from a UMLClassDiagram.

Compare a TransformationRule that makes a diagram more concrete
with a stencil or template that can be parametrized
with an ASGElement (like a UMLClass, UMLAssociation, UMLMethod,
UMLAttribute or UMLGeneralization) or any other type (String or number)
This parametrization is realized with RefinementAnnotation and RefinementLink.

Tip: Have a look at the example projects that come with this plugin
to see what you can do with SPin.
		</DetailedDescription>

	</Description>

</Plugin>



<Plugin pluginClass="de.tud.SPin.SPin">

  <Name>SPin</Name>

  <Version major="1" minor="4" build="20050727"/>

  <PluginLib>SPin.jar</PluginLib>

  <Source>http://www.klarEntwickelt.de/SPin/download/v1_4/SPin_20050727.zip</Source>

  <Help helpURL="http://www.klarEntwickelt.de/SPin/"/>

  <Vendor>Felix Klar</Vendor>

  <Contact>felix@klarEntwickelt.de</Contact>

  <Kernel major="4" minor="3" revision="2"/>
  
<!--
  <RequiredPlugins>
    <PluginId pluginClass="de.upb.javaast.JavaASTPlugin" major="1" minor="1"/>
    <PluginId pluginClass="de.upb.javaparser.JavaParserPlugin" major="3" minor="1"/>
  </RequiredPlugins>
-->
<!--
  <Classpath>
      <Path>lib\JavaAST.jar</Path>
      <Path>lib\JavaParser.jar</Path>
  </Classpath>
 -->
  
  <Description>

    <ShortDescription>Realization of 'Architecture Stratification' and reverse
engineering of Java bytecode.</ShortDescription>

    <DetailedDescription>SPin enables Architecture Stratification in Fujaba
and provides a mechanism called 'VMSynchronizer' that is able to reverse
engineer Java bytecode into a UML classdiagram. For that, just create a
UML class with a full qualified name of a corresponding Java class (e.g.
'java.lang.Object'), right click on the UML class and invoke 'SPin -> sync with VM'.

To realize Architecture Stratification, new diagram elements are provided,
namely R(efinement)Annotation and R(efinement)Link. Those elements can be used
by a software-engineer to annotate common diagrams.

Additionally SPin allows developers to define TransformationRules,
which are stored in a library. Rules can be used to transform (annotated) diagrams.
A rule normally checks if an annotation is matched and if so,
it starts a transformation-process. One can create new TransformationRules
which e.g. operate on the Fujaba-UML-Metamodel.

The intention is to use the provided annotations in combination
with a TransformationRule A that makes a diagram more concrete (refinement-step)
and a TransformationRule B (which must be the inverse of A)
that makes a diagram more abstract (reversed refinement-step).

Using this mechanism one has different views on a UMLClassDiagram
and can add/remove aspects and design-patterns to/from a UMLClassDiagram.

Compare a TransformationRule that makes a diagram more concrete
with a stencil or template that can be parametrized
with an ASGElement (like a UMLClass, UMLAssociation, UMLMethod,
UMLAttribute or UMLGeneralization) or any other type (String or number)
This parametrization is realized with RefinementAnnotation and RefinementLink.

Tip: Have a look at the example projects that come with this plugin
to see what you can do with SPin.
    </DetailedDescription>

  </Description>

</Plugin>

</PluginList>
