Inżynieria oprogramowania
Forma kursu:Opis kursu:
Celem kursu jest przedstawienie zagadnień związanych z rozwojem dużych systemów informatycznych. Jako pierwszoplanowy stosowany jest punkt widzenia metodologii obiektowej. Kurs zawiera też wprowadzenie do zagadnień związanych z zarządzaniem przedsięwzięciem programistycznym.
Treści programowe:
- Wprowadzenie do inżynierii oprogramowania
- Zadania inżynierii oprogramowania
- Pojęcia podstawowe
- Czynności (fazy) techniczne inżynierii oprogramowania
- Czynności zarządcze inżynierii oprogramowania
- Wprowadzenie do modelowania w języku UML
- Podstawowe pojęcia związane z modelowaniem
- Podstawowe diagramy UML, ich elementy i zastosowanie
- Organizacja projektu i komunikacja
- Podstawy organizacji projektu - rodzaje organizacji, role, zadania i produkty, harmonogram
- Podstawy komunikacji w ramach projektu - komunikacja planowana i nieplanowana, mechanizmy komunikacyjne
- Czynności organizacyjne
- Ujawnienie wymagań
- Wymagania funkcjonalne i niefunkcjonalne
- Walidacja wymagań
- Czynności składowe ujawnienia wymagań
- Zarządzanie fazą ujawnienia wymagań
- Analiza obiektowa
- Pojęcia podstawowe analizy obiektowej - modele obiektowe i dynamiczne, obiekty encyjne, brzegowe i sterujące, uogólnienie/specjalizacja
- Czynności składowe analizy
- Zarządzanie fazą analizy
- Projektowanie systemowe
- Pojęcia podstawowe - podsystemy a klasy, usługi i interfejsy podsystemów, sprzężenie a spójność wewnętrzna, warstwy i partycje
- Podstawowe wzorce architektury systemów
- Czynności składowe projektowania systemowego
- Zarządzanie fazą projektowania systemowego
- Projektowanie obiektowe
- Pojęcia podstawowe - obiekty dziedziny a obiekty rozwiązania, dziedziczenie specyfikacyjne (interfejsowe) a dziedziczenie implementacyjne, zasada zastępowalności B. Liskov, delegacja
- Wykorzystanie wzorców projektowych i gotowych komponentów
- Specyfikacja interfejsów - typy, sygnatury, widzialność, kontrakty
- Zarządzanie fazą projektowania obiektowego
- Implementacja - odwzorowanie modeli na kod
- Inżynieria wprost i wsteczna
- Optymalizacja modeli obiektowych
- Refaktoryzacja
- Odwzorowanie modelu obiektowego na schemat trwałego składu danych
- Zarządzanie fazą implementacji
- Wprowadzenie do testowania
- Podstawowe pojęcia związane z testowaniem - usterki, stany błędne i awarie, przypadki testowe, namiastki i sterowniki testowe, poprawki
- Rodzaje testów
- Wprowadzenie do zarządzania przedsięwzięciem programistycznym
- Wprowadzenie do zarządzania uzasadnieniem
- Zarządzanie konfiguracją
- Wprowadzenie do zarządzania projektem
- Cykle życia oprogramowania
- Przegląd metodologii rozwoju oprogramowania
Literatura:
- B. Bruegge, A. H. Dutoit, Object-Oriented Software Engineering: Using UML, Patterns and Java, Prentice Hall, 2003
- M. Fowler, UML w kropelce wersja 2.0, LTP, 2005
- I. Sommerville, Inżynieria oprogramowania, WNT, 2003