To understand the principles and practice of software development, there is no better motivator than participating in a software project with real-world value and a life beyond the academic arena. Software Development: An Open Source Approach immerses students directly into an agile free and open source software (FOSS) development process. It focuses on the methodologies and goals that drive the development of FOSS, combining principles with real-world skill building, such as debugging, refactoring, and writing.
The text explains the software development process through an integration of FOSS principles, agile techniques, modern collaboration tools, community involvement, and teamwork. The authors highlight the value of collaboration as a fundamental paradigm for software development. They show how an effective development team can often create better quality software than an individual working in isolation.
Written by experienced software developers and educators, this book enables students to gain a rich appreciation of the principles and practice of FOSS development. It also helps them become better writers, programmers, and software community members.
The book’s companion website provides a wealth of resources:
- Downloadable FOSS development projects, including design documents, use cases, and code bases
- A discussion forum for instructors and students to share their experiences and exchange ideas about particular issues raised by these projects
- Supporting materials for common FOSS development tasks, such as setting up a version control system, an IDE, a project code base, and a unit test suite
- Additional exercises that reflect a wide variety of software projects and other activities
Table of Contents
Overview and Motivation
Free and Open Source Software (FOSS)
Two Case Studies
Working with a Project Team
Key FOSS Activities
Client-Oriented vs. Community-Oriented Projects
Working on a Client-Oriented Project
Joining a Community-Oriented Project
Using Project Tools
Code Management Tools
Run-Time System Constraints
Layers, Cohesion, and Coupling
Concurrency, Race Conditions, and Deadlocks
Working with Code
Bad Smells and Metrics
Extending the Software for a New Project
Developing the Domain Classes
Understanding the Current System
Adding New Features
Class Design Principles and Practice
Managing the Ripple Effect
Developing the Database Modules
Design Principles and Practice
Working with a Database
Database Security and Integrity
Adding New Software Features: Database Impact
Developing the User Interface
Design Principles and Practice
Working with Code
Adding New Features: User Interface Impact
Types of User Support
Example: RMH Homebase On-Line Help
Origins and Evolution
Evolving into a Democratic Meritocracy
New Project Conception
Appendix A: Details of the Case Study
Appendix B: New Features for an Existing Code Base
Starting with a Request from the Client
Impact on the Design and the Code Base
Defining a Project that Implements These New Features
A Summary and Exercises appear at the end of each chapter.
Allen B. Tucker is the Anne T. and Robert M. Bass Professor Emeritus at Bowdoin College in Brunswick, Maine. Dr. Tucker is an ACM Fellow and Distinguished Lecturer and a member of the Humanitarian FOSS Project's executive committee. He has published papers in the areas of programming languages, software development, natural language processing, and curriculum development.
Ralph A. Morelli is a professor of computer science at Trinity College in Hartford, Connecticut. Dr. Morelli is one of the principal investigators of the Humanitarian FOSS Project. He has published papers in the areas of artificial intelligence, FOSS, and computer science education.
Chamindra de Silva is the CTO and director of the Sahana Project, which provides a free and open source disaster management system. He is also a co-founder of the Humanitarian FOSS Community and an advisory board member of the Humanitarian FOSS Project. He has participated in many governmental and NGO projects in Pakistan, the Philippines, Peru, the United States, China, and Haiti.
For more information on the Humanitarian FOSS Project, visit its website.
Software, which makes all of this data processing possible, must be robust, dependable, and easy to use. Accordingly, people who develop software should use sound methodologies to achieve these properties; this book helps with just that. … clearly and thoroughly explains the fundamental concepts of software development, with the help of many figures and tables. … Although the book is heavily centered on free and open-source software, and is organized as a textbook, individual programmers and teams of programmers can easily use it as a guide.
—Computing Reviews, February 2012
Integrating project work in computing courses is highly valuable. Project-driven learning experiences are enhanced when students are exposed to real-life problems and actually engaged with community partners, whether industry, business, or nonprofit organizations. While all this sounds very convincing in theory, making it a reality is a big challenge. Software Development: An Open Source Approach is an excellent resource for teachers and students to take on this challenge. The book’s RMH Homebase case study and web site supporting materials, RMH Homebase code base releases, and staging server setup instructions transform an individual reading experience of a well-written textbook into a collective software development effort that is productive, effective, and, above all, captivating.
—Mihaela Sabin, University of New Hampshire, Manchester, USA