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.
Review By: Garry Archer 08/05/2011Software Development: An Open Source Approach was a fun book to read. I had never delved that deep into “free, off-the-shelf software” (FOSS) before, but like most programmers, I have used it. It was a great idea for the author to incorporate a project that the reader can follow throughout its whole progression while navigating through the many stages of development laid out in the book. The book is new, exciting, and should be around for some time. The many programs and programming languages may change, but the approach to using them will remain constant.
Even if you're not a developer or software designer, the insight the book offers in relation to designing, creating, testing, and using software—whether FOSS or commercial—is a valuable tool to enhance your knowledge, skills, and abilities. However, I do feel that the book is aimed more at designers and developers.
With the hands-on projects in the book, you have the opportunity to use, modify, test, debug, and see the inner workings without having to simply imagine what is being described. Though the book deals with FOSS, it applies to commercial or proprietary software development as well. I especially like the chapter on “Developing Database Modules,” which offers a down-to-earth explanation that even the layman can digest.
The great thing about the FOSS community is that it comprises many contributors—unlike the poor sod who is stuck alone dealing with all issues of designing, developing, debugging, and testing a new application. This takes longer, and the brainstorming group is limited to one.
I like the summary lists the author provides in the various chapters. They are reminiscent of how help files are laid out, with concise, brief explanations.
FOSS evangelists Allan Tucker, Ralph Morelli, and Chamindra De Silva give many examples, exercises, and references throughout. Some sections run long, but I will still recommend the book to my fellow programmers and colleagues. Read the book and remember that the ability to download and participate in an actual FOSS project like the RMH Homebase will offer a great experience that you may strive for years to find elsewhere.