Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Engineering Software is Different from Hardware
Introduction
Product Lifetimes: Independent Products vs. Continuous Improvement
Development Processes: Waterfall vs. Spiral vs. Agile
Assurance: Testing and Formal Methods
Productivity: Conciseness, Synthesis, Reuse, and Tools
Software as a Service
Service Oriented Architecture
Cloud Computing
Fallacies and Pitfalls
Guided Tour of the Book
How NOT to Read this Book
Concluding Remarks: Engineering Software is More Than Programming
To Learn More
Suggested Projects
SaaS Architecture
100,000 Feet: Client-Server Architecture
50,000 Feet: Communication—HTTP and URIs
10,000 feet: Representation—HTML and CSS
5,000 Feet: 3-Tier Architecture & Horizontal Scaling
1,000 Feet: Model-View-Controller Architecture
500 Feet: Active Record for Models
500 feet: Routes, Controllers, and REST
500 feet: Template Views
Fallacies and Pitfalls
Concluding Remarks: Patterns, Architecture, and Long-Lived APIs
To Learn More
Suggested Projects
Ruby for Java Programmers
Overview and Three Pillars of Ruby
Everything is an Object
Every Operation is a Method Call
Classes, Methods, and Inheritance
All Programming is Metaprogramming
Blocks: Iterators, Functional Idioms, and Closures
Mix-ins and Duck Typing
Make Your Own Iterators Using Yield
Fallacies and Pitfalls
Concluding Remarks: Idiomatic Language Use
To Learn More
Suggested Projects
Rails From Zero to CRUD
Rails Basics: From Zero to CRUD
Databases and Migrations
Models: Active Record Basics
Controllers and Views
Debugging: When Things Go Wrong
Form Submission: New and Create
Redirection and the Flash
Finishing CRUD: Edit/Update and Destroy
Fallacies and Pitfalls
Concluding Remarks: Designing for SOA
To Learn More
Suggested Projects
Validating Requirements: BDD and User Stories
Introduction to Behavior-Driven Design and User Stories
SMART User Stories
Introducing Cucumber and Capybara
Running Cucumber and Capybara
Lo-Fi User Interface Sketches and Storyboards
Enhancing Rotten Potatoes
Explicit vs. Implicit and Imperative vs. Declarative Scenarios
Fallacies and Pitfalls
Concluding Remarks: Pros and Cons of BDD
To Learn More
Suggested Projects
Verification: Test-Driven Development
Background: A RESTful API and a Ruby Gem
FIRST, TDD, and Getting Started With RSpec
The TDD Cycle: Red–Green–Refactor
More Controller Specs and Refactoring
Fixtures and Factories
TDD for the Model
Stubbing the Internet
Coverage Concepts and Unit vs. Integration Tests
Other Testing Approaches and Terminology
Fallacies and Pitfalls
Concluding Remarks: TDD vs. Conventional Debugging
To Learn More
Suggested Projects
Improving Productivity: DRY and Concise Rails
DRYing Out MVC: Partials, Validations and Filters
Single Sign-On and Third-Party Authentication
Associations and Foreign Keys
Through-Associations
RESTful Routes for Associations
Composing Queries With Reusable Scopes
Fallacies and Pitfalls
Concluding Remarks: Languages, Productivity, and Beauty
To Learn More
Suggested Projects
Legacy Software, Refactoring, and Agile Methods
What Makes Code “Legacy” and How Can Agile Help?
Exploring a Legacy Codebase
Establishing Ground Truth With Characterization Tests
Metrics, Code Smells, and SOFA
Method-Level Refactoring: Replacing Dependencies With Seams
Fallacies and Pitfalls
Concluding Remarks: Continuous Refactoring
To Learn More
Suggested Projects
Working In Teams vs. Individually
It Takes a Team: Two-Pizza and Scrum
Points, Velocity, and Pivotal Tracker
Pair Programming
Design Reviews and Code Reviews
Version Control for the Two-Pizza Team: Merge Conflicts
Using Branches Effectively
Reporting and Fixing Bugs: The Five R’s
Fallacies and Pitfalls
Concluding Remarks: Teams, Collaboration, and Four Decades of Version Control
To Learn More
Suggested Projects
SOLID Design Patterns for SaaS
Patterns, Antipatterns, and SOLID Class Architecture
Just Enough UML
Single Responsibility Principle
Open/Closed Principle
Liskov Substitution Principle
Dependency Injection Principle
Demeter Principle
Fallacies and Pitfalls
Concluding Remarks: Is Agile Design an Oxymoron?
To Learn More
Suggested Projects
Enhancing SaaS With JavaScript
JavaScript: The Big Picture
Client-Side JavaScript for Ruby Programmers
Functions and Prototype Inheritance
The Document Object Model and jQuery
Events and Callbacks
AJAX: Asynchronous JavaScript And XML
Fallacies and Pitfalls
Concluding Remarks: JavaScript Past, Present and Future
To Learn More
Suggested Projects
Performance, Upgrades, Practical Security
From Development to Deployment
Quantifying Availability and Responsiveness
Continuous Integration and Continuous Deployment
Upgrades and Feature Flags
Monitoring and Finding Bottlenecks
Improving Rendering and Database Performance With Caching
Avoiding Abusive Queries
Defending Customer Data
Fallacies and Pitfalls
Concluding Remarks: Performance, Security, and Leaky Abstractions
To Learn More
Suggested Projects
Looking Backwards and Looking Forwards
Perspectives on SaaS and SOA
Looking Backwards
Looking Forwards
Evaluating the Book in the Classroom
Last Words
To Learn More
Using the Bookware
Alpha Edition Guidance
Overview of the Bookware
Using the Bookware VM With VirtualBox
Using the Bookware VM on Amazon Elastic Compute Cloud
Working With Code: Editors and Unix Survival Skills
Getting Started With Git for Version Control
Getting Started With GitHub or ProjectLocker
Deploying to the Cloud Using Heroku
Fallacies and Pitfalls
To Learn More
← Prev
Back
Next →
← Prev
Back
Next →