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