Inżynieria oprogramowania

Profile picture
Michał Rzeszutek

Terminem “inżynieria oprogramowania” określamy wszystkie aspekty produkcji programów komputerowych począwszy od analizy przypadku, wymagań stawianych projektowi, poprzez projektowanie, implementację oraz wdrożenie, aż do ewolucji finalnej wersji oprogramowania. Tradycyjnie pojmowany model rozwoju programów komputerowych charakteryzuje się zamkniętym procesem produkcyjnym prowadzonym przez ściśle określoną grupę twórców. Przebieg prac związanych z rozwojem aplikacji, wliczając w jego zakres projektowanie, pisanie kodu, a także jego testowanie odbywa się bez udziału osób spoza grona deweloperów. Oprogramowanie udostępniane jest użytkownikom najczęściej po zakończeniu pełnego toku produkcji.

Podstawową regułą opisanego tu modelu rozwoju oprogramowania własnościowego jest „Prawo Brooksa”. Zgodnie z założeniami jej autora Fredericka Brooksa, każdorazowe wzbogacenie zespołu pracującego nad opóźnionym projektem opóźnia jego ukończenie jeszcze bardziej. Ponadto rozszerzenie grupy deweloperów prowadzi do niestabilności przedsięwzięcia oraz zwiększonej podatności na błędy.

Zamknięty model rozwoju oprogramowania wykorzystywany przeważnie w działalności o charakterze komercyjnym ma zastosowanie także w przypadku programów typu open source. Pomimo przeciwwskazań sformułowanych przez Frederica Brooksa większość projektów należących do ruchu wolnego i otwartego oprogramowania opiera się na przeciwstawnym wobec tradycyjnej formy dewelopingu modelu rozwoju otwartego.

Zapoczątkowany przez Linusa Torvaldsa wzorzec został zauważony i opisany przez amerykańskiego hakera Erica Raymonda. W eseju Katedra i Bazar autor zawarł podstawowe cechy odróżniające tradycyjny model rozwoju oprogramowania od zastosowanego przez fińskiego studenta modelu otwartego. Zaobserwowane przez niego zależności były sprzeczne z powszechnie znanymi prawami Brooksa. Prowadzony przez Linusa Torvaldsa projekt, współtworzony był przez tysiące programistów z całego świata komunikujących się ze sobą wyłącznie poprzez sieć Internet. Zgodnie z regułami Fredericka Brooksa niestabilność przedsięwzięcia oraz podatność na błędy wzrasta do kwadratu wraz z wzrostem ilości kanałów komunikacyjnych między jego uczestnikami. W przypadku jądra Linux opracowywanego przez międzynarodową społeczność, a koordynowanego przez Linusa Torvaldsa stało się jednak inaczej. Otwarty proces tworzenia jądra systemu operacyjnego (ang. kernel) charakteryzował się bowiem wysoką skalowalnością, dynamicznością, sprawnością komunikacji, szybkim analizowaniem kodu oraz usuwaniem wykrytych błędów.

Zależność będącą w sprzeczności ze sformułowanym przez Brooksa prawem Eric Raymond nazwał „prawem Linusa”. Istotę funkcji oddaje zawarte w eseju Katedra i Bazar stwierdzenie „gdzie wiele oczu, tam łatwo ujrzeć pluskwy”. Zgodnie z nim odpowiednia ilość użytkowników oprogramowania, beta testerów oraz zaangażowanych w projekt programistów, umożliwia wykrycie, zdefiniowanie, a także usunięcie niemal każdego problemu występującego w aplikacji.

Przeanalizowane modele rozwoju oprogramowania Eric Raymond określił zgodnie z ich charakterem jako styl katedralny oraz bazarowy. Metoda katedralna odnosząca się do tradycyjnie pojmowanej inżynierii oprogramowania opiera się na pracy zamkniętego grona deweloperów. Według autora eseju przypomina ona proces budowy katedry. Udział w projekcie biorą jedynie wyspecjalizowani architekci, a efekt ich prac udostępniany jest użytkownikom dopiero po zakończeniu wszystkich etapów związanych z jego rozwojem. W przypadku oprogramowania typu open source, Eric Raymond stwierdził, że pozornie chaotyczny, pełen różnych poglądów i planów model, swoją postacią przypomina funkcjonowanie bazaru.

Wypełnienie wszystkich zadań związanych z inżynierią wolnego i otwartego oprogramowania wymagało od społeczności opracowania niezbędnego zaplecza narzędziowego. Podstawową cechą wykorzystywanych w pracy środków jest otwarty model ich rozwoju oraz dystrybucji. Brak pobierania opłat za oprogramowanie usprawniające prace programistyczne, wolność wykorzystania oraz swobodny dostęp do dokumentacji to kluczowe aspekty zapewniające funkcjonowanie ruchowi WiOO. Głównymi komponentami wykorzystywanymi w otwartym modelu rozwoju oprogramowania są narzędzia komunikacyjne, system kontroli błędów oraz system kontroli wersji.

Kontakt pomiędzy rozproszonymi po całym świecie twórcami zapewnia szereg otwartych narzędzi komunikacyjnych, jak internetowe fora i listy dyskusyjne, kanały IRC, systemy wiki oraz otwarte protokoły komunikacyjne, np. Jabber/XMPP. Decydujące o powodzeniu projektów typu open source oprogramowanie pozwalające zgłaszać wykryte przez społeczność błędy stanowi przeważnie integralną część systemów kontroli wersji. Platformą funkcjonującą odrębnie jest Bugzilla, program opracowany oraz udostępniony na wolnej licencji przez fundację opiekującą się projektem Mozilla. Systemy kontroli wersji umożliwiające śledzenie oraz koordynowanie zmian zachodzących w kodzie źródłowym aplikacji pozwalają ponadto na tworzenie repozytoriów oprogramowania. Najpopularniejszymi narzędziami tego typu są system CVS, Git oraz Baazar.

Model otwartego rozwoju oprogramowania umożliwia współpracę wszystkich zainteresowanych osób bez względu na miejsce zamieszkania, zawód, wykształcenie oraz inne czynniki mające wpływ w przypadku projektów prowadzonych w trybie zamkniętym. Społecznościowy charakter ruchu wolnego i otwartego oprogramowania, determinujący wysoką jakość generowanego kodu oraz prędkość wykrywania i usuwania błędów, stał się jednocześnie elementem wrogiej kampanii koncernów komercyjnych. Według prowadzonej przeciwko środowisku FLOSS propagandy, oprogramowanie typu open source tworzone jest głównie przez niedoświadczonych entuzjastów, studentów, a także inne osoby niemogące zagwarantować należytej jakości produktu. Publikowany corocznie przez The Linux Foundation raport, dotyczący największego przedsięwzięcia środowiska FLOSS zaprzecza tym informacjom.

Budowa otwartego jądra Linux, stanowiącego brakujący element wolnego systemu operacyjnego, w krótkim czasie stała się najpopularniejszym projektem ruchu WiOO. Zapoczątkowana przez fińskiego studenta Linusa Torvaldsa inicjatywa przyciągnęła tysiące programistów, a także przedsiębiorstwa komercyjne widzące w projekcie oszczędności oraz źródło zysku. Zgodnie z zawartymi w raporcie Linux Kernel Development informacjami, ponad 70% zmian w kernelu wprowadzana jest przez programistów pracujących dla firm komercyjnych. Do największych przedsiębiorstw biorących udział w rozwoju oprogramowania należy zaliczyć firmę Red Hat odpowiedzialną za 12,4% zmian, Novell 7,0%, IBM 6,9%, Intel 5,8%, Oracle 2,3%, Fujitsu 1,2%, Nokia 1,0%, HP 1,0%, Google 0,8%, AMD 0,8%. Pracownicy koncernów związanych z rynkiem IT odpowiedzialni są ponadto za większość czynności związanych z oceną jakości kodu wprowadzanego do jądra.

Wspieranie projektów typu open source przez przedsiębiorstwa komercyjne można zauważyć także w przypadku przedsięwzięć związanych z działalnością bibliotek. Przykładem tego typu zależności jest projekt Koha. Dynamiczny rozwój najpopularniejszego otwartoźródłowego zintegrowanego systemu bibliotecznego jest efektem współpracy pomiędzy społecznością, a szeregiem firm wspierających projekt. Największe z przedsiębiorstw zajmujące się rozwojem systemu zorganizowane są w konsorcjum PTFS. Pomoc wykorzystywana jest także w przypadku rozwijanego przez Massachusetts Institute of Technology systemu Dspace. Wsparcie zaoferowane przez Hewlett-Packard umożliwia prowadzenie bieżących prac oraz ciągłość publikacji nowych wersji oprogramowania.

Obrazek

Konceptualna mapa FLOSS. Opracowanie własne na podstawie Conceptual Map FLOSS, Wikimedia.

Asystowanie w rozwoju środowiska FLOSS firm komercyjnych związane jest z wynikającymi tego typu działalności korzyściami. Wsparcie wolnego i otwartego oprogramowania opiera się na wielu zróżnicowanych modelach biznesowych. W przypadku przedsiębiorstw zajmujących się rozwojem WiOO stosowany jest także podstawowy podział metod produkcji oprogramowania własnościowego.

Programy komputerowe licencjonowane komercyjnie podzielone zostały na dwie zasadnicze grupy. Aplikacje typu COTS (ang. Commercial Off The Shelf), dystrybuowane w formie gotowego zamkniętego produktu, dostępne w systemie sprzedaży hurtowej lub detalicznej oraz oprogramowanie NDI (ang. Non Development Item) opracowywane dla określonego użytkownika według określonych przez niego wymagań. Specyfika środowiska FLOSS umożliwiająca zastosowanie obu wspomnianych modeli, w związku z rygorystycznymi warunkami licencji GNU GPL skłania większość firm funkcjonujących w tym sektorze do produkcji oprogramowania COTS.

Analiza przyjętych przez przedsiębiorstwa modeli biznesowych ukazuje szerszy zakres wykorzystania WiOO w działalności komercyjnej. Zgodnie z informacjami zawartymi w raporcie Linux Kernel Development jedną z podstawowych form aktywności firm wspierających środowisko wolnego i otwartego oprogramowania jest produkcja sprzętu komputerowego. Optymalizacja WiOO pod kątem oferowanych urządzeń umożliwia zarówno rozszerzenie pola dystrybucji, jak i redukcję kosztów związanych z opracowaniem własnych rozwiązań programistycznych. Model ten stosowany jest przez największe światowe koncerny, m.in. IBM, AMD, Fujitsu, Samsung, Intel, Oracle, Nokia oraz HP.

Przykładem modelu wykorzystującego zasadę NDI w stosunku do oprogramowania open source jest strategia budowania wartości. Organizacje zajmujące się dystrybucją aplikacji o zamkniętym kodzie źródłowym wykorzystują FLOSS jako uzupełnienie lub uatrakcyjnienie swojej oferty. Wzorcem tego typu działalności jest firma Oracle. Koncern zajmujący się świadczeniem wyspecjalizowanych usług informatycznych oprócz rozwiązań o charakterze własnościowym oferuje także darmowe odpowiedniki uelastyczniające ofertę firmy. Niskie koszty eksploatacji rozwiązań o otwartym kodzie źródłowym oraz możliwość skorzystania z wsparcia technicznego oferowanego zarówno przez społeczność zorganizowaną wokół projektu, jak i tę udostępnianą na zasadach komercyjnych skutecznie zachęcają potencjalnych klientów do skorzystania z propozycji przedsiębiorcy.

Uzupełnieniem wspomnianego modelu jest strategia usług dodanych. Na ofertę wykorzystujących wzorzec firm składa się świadczenie usług konsultingowych, a także pomoc związana z wdrażaniem danego rozwiązania informatycznego. W przypadku przedsiębiorstw opierających swą ofertę na rozwiązaniach typu open source wykorzystywane są dwie możliwości funkcjonowania. W celu świadczenia wspomnianych wyżej usług, firmy działające w tym sektorze mogą korzystać z rozwiązań już dostępnych bądź też tworzyć własne programy. Strategia usług dodanych jest szczególnie popularnym modelem biznesowym wśród przedsiębiorstw oferujących swe usługi bibliotekom. Większość z nich funkcjonuje w oparciu o dostępne na rynku główne projekty środowiska FLOSS. Do najczęściej wybieranych aplikacji na bazie których świadczone są usługi należy zaliczyć zintegrowane systemy Koha, Evergreen, NewGenLib, systemy umożliwiające tworzenie repozytoriów internetowych Dspace, Greenstone, Eprints oraz systemy zarządzania treścią Joomla!, Drupal, Moodle.

Kolejnym modelem biznesowym firm działających w oparciu o rozwiązania FLOSS jest strategia patrona. Metoda działalności zbliżona formą do strategii usług dodanych polega na wspieraniu istniejących projektów celem zmniejszenia udziałów funkcjonujących w danym sektorze firm komercyjnych. Rozwiązanie stosowane jest przeważnie przez organizacje zajmujące się produkcją sprzętu komputerowego. Zaoferowanie produktu mogącego zastąpić aplikacje rozpowszechnianą na zasadach komercyjnych umożliwia producentom wspierającym WiOO dotarcie do grupy klientów zależnych dotąd od sprzętu posiadającego wsparcie dla oprogramowania własnościowego. Przykładem organizacji wykorzystujących strategię patrona jest koncern IBM, a także Mozilla.

Rozwiązania oferowane przez firmy komercyjne w związku z szybkim rozwojem technologii ICT mogą być oferowane za pośrednictwem sieci Internet. Użytkownik pragnący skorzystać z danego rozwiązania nie musi posiadać rozbudowanego zaplecza technicznego gdyż wszystkie zadania obliczeniowe wykonywane są w centrach usługodawcy. Model wynajmu oprogramowania wraz ze sprzętem komputerowym wykorzystywany jest przez największe firmy sektora IT. Do grupy stosujących go przedsiębiorstw można zaliczyć koncern Google, Amazon, Ebay, Oracle oraz Microsoft. Świadczenie usług opartych na zasadzie funkcjonowania w chmurze obliczeniowej jest popularne także wśród firm oferujących swe usługi bibliotekom. Należy wymienić tu przede wszystkim propozycje konsorcjum PTFS udostępniającą oprogramowanie Koha oraz firm zajmujących się wdrażaniem systemu Dspace.

Popularnym modelem biznesowym wykorzystywanym przez przedsiębiorstwa zajmujące się dystrybucją oprogramowania komputerowego jest strategia podwójnego licencjonowania. System ten umożliwia rozpowszechnianie aplikacji zarówno w wersji własnościowej jak i wydania otwartoźródłowego. Dystrybucja programów w oparciu o dwa rożne modele rozwoju przynosi przedsiębiorcom wiele korzyści. Poza przychodami wynikającymi ze sprzedaży licencji komercyjnych producent oprogramowania może liczyć na szybszy rozwój projektu oraz wzrost rozpoznawalności marki. Zastosowanie strategii podwójnego licencjonowania można zaobserwować w przypadku działalności firmy MySQL AB oraz wielu firm oferujących swe usługi bibliotekom. Oprogramowaniem rozpowszechnianym w oparciu o dwa odmienne modele dystrybucji jest zintegrowany system biblioteczny Koha, a także platforma NewGenLib wspierana przez firmę Verus Solutions Pvt Ltd.

Mnogość modeli biznesowych stosowanych przez firmy zajmujące się rozwojem wolnego i otwartego oprogramowania może świadczyć o wysokim stopniu zainteresowania środowiskiem FLOSS wśród organizacji komercyjnych. Sytuacja ta odnosi się jednak przeważnie do głównych projektów open source, których rozwój może przynieść przedsiębiorcom wymierne korzyści. Badania przeprowadzone w jednym z najpopularniejszy repozytoriów WiOO, serwisie SourceForge obrazują odmienną stronę inżynierii programów FLOSS. Zgodnie z zawartymi w raporcie informacjami, 9% badanych projektów rozwijanych jest indywidualnie. Grupy deweloperów skradające się z 2 do 4 osób stanowią 22% przeanalizowanego oprogramowania. Średnia wartość obliczona dla całej populacji projektów zarejestrowanych w SourceForge wynosi 2.0067. Słabe wsparcie badanych projektów przekłada się przeważnie na niewystarczającą prędkość rozwoju oprogramowania, niski poziom innowacyjności, a także krótsze życie programu. Aplikacje niebędące imitacją już istniejących rozwiązań stanowią według raportu jedynie 12,8% projektów przeanalizowanych w badaniu. Serwis SourceForge jako darmowa platforma hostująca projekty WiOO nie ukazuje jednak całościowego obrazu środowiska. Większość dynamicznie rozwijających się aplikacji nie jest bowiem zarejestrowanych w repozytorium.

Inżynieria oprogramowania open source wpływająca pozytywnie na jakość generowanego kodu oraz prędkość wykrywania i usuwania błędów staje się coraz częściej wykorzystywanym sposobem rozwoju aplikacji także w organizacjach o charakterze komercyjnym. Zmiany w postrzeganiu produkcji oprogramowania komputerowego związane z pojawieniem się zjawiska „otwartego kodu” są powodem wielu transformacji w sektorze IT. Efektem zapoczątkowanej przez firmę Netscape Communications migracji jest powstanie wielu nowych modeli biznesowych opartych o otwarte rozwiązania programistyczne. Pomimo wielu korzyści wynikających z zastosowania w rozwoju aplikacji otwartych licencji, metodologia związana z rozwojem programów FLOSS może mieć problemy w przypadku sektora wojskowego oraz zamkniętych systemów korporacyjnych. Pomijając obszary niesprzyjające zastosowaniu WiOO, należy stwierdzić, że korzystanie z modelu rozwoju otwartego przynosi korzyści zarówno firmom rozwijającym oprogramowanie, jak i użytkującym je klientom.