1 / 16

Armando Fox and David Patterson UC Berkeley June 21, 2010

Software Engineering for Software as a Service: A Software Engineering Course with Student Projects that Actually Work!. Armando Fox and David Patterson UC Berkeley June 21, 2010. Overview. Web 2.0 SaaS is a great motivator for teaching software skills

dawson
Télécharger la présentation

Armando Fox and David Patterson UC Berkeley June 21, 2010

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering for Software as a Service:A Software Engineering Course with Student Projects that Actually Work! Armando Fox and David Patterson UC Berkeley June 21, 2010

  2. Overview • Web 2.0 SaaS is a great motivator for teaching software skills • students get to build artifacts they themselves use • some projects continue after course is over • opportunity to (re-)introduce “big ideas” in software development/architecture • Cloud computing is great fit for CS courses • elasticity around project deadlines • easier administration of courseware • students can take work product with them after course (e.g. use of Eucalyptus in RAD Lab)

  3. Trends over Next Decade • Computing at Extremes: Mobile Client + Cloud • Expanding Software As A Service (SaaS) • Applications for the datacenter • Web 2.0 apps delivered via browser • Shrink wrap SW  Services over Internet • Cloud Computing Accelerates SaaS • Pay-for-use computing, storage, network transfer • Amazon Web Services, Google Apps, M/S Azure, … • Instant Scale-up, Scale-down • Rewards Conservation: Can cost 0$ when doing 0

  4. Software Education in 2010 (or: the case for teaching SaaS) • New: languages & tools are actually good now • Ruby, Python, etc. are tasteful and allow reinforcing important CS concepts (higher-order programming, closures, etc.) • order-of-magnitude greater productivity than 1 generation ago, including for testing

  5. Team Skills • Web 2.0 SaaS apps increasingly composed of loosely coupled teams doing Develop/Assess/-Deploy/Operate (DADO) • Technical as well as “social” team skills needed • repository management • branching, tagging, merging • distributing responsibility during collaboration • Web 2.0 SaaS == Great fit for ugrad education • Apps can be developed/deployed in 1 semester • Rapid gratification =projects outlive the course • Team skills in context of agile development

  6. SaaS Using Ruby on Rails at Cal • What’s different about DADO for SaaS • Basic *ilities: Horizontal scaling, load balancing, H/A • Consistency, caching, database scaling, CAP thm • Benchmarking, tuning, understanding SLA’s • How CS “big ideas” make RoR high productivity • H.O. programming, metaprogramming, introspection =ActiveRecord ORM • runtime code generation =AJAX support

  7. Web 2.0 SaaS as Course Driver • Almost all students: ability to design own app was key to appeal of the course • design things they or their peers would use • High productivity frameworks =projects work • actual gratification from using CS skills, vs. getting N complex pieces of Java code to work but not integrate • Fast-paced semester is good fit for agile iteration-based design • Tools used are same as in industry

  8. Cloud Computing as a Supporting Technology • Cloud Computing Elasticity is great for courses! • Donation from AWS; ~$100/student • Watch a database fall over: ~200 servers needed • Lab deadlines, final project demos • VM image simplifies courseware distribution • Prepare image ahead of time • Students can be root if need to install weird SW, libs... • students get better hardware • cost associativity • cloud provider updates HW more frequently • VM images compatible with Eucalyptus—enables hybrid cloud computing

  9. Success stories

  10. Questions? • Help yourself to our materials (http://radlab.cs.berkeley.edu)

  11. Planning a SaaS course? • Pick a highly-productive framework • Projects can be deployed, and will actually work • Students can use production-quality tools & methods • We used Ruby on Rails; Google AppEngine probably also a good choice • Avail yourself of *-as-a-service • Google Code for Subversion version control • PivotalTracker for project tracking • EC2 for app deployment (Amazon is very good about donating AWS credits for education) • Tie high-productivity mechanisms back to CS “big ideas” • Code generation, introspection/reflection, metaprogramming, higher order programming • Steal our materials (http://radlab.cs.berkeley.edu)

  12. SaaS Courses at Cal

  13. Topic coverage & labs • “Hello World” web app in Rails • Unit-test-driven design of a specified module • User-story-driven design of an app (work in teams of 2 or 3 students) • Deploy own app to Amazon EC2 • Use Cloudstone benchmark app to saturate MySQL database (using EC2) • Experiment with different types of caching to observe effect on database saturation • Final demo: publicly-deployed app, short talk

  14. Comparison to other SW Eng./programming courses • Open-ended project • vs. “fill in blanks” programming • Focus on SaaS • vs. Android, Java desktop apps, etc. • Focus on RoR as high-level framework • Projects expected to work • vs. working pieces but no artifact • most projects actually do work, some continue life outside class • Focus on how “big ideas” in languages/programming enable high productivity

  15. Moving to cloud computing

  16. Success stories, cont. • Fall 2009 project: matching undergrads to research opportunities • Fall 2009 project: Web 2.0 AJAXy course scheduler with links to professor reviews • Spring 2010 projects: apps to stress RAD Lab infrastructure • gRADit: vocabulary review as a game • RADish: comment filtering taken to a whole new level

More Related