CS569 Selected Topics in Software Engineering Spring 2012 Mobile and Cloud Software Development It’s raining out there... It’s raining jobs • “Hiring for cloud computing expertise growing 61 percent year over year” [2011->2012] • Starting salaries – Android, iPhone and iPad developers: $98,000 – Front-end using HTML5: $89,000 - $127,000 – Security analysts: $94,000 - $125,000 http://www.crn.com/news/cloud/232600120/bluewolf-study-cloud-mobile-salaries-risingtalent-gap-widening.htm;jsessionid=ShLHAIo3XctFXE+f+EXOLQ**.ecappj01 It’s raining projects http://venturebeat.com/2012/01/11/what-developers-will-be-doing-learning-listening-to-in-2012-survey-results/ It’s raining market opportunities • Cisco and Sun elbow into mobile world with cloud initiatives http://www.rethink-wireless.com/article.asp?article_id=1167 • ShoreTel to Buy M5 Networks, Grow Cloud UC Capabilities http://www.eweek.com/c/a/Enterprise-Networking/ShoreTel-to-Buy-M5-Networks-Grow-Cloud-UC-Capabilities-300727/ • Salesforce Launches Cloud-Based Desk.com http://www.eweek.com/c/a/Enterprise-Applications/Salesforce-Launches-CloudBased-Deskcom-252111/ • Facebook Phone could break through site’s social mobile limbo http://www.slashgear.com/facebook-phone-could-break-through-sites-social-mobile-limbo-02211773/ • SAP's Bold Bet: Rule Cloud, Mobile, Big Data http://www.informationweek.com/news/software/enterprise_apps/232600164 • Amazon S3 Says it Tripled in Objects Stored Last Year https://www.linux.com/news/enterprise/cloud-computing/540996-amazon-s3-says-it-tripled-in-objects-storedlast-year • Customer centric BSS/OSS meets Cloud Innovations in Comarch’s booth at Mobile World Congress http://www.openpr.com/news/209265/Customer-centric-BSS-OSS-meets-Cloud-Innovations-in-Comarch-s-boothat-Mobile-World-Congress.html • IPsmarx Announces Launch of RAPID Multi-Tenant Cloud Based IP-PBX System http://www.prweb.com/releases/2012/2/prweb9154751.htm Why are cloud and mobile so important right now? It all comes down to money. • Rapid drop in computer hardware prices, rapid rise in computer hardware capabilities – Low-cost availability of server space – Low-cost availability of handheld devices • Continual rise in cost of operating servers – Security, privacy, maintenance/upgrades – Let somebody “on the cloud” deal with it Crashing hard drive costs Collapsing transistor costs Plummeting device prices What are we really talking about? What is the “cloud”? • Servers on the web that you can lease for deploying software, specifically: – Secure – On-demand – Maintained What is “mobile”? • Any device that can be carried around – Usually small screen size – Often a touchscreen – Usually a terrible keyboard, if any – Sometimes disconnected from net – Integrated with specialized hardware • Camera, GPS, gyroscope, accelerometer, … – (Maybe limited computing resources… for now) So who cares? Practical implications for you as a software engineer… So who cares? • Impact on overall architecture – Usually web-centric architecture (learn HTML) – Sometimes a non-SQL (non-ACID) data store – Usually built on really cheap, unreliable hardware – Ideally has platform-independent client code – Often a bit of a mess So who cares? • Design for performance and reliability – Stateless server components – Replication – Asynchronous operations – Deferred transactions – Eventual consistency So who cares? • Focus on usability – Small(er) screens – Minimal text input – Usually no mouse – Often a touchscreen – Portability crucial – Maximize battery life – Ease of installation So who cares? • Continuous need to learn new APIs – Storing data – Manipulating data – Caching data – Accessing mobile hardware • Camera, GPS, gyroscope, accelerometer, … – Accessing mobile services • Notifications, offline mode, video, … • Not to mention all the new platforms!!!! Where does this course fit in? Course goals: For you to be able to… • Install and configure tools for cloud and mobile development • Create basic cloud and mobile applications that include: – Efficient storage of replicated data – Reliable synchronization of offline data – Presentation of mobile-optimized user interfaces – Effective use of relevant APIs So that means… • I will show you how to do some concrete tasks – On relatively simple cloud and mobile platforms • I will explain related principles • You will transfer and apply this knowledge… – To other platforms – To new APIs – To a project of your own Overall timeline In classroom Early April 1. Cloud overview Late April 2. Mobile overview Early May Late May 4. General principles 6. Cool APIs Your homework 3. Create platform How-To 5. Work on project Part 1. Cloud overview • Google App Engine (GAE) – A relatively simple platform – Can start using for free – Provides exposure to some cloud funkiness • noSQL • Avoiding joins • Poor transactional support Part 2. Mobile overview • Titanium – A relatively simple platform • JS-based – Can start using for free – Can be deployed on multiple platforms • • • • • iOS (i.e., iPhone, iPad) Android Windows mobile And emulators of all the above And desktop browsers Part 3. Your platform How-To • In teams, you will create a “How-To” showing how to use 1 cloud and 1 mobile platform – Cloud options: Windows Azure, Amazon EC2, … – Mobile options: jQTouch, PhoneGap, Adobe Air, … • Step-by-step instructions: – How to install – How to save data – How to display data ? Part 4. General principles • Performance, e.g., – How to take advantage of multiple servers • Reliability, e.g., – How to handle occasionally connected computing • Security, e.g., – How to limit access to private data • Usability, e.g., – How to avoid locking up your user’s phone Part 5. Your project • You will create one application of your choice – Some functionality that… • Somebody would want to use • You can show off at job interviews – Adequate… • Scalability to handle hundreds of users • Usability on at least one real device or emulator Part 6. Cool APIs • Opportunity for extra credit… – Presentations on cool APIs you have discovered while working on projects that can enhance usability, performance, reliability, or security • Examples: – How to read data from a camera or microphone – How to plot locations on a map – How to use remote authentication services – How to post status updates to social media sites What about grades? Grading • Platform How-To: 1/3, graded in teams • Project: 1/3, graded individually • Exam: 1/3, graded individually = slide has a good chance of being on the exam • See course website for additional information on grading, academic integrity, and other policies. Grading criteria • How-To – Clear coverage of required parts • Project – Demonstrate some interesting functionality; turn in your code, plus evidence that it can handle hundreds of users; demonstrate in class • Exam – Multiple-choice, mostly on slides Other general course information • Lectures: MWF 1100-1150, STAG 208 • Exam: In class, near end of course • Office hours: W 1200-1300, KEC 3047 • Very strongly encouraged but optional textbooks: – ISBN/SKU 1849690448, Guermeur, "Google App Engine Java and GWT Application Development", 2010, Packt Publishing (“GAE Book”) – ISBN/SKU 0596517742, Crockford, "JavaScript: The Good Parts", 2008, Yahoo Press (“JS Book”) Next steps for you… • Required before class on Thursday – Find a few people to work with on a How-To • Preferably 2-4 people per group • Email me to say what your groups will be; include a photo of each of you so I can learn your faces • Consider: what platforms do you want to cover? • Strongly encouraged – Buy the textbooks (available at bookstore) – Read GAE Book, chapters 1 and 2 this week – Bring your laptop to every class Images used in slides • http://gigaom2.files.wordpress.com/2011/08/sai-chart-rimblackberry-asp.gif • http://mydigitaldefense.com/wp-content/uploads/2011/04/kindleprice-forecast1.jpg • http://www.singularity.com/images/charts/MicroProcessCostPerTra ns.jpg • http://data.story.lu/wp-content/uploads/2011/10/cost-hdd.jpg • http://www.flickr.com/photos/jamisonjudd/2433102356/ • http://www.flickr.com/photos/bfishadow/5077249243/sizes/s/in/p hotostream/ • http://www.flickr.com/photos/juhansonin/4902072639/ • http://www.flickr.com/photos/kingautmanthe3rd/2280635117/size s/s/in/photostream/ • http://www.flickr.com/photos/tarmotoikkanen/3308183411/sizes/s /in/photostream/