Cover image for Software engineering best practices : lessons from successful projects in the top companies
Title:
Software engineering best practices : lessons from successful projects in the top companies
Personal Author:
Publication Information:
New York, NY. : McGraw-Hill, 2010.
Physical Description:
xxvii, 660 p. : ill. ; 24 cm.
ISBN:
9780071621618

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010252057 QA76.758 J645 2010 Open Access Book Book
Searching...

On Order

Summary

Summary

Publisher's Note: Products purchased from Third Party sellers are not guaranteed by the publisher for quality, authenticity, or access to any online entitlements included with the product.






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 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


Author Notes

Capers Jones is president and CEO of Capers Jones Associates LLC. He was the founder and chairman of Software Productivity Research (SPR). He is the author of Estimating Software Costs, Second Edition and Applied Software Measurement. Mr. Jones was awarded a lifetime membership in the International Function Point Users Group (IFPUG), and he is a Distinguished Advisor to the Consortium of IT Software Quality (CISQ).


Table of Contents

Forewordp. xv
Acknowledgmentsp. xvii
Introductionp. xix
Chapter 1 Introduction and Definitions of Software Best Practicesp. 1
What Are "Best Practices" and How Can They Be Evaluated?p. 7
Multiple Paths for Software Development, Deployment, and Maintenancep. 10
Paths for Software Deploymentp. 12
Paths for Maintenance and Enhancementsp. 14
Quantifying Software Development, Deployment, and Maintenancep. 16
Critical Topics in Software Engineeringp. 19
Overall Ranking of Methods, Practices, and Sociological Factorsp. 23
Summary and Conclusionsp. 36
Readings and Referencesp. 36
Chapter 2 Overview of 50 Software Best Practicesp. 39
1 Best Practices for Minimizing Harm from Layoffs and Downsizingp. 41
2 Best Practices for Motivation and Morale of Technical Staffp. 45
4 Best Practices for Selection and Hiring of Software Personnelp. 50
5 Best Practices for Appraisals and Career Planning for Software Personnelp. 50
6 Best Practices for Early Sizing and Scope Control of Software Applicationsp. 51
7 Best Practices for Outsourcing Software Applicationsp. 53
8 Best Practices for Using Contractors and Management Consultantsp. 58
9 Best Practices for Selecting Software Methods, Tools, and Practicesp. 59
10 Best Practices for Certifying Methods, Tools, and Practicesp. 64
11 Best Practices for Requirements of Software Applicationsp. 70
12 Best Practices for User Involvement in Software Projectsp. 72
13 Best Practices for Executive Management Support of Software Applicationsp. 74
14 Best Practices for Software Architecture and Designp. 75
15 Best Practices for Software Project Planningp. 77
16 Best Practices for Software Project Cost Estimatingp. 79
17 Best Practices for Software Project Risk Analysisp. 81
18 Best Practices for Software Project Value Analysisp. 83
19 Best Practices for Canceling or Turning Around Troubled Projectsp. 84
20 Best Practices for Software Project Organization Structuresp. 87
21 Best Practices for Training Managers of Software Projectsp. 89
22 Best Practices for Training Software Technical Personnelp. 91
23 Best Practices for Use of Software Specialistsp. 92
24 Best Practices for Certifying Software Engineers, Specialists, and Managersp. 94
25 Best Practices for Communication During Software Projectsp. 97
26 Best Practices for Software Reusabilityp. 99
27 Best Practices for Certification of Reusable Materialsp. 101
28 Best Practices for Programming or Codingp. 107
29 Best Practices for Software Project Governancep. 109
30 Best Practices for Software Project Measurements and Metricsp. 110
31 Best Practices for Software Benchmarks and Baselinesp. 112
32 Best Practices for Software Project Milestone and Cost Trackingp. 115
33 Best Practices for Software Change Control Before Releasep. 117
34 Best Practices for Configuration Controlp. 119
35 Best Practices for Software Quality Assurance (SQA)p. 120
36 Best Practices for Inspections and Static Analysisp. 124
37 Best Practices for Testing and Test Library Controlp. 128
38 Best Practices for Software Security Analysis and Controlp. 132
39 Best Practices for Software Performance Analysisp. 134
40 Best Practices for International Software Standardsp. 136
41 Best Practices for Protecting Intellectual Property in Softwarep. 136
42 Best Practices for Protecting Against Viruses, Spyware, and Hackingp. 139
43 Best Practices for Software Deployment and Customizationp. 154
44 Best Practices for Training Clients or Users of Software Applicationsp. 156
45 Best Practices for Customer Support of Software Applicationsp. 157
46 Best Practices for Software Warranties and Recallsp. 158
47 Best Practices for Software Change Management After Releasep. 160
48 Best Practices for Software Maintenance and Enhancementp. 161
49 Best Practices for Updates and Releases of Software Applicationsp. 164
50 Best Practices for Terminating or Withdrawing Legacy Applicationsp. 166
Summary and Conclusionsp. 167
Readings and Referencesp. 167
Chapter 3 A Preview of Software Development and Maintenance in 2049p. 177
Introductionp. 177
Requirements Analysis Circa 2049p. 179
Design Circa 2049p. 182
Software Development Circa 2049p. 184
User Documentation Circa 2049p. 186
Customer Support In 2049p. 188
Deployment and Customer Training in 2049p. 190
Maintenance and Enhancement in 2049p. 191
Software Outsourcing in 2049p. 195
Software Package Evaluation and Acquisition in 2049p. 204
Technology Selection and Technology Transfer in 2049p. 207
Enterprise Architecture and Portfolio Analysis in 2049p. 210
A Preview of Software Learning in 2049p. 213
Due Diligence in 2049p. 216
Certification and Licensing In 2049p. 218
Software Litigation in 2049p. 221
Summary and Conclusionsp. 225
Readings and Referencesp. 225
Chapter 4 How Software Personnel Learn New Skillsp. 227
Introductionp. 227
The Evolution of Software Learning Channelsp. 228
What Topics Do Software Engineers Need to Learn Circa 2009?p. 230
Software Engineering Specialists Circa 2009p. 233
Varieties of Software Specialization Circa 2009p. 236
Approximate Ratios of Specialists to General Software Personnelp. 241
Evaluating Software Learning Channels Used by Software Engineersp. 243
Software Areas Where Additional Education Is Neededp. 266
New Directions in Software Learningp. 267
Summary and Conclusionsp. 268
Curricula of Software Management and Technical Topicsp. 268
Readings and Referencesp. 273
Chapter 5 Software Team Organization and Specializationp. 275
Introductionp. 275
Quantifying Organizational Resultsp. 276
The Separate Worlds of Information Technology and Systems Softwarep. 277
Cotocatfon vs. Distributed Developmentp. 278
The Challenge of Organizing Software Specialistsp. 281
Software Organization Structures from Small to Largep. 284
One-Person Software Projectsp. 284
Pair programming for software development and maintenancep. 286
Self-Organizing Agile Teamsp. 289
Team Software Process (TSP) Teamsp. 293
Conventional Departments with Hierarchical Organization Structuresp. 298
Conventional Departments with Matrix Organization Structuresp. 304
Specialist Organizations in Large Companiesp. 308
Software Maintenance Organizationsp. 309
Customer Support Organizationsp. 322
Software Test Organizationsp. 328
Software Quality Assurance (SQA) Organizationsp. 342
Summary and Conclusionsp. 348
Readings and Referencesp. 349
Chapter 6 Project Management and Software Engineeringp. 351
Introductionp. 351
Software Sizingp. 359
Software Progress and Problem Trackingp. 403
Software Benchmarkingp. 408
Summary and Conclusionsp. 433
Readings and Referencesp. 434
Chapter 7 Requirements, Business Analysis, Architecture, Enterprise Architecture, and Designp. 437
Introductionp. 437
Software Requirementsp. 439
Statistical Analysis of Software Requirementsp. 442
Business Analysisp. 468
Software Architecturep. 470
Enterprise Architecturep. 475
Software Designp. 479
Summary and Conclusionsp. 484
Readings and Referencesp. 485
Chapter 8 Programming and Code Developmentp. 489
Introductionp. 489
A Short History of Programming and Language Developmentp. 490
Why Do We Have More than 2500 Programming Languages?p. 492
Exploring the Popularity of Programming Languagesp. 495
How Many Programming Languages Are Really Needed?p. 499
Creating a National Programming Language Translation Centerp. 501
Why Do Most Applications Use Between 2 and 15 Programming Languagesp. 504
How Many Programmers Use Various Programming Languages?p. 506
What Kinds of Bugs or Defects Occur in Source Code?p. 509
Logistics of Software Code Defectsp. 512
Preventing and Removing Defects from Application Source Codep. 518
Forms of Programming Defect Preventionp. 520
Forms of Programming Defect Removalp. 529
Economic Problems of the "Lines of Code" Metricp. 537
Summary and Conclusionsp. 552
Readings and Referencesp. 552
Chapter 9 Software Quality: The Key to Successful Software Engineeringp. 555
Introductionp. 555
Defining Software Qualityp. 558
Measuring Software Qualityp. 585
Defect Preventionp. 600
Software Defect Removalp. 613
Software Quality Specialistsp. 619
Summary and Conclusions on Software Specializationp. 632
The Economic Value of Software Qualityp. 633
Summary and Conclusionsp. 642
Readings and Referencesp. 643
Indexp. 645