Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Wymagania na system.. jak opisać?

Ogólnie znany jest problem z dokumentowaniem wymagań na system: biznes opowie o tym co by chciał, programiści zapytaja o to co maja napisać. W środku luka komunikacyjna. I teraz pytanie: czy model logiczny architektury systemu może spełnić role jednoznacznego dokumentu wymagań?

Model taki zawierałby:
- diagram klas (model dziedziny systemu z regułami biznesowymi)
- modele maszyny stanów dla każdej klasy charakteryzujacej się stanowością
- modele aktywnosci dla kazdej metody (w danej klasie) nie będącej trywialną operacją
- model GUI dla kluczowych klas warstwy prezentacji, i tu scenariusze przypadków użycia (dopiero tu!)
- cały model zawiera udokumentowane ograniczenia (jako wymagania niefunkcjonalne).

Kilka słów także tu o źródle powyższego...
http://www.goldenline.pl/forum/modelowanie-biznesowe-w...
Jacek Jakieła

Jacek Jakieła Adiunkt,
Politechnika
Rzeszowska im.
Ignacego
Łukasiewicz...

Temat: Wymagania na system.. jak opisać?

Osobiście wydaje mi się, że koncepcja przypadków użycia jest wartościowa i szczególnie użyteczna w procesie projektowania systemu. Oczywiście przy założeniu, że dobrze rozumiemy o co w tym wszystkim chodzi. Chciałbym zaznaczyć, że nie jestem adwokatem przypadków użycia ale często model ten jest analizowany w sposób wyrwany z kontekstu a same korzyści możemy dostrzec dopiero patrząc na tą technikę z perspektywy metodyki. Warto zastanowić się nad tym co Ivar Jacobson miał na myśli pisząc 'use case driven approach'. Chodziło mu przede wszystkim o to, że ta prosta technika analizy jaką są przypadki użycia może być wykorzystana w całym cyklu życia systemu informatycznego na różne sposoby:
1. Na początku przypadki użycia mogą służyć jako narzędzie sprawnej komunikacji z udziałowcami systemu (model przypadków użycia może być przecież wykonany jako wstępny szkic funkcjonalności określonej na podstawie modelu biznesowego ,który został przygotowany z wykorzystaniem notacji BPMN). To co jest w tym momencie istotne to to, że mamy proste narzędzie, które pozwala przedstawić zarys funkcjonalności udziałowcom i uzyskać (bądź nie) ich aprobatę. Gdy kontrakt jest wyraźnie zdefiniowany wówczas nie ma nieporozumień przy ustalaniu sukcesu/porażki przedsięwzięcia.

2. W kolejnym kroku przypadki użycia mogą być wykorzystane do analizy luk w wymaganiach. Oczywiście jeżeli każdy dobrze rozumie czym jest przypadek użycia - zbiór interakcji pomiędzy aktorem oraz systemem, które prowadzą do realizacjicelu aktora. Przyjęcie takiej perspektywy pozwala skupić się na wymaganiach wobec systemu na odpowiednim poziomie szczegółowości. Oczywiście analiza taka jest możliwa jeżeli mamy przygotowany model przypadków użycia (przez model rozumiem tutaj nie tylko diagram ale również scenariusze i prototypy interfejsów, które pozwalają lepiej zrozumieć istotę interakcji (na zasadzie pokaż mi jak to wygląda a odpowiem Ci, czy o to mi chodziło).

3. Każdy z przypadków użycia może stanowić dobrą podstawę do pisania testów akceptacyjnych od samego początku (tak jak zalecają podejścia takie jak XP oraz TDD).

4. Analizując przypadki użycia możemy zastanowić się nad tym jak określony cel aktora jest realizowany przez kolektywne zachowanie komponentów systemu. W tym miejscu mogą pojawić się klasy analityczne (stereotypy Jacobsona) oraz techniki analizy jak np. karty CRC.

5. Przypadki użycia mogą być również pomocne przy ustalaniu zrębów architektury systemu. Każdy z nas wie jak istotny jest to element działań w związku z ryzykiem jakie jest związane z architekturą. Idąc przez scenariusze możemy zastanawiać się nad tym w którym z podsystemów będzie realizowany określony krok. Możemy w ten sposób identyfikować nazwy dla podsystemów, oraz projektować w sposób prowadzący do architektury, której elementy są SPOISTE i LUŹNO POWIĄZANE (charakterystyki, które są bardzo istotne z punktu widzenia zarządzania zmianami, które są nieuchronne).

6. Przypadki użycia mogą być również wykorzystywane przy określaniu priorytetów strategicznych. Jeżeli jesteśmy w stanie zdefiniować ofertę w zakresie wartości dodanej w terminach funkcjonalności systemu, możemy ustalić kolejność realizacji, to które przypadki użycia będą napędzały proces definiowania architektury, oraz zaplanować iteracje. Jest wtedy szansa, że wszystko to, co najistotniejsze z perspektywy biznesowej zostało zawarte w architekturze systemu. Ponadto hierarchizując kolejność realizacji określonych obszarów funkcjonalnych możemy się również zastanowić nad tym jak chcemy stosować tzw. strategię różnicowania.

7. W końcu przypadki użycia mogą posłużyć jako wejście dla procesu przygotowywania podręczników użytkownika i pisania testów.

Tak więc na każdym z etapów, przypadki użycia Przypadki użycia skłaniają do ścisłej więzi z wymaganiami podczas projektowania, implementacji i testowania.

Wydaj mi się, że po głębszym zastanowieniu się nad przypadkami użycia w ten właśnie sposób można znaleźć szereg zdroworozsądkowych powodów, dla których warto z nich korzystać. Chciałbym zaznaczyć, że nie twierdzę, iż nie wolno kwestionować możliwości ich zastosowania. Wyszukiwanie powodów dla których ktoś uważa, że nie są najlepsze działa stymulująco i motywująco do poszukiwania innych , być może lepszych rozwiązań. Sam niejednokronie to robiłem przy uzasadnianiu dlaczego uważam, że moja metodologia (czy metodyka) modelowania nad którą pracuję jest lepsza i dzięki temu miałem szereg powodów aby dalej prowadzić nad nią prace. Takie działanie oczywiście nie deprecjonuje całkowicie metod, które opracowały naprawdę tęgie głowy (Jacobson, Booch etc.) oraz zostały zweryfikowane w tysiącach projektów.

Kolejną kwestią jest to, że modele, które budujemy w ramach działań analityczno projektowych powinny być tworzone w określonej kolejności. Często jest tak, że zmiana w ramach procesu abstrakcji może polepszyć proces analizy. Przykładowo, RUP zaleca rozpoczęcie działań od przypadków użycia. ICONIX z kolei (z tego co pamiętam) od modelu dziedziny etc. Tak więc wydaje mi się, że jakość kolejnego modelu (przygotowywanego w ramach procesu wytwórczego), stopień trudności analizy oraz jakość odwzorowania modelu organizacji na architekturę systemu (i co za tym idzie minimalizacja luki semantycznej) mogą zależeć od tego jaki artefakt pobieramy na wejściu. Przecież kolejne modele mogą być, zgodnie z zasadą abstrakcji, tworzone w ramach innej perspektywy analizy a analityk dla uzyskania pełniejszego obrazu wykorzystuje modele utworzone wcześniej.

Pozdrawiam :-)Jacek Jakieła edytował(a) ten post dnia 17.01.08 o godzinie 18:51
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Wymagania na system.. jak opisać?

Na początek dziekuje za bardzo ciekawą odpowiedź :)
Jacek Jakieła:
Tak więc na każdym z etapów, przypadki użycia Przypadki użycia skłaniają do ścisłej więzi z wymaganiami podczas projektowania, implementacji i testowania.

Tak, dlatego traktuje przypadki użycia jako element projektu i testów (w kontekście scenariuszy).

działanie oczywiście nie deprecjonuje całkowicie metod, które opracowały naprawdę tęgie głowy (Jacobson, Booch etc.) oraz zostały zweryfikowane w tysiącach projektów.

Mam wrażenie, czytając ich książki, że ich zdanie bazuje na tym, ze oni jako bardzo doświadczeni projektanci (zwróćcie jednak uwagę, że przyznają się głównie do projetów rządowych, mało biznesowych..) maja podstawy by bazować na przypadkach uzycia bo "mają w głowie" zrozumiany kontekst projektu.

Kolejną kwestią jest to, że modele, które budujemy w ramach działań analityczno projektowych powinny być tworzone w określonej kolejności. Często jest tak, że zmiana w ramach procesu abstrakcji może polepszyć proces analizy. Przykładowo, RUP zaleca rozpoczęcie działań od przypadków użycia. ICONIX z kolei (z tego co pamiętam) od modelu dziedziny etc. Tak więc wydaje mi się, że jakość kolejnego modelu (przygotowywanego w ramach procesu wytwórczego), stopień trudności analizy oraz jakość odwzorowania modelu organizacji na architekturę systemu (i co za tym idzie minimalizacja luki semantycznej) mogą zależeć od tego jaki artefakt pobieramy na wejściu. Przecież kolejne modele mogą być, zgodnie z zasadą abstrakcji, tworzone w ramach innej perspektywy analizy a analityk dla uzyskania pełniejszego obrazu wykorzystuje modele utworzone wcześniej.

Owszem, dlatego osobiście mam przekonanie do metod w których przypadki użycia są na drugim lub nawet trzecim miejscu w kolejnosci tworzenia modeli (DDD, Syntropy, inne podobne, ICONIX nie bo zorientowana na UC). Dlaczego? Tu zacytuję:

W literaturze [3] wskazuje się na wady w istniejących technikach modelowania wymagań. Przypadki użycia są specyfikacjami częściowymi. Ich użycie powoduje trudności w uzyskaniu spójnego obrazu wymagań i zgodności z wymaganiami ogólnymi. Dość trudno również przy pomocy PU zagwarantować, że system będzie ergonomiczny. (źr. http://www.ploug.org.pl/plougtki.php?action=read&p=32&a=8 )

Moje puszukiwania idą w kierunku wyjaśnienia źródeł statysk, wg. których ponad 80% projektów tworzenia oprogramowania to porażki, ankietowani PMowie w 100% podają między innymi źle określone wymagania" jako przyczynę porażki. Nie walcze tu z niczym, raczej stoje na stanowisku że wymagania okreśłone tylko na bazie Przypadków Użycia sa kluczowym czynnikiem ryzyka takich projektów. Nawet RUP wymaga na początku analizy biznesowej, która moim zdaniem jest tam jednak bardzo okrojona i wręcz nieudolna (inna sprawa, ze RUP nie precyzuje jak tej biznesowej analizy dokonać).
Osobiście wydaje mi się, że koncepcja przypadków użycia jest
wartościowa i szczególnie użyteczna w procesie projektowania
systemu.

w procesie projektowania tak bo to etap po ustaleniu wymagań, ale moim zdaniem nie jako analiza wymagań na system i jedyne jej udokumentowanie. :)[edited]Jarosław
Jacek Jakieła

Jacek Jakieła Adiunkt,
Politechnika
Rzeszowska im.
Ignacego
Łukasiewicz...

Temat: Wymagania na system.. jak opisać?

Na początek dziekuje za bardzo ciekawą odpowiedź :)

A ja za interesujący wątek :-)
Moje puszukiwania idą w kierunku wyjaśnienia źródeł statysk, wg. których ponad 80% projektów tworzenia oprogramowania to porażki, ankietowani PMowie w 100% podają między innymi źle określone wymagania" jako przyczynę porażki. Nie walcze tu z niczym, raczej stoje na stanowisku że wymagania okreśłone tylko na bazie Przypadków Użycia sa kluczowym czynnikiem ryzyka takich projektów. Nawet RUP wymaga na początku analizy biznesowej, która moim zdaniem jest tam jednak bardzo okrojona i wręcz nieudolna (inna sprawa, ze RUP nie precyzuje jak tej biznesowej analizy dokonać).

To prawda. Dodatkowo wydaje mi się, że w swoich poszukiwaniach mógłby Pan, Panie Jarku uwzględnić również to, że oprócz problemów związanych z samą techniką przypadków użycia i jej niewystarczającym do modelowania biznesowego 'instrumentarium' dochodzą problemy z samym zrozumieniem przez członków zespołów projektowych istoty przypadków użycia. Często cały model stanowi bardzo ogólny diagram przypadków użycia (który nie jest przecież modelem kompletnym) bez specyfikacji interakcji w formie scenariuszy. Podejścia lekkie (agile approaches) promują dodatkowo minimalną formalizację, a model przypadków użycia w takim wariancie to zbiór kilkuzdaniowych akapitów w formie system powinien etc.
Ponadto, w dużej liczbie przedsięwzięć zaniedbuje się w ogóle model biznesowy i w związku z tym specyfikowane wymagania nie mają solidnego fundamentu. Wynika to z tego, że faza modelowania biznesowego jest traktowana 'po macoszemu' do tego stopnia, że nawet tak znane (nie twierdzę, że najlepsze ale bardzo mocno promowane) podejścia jak np. RUP nie podają (o czym zostało wspomniane) wytycznych co do tego jak model biznesowy powinien być przygotowywany. Jest tylko hasło 'business modeling' - '...a skoro się o tym nie pisze więcej to może to nie jest na tyle istotne, żeby było warte uwagi...' - myślą sobie członkowie zespołów projektowych i ich kierownicy korzystający z RUP.

Wydaje się również, że warto rozróżnić pomiędzy wymaganiami wobec systemu a modelem biznesowym. Według mnie model biznesowy nie jest specyfikacją wymagań wobec systemu, lecz modelem dziedziny (części organizacji, procesu biznesowego), który może być wykorzystany na wiele sposobów, z których jednym jest użycie go (modelu biznesowego) w charakterze źródła dla wymagań wobec systemu w procesach lepszego zrozumienia specyfiki dziedziny problemu oraz identyfikowania i specyfikowania wymagań. Przy modelowaniu biznesowym używamy pojęć biznesowych (proces biznesowy, czynność, zdarzenie biznesowe, zasób etc.) natomiast przy specyfikowaniu wymagań wobec systemu, pomimo tego, że zalecana jest analiza w kategoriach CO ma być zrobione a nie JAK, i tak myślimy w kategoriach systemowych. Pojawiająca się luka wynika w dużej mierze z rozbieżności pomiędzy narzuconymi słownikami (controlled vocabulary) dla procesu modelowania organizacji oraz systemu, ponieważ odwzorowanie, które ma miejsce w trakcie procesu projektowania nie jest jednoznaczne a na pewno nie jest intuicyjne.

Mam kilka pomysłów na kierunki działań prowadzących do chociażby częściowego rozwiązania tego problemu, ale to już jest odrębna kwestia ;-).

Pozdrawiam!
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Wymagania na system.. jak opisać?

Jacek Jakieła:
To prawda. Dodatkowo wydaje mi się, że w swoich poszukiwaniach mógłby Pan, Panie Jarku uwzględnić również to, że oprócz problemów związanych z samą techniką przypadków użycia i jej niewystarczającym do modelowania biznesowego 'instrumentarium' dochodzą problemy z samym zrozumieniem przez członków zespołów projektowych istoty przypadków użycia. Często cały model stanowi bardzo ogólny diagram przypadków użycia (który nie jest przecież modelem kompletnym) bez specyfikacji interakcji w formie scenariuszy. Podejścia lekkie (agile approaches) promują dodatkowo minimalną formalizację, a model przypadków użycia w takim wariancie to zbiór kilkuzdaniowych akapitów w formie system powinien etc.

To prawda, w moim wydaniu Agile to raczej "zwinność" a nie unikanie dokumentacji...(mam nie raz kilka diagramów na ekranie na raz, niech żyją pakiety CASE). Z przypadkami użycia ma Pan racje, nie są to "kompletne specyfikacje" dlatego uzywam ich wyłącznie do dokumentowania scenariuszy interakcji z użytkownikiem.


[...]

Wydaje się również, że warto rozróżnić pomiędzy wymaganiami wobec systemu a modelem biznesowym. Według mnie model biznesowy nie jest specyfikacją wymagań wobec systemu, lecz modelem dziedziny (części organizacji, procesu biznesowego),

Robię właśnei dokładnie tak: analiza biznesowa daje jako produkt model procesów biznesowych (jako materiał do określenia zakresu projektu i listy przypadków użycia) oraz model dziedziny systemu jak podstawowe wymaganie. Polecam opis Domain Driven Design (DDD).
który może być wykorzystany na wiele sposobów, z których jednym jest użycie go (modelu biznesowego) w charakterze źródła dla wymagań wobec systemu w procesach lepszego zrozumienia specyfiki dziedziny problemu oraz identyfikowania i specyfikowania wymagań. Przy modelowaniu biznesowym używamy pojęć biznesowych (proces biznesowy, czynność, zdarzenie biznesowe, zasób etc.) natomiast przy specyfikowaniu wymagań wobec systemu, pomimo tego, że zalecana jest analiza w kategoriach CO ma być zrobione a nie JAK, i tak myślimy w kategoriach systemowych. Pojawiająca się luka wynika w dużej mierze z rozbieżności pomiędzy narzuconymi słownikami (controlled vocabulary) dla procesu modelowania organizacji oraz systemu, ponieważ odwzorowanie, które ma miejsce w trakcie procesu projektowania nie jest jednoznaczne a na pewno nie jest intuicyjne.

Model dziedziny jako diagram klas po rozszerzeniu staje się warstwą reguł biznesowych aplikacji... rozbudowa takiego systemu jest znacznie tańsza niż zaprojektowanego metodami zorientowanymi na UC.
Mam kilka pomysłów na kierunki działań prowadzących do chociażby częściowego rozwiązania tego problemu, ale to już jest odrębna kwestia ;-).

Ja zająłem sie niedawno metodami zorientowanymi na model biznesowy i model dziedziny :) oraz komponentami. Polecam np. opis metod Syntropy i Catalysis.



Wyślij zaproszenie do