Wprowadzenie
Oprogramowanie Generator Ofert zostało zaprojektowane przeze mnie dla Biura Polonijnego Kancelarii Senatu. Zadanie jakie dostałem to opracowanie wymagań (Opis Przedmiotu Zamówienia) na aplikację, która:
- pozwala składać wnioski na dofinansowanie projektów Polonii z całego świata,
- składać wnioski stanowiące formularze o bardzo rozbudowanej i zmiennej w czasie strukturze, przechowywać ich kolejne wersje,
- prowadzić proces oceny wniosków przez ekspertów Bura Polonii Kancelarii Senatu,
- tworzyć i zawierać umowy, w których te wnioski są załącznikiem,
- śledzić rozliczanie tych umów.
- prowadzi archiwum tych dokumentów,
Analizę i projekt zrealizowałem zdalnie sam, w ciągu miesiąca (komunikacja). W toku przetargu nie było żadnych skarg na treść OPZ do KIO. Implementacja wykonana w ciągu pięciu miesięcy w planowanym budżecie i terminie, pod moim nadzorem (nadzór autorski).
Całość jest na AZURE. Aplikacja działa do dziś w dobrej kondycji, jest relatywnie tania w utrzymaniu mimo corocznych zmian przepisów (w tym formularzy). Poprzednie wyceny (niektóre na bazie metod opartych o punkty funkcyjne, inne na bazie wielodniowych warsztatów z pracownikami Kancelarii Senatu czy te na bazie setek stron modeli UML baz danych i niezrozumiałych diagramów UC), dawały wielokrotnie (bywały ponad 10 krotnie) wyższe prognozy kosztów.
Dokument stanowiący Opis Przedmiotu Zamówienia (projekt techniczny) jest dostępny na stronie BIP Kancelarii pod adresem: https://www.senat.gov.pl/gfx/senat/userfiles/_public/k8/kancelaria/zam/2017/15/zalacznik_nr_1_do_siwz.pdf dlatego często służy mi za przykładową referencję.
Kilka wyjaśnień
Z uwagi na to, że miewam pytania o konstrukcję niektórych schematów blokowych w tym dokumencie, omówię je tu pokrótce.
Między innymi całkowicie zrezygnowałem z SQL i relacyjnego modelu danych dla formularzy, dzięki czemu wielokrotnie spadła pracochłonność wytworzenia oraz późniejsze koszty utrzymania i rozwoju (między innymi co roku nieco zmienione formularze).
W takich projektach bardzo ważny jest nadzór autorski, czyli tu mój udział w projekcie w toku implementacji:
- nadzoruję pracę dewelopera,
- na bieżąco wyjaśniam wątpliwości developera co do dokumentacji,
- na bieżąco uzupełniam dokument o nowe elementy (czas się nie zatrzymuje w dniu ogłoszenia przetargu i podpisaniu umowy z wykonawcą),
- na bieżąco aktualizuję dokumentację o wszelkie podjęte decyzje architektoniczne,
- w dniu oddania aplikacji do użytku, stale aktualizowany OPZ, stanowi aktualną dokumentację powstałego systemu, tu na koniec nadzoru, miał nieco ponad 80 stron.
(Dokument OPZ został w całości wykonany z użyciem oprogramowania Visual-Paradigm: wbudowanego edytora DocComposer pakietu Visual-Paradigm. Cały cykl pracy nad wymaganiami i ich dokumentowaniem nie wymaga użycia żadnych narzędzi biurowych typu Office.)
Zakres projektu
Na tym diagramie kolorami pokazano zakres odpowiedzialności Zamawiającego i Wykonawcy. Kolor niebieski oznacza produkty, które ma dostarczyć Wykonawca. Jest to diagram przypadków użycia notacji UML, na wczesnym etapie zwany Modelem kontekstu (zakresu) projektu. Zależności (uzależnienia) zostały zamodelowane standardowym związkiem zależności w UML. UWAGA! Notacja UML nie zabrania umieszczania na tym diagramie innych symboli niż aktor, system i przypadek użycia, można to robić pod warunkiem zachowania poprawności semantyki i syntaktyki używanych symboli.
Cele biznesowe
Powyższy diagram to model motywacji biznesowej (BMM). Jest to bardzo ważny diagram w projekcie: służy do określenia celu biznesowego. Jest używany do selekcji zgłaszanych wymagań biznesowych. Do zakresu projektu powinny być kwalifikowane wyłącznie wymagania wspierające cele biznesowe projektu. Pozwala to skutecznie zarządzać zakresem projektu i nie popaść w zjawisko zwane “utrata panowania na zakresem projektu” (szybko rosnąca niekontrolowana liczba wymagań).
Słownik i model pojęciowy
Co do zasady projekt powinien mieć Biznesowy słownik pojęć. Jest to lista pojęć wraz z ich definicjami, której celem jest zagwarantowanie jednoznaczności treści całej dokumentacji. Są to pojęcia dziedzinowe a słownik ten stanowi przestrzeń pojęciową dla innych diagramów. Diagram ten standardowo wykonuję jako Model Faktów notacji SBVR, ale jest to tak naprawdę diagram klas składający się wyłącznie z klas (nazw), związków generalizacji i skierowanych asocjacji. Celem jego budowy jest zagwarantowanie spójności i niesprzeczności pojęć w słowniku. Cechą tego diagramu (metodą kontroli jego poprawności) jest to, że każde dwa połączone pojęcia tworzą (muszą) poprawne zdanie w języku naturalnym np. “metryka zawiera fakty z historii sprawy” czy “umowa jest szczególnym typem pisma”. Nazwy klas, atrybutów, operacji, aktorów itp. na modelach architektury muszą pochodzić z tej przestrzeni pojęciowej!
Poglądowa mapa procesów biznesowych
Bardzo przydatnym diagramem jest nieformalny schemat blokowy obrazujący procesy biznesowe operacyjne. Każdy “pagonik” to abstrakcja procesu, którego detale pokazane zostaną na podrzędnych diagramach w notacji BPMN. Można taki diagram także wykonać w notacji BPMN, jednak jego adresatem są sponsorzy projektu, którzy rzadko mają łatwość posługiwania sie notacją BPMN.
Podmioty w otoczeniu Kancelarii
Diagram współpracy notacji BPMN jest tworzony w celu inwentaryzacji podmiotów zaangażowanych w procesach obsługi wniosków. Nazwy tych podmiotów stanowią potencjalne wartości atrybutów metadanych dokumentów, będą także użyte jako pule na diagramach BPMN.
Zarządzanie przepływem dokumentów
Diagram BPMN, na którym pokazano czynności związane z pracą z dokumentami. W takich przypadkach, gdzie ludzie wykonują czynności sami dobierając ich kolejność wg. ustalonych reguł (np. w instrukcjach) nie ma sensu modelowanie wszelkich wariantów z użyciem wielkiej ilości bramek i możliwych przepływów (specyfikacja BPMN 2.0.2, Figury 10.35, 10.36, 10.37).
Jeżeli przepływ pracy jest bardziej deterministyczny powstają diagramy jak poniżej.
Przypadki użycia czyli usługi aplikacyjne
Diagram przypadków użycia ma pokazać usługi aplikacyjne i interesariuszy systemu (ludzi) oraz ewentualnych aktorów będących innymi aplikacjami (integracje).
Tu wyjątkowo użyłem dość rzadkiej konstrukcji jaką jest generalizacja (a nie dziedziczenie! którego nie ma w UML od 2015 roku, od wersji 2.5), pokazująca że zarówno recenzenci jaki referenci to pracownicy Kancelarii. To uogólnienie to słownikowy zabieg mający na celu uproszczenie diagramu (jeden związek zależności do generalizacji zamiast dwóch do jej instancji). Jest to zabieg słownikowy, analogiczny to tego, w którym mówimy “weterynarz leczy zwierzęta” zamiast mówić “weterynarz leczy psy, koty, świnki morskie” (słowo zwierzęta jest słownikową generalizacją konkretnych zwierząt). Tej rzadko używanej konstrukcji użyłem tylko z powodu presji czasu i odradzam ją. Lepszą konstrukcją była by tu strukturalna metaklasa zamiast uogólnienia i związki ‘instanceOf’ zamiast pojęciowej generalizacji, a jeszcze prościej: pokazać te zależności wyłącznie na modelu pojęciowym.
Model dziedziny
Został wykonany z użyciem standardowego wzorca BCE, nie raz już opisywanego na tym blogu, po prawej stronie, pokazano wybrane detale struktury repozytoriów jako realizacje.
Powyższe to wybrane kluczowe elementy projektu.
Podsumowanie
Pozostałe elementy OPZ dla Kancelarii Senatu wydają mi się dość oczywiste, tu starałem się skomentować te elementy tego dokumentu, które budzą najwięcej pytań i emocji. Są to bardzo przydatne i niedoceniane konstrukcje zarówno w notacji UML jak i BPMN. Kompletny dokument można także pobrać tu:
Generator_Ofert_zalacznik_nr_1_do_siwz.pdf
1.92 MBZainteresowanych podobnym i upublicznionym projektem zapraszam tu: Inżynieria oprogramowania z użyciem narzędzia CASE – projekt badawczy.
Generator ofert c.d.
Na co pozwala dobra dokumentacja i nadzór autorski:
- Aplikacja powstała w terminie: https://www.tvpparlament.pl/32992903/ulatwienia-dla-organizacji-polonijnych-senat-uruchamia-ewnioski-o-dofinansowanie
- Po dwóch latach, bez żadnego problemu, aplikację, jej utrzymanie i rozwój przejęła inna firma deweloperska, która wygrała przetarg.
- z uwagi na koszty AZURE aplikacja została wraz danymi zmigrowana do nowego środowiska i odtworzona w innej technologii: https://www.witkac.pl/Account/Login#/Urzad/Index/302, opis działania: Witkac.pl FAQ.
W roku 2021 odbyło się posiedzenie Komisji Łączności z Polakami za Granicą, w sprawozdaniu (nr 31) z dnia 16 listopada 2021 r. czytamy:
“Tak samo jak w?roku ubiegłym, oferty będą składane w ?generatorze. Usprawni to?nabór i?pozwoli na?bieżąco unikać niektórych błędów, na?przykład rachunkowych. To?nowoczesne i?wygodne narzędzie, które w?wielu przypadkach reaguje od?razu na?jakieś błędy techniczne. Jeśli składający popełnia jakieś błędy techniczne, to?często generator wręcz nie przyjmie takiego wniosku. To?jest ważna informacja, bo?najgorszym dla wszystkich z?nas rozwiązaniem byłoby to, że?ktoś składa ofertę, a?potem z?powodu tego, że?brakuje przecinka, cała oferta upada. To?jednak wolelibyśmy, żeby nie mógł złożyć oferty, żeby musiał poprawić ten przysłowiowy przecinek i?żeby później oferta podlegała po?prostu wyłącznie ocenie merytorycznej. Nie ukrywam, że?miałem w?przeszłości takie dramatyczne sytuacje, że?widzę, że?jest bardzo wartościowa oferta, szlachetni ludzie, ale, nie mając doświadczenia, popełnili jakiś błąd i?z?powodu formalnego przepada cały wniosek i?jest tylko rozczarowanie i?jakaś demotywacja, żeby w?przyszłości składać wniosek, bo?to?i?tak nie ma?sensu, i?tak nigdy nie dostaniemy etc. Znamy to?wszyscy. Państwo przecież też rozmawiają z?organizacjami i?takie rozmowy pewnie nieraz odbyliście w?terenie”
https://orka.sejm.gov.pl/zapisy9.nsf/0/109DCCFD7A5EFCB4C125879600491A23/%24File/0195509.pdf
“Rozmowa z szefem Kancelarii Senatu ministrem Jakubem Kowalskim
-Kancelaria Senatu jest nowoczesnym urzędem. Zapewne już wkrótce nie będziemy posługiwać się papierowymi dokumentami, czy taki cel przyświecał Panu przy obejmowaniu urzędu?
-To życie narzuciło cel, który trzeba było szybko osiągnąć. Kancelaria miała sporo do nadrobienia w stosunku do innych urzędów administracji publicznej, głównie w zakresie cyfryzacji. Zaczęliśmy od tego, co przytłoczyło nas po przejęciu środków na opiekę nad Polonią i Polakami za granicą od MSZ ? stosy papierowych dokumentów, które dosłownie zajęły kilka pomieszczeń. Musieliśmy sobie z tym poradzić i udało nam się zbudować cyfrowy generator ofert. Dzięki temu fundacje i stowarzyszenia, które starają się o pieniądze z Senatu na zadania realizowane w ramach opieki nad Polonią składają dokumenty elektronicznie, również elektronicznie poprawiają i uzupełniają swoje wnioski. Za pośrednictwem generatora prowadzona jest korespondencja i w ten sposób powstaje baza danych o wnioskach i przyznanych środkach. Obie strony są z tego rozwiązania zadowolone, bo ułatwia ono pracę i przyspiesza proces przyznawania pieniędzy, które teraz szybciej pozwalają realizować zadania na rzecz naszych rodaków poza granicami. A to było ambicją senatorów, a także oczekiwaniem stowarzyszeń, a przede wszystkim Polaków z zagranicy.
? Generator ofert zachęcił do dalszego unowocześniania Kancelarii.
? Gdy okazało się, że generator ofert usprawnił pracę zdecydowałem o wprowadzeniu w Kancelarii Senatu systemu elektronicznego zarządzania dokumentacją (EZD ), stworzonego przez Podlaski Urząd Wojewódzki. ”
https://alicjazajac.pl/minister-kowalski-dzieki-cyfryzacji-kancelaria-senatu-staje-sie-nowoczesnym-urzedem/
Dzień dobry, w załączonym pliku pdf w rozdziale 3.16 Statusy oferty pokazane są przejścia pomiędzy statusami, które (jako “states” dokumentu oferta na realizację zadania) pojawiają się na diagramach procesów, np. zarejestrowana, wadliwa. Na diagramie procesu z oceną ofert w rozdz. 2.2.8 ich nie widać (z powodu skróconych w pliku podpisów pod obiektem danych Oferta). I pytanie – czy status odrzucona jest tam uwzględniony? o ile dobrze rozumiem odrzucenie oferty jest możliwą decyzją wyniku jej oceny
Statusy dokumentów mają zawsze dwa aspekty: biznesowy i techniczny (realizacja logiki biznesowej). Na etapie OPZ ten dokument był projektem i dopuszczaliśmy “drobiazgi” do ustalenia później. W docelowej wersji ten ma ponad 80 stron (był prowadzony jako typowe “żywa dokumentacja”). Co do tego przypadku, ostatecznie statury z modeli BPMN są “synchronizowane” z maszyną stanową i tu tez tak było. Jednak realnie bywa tak, statusy dokumentu w BPMN modeluje nie jedna a np. dwie maszyny stanowe i/lub tabela decyzyjna.
Dziękuję za ekspresową odpowiedź