Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

any UML tools for Scala

Tags:

scala

uml

Is there any UML tools available for Scala. the reason for my question is that its a blend of functional and OO concepts hence I would like to know how such tools denote functions in UML diagrams.

like image 255
prassee Avatar asked Oct 19 '11 02:10

prassee


People also ask

Which tool is used for UML diagrams?

StarUML is a tool specifically used for drawing UML diagrams. It is a diagramming tool mainly used for agile and concise modeling.

Where can I draw UML diagrams for free?

Gliffy is a free online drawing tool which provides support for drawing UML diagrams. It is one of the most widely used online diagramming application. Features: Allows you to draw a diagram with ease.

Is UML Designer free?

Free UML Tool for Fast UML DiagramsUMLet is a free, open-source UML tool with a simple user interface: draw UML diagrams fast, build sequence and activity diagrams from plain text, export diagrams to eps, pdf, jpg, svg, and clipboard, share diagrams using Eclipse, and create new, custom UML elements.

Is UML a scripting language?

UML is not a programming language, it is rather a visual language. We use UML diagrams to portray the behavior and structure of a system. UML helps software engineers, businessmen and system architects with modelling, design and analysis.


1 Answers

This thread summarizes the obstacles faced by any UML tool wanting to represent Scala classes:

  • there is no official representation of mixins in UML
  • it is difficult to represent:
    • closures
    • Scala type members
    • class constructor parameter bounds (a.k.a. "template type" bounds/constraints)
    • covariant and contravariant class constructor inheritance
    • the relationship between a class or trait and the companion object

This thesis ("Evaluierung des Einsatzes von Scala bei der Entwicklung für die Android-Plattform", pdf, German) does add stereotypes for trait mixins and other scala specific elements (pp. 146).

What was added by Meiko Rachimow in 2009:

attributes, getter and setter

Scala attributes

For all published attributes exist implicit getter (attribute1 and attribute2), except the visibility was declared as private (attribute3). If published attributes are tagged with a stereotype Var, they are variables, for which there exist implicit setter (attribute2). The stereotype lazy marks instance variables as lazy (attribute4).

classes and generics

Scala class and genericity

Like in UML, generic classes are marked with an abstract type. By using the Scala language syntax, upper and lower bounds can be declared for this type (EineKlasse). It is possible to use structured types as bounds, which attributes and methods are embraced by curly braces (EineKlasse2). Generic type parameters of methods are embraced by square brackets (operation).

traits

Scala traits in UML

Traits are displayed like abstract classes and tagged with the stereotype trait. Abstract attributes and methods are displayed in italics (attribute2, operation2). For abstract attributes the dependency arrow can be tagged with the stereotype requires (Trait3, attribute3). On the other hand, the stereotype self is used for self referencing types (Trait4). If a trait inherits another trait, the inheritance is displayed with an inheritance arrow (Trait2). This arrow type is used too, if a class extends a trait (Klasse). To emphasis the “mix in” of traits, the inheritance arrow can be tagged with the stereotype mixin (Klasse).

singleton objects

Scala singleton in UML

Singleton objects are displayed like classes and tagged with the stereotype singleton. It is possible, that there exist two class elements with the same name. In fact it is a singleton object with the belonging companion class. In this case the dependency arrow is tagged with the stereotype hasA.

like image 125
VonC Avatar answered Oct 01 '22 17:10

VonC