1st Edition

Software Development An Open Source Approach

    400 Pages 153 B/W Illustrations
    by CRC Press

    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.

    Web Resource

    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

    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
    Collaboration Tools
    Code Management Tools
    Run-Time System Constraints

    Software Architecture
    Architectural Patterns
    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

    User Support
    Technical Writing
    Types of User Support
    Example: RMH Homebase On-Line Help

    Project Governance
    Origins and Evolution
    Evolving into a Democratic Meritocracy
    Releasing Code

    New Project Conception
    Requirements Gathering
    Initial Design

    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