For a online sortable version of the wishlist please look here.
Purpose : wish list.
System : TCM
Version : 2.20
Version date : Jan 20, 2003.
Last Update : Jan 16, 2003.
Author : Henk van de Zandschulp
--------------------------------------------------------------
MAXITEM = 347
--------------------------------------------------------------
Every wish has a sequence number and every wish is annotated with
a priority 0, 1, 2 or 3. These priorities mean:
(0): is done. These are listed in the file Wishlist.done in
the order by which they are done.
(1): should _not_ be done, with explanation why.
(2): should be done (low priority).
(3): should be done (high priority).
Wishes with a 2 or 3 are real wishes. These wishes are in one of the
following categories:
A. Distribution and porting of TCM.
B. New editors.
C. Features for existing editors. These have the sub-categories:
C1. For all editors.
C2. Only for table editors.
C3. Only for diagram editors.
C4. For specific diagram editors.
C5. Only for tree editors.
D. Implementation.
E. Documentation.
Wishes labeled 0 and 1 can be found in the file WishList.done.
A. Distribution.
----------------------------------
233(2) Make compilations for other Unixes such as HPUX, IRIX, AIX and OSF/1.
239(3) Send announcement to every site/newsgroup that has info about TCM
(or should have info about TCM) that TCM 2.0 exists:
news:comp.os.linux.announce
http://www.slashdot.org
http://www.linuxtoday.com
already listed, send update:
http://www.icewalkers.com
http://SAL.KachinaTech.COM
http://www.appwatch.com
http://www.freshmeat.net
http://www.lesstif.org
http://www.linuxapps.com
http://www.fokus.gmd.de/linux/linux-softw-xappl.html
http://stommel.tamu.edu/~baum/linuxlist/linuxlist
http://www.execpc.com/lsm/LSM
http://www.linuxlinks.com
to be listed:
http://www.software-engineer.org
http://www.objectsbydesign.com/tools/umltools_byPrice.html
http://www.linuxberg.com
http://download.cnet.com
B. Building new editors.
--------------------------------------
* worked out further some place else in a requirements & design document *
Building UML editors:
- Static Structure Diagrams (TSSD)
- Use-case Diagrams (TUCD)
- State Charts (TSCD)
- Activity Diagrams (TACD)
- Collaboration Diagrams (TCBD)
- Sequence Diagram (TSQD)
- Component Diagram (TCPD)
- Deployment Diagram (TDPD)
C. Updates and extensions to existing editors.
--------------------------------------------------------
C1. For all editors
--------------------------------------------------------
007(2). The user can save a configuration file from TCM. Configuration
changes will be stored in this personal file (.tcmrc) and these will
be loaded automatically on startup of an editor.
082(2). Tasks which only can be performed with the use of the mouse should
also be performable by a keystroke (or a combination of keystrokes).
088(2). Show/Save/Print the annotations of all (selected) shapes or cells
at once (show in text-window, save/print apart from the drawing).
139(2) Add extra entries to the configuration file tcm.conf for the
user interface colors and fonts (instead of the separate file with
X resources).
169(2). Possibility to change the page margin width/height on printing
(set the minimal distance between the diagram or table and the page boundary).
186(2). Testing on name equivalence: ignore white spaces (space, tab, newline)
at the beginning and the end of a name. Every sequence of more than one
white space is equivalent to a single space. Uses implementation item 252.
191(2). Combine all printer options in one dialogue window (instead of all
these different menu items). I.e. printer name, #copies, print command (and
other related commands), tumbled, duplex, banner etc. in one
PrinterOptionDialog.
194(2). Printing from a text dialog uses the external programm text2ps. This
should be replaced by something more powerful, for the options of text2ps
are rather limited (e.g. no support for colors, fonts or alignment).
Uses implementation item 253.
195(2). All coordinates should be floats (real numbers) instead of integers.
210(2). Make the menu under button-3 context-sensitive in the editor. In the
"background" the current Edit menu should be displayed, but clicking button-3
above a shape/cell, only a relevant set of commands for this particular
shape or cell should be displayed.
220(2). Specify colors also by red-green-blue value (instead of by color name)
in the color chooser. Colors will also be written in the TCM files as
"#RRGGBB" (because not every possible color has a name). Users can then
specify a color by three sliders in the color chooser dialog (in addition
to the current method of choosing colors from a fixed list of color names).
The preview immediately shows the color associated with the slider values.
221(2). Implement bubble-help labels with multiple lines of text (now
we have only single lines).
229(2). Undo/Redo for Load and New. This means also that Load and New
become command classes.
306(2). Undo/Redo for Update Node/Edge/Cell annotation.
243(2). Implement drag and drop of shapes and subjects (extension of the
cut-paste buffer) between two different editor processes (now it only
works within the same editor process). It should at least work for
editors of the same type and also for editors with similar subjects
such the two tree editors and between the different table editors.
244(2). Make a prototype of some simple code-generator from a TCM-file. It's
a set of extendable parser+generator classes for the TCM file format that
can be extended by other users with specific needs.
Possible languages to generate are XML, HTML, C++, Java, SQL, ASCII.
249(2). Set text font, text color and text alignment in the text edit
window (= the text window used for outline editing).
270(2). Read the fonts that can be used in TCM from a font definition file.
This makes it possible to extend TCM with Palatino, Lucida and
others that are not available on every system.
280(2). File locking mechanism. A document file that is being edited by
some editor can only loaded read-only by another editor process
(overriding should still be possible and removing the lock too).
284(2). New print option: print current (chosen) page in the drawing
area or print all the pages in the drawing area.
289(2). Cut+paste of (parts) of text labels via the Motif cut-paste buffer
(just like you can do within the motif textfields such as the document
name).
290(2). Connection of TCM with BSCW (groupware) system.
291(2). Startup online HTML user manual pages in Netscape from the
TCM editor.
300(2). Export to Fig format 3.2 instead of the older 3.1 format.
296(2). Add possibility to export diagrams in XML format.
308(2). All editors should be expanded with the UML Notebox symbol, which can
be connected to all Nodes and Edges by means of a Dashed Line.
309(2). Add option to transform the Inline Editor into a Form Editor, adjusted
to the Shapetype being edited. Default this option will be "Inline
Editor", but can be set to "Form Editor" when needed.
Every shape has at least a comment field. Some examples :
For a relationship line, the following fields can be specified :
Name / RoleName1 / Constraint1 / RoleName2 / Constraint2 / Comment
For a class, the following fields can be specified :
Name / Multiplicity / Stereotype / Properties /
Attributes (list) / Services (list) / Operations (list) /
Signal receptions (list) / Comment
Each editable field should have a corresponding Liteclue help text
assigned to it.
310(2). Add possibility to export diagrams in GIF/JPG/TIFF/PDF format.
311(2). TCM preferences file should be editable from within TCM.
312(2). TCM preferences should be adjustable online within a single TCM session.
313(2). Add possibility to merge all selected duplicate nodes into
one (== first selected) node.
314(2). Show duplicate nodes with a number in their upper left corner,
e.g. "(3)" or :"(3/5)" instead of "*".
315(2). Option "Document | View Source" should always be possible. The source
being viewed should reflect the state of the current document being
edited, not just the state of the version last saved to disk.
338(2). The menu entry to set and unset headers and footers is hard to find.
Redesign the menu structure in order to give it a more visible position.
343(2). Add small "Drawing Area Overview" Window to TCM editor windows
(like the small "Desktop Windows" of some window managers at the
bottom of the screen), showing the position of the visible area
within the whole canvas.
C2. Changes regarding all table editors.
----------------------------------------
029(2). Span a rectangle of two or more selected adjacent cells to one
large cell. The text will be aligned as if only a single cell exists.
The text of the left-upper cell remains visible. The other cells will
not be displayed.
030(2). Unspan a spanned cell.
031(2). Hide all text protruding ('sticking out') from a cell (when
autoresizing is off). Some mark (e.g. a small arrow or scrollbar) should
be added to the cell, indicating that the cell contains more text than
could be displayed.
032(2). Add a caption text at the bottom of a table.
034(2). Row and column numbers should remain visable when a table is scrolled.
Currently only numbers at the first and last row/column are displayed.
136(2). Outer left column and uppermost row remain visable, even after
scrolling (row/column numbers as well as row 0 and column 0 itselves).
143(2). In the outline editor the text part of the edit window should be
about the same width as the cell itself. In this way you can anticipate
whether your changes will eventual result in a table resize or not.
145(2). Fixed column width (only autoresize of row height).
As an option all text protruding will be hidden (see 031) or the
text height will be adjusted, eventually using some kind of text
abbreviation algorithm.
146(2). Fixed row height (only autoresize of column width).
As an option all text protruding will be hidden (see 031) or the
text width will be adjusted, eventually using some kind of text
abbreviation algorithm.
147(2). Pack table operation: apply autoresize to all rows and columns.
150(2). Horizontal table split (the right part of the table will be placed
below the left part of the table). As an option the left column can be
copied completely too.
151(2). Vertical table split (the bottom part of the table will be placed
to the rigth of the upper part of the table). As an option the upper
row can be copied too.
152(2). Optional double text entry (with a slash) in cell(0,0).
162(2). Table mirror-operation in diagonal running from the left top to the
right bottom of the table.
164(2). Implement fill colors for table cells.
197(2). Implement line colors for line pieces.
217(2). Implement text colors for cell texts.
228(2). Underlined texts in table file format.
264(2). Hide selected rows or columns (without deleting them).
265(2). Show bitmap/pixmap (read-in from a file) in the table cells
instead of text.
267(2). Make the drawing area so that it only shows the table.
It's not necessary to show much "white space" like in the
diagram editors.
287(2). Move/copy multiple cell texts in one command (instead of
the awkward cut/copy+paste).
299(2). Export TCM tables as HTML tables.
307(2). Implement correct behavior when the number of rows or columns
is 0 (by user commands or because this number is written into file).
316(2). Add option to print additional table description.
C3. Changes regarding all diagram editors.
------------------------------------------
035(2). Show all relevant attributes of a subject (entitytype, data process,
relationship etc.) in a separate window, in which all attributes can be
edited. (Now you don't have to 'aim' at the attributes of a line by trial
and error before hitting for example the cardinality constraint you want
to edit). This is an extension to the outline editor (which can edit only
one attribute (=textshape) at a time).
036(2). Extension to 035 in which you can select some referred subject (eg.
the nodes of a edge, or the parent in a taxonomy). By clicking this
in the edit window, a new edit-window will be opened for the referred
subject subsequently.
043(2). Whenever two lines lead to the same node (rectangle or ellipse-shaped),
the nearest side will be preferred, even if the other side is longer or
connecting to that side would result in a better line distribution.
Adjust this in such a manner that the side selected can be connected to
and results in a wide spaced line distribution between the two nodes.
044(2). After appending a diagram, nodes with the same type and the same
name should be shown as duplicates.
045(2). Set defaults in the config file tcm.conf, i.e. per editor and per node
shape type or line type the following attributes:
type name, subject type name, default size, bitmap icon, line color,
text color, text font, text alignment, fill color (only node shapes),
line width, text underlining, fixed name, has index label (only
node shapes). This is an extension to 006.
047(2). Annotations should be made visible as a comment text in the diagram,
possibly connected to the subject with a dotted line.
061(2). Possibility to show duplicate lines (with a '*' notation).
204(2). Bezier-curves with more than two points.
242(2). Don't let lines cut through their (name) labels. Leave a little gap
around the name label.
248(2). If 246 is implemented: Store separate font for each textshape. E.g. the
list of attributes can have a different font/point size than the name
textshape of the node.
268(2). Set defaults within the editor per node shape type or line: node
shape size, line color, text color, text font, text alignment,
fill color and line width.
272(2). Change the default position of the text shapes within
a node shape. Each textshape gets some relative position inside
the node shape such as TopLeft or BottomRight.
273(2). Distribute node shapes command: selected nodes are positioned
with equal distances.
278(2). Selection operation to select the shapes of all nodes/edges
of a certain type.
279(2). Operation to make all the shapes in the selection invisible
(generalization of Show-isa and Hide value types in TERD).
282(2). Operation to make all shapes that represent a certain node
or edge type invisible (such as "Hide All DataStores" etc.)
283(2). User can specify which node shape types can have an
index number label and which don't.
285(2). Printer option in all hierarchic diagram editors: Print
current level or print all levels.
286(2). Extra command in context sensitive menu of a single
shape: copy+paste in a single command to make a quick copy without
affecting the cut-paste buffer.
294(2). "Move nodeshape label"-option. Possibility to move labels within e.g.
a box. See also 295(2).
295(2). "Sticky label"-option. When set, after moving an line or one of its
connecting nodeshapes, the label does not return to its default position.
Instead, a new position will be determined based on its relative position
to the original line or nodeshape.
297(2). Always display duplication asterisks within the nodeshape boundary.
304(2). Allow lines to be connected to Bezier-curves.
317(2). After appending a diagram, show all nodes with the same name as
duplicates (only when duplicate names are not allowed).
318(2). Add option : Show only the nodes having a connection to the selection.
319(2). Add option : Show all "mouse-sensitive" parts of a selected shape.
320(2). Future wish : conversion between different diagram types.
335(2). Add option to make 'mouse-sensitive parts' visible whenever the
mouse is moved above an editable part of a shape.
Show the editable part e.g. as a dashed rectangle and report the
area selected in the status field (e.g. "rolename area selected").
340(2). "Constraints on demand" : option to eliminate certain constraints during
an edit session (see also
342(2). When clicking inside an overlapping selection area of multiple elements
it should be possible to select a specific element.
C4. Changes regarding a specific diagram editor.
------------------------------------------------
042(2). TERD: Replace an entity type node by a relationship node, or
vice versa. Idem dito for entity type <-> value type.
048(3). TCRD/TSSD/TSTD: move attribute/operation to another position
in the same box or arrow. Uses implementation item 246.
049(2). TCRD/TSSD/TSTD: move attribute/operation to another box or
arrow. Uses implementation item 246.
050(2). TCRD/TSSD: optional syntax check of attribute declarations:
'name' or 'name:type' (in check document?). Uses impl. item 252.
051(2). TCRD/TSSD: optional syntax check of action declarations: 'name' or
'name(type1,...,typen)'. Uses impl. item 252.
056(3). TERD/TCRD/TSSD: add SubjectAreas / Packages (structure simular to
hierarchic DFDs). Will be implemented as a special node type.
This node type will be represented as an ordinary box (closed state) or
as a huge box enclosing other shapes (open state).
Uses implementation items 177 and 254.
057(3). TERD/TCRD/TSSD: Show/hide contents of a selected subject area /
Package, i.e. go from closed state to open state. Uses implementation
items 254 and 256.
059(2). TERD/TCRD/TSSD: Contents of subject area/package can be printed
per page. Uses implementation item 257.
060(3). TERD/TCRD/TSSD: for every specialisation (static or dynamic) a
so-called ``specialisation-attribute'' with a finite number of possible
values exactly corresponding to the subclasses. For example a
specialisation-attribute ``contract type'' of an employee having the
values ``temporary'' and ``permanent'', being two dynamic subclasses of
employee. The specialisation-attribute must be visible within the diagram.
063(2). TCRD: role class (player) (Discussed in course material Wieringa).
089(2). TERD/TCRD/TSSD: single document inheritance check for
attributes/operations/components. An attribute/operation/component
should not be added to a class whenever a superclass or subclass does
already contain an attribute/operation/component with the same name
(mind the specialisation of an attribute: so only a warning will be given).
(remark: has already been implemented in CSOD).
157(2). TERD/TCRD: Show contents of one subject area only (hide the rest).
Uses implementation item 257.
163(2). TGD: Bitmaps or pixmaps as shape type (a box with a small bitmap
or pixmap that can be read-in from a file). Bitmaps are black-and-white,
pixmaps are colored.
200(3). TSTD: Optional syntax check for transition labels. Uses impl. 252.
201(3). TSSD: Optional syntax check for constraints. Uses impl. 252.
207(3). TSSD: show generalization/aggregations as a 'tree'.
Add a special view-mode, similar to the tree-editors, in which the lines
are neatly drawn. In order to achieve this, the view-mode should be added
as a functionality to libdiagram and the drawing algorithmes should be
adapted to all cases possible (within the tree-editors not all cases
behave correctly).
227(2). TDFD,TEFD: Show/save/print minispecs (and other data-process
attributes) of all/selected data-processes at once. Similar to 088.
245(3). TDFD,TEFD: Implement hierarchic DFDs. Implementation based on 177.
247(3). TCRD/TSSD/TSTD: attributes/operations can occupy more than 1 line.
Uses implementation item 246.
321(2). TEFD/TDFD: Show external entity as rectangle (instead of square).
322(2). TEFD/TDFD: Allow bi-directional arrow between Data Process and
External Entity
323(2). TEFD/TDFD: Option "create/edit indices" should be changed into
"view indices", allowing us to show or hide the indices. Indices
will always be created, but they can only be edited when visible.
324(2). TGD: Add Double ClassBox and Triple ClassBox icons.
326(2). TSSD: Enlarge Taxonomy Junction circle. Current circle is too small.
326(2). TSSD: Add multiplicity constraint in upper right corner
327(2). TSSD: Allow empty lines in attribute and operation lists.
328(2). TESD: Allow Participation Link to be drawn in both directions.
Rolename/Constraint can only be edited at Entity Type part of link.
329(2). TCPD/TDPD: Lower part in Component box should be "reachable".
330(2). TCPD/TDPD: To be merged into a new IMplementation Diagram editor: TIMD.
331(2). TIMD: (see 330 above): Add ClassBoxes to nodes icons.
332(2). TATD: Remove constraint on duplicate statenames.
339(2). TSTD: Allow multiple nodes with the same name.
341(2). TSSD/TCBD: Read-direction arrow should be scalable.
344(2). TSCD(/TEFD/TDFD): Add small "Navigation Window" showing the
location of the current document within the hierarchy of documents
(see also 343(2)).
345(2). TCBD: Block of messages should be movable.
346(2). TCBD: Empty message lines should be allowed.
347(2). TSSD: When connecting a generalization arrow to a generalization
junction the arrowpoint will disappear (turning the arrow into a
straight line).
Implement the same mechanism for connecting an aggregation line
to a classbox or objecbox in TSSD.
C5. Changes for Tree editors.
----------------------------------
068(2). Represent tree-structure as an indented list in a text editor.
- With lines / without lines.
- With numbers / without numbers
(number is 1.location in tree, 2.unique id, or 3.user-assigned id).
069(2). Function refinement tree:
Indented list of function + annotation (meaning, permissions, source,
date, author etc).
159(2). Conversion between trees in tree-structure and indented lists.
333(2). TGTT: Add possibility to duplicate nodes.
334(2). TGTT: Check for cycles with regards to duplicate nodes (See 333).
D. Implementation.
---------------------------------
235(3). Zoom in to a node in hierarchic editor (if there is no subdiagram,
create one). This operation shows only one level (subdiagram) at the time.
236(3). Zoom out to a node, i.e. show diagram of parent node. This operation
shows one level (subdiagram) at the time.
237(3). Go to diagram (including goto toplevel). I.e. show diagram with index
nr. X. Shows one level (subdiagram).
238(3). Automatic indexing (numbering) of nodes in hierarchic diagram.
269(3). Implement mechanism to select only one handle of a line.
I.e. when you select one line then you should click an extra time on one
of the line handles to make it the "most selected handle". Show this for
instance by making the handle bigger than the others.
070(2). Make Imakefile file for generating Makefiles for diverse
platforms (with xmkmf like under linux). Or use GNU autoconf/automake/
autoheader programs.
230(2). Implement Load, Save, New and Quit as distinct command classes.
235(2). Make libeditor (in particular class Config) independent from the
specific config items. This avoids recompilation each time a new config
item is added or changed. And also, libeditor should not contain the
options of each specific editor, as libeditor does not rely on specific
editors.
240(3). Look for bugs/memory leeks with purify so TCM 2.0 has no such bugs.
241(2). Remove class Code (all shape and subject codes and names) and
Toolkit (all editor codes and names) from libglobal.so and put it into a
distinct place. The rest of libglobal.so is totally application independent,
but these two classes aren't. Perhaps best thing is to put all codes
and names in a config file that's read in upon startup.
246(3). Implement the lists of text shapes in a class box or in a
transition arrow as 1 single text shape with multiple lines. This
makes layout and editing much more simple, as well as implementing
labels (attributes, actions etc.) that occupy more than one line.
250(2). Implement RoundedDoubleBox shape type in libdiagram (a DoubleBox
with rounded corners).
252(3). Implement all text syntax checks with flex/bison mini-parsers, just
like is done for CSOD and CED.
253(3). Generate PostScript from TextViewDialog/TextEditDialog by
using PSGrafport, instead of text2ps.
254(2). Implement CompositeNodeShape in libdiagram. That is a node shape type
that has a number of node shapes as children and visually encloses
these node shapes. This can be used to implement the
representation of subject areas (ER) and sequential composite
states (state charts).
255(2). Implement PartitionedNodeShape in libdiagram. That is a node
shape that is partitioned in a number of compartments (>= 1) with
vertical or horizontal boundary lines. Each compartment contains a number
of node shapes. CompositeNodeShape is_a PartitionedNodeShape
(with 1 compartment). PartitionedNodeShape can be used to implement
concurrent composite states in state charts.
256(2). Implement operations on CompositeNodeShapes and PartitionedNodeShapes
to show/hide the shapes that it encloses (so called Expand and Collapse
operations).
257(2). Implement possibility to show only a single CompositeNodeShapes or
PartitionedNodeShape and it's contents. So it can be saved or printed
separately.
263(2). Implement MultiBox (is_a Box). That is two boxes on top of
eachother. Used for representing UML multiboxes.
288(2). Each TextShape has as attribute the relative position in or near
the parent shape. The possible values are: Top, Bottom, Left, Right, Center,
TopLeft, TopRight, BottomLeft, BottomRight. Specific shape types have
a member CalcPosition(TextShape): Point that calculate the exact positon
of the Textshape given the specific shape's boundary and the size of the
textshape. This functionality now exists in TCM but it's very ad-hoc.
Also, implement the duplication asterisk as a textshape.
E. Documentation.
---------------------------------