OPHELIA - zintegrowane środowisko wytwarzania oprogramowania
Rozdział ten jest próbą podsumowania projektu Ophelia, którego celem jest opracowanie środowiska integrującego istniejące narzędzia wytwarzania oprogramowania we wspólną platformę poszerzającą ich funkcjonalność. Prezentujemy podstawowe założenia projektu oraz niektóre z nowych koncepcji, które okazały się bardzo interesujące z punktu widzenia inżynierii oprogramowania, jak traceability czy też dostęp do artefaktów projektu za pomocą uogólnionych interfejsów.
Spis treści
- OPHELIA - zintegrowane środowisko wytwarzania oprogramowania [1]
- Wstęp
- Inne pakiety integrujące narzędzia programistyczne
- Rational Suite
- Eclipse
- Sourceforge Enterprise
- OPHELIA - środowisko integrujące narzędzia i elementy projektu
- Dodatkowe usługi platformy OPHELIA
- Narzędzia migracji danych (integratory)
- Warstwa usług ogólnych: Abstract Tool Services
- Usługa powiązań między obiektami: traceability
- Usługa powiadomień o zmianach
- Globalne zarządzanie wiedzą
- Metryki
- Orpheus - implementacja architektury OPHELIA
- Podsumowanie działalności projektu
- Zarys planów na przyszłość
- Podsumowanie
- Bibliografia
Wstęp#
Obecnie jednym z najbardziej palących problemów inżynierii oprogramowania jest utrzymywanie spójności między artefaktami projektu. Dla przykładu, pamiętanie o odzwierciedlaniu zmian w kodzie źródłowym w opisujących go diagramach UML jest koszmarem większości programistów, chyba, że czynność ta jest wspierana przez narzędzia CASE wyposażone w możliwości reinżynierii oprogramowania (ang. round-trip engineering) oraz integrację ze środowiskiem programistycznym. Ten sam problem dotyczy oczywiście aktualizacji dokumentacji, testów, harmonogramów i innych elementów projektu. Jest to zresztą ogólna trudność w reagowaniu na zmiany i propagowanie tych zmian wewnątrz projektu tak, by utrzymać spójność jego elementów. Dodatkowy koszt wymagany przez skrupulatną analizę zależności i na przykład formalny proces propagacji zmian jest zazwyczaj większy niż potencjalne zyski. Dlatego też znaczny odsetek projektów informatycznych porzuca wszelką dokumentację i modele UML po przekroczeniu pewnego etapu skomplikowania. W ścisłej integracji narzędzi programistycznych widzimy możliwość częściowego zautomatyzowania większości pracochłonnych i nużących czynności związanych z propagacją zmian, a przez to przyczynienie się do zwiększenia jakości projektu. Niestety, jak to już wspomnieliśmy, większość osiągalnych na rynku narzędzi to produkty zamknięte, komercyjne, którym brakuje możliwości integracji z innymi (szczególnie pochodzącymi od konkurencyjnych firm).
Można wyróżnić dwa podejścia do rozwiązania powyższego problemu integracji narzędzi. Pierwsze wymaga wyprodukowania, lub powiązania ze sobą takiego zestawu narzędzi, który pozwoli na zbudowanie ujednoliconego, rozproszonego środowiska zarządzającego wszystkimi elementami projektu. Przez rozproszenie mamy tu na myśli zarówno geograficzne rozproszenie wykonawców projektu, jak i komponentów systemu (np. kod źródłowy modułu, który produkują jedni wykonawcy projektu znajduje się na ich lokalnym serwerze, kod źródłowy innego modułu znajduje się w fizycznie innej lokalizacji, a jednak logicznie widziane są one jako spójna całość). Istnieją producenci oprogramowania dostarczający zestawy o tym charakterze, jak np. [WWW2003a] [WWW2003b] [WWW2003c] . Komercyjne pakiety są jednak zwykle zbyt drogie, i przez to nieosiągalne, dla małych bądź średnich firm (z drugiej strony można postawić pytanie o celowość tak skomplikowanych rozwiązań w przypadku projektów o niskim nakładzie, tym problemem się nie zajmujemy). Pakiety o charakterze open-source, takie jak [WWW2003c] wymagają zaś przestawienia się na dedykowane dla danego pakietu narzędzia, co może być postrzegane jako trudność w firmach komercyjnych.
Innym podejściem jest próba wytworzenia szkieletowej architektury, która umożliwiałaby zestawienie istniejących narzędzi i utworzenie z nich logicznie jednej platformy służącej wytwarzaniu oprogramowania. Taka architektura musiałaby być nie tylko sumą narzędzi, które by integrowała, ale także przynosić pewną wartość dodaną, na przykład w formie ujednoliconego "widoku" elementów projektu (bez konieczności odwoływania się do narzędzi, które zostały użyte do ich utworzenia). Stąd już jedynie krok dzieliłby tę architekturę od możliwości definiowania relacji między elementami projektu na właśnie takim "abstrakcyjnym" poziomie, możliwości przechwytywania i generowania zdarzeń o zmianach i tym podobnych. Projekt OPHELIA jest przykładem właśnie takiego podejścia do integracji narzędzi.
OPHELIA jest owocem pracy sześciu partnerów akademickich i przemysłowych. Wkład autorów niniejszego rozdziału w projekcie ogniskował się na budowie modułu śledzenia zależności między elementami projektu (ang. traceability), jego integracji z modułem powiadamiania o zmianach (ang. notification), implementacji modułu zarządzania wymaganiami oraz na integracji z platformą komercyjnego programu do układania harmonogramów, Microsoft MS Project. Wyzwaniem było zarówno udostępnienie danych z MS Projecta dla celów OPHELII, jak i zdefiniowanie powiązań i zdarzeń na poziomie abstrakcyjnych elementów projektu, który ten projekt definiuje.
Pozostała część niniejszej pracy opisuje podstawowe założenia projektu OPHELIA oraz nasze doświadczenia uzyskane podczas pracy nad integracją narzędzi różnych typów. W podrozdziale drugim przedstawiamy i porównujemy z OPHELIĄ istniejące pakiety integrujące narzędzia wytwarzania oprogramowania. Podrozdział trzeci opisuje projekt OPHELIA w szczegółach, prezentując architekturę i komponenty systemu oraz strategie integracji istniejących narzędzi. W podrozdziale czwartym opisujemy ciekawe perspektywy, jakie może wnieść użycie technologii OPHELIA. Podrozdział piąty prezentuje implementację koncepcji OPHELII - system Orpheus. Podrozdział szósty to prezentacja dotychczasowych dokonań w projekcie i zarys planów na przyszłość.
Inne pakiety integrujące narzędzia programistyczne#
Rational Suite#
Eclipse#
| Cecha | OPHELIA(Orpheus) | Rational Suite | Eclipse | Sourceforge Enterprise |
| Otwartość środowiska (publiczne interfejsy) | Tak | Nie* | Tak | Nie |
| Open source | Tak (z wyjątkiem modułu harmonogramowania) | Nie | Tak (z wieloma komercyjnymi pluginami) | Tak/Nie |
| Praca grup rozproszonych | Tak | Tak | Nie | Tak |
| Zarządzanie wymaganiami | Tak | Tak | Nie | Tak * |
| Zarządzanie harmonogramem | Tak | Nie | Tak * | Tak |
| Zarządzanie błędami | Tak | Tak | Tak * | Tak |
| Repozytorium plików | Tak | Tak | Tak | Tak |
| Śledzenie powiązań między elementami projektu | Tak | Tak * | Nie | Tak * |
| Wsparcie modelowania CASE | Tak | Tak | Tak * | Nie |
| Metryki | Tak | Tak | Nie | Tak * |
| Środowisko wytwarzania oprogramowania IDE | Tak * | Tak* | Tak | Nie |
| Moduł testowania oprogramowania | Nie | Tak | Tak * | Nie |
| Definicja formalnego procesu wytwarzania oprogramowania | Tak * | Tak | Nie | Tak |
Sourceforge Enterprise#
Istnieje wersja oprogramowania do pracy grupowej o nazwie Sourceforge Enterprise [WWW2003d], która jest dedykowana dla instytucji komercyjnych. Składa się ona z internetowego systemu poszerzonego o dedykowane narzędzia do zarządzania projektem, śledzenia wymagań i inne moduły.
OPHELIA - środowisko integrujące narzędzia i elementy projektu#
Główną ideą OPHELII jest oparcie się na definicji ogólnych interfejsów programowych do różnych typów narzędzi. Te ogólne interfejsy stanowią punkt dostępu do elementów projektu i do samego narzędzia. Przykładowo, narzędzie zarządzania wymaganiami posiada ściśle zdefiniowany (ale ogólny) interfejs pozwalający na dostęp do każdego wymagania, pobranie jego właściwości (nazwy, atrybutów), zapisywanie się na powiadomienia w przypadku wprowadzenia do danego wymagania zmian. Aby udostępnić dane narzędzie zarządzania wymaganiami dla OPHELII, musi ono udostępnić ten właśnie interfejs (wewnętrznie, bądź przy pomocy pośredniego adaptera). Wszystkie specyfikacje interfejsów OPHELII są zdefiniowane w języku IDL dla technologii CORBA.
Aktualnie w OPHELII jest zdefiniowanych wiele interfejsów do najpopularniejszych typów narzędzi wytwarzania oprogramowania. Taki "pakiet" dla danego narzędzia nazywa się MIS (ang. Module Interface Specification). W skład podstawowej dystrybucji OPHELII wchodzą następujące MISy:
- Usługi jądra platformy OPHELIA (ang. Kernel services)
- Moduł wymagań (ang. Requirements module)
- Moduł modelowania oprogramowania (ang. Modeling module)
- Moduł zarządzania harmonogramem projektu (ang. Project management module)
- Moduł metryk oprogramowania (ang. Metrics module)
- Moduł zarządzania błędami (ang. Bug tracking module)
- Moduł repozytorium plików (ang. Repository module)
- Moduł zarządzania wiedzą - zunifikowanego dostępu do dokumentacji (ang. Knowledge management module)
- Moduł zarządzania powiązaniami elementów projektu (ang. Traceability Module)
- Moduł powiadamiania o zmianach i komunikatów (ang. Notifications module)
W zależności od dostępnego oprogramowania i pożądanej konfiguracji, można więc zbudować wiele konfiguracji platformy OPHELIA. Ponieważ interfejsy są wyspecyfikowane ogólnie, więc konkretna implementacja (narzędzie) nie gra większej roli dla samej platformy. Oczywiście cicho zakładamy, iż narzędzia już eksponują stosowne implementacje interfejsów OPHELII. Jeśli tak nie jest, co na razie przynajmniej jest regułą, należy je do OPHELII dostosować. Można wyróżnić trzy typy takiego dostosowania, w zależności od specyfiki narzędzia, co przedstawia tabela2.
| Typ narzędzia | Kroki potrzebne do integracji z OPHELIĄ |
| Narzędzia lokalne (ang. desktop) | Należy napisać komponent serwera, który implementuje stosowny MIS. Do samego narzędzia należy dopisać wtyczkę komunikującą się z serwerem. |
| Narzędzia klient-serwer | Należy napisać rozszerzenie komponentu serwera o implementację stosownego interfejsu MIS. |
| Narzędzia internetowe (ang. thin client) | Należy napisać adapter lub moduł serwera implementujący stosowny interfejs MIS. |
Owym magnesem mogą stać się dodatkowe serwisy i programy, które działają już na warstwie "abstrakcyjnych", uogólnionych interfejsów OPHELII. Można więc wydzielić mechanizmy bezpieczeństwa, administracji projektami i użytkownikami, ujednolicone adresowanie obiektów, mechanizm zdarzeń i ich propagacji, powiązań elementów projektu między sobą czy też wreszcie powiadamiania o zmianach dla użytkowników. Architektura OPHELII jest zaprezentowana na rysunku 1.
Dodatkowe usługi platformy OPHELIA#
Narzędzia migracji danych (integratory)#
W OPHELII obecnie istnieje integrator pozwalający na półautomatyczną konwersję między diagramami klas i przypadków użycia (ang. use-case diagrams) a harmonogramem projektu. Podobnie można wyobrazić sobie aplikacje łączące moduł wymagań z modułem modelowania, kodu z dokumentacją i tym podobnie. Oczywiście funkcjonalność integratorów opartych jedynie o migrację danych jest ograniczona, ponieważ nasilają one jedynie efekt redundancji informacji w projekcie. Mamy nadzieję, iż w zależności od typów modułów integracja ta może być jednak obustronna (synchronizacja) i w znacznym stopniu zautomatyzowana. Można wyobrazić sobie usługi działające w tle, które będą w stanie doprowadzać dane z różnych modułów do stanu spójności. Stopień zaawansowania aplikacji integrującej determinuje tutaj na ile owa synchronizacja będzie zautomatyzowana (OPHELIA jedynie dostarcza mechanizmy do komunikacji międzymodułowej).
Warstwa usług ogólnych: Abstract Tool Services#
Interfejsy MIS definiują publiczny i uogólniony sposób dostępu do danego typu narzędzia internetowego. Eksponują one obiekty, które dany moduł udostępnia, zdarzenia, jakie generuje i inne informacje. Jednak dla każdego typu modułu ten zestaw cech jest inny. Za pomocą ATSu moduły i programy zewnętrzne są w stanie manipulować obiektami OPHELII, zapisywać się na powiadomienia o nich, dodawać relacje i tym podobne. Na pewien sposób ATS stanowi uogólnienie i tak już ogólnych MISów.
Usługa powiązań między obiektami: traceability#
W projekcie informatycznym mogą już istnieć pewne relacje, na przykład zaszyte w konkretnych narzędziach lub utworzone przez opisywane wyżej integratory. Mapowanie tych relacji do traceability przedstawia tabela 3.
| Typ relacji | Opis |
| Wewnątrzmodułowe | Relacje znajdujące się w konkretnych narzędziach, np. zależnościowe między plikami w kodzie źródłowym. Takie relacje należy ręcznie wprowadzić do modułu traceability. Na razie automatyzacja w tym zakresie jest słaba. |
| Zewnętrzne dodawane niejawnie | Tworzone przez same komponenty OPHELII, na przykład integratory. |
| Zewnętrzne dodawane jawne | Tworzone jawnie przez użytkowników OPHELII w aplikacji klienckiej modułu traceability. |
Usługa powiadomień o zmianach#
Narzuca się pytanie, czy w przypadku skomplikowanych i gęstych grafów zależności między elementami projektu nie zajdzie sytuacja ignorowania powiadomień przez użytkowników. Wydaje się, że ta sytuacja implikuje głębszy problem z architekturą projektu. Cena użyteczności powiadomień nie jest nam jednak na razie znana i jej zbadanie jest ważnym celem pilotowych wdrożeń platformy.
Globalne zarządzanie wiedzą#
Szczególnie interesujące z technicznego punktu widzenia jest to, że sam moduł zarządzania wiedzą jedynie wysyła zapytanie do ATSu i później składa z informacji uzyskanych z modułów całą dokumentację. W efekcie więc to moduł danego narzędzia generuje takie informacje na temat danego obiektu, by były one jak najbardziej reprezentatywne.
Metryki#
Orpheus - implementacja architektury OPHELIA#
| Typ narzędzia | Instancja w produkcie Orpheus |
| Usługi jądra platformy OPHELIA | Orpheus Broker, implementacja własna, open-source |
| Moduł wymagań | DRES, implementacj a własna, open-source |
| Moduł modelowania oprogramowania | ArgoUML, produkt open-source |
| Moduł zarządzania harmonogramem projektu | Microsoft Project, produkt komercyjny Moduł serwera, implementacja własna, open-source |
| Moduł zarządzania błędami | Bugzilla, produkt open-source Moduł serwera, implementacja własna, open-source |
| Moduł metryk oprogramowania | The Metrix, implementacja własna, open-source |
| Moduł repozytorium plików | CVS, produkt open-source Adapter udostępniający dane dla OPHELII, implementacja własna, open-source |
| Moduł zarządzania wiedzą | Knowledge Module, implementacja własna, open-source |
| Moduł zarządzania powiązaniami elementów projektu | Traceability Module, Traceplough, implementacja własna, open-source |
| Moduł powiadamiania o zmianach i komunikatów | Notification Module, Traceplough, implementacja własna, open-source |
| Usługi migracji danych | Moduł modelowania - > Moduł zarządzania harmonogramem, implementacja własna, open-source |
| Portal internetowy | Portlet dla Apache Jetspeed, implementacja własna |
Tabela 4 prezentuje zestawienie typów narzędzi i produktów użytych jako ich konkretne instancje w produkcie Orpheus.
Podsumowanie działalności projektu#
Pierwsze problemy pojawiły się już na tym etapie, gdy przy definiowaniu interfejsów MIS należało zdecydować się na określenie granularności, z jaką eksponowane są elementy projektu poszczególnych typów (na przykład: całe diagramy UML, czy pojedyncze ich części składowe).
Niedługo po wykrystalizowaniu się koncepcji architektury powstały pomysły na jej wykorzystanie w celach dużo śmielszych niż oryginalnie zakładane w planie projektu. Okazało się, że OPHELIA umożliwia wprowadzenie nowych usług jak śledzenie powiązań między obiektami lub metryki sterowane zdarzeniami, które przed momentem zaistnienia OPHELII były trudne, lub niemożliwe do realizacji. W dalszej perspektywie postanowiono udostępnić użytkownikom portal internetowy, który miał stać się scentralizowanym punktem dostępu do narzędzi i usług platformy.
Główne zadania programistyczne zostały przydzielone na lato i jesień roku 2002, pod koniec którego powstała wersja alfa produktu Orpheus. Wersja beta, oficjalnie opublikowana latem roku 2003 jest przedmiotem wdrożeń u partnerów przemysłowych i źródłem pierwszych doświadczeń z użycia w prawdziwych projektach. Wyniki nie są jeszcze znane autorom w momencie pisania tej pracy.
Zarys planów na przyszłość#
Akademiccy członkowie projektu w szczególności cenią sobie nowe perspektywy i możliwości analizy środowiska wytwarzania oprogramowania. Potencjalne kierunki badawcze to między innymi:
- Specyfikacje pozostałych (innych) typów narzędzi nie uwzględnionych obecnie w OPHELII (np. analiza ryzyka, workflow, testowanie).
- Inteligentne monitorowanie procesu wytwarzania oprogramowania w oparciu o metryki generowane w odpowiedzi na zdarzenia oraz analizę danych historycznych.
- Włączenie formalnej definicji procesu obiegu dokumentów i artefaktów programowych do specyfikacji platformy.
- Ściślejsza integracja ze środowiskami IDE jak Eclipse oraz analiza zysków i kosztów wprowadzenia OPHELII do procesu wytwarzania oprogramowania.
- Dodanie nowych technologii podstawowych do jądra w technologii CORBA (np. Web Services).
Podsumowanie#
W momencie publikacji tej pracy, wersja beta produktu Orpheus przechodzi fazę ewaluacji u użytkowników przemysłowych. Oczekujemy, iż przyniosą one odpowiedzi na wiele pytań dotyczących zarówno używalności samej koncepcji scentralizowanej architektury, jak i poszczególnych usług o nią opartych.
Do pewnego stopnia OPHELIA może być postrzegana jako rywal dla produktów komercyjnych wspomnianych w podrozdziale 2. Wydaje się nam jednak, że w duchu open-source, jej istnienie może jedynie wspomóc inne produkty i zapoczątkować ruch integracyjny wśród producentów oprogramowania.
Bibliografia#
| [BOL2003] | C. Boldyreff i R. Dewar, Environments to Support Collaborative Software Engineering., 2003, 2nd Workshop on Cooperative Supports for Distributed Software Engineering Processes, Benevento, Italy, March 25. |
| [DEW2003] | R. Dewar i M. Smith, The OPHELIA Traceability Layer., 2003, 2nd Workshop on Cooperative Supports for Distributed Software Engineering Processes, Benevento, Italy, March 25. |
| [HAP1999] | M. Hapke, A. Jaszkiewicz i P. Kominek, Integrated tools for project scheduling under uncertainty (in Polish)., 65--76, 1999, Proceedings of 1st National Conference on Software Engineering, Kazimierz Dolny 11-13.10.1999, Informatyka Stosowana S4/99, Politechnika Lubelska. |
| [HAP2000] | M. Hapke, A. Jaszkiewicz, P. Kominek i A. Slowinski, Integrated tools for software project scheduling under uncertainty., 65--76, 1999, (P. Brucker, S. Heitmann, J. Hurink, S. Knust (Eds.), Proceedings of 1st National Conference on Software Engineering, Kazimierz Dolny 11-13.10.1999, Informatyka Stosowana S4/99, Politechnika Lubelska. |
| [HAP2001] | M. Hapke, A. Jaszkiewicz i S. Perani, OPHELIA - Open platform and methodologies for development tools integration in a distributed environment., 189--198, 2001, Proceedings of 3rd National Conference on Software Engineering, Otwock/Warsaw. |
| [KOW2002] | K. Kowalczykiewicz i D. Weiss, Traceability: Taming uncontrolled change in software development., 2002, Proceedings of 4th National Conference on Software Engineering, Tarnowo Podgórne, Poland. |
| [WWW2003a] | http://www.rational.com/products/entstudio/index.jsp. |
| [WWW2003b] | http://www.eclipse.org. |
| [WWW2003c] | http://www.sourceforge.net. |
| [WWW2003d] | http://www.vasoftware.com/products. |
[#1] OPHELIA jest wspólnym projektem realizowanym przez sześciu partnerów ze środowisk akademickich i przemysłowych, współfinansowanym z funduszy piątego programu ramowego Unii Europejskiej. Numer grantu: IST-2000-28402/ IST-2000-28402D. http://www.opheliadev.org

