Skip to content

Engineering Software as a Service

Armando Fox and David Patterson's popular textbook and courseware seamlessly integrated for students and zero setup for instructors

Course Modules & Assignments

Chapter 1: Introduction to Software as a Service, Agile Development, and Cloud Computing - 1.0 Concepts and Prerequisites
- 1.1 Introduction
- 1.2 Software Development Processes: Plan and Document
- 1.3 Software Development Processes: The Agile Manifesto
- 1.4 Software Quality Assurance: Testing
- 1.5 Productivity: Conciseness, Synthesis, Reuse, and Tools
- 1.6 SaaS and Service Oriented Architecture
- 1.7 Deploying SaaS: Cloud Computing
- 1.8 Deploying SaaS: Browsers and Mobile
- 1.9 Beautiful vs. Legacy Code
- 1.10 Guided Tour and How To Use This Book
- 1.11 Fallacies and Pitfalls
- 1.12 Concluding Remarks: Software Engineering Is More Than Programming
Chapter 2: How to Learn a New Language - 2.0 Concepts and Prerequisites
- 2.1 Prelude: Learning to Learn Languages and Frameworks
- 2.2 Pair Programming
- 2.3 Introducing Ruby, an Object-Oriented Language
- 2.4 Ruby Idioms: Poetry Mode, Blocks, Duck Typing
- 2.5 CHIPS: Ruby Intro
- 2.6 Gems and Bundler: Library Management in Ruby
- 2.7 Fallacies and Pitfalls
- 2.8 Concluding Remarks: How (Not) To Learn a Language By Googling
Chapter 3: SaaS Application Architecture: Microservices, APIs, and REST - 3.0 Concepts and Prerequisites
- 3.1 The Web's Client-Server Architecture
- 3.2 SaaS Communication Uses HTTP Routes
- 3.3 CHIPS: HTTP and URIs
- 3.4 From Web Sites to Microservices: Service-Oriented Architecture
- 3.5 RESTful APIs: Everything is a Resource
- 3.6 RESTful URIs, API Calls, and JSON
- 3.7 CHIPS: Wordguesser
- 3.8 Fallacies and Pitfalls
- 3.9 Concluding Remarks: Continuity From CGI to SOA
Chapter 4: SaaS Framework: Rails as a Model-View-Controller Framework - 4.0 Concepts and Prerequisites
- 4.1 The Model-View-Controller (MVC) Architecture
- 4.2 Rails Models: Databases and Active Record
- 4.3 CHIPS: ActiveRecord Basics
- 4.4 Routes, Controllers, and Views
- 4.5 Forms
- 4.6 CHIPS: WordGuesser on Rails
- 4.7 Debugging: When Things Go Wrong
- 4.8 CHIPS:Hello Rails
- 4.9 Fallacies and Pitfalls
- 4.10 Concluding Remarks: Rails as a Service Framework
Chapter 5: SaaS Framework: Advanced Programming Abstractions for SaaS - 5.0 Concepts and Prerequisites
- 5.1 DRYing Out MVC: Partials, Validations and Filters
- 5.2 CHIPS: Rails Intro
- 5.3 Single Sign-On and Third-Party Authentication
- 5.4 Associations and Foreign Keys
- 5.5 Through-Associations
- 5.6 RESTful Routes for Associations
- 5.7 CHIPS: Associations [PLACEHOLDER]
- 5.8 Other Types of Code
- 5.9 Fallacies and Pitfalls
- 5.10 Concluding Remarks: Languages, Productivity, and Beauty
Chapter 6: Mobile and Desktop SaaS Clients: JavaScript Introduction - 6.0 Concepts and Prerequisites
- 6.1 JavaScript: The Big Picture
- 6.2 Introducing ECMAScript
- 6.3 Classes, Functions and Constructors
- 6.4 The Document Object Model (DOM) and jQuery
- 6.5 The DOM and Accessibility
- 6.6 Events and Callbacks
- 6.7 AJAX: Asynchronous JavaScript And XML
- 6.8 Testing JavaScript and AJAX
- 6.9 CHIPS: AJAX Enhancements to RottenPotatoes [PLACEHOLDER]
- 6.10 Single-Page Apps and JSON APIs
- 6.11 Fallacies and Pitfalls
- 6.12 Concluding Remarks: JavaScript Past, Present and Future
Chapter 7: Requirements: Behavior-Driven Design and User Stories - 7.0 Concepts and Prerequisites
- 7.1 Behavior-Driven Design and User Stories
- 7.2 SMART User Stories
- 7.3 Lo-Fi User Interface Sketches and Storyboards
- 7.4 Points and Velocity
- 7.5 Agile Cost Estimation
- 7.6 Cucumber: From User Stories to Acceptance Tests
- 7.7 CHIPS: Intro to BDD and Cucumber
- 7.8 Explicit vs. Implicit and Imperative vs. Declarative Scenarios
- 7.9 The Plan-And-Document Perspective on Documentation
- 7.10 Fallacies and Pitfalls
- 7.11 Concluding Remarks: Pros and Cons of BDD
Chapter 8: Software Testing: Test-Driven Development - 8.0 Concepts and Prerequisites
- 8.1 FIRST, TDD, and Red-Green-Refactor
- 8.2 Anatomy of a Test Case: Arrange, Act, Assert
- 8.3 Isolating Code: Doubles and Seams
- 8.4 Stubbing the Internet
- 8.5 CHIPS: Intro to RSpec on Rails
- 8.6 Fixtures and Factories
- 8.7 Coverage Concepts and Types of Tests
- 8.8 Other Testing Approaches and Terminology
- 8.9 CHIPS: The Acceptance Test/Unit Test Cycle
- 8.10 The Plan-And-Document Perspective on Testing
- 8.11 Fallacies and Pitfalls
- 8.12 Concluding Remarks: TDD vs. Conventional Debugging
Chapter 9: Software Maintenance: Enhancing Legacy Software Using Refactoring and Agile Methods - 9.0 Concepts and Prerequisites
- 9.1 What Makes Code “Legacy” and How Can Agile Help?
- 9.2 Exploring a Legacy Codebase
- 9.3 Establishing Ground Truth With Characterization Tests
- 9.4 Comments and Commits: Documenting Code
- 9.5 Metrics, Code Smells, and SOFA
- 9.6 Method-Level Refactoring: Replacing Dependencies With Seams
- 9.7 The Plan-And-Document Perspective on Working With Legacy Code
- 9.8 Fallacies and Pitfalls
- 9.9 Concluding Remarks: Continuous Refactoring
Chapter 10: Project Management: Scrum, Teams, and Version Control - 10.0 Concepts and Prerequisites
- 10.1 It Takes a Team: Two-Pizza and Scrum
- 10.2 Using Branches Effectively
- 10.3 Pull Requests and Code Reviews
- 10.4 Delivering the Backlog Using Continuous Integration
- 10.5 CHIPS: Agile Iterations
- 10.6 Reporting and Fixing Bugs: The Five R's
- 10.7 The Plan-And-Document Perspective on Managing Teams
- 10.8 Fallacies and Pitfalls
- 10.9 Concluding Remarks: From Solo Developer to Teams of Teams
Chapter 11: Design Patterns for SaaS Classes - 11.0 Concepts and Prerequisites
- 11.1 Patterns, Antipatterns, and SOLID Class Architecture
- 11.2 Just Enough UML
- 11.3 Single Responsibility Principle
- 11.4 Open/Closed Principle
- 11.5 Liskov Substitution Principle
- 11.6 Dependency Injection Principle
- 11.7 Demeter Principle
- 11.8 The Plan-And-Document Perspective on Design Patterns
- 11.9 Fallacies and Pitfalls
- 11.10 Concluding Remarks: Frameworks Capture Design Patterns
Chapter 12: Dev/Ops: Deployment, Performance, Reliability, and Practical Security - 12.0 Concepts and Prerequisites
- 12.1 From Development to Deployment
- 12.2 Three-Tier Architecture
- 12.3 Responsiveness, Service Level Objectives, and Apdex
- 12.4 Releases and Feature Flags
- 12.5 Monitoring and Finding Bottlenecks
- 12.6 Improving Rendering and Database Performance With Caching
- 12.7 Avoiding Abusive Database Queries
- 12.8 CHIPS: The benefits of caching in SaaS
- 12.9 Security: Defending Customer Data in Your App
- 12.10 The Plan-And-Document Perspective on Operations
- 12.11 Fallacies and Pitfalls
- 12.12 Concluding Remarks: Beyond PaaS Basics

Always Up-to-date

Codio uses the most up-to-date version of ESaaS materials - meaning every content update, auto-grader patch and hands-on activity added will appear in Codio in a matter of days after a QA pass. 

 

Book Description

"A one-semester college course in software engineering focusing on cloud computing, software as a service (SaaS), and Agile development using Extreme Programming (XP). This book is neither a step-by-step tutorial nor a reference book. Instead, our goal is to bring a diverse set of software engineering topics together into a single narrative, help readers understand the most important ideas through concrete examples and a learn-by-doing approach, and teach readers enough about each topic to get them started in the field. ... See http://saasbook.info for details." — Amazon

Learn by Doing Approach

Agile+SaaS+Cloud has not only revolutionized software, but also made it easier and more effective to teach.  Students learn directly by doing, using the same world-class tools that professionals use that also allow you to better evaluate their work. 

Auto-graded CHIPS and ungraded projects are interwoven throughout the book content for students to get plenty of practice.

Auto-Graded Assessments

Each auto-graded CHIPS provide feedback to both the student and teacher about students mastery of the material.

Codio collects analytics on each of these assignments such as correctness, number of submission attempts, and amount of time spent allowing teachers of large classes to visualize their students performance.

Codio Eases Implementation

Aside from CHIPs and other hands-on projects, Codio integrates the screencasts so they are seamlessly embedded right where students need them. Codio allows students to easily spin up various coding environments to try out the in-text examples .