Software Development: Building Reliable Systems

Software Development Building Reliable Systems

Acknowledgments

Figures

Tables

Foreword

Introduction

     Who Should Read This Book

     How to Read This Book

I: Background

1. Ten Commandments of Successful Software Development

     #1 Thou shalt start development with software requirements

     #2 Thou shalt honor thy users and communicate with them often

     #3 Thou shalt not allow unwarranted requirements changes

     #4 Thou shalt invest up front in a software architecture

     #5 Thou shalt not confuse products with standards

     #6 Thou shalt recognize and retain your top talent

     #7 Thou shalt understand object-oriented technology

     #8 Thou shalt design web-centric applications and reusable components

     #9 Thou shalt plan for change

     #10 Thou shalt implement and always adhere to a production acceptance process

2. Software Development Has Always Been Difficult

     Software's Difficult Past

     The Year 2000 and Other Similar Problems

     It Is Hard to Structure Development Organizations for Success

     It Is Hard to Schedule and Budget Correctly

     It Is Hard to Select the Right Language and Development Tools

     It Is Hard to Select the Right OS and Hardware Platform

     It Is Hard to Accomplish a Production Rollout

3. Software Development Defined

     Software Life Cycle Overview

     Programming Paradigms

     Development Environments

     System Modeling Tools

     Software Architectures

4. Trends in Software Development

     The Universal DBMS

     Packaged ERP Software and its Customization

     Webtop Computing and Platform Independence

     Offshore Development

     Streamlining IT Infrastructure

II: People

5. Building a Winning Software Development Team

     The Developer Shortage

     Software Development Job Descriptions

     Skills Tracking

     Behavioral Value Assessment Interview

     Your Software Development Partners

6. Organizing for Success

     The Dimensions of an Organization

     The Importance of Organizational Structure

     Streamlining Bureaucracy

     Sample Organizational Structures

7. Recruiting The Best Talent

     How to Staff for Growth

     What to Look for and How to Look for It

8. Retaining the Best Talent

     Compensation Philosophy

     Total Compensation Strategy

     HR Issues

9. Successfully Transitioning Developers

     Why Transition Developers

     Mainframe to Client-Server

     Mainframe to Web-Centric

     Client-Server to Web-Centric

     Procedural to Object-Oriented

     Language-Specific Transition Issues

     Does Transitioning Work?

     Project 1:

     Project 2:

     Project 3:

III: Processes

10. The Software Life Cycle

     The Capability Maturity Model for Software

     Requirements Analysis and Definition

     System Architecture and Design

     Test Plan Design

     Implementation

     Validation and Testing

11. Rapid Application Development

     Why Another Methodology?

     Strategic Planning

     Product Definition

     Product Design

     Product Development

     Product Delivery

12. Software Productivity, Metrics, and Quality

     Code Metrics

     The Impact of Workspace on Productivity

     Make versus Buy

     The Value of Domain Knowledge

     The Importance of Standards

13. Web-Centric Production Acceptance

     The WCPA Chronicle

     The WCPA Questionnaire

     Personalized Communications

     Internal Support Agreements (ISAs)

     Roles and Responsibilities

     The WCPA Process

     What IT Should/Should Not Support

IV: Technology

14. Programming Language Features

     C

     C++

     FORTRAN

     Ada

     BASIC

     Java

     COBOL

     LISP

     Scripting Languages (Perl, awk, Tcl, ksh)

15. Software Development Tools

     Interactive Development Environments

     GUI Development Tools and Libraries

     Database Tools

     Testing Tools

     Web Authoring Tools

     Code Editors

     Compilers

     Debuggers

     Code Analysis

     Performance Analysis Tools

     Component Tools

     CASE Tools

     Version and Baseline Control

16. Selecting Your Hardware Environment

     Developer Desktops

     Development Servers

     Network Infrastructure

     Disk Storage Architecture

     Single Function versus General Purpose Servers

     Architecture Issues Impacting Software Design

17. Component-Based Software Development

     The History of Components

     Components versus Object-Oriented Technology

     Role of Visual Programming in Component Software

     Component Development Using JavaBeans

18. Performance Optimization Techniques

     How Much Performance Do You Need?

     How to Identify Bottlenecks

19. Multithreaded Programming

     Multithreading Defined

     Synchronization Objects

20. Developing for the Web

     Web Browsers and Servers

     Proxy Web Servers

     CGI Programming

     Java Applets

     Enterprise JavaBeans

     Other Java Enterprise APIs

21. Distributed Applications with CORBA, RMI, and DCOM

     Distributed Objects Using CORBA

     A CORBA Client-Server Example

     DCOM Objects

     Distributed Java Applications with RMI

22. A Sneak Peak at Jini Technology

     Jini Infrastructure

     Discover and Join

     Lookup

     Distributed Programming

     Millennium versus Jini

A. Software Development Frequently Asked Questions

     General Questions

     People Related Questions

     Process Related Questions

     Technology Related Questions

     Software History and Trivia Questions

B. Java Coding Standard Template

     Introduction

     Source Files

     Naming Conventions

     White Space Usage

     Comments

     Documentation Comments

     Block Comments

     Single-line Comments

     Classes

     Class Body Organization

     Interfaces

     Interface Body Organization

     Statements

C. Sample Internal Support Agreement (ISA)

     Root Authority

     Server Availability Hours

     Backups

     Support Responsibility

     Function of Each Server

     Special Requests

D. How This Book Was Written

Bibliography

Glossary

Категории