Programowanie aplikacji dla technologii mobilnych mgr inż. Anton Smoliński
mgr inż. Anton Smoliński E-mail : anton.smolinski@zut.edu.pl Pokój 102WI2 Konsultacje Tydzień Nieparzysty : Wtorek 10-12 Tydzień Parzysty: Czwartek 12-14 Literatura przedmiotu: http://developer.android.com/ http://stackoverflow.com/ 2
Agenda Struktura przedmiotu Wykłady Laboratorium Projekt Sposób zaliczenia Projekt Laboratorium Wykłady Ocena końcowa 3
Struktura przedmiotu 4
Struktura przedmiotu Wymagania dotyczące przedmiotu: Podstawowa wiedza z inżynierii oprogramowania. Znajomość podstaw programowania obiektowego w języku Java. Znajomość podstawowych zagadnień z zakresu infrastruktury Internetu i usług sieciowych. Wiedza z dziedziny architektury systemów komputerowych. Wiedza w zakresie dziedziny komunikacja człowiek-komputer. Podstawowa wiedza z inżynierii oprogramowania. 5
Struktura przedmiotu Cele przedmiotu: Podstawowa wiedza z inżynierii oprogramowania. Poznanie podstawowych zagadnień związanych z tworzeniem aplikacji działających na urządzeniach mobilnych takich jak smartphony i tablety. Zapoznanie studenta z różnorodnością rozwiązań w dziedzinie technologii mobilnych. Ukształtowanie umiejętności praktycznych w dziedzinie tworzenia aplikacji dla technologii mobilnych: projektowanie, implementacja, testowanie. Wykształcenie umiejętności samodzielnego poszukiwania rozwiązań dla tworzenia interfejsów użytkownika w systemach przenośnych. 6
Struktura przedmiotu Wykład: Podstawowa wiedza z inżynierii oprogramowania. Teoretyczne aspekty programowania na urządzenia mobilne Cykl życia aplikacji i jego elementy Narzekanie na Javę i Androida Kolejne elementy składowe aplikacji mobilnych dla Androida Zasoby UI Dostawcy treści Sensory Bazy danych 7
Struktura przedmiotu Laboratoria: Podstawowa wiedza z inżynierii oprogramowania. Tworzenie prostych programów wykorzystujących omawiane komponenty. Konfiguracja środowiska Cykl życia / Korzystanie z zasobów Tworzenie elementów GUI Dostawcy treści Sensory Bazy danych Komunikacja klient-serwer 8
Struktura przedmiotu Projekt: Podstawowa wiedza z inżynierii oprogramowania. Praca zespołowa Przygotowanie projektu aplikacji razem z prototypem UI/UX Ścisłe określenie odpowiedzialności poszczególnych członków zespołu Stosowanie metodyki SCRUM SCRUM Master, Product Owner, User stories, Sprinty Korzystanie z rozproszonego repozytorium kodu GIT Wytworzenie aplikacji zgodnej z założeniami Dokumentacja 9
Sposób zaliczenia 10
Sposób zaliczenia Projekt: Podstawowa wiedza z inżynierii oprogramowania. Ocena będąca wynikową efektu pracy zespołu. Działająca aplikacja na urządzeniu fizycznym = 5 dla grupy W przypadku gdy projekt nie skończy się powodzeniem oceniane są poszczególne elementy zgodnie z podziałem odpowiedzialności wewnątrz zespołu. Osoby destabilizujące pracę grupy będą mieć ocenę obniżoną 11
Sposób zaliczenia Laboratoria: Podstawowa wiedza z inżynierii oprogramowania. Regularna praca na zajęciach. Ocena będąca znormalizowaną sumą wykonania zadań z laboratoriów: σ n i x i ඍ n 5 ቝ, x 1, Zadanie zrobione i ቊ 0, Brak zadania Zwolnienie z laboratoriów z oceną BDB: Członkowie MAD, Osoby pracujące z technologiami mobilnymi, Uczestnicy Intive (BLStream) Patronage z zespołu Android/iOS, Samsung LABO (aplikacja na android) 12
Sposób zaliczenia Wykład: Podstawowa wiedza z inżynierii oprogramowania. Forma zaliczenia do wyboru: Test jednokrotnego wyboru Teoria Praktyka Pytania otwarte* Zaliczenie ustne** Zwolnienie z egzaminów z oceną BDB pod warunkiem prezentacji praktyczne aspekty tworzenia aplikacji mobilnych : Członkowie MAD, Osoby pracujące z technologiami mobilnymi, Uczestnicy Intive (BLStream) Patronage z zespołu Android/iOS, Samsung LABO (aplikacja android) *Studenci układają listę 30 pytań, z których wykładowca losuje 3-4 na egzaminie. **Na podstawie napisanego kodu 13
Sposób zaliczenia Grywalizacja Podstawowa wiedza z inżynierii oprogramowania. Uczestnictwo na wykładach (obecność x7) Aktywność na wykładach (odpowiadanie na pytania/zadania) 6 wykładów x 3,4 pytania ~ 20 pytań 4 odpowiedzi by otrzymać +1 Bonusy do oceny z zaliczenia 5 z laboratoriów => +1 do oceny testu 5 z projektu => +1 do oceny testu Obecność na wszystkich wykładach => +1 do oceny testu Aktywność na wykładach => +1 do oceny testu 14
Sposób zaliczenia Ocena końcowa: Podstawowa wiedza z inżynierii oprogramowania. Zgodnie z Wagą poszczególnych form dydaktycznych z KRK: 0,25 Laboratoria Ocena końcowa ቐ0,33 Projekt 0,42 Wykład Wyliczana automatycznie w systemie e-dziekanat 15
Technologie mobilne 16
Technologie mobilne Czym są technologie mobilne? Urządzenie mobilne (przenośne) urządzenie elektroniczne pozwalające na przetwarzanie, odbieranie oraz wysyłanie danych bez konieczności utrzymywania przewodowego połączenia z siecią. Urządzenie mobilne może być przenoszone przez użytkownika bez konieczności angażowania dodatkowych środków ~M. Macutkiewicz 17
Technologie mobilne 18
Technologie mobilne Cechy urządzeń mobilnych: Ograniczona żywotność baterii Ograniczona moc obliczeniowa i inne zasoby Ograniczone wymiary [Sensory i czujniki] [Możliwość komunikacji z innymi urządzeniami] 19
Technologie mobilne Telefony Tablety SmartWatch SmartBand SmartTV Wearables 20
Technologie mobilne 2015 Telefony (http://www.idc.com/) Telefony + Tablety (https://www.netmarketshare.com/) 21
Technologie mobilne 2016 Telefony (http://www.idc.com/) Telefony + Tablety (2016-2017) (https://www.netmarketshare.com/) 22
Technologie mobilne Windows (Phone) 10 Microsoft Visual Studio C# XAML (Extensible Application Markup Language) Universal Windows Platform (UWP) Wcześniejsze wersje wymagały SDK https://msdn.microsoft.com/ 23
Technologie mobilne ios Mac computer (OS X 10.10 or later) latest version of Xcode (ios SDK, tools, compilers, and frameworks) Swift (Objective C) https://developer.apple.com/ 24
Technologie mobilne Android IDE + kompilator Java (eclipse, netbeans, AndroidStudio) Android SDK Emulator Java VM Java XML http://developer.android.com/ 25
Technologie mobilne Programowanie wieloplatformowe (crossplatform) Unity Qt Adobe Xamarin Appcelerator ifactr PhoneGap Sencha Corona 26
Technologie mobilne - PYTANIE Jakie cechy musi spełniać urządzenie by było mobilne? Przykłady 27
Android 28
Android Android system operacyjny z jądrem Linux dla urządzeń mobilnych takich jak telefony komórkowe, smartfony, tablety (tablety PC) i netbooki. Wspomniane jądro oraz niektóre inne komponenty, które zaadaptowano do Androida opublikowane są na licencji GNU GPL. Android nie zawiera natomiast kodu pochodzącego z projektu GNU. Cecha ta odróżnia Androida od wielu innych istniejących obecnie dystrybucji Linuksa (określanych zbiorczo mianem GNU/Linux). Początkowo był rozwijany przez firmę Android Inc. (kupioną później przez Google), następnie przeszedł pod skrzydła Open Handset Alliance. 29
Android Linux kernel (jądro systemu Linux) powłoka na której bazuje system, zawierająca niskopoziomowe sterowniki urządzeń dla różnych komponentów sprzętowych urządzenia; Libraries (biblioteki) sekcja zawierająca kod dostarczający główne funkcje systemu Android. Np. wsparcie obsługi bazy danych poprzez dostarczenie biblioteki SQLite; Android runtime sekcja na poziomie tej samej powłoki co biblioteki, dostarczająca programistom możliwości tworzenia aplikacji przy wykorzystaniu języka Java. Sekcja ta zwiera również specjalna wersję maszyny wirtualnej Javy o nazwie Dalvik, która umożliwia każdej aplikacji Androida uruchomienie swojego własnego procesu; Application framework (platforma programistyczna dla aplikacji) umożliwia wykorzystanie możliwości (funkcji) systemu Android w aplikacjach tworzonych przez programistów; Applications (aplikacje) najwyższa powłoka, w której znajdują się dostarczone i wytworzone aplikacje Androida, jak również te pobrane bezpośrednio z aplikacji Google Play (dawniej Android Market). 30
Android 31
Android Wirtualna maszyna Dalvik VM jest specjalne przygotowaną pod urządzenia mobilne wirtualną maszyną Javy, uruchamiającą kod bajtowy aplikacji. Dalvik VM jest zoptymalizowana do jednoczesnego i wydajnego uruchamiania wielu swoich instancji. Plik kodu bajtowego aplikacji jest przetwarzany na plik kodu bajtowego w formacie Dalvik Executable (*.dex). Plik DEX ma mniejszy 5 rozmiar w stosunku do pliku JAR, poprzez optymalizację wykorzystanej pamięci (eliminuje się m.in. informacje powtarzające się w plikach klas). W maszynie Dalvik VM generowanie kodu maszynowego oparte jest na rejestrach, co umożliwiło zredukowanie liczby instrukcji (w maszynie wirtualnej Javy przetwarzanie bazuje na mechanizmie stosu). 32
Android 2015 6.0 Marshmallow : 1,3% 5.1 Lollipop : 17,1% 5.0 Lollipop : 17% 5.x Lollipop : 34,1% 4.4 KitKat : 35,5% 4.3 Jelly Bean : 3,4% 4.2 Jelly Bean : 11,7% 4.1 Jelly Bean : 8,8% 4.x Jelly Bean : 23,9% 4.0 Ice Cream Sandwich : 2,5% 2.3 Gingerbread : 2,7% 33
Android 2016 34
Android PYTANIE Dlaczego Android jest jak cebula (albo ogry, tort piętrowy itp.)? Co go wyróżnia od innych systemów? 35
Koniec! mgr inż. Anton Smoliński 36