Konsultacje: Fabryka oprogramowania

Od wielu lat tworzymy oprogramowanie zwracając szczególną uwagę na jakość i efektywność naszych działań. Zbudowanie dobrej jakościowo i użytecznej aplikacji wymaga, poza dobrym zdefiniowaniem funkcjonalności, odpowiedniego podejścia organizacyjnego i doboru odpowiednich narzędzi. Nasze doświadczenia pokazują, że najlepsze efekty przy realizacji wymagań funkcjonalnych dają metody typu "agile", czyli głównie określenie właściwych priorytetów dla celów w kolejnych fazach powstawania projektu. Zespół powinien koncentrować się na dostarczaniu działającego oprogramowania w określonych przedziałach czasowych. Zarządzający zespołem powinni koncentrować się na pomiarach efektywności zespołu i zgodności realizowanych działań z wcześniejszymi oszacowaniami. Wszelkie odchyły od normy powinny być skrupulatnie badane, a wnioski powinny wpływać na przyszłe planowania i oszacowania. Cały projekt powinien być podzielony na mniejsze części, z których każda musi mieć określony priorytet. Realizacja projektu zawsze musi koncentrować się na jak najszybszym wytworzeniu elementów o najwyższym priorytecie. Takie podejście, jeśli nie zagwarantuje pełni sukcesu, to przynajmniej zminimalizuje możliwość rozjechania się planów z rzeczywistością.

Każda część oprogramowania, która powstaje w trakcie procesu wytwarzania, powinna być zweryfikowana pod kątem poprawności wykonania i poddana testom. Audyt kodu źródłowego jest częstym elementem, o którym zapominają nawet doświadczeni programiści. Częsty audyt może uchronić nas przed trudnymi do wychwycenia w inny sposób błędami. Testowanie powinno być zautomatyzowane, na każdym poziomie, poprzez testy jednostkowe, integracyjne, wydajnościowe, funkcjonalne, interfejsu użytkownika itp. Testy manualne są dużo bardziej kosztowne i trwają dłużej. Można z nich krzystać tylko jeśli nie ma innej alternatywy.

Dobór właściwych narzędzi do realizowanych zadań ma istotny wpływ na szybkość i sprawność budowania oprogramowania. Do najważniejszych należy zaliczyć system kontroli wersji (SCM), system śledzenia zmian i postępu prac (issue tracker), system budowania projektu (build manager) i ciągłej integracji (continuous integration), zintegrowane środowisko deweloperskie (IDE), system audytu kodu oraz narzędzia do budowy automatycznych testów. Ich brak może skutecznie utrudnić i skomplikować proces.

Ważne jest również zapewnienie członkom zespołu sprawnej komunikacji wewnątrz jak i na zewnątrz projektu. Można i powinno się do tego wykorzystywać narzędzia umożliwiające współpracę poprzez sieć takie jak komunikatory i oprogramowanie z dostępem przez przeglądarkę WWW. Samo środowisko fizyczne, w którym znajdują się programiści, powinno też być odpowiednio dostosowane do tego rodzaju pracy. Ludzie pracujący w jednym projekcie powinni znajdować się blisko, a najlepiej siedzieć obok siebie w jednym pokoju. W biurze, w którym pracują, powinny znaleźć się elementy pozwalające na wyciszenie się i odreagowanie stresu.

Jeżeli interesuje Państwa ten temat - zapraszamy do umówienia się na prezentację naszych doświadczeń związanych z budowaniem efektywnej i skutecznej fabryki oprogramowania.

Javart
Nasi klienci:
Javart Klienci