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.

Jednym z podstawowych zagadnień inżynierii oprogramowania jest projektowanie systemów informatycznych w UML

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:

  1. specyfikacja – określenie i ustalenie wymagań, które musi spełniać oprogramowanie
  2. projektowanie – ustalenie ogólnej architektury systemu, wymagań dla poszczególnych jego składowych
  3. implementacja – realizacja ustalonej architektury poprzez implementację jego składowych (modułów) i połączeń między nimi.
  4. integracja – zintegrowanie poszczególnych składowych w jeden system, testowanie całego systemu
  5. 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ż

Przypisy

  1. The Joint Task Force for ComputingT.J.T.F.C. Curricula The 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] .
  2. 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
Kontrola autorytatywna (nauka techniczna):
  • LCCN: sh87007398
  • GND: 4116521-4
  • NDL: 01014113
  • BnF: 11966616k
  • BNCF: 63744
  • NKC: ph314875, ph125825
  • BNE: XX541523
  • J9U: 987007539284805171
Encyklopedia internetowa: