Transcript Overview

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/