SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
A mobilszoftver két értéke az
Android platform szemszögéből
peter.ekler@aut.bme.hu
A szoftver két értéke
• Másodlagos érték: a szoftver viselkedése - a szoftver azt
csinálja hibamentesen, amit a felhasználó elvár
• Elsődleges érték: Tolerálja és egyszerűen alkalmazkodik a
folyamatos változásokhoz, tehát könnyű módosítani (software
is soft)
Android eszközök
Mi a szoftvermérnök feladata?
Kihívások
• Volt már valaha dolgunk rossz kóddal?
• „Olvasni a kódot több idő, mint írni”
• Volt már olyan eset, hogy nem volt idő egy
feladat „szakszerű” megoldására, a kód
tisztítására, a rövid határidő miatt?
„Ahogy nő a kód mennyisége, úgy csökken a
fejlesztők produktivitása.”
Kódolási elvek, megfontolások
Reference: https://cleancoders.com/
• Új szoftver rendszerek fő jellemzői:
> Folyamatosan változó követelmények
• Agilis fejlesztés
• Csapatmunka
• Kódminőség
• Szoftver életciklus
Mi a Clean Code? Miért van rá szükség?
• Mi a szoftver igazi értéke?
> Karbantarthatóság
> Folyamatos továbbfejleszthetőség és szállítás
• Elnevezés
> Small scope: long, descriptive name
> Big scope: short name
• Kis osztályok
• Egy függvény csak egy dologért felelős
• Rövid metódusok
> Maximum ~4 sor!
• Kevés argumentum
> Maximum 3
• Nincs boolean argumentum
• Nincs „kimeneti” argumentum
Alap Clean Code elvek
Android fejlesztés
• Hibamentes, hatékony működés
• Megfelelő library-k és eszközök ismerete, illetve használata
• Fejlesztőkörnyezet kialakítása
> Verziókezelés
> Continous Integration (Jenkins, CircleCI, …)
> Tesztelés
– Unit tesztek
– Integrációs tesztek
– Teszt környezet
• Clean code
> Kódminőség
> Kód újrafelhasználhatóság
> SOLID tervezési elvek
> Refaktor
• Optimalizálás
> Memória, CPU használat és energiafogyasztás
• Test Driven Development
Cserkész szabály
• Nem elég jól megírni a kódot, hanem tisztán is
kell tartani
• „Hagyd a tábort tisztábban, mint ahogy kaptad!”
Android Studió újdonságok
Navigation Editor
Theme Editor
• Több méret egyidejű nyomonkövetése
• Témák áttekintése
• Android verzió alapú renderelés
• Drag&Drop
• Komponens fa
Live layout (preview all screen size)
Lint
• Android
> Spell checking 
> Android XML fájlok vizsgálata
> Régebbi verziókon nem elérhető attribútumok
> Hardcode text
> Lokalizáció használatára figyelmeztet
– pl. SimpleDateFormat
> Layout felfújás parent megadás nélkül
> Padding margin symmetry
> Nem használt erőforrások
> Láthatóságok
– pl. hol lehet szigorúbb
• Cody style
• Control flow
• Data flow
• Declaration redundancy
• Import
• Lehetséges bugok
> itt pár érdekes példa
• XML
• Live template: CTRL + J
> Live template készítés: Tools-> „Save as live template”
• Jobbegér-> „Compare with clipboard”
• Jobbegér-> „Create Gist”
• Osztálynév kijelölés -> Alt+Enter -> „Create Test”
• Jobbegér-> „Search with Google” 
• XML Validator
• Tools -> New scratch file
• …
További érdekességek
• „Import Android Code Sample”
• Gazdag projekt készlet
> Leírás
> Preview !
• API képességek felderítése
• API-k megfelelő használatának megismerése
• Ötletek
Példa projektek – API explorer
Android Support Library-k
Support Library típusok
• Support V4
> Pl. NestedScrollView
• Media Router
> android.support.v7.media
• RecyclerView
> Dinamikus tartalmak, listák
• AppCompat
> Általános widgetek
• Design Support Library
> Material design elemek
• Custom Tabs Support Library
• Leanback
> Android TV design
• Palette
> Színek kiválasztása képekből
• …és…?:
• Percent Support Library
• További util libek, például Maps Util Lib:
> https://developers.google.com/maps/documentation/android-api/utility/
Percent Support Library
• Százalék alapú méret megadás
• Függőség:
> com.android.support:percent:23.0.0
• Példa:
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/top_left"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentTop="true"
android:background="#ff44aacc"
app:layout_heightPercent="20%"
app:layout_widthPercent="70%" />
</android.support.percent.PercentRelativeLayout>
Android külső osztálykönyvtárak és
eszközök
Külső könyvtárak
• Dagger: http://square.github.io/dagger
• ButterKnife: http://jakewharton.github.io/butterknife
• Retrofit: http://square.github.io/retrofit
• OkHttp: http://square.github.io/okhttp
• Glide? https://github.com/bumptech/glide
• LeakCanary: http://github.com/square/leakcanary
• RetroLambda:
https://github.com/orfjackal/retrolambda
• RxJava: https://github.com/ReactiveX/RxJava
• RxAndroid: https://github.com/ReactiveX/RxAndroid
Clean Architektúra
• Viper (View, Interactor, Presenter, Entity, Routing):
> http://mutualmobile.github.io/blog/2013/12/04/viper-
introduction/
• Clean Architecture:
> https://github.com/android10/Android-
CleanArchitecture
> http://fernandocejas.com/2014/09/03/architecting-
android-the-clean-way/
> http://fernandocejas.com/2015/07/18/architecting-
android-the-evolution/
• Facebook flux architecture:
> https://facebook.github.io/flux/docs/overview.html#cont
ent
Stetho
• Fő funkciók:
> Adatbázisok vizsgálata
> Hálózati kommunikáció
> View hierarchy
• Használat:
> Saját Application osztály
–Stetho.initializeWithDefaults(this);
> chrome://inspect/#devices
További eszközök
• Genymobile:
> Custom firmware készítés
> Teszt környezet
> http://www.genymobile.com/
• Samsung Remote Test lab:
> http://developer.samsung.com/remotetestlab/rtlDev
iceList.action
• Material icon pack-ok:
> Hivatalos: https://www.google.com/design/icons/
> 3rd party, bővített: https://materialdesignicons.com/
Esettanulmány: SocialDriving
VehicleICT architektúra - SensorHUB
Monitoring
Interface
Business
Intelligence and
Reporting
Automated Data
Analysis
Push
Notification
Service
Vehicle Data Query Interface
RAW
Data
Hadoop
Analytic.
DB 1
Analytic
DB 2
Analytic
DB n
OBD2
CAN Bus
Adat gyűjtés, helyi
szolgáltatások,
megjelenítés
BI Reports and
Dashboards
Monitoring Data
Alkalmazások és
szolgáltatások
Személyre szabott
visszajelzés,
közösségi integráció,
PUSH értesítések
SocialDriving koncepció
• Közösségi vezetés, „gamification” elemek
• Háttérben futó vezetési stílus felügyelet
• Fogyasztás és káros anyag kibocsátás
összehasonlítás
> Hasonló autók és motortípusok
> Hasonló időben utazók
> Hasonló vezetési stílusú sofőrök
• OBD eszköz nélkül is kipróbálható
• Hely alapú értesítések, flotta és szerviz
szolgáltatások
Fogyasztás, káros anyag kibocsátás
Élő térkép, hely függő értesítések
Együttműködés meglévő navigációs
szoftverekkel (lebegő ablak)
Android Wear – jövő a jelenben
SocialDriving – okosóra megoldás
Köszönöm a figyelmet!
http://blog.autsoft.hu
http://www.autsoft.hu/ peter.ekler@aut.bme.hu

Contenu connexe

En vedette

PMI 3D Laser Scanning (As Built) Services
PMI 3D Laser Scanning (As Built) ServicesPMI 3D Laser Scanning (As Built) Services
PMI 3D Laser Scanning (As Built) Servicesssoni747
 
Jornada y estabilidda laboral_IAFJSR
Jornada y estabilidda laboral_IAFJSRJornada y estabilidda laboral_IAFJSR
Jornada y estabilidda laboral_IAFJSRMauri Rojas
 
Comite de seguridad y salud laboral_IAFJSR
Comite de seguridad y salud laboral_IAFJSRComite de seguridad y salud laboral_IAFJSR
Comite de seguridad y salud laboral_IAFJSRMauri Rojas
 
Landscape Design for Homeowners 2015 Update
Landscape Design for Homeowners  2015 UpdateLandscape Design for Homeowners  2015 Update
Landscape Design for Homeowners 2015 UpdateConservation Garden Park
 

En vedette (9)

E waste
E wasteE waste
E waste
 
PMI 3D Laser Scanning (As Built) Services
PMI 3D Laser Scanning (As Built) ServicesPMI 3D Laser Scanning (As Built) Services
PMI 3D Laser Scanning (As Built) Services
 
Dual Australia, Contract Review Service
Dual Australia, Contract Review ServiceDual Australia, Contract Review Service
Dual Australia, Contract Review Service
 
Century tuna
Century tunaCentury tuna
Century tuna
 
Jornada y estabilidda laboral_IAFJSR
Jornada y estabilidda laboral_IAFJSRJornada y estabilidda laboral_IAFJSR
Jornada y estabilidda laboral_IAFJSR
 
TypeScript Today
TypeScript TodayTypeScript Today
TypeScript Today
 
Comite de seguridad y salud laboral_IAFJSR
Comite de seguridad y salud laboral_IAFJSRComite de seguridad y salud laboral_IAFJSR
Comite de seguridad y salud laboral_IAFJSR
 
Landscape Design for Homeowners 2015 Update
Landscape Design for Homeowners  2015 UpdateLandscape Design for Homeowners  2015 Update
Landscape Design for Homeowners 2015 Update
 
Esame delle urine
Esame delle urineEsame delle urine
Esame delle urine
 

Similaire à Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonságok az Android platform tükrében

Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztésOpen Academy
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanPal Vojacsek
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokoneRise
 
Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Hajas Tamás
 
Univerzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - LaravelUniverzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - LaravelPeter Perger
 
BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)Csaba Szabó
 
Az online hirdetéskiszolgálás technológiai kihívásai
Az online hirdetéskiszolgálás technológiai kihívásaiAz online hirdetéskiszolgálás technológiai kihívásai
Az online hirdetéskiszolgálás technológiai kihívásaiAdverticum
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztésPlixApp
 
Bodócz Tamás - Website Perfomance & Load Test - Warm-up
Bodócz Tamás - Website Perfomance & Load Test - Warm-upBodócz Tamás - Website Perfomance & Load Test - Warm-up
Bodócz Tamás - Website Perfomance & Load Test - Warm-upveszpremimeetup
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenKrisztián Gyula Tóth
 
Cloud szolgáltatások
Cloud szolgáltatásokCloud szolgáltatások
Cloud szolgáltatásokMárton Szabó
 
Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?Dániel Góré
 
XXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztésXXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztésGyörgy Balássy
 
Webes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaWebes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaAntal Bodnar
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekOpen Academy
 

Similaire à Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonságok az Android platform tükrében (20)

Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorban
 
Firefox OS presentation
Firefox OS presentationFirefox OS presentation
Firefox OS presentation
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
 
Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal
 
Windows 8
Windows 8Windows 8
Windows 8
 
Ci
CiCi
Ci
 
Univerzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - LaravelUniverzalis Entitas Kezeles - Laravel
Univerzalis Entitas Kezeles - Laravel
 
BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)BME - Szakdolgozat (2014)
BME - Szakdolgozat (2014)
 
Az online hirdetéskiszolgálás technológiai kihívásai
Az online hirdetéskiszolgálás technológiai kihívásaiAz online hirdetéskiszolgálás technológiai kihívásai
Az online hirdetéskiszolgálás technológiai kihívásai
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Bodócz Tamás - Website Perfomance & Load Test - Warm-up
Bodócz Tamás - Website Perfomance & Load Test - Warm-upBodócz Tamás - Website Perfomance & Load Test - Warm-up
Bodócz Tamás - Website Perfomance & Load Test - Warm-up
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 
Cloud szolgáltatások
Cloud szolgáltatásokCloud szolgáltatások
Cloud szolgáltatások
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?Mobile First | Hogyan tervezzünk mobilra?
Mobile First | Hogyan tervezzünk mobilra?
 
XXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztésXXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztés
 
Webes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaWebes alkalmazások optimalizálása
Webes alkalmazások optimalizálása
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztések
 

Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonságok az Android platform tükrében

  • 1. A mobilszoftver két értéke az Android platform szemszögéből peter.ekler@aut.bme.hu
  • 2. A szoftver két értéke • Másodlagos érték: a szoftver viselkedése - a szoftver azt csinálja hibamentesen, amit a felhasználó elvár • Elsődleges érték: Tolerálja és egyszerűen alkalmazkodik a folyamatos változásokhoz, tehát könnyű módosítani (software is soft)
  • 5. Kihívások • Volt már valaha dolgunk rossz kóddal? • „Olvasni a kódot több idő, mint írni” • Volt már olyan eset, hogy nem volt idő egy feladat „szakszerű” megoldására, a kód tisztítására, a rövid határidő miatt? „Ahogy nő a kód mennyisége, úgy csökken a fejlesztők produktivitása.”
  • 7. • Új szoftver rendszerek fő jellemzői: > Folyamatosan változó követelmények • Agilis fejlesztés • Csapatmunka • Kódminőség • Szoftver életciklus Mi a Clean Code? Miért van rá szükség? • Mi a szoftver igazi értéke? > Karbantarthatóság > Folyamatos továbbfejleszthetőség és szállítás
  • 8. • Elnevezés > Small scope: long, descriptive name > Big scope: short name • Kis osztályok • Egy függvény csak egy dologért felelős • Rövid metódusok > Maximum ~4 sor! • Kevés argumentum > Maximum 3 • Nincs boolean argumentum • Nincs „kimeneti” argumentum Alap Clean Code elvek
  • 9. Android fejlesztés • Hibamentes, hatékony működés • Megfelelő library-k és eszközök ismerete, illetve használata • Fejlesztőkörnyezet kialakítása > Verziókezelés > Continous Integration (Jenkins, CircleCI, …) > Tesztelés – Unit tesztek – Integrációs tesztek – Teszt környezet • Clean code > Kódminőség > Kód újrafelhasználhatóság > SOLID tervezési elvek > Refaktor • Optimalizálás > Memória, CPU használat és energiafogyasztás • Test Driven Development
  • 10. Cserkész szabály • Nem elég jól megírni a kódot, hanem tisztán is kell tartani • „Hagyd a tábort tisztábban, mint ahogy kaptad!”
  • 14. • Több méret egyidejű nyomonkövetése • Témák áttekintése • Android verzió alapú renderelés • Drag&Drop • Komponens fa Live layout (preview all screen size)
  • 15. Lint • Android > Spell checking  > Android XML fájlok vizsgálata > Régebbi verziókon nem elérhető attribútumok > Hardcode text > Lokalizáció használatára figyelmeztet – pl. SimpleDateFormat > Layout felfújás parent megadás nélkül > Padding margin symmetry > Nem használt erőforrások > Láthatóságok – pl. hol lehet szigorúbb • Cody style • Control flow • Data flow • Declaration redundancy • Import • Lehetséges bugok > itt pár érdekes példa • XML
  • 16. • Live template: CTRL + J > Live template készítés: Tools-> „Save as live template” • Jobbegér-> „Compare with clipboard” • Jobbegér-> „Create Gist” • Osztálynév kijelölés -> Alt+Enter -> „Create Test” • Jobbegér-> „Search with Google”  • XML Validator • Tools -> New scratch file • … További érdekességek
  • 17. • „Import Android Code Sample” • Gazdag projekt készlet > Leírás > Preview ! • API képességek felderítése • API-k megfelelő használatának megismerése • Ötletek Példa projektek – API explorer
  • 19. Support Library típusok • Support V4 > Pl. NestedScrollView • Media Router > android.support.v7.media • RecyclerView > Dinamikus tartalmak, listák • AppCompat > Általános widgetek • Design Support Library > Material design elemek • Custom Tabs Support Library • Leanback > Android TV design • Palette > Színek kiválasztása képekből • …és…?: • Percent Support Library • További util libek, például Maps Util Lib: > https://developers.google.com/maps/documentation/android-api/utility/
  • 20. Percent Support Library • Százalék alapú méret megadás • Függőség: > com.android.support:percent:23.0.0 • Példa: <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <View android:id="@+id/top_left" android:layout_width="0dp" android:layout_height="0dp" android:layout_alignParentTop="true" android:background="#ff44aacc" app:layout_heightPercent="20%" app:layout_widthPercent="70%" /> </android.support.percent.PercentRelativeLayout>
  • 22. Külső könyvtárak • Dagger: http://square.github.io/dagger • ButterKnife: http://jakewharton.github.io/butterknife • Retrofit: http://square.github.io/retrofit • OkHttp: http://square.github.io/okhttp • Glide? https://github.com/bumptech/glide • LeakCanary: http://github.com/square/leakcanary • RetroLambda: https://github.com/orfjackal/retrolambda • RxJava: https://github.com/ReactiveX/RxJava • RxAndroid: https://github.com/ReactiveX/RxAndroid
  • 23. Clean Architektúra • Viper (View, Interactor, Presenter, Entity, Routing): > http://mutualmobile.github.io/blog/2013/12/04/viper- introduction/ • Clean Architecture: > https://github.com/android10/Android- CleanArchitecture > http://fernandocejas.com/2014/09/03/architecting- android-the-clean-way/ > http://fernandocejas.com/2015/07/18/architecting- android-the-evolution/ • Facebook flux architecture: > https://facebook.github.io/flux/docs/overview.html#cont ent
  • 24. Stetho • Fő funkciók: > Adatbázisok vizsgálata > Hálózati kommunikáció > View hierarchy • Használat: > Saját Application osztály –Stetho.initializeWithDefaults(this); > chrome://inspect/#devices
  • 25. További eszközök • Genymobile: > Custom firmware készítés > Teszt környezet > http://www.genymobile.com/ • Samsung Remote Test lab: > http://developer.samsung.com/remotetestlab/rtlDev iceList.action • Material icon pack-ok: > Hivatalos: https://www.google.com/design/icons/ > 3rd party, bővített: https://materialdesignicons.com/
  • 27. VehicleICT architektúra - SensorHUB Monitoring Interface Business Intelligence and Reporting Automated Data Analysis Push Notification Service Vehicle Data Query Interface RAW Data Hadoop Analytic. DB 1 Analytic DB 2 Analytic DB n OBD2 CAN Bus Adat gyűjtés, helyi szolgáltatások, megjelenítés BI Reports and Dashboards Monitoring Data Alkalmazások és szolgáltatások Személyre szabott visszajelzés, közösségi integráció, PUSH értesítések
  • 28. SocialDriving koncepció • Közösségi vezetés, „gamification” elemek • Háttérben futó vezetési stílus felügyelet • Fogyasztás és káros anyag kibocsátás összehasonlítás > Hasonló autók és motortípusok > Hasonló időben utazók > Hasonló vezetési stílusú sofőrök • OBD eszköz nélkül is kipróbálható • Hely alapú értesítések, flotta és szerviz szolgáltatások
  • 30. Élő térkép, hely függő értesítések
  • 32. Android Wear – jövő a jelenben