3 sprawdzone metody na utrzymanie oprogramowania

Jeśli już tu jesteś, to z dużym prawdopodobieństwem poszukujesz rozwiązania dla kwestii starych technologii w Twojej firmie! Java 1.4-1.6, .NET w wersjach niewspieranych, nieaktualizowane serwery aplikacyjne, stare wersje bibliotek Spring, Hibernate, C/C++, Delphi, Cobol, Scala, PHP i wiele innych. Brzmi znajomo? Istnieje szansa, że wiemy,  jak Ci pomóc. Utrzymanie oprogramowania to dla nas chleb powszedni.

1. Dlaczego?

Na przestrzeni dwóch dekad przejęliśmy w utrzymanie kilkadziesiąt różnych systemów od wielu Klientów. Zazwyczaj powodami było niezadowolenie z jakości usług obecnego dostawcy, zaprzestanie świadczenia wsparcia lub wyjście z użycia technologii, która wspierała kluczowe systemy w firmie.

Do tego moglibyśmy dodać kolejne argumenty, które szczególnie dziś zyskują na znaczeniu. Na przykład, konieczność znalezienia oszczędności oraz koncentracja wysiłków zespołu IT na projektach rozwojowych, a nie utrzymaniowych.

Bez względu na źródło problemów związanych z utrzymaniem starych, jednocześnie ciągle potrzebnych, firmie systemów, możesz rozwiązać je w optymalny dla siebie sposób. Spójrz na poniższą listę. Które punkty dotyczą Twojej organizacji?

  • Utrzymanie oprogramowania uniemożliwia mi realizację bieżących projektów dla biznesu.
  • Coraz trudniej jest mi znaleźć specjalistów o wymaganych kompetencjach.
  • Ponoszę coraz większe koszty projektów utrzymaniowych.
  • Zostałem bez wsparcia twórców jednego z systemów.

2. Rozwiązanie na utrzymanie

Jeśli jeszcze nie podjąłeś konkretnych decyzji, to prawdopodobnie rozważasz jeden z trzech poniższych wariantów podejścia do legacy. Sprawdź, czy w każdym z tych przypadków nasze zrozumienie potrzeb pokrywa się z Twoimi oczekiwaniami:

Strategia na utrzymanie oprogramowania #1: „Wygaszam i wyłączam”

Wdrażasz nowe rozwiązanie, dlatego sukcesywnie wygaszasz stary system. Zależy Ci na podtrzymaniu żywotności legacy w minimalnym zakresie poprzez rzetelną ocenę zasadności poszczególnych zgłoszeń i zajmowanie się tymi, które są krytyczne. Kluczowym będzie tu tzw. mały rozwój, np. w zakresie zmian wymaganych przez prawo. Pożądane będzie też utrzymanie wykorzystywanych przez system elementów infrastruktury: instalacja istotnych aktualizacji OS, baz, serwerów aplikacji i WWW.

Strategia na utrzymanie oprogramowania #2: „Migruję do nowych technologii”

Zmieniasz technologię systemu, by móc wdrażać nowoczesne rozwiązania. W tym wypadku będziesz oczekiwać opracowania docelowej architektury, rekomendacji strategii migracji oraz jej późniejszego wykonania w całości lub częściowo. Szczególnie ważne będą wcześniejsze doświadczenia potencjalnego Partnera w podobnych projektach, aby mieć pewność, że zmiana przebiegnie sprawnie i w terminie.

Strategia na utrzymanie oprogramowania #3: „Korzystam, minimalizując konieczne zmiany”

Opierasz się na dotychczasowym rozwiązaniu, ograniczając się jedynie do krytycznych zmian.
Szczególne ważne będzie tu usprawnienie obecnych systemów, np. poprzez automatyzację najbardziej czasochłonnych lub błędogennych czynności. Sam system powinien być utrzymywany w minimalnym zakresie, aby pozwalał na zachowanie bezpieczeństwa biznesu. Dlatego racjonalna ocena „krytyczności” zgłoszeń oraz koniecznych zmian, rozwój w zakresie zmian prawnych oraz pilnowanie aktualizacji będzie tym, na czym Ci najbardziej zależy.

Chcesz wiedzieć, które z rozwiązań będzie najlepsze dla Ciebie? Napisz do nas! 

3. Utrzymanie oprogramowania według nas

Oddanie swojego oprogramowania w utrzymanie partnerowi zewnętrznemu wiąże się z ryzykiem. Może być drogą przez mękę lub okazać się wygodnym rozwiązaniem.  Od czego to zależy? Naszym zdaniem kluczowe znaczenie ma metodyczne podejście do takich inicjatyw. Droga na skróty praktycznie zawsze się mści. Dlatego nasze projekty prowadzimy zgodnie z opracowanym przez nas i sprawdzonym w kilkudziesięciu realizacjach planem całej tranzycji.

Każdy projekt jest inny, dlatego proces przejmowania systemów dostosowujemy do indywidualnej sytuacji Klienta. Najczęściej system przejmujemy „płynnie”. Przez pewien czas możemy być wsparciem dla obecnych sił utrzymania lub od razu przejąć dowodzenie kompleksowo.

4. Krok po kroku, nie z doskoku

Pierwszym etapem jest ocena portfolio. Obejmuje ona analizę Twojego środowiska informatycznego oraz oczekiwań w zakresie efektów współpracy i utrzymania parametrów o krytycznym znaczeniu.  Kolejnym krokiem jest sprawne przeprowadzenie tranzycji. Przygotujemy się do pełnego przejęcia opieki nad systemami, dzieląc to na etapy.

Z każdym kolejnym działaniem poszerzamy wiedzę na temat przejmowanego rozwiązania – począwszy od analizy systemu wraz z dokumentacją, odtworzeniem i testowaniem na własnym środowisku, poprzez naprawę błędów, aż po gotowość do pełnego świadczenia usług.

 Etap 1 – rozpoznanie sytuacji

  • Zapoznanie z dokumentacją, weryfikacja jej kompletności, jakości oraz spójności;
  • Przegląd kodu – weryfikacja jakości, komentarzy, możliwości uruchomienia, zrozumiałości, stopnia skomplikowania;
  • Uzyskanie i weryfikacja dostępów do środowisk testowych i produkcyjnych;
  • Uruchomienie środowiska testowo w naszej infrastrukturze, działając zgodnie z otrzymaną dokumentacją;
  • Warsztaty analityczno-architektoniczne z Klientem, które zweryfikują stopień zrozumienia dokumentacji systemu;
  • Szkolenia w formie przeglądu funkcjonalności systemu (jeśli konieczne);
  • Przegląd spójności środowisk testowych, produkcyjnych oraz zgodności z dokumentacją architektoniczną.

 Etap 2 – pierwsze testy

  • Testy UAT na własnym, dedykowanym środowisku – przeprowadzenie ich na podstawie dokumentacji testowej dostarczonej przez Klienta;
  • Weryfikacja dokumentacji vs kod źródłowy na podstawie prac wykonanych w Etapie 1. oraz sporządzenie listy rozbieżności;
  • Weryfikacja zgodności wersji systemu na środowiskach testowych i produkcyjnych;
  • Aktualizacja – uzupełnienie dokumentacji o elementy brakujące lub zmienione w stosunku do zastanej wersji systemu;
  • Wyrównanie stanu środowisk poprzez uzupełnienie systemów testowych o brakujące lub zmieniane funkcjonalności w stosunku do zaktualizowanej dokumentacji. Aktualizacja systemu produkcyjnego, wspomaganie obecnego dostawcy w świadczeniu usług serwisowych.

 Etap 3 – ustalenie zakresu

  • Weryfikacja listy błędów istniejących w systemie;
  • Ustalenie harmonogramu prac, w szczególności naprawy błędów;
  • Ustalenie zakresu naszego uczestnictwa w rozpoczętych pracach rozwojowych wraz z harmonogramem dostarczenia poszczególnych produktów;
  • Rozpoczęcie przejściowego etapu utrzymania systemu, na zasadach obniżonych kar umownych – w tym okresie wszystkie produkty będą autoryzowane przez Klienta;
  • Ustalenie harmonogramu wdrożenia produktów dostarczonych w trakcie Etapów 1-3 przez innych dostawców;
  • Potwierdzenie przez obie strony gotowości do przejęcia przez nas samodzielnej obsługi systemu w zadanym zakresie;

 Etap 4 – pełne utrzymanie oprogramowania

Rozpoczęcie samodzielnego świadczenia usług na uzgodnionych warunkach.  Utrzymanie oprogramowania i zasady nim rządzące są często bardzo rygorystyczne, szczególnie w działalnościach o wysokiej reputacji oraz zaufaniu społecznym czy klientów.

Etapy utrzymania oprogramowania - fazy tranzycji

5. Podsumowanie

Opisany sposób działania pozwala nam na dogłębne poznanie systemów w krótkim okresie. Typowy czas potrzebny na przejęcie pojedynczej aplikacji to zazwyczaj 2-3 tygodnie. Ponieważ metodyczne podejście umożliwia skalowanie efektów, to jednocześnie możemy nim objąć kilka, a nawet kilkanaście aplikacji. Tranzycja jest procesem, który przebiega zwinne, a więc w pełni kontrolowanie, jeśli chodzi o postępy i obserwowane efekty.

Chcesz porozmawiać o potrzebach Twojej firmy? Napisz do nas! 

Tomasz Turmowicz
Altkom Software & Consulting