Nazwa przedmiotu:
Wytwarzanie aplikacji internetowych i korporacyjnych
Koordynator przedmiotu:
Jakub Koperwas
Status przedmiotu:
Fakultatywny dowolnego wyboru
Poziom kształcenia:
Studia I stopnia
Program:
Informatyka
Grupa przedmiotów:
Przedmioty techniczne
Kod przedmiotu:
PIK
Semestr nominalny:
7 / rok ak. 2018/2019
Liczba punktów ECTS:
5
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
30 godzin wykładu 20 godziny przygotowania do sprawdzianów 100 godzin pracy nad projektem, w tym ok. 30 godzin na zestawienie narzędzi projektowych, 50 godzina na implementacje i testowanie , 10 na opracowywanie dokumentacji i 10 na przygotowanie artykułu/bloga itp
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
2
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
3
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium0h
  • Projekt30h
  • Lekcje komputerowe0h
Wymagania wstępne:
Wymagane przedmioty poprzedzające: Programowanie Obiektowe, Inżynieria Oprogramowania Zalecane przedmioty poprzedzające: Bazy Danych, Techniki Internetowe, Programowanie Zdarzeniowe
Limit liczby studentów:
36
Cel przedmiotu:
Celem przedmiotu jest praktyczne przygotowanie do pracy w zawodzie projektanta/programisty w zakresie aplikacji internetowych i korporacyjnych. Wykład jest poświęcony praktycznym zagadnieniom architektury, projektowania i implementacji współczesnych aplikacji internetowych oraz aplikacji klasy korporacyjnej. Na wykładzie omówione zostaną różne aspekty projektowania poszczególnych warstw aplikacji rzutujące na dobór technologii. Wyżej wymienione zagadnienia zostaną uzupełnione przeglądem najpopularniejszych i najistotniejszych na rynku technologii skupionych w, oraz wokół platformy Java (w tym Java Enterprise Edition, standardy JCP) ale także innych standardów (OMG, W3C) lub rozwiązań popularnych, ale nie będących standardami (np. rozwiązania firmy Google) . Omówiony zostanie też współczesny warsztat pracy programisty. W ramach projektu studenci zaprojektują i zaimplementują aplikację z użyciem wybranego stosu technologicznego.
Treści kształcenia:
Treść wykładu: • Pojęcia podstawowe(1): aplikacja internetowa, aplikacja korporacyjna, Java Enterprise Edition i jej składowe oraz inne rozwiązania. Warsztat pracy –zintegrowane środowiska programistyczne (Eclipse, NetBeans,itd.), -podstawowe informacje dotyczące narzędzi wspomagających proces wytwarzania aplikacji: automatycznego budowania (m.in. ant, maven), zarządzania kodem źródłowym SCM i DSCM (svn, mercurial, i in.), zarządzania projektem/zadaniami. Rozwiązania komercyjne a rozwiązania otwartego oprogramowania (ang. open source): rodzaje licencji i ich konsekwencje w projekcie IT. Praca programisty w aspekcie społecznościowym. • Architektura aplikacji(1): architektura wielowarstwowa, architektura zorientowana na usługi, szyna korporacyjna, aspekty doboru architektury • Tworzenie warstwy klienckiej aplikacji(1). Różne aspekty związane z GUI: klient gruby i cienki, programowanie deklaratywne a imperatywne interfejsów użytkownika, różne sposoby dystrybucji aplikacji klienckiej. Podstawowe technologie aplikacji WWW: http, html, javascript, json, Ajax. • Szkielety(ang. frameworks) (2): rola szkieletów, typowe problemy tworzenia aplikacji internetowej, Koncepcja IoC/DI, MVC, MVP, EventBus, charakterystyka wybranych szkieletów IoC/DI oraz internetowych m.in.: spring, seam, CDI, spring mvc, struts. • Przegląd popularnych technologii warstwy klienckiej (3): JSF, GWT, Flex, Vaadin, bilbioteki i szkielety javascript (backbone,jquery,node.js) i inne, charakterystyka aplikacji portalowych. • Tworzenie warstwy logiki biznesowej (2): logika osadzona w aplikacji, logika zdalna z użyciem protokołów binarnych i tekstowych: EJB, usługi internetowe (ang. web service) oparte na SOAP (W3C), „lekkie” usługi oparte na paradygmacie REST, inne podejścia: xml-rpc, hessian. • Tworzenie warstwy dostępu do danych (1): model relacyjny a obiektowy, technologie realizujące odwzorowanie relacyjno-obiektowe(ORM): Hibernate, JPA i in. Techniki zwiększania wydajności: cache, sharding. Podejścia typu NoSQL (Cassandra, MongoDB i in.) ,systemy repozytoryjne (JCR). • Architektura zorientowana na usługi/zagadnienia integracji (1) (SOA), szyna korporacyjna (ESB), aranżacja usług internetowych: BPEL, wzorce EAI • Modelowanie i zarządzanie logiką podlegającą częstym zmianom (1): procesy biznesowe i reguły biznesowe: modelowanie (notacja BPMN), uruchamianie i zarządzanie w obliczu zmian. • Zawansowane aspekty (1): bezpieczeństwo aplikacji internetowych, zagadnienia wydajności i skalowalności, testowanie i kontrola jakości projektu, zagadnienia ciągłej integracji Zakres ćwiczeń, laboratorium, projektu: Celem realizowanego zadania semestralnego jest projekt i implementacja przydzielonego tematu (aplikacja internetowa, aplikacja korporacyjna, integracja) z dużym naciskiem położonym na proces wytwórczy, warsztat pracy, projekt systemu. Projekt przeznaczony jest dla zespołów 3-4 osobowych, zawiera jednak również elementy oceniane indywidualnie. Projekt składa się z 4 etapów: Etap 1: Analizy postawionego problemu, dobór architektury i technologii z uzasadnieniem Etap 2: Zapoznania z technologią (oceniane indywidualnie) Etap 3: Stworzenia warsztatu pracy i zrębu projektu Etap 4: Zaprojektowania i implementacji
Metody oceny:
Dwa sprawdziany : 2x20 punktów = 40 punktów Projekt: 60 punktów Etap 1: 10p Etap 2: 10p Etap 3: 10p Etap 4: 30p (z czego 15 punktów - realizacja funkcjonalności; 7 punktów – rozliczenie czasu pracy członków zespołu w oparciu o dostępne narzędzia kontroli projektu i logów SCM; zapewnienie jakości projektu: testy, dokumentacja: 8 punktów)
Egzamin:
nie
Literatura:
specyfikacje techniczne dostępne w Internecie m.in.: http://jcp.org/en/home/index, http://www.w3.org/standards, http://www.omg.org/spec/, zasoby internetowe w postaci projektów i dokumentacji: http://code.google.com/, http://www.apache.org/, http://www.jboss.org/, http://www.springsource.com/, Literatura książkowa: Krzysztof Sacha (2010), Inżynieria Oprogramowania. Wydawnictwo Naukowe PWN ISBN: 978-83-01-16179-8 Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides (1995).Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 0-201-63361-2. Fowler, Martin (2002). Patterns of Enterprise Application Architecture. Addison-Wesley. ISBN 978-0-321-12742-6. Freeman, Eric; Elisabeth Freeman, Kathy Sierra, and Bert Bates (2004). Head First Design Patterns. O'Reilly Media. ISBN 0-596-00712-4. Christian Bauer and Gavin King (2006). Java Persistence with Hibernate, Manning Publications Co ISBN: 1-932394-88-5 Craig Walls (2011). Spring in Action, Third Edition, Manning Publications Co ISBN 9781935182351 Inne książki wydawnictwa Manning dotyczące omawianych technologii. Dan Pilone, Russ Miles (2008) Head First Software Development O'Reilly Media; ISBN 978-0596527358 Inne książki z serii Head First Gregor Hohpe and Bobby Woolf (2003) Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions Addison-Wesley Professional; ISBN 978-0321200686 Thomas Allweyer (2010) BPMN 2.0, BoD ISBN 978-3839149850
Witryna www przedmiotu:
https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INIIT-ISP-PIK
Uwagi:
uwagi

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka PIK_W01
ma uporządkowaną wiedzę na temat: - warsztatu pracy projektanta/programisty - zapewniania jakości w projekcie IT - architektury aplikacji internetowych i korporacyjnych - współczesnych technologii w zakresie implementacji aplikacji internetowych i korporacyjnych oraz zagadnień integracji
Weryfikacja: sprawdziany; projekty
Powiązane charakterystyki kierunkowe: K_W12, K_W13, K_W14, K_W15, K_W18, K_W09
Powiązane charakterystyki obszarowe: I.P6S_WG, III.P6S_WG.o

Profil ogólnoakademicki - umiejętności

Charakterystyka PIK_U01
potrafi: zbudować warsztat pracy do realizacji projektów wieloosobowych, ocenić przydatność i zastosowanie poszczególnych narzędzi, zapewnić jakość w projekcie poprzez testy, dokumentację i narzędzia wspierające
Weryfikacja: projekt zespołowy z użyciem narzędzi do planowania i koordynacji projektu IT
Powiązane charakterystyki kierunkowe: K_U19, K_U21, K_U22, K_U23
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.3.o, III.P6S_UW.4.o, III.P6S_UW.2.o, I.P6S_UO
Charakterystyka PIK_U02
potrafi samodzielnie pozyskiwać szczegółowe informacje techniczne niezbędne do realizacji projektu
Weryfikacja: projekt zespołowy z użyciem rozległego zakresu technologii wymagający samodzielnej nauki prezentacja/artykuł o charakterze edukacyjnym
Powiązane charakterystyki kierunkowe: K_U05, K_U09
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.1.o, I.P6S_UU
Charakterystyka PIK_U03
potrafi: - określić architekturę systemu oraz dokonać doboru technologii odpowiednich do realizacji systemu o postawionych wymaganiach. - zaprojektować i zaimplementować system lub jego komponent w oparciu o technologie omawiane na wykładzie - zwięźle zaprezentować wyniki swojej pracy
Weryfikacja: projekt zespołowy z użyciem rozległego zakresu technologii wymagający samodzielnej nauki i uprzedniego opracowania architektury
Powiązane charakterystyki kierunkowe: K_U13, K_U15, K_U20
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.4.o, III.P6S_UW.3.o
Charakterystyka PIK_U04
- potrafi zaprezentować wyniki swojej pracy oraz dzielić się wiedzą w zespole
Weryfikacja: artykuł o charakterze edukacyjnym opracowanie założeń wstępnych w formie prezentacji i wyników prac w formie raportów w systemie zarządzania projektem
Powiązane charakterystyki kierunkowe: K_U08, K_U06, K_U07
Powiązane charakterystyki obszarowe: I.P6S_UK
Charakterystyka PIK_U05
- potrafi planować działania projektowe wg wymaganego terminu - potrafi realizować złożone wieloosobowe projekty
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: K_UK01, K_UK03, K_UK04
Powiązane charakterystyki obszarowe: I.P6S_UU, I.P6S_UO

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka PIK_K01
- zna współczesne metody podnoszenia kompetencji programistów, w tym związane z działalnością w społecznościach - potrafi dzielić się wiedzą z członkami zespołu
Weryfikacja: projekt zespołowy artykuł/prezentacja/blog o charakterze edukacyjnyn
Powiązane charakterystyki kierunkowe: K_K02, K_K06
Powiązane charakterystyki obszarowe: I.P6S_KK, I.P6S_KR, I.P6S_KO