Inżynieria oprogramowania
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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]Fazy
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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ż
[edytuj | edytuj kod]- 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
[edytuj | edytuj kod]- ↑ The Joint Task Force for Computing Curricula , 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
[edytuj | edytuj kod]- 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