Projekty adaptowalne, a Flex

Muszę przyznać, że osobiście jestem wielkim propagatorem stosowania procesów adaptowalnych (ang. adaptive processes) w kontekście wytwarzania aplikacji RIA opartych m.in. o technologię Flex. Co to jest proces adaptowalny? Aby mówić o jakimkolwiek procesie wytwórczym na pewno należy upewnić się, że rozróżniamy pojęcia „proces” i „projekt”. Czyli na początku odpowiedzmy na pytanie, co to jest projekt adaptowalny (ang. adaptive project)? Otóż, protoplastą projektów adaptowalnych są projekty fixe-price (stała cena – bardzo popularne na rynku polskim), których nazwa bierze się stąd, że ich artefaktem wstępnym jest kontrakt fixe-price, czyli taki, w którym jasno i niezmiennie w kontekście procesu produkcyjnego są zdefiniowane wymagania odnośnie projektu (przedsięwzięcia), którym mamy się zająć. Jeżeli mówimy o wymaganiach, to musimy odróżniać wymagania funkcjonalne od niefunkcjonalnych. Wymagania niefunkcjonalne, to np. budżet, harmonogram, itd… wymagania funkcjonalne, to wszystko to co opisuje nam to co mamy pokryć od strony wdrożeniowej (punkty funkcyjne, funkcjonalności itd…). Projekt adaptowalny, to projekt przed którego realizacją podpisujemy kontrakt adaptowalny (którego protoplastą jest kontrakt z otwartymi godzinami ang. open-hours contracts), czyli taki, który zezwala na rozbudowę zakresu projektu od strony wymagań funkcjonalnych w trakcie jego życia na ściśle określonych zasadach. Natomiast proces adaptowalny to sposób realizacji projektu adaptowalnego, w którym w ciągu kolejnych iteracji wymagania funkcjonalne są rozbudowywane oraz adaptowane do wymagań niefunkcjonalnych.
Każdy proces jest uporządkowanym zbiorem faz oraz artefaktów. Fazy mogą być realizowane w sposób kaskadowy (ang. waterfall model), bądź równoległy. W jednym z poprzednich postów wspominałem o metodykach lekkich jak XP (eXtreame Programming). Bardzo dobrą metodyką lekką, która sprawdza się w kontekście adaptowalnego prowadzenia przedsięwzięć RIA, jest SCRUM, jako, że jej stosowanie wymusza m.in. spotkania zespołu pomiędzy kolejnymi fazami/iteracjami procesu, które pozwalają na kontrolowane rozbudowywanie/korygowanie zakresu projektu od strony funkcjonalnej razem z klientem. Porównując chociażby Flex’a z Flash’em, należy stwierdzić, że Flex to takie małe błogosławieństwo dla stosowania procesu adaptowalnego w kontekście wytwarzania RIA (czy nawet w kontekście stosowania programowania parami (ang. pair programming) w RIA). Flex, jako technologia oraz środowisko wytwórcze, pozwala chociażby na zrównoleglenie poszczególnych faz, na dostarczanie szybkich prototypów oraz artefaktów funkcjonalnych do klienta, nie zaburzając przy tym architektury aplikacji oraz płynności samego procesu produkcyjnego. Jego zorientowanie na warstwę prezentacji wymaga chociażby zainteresowania się tematyką UCD (ang. User-Centered Design, usabilty, itd…) oraz włączenia ideii UCD choćby w szczątkowej postaci do procesu produkcyjnego.
Jak stosowanie procesu adaptowalnego, UCD oraz SCRUM, jako „jedność” wygląda w praktyce? No, na pewno wszystkiego tutaj nie opiszę (po szczegóły ad. procesów adaptowalnych zapraszam m.in. do sięgnięcia do publikacji m.in. mojego autorstwa – link tu, i tu ), jako że temat jest dosyć obszerny. Niemniej jednak chcąc wszystko przedstawić w sposób bardzo zwięzły na potrzeby tego wpisu w skrócie wygląda to tak. Zamiast WBS stosuje się FBS (ang. Functional (czasami mówi się Features) Breakdown Structure), który jest drzewiastą reprezentacją modułów, obszarów funkcjonalnych oraz funkcjonalności projektów wraz z wagami realizacyjnymi (priorytety) określonymi przez klienta (czasami, choć rzadko przed stworzeniem FBS’a stosuje się badania fokusowe, aby „wybadać”, czego przyszli użytkownicy (z grupy docelowej) mogą pożądać w aplikacji, od strony funkcjonalności). Na bazie FBS’a tworzone są scenariusze odpowiadające realizacji danych funkcjonalności (np. w postaci diagramów aktywności UML’a) – opisy stanów oraz tranzycji (przejść) między nimi, które następnie są upraszczane (redukowane) w kontekście możliwości Flex’a. Następnym krokiem jest szukanie możliwych kolaboracji danych stanów pochodzących ze scenariuszy odrębnych funkcjonalności, tak, aby zbudować model interakcji pomiędzy odpowiednimi obszarami funkcjonalnymi projektu. Na bazie wszystkiego co powyżej, tworzy się makiety oraz prototypy, które są poddawane testom z użytkownikami (ang. user-tests). Ważne jest to, że przed kreacją makiet jasno określa się interfejsy pomiędzy warstwą prezentacji, a logiką biznesową, tak, aby faza implementacji (logiki biznesowej) mogła zacząć się równolegle z wytwarzaniem GUI. Faza wdrożenia, to iteracyjna i równoległa realizacja połączonych faz projektowania oraz implementacji, – czyli po prostu stosowanie podejścia adaptowalnego w kontekście SCRUM, które skutkuje dostarczaniem kolejnych funkcjonalności systemu przy współpracy z klientem oraz w kolejności, które określają wcześniej zdefiniowane priorytety realizacyjne. Tak to w DUŻYM skrócie wygląda.
Jakby nie było metodologie ad. projektów adaptowalnych to jak dla mnie przyszłość w realizacji złożonych projektów RIA, dodatkowo bardzo dobrze „radzą sobie” z pracą zdalną (ang. telecommuting), dlatego jestem dosyć mocno zaangażowany w ich promocję oraz precyzowanie (Adam pracujący w SAP’ie testował je od strony wdrażania aplikacji programowych, natomiast ja od strony aplikacji multimedialnych (systemów czasu rzeczywistego) – i razem stwierdzamy, że proces adaptowalny daje radę oraz przynosi wymierne rezultaty w stosunku do podejścia konwencjonalnego). Jako, że temat jest z pogranicza zarządzania projektami i technologii Flex, nie chcę już Was więcej zanudzać ;)
Tagi: Artykuły,Flex,Metodyki,Wzorce

FLEX
AIR
PLUGIN'y FLASH
RSS dla każdego








10 komentarzy
wjptak
Osobiscie kilka razy uzywalismy w projektach Flexowych SCRUM’a i musze przyznac, ze spisywal sie (i nadal to robi) swietnie. Bede chcial rozwijac jego zastosowanie w pracy z Flexem.
Czy ktos ma wieksze doswiadczenie z http://www.eclipse.org/epf/ ?
Pozdrowienia,
W.
7 kwi 2008
MALIBOO
Chyba coś tu nie tak: adoptowalny może być kotek w schronisku (polecam), projekt jest adaptowany:)
IMO Trochę za długo i za dużo jak na początek.
7 kwi 2008
Paweł Cichoń
MS Word mi pozamieniał pod myszką, “a” na “o” ;) hehe, to się uśmiałem – zrobiłem sobie Ctrl+C, Ctrl+V zadowolony, że tym razem ładny post z “ę”, “ą” itd… będzie, jak widać jednak i z Word’em trzeba być czujnym. Dzięki za zwrócenie uwagi. ADAPTOWALNY ma być, adaptowany, jak sugerujesz może być projekt, ale to, że może być adaptowany, nie określa tego, że jest to projekt adaptowalny ;) w kontekście IT.
Tak jak pisałem “wymagania funkcjonalne są rozbudowywane oraz ADAPTOWANE do wymagań niefunkcjonalnych”, stąd się to bierze. Choć musze przyznać, że zdarzyło mi się już wczesniej, pewnego razu poprawiać z projektu adaptacyjnego, na adaptowalny ;)
7 kwi 2008
Paweł Cichoń
Inna sprawa poruszyłeś dosyć zabawny wątek z nazewnictwem – adaptowalny, adoptowalny, adaptacyjny, itd… pamiętam czasy, gdy w polskiej literaturze lub na konferencjach pm i nie tylko pojawiał się termin “adaptive …”, rozpoczęła się dyskusja jak powinien być on przełożony na język polski, były osoby które były za tym, aby przetłumaczyć go na “adaptacyjny” … potem było “adaptowany”, a skonczyło się na “adaptowalnym”. I w sumie uważam, że tak jest OK ;)
7 kwi 2008
maliboo
Swego czasu znajomy był oburzony słowem “wsadowy” w kontekście przetwarzania wsadowego (batch). Odpowiedź RJP rozmyła jego obiekcje ;)
IMO powinien być adaptacyjny. Adaptowany: sugeruje jego czasoteraźniejszość ;], adaptowalny – możliwą, aczkolwiek niekonieczną zmienność. Ale nie po to wybrałem path&fame developera by zaprzątać sobie glowę jenzykiem polzkim;)
7 kwi 2008
Paweł Cichoń
Geneza używania terminu “projekt adaptowalny”, a nie “projekt adaptacyjny” przez “ludzi IT/PM” w PL w kontekście tego o czym pisałem w poście, jest taka, że po pierwsze – jak zaczęto uzywać projekt adaptacyjny, m.in. architekci myśleli, że ludzie IT chcą za pomocą IT coś “przebudowac” ;) – chodziło, więc o zaznaczenie różnicy między jednym, a drugim terminem mając na uwadze ich odrębność, po drugie, dokładnie tak jak piszesz – “możliwą, aczkolwiek niekonieczną zmienność” – i tak dokładnie jest, wiadomo, że im mniej odstępstw od zakresu funkcjonalnego nakreślonego w kontrakcie, tym lepiej, stąd teoretycznie może zdarzyć się, że nic/niewiele zmieni się w kontekście wymagan w trakcie życia projektu. Ale OK, tak jak mowisz, ja też “w jenzyku polskim masterem nie jestem” ;) … choć akurat ten temat jest bliski mojemu sercu. Aby być szczerym, niektórzy PM’owie preferują termin “projekt adaptacyjny” i go używają, ja osobiście jestem za “projektem adaptowalnym”.
7 kwi 2008
Paweł Cichoń
A z tym “przetwarzaniem wsadowym”, to dobre jest :))))))
7 kwi 2008
Lax Serious Flex Developer
Ach ludzie IT – deweloperzy, chcieli coś adaptować nawet nie architekci, a zwykli ludzie mogą się pogubić ;)
7 kwi 2008
Teddy
Paweł, Świetny tekst. Ja ostatnio próbuję zgłębić temat FPA – analizy punktów funkcyjnych w kontekście projektów bazujących na Flexie. Ciekaw jestem czy ktos z Was próbował sie kiedys zabierać na poważnie do liczenia pracochłonności projektów RIA?
15 kwi 2008
Paweł Cichoń
Kogo widze, kogo goszcze ;) – czesc Teddy, tak, masz rację, temat FPA w RIA jest bardzo ciekawy, tym bardziej jeżeli łączymy ten temat ze sprzedażą RIA, gdzie należy okreslić możliwie najbardziej precyzyjnie liczbę punktów funkcyjnych (zarówno odnosnie danych, transakcji, złozoności wyjść i wejść (interfejsów) systemu, itd…, oraz tych znanych już z RIA, a nie z software engineering, jak choćby odnośnie stanów systemu (ad. GUI), tranzycji miedzy nimi, obszarów funkcjonalnych, ich wzajemnej tranzycji oraz kolaboracji), których czasochłonność realizacji bezpośrednio rzutuje na wycene projektu. Do tego dochodzi jeszcze QoS, reuzywalność, kwestie migracyjne itd… itd… jest tego troche, zreszta bylo tego duzo w projektach softwareowych (sam pewnie znasz to o wiele lepiej z własnego doświadczenia) a w RIA jeszcze więcej. No, na pewno FPA jest niesamowicie przydatne nie tylko przy szacowaniu kosztow i pracochlonnosci projektu, zapotrzebowania na zasoby oraz złożoności systemu ale przykładowo i przy zarządzaniu zmianami. W sumie odnosnie FPA, nie ma co sie czarować każdy ma swój sposób wynikający poniekąd z doświadczenia oraz intuicji i często do FPA podchodzi sie przez pryzmat przeszlych projektów, ich porównywania m.in. od strony funkcjonalnej itd… (choc w sumie nie powinno to być wyznacznikiem samym w sobie, nikt sie nie przyznaje, ale po cichu wie, że tak jest ;)) Co do samych metod, zapewne te z software development sa Ci bardzo dobrze znane, logika itd… co do samego Flexa, biorę dodatkowo pod uwagę najogolniej mówiąc stanowość oraz “komponentowość funkcjonalną” takiej aplikacji oraz jej zorientowanie na czas (przy precyzowaniu wymaganego QoS) – zresztą, na priv zagadam do Ciebie. No, jak zawsze poruszasz bardzo ciekawe problemy ;)
23 kwi 2008
Skomentuj “Projekty adaptowalne, a Flex”