Krótka odpowiedź… ponieważ model sterowany jest często związany z generowaniem kodu, a kod jest kruchy; to, czego potrzebujemy, to eliminacja kodu i modelowanie, to z pewnością droga.
Niektórzy odrzucili pytanie, argumentując, że nie ma złotego młota i że tworzenie oprogramowania jest z natury złożone.
W pełni się z nimi zgadzam, że nie ma złotego młota, ale nie sądzę, że model napędzany jest poszukiwaniem złotych młotków lub srebrnych kul!
Chciałbym pójść dalej ze złożonością; istnieją dwa rodzaje złożoności, które nazywam złożonością organiczną lub naturalną, złożonością nieodłączną dla biznesu i jego procesów, ale mamy także ceremonialną złożoność.
Złożoność, która wkrada się do instrukcji systemowych według instrukcji, dzień po dniu. Ceremonialna złożoność - niepotrzebna złożoność - wynika przede wszystkim z niekontrolowanego mieszania kodu technicznego z kodem biznesowym, ale także z braku struktury i jednolitości w systemie.
Dziś cała złożoność, która nawiedza rozwój systemów informatycznych i powoduje awarie i talię, jest ceremonialną złożonością; złożoność, którą można wyeliminować.
Ceremonialna złożoność to marnotrawstwo, marnotrawstwo spowodowane przez kod, mniej wartości, zmień niekorzystny, niezmienny kod; kod, który należy zredukować do jego ścisłego minimum.
Jak to zrobić? Łatwo! Po prostu nie pisz tego i nie generuj go, po pierwsze!
Niezbędny, niezmienny kod techniczny; kod używany do odczytu / zapisu, wyświetlania, komunikowania się… Tam wkraczają modele, opisując logiczną strukturę danych - dodałbym w sposób relacyjny - modele mogą umożliwić ogólną obsługę standardowego odczytu / zapisu, wyświetlania i komunikacji dane.
Jest jak system operacyjny, nie przepisujesz go dla każdego projektu, z którego korzystasz. Potrzebny jest więc silnik techniczny, który obsługuje niezmienne aspekty oprogramowania w danym modelu. Nazywam to silnikiem AaaS (Architecture as a Service).
Jeśli chodzi o niepotrzebny kod, cóż, jest to niepotrzebny kod, więc równie dobrze może zostawić go niepisany.
To pozostawia nam niezbędny, zorientowany na biznes kod, który powinien zostać napisany, niezbędne dane zorientowane biznesowo, które powinny zostać zaprojektowane, niezbędny interfejs użytkownika oraz doświadczenie, które należy zaprojektować i wyobrazić.
Eliminując delikatny kod, możemy objąć architekturę jako usługę nowym paradygmatem rozwoju oprogramowania opartym bardziej na modelowaniu i projektowaniu niż na kodzie.