Skip to content

Software Development An Open Source Approach

Best in textbook rentals since 2012!

ISBN-10: 143981290X

ISBN-13: 9781439812907

Edition: 2011

Authors: Allen Tucker, Ralph Morelli, Chamindra de Silva

List price: $146.00
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Description:

Focusing on projects that real-world clients value, this text outlines the principles and practice of software development. It presents agile techniques, modern collaboration tools, continuous client involvement, and teamwork as central themes. Relying on recent experiences teaching software development, the authors provide a framework that can be replicated for a one-semester course at many institutions. This innovative text uses hands-on projects to teach students how to develop real-world software in a team, emphasizing how effective collaboration results in quality software. Teachers receive a complete package of software development course materials, including required documents.
Customers also bought

Book details

List price: $146.00
Copyright year: 2011
Publisher: CRC Press LLC
Publication date: 1/19/2011
Binding: Hardcover
Pages: 400
Size: 6.34" wide x 9.33" long x 1.10" tall
Weight: 1.540
Language: English

List of Figures
List of Tables
Preface
Acknowledgments
Authors
Overview and Motivation
Software
Types of Software
The Changing Landscape
Who Are the Developers?
Strategic Choices
Free and Open Source Software (FOSS)
Origins and Growth
Licensing
Worldwide Impact
Humanitarian FOSS
Two Case Studies
RMH Homebase
Sahana
Summary
Exercises
Working with a Project Team
Key FOSS Activities
Agile Development
Using Patterns
Reading and Writing Code
Documentation
On-Line Help
Client-Oriented vs Community-Oriented Projects
Project Evolution
Similarities and Differences
Working on a Client-Oriented Project
Members, Roles, and Tasks
Team Dynamics
Scheduling, Milestones, and To-Do Lists
Joining a Community-Oriented Project
Project Selection
First Contact with the Project
Norms for Good Citizenship
Becoming a User First
Summary
Exercises
Using Project Tools
Collaboration Tools
Asynchronous Communication
Synchronous Communication
Shared Documents
Code Management Tools
The IDE
The Software Stack
The Version Control System
The Bug Tracker
Run-Time System Constraints
Performance
Web Hosting
Licensing
Platform
Summary
Exercises
Software Architecture
Architectural Patterns
Layers, Cohesion, and Coupling
Using Metrics to Evaluate Cohesion and Coupling
Security
Architectural Vulnerabilities
User-Level Security
Concurrency, Race Conditions, and Deadlocks
Summary
Exercises
Working with Code
Bad Smells and Metrics
Identifying Bad Smells
Software Metrics
Refactoring
Example 1: Removing Useless Functions
Example 2: Removing a Layering Violation
Testing
Unit Testing Tools
Test Case Design
A Strategy for Sequencing Unit Tests
Debugging
Tool Use vs Developer Skill
Example 1: A User Interface Bug
Example 2: A Multi-Level Bug
Extending the Software for a New Project
A New Use Case
Impact on the Code Base
Team Discussions
Summary
Exercises
Developing the Domain Classes
Understanding the Current System
Reading a Design Document
Reading Code
Examining the Domain Classes
Adding New Features
Top-Down Analysis/Bottom-Up Development
Modifying the Domain Classes
Documentation and Bulletproofing
Class Design Principles and Practice
Using What's Already There
Adding a New Domain Class
Managing the Ripple Effect
Unit Testing the New Code
Refactoring the New Code Base
Summary
Exercises
Developing the Database Modules
Design Principles and Practice
Database Creation
Connecting the Program to the Database
Tables
Normalization and Keys
Backup and Recovery
Working with a Database
Table Creation
Table Searching
Table Insertion, Deletion, and Updating
Database Security and Integrity
Database-Level Permissions
User-Level Permissions
Controlling Concurrency
Adding New Software Features: Database Impact
Items 1 and 9d: Volunteer Status and Application
Item 3: Calendar View
Summary
Exercises
Developing the User Interface
Design Principles and Practice
The Model-View-Controller Pattern
Sessions, Query Strings, and Global Variables
Ensuring Security at the User Interface
Working with Code
Reading Deeply
Debugging as a Community Activity
Adding New Features: User Interface Impact
Item 1: Volunteer Status
Item 2: Make Active/Inactive
Item 3: Calendar View
Summary
Exercises
User Support
Technical Writing
Knowing Your Audience
Principles of Good Writing
Types of User Support
On-Line Help
Reference Manuals
Open Discussion Forums
User Training and Feedback
Example: RMH Homebase On-Line Help
Help and the Code Base
Summary
Exercises
Project Governance
Origins and Evolution
Starting a Client-Oriented Project
Quality Assessment
Evolving into a Democratic Meritocracy
Incubation
Organization
Decision Making and Conflict Resolution
Domain Constraints
Releasing Code
Licensing
Finding a Project Host
Release Strategies
Summary
Exercises
New Project Conception
Requirements Gathering
Domain Analysis
User Stories
Use Cases
Initial Design
Domain Classes
User Interface
Performance and Platform
System Architecture
Design Alternatives
Design Document
Summary
Exercises
Appendices
Details of the Case Study
Requirements
Domain Analysis
Use Cases
System Requirements
Design
Goals
Software Architecture
Domain Classes
Database Design
GUI Design
Implementation Schedule
User-System Interaction
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 Features
References
Index