Audyt Oprogramowania
"Niezależna ocena produktów i procesów software'owych sprawdzająca zastosowanie się do standardów, wskazówek i procedur bazujących na obiektywnych kryteriach, które zawierają dokumentację określającą: formę lub zawartość wyrobu, proces według którego wyrób powinien być wyprodukowany, jak zastosowanie się do standardów."
-- IEEE
Czy przed zakupem systemu zastanawiacie się Państwo nad jego jakością? Oczywiście Jakość Oprogramowania jest do pewnego stopnia widoczna poprzez liczbę znalezionych błedów, ale to można poznać dopiero jakiś czas po zakupie.
Model Open Source, czyli przekazywanie oprogramowania razem z kodem źródłowym otwiera nowe możliwości dla sprawdzenia jakości kodu źródłowego. Pozwala kupującemu ocenić projekt na podstawie jego struktury.
Oto elementy składowe typowego audytu kodu/środowiska produkcyjnego:
- Analiza standardów kodowania
- Poprawne i spójne formatowanie kodu (wcięcia)
- Znaczące nazewnictwo klas, metod, zmiennych
- Rozkład liczby linii w metodach / klasach, liczby pól i metod w klasach, wykrycie potencjalnie problematycznych miejsc
- Analiza sprzężeń/spójności komponentów
- Prawidłowe separowanie warstw prezentacji, kontrolera i modelu
- Brak zależności cyklicznych pomiędzy komponentami
- Brak nadmiarowych sprzężeń od komponentów do używanych bibliotek
- Techniki jakości użyte w projekcie
- Zautomatyzowane testownie jednostkowe w projekcie
- Zautomatyzowane testownie integracyjne
- Statyczne techniki zapewnienia jakości
- Analiza bezpieczeństwa kodu
- Podatność na atak typu buffer-overflow
- Podatność na atak typu SQL injection
- Podatność na atak typu HTML injection
- Podatność na atak poprzez manipulację przy danych przesłanych od klienta (np. url hack)
- Analiza efektywności
- Brak potencjalnych problemów z wydajnością bazy danych (złożoność nie przekraczająca O(1) zapytań do bazy dla operacji interaktywnych)
- Brak potencjalnych problemów z efektywnością komunikacji klient-serwer (np. nadmiarowe, zbędne odświeżania strony dla aplikacji WWW)
- Wykorzystanie narzędzi kontroli wersji
- Każdy programista ma oddzielne konto
- Korzystanie z rozgałęzień dla kodu niestabilnego
- Obecność zdefiniowanej procedury aktualizacji kodu stabilnego i tworzenia wersji instalacyjnej produktu