Model Driven Engineering

Na rynku IT mają do czynienia z różnymi metodykami inżynierii oprogramowania, paradygmatami architektury i stylami projektowania rozwiązań IT. W Inteca, podczas realizacji kompleksowych projektów dla naszych klientów z różnych sektorów, przez lata udało nam się nauczyć, przetestować, wykorzystać i eksperymentować z większością z nich. Efektem tego jest wypracowanie własnej metodyki Model Driven Engineering.
Nauczyliśmy się, że niezależnie od stylu zarządzania i prowadzenia projektu (od małych samo-organizujących się zespołów do wielkich wielo-organizujących programów z udziałem wielu dostawców) ryzyko związane z realizacją projektu jest zawsze związane z: niespełnieniem wymagań biznesowych – szczególnie w zakresie procesów biznesowych, brakiem spójności pomiędzy produktami różnych faz procesu wytwórczego (SDLC) i wynikające z niej nieporozumienia, brakiem świadomości architektonicznej IT.
Inżynieria oprogramowania
Praktyki takie jak:
- Modelowanie procesów w BPMN,
- Symulacja procesów,
- Analiza wymagań systemu IT z użyciem Przypadków Użycia,
- Projektowanie zorientowane obiektowo w UML,
- Projektowanie architektury SOA sterowanej organizacją domen biznesowych czy generowanie produktów implementacji (kod źródłowy, kontrakty usług, fizyczny model danych) z modeli projektu oprogramowania
to przykłady wiodących elementów, używanych w inżynierii oprogramowania.
Jednakże rzadko kiedy zespoły są w stanie zintegrować powyższe praktyki, tak aby działały jako jeden, spójny i całościowy proces wytwarzania oprogramowania, który gwarantuje spójność, powtarzalność i istotnie redukuje ryzyko.
Model Driven Engineering
Dzięki doświadczeniu zdobytemu w projektach realizowanych w bardzo zróżnicowanych środowiskach, udało nam się zintegrować powyższe praktyki w jedną, spójną metodę pracy, która wykorzystuje najlepsze elementy poszczególnych standardów, notacji i metodyk. Realizację każdego z tych elementów opisujemy poniżej.
Analiza procesów oparta o model procesu (Model Driven Process Analysis)
- Używamy narzędzi BPM / CASE do budowy modelu procesów oraz modelu domeny – łączymy notację BPMN z diagramami UML na poziomie biznesowym. Obiekty informacyjne i danych łączone są z aktywnościami przepływu procesu.
- Symulujemy poszczególne warianty procesu w celu analizy wpływu planowanej zmiany oraz poszukiwaniu optymalnego wariantu.
- Nie piszemy dokumentacji procesowej – generujemy ją z naszego modelu analizy. Komentarze i zmiany są realizowane bezpośrednio w modelu, co zapewnia spójność.
- Weryfikacja biznesowa jest realizowana z użyciem narzędzi kolaboracji on-line, w których na każdym etapie widok on-line naszego modelu analizy dostępny jest dla interesariuszy.
Projektowanie Architektury IT oparte o model
- Projekt realizacji wymagań w architekturze wywodzony jest bezpośrednio z elementów modelu poprzedniej fazy.
- Identyfikujemy i projektujemy komponenty IT docelowego rozwiązania.
- Kontrakty usług i modele wiadomości (integracja), schematy danych są generowane z modeli architektonicznych w narzędziu CASE.
- Zbudowaliśmy zestaw rozszerzeń dla narzędzi do modelowania, które automatycznie weryfikują spójność i kompletność realizowanych projektów.
- Dokumentacja Architektury oprogramowania jest generowana jest z modelu projektu.
Automatyzacja budowy i rozmieszczania oprogramowania
- Produkty fazy projektowania w postaci modeli analizy I architektury są wkładem do fazy implementacji, gdzie transformujemy modele do postaci definicji wiadomości i interfejsów oraz kodu źródłowego.
- Proces budowania aplikacji I jej rozmieszczenia na poszczególne środowiska przebiega w sposób automatyczny dzięki podejściu DevOps I Ciągłej Integracji.
- Używamy testów automatycznych dla zapewnienia jakości oprogramowania.
- Zbudowaliśmy szereg dedykowanych narzędzi do budowy I rozmieszczania aplikacji na platformie SoftwareAG webMethods.
Rezultaty biznesowe stosowanego podejścia MDE
Efektywność
Wobec zastosowania Model Driven Engineering, każdy produkt procesu jest powiązany (traceable) z produktami faz wcześniejszych i oznacza wejście dla produktów faz kolejnych. W takim podejściu nie są konieczne nakłady pracy na jednoczesne utrzymywanie modeli projektowych oraz dokumentacji (np. specyfikacji funkcjonalnej, specyfikacji architektonicznej).
Dokumentacja oraz elementy implementacji są generowane z modelu, utrzymywanego w narzędziu CASE, dzięki czemu minimalizujemy nakłady pracy, koniecznej do aktualizacji zmian w dokumentacji oraz między produktami poszczególnych faz procesu projektowego.
Redukcja czasu realizacji poszczególnych etapów prac projektowych
Oszczędzamy zasoby, poświęcone na dokumentowanie projektu oraz przeglądy i akceptacje dokumentacji.
Cała dokumentacja wymagań, procesów biznesowych i projektu rozwiązania jest utrzymywana w narzędziu CASE i aktualizowana w czasie rzeczywistym.
Budowa, rozmieszczenie i testy oprogramowania są zautomatyzowane. Przetestowanie i publikowanie nowych czy zmodyfikowanych funkcjonalności, odbywa się szybciej i nie rodzi dużych kosztów.
Spójność i możliwość śledzenia powiązań elementów
Istnieje pełna możliwość śledzenia powiązań z wymaganiami biznesowymi, poprzez wymagania funkcjonalne, takie jak np. Przypadki użycia czy User stories, aż do ich realizacji w postaci elementów projektu oprogramowania (usługi, ekrany, komponenty) i wynikających z nich zadaniach w procesie rozwoju oprogramowania.
Zależności te są możliwe do prezentacji w postaci graficznych diagramów oraz analizy w arkuszach kalkulacyjnych. Dzięki temu weryfikacja i walidacja rozwiązania jest przejrzysta dla wszystkich interesariuszy projektu.