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. ---------------------------------