Inżynieria oprogramowania (ang.software engineering, SE) – dyscyplina informatyczna stosująca podejście inżynierskie do tworzenia oprogramowania[1][2]: od analizy i określenia wymagań, przez projektowanie i wdrożenie, aż do ewolucji gotowego oprogramowania.
Termin inżynieria oprogramowania po raz pierwszy został użyty w przełomie lat 1950/60, ale oficjalnie za narodziny tej dyscypliny podaje się lata 1968 i 1969, w których miały miejsce dwie konferencje sponsorowane przez NATO, odpowiednio w Garmisch i Rzymie.
Wyzwania
Do największych wyzwań w dziedzinie inżynierii oprogramowania należą:
zapewnienie, zarówno wstecznej, jak i przyszłej; kompatybilności między-systemowej i ciągłości działania (systemy spadkowe)
integralność i kooperacja systemów opartych o różne technologie (systemy heterogeniczne)
minimalizacja czasu produkcji oprogramowania przy jednoczesnej maksymalizacji jego jakości (metodyki produkcji systemów)
Proces produkcji oprogramowania
Fazy
W inżynierii oprogramowania wyróżnia się od kilku do nawet kilkunastu etapów w procesie jego produkcji, w zależności od potrzeb. Typowym podstawowo istniejącym podziałem jest:
specyfikacja – określenie i ustalenie wymagań, które musi spełniać oprogramowanie
projektowanie – ustalenie ogólnej architektury systemu, wymagań dla poszczególnych jego składowych
implementacja – realizacja ustalonej architektury poprzez implementację jego składowych (modułów) i połączeń między nimi.
integracja – zintegrowanie poszczególnych składowych w jeden system, testowanie całego systemu
ewolucja – uruchomienie systemu, usuwanie wykrytych podczas jego używania błędów, rozszerzanie systemu
Metodyki
Można wyróżnić szereg metodyk dotyczących procesu produkcji oprogramowania (zarządzania przedsięwzięciem programistycznym), w tym:
Inżynieria oprogramowania rozwinęła szereg języków wspomagających proces tworzenia oprogramowania. Obecnie popularność zyskały języki wspierające programowanie obiektowe – najważniejszym z nich jest UML. Inżynieria oprogramowania wypracowała jednak już wcześniej inne metodyki, takie jak metoda strukturalna Yourdona.
Zobacz też
Rational Unified Process, proces wytwarzania oprogramowania opracowany przez firmę Rational Software (która stworzyła również język UML). Jest to metodyka, która wywarła silny wpływ na współczesną inżynierię oprogramowania
↑The Joint Task Force for ComputingT.J.T.F.C.CurriculaThe Joint Task Force for ComputingT.J.T.F.C., A volume of the Computing Curricula Series [online], web.archive.org, 2015 [dostęp 2020-04-17] [zarchiwizowane z adresu 2014-10-21].
↑GND, Katalog der Deutschen Nationalbibliothek [online], portal.dnb.de [dostęp 2020-04-17].
Linki zewnętrzne
Inżynieria oprogramowania (materiały dydaktyczne MIMUW na studia informatyczne I stopnia)
Zaawansowana inżynieria oprogramowania (materiały dydaktyczne MIMUW na studia informatyczne II stopnia)
SOFTWARE ENGINEERING – raport z konferencji w Garmisch 7–11 października 1968 r.
Strona projektu Guide to the Software Engineering Body of Knowledge