Practical Development Environments

Matthew B. Doar

  • 出版商: O'Reilly Media
  • 出版日期: 2005-10-03
  • 售價: $840
  • 語言: 英文
  • 頁數: 330
  • 裝訂: Paperback
  • ISBN: 0596007965
  • ISBN-13: 9780596007966

立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

Description:

This book doesn't tell you how to write faster code, or how to write code with fewer memory leaks, or even how to debug code at all. What it does tell you is how to build your product in better ways, how to keep track of the code that you write, and how to track the bugs in your code. Plus some more things you'll wish you had known before starting a project.

Practical Development Environments is a guide, a collection of advice about real development environments for small to medium-sized projects and groups. Each of the chapters considers a different kind of tool - tools for tracking versions of files, build tools, testing tools, bug-tracking tools, tools for creating documentation, and tools for creating packaged releases. Each chapter discusses what you should look for in that kind of tool and what to avoid, and also describes some good ideas, bad ideas, and annoying experiences for each area. Specific instances of each type of tool are described in enough detail so that you can decide which ones you want to investigate further.

Developers want to write code, not maintain makefiles. Writers want to write content instead of manage templates. IT provides machines, but doesn't have time to maintain all the different tools. Managers want the product to move smoothly from development to release, and are interested in tools to help this happen more often. Whether as a full-time position or just because they are helpful, all projects have toolsmiths: making choices about tools, installing them, and then maintaining the tools that everyone else depends upon. This book is especially for everyone who ends up being a toolsmith for his or her group.

 

Table of Contents:

list of figures

list of tables

list of examples

Preface

1. Introduction

     Developing Software Products

     Open and Closed Software Development

     Dirty Secrets of Software Projects

     What Does "Practical" Mean?

     A Personal Tools Quiz

2. Project Basics

     The Parts of a Project

     Software Configuration Management

     Building Software

     Testing Software

     Tracking Bugs

     Writing Documentation

     Releasing Products

     Maintenance

     Recommended Tools

               Modern Environments

               Classic Environments

               Future Environments

3. Project Concepts

     Preconstructed Development Environments

               SourceForge

               GForge

               CollabNet

               Savane

               BerliOS

               Improving PDEs

     Why Integration Is Helpful

     Why Automation Is Vital

     Automation Environments

               Shell Scripts and Batch Files

               Tinderbox

               Anthill

               CruiseControl

     Labeling Builds

     Naming Projects and Machines

               Choosing Project Names

               Choosing Machine Names

     Choosing New Tools

               Steps When Changing Tools

     Internationalization and Localization

     Authentication, Authorization, and Accounting

4. Software Configuration Management

     Why Do I Need SCM?

     What SCM Is and Is Not

     Drawbacks of SCM

     A Typical Day's Work with SCM

     SCM Annoyances

               Branches and Tags

               When to Branch? When to Tag?

               Naming Branches and Tags

               Merge Madness

               Security

               Access Wars

               Filenames to Avoid

               Backups and SCM

     SCM Tools

               CVS

               Subversion

               Arch

               Perforce

               BitKeeper

               ClearCase

               Visual SourceSafe

     Comparison of SCM Tools

     Wider Uses of SCM

     Checklist

5. Building Software

     How Software Gets Built

               The Different Stages of a Build

               A Typical Build File

     Build States: Virgin, Up-to-date, Changed, Interrupted, Clean

               Good Builds, Bad Builds

               Build States and Different Targets

               Build States in Practice

     Build Dependencies

               When Build Dependencies Go Wrong

               How Build Dependencies Change

     Common Build Problems

               Slow Builds

     Build Tools

               Shell Scripts and Batch Files

               make

               GNU Autotools

               Ant

               Jam

               SCons

               Custom Build Tools

     Comparison of Build Tools

     Changing Your Build Tool

     Checklist

6. Testing Software

     Different Kinds of Tests

               Unit Tests

               System Tests

               Customer Tests

               Other Tests

     Why Automate Your Tests?

     Evaluating Test Environments

               Preparing to Test

               Running the Tests

               After the Tests

               Good Test Reports

     Test Environments

               Shell Scripts and Batch Files

               xUnit

               DejaGnu

               SilkTest

     Types of Test Tools

               Memory Analyzers

               Coverage Tools

               Performance Tools

               Static Code Analyzers

     The Difficult Parts of Testing

               Faults of Omission

               Capturing Output

               Using Multiple Machines

               Only a Developer Can Do That!

               Accessibility Testing

     Checklist

7. Tracking Bugs

     Tool Requirements

     Bug Tracking Tools

               Spreadsheets

               Different Server Technologies

               Bugzilla

               GNATS

               FogBugz

               JIRA

               TestTrack

               Custom Bug Tracking Tools

     Bug Tracking Annoyances

               Multiplying Products

               Cleaning Up

               One Bug, Multiple Releases

               Severity Inflation

               Identifying the Right Area

               Customizing the Bug Tracking System

               Overloading Fields

               Bug History

               Bug Statistics

               Writing an Effective Bug Report

     Integrating with SCM Tools

     Checklist

8. Documentation Environments

     Technical Documentation

               Is Documentation a Separate Product?

               Writing Documentation Is Like Writing Code

     Documents and SCM

     File Formats for Documentation

               File Formats for Customers

     Documentation Environments

               Raw Text

               FrameMaker

               XML: DocBook and OpenOffice

               Microsoft Word

     More File Formats

     Automated Production of Documentation

     Bad Ideas for Documentation

               Releasing the Documentation Separately

               Ransom-Note Cut and Paste

               Old Versions That Never Die

               Funky Filenames

               Screenshots

     Internal Project Documentation

     Checklist

9. Releasing Products

     Overview

     Before the Release

               System Requirements

               Build Numbers

               Release Numbering

               Release Information

               Upgrading

               Legal Licenses

               License Keys

               Securing Your Releases

               Quick Fixes and Engineering Specials

     Creating the Release

               Automated Releases

               Automating Release Information

               Developers as Customers

     Packaging Formats

               Unix

               Windows

     Installation Tools

               Requirements

               Unix

               Windows

     Installation Irritations-Ship Happens!

     After the Release

     Checklist

10. Maintenance

     Maintaining an Environment

               Migrating Your Data

     What Is Product Maintenance?

               Developing for Easier Maintenance

     Product Maintenance Tasks

               Understanding Code

               Reproducing a Build

               Handling Product Name Changes

               Handling Company Name Changes

               Handling Copyright Date Changes

     Product Maintenance and Development Environments

               SCM

               Building

               Testing

               Bug Tracking

               Documentation

               People and Politics

     Cleaning Up Your Environment

     Checklist

11. Project Communication

     Tools for Communication

     A Project Web Site

               Access Control

     Different Areas for the Project Web Site

               Home Page

               Getting Started

               Specifications

               SCM

               Building

               Testing

               Bug Tracking

               Documentation

               Releases

               Maintenance

               Support

               Project Management

               About the Web Site

     Creating the Web Site

               Static Web Pages

               Dynamic Web Pages

               Indexing and Searching

     Avoiding Content Rot

12. Politics and People

     The Role of the Toolsmith

               How to Choose a Toolsmith

     When Good Projects Go Bad

     Awkward People

     Twisted Communications

     Commit Rights

     Automation Discipline

     What Do Developers Really Want?

     An Upbeat Ending

A. How Tools Scale

     Scaling of Compilers

               How the Compiler gcc Scales

     Scaling of Build Tools

               Comparing Recursive and Included make

B. Resources

     Online

               Content

               Discussions

               Directories

     Magazines

     Books

               Automation and General Tools

               Software Configuration Management

               Building Software

               Testing Software

               Tracking Bugs

               Documentation Environments

               Releasing Products

               Maintenance

               Politics and People

               Developing Software

               General Design

     Conferences

     University and College Courses

index