MDE to skrót od Model Driven Engineering, nazwy ogólnego trendu w świecie inżynierii.

Od pewnego już czasu  da się zaobserwować, że ludzie i ich umiejętności nie nadążają za złożonością systemów… Nie jest to jakieś wielkie odkrycie, bo problem ten wystąpił w inżynierii maszyn kilkadziesiąt lat temu… mniej więcej w czasie gdy zaczęły się pojawiać pierwsze samochody, potem było już coraz gorzej: liczba detali maszyn idzie w tysiące  (pojazdy) a nie raz i miliony (samoloty pasażerskie, pociągi).

Jedynym sposobem zapanowania nad złożonością obecnych konsytuacji inżynierskich jest redukcja złożoności ich opisów, a możliwe jest to jeżeli zaczniemy tworzyć abstrakcje opisujące wybrane aspekty tych konstrukcji. Jest to także zgodne z podejściem naukowym (ogólna teoria systemów, metodologia nauki), polegającym na generalizowaniu.

W inżynierii od lat stosowane są rysunki techniczne poglądowe, dokumentowanie konstrukcji od ogółu do szczegółu. Po pojawieniu się komputerów osobistych pojawiły się ich – desek kreślarskich – odpowiedniki w postaci aplikacji CAD/CAM.

W inżynierii oprogramowanie notacje, odpowiedniki rysunków technicznych, pojawiły się już w latach 80-tych. Rozwijały się wraz z rozwojem inżynierii programowania i technologii informatycznych. Języki programowania także rozwijają się w stronę coraz wyższego poziomu abstrakcji (od asemblera do języków skryptowych takich jak Pyton czy Ruby on Rails).  Rubikon został przekroczony gdy pojawiły się metody obiektowe w inżynierii oprogramowania i notacja UML (co metodologicznie niemalże zrównało inżynierię oprogramowania z innym obszarami inżynierii).

W konsekwencji w inżynierii oprogramowania na pierwszy plan wysuwa się rola architekta rozwiązania, przed  rolami związanymi z implementacją. Architekt to ktoś kto wie co i po co ma powstać, projektuje rozwiązanie na poziomie abstrakcji ignorującej detale a skupiającej się na cechach użytkowych. Bardzo ważne: architekt nie jest developerem.

W obszarze inżynierii oprogramowania organizacja standaryzująca Object Management Group (OMG.org) opracowała specyfikację MDA (Model Driven Architecture). MDA na tle MDE wygląda tak:

Kluczowy jest tu obszar oznaczony kolorem zielonym (model driven development), to obszar pracy z abstrakcją systemu, pozwalający na dopracowaniu konstrukcji i jej testowaniu, bez konieczności tworzenia realnych prototypów, które są najkosztowniejszą częścią projektów inżynierskich.

Jednym z kluczowych pojęć w procesie tworzenia abstrakcji – modelu – rozwiązania jest pojęcie metamodelu. Metamodel to abstrakcja budowana w oparciu o klasy elementów systemu. jest to dość trudne pojęcie jednak nie raz stosowane intuicyjnie: pisząc w dokumentacji wymagań Faktura najczęściej mamy na myśli wszystkie dokumenty będące fakturą, a nie konkretną fakturę FV/1234/2018. Użycie pojęcia Faktura to nic innego jak nazwanie (wyodrębnienie) klasy dokumentów mających pewne wspólne.

Autor cytowanej prezentacji opisuje także aspekty generowania kodu z modeli, jednak tu osobiście jestem sceptykiem. Wyeliminowanie ludzi z procesu tworzenia kodu jest w moich oczach taką samą utopią jak 100% eliminacja ludzi z procesu tworzenia i realizacji konstrukcji drapaczy chmur czy samochodów.

A teraz zapraszam do lektury cytowanej prezentacji. Co prawda opublikowana w 2013 roku ale nie straciła wiele na aktualności.

Jarosław Żeliński

Jarosław Żeliński: Od roku 1991 roku, nieprzerwanie, realizuje projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzi samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako wykładowca akademicki wizytujący (nieetatowy), prowadzi wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie.) Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów. Prawa autorskie: Zgodnie z art. 25 ust. 1 pkt. 1) lit. b) ustawy o prawie autorskim i prawach pokrewnych zastrzegam, że dalsze rozpowszechnianie artykułów publikowanych w niniejszym serwisie jest zabronione bez indywidualnej zgody autora (patrz Polityki Strony). Konsultacje: wszelka pomoc i wyjaśnienia dotyczące treści artykułów autora bloga udzielana jest wyłącznie w ramach płatnych konsultacji.