KSEM WETI PG October 7, 2015
Inżynieria wydajności oprogramowania Software performance engineering (SPE) - dyscyplina zajmująca się poprawą dojrzałości procesu budowy i rozwoju dla zwiększenia ich wydajności. podejście systematyczne i ilościowe skupione na architekturze i implementacji oprogramowania obejmuje techniki stosowane w każdej fazie cyklu życia oprogramowania, w szczególności: reaktywności (responsiveness) czyli zdolności systemu do spełniania wymagań na czas i przepustowość, np: czas potrzebny do zakończenia zadania, liczba transakcji na jednostkę czasu, czas obsługi zdarzenia. skalowalności (scaliability) czyli zdolności systemu do spełniania wymagań na czas i przepustowość w miarę jak zmienia się (rośnie) popyt na usługę systemu
Cele SPE Eliminacja opóźnień wdrożenia systemu powodowanych problemami z wydajnością Eliminacja przeróbek systemu powodowanych problemami z wydajnością Eliminacja specjalnych działań na rzecz dostrajania i optymalizacji Eliminacja zbędnych kosztów sprzętowych związanych z zapewnieniem wydajności Redukcja kosztów utrzymania oprogramowania związanych z problemami z wydajnością w fazie produkcji Redukcja kosztów utrzymania oprogramowania związanych z naprawianiem oprogramowania ad hoc
Proces SPE
Jak się realizuje SPE? Zarządzanie projektem wczesna estymacja ryzyka wydajności, śledzenie kosztów i zysków inżynierii wydajności dopasowanie poziomu SPE do ryzyka wydajności całego systemu integracja SPE z procesem rozwoju oprogramowania SW definiowanie celów ilościowych wydajności identyfikacja przypadków użycia o największych wymaganiach na
Jak się realizuje SPE? Modelowanie wydajności przed rozpoczęciem pisania kodu: analiza najprostszego modelu identyfikującego problemy wydajnościowe w architekturze, projekcie i implementacji systemu analiza coraz bardziej szczegółowa w miarę rozwoju oprogramwoania
Jak się realizuje SPE? Performance measurement planowanie eksperymentów pomiarowych pomiary - wcześniej i często
Zasady SPE Określ ściśle, jaki system powinien być nie używaj najszybszy jak to możliwe. Używaj określeń ilościowych ( Przepustowość pakietów musi wynosić 600 K pakietów na sekundę dla forwardowania IP) określ przyszłe ilościowe cele określ co można osiągnąć: minimalnie ( Must ) i maksymalnie ( Should ) określ jak to zmierzyć
Zasady SPE Gdzie jesteś teraz? które przypadki użycia uwidaczniają problem z wydajnością? czy problemy moga być rozwiązane standardowymi technikami optymalizacji? czy potrzebny jest nowy projekt, czy można system dostroić? Jakich technik optymalizacji użyć? optymalizacja automatyczna (niskie koszty) - opcje kompilatora przeprojektowanie architektury systemu (duże koszty) algorytmy optymalne (np. FFT zamiast DFT), inne zmiany w oprogramowaniu (średnie koszty)
Zasady SPE Plan osiągnięcia celów efektywność w sensie Pareto - termin ekonomiczny oznaczający taki podział dostępnych dóbr, że nie można poprawić sytuacji jednego podmiotu nie pogarszając sytuacji któregokolwiek z pozostałych podmiotów. modelowanie i benchmarking iteracyjne dostrajanie systemu
Zasady SPE Analiza ekonomiczna koszty: czas i koszt analizy, wymagane zmiany w kodzie, koszt zmian sprzętowych, koszt propagacji zmian zyski: wzrost wydajności, odroczone upgrade-y sprzętowe, oszczędności na zasobach ludzkich
Rational Unified Process (RUP) RUP - iteracyjny framework rozwoju oprogramowania (Rational Software Corporation, obecnie IBM)
SPE a RUP Faza początkowa (inception): identyfikacja czynników wysokiego ryzyka dla wydajności systemu Faza opracowania (elaboration): rozwiązanie kluczowych problemów podstawowa wersja architektury systemu krytyczne przypadki użycia wymagania niefunkcjonalne (system powinien być szybki, niezawodny, skalowalny...) ile kluczowych transakcji w jednostce czasu? Faza konstrukcji (construction): budowa systemu Faza przejścia (do produkcji, transition): szkolenie użytkowników końcowych testowanie dla weryfikacji oczekiwań użytkowników końcowych sprawdzanie założeń z fazy poczatkowej
Wymagania niefunkcjonalne SCRUPLED Security, licensing, installation Copyright, legal notices Reliability defects, mean time between failures, availability Usability ease of use requirements presentation design guidelines, UE standards, accessibility standards, training standards, sheets, help systems etc. Performance quantitative performance requirements Localization and internationalization foreign-language operating systems, localization enablement, specific localizations Essential standards industry, regulatory and other externally imposed standards Design constraints other constraints on the system or development technologies; mandated programming languages and standards, platforms, common components, etc.
Proces optymalizacji Optymalizacja kompilacji kompilacja tradycyjna : każdy kod źródłowy kompilowany niezależnie, pliki obiektowe (.o) łączone razem (linker). kompilacja globalna : każdy plik C wstępnie przetwarzany i przekazany do optymalizacji w formie jednego pliku; trwa dłużej, trudności z debugowaniem
Konfiguracja kompilatora Architektura maszyny docelowej Końcówkowość (mało- lub wielko-) Model pamięci Początkowy poziom optymalizacji (najlepiej najniższy!)
Software Engineering for Embedded Systems by Robert Oshana; Mark Kraeling Published by Elsevier Science; Newnes, 2013