thumb|upright=1.4|Jednym z podstawowych zagadnień inżynierii oprogramowania jest projektowanie systemów informatycznych w UML Inżynieria oprogramowania (, SE) – dyscyplina informatyczna stosująca podejście inżynierskie do tworzenia oprogramowania: 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 na różnych technologiach (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: model kaskadowy model prototypowy model przyrostowy (iteracyjny) model równoległy programowanie zwinne (ang. agile programming) programowanie ekstremalne (ang. extreme programming) scrum kanban model spiralny Rational Unified Process
Metody opisu 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 metryka oprogramowania wzorzec projektowy inżynieria komputerowa
Przypisy
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