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

  • View
    241

  • Download
    3

  • Category

    Mobile

Preview:

Citation preview

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.PercentRelativeLayoutxmlns: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">

<Viewandroid: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

AnalyticDB 2

AnalyticDB 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