Idea, która stoi za appGen Jak buduje się oprogramowanie przy

Transkrypt

Idea, która stoi za appGen Jak buduje się oprogramowanie przy
Idea, która stoi za appGen
Appgen jest ideą, która przez ostatnie lata wcielana była sukcesywnie w życie. Głównymi
wyznacznikami tej idei są:
1. Eliminowanie wszystkich powtarzanych w ramach różnych projektów czynności.
Ludzki mózg, a więc i ludzie funkcjonują w oparciu o schematy. Schematy są
mechanizmem filtrującym, pozwalającym na nieanalizowanie wszystkiego co widzimy i
czego doświadczamy. Dlatego właśnie przyzwyczajeni jesteśmy do kierownic w
samochodach i przycisków w windach. Te same reguły działają w świecie informatyki –
strony internetowe robione są według z góry ustalonych standardów, tak aby nie zmuszać
użytkownika do zapoznawania się ze sposobem poruszania się po nich. Aplikacje są tak
konstruowane, żeby niezapoznany użytkownik mógł swobodnie się po nich poruszać.
Istnieją standardy projektowania formularzy, zależnie od rodzaju danych w nich zawartych,
sposoby konstruowania baz danych, tworzenia i niszczenia obiektów (programistycznie),
itd. Projektując appGen, skupialiśmy się na tym, aby modelując (opisując) zagadnienie
jakim jest oprogramowanie, to że istnieje pracownik, który ma imię i nazwisko, że
zatrudniony jest w firmie, że jego pensja księgowana jest na koncie analitycznym, że (…)
[to co tu opisałem, nazywa się MODELEM DANYCH], żeby z tego opisu wygenerować te
wszystkie widoki, obsługę bazy danych i wszystko to, co stworzyła by grupa programistów
nad takim oprogramowaniem pracująca.
2. Dostarczanie wsparcia niezależnie od technologii.
Rdzeń aplikacji zapisany jest w modelu danych, który niezależny jest od technologii, w
którą zostanie wygenerowana aplikacja. Aktualnie system generuje aplikacje w JEE,
aczkolwiek starsze wersje generowały aplikacje stand alone, oraz testowo aplikacje na
Androida. Wszystko to z jednego modelu danych. Oznacza to że im w większym stopniu
generowana aplikacja oparta jest o wygenerowany kod, tym łatwiejsza jest w rozwoju, tym
łatwiej migrowalna, z użyciem appgen-a, na inne technologie przez niego obsługiwane.
3. Docelowo, osiągnięcie praktycznie 100% pokrycia modelem.
Rozwijając appGen dążymy do tego, aby docelowo praktycznie cały kod był modelowany,
niezależnie od platformy docelowej (technologii w której generowana jest aplikacja). Po
kilkunastu latach doświadczeń, zaś bezposrednio 7 latach rozwiajania i używania appGen-a
w projektach, wierzymy iż jest to możliwe.
Jednym z wyznaczników rozwoju appGen było tworzenie oprogramowania na zamówienie
klientów oraz własnego tylko przy jego użyciu. Dzięki takiemu podejściu appGen był
nieustannie testowany, wzbogacany oraz rozbudowywany o rozwiązania problemów z
którymi się stykaliśmy (potężne bazy danych finansowych, systemy rozproszone, nietypowe
interfejsy, współdzielenie danych między wielu użytkowników, itp.).
Jak buduje się oprogramowanie przy użyciu appGen
AppGen generuje aplikacje na podstawie modelu danych. Informacje zgromadzone w modelu są
wystarczające aby wygenerować cały eko-system aplikacji, narzędzia zarządzające cyklem życia
obiektów, widoki jakości produkcyjnej, itp.
Korzyści, które daje appGen
Korzyści ogólne:
Znaczne zmiejszenie liczby roboczogodzin na projekt
Jest to korzyść – rzeka. Jej stopień zależy od wielkości projektu – im większy i bardziej
skomplikowany, tym bardziej rosną korzyści związane z użyciem appGen-a. Szacuję, iż w
zależności od rodzaju tworzonego systemu, skrócenie liczby wymaganych roboczogodzin może
wynieść 80% i więcej.
Korzyści ogólne projektowe:
1. Szybkie prototypowanie jakości produkcyjnej – tworząc model możemy generować
aplikację. Po odpowiednich modyfikacjach i ewentualnym zaimplementowaniu dodatkowej
logiki, dostajemy aplikację której kod zbliżony jest jakością (obsługa bazy danych,
transakcji, sesji, widoki, itp) do aplikacji produkcyjnej. Dzięki takiemu podejściu
programiści i analitycy mogą robić z klientem szybkie cykle.
2. Jeden, scentralizowany model danych dla aplikacji – wszystkie obiekty zapisane w bazie
danych i dostępne w projektowanej aplikacji zawarte są w modelu. Obsługa bazy danych i
cyklu życia obiektów jest całkowicie poza zasięgiem programistów – dostają oni jedynie
gotowe rozwiązanie i odpowiednie interfejsy. Poznanie struktury obiektów biznesowych
projektu wiąże się jedynie z przejrzeniem modelu danych.
3. Generowanie aplikacji – głównym założeniem appGen-a jest wyeliminowanie powtarzanej
przez programistów pracy przy kolejnych projektach. Wiadomo, iż istnieją ogólnie przyjęte
standardy np. projektowania widoków graficznych, rozmieszczenia formularzy, itp. Appgen
na podstawie analizy modelu danych aplikacji generuje aplikację, która zawiera widoki,
obsługę sesji, itp. oraz pozwala przy niewielkim nakładzie pracy dostować jej wygląd i
funkcjonalność do tej pożądanej.
4. Utrzymanie/elastyczność zespołów – każdy człowiek, który choć raz brał udział w
projekcie opartym o appGen może z łatwością przemieszczać się między projektami, gdyż
appGen zawiera zaszyte w sobie wzorce projektowe. Oznacza to, iż dowolna osoba
zapoznana z technologią może szybko rozpocząć prace w toczącym się projekcie.
5. Dokumentacja – istnieją (w wersji mocno podstawowej) generatory dokumentacji
technicznej z modelu danych.
6. Wiedza ekspercka – to w jaki sposób zaprojektowany jest appGen i sposób, w jaki
wygenerowane zostają aplikacje, zawiera w sobie lata doświadczeń ekspertów. Użycie
appGen-a w dziesiątkach projektów o różnej skali i różnych profilach sprawiło, iż jest
aktualnie bardzo stabilna i wydajna, odporna na błędy platforma na której można budować
oprogramowanie.
7. Mniejsze ryzyko błędów – model danych sprawdzany jest formanie pod kątem
prawidłowości modelowania. Generowany kod jest wolny od błędów które może popełnić
programista.
8. Dokładniejsze szacowanie nakładów pracy – wiadomo które części systemu są
wygenerowane, które zaś zostaną zmodyfikowane „ręcznie”.
9. Testowanie/wzorce projektowe – dostępny sposób modelowania wymusza prawidłowe
wzorce projektowe oraz ogranicza większość możliwych do popełnienia błędów logicznych.
Wbudowany zaawansowany walidator modelu pokazuje popełnione błędy i nie pozwala na
wygenerowanie aplikacji, dopóki nie zostaną one poprawione.
10. Zarządzanie zmianą – dowolna zmiana dokonana w modelu pozwala wygenerować nową
wersję aplikacji ze 100% zachowaniem zmian. Generator jest „świadomy” kodu, wskazuje
również miejsca migracji w automatycznych migratorach danych. Takie podejście sprawia,
iż dodanie, usuwanie czy modyfikowanie modelu jest przezroczyste w stosunku do całej
aplikacji.
Gdzie można używać appGen?
Aktualnie appGen można używać w aplikacjach WEB-owych opartych o przeglądarkę JEE. Były
robione próby z generowaniem aplikacji na platformę Android. Dodanie innych środowisk
docelowych jest tylko kwestią odpowiedniego rozszerzenia technologii.
AppGen wykorzystany był przez m.in. w następujących projetkach:
•
Oprogramowanie do tworzenia planów rzeczowo-finansowych.
•
Ruch chorych.
•
System apteczno – magazynowy dla szpitali.
•
System klasy WEB2PRINT.
Technologia ta użyta może zostać przy dowolnym projekcie, zaś konstrukcja techniczna pozwala na
wymianę lub modyfikację tworzonego przy jej użyciu rozwiązania praktycznie w dowolny sposób.
Case studies
Im większy jest projekt rozwijany przez firmę, tym większe są korzyści które odnosi się ze
stosowania technologii. Wpływ na to ma wszystko co zostało poprzednio napisane.
Tworzenie projektu w dużej firmie wiąże się z reguły (w grubym podziale) z:
1. Stworzeniem projektu systemu.
Dokument taki tworzą głównie analitycy systemowi, później zaś na jego podstawie
implementuje się oprogramowanie.
Przy użyciu appGen-a, analityk może pracować od razu na modelu danych, tworząc
jednocześnie dokumentację projektu. W momencie zakończenia modelowania, można
wygenerować pierwszą wersję aplikacji.
2. Implementacja systemu.
Standardowo implementacja następuje na podstawie dokumentacji. Przy użyciu appGen,
główna wersja aplikacji jest generowana. Im więcej elementów generowanej aplikacji
zostanie wykorzystana do budowy tej finalnej, tym szybciej ona powstanie i tym prostsza
będzie w dalszym rozwoju i utrzymaniu.
3. Rozwój i utrzymanie
Wypuszczanie nowych wersji aplikacji, migrowanie danych aplikacji do nowszych wersji
jest zagadnieniem dość angażującym przy normalnym podejściu do tworzenia
oprogramowania.
Appgen samodzielnie zarządza wersjonowaniem danych, bazy danych, migracji między
wersjami, przez co czynność ta staje się praktycznie automatyczna.
Aktualnie appGen jest rozwijany pod kątem aplikacji przeglądarkowych. Jeżeli więc jakaś aplikacja
bazuje na przeglądarce i operuje na danych, zaś jest to aktualnie zdecydowana większość
tworzonych aplikacji, można tu wykorzystać naszą technologię.
Appgen użyty może zostać do stworzenia portalu internetowego, sklepu internetu, oprogramowania
finansowego, CRM, systemu magazynowego, ...