商品簡介
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
作者簡介
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.
目次
Overview and Motivation Software 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 Security Concurrency, Race Conditions, and Deadlocks
Working with Code Bad Smells and Metrics Refactoring Testing Debugging 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 ModulesDesign 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 CodeAdding 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 StudyRequirements Design
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
References
A Summary and Exercises appear at the end of each chapter.