Metodyka tworzenia oprogramowania dla systemów zarządzania wiedzą oparta na języku UML
Spis treści
- Metodyka tworzenia oprogramowania dla systemów zarządzania wiedzą oparta na języku UML[1]
- 1. Wprowadzenie
- 2. Notacja
- 3. Model cyklu życia
- 4. Artefakty i role
- 4.1. Ekspert dziedziny wiedzy
- 4.2. Projektant wymagań wiedzy
- 4.3. Projektant funkcjonalności
- 4.4. Projektant struktur wiedzy
- 4.5. Projektant struktur treści
- 4.6. Architekt
- 4.7. Wykonawca aplikacji wiedzy
- 4.8. Wykonawca repozytorium treści
- 5. Proces wytwórczy
- 6. Podsumowanie
- Bibliografia
1. Wprowadzenie#
Bardzo istotnym aspektem metodyki wytwarzania oprogramowania jest wykorzystywana notacja i sposób opisu. Ponieważ metodyka powinna być zrozumiała dla wszystkich, nawet niedoświadczonych, uczestników procesu, bardzo ważna jest komunikatywność prezentacji. Najbardziej komunikatywne są notacje wizualne, zatem proponujemy tutaj wykorzystanie standardowej notacji graficznej UML (Unified Modelling Language) [BOCH2002], [MULL2000], [FOWL2002]. Notacja ta sprawdziła się w przypadku modelowania systemów oprogramowania (jak również systemów i procesów biznesowych) i jest zrozumiała dla coraz szerszej rzeszy ich twórców. Opis tych elementów UML-a, które zostały zastosowane w naszej metodyce jest przedstawiony w następnej sekcji.
W kolejnych sekcjach zostaną zaprezentowane poszczególne elementy proponowanej przez nas metodyki. Na początku, przedstawiony zostanie model cyklu życia, czyli podział na fazy wytwórcze oraz dyscypliny grupujące podobne czynności. W następnej sekcji zostaną opisane najważniejsze role w procesie wytwórczym oraz artefakty (produkty), za które są one odpowiedzialne. Należy zaznaczyć, że opis ten zawiera jedynie role, które są najściślej związane z samym procesem wytwórczym oraz z wytwarzaniem artefaktów dotyczących właściwego przetwarzania wiedzy. Pominęliśmy np. role związane z dyscypliną testowania czy dyscypliną zarządzania projektem. Role te są oczywiście bardzo istotne, ale uznaliśmy, że ich opis wykracza poza tematykę niniejszej pracy. Kolejna sekcja zawiera opis przepływu pracy w ramach realizacji dwóch rodzajów iteracji cyklu wytwórczego. Wreszcie, ostatnia sekcja zawiera podsumowanie.
2. Notacja#
Rola, w rozumieniu opisywanej tu metodyki, to osoba lub grupa osób będących członkami zespołu tworzącego system oprogramowania, odpowiedzialnych za wykonywanie określonego zakresu czynności i wytwarzanie określonych artefaktów. Warto podkreślić, że członek zespołu może pełnić kilka ról. Rola jest elementem modelu stanowiącym klasę w rozumieniu języka UML, o odpowiednim stereotypie (<
Artefakt to element informacyjny, który jest tworzony, modyfikowany lub wykorzystywany przez proces wytwarzania oprogramowania. Artefakt wyznacza zakres odpowiedzialności roli i podlega kontroli zmian. Artefaktem może być cały model, element modelu, dokument czy też element oprogramowania (program). Artefaktem nie jest natomiast diagram, który stanowi tylko wizualizację jakiegoś fragmentu modelu. Podobnie jak w przypadku roli, artefakt jest klasą o odpowiednim stereotypie (<
Znaczenie diagramu klas (ang. class diagram) jest identyczne z jego znaczeniem w języku UML. Na diagramach klas prezentowanych w niniejszej pracy występują role, artefakty oraz relacje między nimi. Wykorzystywane są relacje asocjacji, agregacji oraz dziedziczenia. W opisie prezentowanej tu metodyki można znaleźć dwa rodzaje diagramów klas. Pierwszy rodzaj przedstawia powiązania między artefaktami, a drugi rodzaj – powiązania między rolą i artefaktami, które ta rola używa (stereotyp <
Diagram czynności (tak jak to definiuje język UML), stanowi graficzną reprezentację przepływu kontroli. Na diagramie umieszczamy stan początkowy i końcowy oraz stany pośrednie. Stany określają wykonywane czynności. Przejścia między stanami następują po zakończeniu trwania czynności i są zaznaczane strzałkami. Przejście do następnej czynności może być obwarowane pewnym warunkiem, który opisany jest obok strzałki. Możliwe jest też równoległe wykonywanie czynności, co zaznaczane jest poziomymi belkami (synchronizacja początkowa i końcowa). Diagramy czynności w naszej metodyce służą do prezentacji przepływu pracy w ramach poszczególnych iteracji.
3. Model cyklu życia#
Cykl iteracyjny wydaje się być szczególnie uzasadniony w przypadku tworzenia systemów wspomagających zarządzanie wiedzą. W takich systemach bardzo istotne jest bowiem zapewnienie funkcjonowania procesu obiegu wiedzy ściśle zgodnie z oczekiwaniami użytkowników. Taki proces obejmuje szeroki zakres bardzo różnych i zmiennych czynności biznesowych. W związku z tym, tylko elastyczne podejście iteracyjne pozwala zapanować nad zmieniającymi się wymaganiami i zapewnić możliwość ciągłej weryfikacji. Ważnym dodatkowym uwarunkowaniem jest konieczność stopniowego rozszerzania funkcjonalności systemu wraz ze stopniowym wdrażaniem cyklu obiegu wiedzy w organizacji. Proces iteracyjny budowy systemu daje niewątpliwie takie możliwości.
Podstawowym artefaktem, w oparciu o który sterowany jest proponowany przez nas proces iteracyjny, jest przypadek użycia (patrz: sekcja 4.2). Stanowi on jedyny i wystarczający miernik przyrostu funkcjonalności systemu. Uzyskujemy to dzięki temu, że przypadki użycia stanowią opis zamkniętego fragmentu funkcjonalności, o ściśle określonej interakcji początkowej (życzenie użytkownika) i ściśle określonej wartości dostarczonej na końcu (oczekiwania użytkownika). Dzięki temu, możliwa jest budowa systemu „przypadek po przypadku”. Zrealizowanie kolejnego przypadku użycia oznacza, że system wzbogacił się o konkretną dla użytkownika wartość z punktu widzenia jego oczekiwań od systemu. Oczywiście, tutaj „zrealizowanie” oznacza przejście przez wszystkie dyscypliny produkcji oprogramowania, łącznie z testowaniem i oceną użytkowników.
4. Artefakty i role#
W dalszej części opisu zajmiemy się głównie Komponentami konfigurowanymi, gdyż ich parametryzacja stanowi zasadniczą część czynności podczas tworzenia SWZW. Najważniejsze komponenty tego typu zostały przedstawione na rysunku 3. i w tabeli 1.
| Nazwa komponentu | Artefakty pomocnicze | ||
| Projektowanie wiedzy i funkcjonalności | Projektowanie systemu wiedzy | Implementacja systemu wiedzy | |
| Obsługa słownika pojęć | Specyfikacja słownika pojęć | Schemat słownika pojęć | Słownik pojęć |
| Repozytorium treści | -- brak -- | Indeks semantyczny; Schemat treści | Baza treści |
| Kategoryzacja treści | Specyfikacja mapy wiedzy | -- brak -- | Mapa wiedzy |
| Obsługa schematu wiedzy | Specyfikacja schematu wiedzy | Schemat wiedzy | -- brak -- |
| Obsługa wnioskowania | -- brak -- | Projekt wnioskowania | Program wnioskujący |
4.1. Ekspert dziedziny wiedzy#
4.2. Projektant wymagań wiedzy#
Specyfikacja słownika pojęć powinna zawierać opis dziedziny wiedzy obejmowanej przez słownik oraz wymagania pozafunkcjonalne dotyczące słownika. Dziedzina wiedzy opisana wcześniej przez Eksperta dziedziny wiedzy powinna zostać tu przedstawiona w sposób formalny, przy pomocy zestawu tematów definiujących zawartość słownika. Tematy posłużą do zdefiniowania pojęć (ang. topic) w ramach Schematu słownika pojęć.
Specyfikacja mapy wiedzy to opis zbioru kategorii, według których obiekty z Bazy treści zostaną wyselekcjonowane i pogrupowane w ramach pojedynczej Mapy wiedzy. Specyfikacja mapy wiedzy definiuje także sposób materializacji Mapy wiedzy (manualny, automatyczny).
Specyfikacja schematu wiedzy to model klas (w języku UML) schematu wiedzy oraz nieformalny (tekstowy) opis tego modelu. Klasy modelu reprezentują poszczególne typy i postaci wiedzy istniejące w systemie (procedury, obrazy struktur, definicje procesów biznesowych, programy wnioskujące itp.).
4.3. Projektant funkcjonalności#
Model przypadków użycia grupuje aktorów i przypadki użycia, którzy umieszczani są na diagramach przypadków użycia. Zarówno notacja modelu jak i jego znaczenie jest identyczne jak w języku UML (patrz np. [BOCH2002]).
Scenariusz przypadku użycia ilustruje sposób wykonania przypadku użycia. Scenariusz taki stanowi zatem jedną z instancji przypadku użycia (podobnie jak obiekt stanowi instancję klasy). Dla każdego przypadku użycia należy (w miarę możliwości) wyspecyfikować wszystkie możliwe scenariusze. Scenariusz przypadku użycia powinien mieć formę krótkiego opisu tekstowego (np. kolejno numerowane zdania) zgodnego z wybraną gramatyką dla scenariuszy przypadków użycia (patrz [GRAH1995]).
4.4. Projektant struktur wiedzy#
Schemat wiedzy prezentuje w ujęciu globalnym informacje o wiedzy (strukturalnej, proceduralnej i deklaratywnej), składowanej w Bazie treści oraz o powiązaniach pomiędzy komponentami wiedzy różnych typów. Schemat wiedzy zrealizowany jest jako zbiór obiektów, oparty o odpowiedni model klas, zdefiniowany w Specyfikacji schematu wiedzy.
Projekt wnioskowania zawiera wyszczególnienie obszarów funkcjonalnych systemu, które zostaną zrealizowane z wykorzystaniem mechanizmów wnioskowania oraz szczegółowy opis realizacji tych mechanizmów (rodzaj wnioskowania, specyfikacja odpowiedniego narzędzia/systemu wspomagającego wnioskowanie itp.).
4.5. Projektant struktur treści#
Indeks semantyczny to część Repozytorium treści. Indeks przechowuje informacje o powiązaniach pomiędzy klasami w Schemacie treści oraz o faktycznych powiązaniach pomiędzy obiektami w Repozytorium treści, co podczas nawigacji po Repozytorium pozwala uzyskać informacje o kontekście obiektów.
Schemat treści definiuje model danych dla Repozytorium treści. W istocie schemat treści będzie traktowany również jako warstwa metadanych Repozytorium treści, poprzez którą będzie realizowany dostęp do właściwej zawartości.
4.6. Architekt#
Architektura logiczna reprezentuje strukturę organizacyjną tworzonego systemu (logiczne warstwy systemu, główne komponenty oraz interfejsy). Notacja Architektury oparta jest na diagramach komponentów (ang. component diagrams) udostępnianych przez język UML. Dodatkowo, stosowane są diagramy interakcji umożliwiające prezentację dynamiki działania systemu. W naszej metodyce, architektura jest oparta na ustalonym szkielecie architektonicznym służącym tworzeniu SWZW (np. szkielet ICONS). Należy tu jednak podkreślić, że opis struktury tego szkieletu leży poza zakresem niniejszej pracy, i jest przedmiotem osobnych opracowań (patrz np. [ICON2002b]).
Komponent reprezentuje fragment kodu programu (źródłowy, binarny, wykonywany) lub inny fizyczny, wymienialny składnik systemu (np. skrypt), który realizuje specyficzną funkcjonalność, może udostępniać swoje funkcje innym komponentom i sam może korzystać z funkcji oferowanych przez inne komponenty. Komponent może być złożony z komponentów składowych.
4.7. Wykonawca aplikacji wiedzy#
Mapa wiedzy to zbiór obiektów z Bazy treści pogrupowanych według kategorii zdefiniowanych w specyfikacji mapy wiedzy. W systemie może istnieć wiele Map wiedzy, także tworzonych przez użytkowników końcowych systemu.
Program wnioskujący to program realizujący mechanizmy wnioskowania dla wybranego obszaru funkcjonalnego systemu. Może być zaimplementowany w języku programowania reguł wiedzy (np. DLV), programowania w logice (np. Prolog), systemie eksperckim itp.
4.8. Wykonawca repozytorium treści#
5. Proces wytwórczy#
Podstawą dla rozpoczęcia projektu i samej iteracji rozpoczęcia (rysunek 13) jest powstanie opisu dziedziny wiedzy. Na tej podstawie, Architekt dokonuje wyboru struktur reprezentacji wiedzy, a Kierownik projektu dokonuje planowania całego projektu (w tym – podział na iteracje). Następnie równolegle (przez Projektanta funkcjonalności i Projektanta wymagań wiedzy) wykonywane są czynności, których sumaryczny rezultat daje wstępny obraz funkcjonalności systemu i zawartości wiedzy. W zależności od potrzeb dotyczących zawartości wiedzy, powinny powstać artefakty wybrane spośród wymienionych w sekcji 4.2.
Iteracja konstrukcyjna (rysunek 14) rozpoczyna się od czynności polegających na szczegółowym zaprojektowaniu fragmentu funkcjonalności opisywanego przez wybrane dla tej iteracji przypadki użycia. Są tutaj tworzone m.in. szczegółowe scenariusze przypadków użycia. Na podstawie projektu funkcjonalności, Architekt dokonuje szczegółowego opisu dynamiki systemu w wybranym zakresie, czyli tworzy diagramy interakcji będące fragmentem architektury logicznej. Równocześnie, Projektant struktur wiedzy tworzy projekt struktur reprezentacji wiedzy (schemat słownika pojęć i schemat wiedzy). W ramach implementacji systemu wykonywanych jest równocześnie szereg czynności. Są tu m.in. wykonywane komponenty opisane w tabeli 1 (artefakty implementacyjne). Na tym poziomie jest też projektowane i wykonywane Repozytorium treści. Po etapie implementacji, następuje etap integracji systemu. Równolegle, Repozytorium treści jest wstępnie zasilane danymi. Po tym wykonywane są odpowiednie testy akceptacyjne dla zaimplementowanych w tej iteracji przypadków użycia (oraz regresyjnie – dla zaimplementowanych wcześniej). Iteracja konstrukcyjna kończy się fazą oceny wyników bieżącej iteracji oraz stworzeniem szczegółowego planu dla kolejnej iteracji konstrukcyjnej.
6. Podsumowanie#
Zaprezentowana metodyka jest obecnie wykorzystywana w projekcie ICONS, gdzie służy do organizacji procesu wytwarzania portalu wiedzy o projektach strukturalnych UE. Obecne doświadczenia wskazują na dużą elastyczność opisu metody i możliwość jej łatwego przystosowania do projektów budowy SWZW.
Bibliografia#
| [BECK2000] | K Beck, Extreme Programming Explained: Embrace Change, Addison Wesley, 2000. |
| [BOCH2002] | G Booch, J Rumbaugh i I Jacobson, UML przewodnik użytkownika, WNT, 2002. |
| [CONS2001] | L.L Constantine, Process Agility and Software Usability: Toward Lightweight Usage-Centered Design, Constantine & Lockwood Ltd., 2001. |
| [EKMF2002] | A Coviello, C Garavelli i M Gorgoglione, Standardised KM Implementation Approach – Final Report, European KM Forum IST-2000-26393 Project Deliverable D31, 2002. |
| [FIRE2001] | J.M Firestone, Knowledge Management Process Methodology: An Overview, Knowledge and Innovation: Journal of the KMCI, 1, 2, 2001. |
| [FOWL2002] | M Fowler i K Scott, UML w kropelce, LT&P, 2002. |
| [GRAH1995] | I.M Graham, Migrating to Object Technology, Addison-Wesley, 1995. |
| [HIGH2000] | J.A Highsmith, Adaptive Software Development: A Collaborative Approach To Managing Complex Systems, Dorset House, 2000. |
| [ICON2002a] | W Staniszkis, N Leone i P Rullo, Intelligent Content Management System. Project Presentation, The IST-2001-32429 ICONS Consortium Project Deliverable, 2002, http://www.icons.rodan.pl/. |
| [ICON2002b] | D Bell, K Greer i Y Bi, Specification of the ICONS Architecture, The IST-2001-32429 ICONS Consortium Project Deliverable, 2002. |
| [ISO2000] | International Standard ISO/IEC 13250: Topic Maps, 2000. |
| [ISO2002] | International Standard ISO/IEC 12207: Software Life Cycle Processes, 2002. |
| [MULL2000] | R.J Muller, Bazy danych. Język UML w modelowaniu danych, Mikom, 2000. |
| [RUP2002] | Rational Unified Process v.2002, Rational Software, 1987 – 2002. |
| [SCHR1994] | G Schreiber, B Wielinga i R de Hoog, CommonKADS: A Comprehensive Methodology for KBS Development, IEEE Expert, 9, 6, 1994, 28-37. |
| [TIWA2000] | A Tiwana, The Knowledge Management Toolkit, Practical Techniques for Building a Knowledge Management System, Prentice Hall, 2000. |
| [WIIG1993] | K Wiig, Knowledge Management Foundations, Schema Press, 1993. |

