Show last authors
1 {{info title="Legacy Project"}}
2 KAOM is not maintained anymore and hence not part of any KIELER release.
3 {{/info}}
4
5 title="Project Overview
6 Responsible:
7
8 * [[Miro Spönemann>>url:http://www.informatik.uni-kiel.de/rtsys/kontakt/msp/||shape="rect"]]
9 * Sven Gundlach
10
11 == Introduction ==
12
13 Synthesis of data flow diagrams from annotated C programs (C2DF) is a command line program for the automated generation of data flow diagrams. It use KAOM for generation and the automatic layout provided by KIML.
14
15 == Manual ==
16
17 To work with C2DF you must pass as the first source and a destination directory as an argument. C2DF generates then in the target directory for each annotated source file from the source directory or a subdirectory thereof a //.KAOT//-file. Also, a subdirectory called //xml// will be created in the target directory. This have to be deleted.
18
19 === (% class="alt-edited hps short_text" lang="en" %)General description(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)of annotations(% class="short_text" lang="en" %):(%%) ===
20
21 (% class="short_text" lang="en" %) (%%)To declare annotations, you need to put in a C-comment before the annotated object. This comment will be initiated by ///*// and completed with //*///. Before the start  of each content must be written the keyword //@kaom//. Then follow the individual contents.
22
23 IDs must consist only of a particular character set. These are all signs of the Latin alphabet in uppercase and lowercase letters (//a-z//,//A-Z//), as well as Hindu-Arabic numerals in European notation(//0-9//). In addition, spaces and underscores are allowed. Other characters are replaced internally by underscores //_//. This also applies to the diacritical marks //ä,ö,ü// , and the ligature //ß//. Similarly,it is not allowed to write the Keywords //input:, output~://,// link~://, //content~:// and //toplevel~:// in IDs. According to the ASCII are the characters  32, 48-57, 65-90, 95 and 97-122 allowed in ids.
24
25 Labels can hold all characters, except quotation marks, commas, semicolons, at sign, asterisks with a backslash and backslashes with a asterisk.
26
27 The object names must be identical with the object names in the source code.
28
29 There is no check if IDs are used or defined.
30
31 {{code title="example of an full annotation"}}
32 /*! @kaom
33 input: ID_1 "label", ID_2 "label", ... ;
34 output: ID_1 "label", ID_2 "label", ... ;
35 link: source -> context.target, context.source -> context.target, source -> target, ... ;
36 content: function_1:ID "label", function_2:ID "label", ... ;
37 toplevel: ID "label";
38 */
39 {{/code}}
40
41 === (% class="hps short_text" lang="en" %)Specification(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)of inputs(% class="short_text" lang="en" %):(%%) ===
42
43 The specification of the inputs of an actor must be initiated by the keyword //input~://. Then follows the list of inputs. Each entry must have a unique ID in the actor. Optional behind the ID can be any label in quotation marks. Other entries are separated with commas. The list of all inputs must be terminated with a semicolon.
44
45 {{code title="example for specifying inputs"}}
46 input: ID_1 "label", ID_2 "label", ... ;
47 {{/code}}
48
49 === (% class="hps short_text" lang="en" %)Specification(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)of outputs(% class="short_text" lang="en" %):(%%) ===
50
51 The specification of the (% class="hps short_text" lang="en" %)outputs(% class="short_text" lang="en" %) (%%) of an actor must be initiated by the keyword //output~://. Then follows the list of outputs. Each entry must have a unique ID in the actor. Optional behind the ID can be any label in quotation marks. Other entries are separated with commas. The list of all outputs must be terminated with a semicolon.
52
53 {{code title="example for specifying outputs"}}
54 output: ID_1 "label", ID_2 "label", ... ;
55 {{/code}}
56
57 === (% class="hps short_text" lang="en" %)Specification(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)of (% class="short_text" lang="en" %)data flows:(%%) ===
58
59 (% lang="en" %)
60 (% class="hps short_text" lang="en" %)The specification of the(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)data(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)flows of an(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)actor must be(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)initiated by the keyword(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)//link~://.(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %) Then follows the list of the(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)data flows.(%%) The ID of the source and the ID of the target must be specified for each entry. Source and destination are separated by a right-leaning arrow indicating the direction of data flow. If source or destination are defined in another actor as the data flow, then the ID of the actor of the source or destination must be specified. The ID of the actor is placed directly in front of the ID of the source or target, separated by a dot. Actors, in which source and destination are defined, may not differ by more than one hierarchical level. Other entries are separated with commas. The list of all data flows must be terminated with a semicolon.
61
62 {{code title="example for specifying data flows"}}
63 link: source -> context.target, context.source -> context.target, source -> target, ... ;
64 {{/code}}
65
66 === (% class="hps short_text" lang="en" %)Specification(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)of (% class="short_text" lang="en" %)included actors:(%%) ===
67
68 (% class="hps hps short_text short_text" lang="en" %)The specification of the(% class="hps short_text short_text" lang="en" %) (% class="hps hps short_text short_text" lang="en" %)included actors of an(% class="hps short_text short_text" lang="en" %) (% class="hps hps short_text short_text" lang="en" %)actor must be(% class="hps short_text short_text" lang="en" %) (% class="hps hps short_text short_text" lang="en" %)initiated by the keyword(% class="hps short_text short_text" lang="en" %) (% class="hps hps short_text short_text" lang="en" %)//content~://.(% class="hps short_text short_text" lang="en" %) (% class="hps hps short_text short_text" lang="en" %) Followed by the list of the included actors. Each entry must be specified with the name of its (%%)represented(% class="hps hps short_text short_text" lang="en" %) function in the source code. Followed by a unique ID within the actor, which is separated from the function name with a colon. Optional behind the ID can be any label in quotation marks. Other entries are separated with commas. The list of all(% class="hps hps hps short_text short_text short_text short_text" lang="en" %) (% class="hps hps hps hps short_text short_text short_text short_text" lang="en" %)included actors(% class="hps hps short_text short_text" lang="en" %) must be terminated with a semicolon.
69
70 {{code title="example for specifying included actors"}}
71 content: function_1:ID "label", function_2:ID "label", ... ;
72 {{/code}}
73
74 (% class="almost_half_cell" %)
75 (((
76 === (% class="hps short_text" lang="en" %)Specifying(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)top-level(% class="short_text" lang="en" %) (% class="hps short_text" lang="en" %)actors(% class="short_text" lang="en" %):(%%) ===
77
78 The specification of the top-level actors of a data flow diagram must be initiated by the keyword //toplevel~://. The specification must be placed in the annotation of the represented function. The entry consists of an unique ID in the actor. Optional behind the ID can be any label in quotation marks. The entry must be terminated with a semicolon.
79
80 {{code title="example for specifying top-level actors"}}
81 toplevel:ID "label";
82 {{/code}}
83
84 === (% class="hps short_text" lang="en" %)Special case(%%): ===
85
86 (% class="hps" lang="en" %)
87 It is possible to force data flows in contrary to the general specifications . This is particularly the case when there are multiple top-level actors. The specification of data flows between these actors is set to the specifications of other data flows. For the specification, all predecessors of the actor and the actor itself, which define the source and target, must be specified by IDs. For the specification the path to the source and to the destination must be specified. Both are separated by a right-leaning arrow. A path consists of the ID of the source (or destination) and the ID of the actor, in which it is defined, and the IDs of all textual comprehensive actors. The ID of the defining actors is placed in front of the ID of the source (or destination) and separated by a colon. The IDs of the textual comprehensive actors, are arranged in descending order, placed in front of the ID of the defining actor. (% class="hps" lang="en" %)The IDs(% lang="en" %) (% class="hps" %)of all(%%) actors(% lang="en" %) (%%)in the path are(% class="hps hps" lang="en" %) (% class="hps" lang="en" %) separated from each other by an underscore (%%). Source and destination can differ in more than one hierarchical level. All characters that are replaced with underscores in an ID must also be replaced with underscores in the specifying.
88
89 {{code title="example for specifying a special data flow"}}
90 link: source -> ID0_ID1_ID2_..._ID:target, ... ;
91 {{/code}}
92 )))