Jak osiągnąć trwały wzrost produktywności w IT?
Transkrypt
Jak osiągnąć trwały wzrost produktywności w IT?
Jak osiągnąć trwały wzrost produktywności w IT? Branża IT od początku swego istnienia, od ponad sześćdziesięciu lat, boryka się z problemem, jak osiągnąć większą skuteczność i sprawność projektów, budujących oprogramowanie i systemy informatyczne. Kiedy wzrost złożoności tworzonych aplikacji spowodował, że rzemieślnicze i chwilami chaotyczne metody, powszechnie stosowane w latach czterdziestych i pięćdziesiątych ubiegłego wieku, przestały wystarczać, uświadomiono sobie potrzebę systematyczności i pod koniec szóstej dekady tego stulecia powstała nieznana wcześniej dziedzina, nazwana i n ż y n i e r i ą o p r o g r a m o w a n i a . Pojawiły się liczne standardy, usiłujące uregulować tę niesforną branżę i zapewnić projektom informatycznym solidny nadzór oraz większą przewidywalność i precyzję realizacji. Takie podejście pozostawało jednak w sprzeczności z potrzebami elastyczności i kreatywności przedsięwzięć, więc na przełomie tysiącleci, równolegle z wybuchowym rozwojem technologii internetowych, coraz wyraźniej ujawniał się nurt przeciwny, dochodzący do głosu w metodykach zwinnych, w lean, w programowaniu ekstremalnym. IT rozwijało się i nadal rozwija nierównomiernie. Najszybciej idzie do przodu ewolucja platformy sprzętowej, której wydajność rośnie równie szybko, jak prędko maleją jej koszty, zgodnie z prawem Moore’a. Równie wyraźny, choć wolniejszy, rozwój nastąpił też w obszarze niektórych technologii programistycznych: pojawienie się języków strukturalnych, a potem obiektowych, zrewolucjonizowało pracę programistów. Stworzenie interfejsu graficznego oraz środowisk zintegrowanych ogromnie ułatwiło pracę zarówno twórcom programów, jak i ich użytkownikom, a WWW skutecznie obaliło szereg barier dostępu do informacji oraz komunikowania się ludzi ze sobą. Natomiast nie sposób mówić o równie jednoznacznym postępie w dziedzinie metod tworzenia oprogramowania i realizowania przedsięwzięć IT. Mamy tutaj do czynienia raczej z poruszaniem się w kółko, gdzie kolejne mody, oferujące pod coraz to nowymi nazwami te same, od lat znane i nie całkiem skuteczne recepty, są bardziej wyrazem naszej bezradności niż autentycznego wzrostu. Inżynieria oprogramowania bardzo się zróżnicowała w ciągu ponad czterdziestu lat swego istnienia, ponadto obrosła wieloma metodami i narzędziami, które jednak nie przekładają się na nie budzący wątpliwości wzrost produktywności. Wydawać się może niekiedy, że wzorem gałęzi humanistycznych bardziej, niż autentycznie inżynierskich, bawimy się nowymi prądami, tworzeniem nowych terminów i pseudo-nauk, nie przejmując się nieskutecznością tych działań. Popatrzmy, co dzieje się na obszarze IT, co cieszy się szczególną popularnością, a może uda nam się określić jakiś wspólny mianownik tych aktywności? Przede wszystkim, ogromną popularnością cieszy się zarządzanie projektami IT, czego wyrazem – między innymi – jest przekraczająca już dwa miliony na świecie, liczba osób mających rozmaite certyfikaty (IPMA, PMI, PRINCE2) w tym obszarze. Kierunki, ku którym studenci kierunków informatycznych i ekonomicznych dążą, niczym pszczoły do miodu, to BI (Business Intelligence) oraz jej podstawa – Big Data. Modna jest analiza biznesowa (w obydwu często spotykanych znaczeniach: analizy danych oraz analizy procesów przedsiębiorstwa), dużo się słyszy o ładzie korporacyjnym, o zgodności, o DevOps i oczywiście o wszystkim, co ma w nazwie słowo agile lub lean. Po stronie bardziej technicznej, tematy na czasie to – oprócz wymienionych wcześniej Big Data – architektura korporacyjna oraz architektura oprogramowania, bezpieczeństwo informacji, platformy mobilne, języki programowania (Java, Phyton, Ruby), chmura obliczeniowa i wszelkie realizowane w niej usługi – zwłaszcza w technologii usług internetowych (web services). Popularne – przynajmniej w porównaniu z sytuacją sprzed lat dziesięciu – stało się też testowanie i służące do niego narzędzia. Nie zapominajmy także o uwarunkowaniach prawnych sektora IT – wiele kancelarii prawniczych specjalizuje się w umowach, zwanych niepoprawnie, ale powszechnie, umowami wdrożeniowymi. Specjaliści od łączenia ognia i wody, czyli potrzeb IT z regułami prawa o zamówieniach publicznych, też nie narzekają na brak zleceń. Wreszcie, nie wolno przeoczyć mniej widocznego, ale wciąż rosnącego przemysłu systemów wbudowanych i krytycznych dla bezpieczeństwa. Nie cieszy się taką hałaśliwą popularnością jak aplikacje mobile oraz oprogramowanie i portale internetowe, ale ma w gruncie rzeczy większe od nich znaczenie – zarówno biznesowe, jak i dla jakości życia użytkowników, nas wszystkich. Poszukajmy teraz wspólnego mianownika. Przykładowo, tematyka architektury cieszy się wielkim zainteresowaniem, i jest – zgadzamy się - bardzo ważna. Co decyduje o kształcie jej rozwiązań? Przyjrzyjmy się rysunkowi poniżej: Rysunek 1. Wymagania wobec architektury na różnych poziomach Rysunek powyżej pokazuje, że aby zaprojektować, stworzyć i utrzymywać architekturę, konieczne są w y m a g a n i a d o t y c z ą c e a r c h i t e k t u r y ; podobnie, jak w celu zbudowania każdego, choćby najmniejszego kawałka oprogramowania, niezbędne jest określenie dla niego trafnych wymagań. Wymagania i zbudowane na ich podstawie systemy służą realizacji c e l ó w b i z n e s o w y c h , których trafne określenie jest możliwe z wykorzystaniem analizy danych oraz analizy biznesowej. Podobną argumentację można przeprowadzić dla każdego z wyżej wymienionych, kluczowych i cieszących się szczególną popularnością obszarów IT. Wymagania, a dokładniej, specjalizująca się w ich pozyskiwaniu i analizie i n ż y n i e r i a w y m a g a ń , jest zwornikiem, łączącym ze sobą rozmaite dyscypliny, wchodzące w skład projektu informatycznego. Nic więc dziwnego, że inżynieria wymagań jest w standardzie ISO/IEC/IEEE 29148:2011 nazwana d z i e d z i n ą i n t e r d y s c y p l i n a r n ą , łączącą w sobie trzy główne składowe przedsięwzięć IT: biznes, technologię oraz procedury zarządzania: Rysunek 2. Rola inżynierii wymagań, jako dziedziny interdyscyplinarnej Z przyczyn, których roztrząsanie, choć pouczające, mija się z celem, świadomość roli inżynierii wymagań jest w tej chwili niepełna i rozproszona w innych dziedzinach: Rysunek 3. Jak często rozumiana jest inżynierii wymagań Inżynieria wymagań jest rozumiana właściwie, czyli jako j e d n a , i n t e r d y s c y p l i n a r n a d z i e d z i n a (rysunek 2), głównie w firmach, tworzących oprogramowanie wbudowane: sprzęt elektroniczny, pojazdy szynowe, samochody, sprzęt medyczny, urządzenia lotnicze, roboty przemysłowe, uzbrojenie, systemy zarządzania procesem produkcyjnym. W świecie IT natomiast dominuje postrzeganie rozproszone (rysunek 3): o wymaganiach mówi się wiele w ramach zarządzania projektami, dużo – na konferencjach programistycznych, bardzo dużo – w świecie agile, ale nie dostrzega się odrębnej dziedziny i n ż y n i e r i i mianownika tych zagadnień. w y m a g a ń , jako wspólnego Czy jest o co kruszyć kopie, czy nie jest to sprawa akademicka, może wręcz prestiżowa? Otóż nie, takie rozproszone widzenie wymagań jest główną przyczyną większości niepowodzeń, jakie chronicznie dotykają naszą branżę. Przykładowo, według „Chaos Report”, opublikowanego przez Standish Group, jako przyczynę niepowodzeń projektów informatycznych na pierwszych miejscach wymienia się: niepełne wymagania, błędne i niepełne specyfikacje wymagań, brak zaangażowania użytkowników oraz zmiany wymagań i specyfikacji. Wniosek? Wyniki wręcz natychmiastowe daje uzyskanie przez wszystkich interesariuszy projektów, zarówno po stronie zamawiającego, jak i wykonawcy, systematycznej i uporządkowanej, podstawowej wiedzy z inżynierii wymagań, niezależnie od już posiadanej wiedzy z innych dziedzin oraz praktycznych umiejętności. Utrzymanie uzyskanej w ten sposób przewagi możliwe jest, jeśli stopniowo i systematycznie udoskonala się własne praktyki w tym obszarze. Zarówno tę potrzebę, jak i tę możliwość, dostrzeżono około dziesięciu lat temu w kręgu czołowych firm niemieckich oraz szwajcarskich, skąd wyszła inicjatywa stworzenia dostosowanego do wymogów branży IT systemu wiedzy, oraz osadzonego w niej systemu szkoleń i certyfikacji, dla inżynierii oprogramowania. Tak powstała w 2006 roku IREB – International Requirements Engineering Board (Międzynarodowa Rada Inżynierii Wymagań), oraz jej, zapisany w formie sylabusów, system certyfikacji CPRE - Certified Professional in Requirements Engineering (Certyfikowany specjalista inżynierii wymagań). Dziś w skład IREB wchodzi kilkudziesięciu fachowców, zarówno z przemysłu, jak i z uczelni: właścicieli i dyrektorów firm, wykładowców, profesorów z całego świata. W przeciwieństwie do niektórych innych modnych certyfikatów, kwalifikacje, dorobek i osiągnięcia członków IREB można precyzyjnie zweryfikować (ireb.org/en/board.html). Certyfikaty – zarówno sylabusy, jak i egzaminy – dostępne są w kilkunastu językach, a blisko 18.000 certyfikatów uzyskali już specjaliści z kilkudziesięciu krajów. Egzaminy odbywają się zgodnie z ISO/IEC 17024:2012 naprawdę, a nie tylko formalnie, co gwarantuje ich uczciwość, bezstronność i wysoki prestiż. Dzisiaj po polsku dostępny jest certyfikat podstawowy (IREB CPRE Foundation), trwają prace nad kolejnymi (ireb.org/en/international/polski). Rysunek 4. Układ systemu certyfikacji inżynierii wymagań IREB CPRE CTS oferuje w okresie od 23 października do 4 grudnia 2014 cykl bezpłatnych warsztatów on-line, wprowadzających w tematykę inżynierii wymagań, oraz certyfikacji IREB CPRE: cts.com.pl/Aktualnosci/Inzynieria-wymagan---jak-skutecznie-i-sprawnie-zarzadzacprojektami-IT-. Bogdan Bereza, [email protected]