Software Development – Table of Content
Building Reliable Systems
First edition; 416 pages
ISBN: 0-13-081246-3
( by: Marc Hamilton )
Table of Content
Contents
Dedication
Acknowledgements
Foreword
Introduction
Part 1: Background Chapter 1: Ten Commandments of Successful Software Development
Chapter 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
Chapter 3: Software Development Defined
- Software Life Cycle Overview
- Programming Paradigms
- Procedural Software
- Modular Software
- Object-Oriented Software
- Distributed and Concurrent Software
- Development Environments
- System Modeling Tools
- Software Architectures
Chapter 4: Trends in Software Development
- The Universal DBMS
- Packaged ERP Software and its Customization
- Webtop Computing and Platform Independence
- Offshore Development
- Streamlining IT Infrastructure
Part 2: People Chapter 5: Building a Winning Software Development Team
- The Developer Shortage
- Software Development Job Descriptions
- Director of Software Development
- Chief Software Architect
- Software Development Manager
- Senior Software Engineer
- Software Engineer III
- Software Engineer II
- Software Engineer I
- Toolsmith
- Webmaster
- Database Administrator
- System Administrator
- Skills Tracking
- Sample C++ Programming Self-Evaluation
- Sample Java Programming Self-Evaluation
- Behavioral Value Assessment Interview
- Value #1: Initiative
- Value #2: Dedication
- Value #3: Flexibility
- Value #4: Respect
- Your Software Development Partners
Chapter 6: Organizing for Success
- The Dimensions of an Organization
- The Importance of Organizational Structure
- Streamlining Bureaucracy
- Sample Organizational Structures
- Project Centered Organizations
- Department Centered Organizations
- Matrix Organizations
- Product Line Organizations
- Recurring Organizational Themes
- Creating a Software Process Team
- Balancing Centralized versus Decentralized Organization
- Managing Virtual Teams
- Thirteen Organizational Structure Mistakes
Chapter 7: Recruiting The Best Talent
- How to Staff for Growth
- Internal Referrals
- Campus Recruiting
- Agencies
- Newspapers and Other Media
- Job Fairs
- Internet
- Acquisitions
- What to Look for and How to Look for It
- Technical Skills
- Values
Chapter 8: Retaining the Best Talent
- Compensation Philosophy
- Total Compensation Strategy
- Base Pay
- Traditional Benefits
- Creative Benefits
- Short-Term Incentives
- Long-Term Incentives
- Job Rotations
- Mentoring
- HR Issues
Chapter 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?
Part 3: Processes Chapter 10: The Software Life Cycle
- The Capability Maturity Model for Software
- Level One: Initial
- Level Two: Repeatable
- Level Three: Defined
- Level Four: Managed
- Level Five: Optimized
- Requirements Analysis and Definition
- System Architecture and Design
- Test Plan Design
- Implementation
- Validation and Testing
- Unit Testing
- Subsystem and System Testing
- Black-Box and White-Box Testing
- Alpha and Beta Testing
- Stress Testing
- Production Acceptance
Chapter 11: Rapid Application Development
- Why Another Methodology?
- Strategic Planning
- Product Definition
- Product Design
- Product Development
- Product Delivery
Chapter 12: Software Productivity, Metrics, and Quality
- Code Metrics
- McCabe Metrics
- The Impact of Workspace on Productivity
- Make versus Buy
- The Value of Domain Knowledge
- The Importance of Standards
- Enterprise-Wide Architecture Standards
- Coding Standards
- Help Standards
Chapter 13: Web-Centric Production Acceptance
- The WCPA Chronicle
- The WCPA Questionnaire
- Personalized Communications
- Internal Support Agreements (ISAs)
- Roles and Responsibilities
- Internet Engineering
- Security Engineering
- Network Engineering
- WebTone Engineering
- Technical Support
- Hardware Support
- Applications Support
- The WCPA Process
- What IT Should/Should Not Support
Part 4: Technology Chapter 14: Programming Language Features
- C
- C++
- FORTRAN
- Ada
- BASIC
- Java
- COBOL
- LISP
- Scripting Languages (Perl, awk, Tcl, ksh)
Chapter 15:Software Development Tools
- Interactive Development Environments
- BeanMachine
- Builder Xcessory Pro
- CodeWarrior Professional
- Java Workshop
- JBuilder
- SuperCede for Java
- UIM/X
- Visual Cafe for Java
- VisualAge
- Visual J++
- GUI Development Tools and Libraries
- Chart.J
- Jviews
- JWave
- Database Tools
- Blend.J
- CocoBase
- Developer/2000
- GemStone/J
- Jaguar CTS
- NetDynamics
- Testing Tools
- JavaScope
- Pegasus
- WebLoad
- Web Authoring Tools
- Code Editors
- Compilers
- Debuggers
- Code Analysis
- Performance Analysis Tools
- Component Tools
- CASE Tools
- Version and Baseline Control
Chapter 16: Selecting Your Hardware Environment
- Developer Desktops
- Development Servers
- File Server Benchmarks
- Compile Server Benchmarks
- Database Server Benchmarks
- Web Server Benchmarks
- Network Infrastructure
- Disk Storage Architecture
- Single Function versus General Purpose Servers
- Architecture Issues Impacting Software Design
- SMP Architectures
- MPP
- NUMA
- Clustering
- Highly Available and Fault-Tolerant Systems
- Relationship of Hardware to OS and Compiler Design
Chapter 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
Chapter 18:Performance Optimization Techniques
- How Much Performance Do You Need?
- How to Identify Bottlenecks
- Disk Bottlenecks
- CPU Bottlenecks
- Memory Bottlenecks
- Network Bottlenecks
Chapter 19: Multithreaded Programming
- Multithreading Defined
- Synchronization Objects
Chapter 20: Developing for the Web
- Web Browsers and Servers
- Proxy Web Servers
- CGI Programming
- Java Applets
- Enterprise JavaBeans
- Other Java Enterprise APIs
- Java Servlet API
- JavaServer Pages (JSP)
- Java Messaging Service (JMS) API
- Java Naming and Directory (JNDI) API
Chapter 21: Distributed Applications with CORBA, RMI, and DCOM
- Distributed Objects Using CORBA
- CORBA Services
- CORBA Facilities
- CORBA Application Objects
- A CORBA Client-Server Example
- DCOM Objects
- Distributed Java Applications with RMI
Chapter 22: A Sneak Peak at Jini Technology
- Jini Infrastructure
- Discover and Join
- Lookup
- Distributed Programming
- Leasing
- Distributed Events
- Distributed Transactions
- Millennium versus Jini
Appendix A: Software Development Frequently Asked Questions
- General Questions
- People Related Questions
- Process Related Questions
- Technology Related Questions
- Software History and Trivia Questions
Appendix B: Java Coding Standard Template
- Introduction
- Source Files
- Source File Naming
- Source File Organization
- Naming Conventions
- Package Naming
- Class/Interface Naming
- Field Naming
- Method Naming
- Statement Label Naming
- White Space Usage
- Blank Lines
- Blank Spaces
- Indentation
- Continuation Lines
- Comments
- Documentation Comments
- Block Comments
- Single-line Comments
- Classes
- Class Body Organization
- Interfaces
- Interface Body Organization
- Statements
- Simple Statements
- Compound Statements
- Labeled Statements
Appendix C: Sample Internal Support Agreement (ISA)
- Root Authority
- Server Availability Hours
- Backups
- Support Responsibility
- Function of Each Server
- Special Requests
Appendix D: How This Book Was Written
Bibliography
Glossary