Specjalność kursu inżynierskiego w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych: Inżynieria Oprogramowania i Baz Danych Prowadzący: dr hab. inż Kazimierz Subieta, profesor PJWSTK Polsko-Japońska Wyższa Szkoła Technik Komputerowych Katedra Systemów Informacyjnych http://www.si.pjwstk.edu.pl Instytut Podstaw Informatyki PAN subieta@ipipan.waw.pl http://www.ipipan.waw.pl/~subieta
Cel specjalności Kształcenie w zakresie inżynierii oprogramowania, baz danych i systemów rozproszonych (w tym technologii Internetowych). Prowadzenie prac inżynierskich w w/w zakresie. Kształcenie jest przede wszystkim nastawione na zdobycie wiedzy i umiejętności inżynierskich bezpośrednio przydatnych praktycznie w późniejszej pracy zawodowej. Kształcenie dotyczy także ważnych aspektów teoretycznych, których praktyczna wartość została zweryfikowana w wiarygodny sposób. Prace inżynierskie są wykonywane w dużych zespołach, przypominających swoją organizacją zespoły projektowe firm programistycznych.
Perspektywy pracy Obecna oferta pracy dla absolwentów tej specjalności jest ogromna. Popyt na specjalistów z tego zakresu znacznie przewyższa podaż. Początkowe uposażenie absolwenta tej specjalności w firmach komercyjnych jest na ogół nie niższe niż 3000 PLN netto (często jest wyższe). Absolwenci są poszukiwani przez przedsiębiorstwa państwowe i prywatne, firmy programistyczne, przedsiębiorstwa telekomunikacyjne, wojsko, instytucje, banki, urzędy, spółki, itd. Absolwenci tej specjalności łatwo znajdą pracę w krajach zachodnich i USA, w tym w przedstawicielstwach firm zachodnich i amerykańskich w Polsce. Charakter pracy: analiza i projektowanie dużych systemów informatycznych, konstrukcja oprogramowania, prace badawcze, kształcenie w zakresie oprogramowania, kierowanie projektami informatycznymi, audyt i zarządzanie jakością oprogramowania, pielęgnacja oprogramowania, projektowanie aplikacji Internetowych, w tym handel elektroniczny oraz portale biznesowe.
Czego uczymy? Analiza i projektowanie systemów informatycznych przy użyciu metodyk obiektowych (UML) i obiektowych narzędzi CASE; Zagadnienia inżynierii oprogramowania, w tym omówienie pełnego cyklu życiowego oprogramowania (faza strategiczna, analiza, projektowanie, konstrukcja, testowanie, wdrożenie, pielęgnacja); Zarządzanie przedsięwzięciem programistycznym, miary złożoności i jakości oprogramowania, zarządzanie konfiguracją oprogramowania, i inne; Wybrane zagadnienia z zakresu baz danych.
Profil absolwenta specjalności inżynierskiej Bazy Danych i Inżynieria Oprogramowania Umiejętność łatwego przystosowania się do pracy w średnich i wielkich zespołach projektowych w charakterze analityka, projektanta, programisty, inżyniera oprogramowania, kontrolera jakości, administratora repozytoriów projektowych, itd.; Umiejętność prowadzenia nadzoru nad działającymi aplikacjami informatycznymi i zarządzania aplikacjami; Umiejętność samodzielnego prowadzenia projektów informatycznych średniej wielkości; Umiejętność samodzielnego rozpoznania i modelowania informatycznych aspektów dowolnych procesów biznesowych; Dobra znajomość metodyk, narzędzi i technologii informatycznych w zakresie projektowania SI, programowania, testowania, budowy aplikacji internetowych, itp. Umiejętność łatwego zapoznania się i przystosowania się do nowości na rynku informatycznym.
Przykładowe tematy prac inżynierskich Zrealizowane: Repozytorium ponownego użycia, gromadzące i udostępniające poprzez WWW dowolne informacje, które mogą być przedmiotem wymiany w ramach firmy. System zarządzania wiedzą dla firmy programistycznej ze wspomaganiem analizy ryzyka. Oprogramowanie wspomagające budowę i działanie sklepu internetowego. System workflow wspomagający zarządzanie dokumentami i jakością oprogramowania W trakcie realizacji: System zarządzanie treścią serwisów internetowych. System wspomagający nauczanie IO (szczególne uwzględnienie zarządzania różnorodnymi zasobami dydaktycznymi)
Przykładowa tematyka prac inżynierskich (1) Analiza i projektowanie SI; metodyki analizy i projektowania; notacje; w tym UML, OPEN, BON, encja -związek, itd.; modelowanie pojęciowe; narzędzia i języki wspomagające modelowanie pojęciowe; Narzędzia CASE; narzędzia wspomagające zarządzanie projektem; Inżynieria oprogramowania w rozbiciu na fazy cyklu życia oprogramowania (analiza, projektowanie, konstrukcja, testowanie, wdrożenie, pielęgnacja, itd.); Zarządzania przedsięwzięciem programistycznym; zarządzanie ryzykiem; audyt i zarządzanie jakością oprogramowania; Miary złożoności i jakości oprogramowania; Zarządzanie konfiguracjami i wersjami; dokumentowanie oprogramowania i procesów wytwarzania oprogramowania;
Przykładowa tematyka prac inżynierskich (2) Ponowne użycie oprogramowania, dokumentacji i procesów wytwarzania oprogramowania; wzorce projektowe, szkielety aplikacji; Graficzne interfejsy użytkownika; Rozproszone i federacyjne bazy danych; replikacje w rozproszonych bazach danych, migracja obiektów; przetwarzanie zapytań w rozproszonych bazach danych; Architektury systemów oprogramowania, w tym architektury klient-serwer, architektury wielowarstwowe, itd.; oprogramowanie middleware’owe i komponentowe; Interoperacyjność (współdziałanie) systemów heterogenicznych i/lub rozproszonych; odwzorowanie heterogenicznych ontologii; mediatory i osłony; Standardy w zakresie rozproszonych obiektów, w tym standardy CORBA/IIOP, JavaBeans, RMI i COM/DCOM/ActiveX; brokery (ORB) zbudowane wg tych standardów, np. Orbix, Visibroker, i inne;
Przykładowa tematyka prac inżynierskich (3) Zarządzanie przepływem prac (workflow); technologie mobilnych agentów; Obiektowe i obiektowo-relacyjne bazy danych: anatomia, projektowanie, pielęgnacja, użycie; Oracle-8, Informix Dynamic Server, DB/2 Universal Server, Sybase, i inne; standard SQL3 i jego następcy; Standardy obiektowych baz danych, w tym standard ODMG; systemy zbudowane wg tych standardów, np. ObjectStore, Versant, Poet, O2; Fizyczna organizacja składów trwałych obiektów, repozytoria multimediów, dane temporalne i przestrzenne (geograficzne), optymalizacja dostępu do danych multimedialnych, temporalnych i przestrzennych; Optymalizacja fizycznej organizacji i dostępu do danych, organizacja indeksów, buforowanie danych, przemiana wskaźników (pointer swizzling); Integracja języków zapytań z językami programowania; Tranzytywne domknięcia, zadania rekurencyjne typu rachunek materiałów (bill-of-material, BOM);
Przykładowa tematyka prac inżynierskich (4) Języki programowania baz danych (z trwałymi zmiennymi lub obiektami), w tym SQL, Java z trwałością; interfejsy ODBC, JDBC i SQLJ; języki czwartej generacji (4GL), narzędzia RAD i RAP; Optymalizacja języków zapytań; Wirtualne i zmaterializowane perspektywy baz danych; hurtownie danych, kostki danych, przetwarzanie analityczne (OLAP); Przetwarzanie transakcji, rozproszone transakcje, monitory transakcji; Aktywne reguły, aktywne bazy danych, programowanie zdarzeniowe; Technologie WWW, w tym WAP i technologie oparte na XML; repozytoria XML, języki zapytań dla XML, perspektywy w XML, odwzorowania na/z XML, w tym XSLT; Bazy danych w Internecie; systemy zarządzania treścią (content management); Repozytoria danych sformatowanych, tekstowych i multimedialnych;
Przykładowa tematyka prac inżynierskich (5) Systemy pracy grupowej (CSCW), w tym wspomaganie grup współpracujących poprzez Internet; Pełno-tekstowe bazy danych; wyszukiwanie w danych pełnotekstowych; Internetowe wyszukiwarki informacji w pełnym tekście; Przetwarzanie danych półstrukturalnych; języki zapytań i repozytoria danych półstrukturalnych; Projektowanie i programowanie generycznych aplikacji; szablony (templates), programowanie poprzez refleksję lingwistyczną; Bezpieczeństwo i ochrona danych i systemów; prywatność i autoryzacja dostępu; ochrona przed wirusami, wandalizmem, sabotażem, odmową płatności; Elektroniczny handel, portale biznesowe; Internetowe systemy wspomagania dziedzin życia i gospodarki: ochrona zdrowia, handel, telekomunikacja, bankowość, giełda, mała i średnia przedsiębiorczość, szkolnictwo, ubezpieczenia, finanse, leasing, usługi, itd.; Biblioteki cyfrowe; systemy wspomagania dużych archiwów dokumentów.