Software design methods for Scala -- UML?

What is the state of the art of software design methods for Scala?

I am especially interested in the use of UML. I have found some links about it:

http://www.scala-lang.org/old/node/5861

http://www.scala-archive.org/Recommendation-for-UML-class-diagram-modeling-td1936798.html

but these are 6-7 years old.

Are there practical tools now?

And, could you recommend new books and articles on this topic?

In general I’d say that UML is focused on object oriented designs and not
really suitable for a functional-object oriented hybrid like Scala. It
doesn’t cover important concepts and parts of the language are just not
adressed in a suitable way (i.e. Traits). Thus most Scala developers might
use UML (if at all) to illustrate aspects of their static design, i.e. the
domain model or an ADT, or perhaps a high level view on some
functionalities (i.e. a state machine).

But to be honest, you don’t see UML diagrams any more in most projects.

2 Likes

“But to be honest, you don’t see UML diagrams any more in most projects.”

Do you mean in most Scala projects or software development projects in general?

What do people use for software design then?

Of course it’s just episodic, but my experience is that people use whatever is appropriate to express what they want to show. From Visio diagrams to mockups, from handwritten block diagrams to UML. With today’s IDEs you just don’t need to draw diagrams of your application, but a high level diagram illustrating the overall system, its building blocks, and perhaps some class diagrams to get an idea of the current domain are helpful. Use whatever you like and don’t get constrained by UMLs own laws.

What I didn’t see in any project since ages is a strict application of UML (read as: as a language) that would be used to describe the software design upfront. I hope that this idea died altogether with the n-th iteration of the let’s-generate-our-code-from-UML-diagrams approach.

As others have mentioned before UML is unsuitable to express a functional design in an efficient way. It’s targeted on object oriented designs where the pieces can (in most cases) be directly associated with a container, i.e. a class and it lacks an appropriate representation of functional ‘design patterns’. Archetypes can’t really replace that.

1 Like

Hello,

Whenever I hear UML, I am reminded of this
https://archive.eiffel.com/doc/manuals/technology/bmarticles/uml/page.html
.

 Best, Oliver
2 Likes

I have another associations that seats tightly in my brain: https://ro-che.info/ccc/29

Let me add: UML is discussed so much and used so little that we have scientific surveys showing how little UML is used. I’m sure they are not perfect, but no worse than other user studies in software engineering. One link:

http://neverworkintheory.org/2013/06/13/uml-in-practice-2.html

1 Like