Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies

Hardcover
from $0.00

Author: Capers Jones

ISBN-10: 007162161X

ISBN-13: 9780071621618

Category: Software Engineering

Proven techniques for software engineering success\ This in-depth volume examines software engineering topics that are not covered elsewhere: the question of why software engineering has developed more than 2,500 programming languages; problems with traditional definitions of software quality; and problems with common metrics, "lines of code," and "cost per defect" that violate standard economic assumptions. The book notes that a majority of "new" projects are actually replacements for legacy...

Search in google:

Proven techniques for software engineering successThis in-depth volume examines software engineering topics that are not covered elsewhere: the question of why software engineering has developed more than 2,500 programming languages; problems with traditional definitions of software quality; and problems with common metrics, "lines of code," and "cost per defect" that violate standard economic assumptions. The book notes that a majority of "new" projects are actually replacements for legacy applications, illustrating that data mining for lost requirements should be a standard practice. Difficult social engineering issues are also covered, such as how to minimize harm from layoffs and downsizing.Software Engineering Best Practices explains how to effectively plan, size, schedule, and manage software projects of all types, using solid engineering procedures. It details proven methods, from initial requirements through 20 years of maintenance. Portions of the book have been extensively reviewed by key engineers from top companies, including IBM, Microsoft, Unisys, and Sony. Manage Agile, hierarchical, matrix, and virtual software development teams Optimize software quality using JAD, OFD, TSP, static analysis, inspections, and other methods with proven success records Use high-speed functional metrics to assess productivity and quality levels Plan optimal organization, from small teams through more than 1,000 personnel

Foreword xvAcknowledgments xviiIntroduction xixChapter 1 Introduction and Definitions of Software Best Practices 1What Are "Best Practices" and How Can They Be Evaluated? 7Multiple Paths for Software Development, Deployment, and Maintenance 10Paths for Software Deployment 12Paths for Maintenance and Enhancements 14Quantifying Software Development, Deployment, and Maintenance 16Critical Topics in Software Engineering 19Overall Ranking of Methods, Practices, and Sociological Factors 23Summary and Conclusions 36Readings and References 36Chapter 2 Overview of 50 Software Best Practices 391 Best Practices for Minimizing Harm from Layoffs and Downsizing 412 Best Practices for Motivation and Morale of Technical Staff 454 Best Practices for Selection and Hiring of Software Personnel 505 Best Practices for Appraisals and Career Planning for Software Personnel 506 Best Practices for Early Sizing and Scope Control of Software Applications 517 Best Practices for Outsourcing Software Applications 538 Best Practices for Using Contractors and Management Consultants 589 Best Practices for Selecting Software Methods, Tools, and Practices 5910 Best Practices for Certifying Methods, Tools, and Practices 6411 Best Practices for Requirements of Software Applications 7012 Best Practices for User Involvement in Software Projects 7213 Best Practices for Executive Management Support of Software Applications 7414 Best Practices for Software Architecture and Design 7515 Best Practices for Software Project Planning 7716 Best Practices for Software Project Cost Estimating 7917 Best Practices for Software Project Risk Analysis8118 Best Practices for Software Project Value Analysis 8319 Best Practices for Canceling or Turning Around Troubled Projects 8420 Best Practices for Software Project Organization Structures 8721 Best Practices for Training Managers of Software Projects 8922 Best Practices for Training Software Technical Personnel 9123 Best Practices for Use of Software Specialists 9224 Best Practices for Certifying Software Engineers, Specialists, and Managers 9425 Best Practices for Communication During Software Projects 9726 Best Practices for Software Reusability 9927 Best Practices for Certification of Reusable Materials 10128 Best Practices for Programming or Coding 10729 Best Practices for Software Project Governance 10930 Best Practices for Software Project Measurements and Metrics 11031 Best Practices for Software Benchmarks and Baselines 11232 Best Practices for Software Project Milestone and Cost Tracking 11533 Best Practices for Software Change Control Before Release 11734 Best Practices for Configuration Control 11935 Best Practices for Software Quality Assurance (SQA) 12036 Best Practices for Inspections and Static Analysis 12437 Best Practices for Testing and Test Library Control 12838 Best Practices for Software Security Analysis and Control 13239 Best Practices for Software Performance Analysis 13440 Best Practices for International Software Standards 13641 Best Practices for Protecting Intellectual Property in Software 13642 Best Practices for Protecting Against Viruses, Spyware, and Hacking 13943 Best Practices for Software Deployment and Customization 15444 Best Practices for Training Clients or Users of Software Applications 15645 Best Practices for Customer Support of Software Applications 15746 Best Practices for Software Warranties and Recalls 15847 Best Practices for Software Change Management After Release 16048 Best Practices for Software Maintenance and Enhancement 16149 Best Practices for Updates and Releases of Software Applications 16450 Best Practices for Terminating or Withdrawing Legacy Applications 166Summary and Conclusions 167Readings and References 167Chapter 3 A Preview of Software Development and Maintenance in 2049 177Introduction 177Requirements Analysis Circa 2049 179Design Circa 2049 182Software Development Circa 2049 184User Documentation Circa 2049 186Customer Support In 2049 188Deployment and Customer Training in 2049 190Maintenance and Enhancement in 2049 191Software Outsourcing in 2049 195Software Package Evaluation and Acquisition in 2049 204Technology Selection and Technology Transfer in 2049 207Enterprise Architecture and Portfolio Analysis in 2049 210A Preview of Software Learning in 2049 213Due Diligence in 2049 216Certification and Licensing In 2049 218Software Litigation in 2049 221Summary and Conclusions 225Readings and References 225Chapter 4 How Software Personnel Learn New Skills 227Introduction 227The Evolution of Software Learning Channels 228What Topics Do Software Engineers Need to Learn Circa 2009? 230Software Engineering Specialists Circa 2009 233Varieties of Software Specialization Circa 2009 236Approximate Ratios of Specialists to General Software Personnel 241Evaluating Software Learning Channels Used by Software Engineers 243Software Areas Where Additional Education Is Needed 266New Directions in Software Learning 267Summary and Conclusions 268Curricula of Software Management and Technical Topics 268Readings and References 273Chapter 5 Software Team Organization and Specialization 275Introduction 275Quantifying Organizational Results 276The Separate Worlds of Information Technology and Systems Software 277Cotocatfon vs. Distributed Development 278The Challenge of Organizing Software Specialists 281Software Organization Structures from Small to Large 284One-Person Software Projects 284Pair programming for software development and maintenance 286Self-Organizing Agile Teams 289Team Software Process (TSP) Teams 293Conventional Departments with Hierarchical Organization Structures 298Conventional Departments with Matrix Organization Structures 304Specialist Organizations in Large Companies 308Software Maintenance Organizations 309Customer Support Organizations 322Software Test Organizations 328Software Quality Assurance (SQA) Organizations 342Summary and Conclusions 348Readings and References 349Chapter 6 Project Management and Software Engineering 351Introduction 351Software Sizing 359Software Progress and Problem Tracking 403Software Benchmarking 408Summary and Conclusions 433Readings and References 434Chapter 7 Requirements, Business Analysis, Architecture, Enterprise Architecture, and Design 437Introduction 437Software Requirements 439Statistical Analysis of Software Requirements 442Business Analysis 468Software Architecture 470Enterprise Architecture 475Software Design 479Summary and Conclusions 484Readings and References 485Chapter 8 Programming and Code Development 489Introduction 489A Short History of Programming and Language Development 490Why Do We Have More than 2500 Programming Languages? 492Exploring the Popularity of Programming Languages 495How Many Programming Languages Are Really Needed? 499Creating a National Programming Language Translation Center 501Why Do Most Applications Use Between 2 and 15 Programming Languages 504How Many Programmers Use Various Programming Languages? 506What Kinds of Bugs or Defects Occur in Source Code? 509Logistics of Software Code Defects 512Preventing and Removing Defects from Application Source Code 518Forms of Programming Defect Prevention 520Forms of Programming Defect Removal 529Economic Problems of the "Lines of Code" Metric 537Summary and Conclusions 552Readings and References 552Chapter 9 Software Quality: The Key to Successful Software Engineering 555Introduction 555Defining Software Quality 558Measuring Software Quality 585Defect Prevention 600Software Defect Removal 613Software Quality Specialists 619Summary and Conclusions on Software Specialization 632The Economic Value of Software Quality 633Summary and Conclusions 642Readings and References 643Index 645