Baza wiedzy

W tej części chcielibyśmy się wyjaśnić Państwu niektóre pojęcia, a także podzielić naszą wiedzą dotyczącą tworzenia oprogramowania. Mamy nadzieję, że wiedza ta będzie dla Państwa użyteczna i pozwoli zrozumieć niejasne pojęcia i całą tematykę związaną z tworzeniem oprogramowania. Jeśli chcielibyście Państwo abyśmy wyjaśnili jeszcze inne pojęcia czy zagadnienia to prosimy o kontakt.

Co to jest specyfikacja funkcjonalna? Jak wygląda taki dokument, co powinien zawierać?

Specyfikacja funkcjonalna to najważniejszy dokument w procesie tworzenia oprogramowania. Jego stworzenie wymaga często sporo czasu, ale warto go poświęcić. Jest to etap planowania projektu i czas kiedy należy się dokładnie zastanowić jaki system chcemy zbudować, jakie cele ma realizować i czemu ma służyć. Specyfikacja to dokument, od którego wiele zależy: cena projektu, czas realizacji oraz satysfakcja z wykonanego oprogramowania. Warto mieć na uwadze, że wykonywanie zmian po zakończeniu projektu będzie bardziej kosztowne, a często może nawet niemożliwe, dlatego warto wszystko przemyśleć wcześniej. Pobieżnie zrobiona specyfikacja może skutkować z kolei nieadekwatną wyceną, co ostatecznie spowoduje niezadowoleniem po obu stronach kontraktu.

Aby specyfikacja mogła stanowić podstawę do wyceny powinna zawierać przynajmniej następujące informacje:

Określenie pełnego zakresu danych, jakie system ma przechowywać (wraz z zakresami poprawności danych). Zdefiniowanie źródeł danych – kto wprowadza, jakie są wartości dopuszczalne, jakie dane generuje system. W szczególności:

  1. Listę obiektów, którą system będzie obsługiwał (firma, klient, operator…).
  2. Dla każdego typu obiektu pełną listę parametrów opisujących ten obiekt (typ parametru, zakres danych, informację czy jest to pole obowiązkowe…) wraz z potencjalnymi zależnościami między parametrami (np. jeśli parametr A ma wartość „Nie”, to parametry B oraz C nie mają znaczenia).

Stworzenie pełnej listy funkcjonalności. Dla każdej z funkcjonalności należy:

  1. Określić parametry wejściowe oraz oczekiwane rezultaty.
  2. Określić mechanizmy oraz algorytmy przetwarzania danych.
  3. Określić sposoby walidacji danych.
  4. Określić obsługę sytuacji błędnych (nie wprowadzono danych obowiązkowych, wprowadzono dane poza zakresem…).
  5. Zdefiniować typy użytkowników oraz ich uprawnień do poszczególnych funkcjonalności.

Omówienie cech charakterystycznych wymaganego interfejsu użytkownika (bez projektu graficznego):

  1. Zdefiniować pełną listę formatek.
  2. Dla każdej formatki zdefiniować listę oraz orientacyjne rozmieszczenie komponentów (tabele, przyciski, pola edycyjne).
  3. Przypisać funkcjonalności zdefiniowane powyżej do komponentów.
  4. Zdefiniować wszelkie nietypowe zachowania kontrolek.

Specyfikacja powinna zaczynać się opisem pierwszego okienka na jakie wchodzi użytkownik – co widzi, co może zrobić, czym to będzie skutkowało lub do jakiej formatki go przeniesie – a kończyć opisem ostatniego. Dodatkowo powinny być opisane wszystkie mechanizmy, których użytkownik nie widzi – obliczanie danych, algorytmy, sposób przechowywania danych, rodzaje użytkowników, profile użytkowników itp.

Oprogramowanie dedykowane versus oprogramowanie gotowe – ''pudełkowe'' ?

Oprogramowanie dedykowane

Oprogramowanie stworzone najczęściej w jednym egzemplarzu na konkretne zamówienie. Koszty jego produkcji są dużo wyższe niż zakup programu pudełkowego, ale za to jest to rozwiązanie ściśle dopasowane do potrzeb danej firmy czy instytucji. Programy dedykowane tworzone są dla firm różnej wielkości i operujących w różnych branżach. Można stworzyć dowolny rodzaj oprogramowania na własne potrzeby: software (oprogramowanie działające na PC), aplikacje Web (oprogramowanie działające w Internecie) czy firmware (oprogramowanie działające na urządzeniach). Bardzo często łączy się także różne platformy w celu osiągnięcia pewnej synergii międzyplatformowej, lepszego i sprawniejszego przepływu danych i informacji, czytelniejszej wizualizacji danych czy uzyskania łatwiejszego dostępu do informacji.

Zalety oprogramowania dedykowanego:

  • stworzone dokładnie według wymagań klienta
  • zbudowane w dowolnej technologii
  • idealnie dostosowane do potrzeb firmy, odzwierciedlające jej procesy i zadania
  • przyjazne w użytkowaniu, ponieważ doskonale dopasowane do użytkowników
  • mogą być integrowane z innymi systemami w firmie
  • mogą być łatwo rozbudowywane, rozwijane, poprawiane
  • usprawniają funkcjonowanie firmy w różnych jej obszarach
  • zwiększają efektywność pracy, jej wydajność, możliwość kontroli a dzięki temu budują przewagę konkurencyjną.

Oprogramowanie gotowe „pudełkowe”

Są to programy sprzedawane w wielu egzemplarzach różnym klientom. W związku z tym, że odbiorcą produktu może być wiele różnych firm, a każda z nich będzie miała nieco inne potrzeby, cele i zadania – rozwiązanie „pudełkowe” musi być swego rodzaju kompromisem między różnymi wymaganiami wielu klientów. Tak więc oprogramowanie gotowe spełnia ogólne potrzeby, usprawnia pewne nadrzędne procesy – czyli realizuje takie zadania, które mogą być spójne dla szerokiej grupy różnorodnych klientów. Takie rozwiązanie jest jednak mało elastyczne, nie spełnia specyficznych wymagań konkretnego klienta, trudniej taki produkt rozwijać czy poprawiać, problemem może być także integracja takiego rozwiązania z innymi systemami działającymi już w firmie. Na rynku funkcjonuje wiele różnych produktów „pudełkowych”, które są stworzone w różnych technologiach, realizują różne funkcjonalności i potrzeby klientów różnych branż. A ponieważ takie rozwiązanie sprzedawane jest wielu firmom koszt jego wyprodukowania rozkłada się na wielu klientów w związku z czym cena jednostkowa może być niewysoka. Dużo wyższe mogą być już koszty przy próbie jego dostosowania lub rozwijania.

Zalety oprogramowania „pudełkowe”:

  • niskie koszty zakupu
  • szybki czas wdrożenia
  • doskonale funkcjonują w firmach, które nie mają specyficznych wymagań
  • niektóre z firm sprzedających systemy „pudełkowe” w ramach kosztów zakupu udostępniają darmowo update’y oprogramowania.

Kiedy kupić produkt pudełkowy a kiedy zlecić stworzenie oprogramowania dedykowanego?

Odpowiedź na to pytanie zależy od tego czego tak naprawdę szukamy i jak bardzo jesteśmy skłonni do kompromisów. Aplikacje gotowe – „pudełkowe” nigdy nie będą w 100% spełniać naszych oczekiwać, ale ich zdecydowaną zaletą są niskie koszty zakupu oraz szybki czas wdrożenia i uruchomienia. Jeśli natomiast na rynku brakuje gotowego oprogramowania, które spełnia specyficzne wymogi firmy, warto rozważyć stworzenie oprogramowania dedykowanego.

Zanim zleci się stworzenia oprogramowania dedykowanego

Przed zleceniem stworzenia programu dedykowanego firmie IT należy zastanowić się czy faktycznie stworzenie systemu dedykowanego przyniesie więcej korzyści niż zakup gotowego rozwiązania, biorąc pod uwagę zwiększone koszty wytworzenia dedykowanego oprogramowania.

Należy się zastanowić co tak naprawdę chce się uzyskać, jakie cele zrealizować, jakie procesy usprawnić, kto będzie korzystał z tego systemu (administrator, kierownictwo, pracownik szeregowy, może klient) – czy każda osoba będzie potrzebowała innych danych z systemu, czy wszyscy mają mieć dostęp do wszystkich informacji, do czego każda z tych osób będzie używała systemu: tylko do przeglądania danych, czy będzie także edytowała dane. Ważne jest aby prześledzić dokładnie jak poszczególne procesy przebiegają w tej chwili w firmie – nowy system powinien być odzwierciedleniem obecnych procesów lub ewentualnie w efekcie powinien je usprawniać, a nigdy utrudniać czy komplikować.

Czym różni się oprogramowanie Web od oprogramowania PC, kiedy warto robić rozwiązania internetowe a kiedy stacjonarne?

Oprogramowanie Web/aplikacje internetowe są coraz bardziej popularne i wydaje się, że większość produktów informatycznych będzie zmierzało właśnie w tę stronę. Właściwie dowolną aplikację można dzisiaj stworzyć w technologii Web (internetowa lub tak zwana technologia „cienkiego klienta” z angielskiego thin client). Jej główną zaletą jest to że można korzystać z takiej aplikacji w dowolnym czasie i niemalże w każdym miejscu używając różnych komputerów. Warunkiem jest jednak dostęp do Internetu. Nie musimy danej aplikacji instalować na komputerze więc nie ma obaw, że pojawią się problemy niespójności z wersją systemu operacyjnego, aplikacja działa zdalnie (jest zainstalowana na serwerze). Mniejsze problemy są także z update’ami czyli nowszymi wersjami danego oprogramowania – najczęściej odbywa się to samoistnie i nie wymaga od nas prawie żadnej aktywności. Jedyne czego potrzebujemy do korzystania z tego typu aplikacji to przeglądarka internetowa (Internet Explorer, Mozilla, Chrome lub inna), komputer i dostęp do Internetu. Aplikacje Web są wygodne w użytkowaniu, ważne jest jednak abyśmy mieli w miarę swobodny dostęp do Internetu, w przypadku problemów z Internetem aplikacja może działać wolno, z przerwami lub nie działać w ogóle.

Natomiast oprogramowanie PC to program instalowany na danym komputerze (jak np. Word, Excel, Photoshop) i tylko na nim dostępny. Często takie oprogramowanie ma wyższe wymagania sprzętowe, ale uniezależnia nas od stałego dostępu do Internetu. Najczęściej tego typu oprogramowanie jest używane w przypadku wizualizacji danych, które są pobierane z jakiegoś urządzenia (np. sprzętu medycznego, maszyn fabrycznych, urządzeń które mają w sobie procesor i mogą kolekcjonować pewne informacje, eksportować je) oraz do zarządzania tymi danymi, interpretacji tych danych itp. Oprogramowanie PC tworzy się też w wypadku bardzo dużej konieczności ochrony danych (np. systemy bankowe), choć część tych danych może już być udostępniona przez Web. Inne miejsce gdzie nadal często stosuje się oprogramowanie PC to systemy do zarządzania przedsiębiorstwem, ponieważ często zaciągają one dane z różnych urządzeń, dodatkowo nie w każdym miejscu danego przedsiębiorstwa jest dostęp do Internetu, a poza tym kolejną przesłanką jest jeszcze poczucie większej kontroli nad systemem, który jest zainstalowany lokalnie (choć i w tym segmencie pojawiają się powoli rozwiązania webowe).

Model pełnego cyklu tworzenia oprogramowania.

Poniżej przedstawiamy modelowy cykl rozwoju oprogramowania, który stosujemy w codziennej pracy:

  • Analiza potrzeb klienta – analiza wymagań klienta odnośnie nowego systemu.
  • Specyfikacja – przygotowanie dokumentacji precyzującej wymagania klienta.
  • Projekt – wykonanie projektu systemu oraz przygotowanie dokumentacji opisującej jego budowę.
  • Tworzenie oprogramowania – kodowanie i testowanie modułów.
  • Weryfikacja – integracja i testowanie całości.
  • Wdrożenie – dostarczenie oraz uruchomienie produktu.

Kliknij na obrazki, żeby zobaczyć szczegóły.

Oczywiście jest to jedynie model i często jest modyfikowany w zależności od potrzeb klienta, specyfiki projektu, możliwości technicznych, dostępnej dokumentacji itp. Główna idea pozostaje jednak ta sama: planowanie projektu, implementacja, wdrożenie.