Dzisiaj żad­nych tech­nicz­nych mądrości ;).

Poprzedni arty­kuł zaczy­nał się od słów:

Bardzo czę­sto spo­ty­kam, pew­nie nie ja jeden, spe­cy­fi­ka­cje wyma­gań zawie­ra­ją­ce zapi­sy ?ocze­ki­wań użyt­kow­ni­ków?. Bardzo czę­sto sły­szę tak­że, że to przy­szły użyt­kow­nik opro­gra­mo­wa­nia powi­nien być źró­dłem wyma­gań. Nic bar­dziej błęd­ne­go. (Gdzie się reali­zu­ją wyma­ga­nia).

Uważam, że rolą ana­li­ty­ka nie jest ZBIERANIE WYMAGAŃ, bo wyma­ga­nia powi­nien mieć spon­sor pro­jek­tu (i nie powin­ny to być np. listy roz­wi­ja­ne w menu)! Rolą ana­li­ty­ka jest ana­li­za! Analiza pole­ga na ana­li­zie (:)), zro­zu­mie­niu ana­li­zo­wa­ne­go przed­mio­tu (fir­ma, zja­wi­sko na ryn­ku, inte­rak­cje spo­łecz­ne – testo­wa­nie pro­jek­tu nowe­go pra­wa, itp.).

Tak więc pro­duk­tem pra­cy ana­li­ty­ka jest przede wszyst­kim model tego co zosta­ło zana­li­zo­wa­ne. Celem jest zrozumienie.

Jak to się ma do opro­gra­mo­wa­nia? Ma się bar­dzo, bo nale­ży zamie­nić (a raczej olać) sło­wa przy­szłe­go use­ra chce­my tak, bo zawsze tak robi­li­śmy”, na obiek­tyw­ny i logicz­ny – zro­zu­mia­ły – opis tego co jest robione.

A gdzie wyma­ga­nia? No wyma­ga­nie to np. pro­gram ma wspie­rać wysta­wia­nie fak­tur VAT” ale nie pytam o to use­ra”, bo po pierw­sze to nie user” o tym decy­du­je. Po dru­gie w poszu­ki­wa­niu szcze­gó­łów drą­żę usta­wę i ewen­tu­al­nie kon­sul­tu­je się z bie­głym rewi­den­tem, use­ra” w ogó­le nie pytam o to jak liczyć poda­tek VAT i jak obsłu­żyć maga­zyn. Dlaczego? Z bar­dzo pro­ste­go powo­du: mało kie­dy user” czy­ta prze­pi­sy, wie­dzę o fak­tu­ro­wa­niu posia­da w więk­szo­ści przy­pad­ków z krót­kich szko­leń lub prze­lot­nych opo­wie­ści poprzed­ni­ka na swo­im sta­no­wi­sku (wie­my jak są prze­ka­zy­wa­ne obo­wiąz­ki w fir­mach). Znam tak wie­le przy­pad­ków błęd­ne­go two­rze­nia doku­men­tów przez wie­lo­let­nich pra­cow­ni­ków z ogrom­nym doświad­cze­niem”, że oduczy­łem się trak­to­wa­nia ich jako głów­ne­go źró­dła wyma­gań. Koronnym przy­kła­dem była nie tak daw­no dla mnie pew­na Pani w pew­nym urzę­dzie, tak zwa­ny star­szy spe­cja­li­sta, wie­lo­let­ni pra­cow­nik sekre­ta­ria­tu, któ­ra zarze­ka­ła się, że moż­na pod­pi­sy­wać doku­men­ty urzę­do­we prze­ter­mi­no­wa­nym pod­pi­sem elek­tro­nicz­nym, i że wystar­czy zazna­czyć, kie­dy ten pod­pis stra­cił waż­ność. Gdybym na bazie wie­dzy” pozy­ska­nej od tego use­ra” przy­go­to­wał spe­cy­fi­ka­cje wyma­gań, to… tra­ge­dia. Czy uspra­wie­dli­wia kogo­kol­wiek to, że user tak chciał”? W moich oczach abso­lut­nie nie… W moich oczach spon­sor pro­jek­tu ocze­ku­je ode mnie ana­li­zy a nie ste­no­gra­mów z rozmów!

Jednym z innych przy­kła­dów tego jak user sta­wia wyma­ga­nia”, są (pro­szę wyba­czyć sło­wo) kre­tyń­skie sys­te­my dopusz­cza­ją­ce w maga­zy­nach ujem­ne sta­ny maga­zy­no­we. To jest nie­zgod­ne z pra­wem! Da się sprze­da­wać legal­nie, nawet towar w dro­dze, trze­ba jed­nak zro­zu­mieć zja­wi­sko, prze­pi­sy i zapro­po­no­wać legal­ne roz­wią­za­nie (da się).

W kwe­stii szcze­gó­ło­wo­ści opi­su, bo ta budzi wie­le emo­cji. Powiem prze­wrot­nie tak: szcze­gó­ły są potrzeb­ne tyl­ko tam, gdzie są potrzeb­ne szcze­gó­ły. Czyli gdzie? Tam gdzie zacho­dzi ryzy­ko, że brak tych szcze­gó­łów dopro­wa­dzi do nie­przy­dat­no­ści sys­te­mu ale tyl­ko tam. Nie zapo­mi­naj­my, że gro­ma­dze­nie i prze­twa­rza­nie tych szcze­gó­łów to koszt. Kosztem jest tak­że, usu­wa­nie kon­se­kwen­cji złe­go wybo­ru z powo­du bra­ku pew­nych szcze­gó­łów. Nie ma na to pyta­nie pro­stej odpo­wie­dzi, bo każ­dy pro­jekt jest inny. Inne są wyma­ga­nia biz­ne­so­we, inne ryzy­ka biz­ne­so­we, inne uwa­run­ko­wa­nia wewnętrz­ne (np. już posia­da­ne systemy).

Spotykam się czę­sto na kon­fe­ren­cjach i szko­le­niach z pyta­nia­mi o regu­ły two­rze­nia dobrej spe­cy­fi­ka­cji wyma­gań”. Obawiam się, że nie nie ist­nie­je taka. Podobnie jak nie ist­nie­je regu­ła two­rze­nia dobrych zdjęć, co nie zmie­nia fak­tu, że spo­koj­nie moż­na powie­dzieć jaką mini­mal­ną wie­dzę i sprzęt trze­ba posia­dać, by robić zdję­cia na wyso­kim poziomie.

Tak więc

Powszechnie uwa­ża się, że ana­li­za wyma­gań na opro­gra­mo­wa­nie to pro­sty, ale pra­co­chłon­ny pro­ces pro­wa­dze­nia wywia­dów i skrzęt­ne­go zapi­sy­wa­nia tego, cze­go ocze­ku­je przy­szły użyt­kow­nik. Nic bar­dziej błęd­ne­go ? jest to naj­gor­szy spo­sób. (A na grzy­ba nam Pan Analityk?).

więc co z tymi wyma­ga­nia­mi? Przypomnę definicję:

wyma­ga­nie ?waru­nek lub zespół warun­ków, któ­rym ktoś lub coś musi odpowiadać?

Tak więc wyma­ga­nia na opro­gra­mo­wa­nie to mini­mal­na licz­ba (spe­cy­fi­ka­cja) warun­ków, któ­rych speł­nie­nie potwier­dza przy­dat­ność tego opro­gra­mo­wa­nia do okre­ślo­ne­go celu. Oznacza to, że przede wszyst­kim nale­ży okre­ślić cele! Jeżeli nie znaj­dzie­my takie­go opro­gra­mo­wa­nia na ryn­ku, wte­dy nale­ży wyko­nać stu­dium wyko­ny­wal­no­ści pro­jek­tu dostar­cze­nia dedy­ko­wa­ne­go oprogramowania.

Jak okre­ślać cele? Przypadek uży­cia, wyma­ga­na usłu­ga sys­te­mu, to nic inne­go jak wła­śnie cel. Celem jest moż­li­wość wysta­wia­nia doku­men­tów XXX, celem jest gene­ro­wa­nie rapor­tów kon­tro­l­nych wyko­na­nia pla­nu pro­duk­cji i obcią­że­nia maszyn. Jeżeli sys­tem jest duży, celem (jed­nost­ka opi­su wyma­gań) jest wspar­cie pro­ce­su obsłu­gi zamó­wień (i opis tego pro­ce­su jako załącz­nik). Ale nie jest dobrym celem zaku­pu opro­gra­mo­wa­nia: roz­wi­ja­na lista kon­tra­hen­tów na ekra­nie two­rze­nia nowej fak­tu­ry” czy moż­li­wość wpro­wa­dze­nia nazwy uli­cy, kodu i nazwy mia­sta w kar­to­te­ce klienta”.

Jak mam nadzie­ję widać, nie bar­dzo ma sens pory­wa­nie się na zakup wiel­kie­go pakie­tu zin­te­gro­wa­ne­go”, bo jak tu opra­co­wać w roz­sąd­nym cza­sie i kosz­cie, spe­cy­fi­ka­cję wyma­gań? Opracować listę celów wszyst­kich komó­rek orga­ni­za­cyj­nych?? Jak zagwa­ran­to­wać jej sta­łość (zakres pro­jek­tu), jeże­li taki pro­jekt trwa np. pięć lat? Życzę powodzenia…

P.S.

Pewne cele są reali­zo­wa­ne kon­kret­ną meto­dą, wte­dy trze­ba dokład­nie udo­ku­men­to­wać tę meto­dę. Np. meto­dę nali­cza­nia wyna­gro­dzeń nale­ży dokład­nie udo­ku­men­to­wać, ale tyl­ko pod warun­kiem, że celem jest ta meto­da, a nie sam fakt wypła­ty jakichś” wyna­gro­dzeń. Jeżeli meto­dy się zmie­nia­ją, wyma­ga­niem nie może być kon­kret­na meto­da, a narzę­dzie (mecha­nizm dostęp­ny w opro­gra­mo­wa­niu) pozwa­la­ją­ce na defi­nio­wa­nie tych metod. Tu jed­nak nale­ży udo­ku­men­to­wać regu­ły two­rze­nia tych metod… bo gorą­ca odra­dzam wyma­ga­nie w posta­ci sys­tem powi­nien pozwa­lać na defi­nio­wa­nie róż­nych metod nali­cze­nia wyna­gro­dze­nia”, bo to po pro­stu nic nie znaczy.

Jarosław Żeliński

BIO: Od roku 1991 roku, nieprzerwanie, realizuję projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzę także samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako nieetatowy wykładowca akademicki, prowadzę wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie. Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów.

Ten post ma 3 komentarzy

  1. szcze­gó­ły są potrzeb­ne tyl­ko tam, gdzie są potrzeb­ne szczegóły”

    Tam gdzie zacho­dzi ryzy­ko, że brak tych szcze­gó­łów dopro­wa­dzi do nie­przy­dat­no­ści sys­te­mu ale tyl­ko tam. Nie zapo­mi­naj­my, że gro­ma­dze­nie i prze­twa­rza­nie tych szcze­gó­łów to koszt.”

    Pytanie czy moż­na tra­fić” w dobre szcze­gó­ły nie zanu­rza­jąc ana­li­zy w kon­tek­ście. W kon­tek­ście rozu­mia­nym jako odpo­wiedź na pyta­nie dla kogo powsta­ją arte­fak­ty ana­li­tycz­ne, kto będzie z nich korzy­stał?” Zwykle arte­fak­ty te są inpu­tem dla deve­lo­pe­rów, więc jeże­li cały pro­ces wytwa­rza­nia anga­żo­wał­by stro­nę deve­lo­epr­ską, to wów­czas mogli­by oni się wypo­wie­dzieć, któ­re zagad­nie­nia są zna­ne, a któ­re wyma­ga­ją uszczegółowienia.

    Tak wła­śnie wyglą­da to w Domain Driven Design, gdzie na wspól­nej (w miej­scu i cza­sie) sesji mode­lo­wa­nia poja­wia­ją się Eksperci Domenowi i Modelarze. Czyli mamy tu nie­co inne podej­ście do odpo­wie­dzial­no­ści. Zależnie od natu­ry pro­jek­tu Analityk może być po jed­nej albo dru­giej stro­nie, ale mode­la­rze to stro­na wytwórcza.

    1. Jarek Żeliński

      Sławek poru­szy­łeś waż­ną rzecz: kon­trakt ana­li­ty­ka z deve­lo­pe­rem. Ale co zro­bić gdy nie znam deve­lo­pe­ra bo np. będzie prze­targ? Moim zda­niem jedy­nym sen­sow­nym roz­wią­za­niem jest to, co się robi na eta­pie popraw­nej ana­li­zy przy­pad­ków uży­cia. Nie mogę w pro­jek­cie poprze­stać na nazwa­niu akto­ra, muszę go scha­rak­te­ry­zo­wać. Permanentnie nie­ste­ty obser­wu­ję w doku­men­ta­cjach listę akto­rów i żad­nej infor­ma­cji o tym co każ­dy aktor potra­fi. Prosty przy­kład: jeże­li nie wiem jaką wie­dzą dys­po­nu­je Fakturzysta nie mam poję­cia jak zapro­jek­to­wać mu sce­na­riusz. Księgowa wysta­wi fak­tu­rę na pustej kart­ce papie­ru bez pro­ble­mu, ale zatrud­nio­ny na umo­wę zle­ce­nia stu­dent histo­rii nie koniecz­nie. Ten sam use case będzie (powi­nien) zupeł­nie ina­czej wyglą­dał dla każ­de­go z tych aktorów.

      Podobnie, bez wie­dzy kim jest mój klient”, nie mam żad­nych pod­staw by okre­ślić zakres i pro­dukt pro­jek­tu ana­li­tycz­ne­go o wdzięcz­nej nazwie ana­li­za i spe­cy­fi­ka­cja wyma­gań”. Dlatego każ­da moja umo­wa zawie­ra zapis: ocze­ki­wa­nia wobec deve­lo­pe­ra (opis jego mini­mal­nych kom­pe­ten­cji) bez cze­go moim zda­niem, żad­na ana­li­za nie ma sen­su bo albo jest zbyt ogól­na albo zbyt szcze­gó­ło­wa albo w ogó­le nie­zro­zu­mia­ła (pół bie­dy jeże­li to jedy­ne jej wady :)). To temat rzeka.

      I tu mamy zale­ty DDD: narzu­ce­nie tej kon­wen­cji opi­su­je i ana­li­ty­ka i deve­lo­pe­ra (mają znać i sto­so­wać). Narzucenie wzor­ca MVC wska­zu­je jasne gra­ni­ce kon­trak­tu ana­li­tyk-deve­lo­per-desi­gner: ana­li­tyk two­rzy Model, desi­gner ekra­ny” (View) a deve­lo­per imple­men­tu­je całość.

      W DDD, moim zda­niem, pięk­ne” jest to, że od razu wia­do­mo gdzie wpi­sać i cze­mu przy­pi­sać meto­dy” czy­li szcze­gó­ły. Praktykuję ostat­nio takie podejście:
      – two­rzę model dzie­dzi­ny zgod­ny z DDD (cza­sa­mi pro­ściej: ICONIX)
      – do klas entity/agregat lin­ku­ję wzo­ry doku­men­tów (ekra­nów, ale raczej listę pól niż szcze­gó­ło­we mock-up’y – to robo­ta designera)
      – jeże­li nazwa meto­dy nie okre­śla w spo­sób oczy­wi­sty tego co ma się wyda­rzyć (np. Wylicz poda­tek VAT, dodaj war­to­ści itp..;)) to doku­men­tu­ję meto­dę tabli­cą decy­zyj­ną, dia­gra­mem algo­ryt­mu, inne zależ­nie od potrzeby.

      Nie jest to na pew­no goto­wa recep­ta na suk­ces ale pozwa­la ogar­nąć zja­wi­sko. Jak jed­nak słusz­nie zauwa­ży­łeś: dia­log ana­li­tyk – deve­lo­per jest potrzeb­ny (nie da się i nie ma sen­su pró­ba udo­ku­men­to­wa­nia wszyst­kie­go), dla­te­go moim zda­niem autor pro­jek­tu (ana­li­tyk) powi­nien być cały czas dostęp­ny dla deve­lo­pe­ra. To czy analityk/modelarz jest po stro­nie wytwór­czej zale­ży moim zda­niem wyłącz­nie od kon­trak­tu i ryzy­ka. Ta kom­pe­ten­cja jest samo­dziel­na. Architekt budow­la­ny może być zarów­no po stro­nie inwe­sto­ra jak i po stro­nie deve­lo­pe­ra, to tyl­ko kwe­stia umo­wy i ryzyk.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.