-
Notifications
You must be signed in to change notification settings - Fork 2
Protocols
Thomas Kühn edited this page Jan 25, 2019
·
45 revisions
- Create an UML class diagram editor with the following functionality
- Create and remove classes
- Permit adding and removing of attributes to classes
- Allow adding and removing of inheritance relations between classes
- Allow adding and removing of associations between classes
- Associations have a name and two multiplicity constraints at each end, whereas each is editable
- Permit adding and removing of packages, which lists the classes it contains
- Allow the editor to step in to "packages", where classes, packages, inheritance, and associations can be added and removed
- Optionally, check inputs to names, multiplicities and attributes for correctness
- Think about useful user interactions for the editor
- Refine your architecture to support modular development
- presentation of new UML features
- analyzing possible future requirements (see page "Requirements")
- "flat" and "deep" model representation
- file handling (save, load, export, esp. PDF)
- templates for "core models" as adaptation starting point -> base for new models (instead of greenfield approach)
- model views: different (graphical) representations for the same underlying model -> no different data; defined by the users' needs
- metadata for models and views
- separation of CROM and BROS feature sets for model creation
- IDE comfort features (error highlighting, auto-completion, minimap)
- general server usability
- introduction into BROS and its concepts (with mapping on new requirements)
- user interface analysis
- view management
- structure tree for already available elements (?) -> creating views needs selectable elements
- minimal toolbox for new elements
- configuration hidden via sidebar or right-click
- creating new elements via left-click on existing elements
- fixed background grid
- complete previous todos
- extending the functionality of the UML editor, part I
- relationships
- different types
- names, multiplicities
- directed and undirected
- drag-drop of anchor points
- entities
- different types
- configuration
- change element type at runtime
- (graphically hidden) data within elements
- relationships
- presentation of new UML features
- another introduction into BROS
- feasibility talk about:
- reuse of elements in different views
- cutting lines
- background: fixed, zoom, snap of elements, infinite size
- previous todos:
- drag-drop of relationship anchor points
- creating a relationship type at runtime
- editable multiplicity
- suggested presets
- extending the functionality of the UML editor, part II
- general
- element type change at runtime
- suggest presets when creating new elements
- multi-selection of elements
- drag-drop
- drag-drop of elements into another element (e.g., class into package)
-
(bonus) flat representation support with package resizing - show iconized/visual representation of the inner elements
-
- add metadata for root diagram (Author, Contributors, Creation-Date, Modify-Date, Metric-Example: # of Elements)
- relationships
- properties available in the sidebar
- change relationship source and target at runtime, incl. "swap" button
- relationship labels (name, multipl.) above or to the right of the line, able to be moved by the user
- (brainstorming) small arcs at edge overlap (-> far future)
- general
- info about current state
- finish previous todos
- suggest presets when creating new elements and for multiplicities
- drag-drop of elements into another element (e.g., class into package)
-
(bonus) flat representation support with package resizing - show iconized/visual representation of the inner elements
-
- add metadata for root diagram (Author, Contributors, Creation-Date, Modify-Date, Metric-Example: # of Elements)
- new
- try drawing of "return events": bubbles at the edge of a package (view from outside) and at the left of a drawing canvas inside the package (when stepped in)
- a package-to-package relationship
- a "class-in-package"-to-"class-in-another-package" relationship (inheritance)
skipped
- discussion about editor architecture (domain model, link model, picto model)
- sum up of the last weeks
- previous
- suggest presets when creating new elements and for multiplicities
- drag-drop of elements into another element (e.g., class into package)
- show iconized/visual representation of the inner elements
- add metadata for root diagram (Author, Contributors, Creation-Date, Modify-Date, Metric-Example: # of Elements)
- try drawing of "return events": bubbles at the edge of a package (view from outside) and at the left of a drawing canvas inside the package (when stepped in)
- a package-to-package relationship
- a "class-in-package"-to-"class-in-another-package" relationship (inheritance)
- new
- relationships from return events to everything else
- architecture discussion
- persistency with JSON
- tasks done:
- suggest presets when creating new elements and for multiplicities
- add metadata for root diagram (Author, Contributors, Creation-Date, Modify-Date, Metric-Example: # of Elements)
- try drawing of "return events"
- previous
- drag-drop of elements into another element (e.g., class into package)
- show iconized/visual representation of the inner elements
- a package-to-package relationship
- a "class-in-package"-to-"class-in-another-package" relationship (inheritance)
-
relationships from return events to/from roles and packages/compartments
- drag-drop of elements into another element (e.g., class into package)
- new
- event handling
- return events: draw them at package/compartment edge when stepped out
- "create" & "destroy" relationships:
- events to/from roles
- events to/from packages
- backend: linker & edit policies
- event handling
- supervisor note: Please write down which task you are doing (may differ from the concrete list), what you are working on, the progress you have made and/or what the problems are.
- general outlook
- "sharpening" of the goals
- main tasks done:
- backend: linker & edit policies
- persistency
- initial undo/redo
- previous
- drag-drop of elements into another element (e.g., class into package) (Sebastian)
- show iconized/visual representation of the inner elements (Sebastian)
- (bonus) a compartment-to-compartment relationship
- a "class-in-compartment"-to-"class-in-another-compartment" relationship
- (bonus) event handling
- return events: draw them at package/compartment edge when stepped out
- "create" & "destroy" relationships:
- events to/from roles
- events to/from compartments
- drag-drop of elements into another element (e.g., class into package) (Sebastian)
- new
- undo/redo with respect to relationships (Lars)
- when creating a relationship: choice of suitable relationship types (Lars)
- relationship label (name) placeholder (Lars)
- save/load as file download/upload (Lars)
- compartment as new entity type (like a class-package mix) (Sebastian)
- features demo (save/load, relations, undo/redo, compartments, class-in-comp)
- formalities
- discussion about backend and flat representation
- main tasks
- colors
- roles = gray, classes = white, compartments = anything (but orange or blue)
- flat representation switch:
- switch off: list of element names in compartment (default)
- switch on: showing element shapes
and relationshipswith auto-layout- switch linker backend
- switch on -> show shapes (e.g., of class elements) instead of pure list of names
- colors
- bonus tasks
- relationship labels only with double-click, otherwise hidden
- features demo (shape variation, flat-rep, flat-rep-switch, auto-layout, drop-in)
- discussion about relationship representation
- (note) save of switch in view
- main tasks
- relationships within flar-rep
- think about better auto-layout algor.
- relationship representation from outer compartment into inner comp.
- bonus tasks
- (open) relationship labels only with double-click, otherwise hidden
- feature demo (relationships in flat-rep)
- auto-layout discussion (see wiki; no rubber-band, "Dagre" as fav)
- arrow representation (always show the arrow heads)
- Thomas will think about "deep arrow" layout -> "Port" (rectangle) layout for anchors ?
- Thomas will also think about visualization of everything with members of the chair of visualization.. you know .. because visualizations ..
- formalities... >_>
- Nothing. Just pure void.
- discussion of the current state
- port & event discussions
- small feature demo (anchor points, magnetic lines, model elements)
- formalities ("task allocation", working hour time plans)
- General
- multiple anchor points for container
- try "Dagre" for auto layout - Seb (demo in git repo)
-
Ports - added by Lars ( + border view container)
- add an icon (small square) as "port" into the picto model, that may appear on the edge of every container element
- port semantics: port as an "inner element representative" that can be used by outer outer elements via a relationship
- a port can exist for any inner model element, that are roles, events, scenes, compartments, ...)
- can be used by multiple outer elements
a port can be a representative for a combination of inner elements (e.g., a port for "role A" and "role B")- (nothing to do for inner-to-outer relationships by now)
- target element as relationship label (instead of port label)
- draw arrow head on port
-
Events
- draw event bubbles
- standard events (simple circle)
- return events (boolean: double border line)
- draw event associations
- connection between event <-> role/container
- simple implementation: choose between "create" or "destroy" when drag-drop the association end onto something
- "create": dotted arrow with simple arrowhead towards role/container (we have to consider the "port" for connection towards "inner elements")
- "destroy": dotted arrow with simple arrowhead towards the event
- show name label for events
- draw event bubbles
- auto-layout demo
- various parameters
- one "main class" as options
- implementable for flar & deep
- anchor point & port demo, return events are possible
- next meeting in January
-
short term (~ next 3-4 weeks)
- apply the Dagre framework and enable auto-layout
- labels for entities (esp. ports and events)
- main task 1: implement the use case of adding an association from an outer towards an inner element (within a container)
- click on an (outer) element (e.g., a class) and start drawing the association, drop it on a container
- the system should ask for a target (inner) element (= drop-down list of available possible elements)
- the association gets drawn and a port gets created (if not already available)
- (bonus) if the association is dropped directly on an inner element, the editor choose this element as target without question
- main task 2: events
- enable return events (as a switch of "standard" events)
- event associations: "create" & "destroy" (see above at previous tasks)
-
long term (~ January/February)
- implement CROM and BROS edit policies (constraints regarding the creation and usage of elements)
- e.g., 'no class can be created in a compartment'
- e.g., 'fulfillment arrows have to end with a role, a role port, or with an compartment'
- ...
- implement CROM and BROS edit policies (constraints regarding the creation and usage of elements)
- auto-layout demo
- ports
- technical dicussion
- auto-layout -> dynamic container size, dependent on graph
- fix labels for ports
- fix "high frequency" highlighting bug
- port highlighting when hovering over class (and vice versa)
- Events:
- normal event becomes "return event" with switch
- return events: on edge of containers (in flat rep) or random (when stepped in)
- all Todos are fulfilled
- Gruppen (Packages) als UML Packages darstellen
- CompartmentType um Attributen und Operationen erweitern
- RoleType um Attribute und Operationen erweitern
- Edit Policies Implementieren
//CanEvent Type "(" Feature ")" "when" Predicate ";" Start Relationship (Relationships) when IsSourceType(RoleType); Add Relationship (Relationships) when IsTargetType(RoleType) and IsSourceType(RoleType) and !SourceEqualsTarget(); Add RoleType (true) when InType(CompartmentType); Create RoleType (true) when InType(CompartmentType); Direct_Edit RoleType (true) when true;- Implement default EditPolicies (cf. Rules or the Files send to you)
- Implement EditPolicies for Rules with features (Naturals, CompartmentTypes, Relationships)
- Implement Rules according to Event Relations (from Event to Role Type, or from Role Type to Event), i.e., wie im BROS Papier beschrieben (Siehe PDF-Datei).