10 obszarów wiedzy inżynierii oprogramowania według Guide to the Software Engineering Body of Knowledge (SWEBOK)

10 obszarów wiedzy inżynierii oprogramowania według Guide to the Software Engineering Body of Knowledge (SWEBOK)

1. Software requirements (wymagania oprogramowania)
Obszar ten związany jest z pozyskiwaniem, analizą, specyfikacją i walidacją wymagań oprogramowania. Powszechnie uważa się że, złe wykonanie tych aktywności stanowi duże zagrożenie dla projektu informatyczne. Wymagania oprogramowanie wyrażają narzucone na produkt potrzeby i ograniczenia w celu rozwiązania rzeczywistego problemu.

2. Software design (projektowanie i projekt oprogramowania)
Standard IEEE610.12-90 definiuje projektowanie jako “proces definiowania architektury, komponentów, interfejsów i innych charakterystyk systemu lub komponentu. Projekt oprogramowania jest zdefiniowany jako rezultat procesu projektowania. Projektowanie oprogramowania skład a się z dwóch aktywności: Projektowanie architektury oprogramowania – opisywanie struktur i organizacji oprogramowania na wysokim poziomie i identyfikowania komponentów oprogramowania. Projektowanie szczegółowe – szczegółowe opisywanie komponentów, tak by na podstawie projektu możliwa była ich konstrukcja.

3. Software construction (konstrukcja oprogramowania)
Termin konstrukcja oprogramowania oznacza tworzenie działającego oprogramowania poprzez kodowanie, weryfikację, testowanie jednostkowe, testowanie integracyjne i debugowanie.

4. Software testing (testowanie oprogramowania)
Testowanie jest aktywnością wykonywaną w celu oceny jakości produktu i ulepszania go poprzez identyfikację defektów i problemów. Na testowanie oprogramowania składa się dynamiczna weryfikacja zachowania programu na podstawie zestawu odpowiednio wybranych przypadków testowych. Obecnie testowanie oprogramowania jest postrzegane jako aktywność, która powinna obejmować cały proces tworzenia i pielęgnacji oprogramowania.

5. Software maintenance (pielęgnacja oprogramowania)
Po oddaniu do użytkowania oprogramowanie zmienia się i ewoluuje – odkrywane są błędy, zmienia się środowisko, w którym oprogramowanie musi funkcjonować, pojawiają się nowe wymagania. Faza pielęgnacji oprogramowania rozpoczyna się po oddaniu oprogramowania do użytku, natomiast aktywności pielęgnacji zaczynają się znacznie wcześniej. Pielęgnacja oprogramowania jest ogólnie definiowana jako wszystkie aktywności wymagane do zapewnienie ekonomicznego serwisu oprogramowania.

6. Software configuration management (SCM) (zarządzanie konfiguracją oprogramowania)
System może zostać zdefiniowany jako zbiór komponentów zorganizowanych w taki sposób, żeby spełniać dany zestaw funkcji. Konfiguracją systemu są funkcjonalne i/lub fizyczne charakterystyki sprzętu, zasobów firmowych i oprogramowania opisane w dokumentacji technicznej i zrealizowane w gotowym produkcie. Zarządzanie konfiguracją zajmuje się identyfikacją konfiguracji systemu w wybranych momentach, w celu systematycznego kontrolowania zmian konfiguracji oraz utrzymania integralności i śladowości (powiązań między różnymi elementami systemu) podczas całego cyklu życiowego systemu. Aktywności zarządzania konfiguracją oprogramowania obejmują: zarządzanie i planowanie procesem SCM, identyfikacja konfiguracji oprogramowania, kontrolowanie konfiguracji oprogramowania, audyty konfiguracji oprogramowania.

7. Software engineering management (zarządzanie w inżynierii oprogramowania)
Zarządzanie w inżynierii oprogramowanie można zdefiniować jako zastosowanie aktywności menadżerskich, takich jak planowanie, koordynacja, pomiary, monitorowanie kontrolowanie i tworzenie raportów, w celu zapewnienie, że wytwarzanie i pielęgnacja oprogramowania są prowadzone w sposób systematyczny, zdyscyplinowany i mierzalny. Dyscyplina ta zajmuje się zarówno zarządzaniem jak i miernictwem w procesie inżynierii wymagań.

8. Software engineering process (proces inżynierii oprogramowania)
Dyscyplina ta zajmuje się definiowaniem, implementacją, oceną, mierzeniem, zarządzaniem, zmienianiem i usprawnianiem procesów cyklu życiowego oprogramowania.

9. Software engineering tools and methods (narzędzia i metody inżynierii oprogramowania)
Narzędzia używane przy wytwarzaniu oprogramowania maja na celu wsparcie cyklu życiowego oprogramowania. Narzędzia pozwalają na zautomatyzowanie powtarzalnych, dobrze zdefiniowanych czynności, dzięki temu inżynier oprogramowani może skupić się na czynnościach bardziej kreatywnych. Metody inżynierii oprogramowania mają na celu wprowadzenie systematyczności w aktywności inżynierii oprogramowania. W tym celu metody narzucają strukturę na czynności inżynierii oprogramowania. Metoda zazwyczaj obejmuje notację i słownictwo, procedury wykonywania określonych zadań, oraz wskazówki oceny produktu i procesu.

10. Software quality (jakość oprogramowania)
Jakość oprogramowani jest definiowana w różny sposób: Zgodność z wymaganiami użytkownika (Phil Crosby) Osiągnięcie doskonałych poziomów przydatności do użycia (fitness for use) (Watts Humhrey) Stopień w jakim zbiór charakterystyk produktu spełnia wymagania (ISO9001-00) Niezależnie od definicji, aktywności zapewnienie jakości oprogramowania jest bardzo ważnym elementem całego cyklu życiowego oprogramowania.