Firma:
Jeden
z największych i najbardziej dynamicznych tzw. Direkt-Banków
w Niemczech (banków
nie posiadających własnych placówek
na terenie kraju, lecz obsługujących klientów głównie przez internet).
Nazwa projektu:
Centralny system zarządzania danymi klientów.
Organizacja pracy:
body leasing/consulting, outsourcing
Lokalizacja:
on-site, nearshore
Technologie:
Java Enterprise Edition (J2EE), ATG, Oracle, Swing, Spring, MQ-Series, EJB, SOAP, Hessian, FTP, XML over http, Axis, Ant, Eclipse, Log4j, jUnit, Cruise Control.
Sytuacja zastana:
- głównie z powodów finansowych bank rozwiązał kontrakt z poprzednim dostawcą, który napisał i utrzymywał system do tej pory,
- system miał spore problemy z jakością i wydajnością, co powodowało duże niezadowolenie użytkowników końcowych,
- system nie posiadał praktycznie żadnej poważniejszej dokumentacji ani testów jednostkowych, jedynym sposobem na poznanie go była rozmowa z użytkownikami, czytanie kodu oraz obserwowanie działania systemu,
- planowano dynamiczny dalszy rozwój aplikacji, związany z rozszerzeniem wachlarza oferowanych usług oraz wymianą niektórych technologii użytych w projekcie na nowsze (wersje baz danych, systemów operacyjnych, etc),
- bank wymagał aby, w bardzo krótkim czasie (około 1-2 tygodnie) przejąć kontrolę nad utrzymywaniem systemu – kontrola nad tym jak aplikacja działa w środowisku produkcyjnym oraz 2-nd level support (bugfixing),
- nowa wersja aplikacji (wersja 1.6), zawierająca dodatkową funkcjonalność w jednym z podsystemów bankowych, planowana była w przeciągu 2 miesięcy,
- jednocześnie bank planował równoległe tworzenie dwóch wersji aplikacji: 2.0 oraz 3.0, które miały być w wdrożone odpowiednio za 8 miesięcy i 1,5 roku (duże zmiany obejmujące integrację wielu nowych funkcjonalności oraz 2 dużych podsystemów bankowych),
- zadania nie miały ograniczać się tylko do technicznych, miały obejmować również consulting oraz analizę biznesowych potrzeb banku.
Zadania:
Rozwój, utrzymywanie aplikacji z naciskiem na poprawę jakości i szybkości działania obecnych już systemów.
Na potrzeby Klienta utrzymywaliśmy i współtworzyliśmy system obejmujący następujące dziedziny biznesowe: centralne gromadzenie informacji o klientach oraz o usługach z jakich oni korzystają (konta, karty kredytowe, karty debetowe, etc). System był centralnym miejscem składowania danych klientów i jego zadaniem było „rozesłanie” tych danych (nowo wprowadzonych czy zmienionych) do wszystkich innych podsystemów oraz korzystanie z tych podsystemów w celu dostarczenia dodatkowych informacji.
Zadania zespołu Consileon Polska to:
- analiza potrzeb banku,
- tworzenie specyfikacji zmian mających na celu wprowadzenia nowych usług oraz polepszenie jakości obecnych usług,
- utrzymywanie systemu, bugfixing oraz całościowa odpowiedzialność za to, jak zachowuje się system,
- dalszy rozwój systemu: z jednej strony dodawanie nowych funkcjonalności z drugiej poprawa jakości istniejących rozwiązań,
- analiza dalszych możliwości rozwoju czy migracji systemu na inne, nowsze i wydajniejsze technologie,
- doradztwo i ocena w zakresie wdrażania innych podsystemów bankowych i możliwości ich integracji.
Osiągnięcia:
- udane przejęcie opieki nad dużym i w większości nieudokumentowanym systemem w bardzo krótkim czasie (w przeciągu 1-2 tygodni pierwsze poprawione błędy),
- zgodne z harmonogramem wdrażanie kolejnych wersji systemu (obecnie wersja 5.x), w tym integracja systemów dwóch innych banków wykupionych przez Klienta,
- system utrzymywany jest przez Consileon od roku 2004 aż do dziś, zadowolenie Klienta wskazuje na to, że dalej będzie on przez nas utrzymywany także w przyszłości,
- poprawa jakości systemu poprzez ewolucyjny refactoring (mimo tego, że głównym celem każdej wersji systemu były nowe funkcjonalności udawało się nam za każdym razem polepszyć także część już istniejącego kodu),
- znaczna poprawa wydajności systemu – obecnie system obsługuje trzykrotnie więcej klientów niż w 2004 roku, przy jednoczesnej poprawie szybkości (osiągniętej głównie poprzez zmiany architektoniczne),
- poprzez użycie trybu near-shore znaczne zmniejszenie nakładów banku na utrzymywanie i rozwój systemu.