Több app. Egy kódbázis

Hasonló dokumentumok
Szoftverfejlesztés teszteléssel

Az Oracle Fusion szakértői szemmel

Mobil Informatikai Rendszerek

Code review és continous integration toolok BME-MIT

Mobil Informatikai Rendszerek

Android 5.0.

Java Programozó képzés A&K AKADÉMIA 2019.

Összetett szoftverrendszerek fejlesztése Innovatív szoftver prototípusok a Codespring Mentorprogram keretein belül

MVC. Model View Controller

Reaktív programozás szerver oldalon

Melyek az újdonságok a Microsoft Dynamics AX 2012-ben? Sasfi Imre

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Alap számológép alkalmazás

(Teszt)automatizálás. Bevezető

MODELL ALAPÚ MEGKÖZELÍTÉS TESZT ÚJRAFELHASZNÁLÁSHOZ INTELLIGENS OTTHON ESETÉN

Web-fejlesztés NGM_IN002_1

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Eladni könnyedén? Oracle Sales Cloud. Horváth Tünde Principal Sales Consultant március 23.

Android Pie újdonságai

AZ OBJEKTUM-ORIENTÁLT TERVEZÉSI ALAPELVEK KRITIKAI VIZSGÁLATA

discosnp demo - Peterlongo Pierre 1 DISCOSNP++: Live demo

Programozási nyelvek Java

Alkalmazás boltok. Android Market, Apple AppStore, WP7 MarketPlace Cserna Bence, Paksy Patrik

Android Wear programozás. Nyitrai István

Modellalkotás UML-ben

Univerzális munkafolyamat szimulátor

Excel vagy Given-When-Then? Vagy mindkettő?

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Gate Control okostelefon-alkalmazás

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Lexington Public Schools 146 Maple Street Lexington, Massachusetts 02420

Mobil Informatikai Rendszerek

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Újdonságok a Google műhelyéből. Péter Ekler

Eduroam változások - fejlesztések, fejlődések. Mohácsi János NIIF Intézet HBONE Workshop 2015

Oracle E-Business Suite auditok tapasztalatai. Gáspár Gyula Senior Manager Oracle License Management Services, Central Europe április 6.

AZ APACHE MAVEN ÉLETE ÉS HALÁLA.! Cservenák Tamás

NYOMÁSOS ÖNTÉS KÖZBEN ÉBREDŐ NYOMÁSVISZONYOK MÉRÉTECHNOLÓGIAI TERVEZÉSE DEVELOPMENT OF CAVITY PRESSURE MEASUREMENT FOR HIGH PRESURE DIE CASTING

Szakmai továbbképzési nap akadémiai oktatóknak december 14. HISZK, Hódmezővásárhely / Webex

Hálózatbiztonság Androidon. Tamas Balogh Tech AutSoft

ANDROID ALKALMAZÁSFEJLESZTÉS

Fejlesztői szemmel at K

Adatbányászat és Perszonalizáció architektúra

A DevOps-kultúra eszközei


















EN United in diversity EN A8-0206/419. Amendment

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

ios alkalmazásfejlesztés Koltai Róbert

Web Services. (webszolgáltatások): egy osztott alkalmazásfejlesztési plattform

ARM Cortex magú mikrovezérlők. mbed

A katalógusban szereplő adatok változásának jogát fenntartjuk es kiadás

Programozási technológia II 3. előadás. Objektumorientált tervezés Giachetta Roberto

eseményvezérelt megoldások Vizuális programozás 5. előadás

Continuous Delivery: Problémák és megoldások ( Agenda - miről lesz szó. Agenda - miről nem lesz szó. Continuous Delivery

A modern e-learning lehetőségei a tűzoltók oktatásának fejlesztésében. Dicse Jenő üzletfejlesztési igazgató

iphone programozás alapjai IV. Gyakorlat

DOAS változások, összefoglaló

Eseményvezérelt alkalmazások

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

SUSE Success Stories Varga Zsolt

JNDI - alapok. Java Naming and Directory Interface

Könnyen bevezethető ITIL alapú megoldások a Novell ZENworks segítségével. Hargitai Zsolt Sales Support Manager Novell Hungary

ZH mintapélda. Feladat. Felület

Nemzetközi vállalat - a vállalati szoftvermegoldások egyik vezető szállítója

Növekvő befektetés megtérülés és teljesítmény az Emelt Szintű Támogatás (ACS) eredménye

iphone és Android két jó barát...

Using the CW-Net in a user defined IP network

Az Open Data jogi háttere. Dr. Telek Eszter

Robot Operating System

ASP.NET CORE MVC Model réteg bevezetése Model Binding Repository tervezési minta Dependency Injection Transient és Singleton Custom Binding AutoMapper

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Correlation & Linear Regression in SPSS

Verifikáció és validáció Általános bevezető

Adóhatósági ellenőrzési adatszolgáltatás funkció Számla XML. Koltai Szilvia Lokalizációs vezető Termékfejlesztés 2015 október 7

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

IES TM Evaluating Light Source Color Rendition

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Stateless Session Bean

STUDENT LOGBOOK. 1 week general practice course for the 6 th year medical students SEMMELWEIS EGYETEM. Name of the student:

Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet. Correlation & Linear. Petra Petrovics.

Átírás:

Több app Egy kódbázis

Agenda Bevezető Technology stack A kód szervezése Debug és tesztelés CI Supercharge 2

Bevezető Adott egy vezető telekommunikációs vállalat Self-care alkalmazása Ezzel az alkalmazással a felhasználó: Befizetheti a számláit Módosíthatja szerződéseit Megnézheti az adatforgalmát stb. Supercharge 3

Problémák Különböző szerverekkel való kommunikáció Supercharge 7

Problémák Különböző szerverekkel való kommunikáció Feature Ugyanaz, ugyanúgy Supercharge 8

Problémák Különböző szerverekkel való kommunikáció Feature Ugyanaz, ugyanúgy Az egyikbe kell, másikba nem Supercharge 9

Problémák Különböző szerverekkel való kommunikáció Feature Ugyanaz, ugyanúgy Az egyikbe kell, másikba nem Mindegyikbe kell, de eltérően Supercharge 10

Problémák Különböző szerverekkel való kommunikáció Feature Ugyanaz, ugyanúgy Az egyikbe kell, másikba nem Mindegyikbe kell, de eltérően Navigáció Supercharge 11

Problémák Különböző szerverekkel való kommunikáció Feature Ugyanaz, ugyanúgy Az egyikbe kell, másikba nem Mindegyikbe kell, de eltérően Navigáció Lokalizáció Pénznemek Dátumok Fordítások Supercharge 12

Problémák Különböző szerverekkel való kommunikáció Feature Ugyanaz, ugyanúgy Az egyikbe kell, másikba nem Mindegyikbe kell, de eltérően Navigáció Lokalizáció Pénznemek Dátumok Fordítások és nap mint nap más probléma Supercharge 13

Technology Stack Retrolambda RxJava RxAndroid RxLifeCycle RxBinding ActiveAndroid (ORM) Dagger (v1/v2) Retrofit JodaTime Supercharge 14

Modulok Supercharge 15

Modulok Utils, Widgets, Dao - Java és Android megoldások Minden amire egyszer rákerestél a stackoverflow-n és működött! - IConfig - INavigator - ICurrency - IDatePrinter stb. Supercharge 16

Modulok Models 3 fajta model: - API - Domain - View Supercharge 17

Modulok Presenters Felelősek azért hogy előállítsák az adatokat a UI rétegnek. Facade (Homlokzat) design pattern Supercharge 18

Modulok UI Fragmentek Activityk Supercharge 19

Modulok App - Dependecy Graph felépítése - Feature Set összeálítása - Navigáció összeállítása - API kommunikáció (Repository) - Interaktorok - Lokalizáció - App specifikus feature, screen-flow Supercharge 20

Feature Flagging Interfész, minden feature-ről Supercharge 21

Feature Flagging Interfész, minden feature-ről Minden app-ben, ott van az összes feature, összes kód Supercharge 22

Feature Flagging Interfész, minden feature-ről Minden app-ben, ott van az összes feature, összes kód A UI rétegben kezeljük, és főleg komponensek megjelenésének, viselkedésének szabályozására Supercharge 23

Feature Flagging Interfész, minden feature-ről Minden app-ben, ott van az összes feature, összes kód A UI rétegben kezeljük, és főleg komponensek megjelenésének, viselkedésének szabályozására Példa: olyan FeatureFlagger implementáció ami push notification-re bekapcsol egy feature-t a felhasználok X %-nál Supercharge 24

Packages Package by layer - Rétegek szerint vannak csoportosítva az egymástól kvázi független elemek - Fejlesztés közben ugrálni kell a package-k között - Ha egy feature-t ki kell venni, azt kb lehetetlen egyetlen művelettel - Gyenge modularitás Supercharge 25

Packages Package by feature - A feature-k packagek szerint vannak csoportosítva - Minimalizálja a szkópot - Könnyű fejlesztés közben navigálni - Erős modularitás - Feature team-ek Supercharge 26

Packages Package by feature - A feature-k packagek szerint vannak csoportosítva - Minimalizálja a szkópot - Könnyű fejlesztés közben navigálni - Erős modularitás - Feature team-ek Supercharge 27

SOLID Single Responsibility A class should have only one reason to change. Open Close Classes, modules and fuctions should be open for extension, but closed for modifications. Liskov s Substitution We must make sure that new derived classes are extending the base classes without changing their behavior. Interface Segregation Clients should not be forced to depend upon interfaces that they don t use. Dependency Inversion High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. Supercharge 28

Dependency Inversion class Worker {! public void work(){! //dolgozik! class Manager {! Worker worker;! public void setworker(worker w){ worker = w; public void manage(){ worker.work; Supercharge 29

Dependency Inversion class Worker {! public void work(){! //dolgozik! class Manager {! Worker worker;! public void setworker(worker w){ worker = w; public void manage(){ worker.work; class SuperchargeWorker {! public void work(){! //sokat dolgozik! Supercharge 30

Dependency Inversion interface IWorker {! public void work();!! class Worker implements IWorker {! public void work(){! //dolgozik! class Manager {! IWorker worker;! public void setworker(iworker w){ worker = w; public void manage(){ worker.work; class SuperchargeWorker implements IWorker {! public void work(){! //sokat dolgozik! Supercharge 31

Dependency Inversion interface IWorker {! public void work();!! class Worker implements IWorker {! public void work(){! //dolgozik! class Manager {! IWorker worker;! public void setworker(iworker w){ worker = w; public void manage(){ worker.work; class SuperchargeWorker implements IWorker {! public void work(){! //sokat dolgozik! Supercharge 32

Dependency Inversion Expect interface, provide implementation A DI megoldás: Navigációra Lokalizációra (Pénznem, Dátum) Presenterekre stb. DI nélkül ne is kezdj el fejleszteni manapság! Supercharge 33

Tesztelés API: MockWebServer + Robolectric UI: Calabash, Robotium Util: JUnit Dependency Injection a tesztekben is! Újrafelhasználható tesztek. Supercharge 34

Debug Timber https://github.com/jakewharton/timber Logolni, logolni, logolni Stetho https://github.com/facebook/stetho Chrome Developer Tools-ban tudod nézni a működést Hátrány: nagyon fogja az app-et Supercharge 35

Continuous Integration Fejlesztjük a Core modult Merge Request ha kész egy feature Jenkins megnézi az MR-t hogy mergelhető-e Statikus kód elemzés Sonarqube-al és Android Lint-el Jenkins buildel, deployol a Core-ból egy Snapshot-ot a Nexus Maven snapshot reposity-ba Ez triggereli az összes app buildelését, hogy megnézzük az új snapshotban vannak-e breaking change-k Release esetén release repository-ba deploy és Fabric test release deploy Supercharge 36

Összefoglaló SOLID elvek tisztelete Pragmatikusság Cserkész szabály, Clean Code elvek Dependency Injection tool nélkül nem érdemes elkezdeni CI összelövésére időt kell szánni Supercharge 37

Köszönöm a figyelmet! We are hiring! Richard Radics Supercharge Android Developer richard.radics@supercharge.io // www.supercharge.io