Wstęp
We wstępie omówimy czym zajmuje się przedmiot Inżynierii Oprogramowania oraz pojęcia wstępne:
Przedmiot inżynierii oprogramowania
Oprogramowanie (software)
Pojęcie podstawowe (do oprogramowania włącza się niekiedy, oprócz np. plików binarnych i z kodem źródłowym, także dokumentację, pliki konfiguracyjne, przykładowe dane itp.)
Inżynieria oprogramowania (IO, software engineering)
Dziedzina inżynierii związana z wytwarzaniem oprogramowania we wszystkich fazach jego cyklu życia. Jako dziedzina inżynierii IO rozważa w kontekście praktycznym rozmaite aspekty wytwarzania oprogramowania (techniczny, organizacyjny, finansowy itp.)
Cel inżynierii oprogramowania
- Dostarczenie zasad organizacji procesu wytwarzania oprogramowania (software development) w oparciu o istniejące teorie, modele, metody i narzędzia (podejście może być tutaj mniej lub bardziej formalne)
- W końcowym efekcie proces wytwarzania oprogramowania ma w sposób efektywny doprowadzić do powstania produktu wysokiej jakości
- Inżynieria oprogramowania jest częścią szerszej dyscypliny – inżynierii systemów (system engineering), w jej aspekcie dotyczącym oprogramowania
Cechy dobrego oprogramowania (Sommerville):
- poprawność, zgodność z wymaganiami użytkowników
- łatwość pielęgnacji (konserwacji), dokonywania zmian
- niezawodność (availability, reliability), bezpieczeństwo (w obu znaczeniach – safety, security)
- wydajność, efektywne wykorzystanie zasobów
- łatwość stosowania, ergonomiczność
Problemy inżynierii oprogramowania:
- złożoność programów
- złożoność systemów, w ramach których funkcjonują programy (ludzie, sprzęt, instytucje, procesy produkcyjne, itp.)
- zmienność systemów
- złożoność procesów składających się na wytwarzanie oprogramowania (w przeciwieństwie do prostoty samego pisania kodu)
- łatwość i praktyczna nieuniknioność popełniania błędów przy wytwarzaniu oprogramowania
Specyfika oprogramowania jako produktu (w odróżnieniu od produktów w innych gałęziach inżynierii):
- systemy w ramach których stosuje się oprogramowanie są często nowatorskie lub jednorazowe, co utrudnia identyfikację wymagań (często oprogramowanie istotnie zmienia system, w którym znajduje zastosowanie)
- przy tworzeniu oprogramowania łatwo popełnia się błędy
- oprogramowanie jako produkt nie daje się jednorazowo oglądnąć, przez co trudno śledzi się tok jego rozwoju i wykrywa pojawiające się błędy
- brak jest sprawdzonych standardów wytwarzania oprogramowania (inżynieria oprogramowania jest wciąż młoda...)
Odpowiedzialność zawodowa inżynierów oprogramowania:
- odpowiedzialność prawna
- aspekty ekonomiczne
- prawa autorskie
- kanony postępowania (“codes of ethics”)