About‎ > ‎

Table of Contents (v1.2.1, 10-May-2016)

 1 Introduction to SaaS and Agile Development
   1.1 Introduction
   1.2 Software Development Processes: Plan and Document
   1.3 Software Development Processes: The Agile Manifesto
   1.4 Service Oriented Architecture
   1.5 Software as a Service
   1.6 Cloud Computing
   1.7 Beautiful vs. Legacy Code
   1.8 Software Quality Assurance: Testing
   1.9 Productivity: Conciseness, Synthesis, Reuse, and Tools
   1.10 Guided Tour of the Book
   1.11 How NOT to Read This Book
   1.12 Fallacies and Pitfalls
   1.13 Engineering Software is More Than Programming
   1.14 To Learn More
   1.15 Suggested Projects
 2 The Architecture of SaaS Applications
   2.1 100,000 Feet: Client-Server Architecture
   2.2 50,000 Feet: Communication---HTTP and URIs
   2.3 10,000 Feet: Representation---HTML and CSS
   2.4 5,000 Feet: 3-Tier Architecture & Horizontal Scaling
   2.5 1,000 Feet: Model-View-Controller Architecture
   2.6 500 Feet: Active Record for Models
   2.7 500 Feet: Routes, Controllers, and REST
   2.8 500 Feet: Template Views
   2.9 Fallacies and Pitfalls
   2.10 Concluding Remarks: Patterns, Architecture, and Long-Lived APIs
   2.11 To Learn More
   2.12 Suggested Projects
 3 SaaS Framework: Introduction to Ruby
   3.1 Overview and Three Pillars of Ruby
   3.2 Everything is an Object
   3.3 Every Operation is a Method Call
   3.4 Classes, Methods, and Inheritance
   3.5 All Programming is Metaprogramming
   3.6 Blocks: Iterators, Functional Idioms, and Closures
   3.7 Mix-ins and Duck Typing
   3.8 Make Your Own Iterators Using Yield
   3.9 Fallacies and Pitfalls
   3.10 Concluding Remarks: Idiomatic Language Use
   3.11 To Learn More
   3.12 Suggested Projects
 4 SaaS Framework: Introduction to Rails
   4.1 Rails Basics: From Zero to CRUD
   4.2 Databases and Migrations
   4.3 Models: Active Record Basics
   4.4 Controllers and Views
   4.5 Debugging: When Things Go Wrong
   4.6 Form Submission: New and Create
   4.7 Redirection and the Flash
   4.8 Finishing CRUD: Edit/Update and Destroy
   4.9 Fallacies and Pitfalls
   4.10 Concluding Remarks: Designing for SOA
   4.11 To Learn More
   4.12 Suggested Projects
 5 SaaS Framework: Advanced Rails
   5.1 DRYing Out MVC: Partials, Validations and Filters
   5.2 Single Sign-On and Third-Party Authentication
   5.3 Associations and Foreign Keys
   5.4 Through-Associations
   5.5 RESTful Routes for Associations
   5.6 Composing Queries With Reusable Scopes
   5.7 Fallacies and Pitfalls
   5.8 Concluding Remarks: Languages, Productivity, and Beauty
   5.9 To Learn More
   5.10 Suggested Projects
 6 SaaS Client Framework: JavaScript Introduction
   6.1 JavaScript: The Big Picture
   6.2 Client-Side JavaScript for Ruby Programmers
   6.3 Functions and Constructors
   6.4 The Document Object Model and jQuery
   6.5 Events and Callbacks
   6.6 AJAX: Asynchronous JavaScript And XML
   6.7 Testing JavaScript and AJAX
   6.8 Single-Page Apps and JSON APIs
   6.9 Fallacies and Pitfalls
   6.10 Concluding Remarks: JavaScript Past, Present and Future
   6.11 To Learn More
   6.12 Suggested Projects
 7 Requirements: BDD and User Stories
   7.1 Introduction to Behavior-Driven Design and User Stories
   7.2 Points, Velocity, and Pivotal Tracker
   7.3 SMART User Stories
   7.4 Lo-Fi User Interface Sketches and Storyboards
   7.5 Agile Cost Estimation
   7.6 Introducing Cucumber and Capybara
   7.7 Running Cucumber and Capybara
   7.8 Enhancing RottenPotatoes
   7.9 Explicit vs. Implicit and Imperative vs. Declarative Scenarios
   7.10 The Plan-And-Document Perspective
   7.11 Fallacies and Pitfalls
   7.12 Concluding Remarks: Pros and Cons of BDD
   7.13 To Learn More
   7.14 Suggested Projects
 8 Testing: Test-Driven Development
   8.1 Background: A RESTful API and a Ruby Gem
   8.2 FIRST, TDD, and Red--Green--Refactor
   8.3 Seams and Doubles
   8.4 Expectations, Mocks, Stubs, Setup
   8.5 Fixtures and Factories
   8.6 Implicit Requirements and Stubbing the Internet
   8.7 Coverage Concepts and Unit vs. Integration Tests
   8.8 Other Testing Approaches and Terminology
   8.9 The Plan-And-Document Perspective
   8.10 Fallacies and Pitfalls
   8.11 Concluding Remarks: TDD vs. Conventional Debugging
   8.12 To Learn More
   8.13 Suggested Projects
 9 Maintenance: Legacy, Refactoring, and Agile
   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
   9.5 Metrics, Code Smells, and SOFA
   9.6 Method-Level Refactoring
   9.7 The Plan-And-Document Perspective
   9.8 Fallacies and Pitfalls
   9.9 Concluding Remarks: Continuous Refactoring
   9.10 To Learn More
   9.11 Suggested Projects
10 Project Management: Scrum, Pairs, and VCS
   10.1 It Takes a Team: Two-Pizza and Scrum
   10.2 Pair Programming
   10.3 Agile Design and Code Reviews?
   10.4 Version Control for the Two-Pizza Team: Merge Conflicts
   10.5 Using Branches Effectively
   10.6 Reporting and Fixing Bugs: The Five R's
   10.7 The Plan-And-Document Perspective
   10.8 Fallacies and Pitfalls
   10.9 Concluding Remarks: Teams, Collaboration, and Four Decades of Version Control
   10.10 To Learn More
   10.11 Suggested Projects
11 Design Patterns for SaaS Classes
   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
   11.9 Fallacies and Pitfalls
   11.10 Concluding Remarks: Frameworks Capture Design Patterns
   11.11 To Learn More
   11.12 Suggested Projects
12 Performance, Releases, Reliability, and Security
   12.1 From Development to Deployment
   12.2 Quantifying Responsiveness
   12.3 Continuous Integration and Continuous Deployment
   12.4 Releases and Feature Flags
   12.5 Quantifying Availability
   12.6 Monitoring and Finding Bottlenecks
   12.7 Improving Rendering and Database Performance With Caching
   12.8 Avoiding Abusive Database Queries
   12.9 Security: Defending Customer Data in Your App
   12.10 The Plan-And-Document Perspective
   12.11 Fallacies and Pitfalls
   12.12 Concluding Remarks: Performance, Reliability, Security, and Leaky Abstractions
   12.13 To Learn More
   12.14 Suggested Projects
13 Afterword
   13.1 Perspectives on SaaS and SOA
   13.2 Looking Backwards
   13.3 Looking Forwards
   13.4 Last Words
   13.5 To Learn More
 A Using the Bookware
   A.1 General Guidance: Read, Ask, Search, Post!
   A.2 Overview of the Bookware
   A.3 Development Using the Cloud9 IDE
   A.4 Working With Code: Editors
   A.5 Getting Started With Secure Shell (ssh)
   A.6 Getting Started With Git for Version Control
   A.7 Getting Started With GitHub
   A.8 Deploying to the Cloud Using Heroku
   A.9 Checklist: Starting a New Rails App
   A.10 Fallacies and Pitfalls
   A.11 To Learn More
Comments