Studia Podyplomowe Informatyka − Metody i narzędzia inżynierii oprogramowania

Ramowy program i treści przedmiotów

1. Administracja i zarządzanie systemami komputerowymi – Andrzej Toboła (PW) – 16 godzin

Systemy operacyjne MS-Window/Unix/Linux instalacja i konfiguracja, planowanie. Sieciowe systemy bezdyskowe, PXE, DHCP, TFTP. System plików atrybuty, systemy sieciowe plików (NFS, SMB). Drzewa procesów, zarządzanie procesami. Modele bezpieczeństwa w systemach MS-Windows i Unix, uwierzytelnienie, autoryzacja, obligatoryjna kontrola dostępu. Instalacja i konfiguracja oprogramowania aplikacyjnego – pakiety źródłowe i binarne, konfiguracja usług sieciowych: DNS, DHCP, NIS, poczta elektroniczna, FTP, WWW, konfiguracja środowiska graficznego (Xwindow, RDP, KDE, GNOME), usługi katalogowe: LDAP, DS, NDS, bezpieczeństwo i ochrona danych – szyfrowanie symetryczne i niesymetryczne, podpis elektroniczny, ochrona danych osobowych, transakcje internetowe, zapory internetowe, filtracja spamu.

2. Analiza danych biznesowych – Tomasz Leś (PW) – 16 godzin

Na specjalistycznym kursie analizy danych biznesowych zostaną przedstawione praktyczne sposoby rozwiązywania problemów dotyczących metod eksploracji danych. Uczestnicy zapoznają się ze sposobami i technikami zbierania danych z sieci Internet oraz tworzenia własnych narzędzia do przeszukiwania danych (roboty indeksujące). Kursanci poznają także sposoby redukcji, transformacji i selekcji danych w celu wydobycia ich najistotniejszych składników. Ostatnim etapem szkolenia będzie nauka sposobów wizualizacji danych w celu lepszego ich zrozumienia i wyciągnięcia nowych wniosków. Powyższe metody analizy danych mają zastosowanie w instytucjach zajmujących się bankowością, handlem, przemysłem i nauką. Szczegółowy program obejmuje miedzy innymi:

W trakcie kursu uczestnicy zdobędą wiedzę o analizie danych biznesowych oraz stworzą w pełni działający program do zbierania, przechowywania i analizy danych, z wykorzystaniem narzędzi: Visual Studio (C#) i Microsoft SQL Server.

3. Bazy danych – Maciej Stodolski (PW) – 16 godzin

Matematyczne podstawy relacyjnych baz danych: tabela, relacja, baza danych, rachunek relacyjny na tabelach, postacie normalne; projektowanie relacyjnych baz danych: projektowanie wstępujące i zstępujące, słownikowanie danych, rozbijanie tabel na relacje, schematy blokowe opisu relacyjnej bazy danych; języki zapytań; język SQL: zasada działania, zapytania wydobywające informacje i polecenia modyfikujące dane, podstawy architektury klient – serwer: opis architektury, opis sposobu i narządzi do tworzenia aplikacji klient – serwer, krótkie omówienie wybranych serwerów baz danych (MS SQL7.0, Oracle 8.0, Sybase); biurowe bazy danych (Visual FoxPro, Access).

4. Bezpieczeństwo systemów informatycznych – Bartosz Sawicki (PW) – 16 godzin

Zarządzanie ryzykiem informatycznym. Analiza zagrożeń. Dokument polityki bezpieczeństwa. Audyt bezpieczeństwa. Testy penetracyjne. Wprowadzenie do kryptologii. Współczesne algorytmy szyfrujące symetryczne, asymetryczne, blokowe, strumieniowe. Kryptograficzne jednokierunkowe funkcje skrótu. Generatory liczb losowych i pseudolosowych. Protokoły uzgadniania kluczy sesji. Protokoły dzielenia tajemnic. Systemy dystrybucji kluczy publicznych. Bezpieczeństwo sieci komputerowej. Zapory sieciowe. Strefy zdemilitaryzowane (DMZ). Automatyczne systemy wykrywania intruzów (IDS, IPS). Monitorowanie ruchu sieciowego, pracy systemu i dostępności usług. Kopie bezpieczeństwa. Bezpieczna konfiguracja oprogramowania na przykładzie protokołów http i https. Tworzenie bezpiecznego oprogramowania. Metodyka projektowania aplikacji narażonej na ataki. Zasady walidacji danych wejściowych. Specyfika języków programowania. Błąd przepełnienia bufora. Ataki na aplikacje internetowe.

5. Hurtownie danych – Mariusz Rafało (CTPartners S.A.) – 16 godzin

Wprowadzenie do tematyki Business Intelligence: Przedstawienie rozwiązań Business Intelligence. Kontekst biznesowy. Podstawowe definicje, koncepcje i technologie związane z tematyką hurtowni danych.

Architektura BI w organizacji: Identyfikacja i omówienie poszczególnych elementów infrastruktury BI. Podstawowe elementy architektury hurtowni danych: gromadzenie danych, zasilanie oraz warstwa eksploatacyjna. Różne typy architektury hurtowni danych. Znaczenie i istota metadanych. Różne podejścia do architektury hurtowni danych (Kimball, Inmon, itp.).

Integracja danych i procesy ETL: Omówienie zagadnień związanych z zasilaniem, integracją i jakością danych. Projektowanie procesu zasilania. Zasilanie w czasie rzeczywistym. Dedykowane platformy ETL.

Warstwa wizualizacji: Przegląd dostępnych na rynku platform raportowo-analitycznych oraz systemów Data Mining. Utrzymanie i eksploatacja systemów BI.

6. Metodyka programowania obiektowego – Jacek Starzyński (PW) – 16 godzin

Podstawy projektowania obiektowego: koncepcja obiektu i klasy, relacje obiektów, hierarchia, dziedziczenie, klasy abstrakcyjne i interfejsy, abstrakcyjne typy danych, wzorce klas. Kodowanie klas w językach obiektowych. Relacja dziedziczenia: statyczne i dynamiczne wiązanie. Projektowanie hierarchii klas. Zarządzanie obiektami (pamięcią). Java Foundation Classes (JFC): podstawowe koncepcje i przegląd możliwości. Standard Template Library: podstawowe koncepcje i przegląd możliwości. Narzędzia wspomagające na przykładzie Netbeans. Rozproszone Technologie Obiektowe (Distributed Object Oriented Technologies) na przykładzie J2EE.

7. Zwinne metody wytwarzania oprogramowania – Wiktor Nowakowski  (PW) – 20 godzin (4x5godzin)

Celem przedmiotu jest przedstawienie notacji, technik i narzędzi wykorzystywanych podczas analizy biznesowej i systemowej - etapach poprzedzających implementację systemów informatycznych. Przedmiot obejmuje następujące zagadnienia:

Omówione będzie zwinne podejście do wytwarzania oprogramowania na przykładzie SCRUM, między innymi

8. Programowanie internetowe – Bartosz Chaber (PW) – 16 godzin

Podstawy protokołu HTTP i komunikacji z serwerem WWW. Zasady tworzenia poprawnych dokumentów HTML/XHTML. Podstawy korzystania z kaskadowych arkuszy stylów CSS (Twitter Bootstrap, responsywność interfejsu użytkownika). Obsługa DOM z poziomu języka JavaScript. Korzystanie z komponentów opisywanych przez standard HTML 5. Synchroniczne i asynchroniczne zapytania HTTP (Ajax). Serializacja i deserializacja formatu JSON. Utrzymywanie sesji w bezstanowym protokole. Programowanie aplikacji internetowych w języku Python (Flask). Standard WSGI. Budowanie usług sieciowych zgodnych z REST.

9. Projektowanie aplikacji w ASP.NET  – Jarosław Kurek i Michał Kruk (PW) – 16 godzin

Przedmiot składa się z dwóch części:

1. Programowanie w Web forms: a. Kontrolki Web forms, b. Sesje i zmienne aplikacyjne, c. Przekierowania, d. Strona wzorcowa, nawigacja, menu, e. Bezpieczeństwo apliacji ASP.NET, f. Dostęp do danych w ADO.NET, g. Oprogreamowanie kontrolk Gridview, h. XML’owego usługi inernetowe, i. Serialziacja i deserializacja obiektów w XML, j. Przykład transformacji XSL, k. Jquery, AJAX i JSON w ASP.NET, l. Boostrap, m. Prosty Crawler.

2. Programowanie w MVC: a. Wzorzec MVC, b. Narzędzia wspierające MVC, c. Kontrolery, d. Widoki, e. Modele, f. Routing, g. Walidacja, h. Identyfikacja, uwierzytelnianie i autoryzacja w MVC, i. Buforowanie, j. Bezpieczeństwo, k. Web API /REST, l. Wdrażanie aplikacji.

10. Projektowanie graficznych interfejsów użytkownika – Robert Szmurło (PW) – 16 godzin

Przedmiot przedstawia różne kategorie interfejsów użytkownika: interfejsy stacjonarne, aplikacje internetowe, aplikacje biznesowe oraz specjalistyczne. Omawiane są podstawowe zagadnienia UX, w przystępny sposób przedstawiając przykłady typowych błędów popełnianych podczas projektowania z wyjaśnieniem oraz informacją o właściwym rozwiązaniu. W ramach przedmiotu omawiane są (również na przykładach) ogólne zalecenia projektowe użytecznego interfejsu użytkownika (Bruce'a Tognazziniego oraz Jacoba Nielsena). Omawiane są wybrane zalecenia projektowe współczesnych środowisk graficznych dotyczące projektu wizualnego (Microsoft, Android). W kolejnym bloku przedmiotu omawiane są specyficzne zagadnienia związane ze zbieraniem wymagań projektowych dotyczących UI. Przedstawione jest wykorzystanie metamodelu UML do dokumentacji elementów składowych statycznych i dynamicznych interfejsu (digramy przypadków użycia, klas, aktywności, sekwencji). Następnie omawiane są zagadnienia prototypowania interfejsu użytkownika z wykorzystaniem procesu z porzuceniem na przykładzie dwóch specjalistycznych narzędzi: Balsamiq oraz Axure RP. W ostatnim bloku przedmiotu na przykładzie rzeczywistej, prostej aplikacji, która jest rozwijana przez słuchaczy razem z prowadzącym w formie ćwiczeniowej prezentowane są implementacyjne wzorce projektowe interfejsu użytkownika w kontekście aplikacji internetowych (MVC, MVP, SPA). Słuchacze zostają zapoznani z zintegrowanym środowiskiem programistycznym Intellij IDEA w połączeniu z biblioteką Apache Wicket (Java EE) oraz szkieletem Bootstrap..

11. Zarządzanie projektami – Tomasz Kraiński (CTPartners S.A.) – 16 godzin

Definicje projektu, programu, portfela projektów: Specyfika projektów informatycznych. Cele strategiczne i operacyjne projektów. Efekty błędów w definicji celów projektowych. Wizja projektu, podejście produktowe. Typy projektów w przedsiębiorstwie.

Organizacja projektu: Cykl życia projektu, kluczowe role (udziałowcy) projektu. Cechy, umiejętności i zakres odpowiedzialności udziałowców projektu. Struktura organizacyjna. Zarządzanie komunikacją. Wpływ komunikacji na przebieg projektu.

Plan projektu: Integralność projektu. Budowa i realizacja planu projektu. Zarządzanie zakresem i zmianą. Plan kontroli projektu. Struktura produktów / (Working Breakdown Structure).

Harmonogram projektu: Techniki budowy harmonogramów i szacowania. Diagram Gantta. Różne typy prac. Zależności zadań. Zarządzanie czasem i kosztami. Budżet projektu. Narzędzia i techniki.

Zarządzanie jakoścą, ryzykiem, zakresem i zmianą: Definicje, rola w projekcie. Korzyści ze stosowanie. Zagrożenia. Praktyki projektowe.

Realizacja projektu: Rozpoczęcie projektu. Zadania uczestników projektu. Techniki zarządzania. Realizacja planu projektu. Zarządzanie zmianą. śledzenie postępów i aktualizacja planu projektu.

Kontrola projektu: Monitorowanie prac, zakresu, budżetu. Zarządzanie jakością. Sytuacje awaryjne. Narzędzia wspierające. Zakończenie projektu.

Zakończenie projektu: plan ukończenia. Ocena projektu. Projekty nieukończone.

Metodyki projektowe: Metodyki Prince 2, PMBook. Metodyki autorskie ASAP. Zarządzanie funkcjonalnością Agile.

Uwaga: programy poszczególnych zajęć mogą ulec zmianom w zależności od potrzeb uczestników