Podkasty czyli opowiadam o tym co proponuję

"Jeśli chcesz opisać prawdę, elegancję zostaw krawcom."(A. Einstein) Poniżej wybrane moje wystąpienia. Regularnie dzielę się wiedzą na konferencjach, bywam zapraszany przez dostawców oprogramowania ERP by opowiedzieć ich klientom jak podejść…

Czytaj dalej Podkasty czyli opowiadam o tym co proponuję

No to była mała porażka… piszę ku przestrodze

Nie będę tu opisywał szczegółów tego projektu, ważne są wnioski a nie ta czy inna firma:

pominięcie któregokolwiek etapu projektu analitycznego, w szczególności pierwszego, powoduje, że całość staje się nieweryfikowalna, ryzyko rośnie,
ukrycie prawdziwego celu projektu przed analitykiem (jest to możliwe, jeżeli dojdzie to tego co powyżej) powoduje, że większość jego czasu pracy nie służy projektowi,
po zanegowaniu efektów pracy analityka, obrona takiego projektu jest niemożliwa bo brak kluczowego narzędzia: śladowanie (przypomnę, że usunięto pierwszy etap – zdefiniowanie celu).
Co było prawdziwym celem projektu? Okazało się, że “nie chcemy by przetarg wygrała firma XXX i jej produkt”. W trakcie pierwszych problemów z “uznaniem” specyfikacji wymagań dostałem listę wad posiadanego oprogramowania. Ku mojemu zaskoczeniu były tam nawet błędy rachunkowe (inne tu pominę, choćby niezgodność programu z prawem). Pytam: jakim cudem to zostało odebrane i zapłacone? Cóż…

Czytaj dalej No to była mała porażka… piszę ku przestrodze

Jedno wymaganie – kilka perspektyw

Tak więc każde wymaganie:

kojarzymy z realizującym go przypadkiem użycia,
testujemy (z pomocą dobranego scenariusza testowego),
dokumentujemy modelem opisującym jego realizację (np. Obiekt biznesowy w modelu dziedziny).
Takie podejście powoduje, że zanim jeszcze dotkniemy gotowego produktu (tu niestety już po jego wyborze) możemy po pierwsze: przetestować samą specyfikację a po drugie przekazać potencjalnemu dostawcy (na etapie zapytania) pełna informację o tym, czego oczekujemy od produktu.

Powyższe podejście w postaci ‘full wypas” może być pracochłonne, dlatego możliwe są warianty pośrednie czyli tylko dla wymagań oznaczonych jako ryzykowne budujemy testy lub elementy modelu dziedziny, jednak mamy narzędzie do panowania nad tym ryzykiem. Po drugie zyskujemy narzędzie do weryfikacji, odbiór oprogramowania nie będzie sprawdzaniem listy dziesiątek cech, będzie “jazdą próbną na sucho” a więc relatywnie tania metodą testów: dostawca deklaruje (oferta na nasze zapytanie) zgodność z naszymi wymaganiami a te są weryfikowalne.

Czytaj dalej Jedno wymaganie – kilka perspektyw

Wymagania na coś dużego – w czym problem?

Producenci różnych rzeczy zdają sobie sprawę, że koszty podjęcia właściwej decyzji przy skomplikowanych produktach są spore i ludzie będą podejmować decyzje błędne, to pozwala działać na rynku firmom, które w przeciwnym wypadku by upadły.

I jak teraz wyglądają w Państwa oczach zakupy i wdrożenia dużych gotowych systemów?

Jak to robić lepiej? Po pierwsze nie kupować “dużych i drogich zintegrowanych systemów” bo to duże ryzyko, kupować mniejsze, łatwiejsze do opisania, projektować te, które są zbyt dużym ryzykiem w przypadku złego wyboru. Jeżeli już z powodu ryzyka mamy poświęcić duży budżet na kosztowne specyfikowanie oprogramowania to sygnał, że należy je za te pieniądze po prostu zaprojektować i wykonać.

Niestety nie ma prostej odpowiedzi jak to robić “dobrze”. Chyba, że będzie to propozycja następującego procesu:

analiza biznesowa
zdefiniowanie celu
zaprojektowanie architektury systemu (to jako system należy rozumieć organizację wraz z wspierająca ją informatyką), zmierzamy w kierunku tak zwanej [[architektury korporacyjnej]]
zidentyfikować oczekiwane od oprogramowania usługi (wymagania), podzielić je na odrębne obszary dziedzinowe,
dla każdego obszaru dziedzinowego poprowadzić odrębny projekt wyboru rozwiązania.
wybrać rozwiązania.
Zwracam uwagę drobny szczegół: wybory produktu dokonujemy na końcu, nigdy na początku!

Czytaj dalej Wymagania na coś dużego – w czym problem?

Nieudane wdrożenie wielkiego systemu informatycznego w USA – a co u nas?

Kolejnym problemem jest niestety jakość projektowania:

Według firmy analitycznej Gartner około 60 proc. wdrożeń wielkich systemów informatycznych kończy się klęską. Przyczyną jest m.in. nieumiejętność przełożenia procesów działających w firmie na działanie systemu informatycznego, brak dostatecznego wsparcia ze strony pracowników i kierownictwa firmy (czasem nawet jawny opór), złe przygotowanie wdrożenia lub jego prowadzenie. (za Serwis Nauka w Polsce – PAP SA).

Jak widać, jakość projektowania jest kluczem, zresztą nie tylko w przypadków dużych systemów ale w każdym przypadku. Różnica jest taka, że jeżeli niejedna firma świadomie ryzykuje kilkaset tysięcy rezygnując z etapu niezależnej analizy i projektowania wartej ok. 10-20% tej kwoty, to podobne podejście projekty warte milionów jest już raczej nieracjonalne…

Czytaj dalej Nieudane wdrożenie wielkiego systemu informatycznego w USA – a co u nas?

Czym jest to co modelujesz w oprogramowaniu? Model dziedziny systemu jako wymaganie.

zły model to złe oprogramowanie….

Duży system ERP to setki i tysiące jego przypadków użycia, nie ma sensu ich specyfikowanie podobnie jak nie ma sensu pytanie o nie przyszłych użytkowników tego systemu bo nie są w stanie ich wyliczyć. Ma jednak sens zrozumienie tego jak firma działa. Po raz kolejny posłużę się metaforą [[Martina Fowlera]]: grę w snookera można opisać relacjonując (zapisując) setki kolejnych partii, ale i tak nigdy nie wyspecyfikujemy nawet ułamka możliwych zagrań. Zdecydowanie lepszą metodą jest przyjrzenie się kilku partiom i wychwycenie cech bili, ich ilości, wymiarów stołu oraz reguł gry, bo to będzie zgodne nie tylko z historią odegranych partii snookera ale z każda przyszłą partią.

Dlatego zamiast prowadzenia żmudnych wywiadów i tworzenie nieskutecznej listy setek szczegółowych opisów możliwego użycia oprogramowania, lepiej jest zrozumieć organizację, stworzyć jej model (dziedziny) i wyspecyfikować jakie usługi ma to oprogramowanie świadczyć użytkowników teraz (bo tak należy rozumieć pojęcie przypadku użycia systemu). Poprawny model dziedziny pozwoli także na obsługę przyszłych wymagań mimo, że nie znamy ich teraz. Podobnie jak stół bilardowy: nie zna przyszłych uderzeń ale wiemy, że na pewno zostaną “obsłużone”.

Czytaj dalej Czym jest to co modelujesz w oprogramowaniu? Model dziedziny systemu jako wymaganie.

Znaczenie ma nie wielkość projektu, a cykl jego życia…

Powyższe nasuwa od razu kolejny wniosek: zamawiający najczęściej formułują zapytania w sposób pozwalający dostawcom składać oferty na pierwszy etap, polegający tylko na dostarczeniu i wdrożeniu. Jak widać z zasady wygrywają tu projekty “na żywioł”. Żądanie od dostawców ujęcia kosztów utrzymania (tak zwany “maintenance”) niczego nie zmienia bo to tylko stała oplata administracyjna. Jedynym sposobem na rzetelne porównanie ofert jest operowanie kosztem cyklu życia dostarczonego produktu.

Czytaj dalej Znaczenie ma nie wielkość projektu, a cykl jego życia…

Cloud Computing we Wrocławiu

Podstawową różnica pomiędzy CC a SaaS jest to, że oprogramowanie SaaS to po portu zdalny dostęp do aplikacji: użytkownik otrzymuje adres w sieci ([[URL]]), login i hasło dostępu. W przypadku CC, użytkownik nie widzi nic, poza ewentualnie nową opcją w aplikacji, której używa (np. pojawi się polecenie Renderuj w programie do tworzenia grafiki wektorowej). Gdyby chodziło o zewnętrzne składowanie plików, zapewne tego nie zobaczy. Po prostu administratora “przełączy” nasze oprogramowanie (naszą stację roboczą) do innego, zdalnego, systemu składowania plików.

Na koniec ciekawostka, o której wspominam od kilku lat: monolityczne system ERP odchodzą (powoli, bronią się strasznie ;)) do lamusa. Bo…

Czytaj dalej Cloud Computing we Wrocławiu