Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

17
Analiza możliwości programowania frameworków opartych o model MVC Daniel Cisek dr inż. Dariusz Gutek Politechnika Lubelska Dyplomant : Promotor : Wydział Elektrotechniki i Informatyki

Transcript of Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Page 1: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Analiza możliwości programowania frameworków

opartych o model MVC

Daniel Cisek dr inż. Dariusz Gutek

Politechnika Lubelska

Dyplomant : Promotor :

Wydział Elektrotechniki i Informatyki

Page 2: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Zakres pracy:

Programowanie urządzeń firmy Apple

Mac OS X

iOS

TabletySmartfony Komputery (macintosh)

Przenośne ( mobilne ) Stacjonarne ( desktop )

Syst

emy

op

erac

yjne

iPhone (premiera 2007 r) iPad (premiera 2010 r)

Laptop - MacBook Air Mac mini Mac Pro

Page 3: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Cel pracy

+ Przeprowadzenie dokładnej i krytycznej analizy urządzeń Apple w kontekście możliwości programowania systemowego frameworków, które korzystają ze wzorca projektowego MVC

+ Analiza frameworków - mechanizmów ich działania, komponentów i bibliotek wykorzystywanych przez programistów w trakcie kodowania struktur swoich aplikacji. Przyjrzenie się użytym do tego celu językom programowania.

+ Wyodrębnianie i zestawienie charakterystycznych cech możliwości zaprogramowania frameworków użytych do systemu iOS i Mac OS X. Oraz mówienie ich szczegółowej struktury budowy i architektury.

+ Opis sposobów dostosowania, rozbudowy używanych frameworków do własnych potrzeb i wymagań realizowanego projektu aplikacji.

+ Wyjaśnienie reguł i metod realizacji programowania interfejsu aplikacji API (ang. Application Programing Interface) dla urzadzeń Apple.

+ Pokazanie wynikających zalet i korzyści ze stosowania modelu MVC do organizowania struktury aplikacji.

+ Wspomnienie o wykorzystywanych narzędziach do tworzenia oprogramowania dla platform iOS oraz Mac OS X.

Page 4: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Wybór tematyki pracy dyplomowej

Cel osobistego rozwoju zawodowego i naukowego

+ Zdobycie potrzebnej, fundamentalnej wiedzy oraz następnie kształtowanie umiejętności na temat technologi procesu tworzenia oprogramowania dla urządzeń Apple.

+ Samokształcenie mające na celu dalszy rozwój naukowy oraz doskonalenie swoich umiejętności programistycznych podczas wykonywania projektów.

+ Wybór podyktowany m.in. stycznością z rozwiązaniami zastosowanymi w urządzeniach Apple’a, ich „ciekawą filozofią” i przyjemnego dla użytkownika interfejsu, sposóbu integracji usług między urządzeniami (w ramach tego samego - jednego producenta).

Page 5: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Framework - czym jest i jego cechy

Framework - jest szkieletem do budowy aplikacji. Definiuje on strukturę aplikacji oraz ogólny mechanizm jej działania, a także dostarcza zestaw komponentów i bibliotek ogólnego przeznaczenia do wykonywania określonych zadań. Programista tworzy aplikację, rozbudowując i dostosowując poszczególne komponenty do wymagań realizowanego projektu, tworząc w ten sposób gotową aplikację.

Architektura

Według Wolfgang Pree [„Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design”] framework składa się z zamrożonych i gorących punktów.

Zimne punkty definiują ogólną architekturę konkretnego typu oprogramowania, tj. zestaw podstawowych komponentów oraz zależności między nimi. Pozostają one niezmienne (zamrożone) we wszystkich aplikacjach zbudowanych w oparciu o konkretny framework.

Gorące punkty reprezentują te części, które programista rozszerza, dodając własną funkcjonalność specyficzną dla konkretnego projektu.

Zgodnie z zasadą odwrócenia sterowania, to gorące punkty osadzone są we frameworku, a nie na odwrót. Wykorzystywana jest tutaj tzw. „reguła Hollywood”: nie dzwoń do nas, my zadzwonimy do Ciebie. Klasy i komponenty użytkownika otrzymują sygnały od frameworka, który zarządza wykonywaniem aplikacji.

Page 6: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Frameworki bywają niekiedy błędnie zaliczane do bibliotek programistycznych.

Typowe cechy frameworków, które każą wyróżniać je jako samodzielną kategorię oprogramowania, to:

Odwrócenie sterowania — w odróżnieniu od aplikacji oraz bibliotek, przepływ sterowania jest narzucany przez framework, a nie przez użytkownika.

Domyślne zachowanie — framework posiada domyślną konfigurację, która musi być użyteczna i dawać sensowny wynik, zamiast być zbiorem pustych operacji do nadpisania przez programistę.

Rozszerzalność — poszczególne komponenty frameworka powinny być rozszerzalne przez programistę, jeśli ten chce rozbudować je o niezbędną mu dodatkową funkcjonalność.

Zamknięta struktura wewnętrzna — programista może rozbudowywać framework, ale nie poprzez modyfikację domyślnego kodu.

Page 7: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Zalety:

+ Efektywność — tworzenie aplikacji z wykorzystaniem frameworków wymaga od programisty mniejszej ilości kodu do napisania,

+ Poprawa jakości kodu — ponieważ frameworki są projektowane z myślą o elastyczności, posiadają one dobrą wewnętrzną organizację i logikę, którą narzucają aplikacji,

+ Niezawodność — frameworki jako szkielety aplikacji są dobrze zaprojektowane i przetestowane.

Wady:

- Złożoność — ze względu na swoją elastyczność oraz wykorzystywanie zaawansowanych koncepcji, opanowanie frameworków nie jest łatwe,

- Wydajność — często ceną za elastyczną budowę jest niższa wydajność tworzonego oprogramowania.

Zalety i wady frameworków

Page 9: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Frameworki / architektura urządzeń Apple

Page 10: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Wzorzec projektowy

Model -- View -- Controller zakłada podział aplikacji na trzy główne części:

+ Model - jest pewną reprezentacją problemu bądź logiki aplikacji.

+ Widok - opisuje, jak wyświetlić pewną część modelu w ramach interfejsu użytkownika. Może składać się z podwidoków odpowiedzialnych za mniejsze części interfejsu.

+ Kontroler - przyjmuje dane wejściowe od użytkownika i reaguje na jego poczynania, zarządzając aktualizacje modelu oraz odświeżenie widoków.

Wzorce projektowe to uniwersalne rozwiązania mające zastosowania do powtarzalnych problemów.

Page 11: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Zalety:

+ Brak zależności modelu od widoków - model jest niezależny od widoków, dlatego w aplikacji może współistnieć wiele widoków prezentujących te same dane na różne sposoby.

+ Przejrzystość aplikacji - oddzielenie logiki biznesowej od warstwy prezentacji.

+ Łatwiejsza rozbudowa, utrzymanie aplikacji - interfejs użytkownika oraz warstwa prezentacji zmieniają się o wiele częściej niż logika biznesowa aplikacji. Ponieważ obie te części są oddzielone, można łatwo dodawać oraz modyfikować istniejące widoki bez wpływu na kluczową część systemu.

+ Duża konfigurowalność + MVC narzuca określony styl kodowaniaWady:

+ Złożoność — implementacje MVC wprowadzają dodatkową warstwę abstrakcji oraz dodatkowe sposoby interakcji, czyniąc w ten sposób aplikację potencjalnie trudniejszą do debugowania.

+ Kosztowne zmiany modelu — ponieważ model nie jest zależny od widoku, programiści rozwijający tę część nie muszą przejmować się zależnościami w przeciwnym kierunku. Jeżeli interfejs modelu ulega częstym zmianom, oznacza to konieczność poprawiania wszystkich korzystających z niego widoków.

+ Trudne testowanie widoków — widoki są zależne od modeli, a ponadto zawierają własną, dodatkową logikę. Testowanie złożonych interfejsów użytkownika uważane jest za zadanie trudne.

Konsekwencje użycia wzorca MVC i czemu może służyć taki podział ?

Page 12: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Objective-C

Jest językiem programowania używanym głównie w frameworku Cocoa w systemie Mac OS X oraz w iOS.

Pojawienie się języka w 1983r, dalszy jego rozwój, obecnie ostatnią jego wersją jest 2.1.

Rozszerza język C o możliwości obiektowe, wzorowane na Smalltalku (do którego ma wiele podobieństw). Objective-C przyjął drogę całkowicie odmienną od C++ , model obiektowości polega na wysyłaniu wiadomości obiektom.  Charakteryzuje się podejściem  wieloparadygmatowym:  obiektowym i refleksyjnym ze typowaniem statycznym oraz dynamicznym (słabym).

ARC (ang. Automatic Reference Counting) - mechanizm automatycznego zliczania referencji przez kompilator pozwalący programiście w łatwiejszy sposób zarządzać pamięcią.

Nie istnieje standard języka Objective-C. Rozwijane są niezależnie dwie nieformalne „koncepcje”:

+ przez Apple - aktualnie bardzo rozwijana i dostępna jako Apple Objective-C oraz GNU Objective-C (wraz z kompilatorem GCC)

+ firmę Stepstone - (przestażała), kompilator tej implementacji jest znany jako POC.

Page 13: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Język Objective-C ostatnio zdobywa popularność w związku z sukcesem urządzeń mobilnych iPhone’a (premiera 2007 r.), iPad’a (2010 r.) i iPod’a Touch. Inne bardziej znane projekty wykonane w tym języku to Cocoa, będący głównym API wysokopoziomowym w Mac OS X dla komputerów Macintosh (które również są chętnie używane).

Jeśli ktoś ma jeszcze wątpliwości co do tego, że technologie wywierają przemożny wpływ na popularność języków programowania to może przestać głowić się nad tym problemem.

Jak pokazują wyniki rankingu popularności języków programowania TIOBE, ewidentnym zwycięzcą w kategorii języka który odnotował największy wzrost zainteresowania wśród programistów w roku 2011 jest Objective-C. Nietrudno się domyśleć, iż wzrost ten jest bezpośrednio powiązany z falą sukcesów, które święcą ostatnio platformy iOS oraz OS X.

Podsumowanie i wnioskiDynamiczny trend popularności i rozwoju Objective-C

Page 15: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Perspektywa przyszłości tworzenia aplikacji (głównie przenośnych - mobilnych) dla urządzeń ... Apple

Od połowy 2008 roku, w którym premierę miał AppStore (sklep z aplikacjami dla systemu iOS - iPhone / potem również iPad) język Obj-C niesamowicie z roku na rok rósł w popularność – jak żaden inny język. Ale nikt nie spodziewał się początkowo większej popularności, wtedy Apple i jego iOS był nadal kojarzony z niszowym systemem. Nic bardziej mylnego już w 2010r. premiera bezkonkurencyjnego tabletu iPad (urządzenie przenośne „umieszczone” między smartfonem, a komputerem laptop). Już obecnie na pażdziernik 2012 r w App Store jest ponad 700 milonów aplikacji i 35 miliardów dokonanych ich pobrań. Dalej 2011 roku Apple zaprezentował kolejny sklep – Mac App Store, tym razem dystrybucja z aplikacjami dla komputerów Macintosh z systemem Mac OS X. Sklepy z aplikacjami Apple mają niesamowity potencjał dla młodych developerów. Z dnia na dzień o każdym może usłyszeć cały świat i jeszcze jest miejsce dla wielu aplikacji.

Rysuje się przyszłość rozwiązań urządzeń mobilnych (tabletów, smartfonów ...) i tworzenia na nie oprogramowania.

Chmura obliczeniowa – model przetwarzania oparty na użytkowaniu usług dostarczonych przez zewnętrzne organizacje. Funkcjonalność jest tu rozumiana jako usługa (dająca wartość dodaną u ż y t kow n i kow i ) o f e row a n a p r z e z d a n e oprogramowanie (oraz konieczną infrastrukturę). Oznacza to eliminację konieczności zakupu llicencji czy konieczności instalowania i administracji oprogramowaniem. Konsument płaci za użytkowanie określonej usługi, np. za możliwość korzystania z arkusza kalkulacyjnego. Nie musi dokonywać zakupu sprzętu ani oprogramowania.

Przetwarzanie w chmurze ( ang. cloud computing )

iCloud wg Apple

Page 16: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Cykl życia aplikacji

Programista (twórca)

Apple

Użytkownik

- sprzęt : kodowanie aplikacji tylko na komputerach Macintosh (w Mac OS X)

( alternatywne użycie „Hackintosh’a” = czyli instalacja (lub wirtualizacja) systemu OS X na PC )

+ oprogramowanie : od Apple bezpłatne środowisko IDE - XCode oraz SDK (Software Development Kit) ( wykorzystanie dodatkowych narzędzi osób trzecich wspomagających proces tworzenia )

+ stworzenie aplikacji dla Mac OSX / iOS : natywnej lub typu sieciowego dostępnej z poziomu przeglądarki www

+ App Store - „sklep” z aplikacjami, oficialny system ich dystrybucji

- wydawanie aplikacji w App Store wymaga rejestracja w iOS / Mac Developer Program (99$/roczne) - selekcja aplikacji: zatwierdzenie bądź ich odrzucenie przez Apple

- podział zysków sprzedaży : 1/3 dla Apple pozostałe 2/3 dla twórcy

- zakup urządzeń Apple

( minus = szacunkowy wyższy koszt zakupu niż konkurencyjnych produktów)

+ App Store : wygodny dostęp do ogromnej bazy programów (bezpłatnych i płatnych)

- minus: brak dostępu do programów spoza App Store - rozwiązanie:

dodatkowy opcjonalny „jailbrake” urządzeń ; dostęp do repozytorium Cydii (+ inne dodatkowe plusy)

+ alternatywny dostęp z poziomu przeglądarki www do aplikacji sieciowej

Page 17: Prezentacja mgr - Analiza możliwości programowania frameworków opartych o model MVC

Język publikacji

+ angielski (podstawowy język informacji, wymagana jego znajomość)

+ w języku polskim wydanych jest bardzo niewiele materiałów (ale zaczyna być coraz więcej)

Internet

+ podstawowym oraz aktualnym źródłem informacji jest portal dla programistów Apple Developer Center

http://developer.apple.com z kompletnem zbiórem dokumentacji i materiałów (w różnej formie) dostarczanej przez producenta Apple

+ Zbiór video wykładów na Uniwersytecie Stanforda (dostępne przez iTunes U)

+ bardzo dużo informacji można znaleźć na róznego typu : portalach programistycznych, forach internetowwych, blogach, tutoriale, poradniki, video, itp.

np. http://cocoadevcentral.com

Książki

+ ogromny, bardzo szeroki wybór książek na każdy temat (w języku angielskim) np. w księgarni Amazon.com

np. Pilone D. & T. : „Head First iPhone and iPad Development: A Learner's Guide to Creating Objective-C Applications for the iPhone and iPad”. O’Reilly, 2011

+ w języku polskim - kilkanaście pozycji np. w wydawnictwie Helion.pl

np. Stephen G. Kochan : „Objective-C - Vademecum orofesjonalisty”. Helion, 2012

Różne

+ Apple Developer Program - możliwość dołączenia do programu dla deweloperów dla iOS / Mac OS (darmowy ograniczony lub płatny 99$ na rok), dostęp do bardzo wielu materiałów

+ Worldwide Developers Conference - co roczny zbiór konferencji dla programistów organizowana przez Apple podczas których firma prezentuje nowe technologie oraz produkty dla deweloperów. Po ich zakończeniu zapis video i różne materiały są dostępne publicznie w internecie

Źródła informacji na temat programowania urządzeń Apple