Vor vielen, vielen Monden habe ich meinen Master in objektorientierter Softwareentwicklung gemacht. Ich habe alles behandelt: Projektinitiierung, Anforderungen, Analyse, Design, Architektur, Entwicklung usw. Mein Lieblings-IT-Buch aller Zeiten war die Entwicklung objektorientierter Software, ein erfahrungsbasierter Ansatz (IBM-1996). Ein Buch, das von einer Gruppe wahrer Experten ihrer Zeit geschrieben wurde. Es beschreibt einen arbeitsproduktzentrierten Ansatz für objektorientierte Analyse-, Design- und Entwicklungsmethoden.
Ich entwarf und entwickelte und war glücklich und ganz oben in meinem Spiel, aber ich fühlte mich ein wenig altmodisch: Agile Bewegungen wurden zur Mode des Tages und benannten einige bekannte iterative und inkrementelle Ansätze mit neuen, angesagten Worten um. Plötzlich runzelten unerfahrene Entwickler die Stirn, als ich "Anforderungen" oder "Architektur" sagte, als ob diese Dinge von Magie abgelöst würden.
Design und Entwicklung haben ihren Spaß verloren und ich wollte die gesamte IT-Branche hinter mir lassen.
Dann entdeckte ich Scala. Oh, wie sanfter Regen auf einer staubigen Straße. Alles wurde klar, die Luft wurde wieder süß und das kleine Licht meiner Festplatte flackerte tief in die Nacht und hielt mich fröhlich in meiner Entdeckungswelt.
Ich mag Systemdesign. Ich bin im Grunde ein Architekt, mehr als ein Programmierer. Ich liebe es zu analysieren, zu entwerfen, zu denken, zu streiten, mich zu verbessern - ich liebe einfache, saubere und klare Designs.
Wie gestalten wir reine Scala-Lösungen?
Sicherlich könnten konventionelle Sequenzdiagramme, Interaktionsdiagramme, Objektdiagramme usw. ersetzt oder verbessert werden, um imperative und funktionale objektorientierte Systeme miteinander zu verschmelzen. Sicher gibt es eine Öffnung für etwas ganz anderes!
Ich bin nicht auf der Suche nach aufgeblähter Komplexität, sondern nach flexibler Einfachheit. Ähnlich wie Scala ist Scala eigentlich einfach und leicht (wenn auch anders), kann aber wie eine Yogahose erweitert werden, um Ihren Anforderungen zu entsprechen. Es muss ein Design-System für diese schöne Sprache geben, das einfach zu starten ist und erweitert werden kann, um Ihren Anforderungen und Ihrer Domain zu entsprechen. UML kann es doch nicht sein!
Wie entwerfen wir reine Scala-Systeme? Stellen Sie sich für einen Moment vor, Sie haben den Luxus, ein komplettes System von Grund auf neu zu entwerfen, und wissen, dass Sie nur Scala verwenden werden - wie sehen Ihre Modelle aus? Welche Diagrammtypen müssten Sie in Bezug auf Struktur und Verhalten beschreiben? Wie würden Sie Optionen, Übereinstimmungen, Mixins, Singleton-Objekte usw. modellieren, ohne in die Komplexität der Erweiterung vorhandener Modellierungstechniken einzugreifen, anstatt ein neues, leichtes, innovatives Tool-Set.
Existiert ein solches Design / ein solches Verfahren / eine solche Lösung oder ist es an der Zeit, eine solche zu erfinden?