![Page 1: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/1.jpg)
Best Software Architecture in App DevelopmentAnistar Sung
![Page 2: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/2.jpg)
Anistar sung 宋志峰 Mobile, client, server developer Instructor, Consulter and Author
Focus on: iOS, Android, HTML5, PHP… etc
Introduction
![Page 3: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/3.jpg)
Work @
Mobile Team
![Page 4: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/4.jpg)
Store marketplace app
Yahoo work
![Page 5: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/5.jpg)
NewYork Times - Best Top 10 photography app
App store Top 2 paid app in US
App store Top 40 in world
Best recommended app in app review sites
Personal works
![Page 6: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/6.jpg)
Personal works
![Page 7: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/7.jpg)
Problems in real world
Smart design + architecture
Version control
Quality improvement
Agenda
![Page 8: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/8.jpg)
Problems in Real WorldWhat developer do?
![Page 9: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/9.jpg)
What I think I do
![Page 10: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/10.jpg)
What I really do
![Page 11: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/11.jpg)
Real development team
![Page 12: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/12.jpg)
Smart Design + ArchitectureWanting everything easier
![Page 13: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/13.jpg)
Easy to present content
Change once apply anywhere
Fast materials replacement
Design + Deploy components
Data presentation
Smart way to create app
![Page 14: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/14.jpg)
Most content can display by list view
UICollectionView is a powerful component
Easy to present content List view for presentation
![Page 15: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/15.jpg)
List view cover 80% views in Yahoo Store Marketplace app
![Page 16: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/16.jpg)
DemoUsing UICollectionView to present content
![Page 17: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/17.jpg)
![Page 18: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/18.jpg)
Flexible layout
Reuse cells
Memory management
Automatic updates
Easy to present content Benefit of UICollectionView
Waterfall or running water in nature
![Page 19: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/19.jpg)
UICollectionView
Easy to present content Custom UICollectionView for production
![Page 20: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/20.jpg)
UICollectionView
UICollectionReusableView
!
Easy to present content Custom UICollectionView for production
![Page 21: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/21.jpg)
UICollectionView
UICollectionReusableView
UICollectionViewCell
!
Easy to present content Custom UICollectionView for production
![Page 22: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/22.jpg)
UICollectionView
UICollectionReusableView
UICollectionViewCell
UICollectionViewLayout
Easy to present content Custom UICollectionView for production
Waterfall or running water in nature
![Page 23: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/23.jpg)
DemoUsing Custom UICollectionView
![Page 24: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/24.jpg)
![Page 25: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/25.jpg)
Hard to sync with designer
Designer or PM always change
After change need to rewrite code
Change once apply anywhere The pain for change
![Page 26: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/26.jpg)
Design: I want red color background.
Developer: Sure! self.backgroundColor = [UIColor redColor];
Challenge on Color Design easy sync tool for designer
![Page 27: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/27.jpg)
Design: I want #7b19a9 background.
Developer: What!?
Challenge on Color Design easy sync tool for designer
!?
![Page 28: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/28.jpg)
Design: I want Yahoo background.
Developer: Mom, I want go home. :(
Challenge on Color Design easy sync tool for designer
#@*$!
![Page 29: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/29.jpg)
Using Category to improve UIColor
+ (UIColor *)colorWithHexString:(NSString *)hexstring;+ (UIColor *)colorWithHexNumber:(NSUInteger)hexNumber;
Challenge on Color Design easy sync tool for designer
![Page 30: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/30.jpg)
Management your theme color
+ (UIColor *)themeBackground; + (UIColor *)themeForeground; + (UIColor *)themeDisabled; + (UIColor *)themeFocus; + (UIColor *)themeHighlight; + (UIColor *)themeTitle; + (UIColor *)themeSubtitle;
Challenge on Color Design easy sync tool for designer
![Page 31: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/31.jpg)
You don’t need write import everywhere
.pch file is your friend
Change once apply anywhere Theme color management
![Page 32: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/32.jpg)
+ (UIColor *)themeBackground{ return [UIColor colorWithHexString:@"1f2f3b"];} !+ (UIColor *)themePanel{ return [UIColor colorWithHexString:@"333e49"];}
Change once apply anywhere Theme color management
![Page 33: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/33.jpg)
+ (UIColor *)themeBackground{ return [UIColor colorWithHexString:@"dedede"];} !+ (UIColor *)themePanel{ return [UIColor colorWithHexString:@"f4f4f4"];}
Change once apply anywhere Theme color management
![Page 34: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/34.jpg)
Change once apply anywhere Theme color management
![Page 35: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/35.jpg)
Interface size and layout
ICON and assets color
Text on the screen
Change once apply anywhere Other pain of change
![Page 36: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/36.jpg)
Change once apply anywhere Interface change
![Page 37: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/37.jpg)
UICollectionView can set up cell size
!- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGsizeMake(320.0.f, 200.0f); }
Change once apply anywhere Interface change
![Page 38: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/38.jpg)
UICollectionView can set up cell size
!- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return [[[[[NSBundle mainBundle] loadNibNamed:@“Cell” owner:self options:nil] lastObject] bounds] size]; }
Change once apply anywhere Interface change
![Page 39: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/39.jpg)
- (CGSize)sizeForNibNamed:(NSString *)nibName { CGSize nibSize = CGSizeZero; if ([self.nibSizeDict objectForKey:nibName]) { NSString *sizeString = [self.nibSizeDict objectForKey:nibName]; nibSize = CGSizeFromString(sizeString); } else { UIView *nibView = [[[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil] lastObject]; if (nibView != nil) { nibSize = CGSizeMake(CGRectGetWidth(nibView.bounds), CGRectGetHeight(nibView.bounds)); [self.nibSizeDict setObject:NSStringFromCGSize(nibSize) forKey:nibName]; } } return nibSize; }
Change once apply anywhere Interface change
![Page 40: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/40.jpg)
UICollectionView can set up cell size SMARTER!
!- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return [[NibSizeCalculator sharedInstance] sizeForNibNamed:@"Cell"]; }
Change once apply anywhere Interface change
![Page 41: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/41.jpg)
Cache everything if you can
![Page 42: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/42.jpg)
ICON should be able to apply theme color
Fast materials replacement ICON and assets color
![Page 43: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/43.jpg)
UIImage+color.h
+ (UIImage *)image:(UIImage *)image tintColor:(UIColor *)color; + (UIImage *)image:(UIImage *)image replaceColor:(UIColor *)color;
+ (UIImage *)imageNamed:(NSString *)name tintColor:(UIColor *)color; + (UIImage *)imageNamed:(NSString *)name replaceColor:(UIColor *)color;
Fast materials replacement Implement category for UIImage
![Page 44: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/44.jpg)
Change ICON’s theme color
@import “UIImage+Color.h” self.presetImageView.image = [UIImage imageNamed:@“icon-folder.png" replaceColor:[UIColor themeLightWhite]]; UIImage *settingButtonImage = [UIImage imageNamed:@"icon-setting.png" replaceColor:[UIColor themeForeground]];[settingButton setImage:settingButtonImage forState:UIControlStateNormal];
Fast materials replacement Implement category for UIImage
![Page 45: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/45.jpg)
Fast materials replacement ICON theme color management
![Page 46: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/46.jpg)
Don’t hard code to set its size
Percent size design
Design componentsDesign flexible components
![Page 47: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/47.jpg)
Set up component !- (void)setupComponent { self.backgroundColor = [UIColor clearColor]; ! CGFloat progressBigTextSize = 60.0f; CGFloat progressSmallTextSize = 20.0f; ! // more initialized code }
Design componentsDesign flexible components
![Page 48: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/48.jpg)
Set up component !- (void)setupComponent { self.backgroundColor = [UIColor clearColor]; ! CGFloat progressBigTextSize = CGRectGetWidth(self.bounds) * 0.35f; CGFloat progressSmallTextSize = CGRectGetWidth(self.bounds) * 0.1f; ! // more initialized code }
Design componentsDesign flexible components
![Page 49: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/49.jpg)
DemoImplement percent size design component
![Page 50: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/50.jpg)
![Page 51: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/51.jpg)
Use hard code
Use too more layers on interface builder
Deploy componentsBad way to deploy components
![Page 52: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/52.jpg)
Deploy componentsDeploy components efficiently
![Page 53: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/53.jpg)
Version ControlSave your time and life
![Page 54: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/54.jpg)
Colleagues often break my code
Have critical bugs but I can’t fix it
Wanting different version (Free / Pro)
Customer told me previous change was better
Why Version Control
![Page 55: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/55.jpg)
Source code management
Git / SVN
3rd open source libraries
CocoaPods / Repo
Solutions for code change Code management
![Page 56: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/56.jpg)
Easy to conflict
Hard to read and fix it
Wait a long time when open huge one
Storyboard may make you CRAZY Multiple developers work together
![Page 57: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/57.jpg)
Split to smaller storyboard
Storyboard may make you Crazy Multiple developers work together
![Page 58: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/58.jpg)
Split to independent xib files
Storyboard may make you Crazy Multiple developers work together
![Page 59: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/59.jpg)
Quality ImprovementDon’t crash on user device
![Page 60: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/60.jpg)
Test can prove your code run well
Save lots of time to verify bugs
Find change problems immediately
Keep boring task away
Test will not waste your time
![Page 61: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/61.jpg)
DemoThe situation of automation test
![Page 62: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/62.jpg)
![Page 63: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/63.jpg)
XCTest Framework
Unit test Implement unit test
![Page 64: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/64.jpg)
Test your tests
Unit test Implement unit test
![Page 65: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/65.jpg)
Automation test Implement automation test
![Page 66: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/66.jpg)
Automation test Implement automation test
![Page 67: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/67.jpg)
UIATarget.onAlert = function onAlert(alert) {
var title = alert.name();
UIALogger.logWarning("Alert with title '" + title + "' encountered!");
UIATarget.localTarget().captureScreenWithName("alert_" + (new Date()).UTC());
return false;
}
for (var i = 0; i < 200; i++) {
// exposureSettingButton
checkInstanceExist(target.frontMostApp().mainWindow().buttons()[“exposure”].tap);
target.frontMostApp().mainWindow().buttons()[“exposure”].tap();
}
Automation test Implement automation test
![Page 68: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/68.jpg)
if (times % 2 == 0) {
target.setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);
} else {
target.setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPERIGHT);
}
if (times % 5 == 0) {
target.lockForDuration(5);
target.delay(2);
}
Automation test Implement monkey test
![Page 69: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/69.jpg)
Location service is hard to test
Some developer will go out for test
Location automated test Implement location test
![Page 70: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/70.jpg)
Location automated test Implement location test
![Page 71: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/71.jpg)
Create routes on your device
Location automated test GPX creator tool
![Page 72: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/72.jpg)
Test on Xcode Build automation test
Location automated test GPX creator tool
![Page 73: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/73.jpg)
Data PresentationContent is soul of app
![Page 74: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/74.jpg)
Use core data to cache data
Lazy loader provides smooth interaction
Use data model process you data
!
Present your content
![Page 75: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/75.jpg)
Easy way to implement data storage
Cache larger data from internet / log
Multiple thread is big challenge
Recommend MagicalRecord library
Core data Benefit of core data
![Page 76: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/76.jpg)
Lazy loader will not block UI thread
Implement heavy process when stop interaction
Using right format in app
Manage memory carefully
Lazy loader Benefit of lazy loader
![Page 77: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/77.jpg)
Part of MVC design pattern
Change data source will easier
Separate logic and data layer
Easy automated test and verify
Data model Benefit of data model
![Page 78: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/78.jpg)
Summary
![Page 79: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/79.jpg)
Our design should be flexible and easy deployment
List view is good architecture for data presentation
Cache everything if you can
Put project in Version Control
Test will improve quality and saving time
Summary We have learned in this session
![Page 80: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/80.jpg)
Other things need to remind
![Page 81: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/81.jpg)
Design Pattern
Shared code base
Handle multiple threads
Data model
Continuous delivery
Performance
Non-functional task
Keep in mind
![Page 82: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/82.jpg)
DemoHigh performance process
![Page 83: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/83.jpg)
![Page 84: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/84.jpg)
![Page 85: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/85.jpg)
MOPCON 2013 tech talk slide http://www.slideshare.net/anistarsung/mopcon-share
Related sharing
![Page 86: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/86.jpg)
Anistar Sung Yahoo Lead Engineer!
http://www.facebook.com/anistarsung http://blog.riaproject.com
[email protected] [email protected]
More information
![Page 87: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/87.jpg)
請到 104 搜尋 “Yahoo奇摩”MOPCON Yahoo 現場攤位 3F
Welcome join us
![Page 88: MOPCON 2014 - Best software architecture in app development](https://reader038.vdocuments.us/reader038/viewer/2022102618/557d607bd8b42abf3d8b5106/html5/thumbnails/88.jpg)
Q + A