| |
| |
Foreword | |
| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
| |
Introduction and Definitions of Software Best Practices | |
| |
| |
What Are "Best Practices" and How Can They Be Evaluated? | |
| |
| |
Multiple Paths for Software Development, Deployment, and Maintenance | |
| |
| |
Paths for Software Deployment | |
| |
| |
Paths for Maintenance and Enhancements | |
| |
| |
Quantifying Software Development, Deployment, and Maintenance | |
| |
| |
Critical Topics in Software Engineering | |
| |
| |
Overall Ranking of Methods, Practices, and Sociological Factors | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
Overview of 50 Software Best Practices | |
| |
| |
| |
Best Practices for Minimizing Harm from Layoffs and Downsizing | |
| |
| |
| |
Best Practices for Motivation and Morale of Technical Staff | |
| |
| |
| |
Best Practices for Selection and Hiring of Software Personnel | |
| |
| |
| |
Best Practices for Appraisals and Career Planning for Software Personnel | |
| |
| |
| |
Best Practices for Early Sizing and Scope Control of Software Applications | |
| |
| |
| |
Best Practices for Outsourcing Software Applications | |
| |
| |
| |
Best Practices for Using Contractors and Management Consultants | |
| |
| |
| |
Best Practices for Selecting Software Methods, Tools, and Practices | |
| |
| |
| |
Best Practices for Certifying Methods, Tools, and Practices | |
| |
| |
| |
Best Practices for Requirements of Software Applications | |
| |
| |
| |
Best Practices for User Involvement in Software Projects | |
| |
| |
| |
Best Practices for Executive Management Support of Software Applications | |
| |
| |
| |
Best Practices for Software Architecture and Design | |
| |
| |
| |
Best Practices for Software Project Planning | |
| |
| |
| |
Best Practices for Software Project Cost Estimating | |
| |
| |
| |
Best Practices for Software Project Risk Analysis | |
| |
| |
| |
Best Practices for Software Project Value Analysis | |
| |
| |
| |
Best Practices for Canceling or Turning Around Troubled Projects | |
| |
| |
| |
Best Practices for Software Project Organization Structures | |
| |
| |
| |
Best Practices for Training Managers of Software Projects | |
| |
| |
| |
Best Practices for Training Software Technical Personnel | |
| |
| |
| |
Best Practices for Use of Software Specialists | |
| |
| |
| |
Best Practices for Certifying Software Engineers, Specialists, and Managers | |
| |
| |
| |
Best Practices for Communication During Software Projects | |
| |
| |
| |
Best Practices for Software Reusability | |
| |
| |
| |
Best Practices for Certification of Reusable Materials | |
| |
| |
| |
Best Practices for Programming or Coding | |
| |
| |
| |
Best Practices for Software Project Governance | |
| |
| |
| |
Best Practices for Software Project Measurements and Metrics | |
| |
| |
| |
Best Practices for Software Benchmarks and Baselines | |
| |
| |
| |
Best Practices for Software Project Milestone and Cost Tracking | |
| |
| |
| |
Best Practices for Software Change Control Before Release | |
| |
| |
| |
Best Practices for Configuration Control | |
| |
| |
| |
Best Practices for Software Quality Assurance (SQA) | |
| |
| |
| |
Best Practices for Inspections and Static Analysis | |
| |
| |
| |
Best Practices for Testing and Test Library Control | |
| |
| |
| |
Best Practices for Software Security Analysis and Control | |
| |
| |
| |
Best Practices for Software Performance Analysis | |
| |
| |
| |
Best Practices for International Software Standards | |
| |
| |
| |
Best Practices for Protecting Intellectual Property in Software | |
| |
| |
| |
Best Practices for Protecting Against Viruses, Spyware, and Hacking | |
| |
| |
| |
Best Practices for Software Deployment and Customization | |
| |
| |
| |
Best Practices for Training Clients or Users of Software Applications | |
| |
| |
| |
Best Practices for Customer Support of Software Applications | |
| |
| |
| |
Best Practices for Software Warranties and Recalls | |
| |
| |
| |
Best Practices for Software Change Management After Release | |
| |
| |
| |
Best Practices for Software Maintenance and Enhancement | |
| |
| |
| |
Best Practices for Updates and Releases of Software Applications | |
| |
| |
| |
Best Practices for Terminating or Withdrawing Legacy Applications | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
A Preview of Software Development and Maintenance in 2049 | |
| |
| |
Introduction | |
| |
| |
Requirements Analysis Circa 2049 | |
| |
| |
Design Circa 2049 | |
| |
| |
Software Development Circa 2049 | |
| |
| |
User Documentation Circa 2049 | |
| |
| |
Customer Support In 2049 | |
| |
| |
Deployment and Customer Training in 2049 | |
| |
| |
Maintenance and Enhancement in 2049 | |
| |
| |
Software Outsourcing in 2049 | |
| |
| |
Software Package Evaluation and Acquisition in 2049 | |
| |
| |
Technology Selection and Technology Transfer in 2049 | |
| |
| |
Enterprise Architecture and Portfolio Analysis in 2049 | |
| |
| |
A Preview of Software Learning in 2049 | |
| |
| |
Due Diligence in 2049 | |
| |
| |
Certification and Licensing In 2049 | |
| |
| |
Software Litigation in 2049 | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
How Software Personnel Learn New Skills | |
| |
| |
Introduction | |
| |
| |
The Evolution of Software Learning Channels | |
| |
| |
What Topics Do Software Engineers Need to Learn Circa 2009? | |
| |
| |
Software Engineering Specialists Circa 2009 | |
| |
| |
Varieties of Software Specialization Circa 2009 | |
| |
| |
Approximate Ratios of Specialists to General Software Personnel | |
| |
| |
Evaluating Software Learning Channels Used by Software Engineers | |
| |
| |
Software Areas Where Additional Education Is Needed | |
| |
| |
New Directions in Software Learning | |
| |
| |
Summary and Conclusions | |
| |
| |
Curricula of Software Management and Technical Topics | |
| |
| |
Readings and References | |
| |
| |
| |
Software Team Organization and Specialization | |
| |
| |
Introduction | |
| |
| |
Quantifying Organizational Results | |
| |
| |
The Separate Worlds of Information Technology and Systems Software | |
| |
| |
Cotocatfon vs. Distributed Development | |
| |
| |
The Challenge of Organizing Software Specialists | |
| |
| |
Software Organization Structures from Small to Large | |
| |
| |
One-Person Software Projects | |
| |
| |
Pair programming for software development and maintenance | |
| |
| |
Self-Organizing Agile Teams | |
| |
| |
Team Software Process (TSP) Teams | |
| |
| |
Conventional Departments with Hierarchical Organization Structures | |
| |
| |
Conventional Departments with Matrix Organization Structures | |
| |
| |
Specialist Organizations in Large Companies | |
| |
| |
Software Maintenance Organizations | |
| |
| |
Customer Support Organizations | |
| |
| |
Software Test Organizations | |
| |
| |
Software Quality Assurance (SQA) Organizations | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
Project Management and Software Engineering | |
| |
| |
Introduction | |
| |
| |
Software Sizing | |
| |
| |
Software Progress and Problem Tracking | |
| |
| |
Software Benchmarking | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
Requirements, Business Analysis, Architecture, Enterprise Architecture, and Design | |
| |
| |
Introduction | |
| |
| |
Software Requirements | |
| |
| |
Statistical Analysis of Software Requirements | |
| |
| |
Business Analysis | |
| |
| |
Software Architecture | |
| |
| |
Enterprise Architecture | |
| |
| |
Software Design | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
Programming and Code Development | |
| |
| |
Introduction | |
| |
| |
A Short History of Programming and Language Development | |
| |
| |
Why Do We Have More than 2500 Programming Languages? | |
| |
| |
Exploring the Popularity of Programming Languages | |
| |
| |
How Many Programming Languages Are Really Needed? | |
| |
| |
Creating a National Programming Language Translation Center | |
| |
| |
Why Do Most Applications Use Between 2 and 15 Programming Languages | |
| |
| |
How Many Programmers Use Various Programming Languages? | |
| |
| |
What Kinds of Bugs or Defects Occur in Source Code? | |
| |
| |
Logistics of Software Code Defects | |
| |
| |
Preventing and Removing Defects from Application Source Code | |
| |
| |
Forms of Programming Defect Prevention | |
| |
| |
Forms of Programming Defect Removal | |
| |
| |
Economic Problems of the "Lines of Code" Metric | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
| |
Software Quality: The Key to Successful Software Engineering | |
| |
| |
Introduction | |
| |
| |
Defining Software Quality | |
| |
| |
Measuring Software Quality | |
| |
| |
Defect Prevention | |
| |
| |
Software Defect Removal | |
| |
| |
Software Quality Specialists | |
| |
| |
Summary and Conclusions on Software Specialization | |
| |
| |
The Economic Value of Software Quality | |
| |
| |
Summary and Conclusions | |
| |
| |
Readings and References | |
| |
| |
Index | |