SlideShare a Scribd company logo
1 of 33
Developing for iOS
                               Some of the practices




                                   Oleksandr Lobunets
                           oleksandr.lobunets@fit.fraunhofer.de

Sunday, October 28, 12
Outline


                         Background

                         Recommended resources

                         The Practices

                         Q&A




Sunday, October 28, 12
Background
                           Academical

                           National Technical University of Ukraine
                           “KPI”, Institute of Physics & Technology.
                           (1998 - 2004) B.S. / M.S. in Applied
                           Mathematics

                           National Space Agency of Ukraine, Space
                           Research Institute. (2003 - 2006) Junior
                           Researcher

                           RWTH Aachen, B-IT. (2007 - 2010) M.S. in
                           Media Informatics

                           Fraunhofer FIT, CSCW Group (2010 - now)




Sunday, October 28, 12
Background
                          In the industry




Sunday, October 28, 12
Recommended resources

                         iTunes-U

                         Famous Stanford’s “iPhone Application
                         Development”
                         (2009 is probably too outdated)



                         RWTH Aachen “iPhone Application
                         Development”
                         (Jan Borchers)




Sunday, October 28, 12
Some books...




                         iPhone SDK Development Building iPhone Applications by Bill Dudney Chris Adamson

                         Core Data Apple’s API for Persisting Data under Mac OS X by Marcus S. Zarra

                         Pro iOS Table Views for iPhone, iPad, and iPod Touch by Tim Duckett

                         Pro iOS 5 Augmented Reality by Kyle Roche



                                                                        There’re much, much more!

Sunday, October 28, 12
Blogs, links, etc


                         Apple Documentation

                         http://www.cocoawithlove.com/

                         http://www.beginningiosdev.com/

                         Stackoverflow ;)

                         etc



Sunday, October 28, 12
Dilemma



                         How to share the experience?




Sunday, October 28, 12
A fictional project!




Sunday, October 28, 12
A fictional project

                         Generalizes all non-functional requirements
                         from your assignments
                         (as far as I could guess from your blogs)


                         Complete iOS application lifecycle overview
                         (well, almost complete)


                         Just general overview of the process & some
                         of the practices
                         (too less time for the details)




Sunday, October 28, 12
Recall from SE

                         DIA?

                         Iterative incremental development?

                         Agile development?

                         What else do you remember from classes
                         interactive system design and software
                         engineering?




Sunday, October 28, 12
The flow: Product Steps

                         Idea, developing the vision

                         Market/competitors analysis (sounds very loud)

                         End up with MVP

                         Develop the PRD
                         (well, sounds too enterprise/corporate)


                         But meanwhile you just want to write some
                         code?
                         (Yes, you can. It’s called writing spikes - in other language - minimizing
                         technical risks)



Sunday, October 28, 12
The flow: Prototyping

                         Accompanies the product activities

                         Next - Prototyping (remember DIA?)

                           From Lo-Fi to Hi-Fi

                           Prototyping tools (paper, balsamiq,
                           omnigraffle, graffletopia, keynote, etc)

                           Graphical resources (!)

                           Examples


Sunday, October 28, 12
Example: Balsamiq




Sunday, October 28, 12
Example: OmniGraffle




Sunday, October 28, 12
Example: Keynote




Sunday, October 28, 12
The flow: Engineering
                         Now it comes to programming

                         The key points to focus as an engineer are:
                           Collaborative work on code
                           Some notes on memory management
                           Logging in your code
                           The foundation for your UI
                           Picking the application template/framework
                           Persistence of your data
                           Networking
                           Backend
                           Testing / Debugging / Builds / CI / Distribution


Sunday, October 28, 12
Collaborative work


                         Versioning system: Git
                         (already covered in the lectures)

                         You already use Github




                               What about keeping privacy?


Sunday, October 28, 12
Collaborative work



                                 +




Sunday, October 28, 12
+

                         Create a “bare” repo in the Dropbox folder

                         Checkout to your working folder or

                         ...add remote file://$HOME/Dropbox/your_repo

                         Share the Dropbox folder

                         PROFIT!




                            http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository
Sunday, October 28, 12
Memory management
                         First decide which iOS version you want to
                         support

                         Manual memory management
                         (retain/release manually)

                         Automatic Reference Counting (ARC)

                           Introduced in iOS5

                           Works in iOS4 (limited)




Sunday, October 28, 12
Logging

                         NSLog(...)

                         How to drop it in the release builds? Why? ;)

                         Custom conditional logging classes vs macros

                         Go for macro :) as the almost a drop in
                         replacement




Sunday, October 28, 12
Logging
                         Add to your <AppName>_Prefix.pch file:
                         #ifdef DEBUG
                         #	 define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
                         #else
                         #	 define DLog(...)
                         #endif

                         // ALog always displays output regardless of the DEBUG setting
                         #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);




                         Usage
                         DLog();
                         DLog(@"here");
                         DLog(@"value: %d", x);
                         // Unfortunately this doesn't work DLog(aStringVariable);
                         // you have to do this instead:
                         DLog(@"%@", aStringVariable);



                         Set preprocessor flags (DEBUG/DDEBUG)

                           http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog
Sunday, October 28, 12
UI foundation

                         Decision based on your hi-fi prototypes

                         Standard elements
                         (UIKit, additionally some high level libraries, keep you stick to HUG,
                         still possible to violate)


                         Non-standard
                         (UIKit, custom libraries, program your UIView, relies heavily on
                         graphical resources, custom drawing. Think about UX. Usage of 2D
                         game frameworks)


                         3D
                         (GLView, custom Open GL SE programming, use existing3D engines,
                         license vs efforts costs)


Sunday, October 28, 12
App template/framework

                         Xcode built-in templates

                         Usage of Storyboards

                         3rd party framework
                         PureMVC, Three20, Cocos2D/3D, etc




Sunday, October 28, 12
Data persistence


                         Files

                         UserDefaults (preferences)

                         SQLite

                         CoreData




Sunday, October 28, 12
Networking
                         Reachability Framework
                         (https://github.com/tonymillion/Reachability)

                             Great way to check network connectivity (UX!)

                             Impacts on how you organize your app logic




Sunday, October 28, 12
Networking


                         Dealing with RESTful XML/JSON APIs
                           RestKit (http://restkit.org/)

                           RESTFramework (https://github.com/ivasic/RESTframework)

                           SBJSON (http://stig.github.com/json-framework/)


                         There’s a number of choices

                         The selection depends on the backend



Sunday, October 28, 12
Backend
                         Custom vs SaaS

                         Custom
                           Pick your favorite stack and deploy to PaaS/IaaS)

                           Example: Python/Django/Tastypie on dotCloud/Heroku


                         SaaS
                           http://www.slideshare.net/raminf/iphone-backend-servers

                           All in one DataKit (Node.js/MongoDB)
                           https://github.com/eaigner/DataKit

                           Another example: http://www.apiomat.com/


Sunday, October 28, 12
Test/Debug



                         Testing (unit testing, functional, system/ui)

                         Debugging (1st element - logs, tools,
                         simulator vs device debugging - location
                         debugging)




Sunday, October 28, 12
Build/Distribute

                         Building locally & distributing manually

                           Distribute via Email, Dropbox, etc

                         Continuous Integration (CI)

                           Centralized build with CI server

                           Centralized publishing/distribution

                           Running tests, gathering metrics, etc


Sunday, October 28, 12
Build/Distribute
                         “Jenkins is an open-source continuous
                         integration server with 300+ plugins to
                         support all kinds of software
                         development”

                         Standard de facto

                         Resources on how to configure:
                           http://zanshin.net/2012/02/27/setup-jenkins-for-ios-builds/

                           http://eclipsesource.com/blogs/2012/06/01/ups-and-downs-
                           with-continuous-integration-for-ios-apps-jenkins-xcode-
                           cobertura-and-testflight/




Sunday, October 28, 12
Q&A


                                 Oleksandr Lobunets
                         oleksandr.lobunets@fit.fraunhofer.de

Sunday, October 28, 12

More Related Content

Similar to iOS Development. Some practices.

Scientific Applications with Python
Scientific Applications with PythonScientific Applications with Python
Scientific Applications with PythonEnthought, Inc.
 
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open DataOSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open DataPaco Nathan
 
Using Cascalog to build an app with City of Palo Alto Open Data
Using Cascalog to build an app with City of Palo Alto Open DataUsing Cascalog to build an app with City of Palo Alto Open Data
Using Cascalog to build an app with City of Palo Alto Open DataOSCON Byrum
 
OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012Anil Madhavapeddy
 
Skutil - H2O meets Sklearn - Taylor Smith
Skutil - H2O meets Sklearn - Taylor SmithSkutil - H2O meets Sklearn - Taylor Smith
Skutil - H2O meets Sklearn - Taylor SmithSri Ambati
 
NCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceNCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceDee Sadler
 
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Cloudera, Inc.
 
20150716 introduction to apache spark v3
20150716 introduction to apache spark v3 20150716 introduction to apache spark v3
20150716 introduction to apache spark v3 Andrey Vykhodtsev
 
How to ReadTheDocs
How to ReadTheDocsHow to ReadTheDocs
How to ReadTheDocsJohn Costa
 
Final Year Project Guidance
Final Year Project GuidanceFinal Year Project Guidance
Final Year Project GuidanceVarad Meru
 
Focus Group Open Source 28.4.2010 Paolo Maresca
Focus Group Open Source 28.4.2010 Paolo MarescaFocus Group Open Source 28.4.2010 Paolo Maresca
Focus Group Open Source 28.4.2010 Paolo MarescaRoberto Galoppini
 
System Dynamics and FOSS
System Dynamics and FOSSSystem Dynamics and FOSS
System Dynamics and FOSSMaikel Mardjan
 
building_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-librebuilding_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-libreVijayabalan Open to Explore
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedWojciech Koszek
 
Python for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasPython for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasWes McKinney
 
Slides 111017220255-phpapp01
Slides 111017220255-phpapp01Slides 111017220255-phpapp01
Slides 111017220255-phpapp01Ken Mwai
 
The Rise of the DataOps - Dataiku - J On the Beach 2016
The Rise of the DataOps - Dataiku - J On the Beach 2016 The Rise of the DataOps - Dataiku - J On the Beach 2016
The Rise of the DataOps - Dataiku - J On the Beach 2016 Dataiku
 

Similar to iOS Development. Some practices. (20)

Scientific Applications with Python
Scientific Applications with PythonScientific Applications with Python
Scientific Applications with Python
 
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open DataOSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
OSCON 2013: Using Cascalog to build an app with City of Palo Alto Open Data
 
Using Cascalog to build an app with City of Palo Alto Open Data
Using Cascalog to build an app with City of Palo Alto Open DataUsing Cascalog to build an app with City of Palo Alto Open Data
Using Cascalog to build an app with City of Palo Alto Open Data
 
OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012
 
Skutil - H2O meets Sklearn - Taylor Smith
Skutil - H2O meets Sklearn - Taylor SmithSkutil - H2O meets Sklearn - Taylor Smith
Skutil - H2O meets Sklearn - Taylor Smith
 
NCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceNCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experience
 
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
Apache Hadoop an Introduction - Todd Lipcon - Gluecon 2010
 
20150716 introduction to apache spark v3
20150716 introduction to apache spark v3 20150716 introduction to apache spark v3
20150716 introduction to apache spark v3
 
How to ReadTheDocs
How to ReadTheDocsHow to ReadTheDocs
How to ReadTheDocs
 
Final Year Project Guidance
Final Year Project GuidanceFinal Year Project Guidance
Final Year Project Guidance
 
Focus Group Open Source 28.4.2010 Paolo Maresca
Focus Group Open Source 28.4.2010 Paolo MarescaFocus Group Open Source 28.4.2010 Paolo Maresca
Focus Group Open Source 28.4.2010 Paolo Maresca
 
Squeak
SqueakSqueak
Squeak
 
System Dynamics and FOSS
System Dynamics and FOSSSystem Dynamics and FOSS
System Dynamics and FOSS
 
building_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-librebuilding_private_cloud_with_oss_for_scientific_environments-libre
building_private_cloud_with_oss_for_scientific_environments-libre
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
Tod kurt
Tod kurtTod kurt
Tod kurt
 
Python for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasPython for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandas
 
Slides 111017220255-phpapp01
Slides 111017220255-phpapp01Slides 111017220255-phpapp01
Slides 111017220255-phpapp01
 
On Storing Big Data
On Storing Big DataOn Storing Big Data
On Storing Big Data
 
The Rise of the DataOps - Dataiku - J On the Beach 2016
The Rise of the DataOps - Dataiku - J On the Beach 2016 The Rise of the DataOps - Dataiku - J On the Beach 2016
The Rise of the DataOps - Dataiku - J On the Beach 2016
 

Recently uploaded

Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024Elizabeth Walsh
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxPooja Bhuva
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...Poonam Aher Patil
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxDr. Sarita Anand
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxPooja Bhuva
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17Celine George
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsKarakKing
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxDr. Ravikiran H M Gowda
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxannathomasp01
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfDr Vijay Vishwakarma
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Pooja Bhuva
 

Recently uploaded (20)

Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 

iOS Development. Some practices.

  • 1. Developing for iOS Some of the practices Oleksandr Lobunets oleksandr.lobunets@fit.fraunhofer.de Sunday, October 28, 12
  • 2. Outline Background Recommended resources The Practices Q&A Sunday, October 28, 12
  • 3. Background Academical National Technical University of Ukraine “KPI”, Institute of Physics & Technology. (1998 - 2004) B.S. / M.S. in Applied Mathematics National Space Agency of Ukraine, Space Research Institute. (2003 - 2006) Junior Researcher RWTH Aachen, B-IT. (2007 - 2010) M.S. in Media Informatics Fraunhofer FIT, CSCW Group (2010 - now) Sunday, October 28, 12
  • 4. Background In the industry Sunday, October 28, 12
  • 5. Recommended resources iTunes-U Famous Stanford’s “iPhone Application Development” (2009 is probably too outdated) RWTH Aachen “iPhone Application Development” (Jan Borchers) Sunday, October 28, 12
  • 6. Some books... iPhone SDK Development Building iPhone Applications by Bill Dudney Chris Adamson Core Data Apple’s API for Persisting Data under Mac OS X by Marcus S. Zarra Pro iOS Table Views for iPhone, iPad, and iPod Touch by Tim Duckett Pro iOS 5 Augmented Reality by Kyle Roche There’re much, much more! Sunday, October 28, 12
  • 7. Blogs, links, etc Apple Documentation http://www.cocoawithlove.com/ http://www.beginningiosdev.com/ Stackoverflow ;) etc Sunday, October 28, 12
  • 8. Dilemma How to share the experience? Sunday, October 28, 12
  • 10. A fictional project Generalizes all non-functional requirements from your assignments (as far as I could guess from your blogs) Complete iOS application lifecycle overview (well, almost complete) Just general overview of the process & some of the practices (too less time for the details) Sunday, October 28, 12
  • 11. Recall from SE DIA? Iterative incremental development? Agile development? What else do you remember from classes interactive system design and software engineering? Sunday, October 28, 12
  • 12. The flow: Product Steps Idea, developing the vision Market/competitors analysis (sounds very loud) End up with MVP Develop the PRD (well, sounds too enterprise/corporate) But meanwhile you just want to write some code? (Yes, you can. It’s called writing spikes - in other language - minimizing technical risks) Sunday, October 28, 12
  • 13. The flow: Prototyping Accompanies the product activities Next - Prototyping (remember DIA?) From Lo-Fi to Hi-Fi Prototyping tools (paper, balsamiq, omnigraffle, graffletopia, keynote, etc) Graphical resources (!) Examples Sunday, October 28, 12
  • 17. The flow: Engineering Now it comes to programming The key points to focus as an engineer are: Collaborative work on code Some notes on memory management Logging in your code The foundation for your UI Picking the application template/framework Persistence of your data Networking Backend Testing / Debugging / Builds / CI / Distribution Sunday, October 28, 12
  • 18. Collaborative work Versioning system: Git (already covered in the lectures) You already use Github What about keeping privacy? Sunday, October 28, 12
  • 19. Collaborative work + Sunday, October 28, 12
  • 20. + Create a “bare” repo in the Dropbox folder Checkout to your working folder or ...add remote file://$HOME/Dropbox/your_repo Share the Dropbox folder PROFIT! http://tumblr.intranation.com/post/766290743/using-dropbox-git-repository Sunday, October 28, 12
  • 21. Memory management First decide which iOS version you want to support Manual memory management (retain/release manually) Automatic Reference Counting (ARC) Introduced in iOS5 Works in iOS4 (limited) Sunday, October 28, 12
  • 22. Logging NSLog(...) How to drop it in the release builds? Why? ;) Custom conditional logging classes vs macros Go for macro :) as the almost a drop in replacement Sunday, October 28, 12
  • 23. Logging Add to your <AppName>_Prefix.pch file: #ifdef DEBUG # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define DLog(...) #endif // ALog always displays output regardless of the DEBUG setting #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); Usage DLog(); DLog(@"here"); DLog(@"value: %d", x); // Unfortunately this doesn't work DLog(aStringVariable); // you have to do this instead: DLog(@"%@", aStringVariable); Set preprocessor flags (DEBUG/DDEBUG) http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog Sunday, October 28, 12
  • 24. UI foundation Decision based on your hi-fi prototypes Standard elements (UIKit, additionally some high level libraries, keep you stick to HUG, still possible to violate) Non-standard (UIKit, custom libraries, program your UIView, relies heavily on graphical resources, custom drawing. Think about UX. Usage of 2D game frameworks) 3D (GLView, custom Open GL SE programming, use existing3D engines, license vs efforts costs) Sunday, October 28, 12
  • 25. App template/framework Xcode built-in templates Usage of Storyboards 3rd party framework PureMVC, Three20, Cocos2D/3D, etc Sunday, October 28, 12
  • 26. Data persistence Files UserDefaults (preferences) SQLite CoreData Sunday, October 28, 12
  • 27. Networking Reachability Framework (https://github.com/tonymillion/Reachability) Great way to check network connectivity (UX!) Impacts on how you organize your app logic Sunday, October 28, 12
  • 28. Networking Dealing with RESTful XML/JSON APIs RestKit (http://restkit.org/) RESTFramework (https://github.com/ivasic/RESTframework) SBJSON (http://stig.github.com/json-framework/) There’s a number of choices The selection depends on the backend Sunday, October 28, 12
  • 29. Backend Custom vs SaaS Custom Pick your favorite stack and deploy to PaaS/IaaS) Example: Python/Django/Tastypie on dotCloud/Heroku SaaS http://www.slideshare.net/raminf/iphone-backend-servers All in one DataKit (Node.js/MongoDB) https://github.com/eaigner/DataKit Another example: http://www.apiomat.com/ Sunday, October 28, 12
  • 30. Test/Debug Testing (unit testing, functional, system/ui) Debugging (1st element - logs, tools, simulator vs device debugging - location debugging) Sunday, October 28, 12
  • 31. Build/Distribute Building locally & distributing manually Distribute via Email, Dropbox, etc Continuous Integration (CI) Centralized build with CI server Centralized publishing/distribution Running tests, gathering metrics, etc Sunday, October 28, 12
  • 32. Build/Distribute “Jenkins is an open-source continuous integration server with 300+ plugins to support all kinds of software development” Standard de facto Resources on how to configure: http://zanshin.net/2012/02/27/setup-jenkins-for-ios-builds/ http://eclipsesource.com/blogs/2012/06/01/ups-and-downs- with-continuous-integration-for-ios-apps-jenkins-xcode- cobertura-and-testflight/ Sunday, October 28, 12
  • 33. Q&A Oleksandr Lobunets oleksandr.lobunets@fit.fraunhofer.de Sunday, October 28, 12