3
<title> Wishes for TCM </title>
8
<P>For a online sortable version of the wishlist please <A HREF="http://www.cs.utwente.nl/~tcm/database/wishlist.php3">look here</A>.</P>
18
Version date : Jan 20, 2003.
19
Last Update : Jan 16, 2003.
20
Author : Henk van de Zandschulp
21
--------------------------------------------------------------
25
--------------------------------------------------------------
27
Every wish has a sequence number and every wish is annotated with
28
a priority 0, 1, 2 or 3. These priorities mean:
30
(0): is done. These are listed in the file Wishlist.done in
31
the order by which they are done.
33
(1): should _not_ be done, with explanation why.
35
(2): should be done (low priority).
37
(3): should be done (high priority).
39
Wishes with a 2 or 3 are real wishes. These wishes are in one of the
42
A. Distribution and porting of TCM.
44
C. Features for existing editors. These have the sub-categories:
46
C2. Only for table editors.
47
C3. Only for diagram editors.
48
C4. For specific diagram editors.
49
C5. Only for tree editors.
53
Wishes labeled 0 and 1 can be found in the file WishList.done.
57
----------------------------------
59
233(2) Make compilations for other Unixes such as HPUX, IRIX, AIX and OSF/1.
61
239(3) Send announcement to every site/newsgroup that has info about TCM
62
(or should have info about TCM) that TCM 2.0 exists:
63
news:comp.os.linux.announce
64
http://www.slashdot.org
65
http://www.linuxtoday.com
67
already listed, send update:
68
http://www.icewalkers.com
69
http://SAL.KachinaTech.COM
70
http://www.appwatch.com
71
http://www.freshmeat.net
72
http://www.lesstif.org
73
http://www.linuxapps.com
74
http://www.fokus.gmd.de/linux/linux-softw-xappl.html
75
http://stommel.tamu.edu/~baum/linuxlist/linuxlist
76
http://www.execpc.com/lsm/LSM
77
http://www.linuxlinks.com
80
http://www.software-engineer.org
81
http://www.objectsbydesign.com/tools/umltools_byPrice.html
82
http://www.linuxberg.com
83
http://download.cnet.com
86
B. Building new editors.
87
--------------------------------------
88
* worked out further some place else in a requirements & design document *
92
- Static Structure Diagrams (TSSD)
94
- Use-case Diagrams (TUCD)
98
- Activity Diagrams (TACD)
100
- Collaboration Diagrams (TCBD)
102
- Sequence Diagram (TSQD)
104
- Component Diagram (TCPD)
106
- Deployment Diagram (TDPD)
110
C. Updates and extensions to existing editors.
111
--------------------------------------------------------
114
--------------------------------------------------------
116
007(2). The user can save a configuration file from TCM. Configuration
117
changes will be stored in this personal file (.tcmrc) and these will
118
be loaded automatically on startup of an editor.
120
082(2). Tasks which only can be performed with the use of the mouse should
121
also be performable by a keystroke (or a combination of keystrokes).
123
088(2). Show/Save/Print the annotations of all (selected) shapes or cells
124
at once (show in text-window, save/print apart from the drawing).
126
139(2) Add extra entries to the configuration file tcm.conf for the
127
user interface colors and fonts (instead of the separate file with
130
169(2). Possibility to change the page margin width/height on printing
131
(set the minimal distance between the diagram or table and the page boundary).
133
186(2). Testing on name equivalence: ignore white spaces (space, tab, newline)
134
at the beginning and the end of a name. Every sequence of more than one
135
white space is equivalent to a single space. Uses implementation item 252.
137
191(2). Combine all printer options in one dialogue window (instead of all
138
these different menu items). I.e. printer name, #copies, print command (and
139
other related commands), tumbled, duplex, banner etc. in one
142
194(2). Printing from a text dialog uses the external programm text2ps. This
143
should be replaced by something more powerful, for the options of text2ps
144
are rather limited (e.g. no support for colors, fonts or alignment).
145
Uses implementation item 253.
147
195(2). All coordinates should be floats (real numbers) instead of integers.
149
210(2). Make the menu under button-3 context-sensitive in the editor. In the
150
"background" the current Edit menu should be displayed, but clicking button-3
151
above a shape/cell, only a relevant set of commands for this particular
152
shape or cell should be displayed.
154
220(2). Specify colors also by red-green-blue value (instead of by color name)
155
in the color chooser. Colors will also be written in the TCM files as
156
"#RRGGBB" (because not every possible color has a name). Users can then
157
specify a color by three sliders in the color chooser dialog (in addition
158
to the current method of choosing colors from a fixed list of color names).
159
The preview immediately shows the color associated with the slider values.
161
221(2). Implement bubble-help labels with multiple lines of text (now
162
we have only single lines).
164
229(2). Undo/Redo for Load and New. This means also that Load and New
165
become command classes.
167
306(2). Undo/Redo for Update Node/Edge/Cell annotation.
169
243(2). Implement drag and drop of shapes and subjects (extension of the
170
cut-paste buffer) between two different editor processes (now it only
171
works within the same editor process). It should at least work for
172
editors of the same type and also for editors with similar subjects
173
such the two tree editors and between the different table editors.
175
244(2). Make a prototype of some simple code-generator from a TCM-file. It's
176
a set of extendable parser+generator classes for the TCM file format that
177
can be extended by other users with specific needs.
178
Possible languages to generate are XML, HTML, C++, Java, SQL, ASCII.
180
249(2). Set text font, text color and text alignment in the text edit
181
window (= the text window used for outline editing).
183
270(2). Read the fonts that can be used in TCM from a font definition file.
184
This makes it possible to extend TCM with Palatino, Lucida and
185
others that are not available on every system.
187
280(2). File locking mechanism. A document file that is being edited by
188
some editor can only loaded read-only by another editor process
189
(overriding should still be possible and removing the lock too).
191
284(2). New print option: print current (chosen) page in the drawing
192
area or print all the pages in the drawing area.
194
289(2). Cut+paste of (parts) of text labels via the Motif cut-paste buffer
195
(just like you can do within the motif textfields such as the document
198
290(2). Connection of TCM with BSCW (groupware) system.
200
291(2). Startup online HTML user manual pages in Netscape from the
203
300(2). Export to Fig format 3.2 instead of the older 3.1 format.
205
296(2). Add possibility to export diagrams in XML format.
207
308(2). All editors should be expanded with the UML Notebox symbol, which can
208
be connected to all Nodes and Edges by means of a Dashed Line.
210
309(2). Add option to transform the Inline Editor into a Form Editor, adjusted
211
to the Shapetype being edited. Default this option will be "Inline
212
Editor", but can be set to "Form Editor" when needed.
213
Every shape has at least a comment field. Some examples :
214
For a relationship line, the following fields can be specified :
215
Name / RoleName1 / Constraint1 / RoleName2 / Constraint2 / Comment
216
For a class, the following fields can be specified :
217
Name / Multiplicity / Stereotype / Properties /
218
Attributes (list) / Services (list) / Operations (list) /
219
Signal receptions (list) / Comment
220
Each editable field should have a corresponding Liteclue help text
223
310(2). Add possibility to export diagrams in GIF/JPG/TIFF/PDF format.
225
311(2). TCM preferences file should be editable from within TCM.
227
312(2). TCM preferences should be adjustable online within a single TCM session.
229
313(2). Add possibility to merge all selected duplicate nodes into
230
one (== first selected) node.
232
314(2). Show duplicate nodes with a number in their upper left corner,
233
e.g. "(3)" or :"(3/5)" instead of "*".
235
315(2). Option "Document | View Source" should always be possible. The source
236
being viewed should reflect the state of the current document being
237
edited, not just the state of the version last saved to disk.
239
338(2). The menu entry to set and unset headers and footers is hard to find.
240
Redesign the menu structure in order to give it a more visible position.
242
343(2). Add small "Drawing Area Overview" Window to TCM editor windows
243
(like the small "Desktop Windows" of some window managers at the
244
bottom of the screen), showing the position of the visible area
245
within the whole canvas.
248
C2. Changes regarding all table editors.
249
----------------------------------------
251
029(2). Span a rectangle of two or more selected adjacent cells to one
252
large cell. The text will be aligned as if only a single cell exists.
253
The text of the left-upper cell remains visible. The other cells will
256
030(2). Unspan a spanned cell.
258
031(2). Hide all text protruding ('sticking out') from a cell (when
259
autoresizing is off). Some mark (e.g. a small arrow or scrollbar) should
260
be added to the cell, indicating that the cell contains more text than
263
032(2). Add a caption text at the bottom of a table.
265
034(2). Row and column numbers should remain visable when a table is scrolled.
266
Currently only numbers at the first and last row/column are displayed.
268
136(2). Outer left column and uppermost row remain visable, even after
269
scrolling (row/column numbers as well as row 0 and column 0 itselves).
271
143(2). In the outline editor the text part of the edit window should be
272
about the same width as the cell itself. In this way you can anticipate
273
whether your changes will eventual result in a table resize or not.
275
145(2). Fixed column width (only autoresize of row height).
276
As an option all text protruding will be hidden (see 031) or the
277
text height will be adjusted, eventually using some kind of text
278
abbreviation algorithm.
280
146(2). Fixed row height (only autoresize of column width).
281
As an option all text protruding will be hidden (see 031) or the
282
text width will be adjusted, eventually using some kind of text
283
abbreviation algorithm.
285
147(2). Pack table operation: apply autoresize to all rows and columns.
287
150(2). Horizontal table split (the right part of the table will be placed
288
below the left part of the table). As an option the left column can be
289
copied completely too.
291
151(2). Vertical table split (the bottom part of the table will be placed
292
to the rigth of the upper part of the table). As an option the upper
293
row can be copied too.
295
152(2). Optional double text entry (with a slash) in cell(0,0).
297
162(2). Table mirror-operation in diagonal running from the left top to the
298
right bottom of the table.
300
164(2). Implement fill colors for table cells.
302
197(2). Implement line colors for line pieces.
304
217(2). Implement text colors for cell texts.
306
228(2). Underlined texts in table file format.
308
264(2). Hide selected rows or columns (without deleting them).
310
265(2). Show bitmap/pixmap (read-in from a file) in the table cells
313
267(2). Make the drawing area so that it only shows the table.
314
It's not necessary to show much "white space" like in the
317
287(2). Move/copy multiple cell texts in one command (instead of
318
the awkward cut/copy+paste).
320
299(2). Export TCM tables as HTML tables.
322
307(2). Implement correct behavior when the number of rows or columns
323
is 0 (by user commands or because this number is written into file).
325
316(2). Add option to print additional table description.
328
C3. Changes regarding all diagram editors.
329
------------------------------------------
331
035(2). Show all relevant attributes of a subject (entitytype, data process,
332
relationship etc.) in a separate window, in which all attributes can be
333
edited. (Now you don't have to 'aim' at the attributes of a line by trial
334
and error before hitting for example the cardinality constraint you want
335
to edit). This is an extension to the outline editor (which can edit only
336
one attribute (=textshape) at a time).
338
036(2). Extension to 035 in which you can select some referred subject (eg.
339
the nodes of a edge, or the parent in a taxonomy). By clicking this
340
in the edit window, a new edit-window will be opened for the referred
341
subject subsequently.
343
043(2). Whenever two lines lead to the same node (rectangle or ellipse-shaped),
344
the nearest side will be preferred, even if the other side is longer or
345
connecting to that side would result in a better line distribution.
346
Adjust this in such a manner that the side selected can be connected to
347
and results in a wide spaced line distribution between the two nodes.
349
044(2). After appending a diagram, nodes with the same type and the same
350
name should be shown as duplicates.
352
045(2). Set defaults in the config file tcm.conf, i.e. per editor and per node
353
shape type or line type the following attributes:
354
type name, subject type name, default size, bitmap icon, line color,
355
text color, text font, text alignment, fill color (only node shapes),
356
line width, text underlining, fixed name, has index label (only
357
node shapes). This is an extension to 006.
359
047(2). Annotations should be made visible as a comment text in the diagram,
360
possibly connected to the subject with a dotted line.
362
061(2). Possibility to show duplicate lines (with a '*' notation).
364
204(2). Bezier-curves with more than two points.
366
242(2). Don't let lines cut through their (name) labels. Leave a little gap
367
around the name label.
369
248(2). If 246 is implemented: Store separate font for each textshape. E.g. the
370
list of attributes can have a different font/point size than the name
371
textshape of the node.
373
268(2). Set defaults within the editor per node shape type or line: node
374
shape size, line color, text color, text font, text alignment,
375
fill color and line width.
377
272(2). Change the default position of the text shapes within
378
a node shape. Each textshape gets some relative position inside
379
the node shape such as TopLeft or BottomRight.
381
273(2). Distribute node shapes command: selected nodes are positioned
382
with equal distances.
384
278(2). Selection operation to select the shapes of all nodes/edges
387
279(2). Operation to make all the shapes in the selection invisible
388
(generalization of Show-isa and Hide value types in TERD).
390
282(2). Operation to make all shapes that represent a certain node
391
or edge type invisible (such as "Hide All DataStores" etc.)
393
283(2). User can specify which node shape types can have an
394
index number label and which don't.
396
285(2). Printer option in all hierarchic diagram editors: Print
397
current level or print all levels.
399
286(2). Extra command in context sensitive menu of a single
400
shape: copy+paste in a single command to make a quick copy without
401
affecting the cut-paste buffer.
403
294(2). "Move nodeshape label"-option. Possibility to move labels within e.g.
404
a box. See also 295(2).
406
295(2). "Sticky label"-option. When set, after moving an line or one of its
407
connecting nodeshapes, the label does not return to its default position.
408
Instead, a new position will be determined based on its relative position
409
to the original line or nodeshape.
411
297(2). Always display duplication asterisks within the nodeshape boundary.
413
304(2). Allow lines to be connected to Bezier-curves.
415
317(2). After appending a diagram, show all nodes with the same name as
416
duplicates (only when duplicate names are not allowed).
418
318(2). Add option : Show only the nodes having a connection to the selection.
420
319(2). Add option : Show all "mouse-sensitive" parts of a selected shape.
422
320(2). Future wish : conversion between different diagram types.
424
335(2). Add option to make 'mouse-sensitive parts' visible whenever the
425
mouse is moved above an editable part of a shape.
426
Show the editable part e.g. as a dashed rectangle and report the
427
area selected in the status field (e.g. "rolename area selected").
429
340(2). "Constraints on demand" : option to eliminate certain constraints during
430
an edit session (see also
432
342(2). When clicking inside an overlapping selection area of multiple elements
433
it should be possible to select a specific element.
437
C4. Changes regarding a specific diagram editor.
438
------------------------------------------------
440
042(2). TERD: Replace an entity type node by a relationship node, or
441
vice versa. Idem dito for entity type <-> value type.
443
048(3). TCRD/TSSD/TSTD: move attribute/operation to another position
444
in the same box or arrow. Uses implementation item 246.
446
049(2). TCRD/TSSD/TSTD: move attribute/operation to another box or
447
arrow. Uses implementation item 246.
449
050(2). TCRD/TSSD: optional syntax check of attribute declarations:
450
'name' or 'name:type' (in check document?). Uses impl. item 252.
452
051(2). TCRD/TSSD: optional syntax check of action declarations: 'name' or
453
'name(type1,...,typen)'. Uses impl. item 252.
455
056(3). TERD/TCRD/TSSD: add SubjectAreas / Packages (structure simular to
456
hierarchic DFDs). Will be implemented as a special node type.
457
This node type will be represented as an ordinary box (closed state) or
458
as a huge box enclosing other shapes (open state).
459
Uses implementation items 177 and 254.
461
057(3). TERD/TCRD/TSSD: Show/hide contents of a selected subject area /
462
Package, i.e. go from closed state to open state. Uses implementation
465
059(2). TERD/TCRD/TSSD: Contents of subject area/package can be printed
466
per page. Uses implementation item 257.
468
060(3). TERD/TCRD/TSSD: for every specialisation (static or dynamic) a
469
so-called ``specialisation-attribute'' with a finite number of possible
470
values exactly corresponding to the subclasses. For example a
471
specialisation-attribute ``contract type'' of an employee having the
472
values ``temporary'' and ``permanent'', being two dynamic subclasses of
473
employee. The specialisation-attribute must be visible within the diagram.
475
063(2). TCRD: role class (player) (Discussed in course material Wieringa).
477
089(2). TERD/TCRD/TSSD: single document inheritance check for
478
attributes/operations/components. An attribute/operation/component
479
should not be added to a class whenever a superclass or subclass does
480
already contain an attribute/operation/component with the same name
481
(mind the specialisation of an attribute: so only a warning will be given).
482
(remark: has already been implemented in CSOD).
484
157(2). TERD/TCRD: Show contents of one subject area only (hide the rest).
485
Uses implementation item 257.
487
163(2). TGD: Bitmaps or pixmaps as shape type (a box with a small bitmap
488
or pixmap that can be read-in from a file). Bitmaps are black-and-white,
491
200(3). TSTD: Optional syntax check for transition labels. Uses impl. 252.
493
201(3). TSSD: Optional syntax check for constraints. Uses impl. 252.
495
207(3). TSSD: show generalization/aggregations as a 'tree'.
496
Add a special view-mode, similar to the tree-editors, in which the lines
497
are neatly drawn. In order to achieve this, the view-mode should be added
498
as a functionality to libdiagram and the drawing algorithmes should be
499
adapted to all cases possible (within the tree-editors not all cases
502
227(2). TDFD,TEFD: Show/save/print minispecs (and other data-process
503
attributes) of all/selected data-processes at once. Similar to 088.
505
245(3). TDFD,TEFD: Implement hierarchic DFDs. Implementation based on 177.
507
247(3). TCRD/TSSD/TSTD: attributes/operations can occupy more than 1 line.
508
Uses implementation item 246.
510
321(2). TEFD/TDFD: Show external entity as rectangle (instead of square).
512
322(2). TEFD/TDFD: Allow bi-directional arrow between Data Process and
515
323(2). TEFD/TDFD: Option "create/edit indices" should be changed into
516
"view indices", allowing us to show or hide the indices. Indices
517
will always be created, but they can only be edited when visible.
519
324(2). TGD: Add Double ClassBox and Triple ClassBox icons.
521
326(2). TSSD: Enlarge Taxonomy Junction circle. Current circle is too small.
523
326(2). TSSD: Add multiplicity constraint in upper right corner
525
327(2). TSSD: Allow empty lines in attribute and operation lists.
527
328(2). TESD: Allow Participation Link to be drawn in both directions.
528
Rolename/Constraint can only be edited at Entity Type part of link.
530
329(2). TCPD/TDPD: Lower part in Component box should be "reachable".
532
330(2). TCPD/TDPD: To be merged into a new IMplementation Diagram editor: TIMD.
534
331(2). TIMD: (see 330 above): Add ClassBoxes to nodes icons.
536
332(2). TATD: Remove constraint on duplicate statenames.
538
339(2). TSTD: Allow multiple nodes with the same name.
540
341(2). TSSD/TCBD: Read-direction arrow should be scalable.
542
344(2). TSCD(/TEFD/TDFD): Add small "Navigation Window" showing the
543
location of the current document within the hierarchy of documents
546
345(2). TCBD: Block of messages should be movable.
548
346(2). TCBD: Empty message lines should be allowed.
550
347(2). TSSD: When connecting a generalization arrow to a generalization
551
junction the arrowpoint will disappear (turning the arrow into a
553
Implement the same mechanism for connecting an aggregation line
554
to a classbox or objecbox in TSSD.
558
C5. Changes for Tree editors.
559
----------------------------------
561
068(2). Represent tree-structure as an indented list in a text editor.
562
- With lines / without lines.
563
- With numbers / without numbers
564
(number is 1.location in tree, 2.unique id, or 3.user-assigned id).
566
069(2). Function refinement tree:
567
Indented list of function + annotation (meaning, permissions, source,
570
159(2). Conversion between trees in tree-structure and indented lists.
572
333(2). TGTT: Add possibility to duplicate nodes.
574
334(2). TGTT: Check for cycles with regards to duplicate nodes (See 333).
579
---------------------------------
581
235(3). Zoom in to a node in hierarchic editor (if there is no subdiagram,
582
create one). This operation shows only one level (subdiagram) at the time.
584
236(3). Zoom out to a node, i.e. show diagram of parent node. This operation
585
shows one level (subdiagram) at the time.
587
237(3). Go to diagram (including goto toplevel). I.e. show diagram with index
588
nr. X. Shows one level (subdiagram).
590
238(3). Automatic indexing (numbering) of nodes in hierarchic diagram.
592
269(3). Implement mechanism to select only one handle of a line.
593
I.e. when you select one line then you should click an extra time on one
594
of the line handles to make it the "most selected handle". Show this for
595
instance by making the handle bigger than the others.
597
070(2). Make Imakefile file for generating Makefiles for diverse
598
platforms (with xmkmf like under linux). Or use GNU autoconf/automake/
601
230(2). Implement Load, Save, New and Quit as distinct command classes.
603
235(2). Make libeditor (in particular class Config) independent from the
604
specific config items. This avoids recompilation each time a new config
605
item is added or changed. And also, libeditor should not contain the
606
options of each specific editor, as libeditor does not rely on specific
609
240(3). Look for bugs/memory leeks with purify so TCM 2.0 has no such bugs.
611
241(2). Remove class Code (all shape and subject codes and names) and
612
Toolkit (all editor codes and names) from libglobal.so and put it into a
613
distinct place. The rest of libglobal.so is totally application independent,
614
but these two classes aren't. Perhaps best thing is to put all codes
615
and names in a config file that's read in upon startup.
617
246(3). Implement the lists of text shapes in a class box or in a
618
transition arrow as 1 single text shape with multiple lines. This
619
makes layout and editing much more simple, as well as implementing
620
labels (attributes, actions etc.) that occupy more than one line.
622
250(2). Implement RoundedDoubleBox shape type in libdiagram (a DoubleBox
623
with rounded corners).
625
252(3). Implement all text syntax checks with flex/bison mini-parsers, just
626
like is done for CSOD and CED.
628
253(3). Generate PostScript from TextViewDialog/TextEditDialog by
629
using PSGrafport, instead of text2ps.
631
254(2). Implement CompositeNodeShape in libdiagram. That is a node shape type
632
that has a number of node shapes as children and visually encloses
633
these node shapes. This can be used to implement the
634
representation of subject areas (ER) and sequential composite
635
states (state charts).
637
255(2). Implement PartitionedNodeShape in libdiagram. That is a node
638
shape that is partitioned in a number of compartments (>= 1) with
639
vertical or horizontal boundary lines. Each compartment contains a number
640
of node shapes. CompositeNodeShape is_a PartitionedNodeShape
641
(with 1 compartment). PartitionedNodeShape can be used to implement
642
concurrent composite states in state charts.
644
256(2). Implement operations on CompositeNodeShapes and PartitionedNodeShapes
645
to show/hide the shapes that it encloses (so called Expand and Collapse
648
257(2). Implement possibility to show only a single CompositeNodeShapes or
649
PartitionedNodeShape and it's contents. So it can be saved or printed
652
263(2). Implement MultiBox (is_a Box). That is two boxes on top of
653
eachother. Used for representing UML multiboxes.
655
288(2). Each TextShape has as attribute the relative position in or near
656
the parent shape. The possible values are: Top, Bottom, Left, Right, Center,
657
TopLeft, TopRight, BottomLeft, BottomRight. Specific shape types have
658
a member CalcPosition(TextShape): Point that calculate the exact positon
659
of the Textshape given the specific shape's boundary and the size of the
660
textshape. This functionality now exists in TCM but it's very ad-hoc.
661
Also, implement the duplication asterisk as a textshape.
665
---------------------------------