80% of software projects fail—here's why the other 20% succeed!
Software Development is the most thorough, realistic guide to "what works" in software development—and how to make it happen in your organization. Leading consultant Marc Hamilton tackles all three key components of successful development: people, processes, and technology.
From streamlining infrastructures to retraining programmers, choosing tools to implementing service-level agreements, Hamilton unifies all of today's best practices—in management, architecture, and software engineering. There's never been a more comprehensive blueprint for software success.
Discover "The Ten Commandments of Software Development"
Build a winning software development team, organize it for success - and retain your best talent
Create a software architecture that maps to business goals and serves as a foundation for successful development
Define processes that streamline component and Web-based development projects
Leverage the advantages of object-oriented techniques throughout the entire lifecycle
Make the most of Java, JavaBeans, and Jini technology
Learn the best ways to measure software quality and productivity—and improve them
Software Development is ruthlessly realistic and remarkably accessible—for managers and technical professionals alike. Best of all, its techniques can be applied to any project or organization, large or small. Ready to build software that meets all its goals? This book will get you there.
Table of Contents
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
- 4. Trends in Software Development
- 1. Ten Commandments of Successful Software Development
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
- Database Administrator
- System Administrator
- Sample C++ Programming Self-Evaluation
- Sample Java Programming Self-Evaluation
- 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
- Project Centered Organizations
- Recurring Organizational Themes
Thirteen Organizational Structure Mistakes
- #1 Combining software development and operations into a single organization.
- #2 Organizing software technology specialists by project.
- #3 Organizing software technology specialists by application domain (i.e., financial, manufacturing, etc.).
- #4 Organizing software developers by delivery platform (i.e., Windows, Unix, and mainframe).
- #5 Separating software development and software maintenance groups.
- #6 Representing projects in the formal organizational structure versus defining project teams that cut across organizational boundaries.
- #7 Organizing software developers into long-term and short-term development groups.
- #8 Designing organizations that need "super-developers" to succeed.
- #9 Designing organizations that tolerate underachievers.
- #10 Designing organizations that reward empire building.
- #11 Setting organizational goals that compete against each other for customer satisfaction.
- #12 Organizing around individuals versus personality types.
- #13 Mandating organizational changes from the top down.
- 7. Recruiting The Best Talent
- 8. Retaining the Best Talent
- 9. Successfully Transitioning Developers
- 5. Building a Winning Software Development Team
10. The Software Life Cycle
- The Capability Maturity Model for Software
- Requirements Analysis and Definition
- System Architecture and Design
- Test Plan Design
- Validation and Testing
- 11. Rapid Application Development
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
- 10. The Software Life Cycle
- 14. Programming Language Features
15. Software Development Tools
- Interactive Development Environments
- GUI Development Tools and Libraries
- Database Tools
- Testing Tools
- Web Authoring Tools
- Code Editors
- 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
- 18. Performance Optimization Techniques
- 19. Multithreaded Programming
- 20. Developing for the Web
- 21. Distributed Applications with CORBA, RMI, and DCOM
- 22. A Sneak Peak at Jini Technology
- A. Software Development Frequently Asked Questions
B. Java Coding Standard Template
- Source Files
- Naming Conventions
- White Space Usage
- Documentation Comments
- Block Comments
- Single-line Comments
- Class Body Organization
- Interface Body Organization
- C. Sample Internal Support Agreement (ISA)
- D. How This Book Was Written
- Title: Software Development: Building Reliable Systems
- Release date: March 1999
- Publisher(s): Prentice Hall
- ISBN: 0130812463