Wiele, wiele księżyców temu, zrobiłem moich mistrzów w inżynierii oprogramowania obiektowego. Omówiłem wszystko: inicjację projektu, wymagania, analizy, projektowanie, architekturę, rozwój itp. Itp. Moją ulubioną książką informatyczną wszechczasów było tworzenie oprogramowania obiektowego, podejście oparte na doświadczeniu (IBM-1996). Książka stworzona przez grupę prawdziwych ekspertów swoich czasów. Opisuje podejście zorientowane na produkt pracy do obiektowych metod analizy, projektowania i rozwoju.
Zaprojektowałem, opracowałem i byłem szczęśliwy na samym początku mojej gry, ale zacząłem czuć się trochę przestarzały: zwinne ruchy stały się modą tego dnia i przemodelowałem kilka dobrze znanych iteracyjnych i przyrostowych podejść nowymi modnymi słowami. Nagle niedoświadczeni programiści zmarszczyli brwi, kiedy powiedziałem „wymagania” lub „architektura”, jakby te rzeczy zostały zastąpione magią.
Projektowanie i rozwój straciły przyjemność i miałem zamiar zostawić za sobą całą branżę IT.
Potem odkryłem Scalę. Och, jak miękki deszcz na zakurzonej drodze. Wszystko właśnie stało się czyste, powietrze znów stało się słodkie, a światło mojego dysku twardego migotało głęboko w noc, wesoło utrzymując mnie w towarzystwie mojego odkrywczego świata.
Lubię projektowanie systemu. Jestem sercem architektem, więcej niż programistą. Uwielbiam analizować, projektować, myśleć, kłócić się, ulepszać - po prostu uwielbiam proste, czyste i wyraziste projekty.
Jak projektujemy czyste rozwiązania Scala?
Z pewnością konwencjonalne diagramy sekwencji, diagramy interakcji, diagramy obiektów itp. Mogłyby zostać zastąpione lub ulepszone dla dobra mieszania imperatywnych i funkcjonalnych systemów obiektowych. Z pewnością jest szansa na coś zupełnie innego!
Nie szukam rozdętej złożoności - szukam elastycznej prostoty. Podobnie jak Scala jest w rzeczywistości prosty i łatwy (choć inny), ale można go rozszerzyć, aby pasował do twoich wymagań, jak para spodni do jogi. Musi istnieć system projektowania tego pięknego języka, który zacznie się w prosty sposób i można go rozszerzyć, aby pasował do twoich wymagań i domeny. Na pewno UML nie może być!
Jak więc projektujemy czyste systemy Scala? Wyobraź sobie przez chwilę, że masz luksus zaprojektować kompletny system od podstaw i wiesz, że będziesz używać tylko Scali - jak będą wyglądać twoje modele? Jakie rodzaje diagramów musiałbyś opisać strukturę i zachowanie? Jak modelowałbyś opcje, dopasowania, mixiny, obiekty singletonowe itp. Bez wciągania się w rozbudowę istniejących technik modelowania zamiast świeżego, lekkiego, innowacyjnego zestawu narzędzi.
Czy taki projekt / proces / rozwiązanie istnieje , czy nadszedł czas, aby go wymyślić?