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, ...