Engineering Software as a Service: An Agile Approach Using Cloud Computing

Armando Fox, David A. Patterson

(v1.2.1) Awarded “Most Promising New Textbook” for 2016 by the Textbook & Academic Authors Association. 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. Courseware for doing the work in the book is available as a virtual machine image that can be downloaded or deployed in the cloud. A free MOOC (massively open online course) at saas-class.org follows the book’s content and adds programming assignments and quizzes. See http://saasbook.info for details.

Key Summary

“Engineering Software as a Service: An Agile Approach Using Cloud Computing” is a guide to building software-as-a-service (SaaS) applications using agile development methods and cloud computing infrastructure. The book covers the process of creating a SaaS product from idea to delivery, with a focus on the software engineering and technical aspects of the process.

Takeaways

1. Agile development is a key method for delivering high-quality SaaS products efficiently.
2. Cloud computing infrastructure provides a scalable and cost-effective platform for SaaS applications.
3. A SaaS product should be designed with the end-user in mind and focus on solving a specific problem.
4. Development of SaaS applications involves multiple stages including requirement gathering, design, development, testing, and deployment.
5. Continuous integration and continuous deployment (CI/CD) pipelines allow for rapid iteration and deployment of new features.
6. Microservices architecture is a popular approach for building scalable SaaS applications.
7. Security and data privacy are critical concerns that must be considered and addressed throughout the development process.
8. SaaS applications should be designed for high availability and failover, ensuring that they remain available even in the event of infrastructure failures.
9. SaaS applications should be designed to allow for easy customization and integration with other tools and systems.
10. Ongoing monitoring and performance tuning is critical to ensure the continued success of a SaaS application.