Level 9 Reading List [ladder home page] [ladder overview] [reading

advertisement
Level 9 Reading List
[ladder home page] [ladder overview] [reading list] [pyramid]
 Required reading
 Recommended Reading
 Appropriate Optional Reading
The top list is a recommendation by category. Detailed book descriptions follow the summary table.
R
Algorithms (one of the following)
L
Buy the book
-  Introduction to Algorithms, Thomas H. Cormen, et al
Buy the book
-  Data Structures and Algorithms, Aho, Hopcraft, and Ullman
Buy the book
Buy vol.1
Buy vol.2
Buy vol.3
-  Algorithms in C++, Robert Sedgewick
-  The Art of Computer Programming (vols. 1-3), Donald Knuth
Buy the book
Construction Practices
A  Code Complete, Steve McConnell
Buy the book
A  Programming Pearls, Jon Bentley
Buy the book
-  Practice of Programming, Brian Kernighan and Rob Pike
Buy the book
-  Writing Solid Code, Steve Maguire
Buy the Book
-  Programming on Purpose: Essays on Software Design, P. J. Plauger
Buy the book
-  Programmers at Work, Susan Lammers
Buy the book.
Software Development Overview
A  201 Principles of Software Development, Alan M. Davis
Get the article
A  "The Humble Programmer," Edsger Dijkstra
 "Software Engineering Programmes are not Computer Science Programmes," David
A
Parnas
A  "They Write the Right Stuff ," Charles Fishman
Buy the book
-  Software Engineering, Ian Sommerville
Buy the book
-  Software Engineering: A Practitioner's Approach, Roger Pressman
Get the code
Professional Ethics
A  Software Engineering Code of Ethics and Professional Practice, ACM/IEEE-CS
Subscribe
Periodicals
-  Software Development
Subscribe
-  IEEE Software
Get the article
Get the article
Algorithms
Introduction to Algorithms, Thomas H. Cormen, et al. This comprehensive book contains an exhaustive
discussion of specific algorithms, algorithm analysis, and algorithm design (though not as exhaustive as Knuth's
seven volume series).
Data Structures and Algorithms, Aho, Hopcraft, and Ullman. This book is focused as a textbook introduction to
data structures. It contains excellent discussions of arrays, records, pointers, lists, and trees. It also covers the
fundamental algorithmic topics of searching and sorting.
Algorithms in C++, Robert Sedgewick. This is a good choice if you want a book whose examples are in C++.
The Art of Computer Programming, Donald Knuth. These are the touch stone books in the field, though they
certainly are not light reading. These are the first three volumes of a series that was originally intended to be seven
volumes. They can be somewhat intimidating. Aside from the English description of the algorithms, they're
described in mathematical notation or MIX, an assembly language for the imaginary MIX computer. Nevertheless,
they contain exhaustive details on a huge number of topics, and if you have an intense interest in a particular
algorithm, you won't find a better reference.
Construction Practices
Code Complete, Steve McConnell. McConnell's book is an exhaustive compendium of all the detailed softwareconstruction level practices that make the difference between readable, maintainable, extendible programs and
disorganized mish-mashes that become unworkable after initial construction.
Programming Pearls, Jon Bentley. This book provides terrific insight into the functioning of the expert
programmer's mind. In each essay, Bentley walks the reader through the thought processes he uses to solve detailed
programming problems. Along the way he introduces the concepts of Big-O notation, approaches to performance
tuning, back-of-the-envelope calculations, and many other topics. Reading this book thoughtfully is like working
through an apprenticeship with a master programmer.
Practice of Programming, Brian Kernighan and Rob Pike. This book is written by two C/Unix gurus and
contains a good, solid discussion of key code-level and design level issues. Chapter 4, on interface design, covers a
topic that doesn't get much coverage in other books.
Writing Solid Code, Steve Maguire. This book describes key software-construction practices used at Microsoft. It
explains how to minimize defects by using compiler warnings, protecting your code with assertion statements,
fortifying subsystems with integrity checks, designing unambiguous function interfaces, checking code in a
debugger, and avoiding risky programming practices.
Programming on Purpose: Essays on Software Design, P. J. Plauger. This is a refreshing collection of essays
that were originally published in Computer Language magazine. Plauger is a master designer and takes up a variety
of topics having as much to do with being a designer as with design in the abstract. What makes the essays
refreshing is that Plauger ranges freely over the entire landscape of design topics rather than restricting himself to a
discussion of any one design style. The result is uniquely insightful and thought provoking.
Programmers at Work, Susan Lammers. This book contains interesting interviews with many of the pioneers of
personal computing, including Bill Gates, Gary Kildall, Dan Bricklin, and others.
Software Development Overview
201 Principles of Software Development, Alan M. Davis. 201 Principles provides an easy-to-read introduction to
the critical issues in software development. Davis’s book prepares you to recognize key issues when other books
discuss them and when they crop up on your own projects.
"The Humble Programmer," Dijkstra, Edsger. This classic paper helped begin the inquiry into how much
computer programming depends on programmers' mental abilities. Dijkstra has persistently trumpeted the message
that the essential task of programming is mastering the enormous complexity of computer science. He argues that
programming is the only activity in which humans have to master nine orders of magnitude difference between the
lowest level of detail and the highest. This paper would be interesting reading solely for its historical value, but
many of its themes sound fresh 20 years later. It also gives a good sense of what it was like to be a programmer in
the early days of computer science.
"Software Engineering Programmes are not Computer Science Programmes," David Parnas. This exceptional
article describes the contents of the Software Engineering program at McMaster University. The premise of the
article is that it is easiest to understand a software engineering curriculum by comparing it to a computer science
curriculum.
Periodicals
Software Development. This magazine focuses on programming issues, less on tips for specific environments than
the general issues you face as a professional programmer. The quality of the articles is quite good. It also includes
product reviews.
IEEE Software. This magazine focuses on software topics and is published bimonthly. It's a good source of
information on software-development methods and other leading-edge software topics. It publishes many articles by
researchers and makes an earnest attempt to print research on practical topics which are of use to professional
programmers. It isn't always as practical as I (SteveMcC) would like it to be, but, in my opinion, it's still the most
valuable magazine a programmer can subscribe to. [This review was written in 1992.]
Copyright © 1999 Construx Software Builders, Inc.
Level 10 Reading List
[ladder home page] [ladder overview] [reading list] [pyramid]
 Required reading
 Recommended Reading
 Appropriate Optional Reading
The top list is a recommendation by category. Detailed book descriptions follow the summary table.
R
Construction Practices
L
Buy the book
-  Software Implementation, Michael Marcotty
Buy the book
User Interface Design
A  The Design of Everyday Things, Donald A. Norman
 Designing the User Interface: Strategies for Effective Human-Computer Interaction,
A
Ben Shneiderman
A  Usability Engineering, Jakob Nielsen
Buy the book
-  The Elements of Friendly Software Design, Paul Heckel
Buy the book
-  About Face: The Essentials of User Interface Design, Alan Cooper
Buy the book
-  The Art of Human-Computer Interface Design, Brenda Laurel, ed
Get the article
Database Design
A  "A Simple Guide to Five Normal Forms in Relational Database Theory," William Kent
Get the article
A  "Process Driven Data Design," Frank Sweet
Get the article
A  "The Power of Stored Procedures," David McGoveran
Buy the book
-  Fundamentals of Database Systems, Ramez Elmasri and Shamkant B. Navathe
Buy the book
Software Functional Design
I  Object Oriented Analysis and Design, Grady Booch
Buy the book
Buy the book
Buy the book
Buy the book
Buy the book
Buy the book
Get the article
Get the article
Get the article
Get the article
Buy the book
Buy the Book
I  Design Patterns, Erich Gamma, et al.
 Structured Design, Edward Yourdon and Larry Constantine (or see Meilir Page-Jones's
I
book instead)
 Practical Guide to Structured Systems Design, Meilir Page-Jones, (or see Yourdon and
A
Constantine's book instead)
A  Software Creativity, Robert L. Glass
 "A Rational Design Process: How and Why to Fake It," David Parnas and Paul
A
Clements
A  "On the Criteria to Be Used in Decomposing Systems into Modules," David L. Parnas
A  "Designing Software for Ease of Extension and Contraction," David L. Parnas
 "The Modular Structure of Complex Systems," David Lorge Parnas, Paul C. Clements,
A
and David M. Weiss
 Pattern Oriented Software Architecture : A System of Patterns, Frank Buschmann, et
al.
-  Programming on Purpose: Essays on Software Design, P. J. Plauger
Buy the book
-
 Software Architecture : Perspectives on an Emerging Discipline
Get the article
by Mary Shaw and David Garlan
-  "Structured Design," W. Stevens, G. Myers, and L. Constantine
Buy the book
-  Object-Oriented Software Construction, Bertrand Meyer
Buy the book
Design in General
A  Conceptual Blockbusting, James L. Adams
-  How to Solve It, G. Polya
Buy the book
Buy the book
Software Industry Overview
A  "Software’s Chronic Crisis," W. Wayt Gibbs
 "Programmer Performance and the Effects of the Workplace," Tom DeMarco and Tim
A
Lister
-  Software Runaways, Robert L. Glass
Buy the book
-  Peopleware, Tom DeMarco and Timothy Lister
Buy the book
-  Constantine on Peopleware, Larry Constantine
Buy the book
Software Development Overview
A  Software Project Survival Guide, Steve McConnell
Buy the book
A  Mythical Man-Month, Fred Brooks
Get the article
A  "No Silver Bullets--Essence and Accidents of Software Engineering," Fred Brooks
Get the article
A  "Understanding and Controlling Software Costs," Barry Boehm and Phillip Papaccio
Buy the book
-  Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl
Buy the book
-  The Deadline, Tom DeMarco
Buy the book
-  Debugging the Development Process, Steve Maguire
Buy the book
-  Software Engineering, Ian Sommerville
Buy the book
-  Software Engineering: A Practitioner's Approach, Roger Pressman
Buy the book
-  Dynamics of Software Development, Jim McCarthy.
Subscribe
Periodicals
-  Software Development
Subscribe
-  IEEE Software
Subscribe
-  IEEE Computer
Subscribe
-  Communciations of the ACM
Get the article
Get the article
Construction Practices
Software Implementation, Michael Marcotty. Marcotty discusses the general issues involved in constructing
software by focusing on abstraction, complexity, readability, and correctness. The first part of the book discusses the
history of programming, programming subculture, programming teams, and how typical programmers spend their
time. The book is written with wit and style, and the first 100 pages on the "business of programming" are especially
well done.
User Interface Design
Designing the User Interface: Strategies for Effective Human-Computer Interaction, Ben Shneiderman. See
comments on next book, below.
The Elements of Friendly Software Design, Paul Heckel. These two books cover similar territory in different
ways. Shneiderman proposes specific, detailed engineering guidelines for use of color, response time, command
structures, menu layouts, and many other aspects of user-interface design. He suggests specific procedures for
improving designs including prototyping and iterative testing. Most of his recommendations have been verified by
scientific tests. His approach is careful, methodical, and scientific.
Heckel's approach is more free wheeling. Rather than providing detailed procedures, he provides a set of 30
inspirational design heuristics. He argues that interface design is essentially a communication exercise like writing,
speaking, or filmmaking and draws an elaborate, thought-provoking analogy between designing a user interface and
making a movie. In contrast to Shneiderman's summary of current laboratory results, Heckel provides an
adventurous look into the possibilities of the art.
Both books are valuable in their own terms. Heckel's is more fun. Shneiderman's is on more solid ground. They
make a good, complementary pair.
Usability Engineering, Jakob Nielsen. [From the Author]: The basic philosophy of the book is YOU CAN DO IT!
It is about cheap and fast methods that anybody can use in any interface design project (whether Web design,
software design, or gadget design) to drastically improve usability. It is quite common to be able to cut users'
learning time in half (thus cutting your training budget or support center costs by a similar amount).
The Design of Everyday Things, Donald A. Norman. Norman's book isn't explicitly about software design. It's
about user-interface design of everyday things: doors, pitchers, radios, stoves, and so on. Regardless of that fact, it's
hard to find any part of the book that doesn't apply directly to designing software user interfaces. Because Norman
isn't obligated to focus on software examples, he ranges over a broader field than most software-user-interface books
do, and that range of topics is inspirational. I'd read it again just for the description of opening doors the wrong way.
If you've ever felt foolish for pulling a door that says "push," read this book; it's not your fault!
About Face: The Essentials of User Interface Design, Alan Cooper. [Publisher's Description]: The "father" of
Visual Basic, Alan Cooper, presents a methodology of user interface design that he has distilled from many years of
creating award-winning personal computer software. This book does not focus on code; instead it discusses highly
technical topics in clear English. Readers may not agree with everything Cooper has to say about software design,
but they will find his ideas pertinent, thought-provoking, and perceptive.
The Art of Human-Computer Interface Design, Brenda Laurel, ed. This is a collection of articles written by
people prominent in interface design. Like any collection of articles, some people's ideas are better than others, but
this collection contains some gems. My favorite is the article by Alan Kay, the researcher who pioneered Smalltalk,
icons, graphical windows, other interface technologies that comprise the heart of modern computing. His article
vibrates with the force of his creative energy and glimpses into what he's planning for computing's future.
Database Design
Fundamentals of Database Systems, Ramez Elmasri and Shamkant B. Navathe. You can find a lot of good
books on database design and construction, and this is one of them. Even if you don't use a "database," you'll still
benefit from knowing database concepts. For example, every programmer should be familiar with the key concept of
"normal form." If you use files in your programs, you're using a database, and you can benefit from many database
concepts regardless of how small or informal your program is.
Software Design
Object Oriented Analysis and Design, Grady Booch. Booch’s book discusses the theoretical and practical
foundations of object-oriented design for about 300 pages then has 175 more pages of object-oriented application
development in C++. No one has been a more active advocate of object-oriented design than Grady Booch, and this
is the definitive volume on the topic.
Design Patterns, Erich Gamma, et al. [From the Preface]: "It's a book of design patterns that describe simple and
elegant solutions to specific problems in object-oriented software design....Once you understand the design patterns
and have had an "Aha!" (and not just a "Huh?" experience with them, you won't ever think about object-oriented
design in the same way. You'll have insights that can make your own designs more flexible, modular, reusable, and
understandable--which is why you're interested in object-oriented technology in the first place, right?"
Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design, Ed Yourdon
and Larry Constantine. This is the classic text on structured design by one of the co-authors (Constantine) of the
original paper on structured design. The book is written with obvious care. It contains full discussions of coupling,
cohesion, graphical notations, and other relevant concepts. Some people have characterized the book as "technically
difficult," but it’s hard to beat learning about a practice from its original inventor.
Practical Guide to Structured Systems Design, Meilir Page-Jones. This is a popular textbook presentation of the
same basic structured-design content as Yourdon and Constantine’s book and is written with energy and humor.
Some people have found Page-Jones’s book to be more accessible than Yourdon and Constantine’s.
Programming on Purpose: Essays on Software Design, P. J. Plauger. This is a refreshing collection of essays
that were originally published in Computer Language magazine. Plauger is a master designer and takes up a variety
of topics having as much to do with being a designer as with design in the abstract. What makes the essays
refreshing is that Plauger ranges freely over the entire landscape of design topics rather than restricting himself to a
discussion of any one design style. The result is uniquely insightful and thought provoking.
"A Rational Design Process: How and Why to Fake It," David Parnas and Paul Clements. This is a classic
article that describes the gap between how programs are really designed and how you sometimes wish they were
designed. The main point is that no one ever really has a rational, orderly design process, but that aiming for it
makes for better designs in the end.
Pattern Oriented Software Architecture: A System of Patterns, Frank Buschmann, et al. This book takes
design patterns to the architectural level, discussing architectural patterns of layers, blackboard, pipes, brokers,
model-view-controller, and others.
Software Architecture: Perspectives on an Emerging Discipline by Mary Shaw and David Garlan. This was
the first book published on software architecture. It covers some of the same concepts as Buschmann's Pattern
Oriented Software Architecture, but comes across as much more academic.
"On the Criteria to Be Used in Decomposing Systems into Modules," David L. Parnas (also in Yourdon 1979,
Freeman and Wasserman 1983). The classic paper that introduced the concept of "information hiding."
"Designing Software for Ease of Extension and Contraction," David L. Parnas (also in Freeman and
Wasserman 1983).
"The Modular Structure of Complex Systems," David Lorge Parnas, Paul C. Clements, and David M. Weiss.
"Structured Design," W. Stevens, G. Myers, and L. Constantine. This is the original paper on structured design.
The books make better presentations of the concepts, but once you've read the books the paper is interesting mainly
for its historical value.
Software Creativity, Robert L. Glass. This 1995 book should have been the breakthrough book that explored a
little discussed and less understood aspect of software development: the role of creativity. Glass discusses creativity
versus discipline, theory versus practice, heuristics versus methodology, process versus product, and many of the
other dichotomies that define the software field. This book should have been the breakthrough book for creativity
that Peopleware was for human factors. This book is out of print.
Object-Oriented Software Construction, Bertrand Meyer. Meyer is one of the hardest of the hard-core objectoriented programming advocates, and this book contains a forceful defense of pure object-oriented programming-including inheritance, multiple inheritance, and polymorphism. It contains a lively criticism of traditional, structured
techniques, as well as hybrid approaches, such as the one suggested in Code Complete.
Design in General
Conceptual Blockbusting, James L. Adams. This book will teach you more about software design than many
books that focus specifically on software design. Software design books seem to focus exclusively on the activity of
partitioning a system up into pieces, giving guidelines for how to evaluate a particular partitioning. They generally
ignore aspects of design such as algorithm development and the process of coming up with the partitioning in the
first place. These are the areas in which Conceptual Blockbusting excels. Adams is an engineering professor at
Stanford and teaches an engineering design course, so this book's content is on target for software developers.
How to Solve It, G. Polya. This book is essentially 1945's version of David Parnas and Paul Clement's paper, "A
Rational Design Process: How and Why to Fake It" (IEEE Transactions on Software Engineering, February 1986,
pp. 251-257). Polya's book is about mathematical theorems, but if you replace "mathematical theorem" with
"software design," the book is an outstanding software design book. Polya points out that the process used to create
a design is different than the process used to explain it. The explanation should be neat and orderly, progressing in
an orderly way from premises to conclusions. The creation of the design is hardly so tidy. The designer creates
designs that don't work, explores dead ends, and throws away more work than he keeps. This book sheds more light
on the activity of software design (as opposed to the result) than any software design book I've seen. It makes it clear
that problem solving isn't a deterministic activity, and that adherence to any single methodology is like walking with
your feet in chains.
Software Industry Overview
"Software’s Chronic Crisis," W. Wayt Gibbs. This article describes some recent software projects that have been
plagued by changing requirements including the Denver airport’s baggage-handling software and the FAA’s airtraffic-control workstation software.
Software Runaways, Robert L. Glass. Glass highlights research findings about runaway software projects and then
spends most of the book exploring case studies of high profile runaways. He includes the Denver airport baggage
handling system, the FAA's AAS system, Westpac Bank's $150M CASE disaster, and the IRS's $50 billion debacle.
He wraps up the book by drawing lessons from the runaways.
"Programmer Performance and the Effects of the Workplace," Tom DeMarco and Tim Lister. This precursor
to Peopleware contains a meatier, more condensed explication of the office environment analysis presented in
Peopleware.
Peopleware, Tom DeMarco and Timothy Lister. The genesis of Peopleware was an obscure 1985 paper called
"Programmer Performance and the Effects of the Workplace" (Proceedings of the 8th International Conference on
Software Engineering, August 1985, pp. 268-272). The 1985 paper contains a higher information-to-explanation
ratio than the book, and I think in some ways the paper is more interesting. The book is also mis-subtitled. The
subtitle says it's about "productive projects and teams," but the discussion of teams is only 35 pages long, and the
book is probably better known for its coverage of the effects of work environment on productivity. Do these points
detract from the book? Not at all. The main message of this book is that software is something that is constructed by
people, and if you want good software, you'd better look out for the welfare of the people creating it. Peopleware
said that first and still says it best.
Constantine on Peopleware, Larry Constantine. This book contains a collection of essays loosely focused on the
role that people play in software development.
Software Development Overview
Software Project Survival Guide, Steve McConnell. SPSG is responsive to the problem that many people in the
software industry are thrust into positions in which they are given responsibility for the outcome of a software
project but are not given any formal or informal training in how to make that happen. SPSG provides an introduction
to the steps that successful software projects follow that can be read by both technical and nontechnical readers.
Mythical Man-Month, Fred Brooks. Brooks was the manager of IBM's OS/360 development, a mammoth project
that took 5000 work years. He discusses management issues pertaining to small and large teams and presents a
particularly engaging account of chief-programmer teams in this charming collection of essays.
The Deadline, Tom DeMarco. This amusing fictional account of several software projects run concurrently
explores the causes of software project success and failure.
"No Silver Bullets—Essence and Accidents of Software Engineering," Brooks, Frederick P., Jr., Computer,
April 1987, pp. 10-19. In this famous article, Brooks argues that the essential conceptual difficulty of software
development precludes any more order-of-magnitude gains in productivity, reliability, or simplicity.
"Understanding and Controlling Software Costs," Barry Boehm and Phillip Papaccio. This paper introduces
many of the basic economic relationships of software engineering, e.g., the way that defect costs increase over the
course of a project, etc.
Debugging the Development Process, Steve Maguire. This book presents a homespun approach to software
process improvement with an emphasis on minimum bureacracy.
Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl. I liked this book from the start,
and the longer I've considered its ideas the more important the book seems. The book describes life cycle models
such as waterfall, evolutionary prototyping, scrum development, and so on. Projects that choose the wrong lifecycle
model for their specific needs will face an uphill battle and risk not finishing at all. For gaining a big-picture
understanding of how software projects, work, this book is hard to beat.
The subtitle of this book is "A Catalog of Modern Software Engineering Paradigms," and it is by far the most
complete description of software lifecycle models available. The book was produced though an unusual
collaboration in which Peter DeGrace provided the useful technical content and Leslie Hulet Stahl provided the
unusually readable and entertaining writing style.
Software Engineering, Ian Sommerville. The fourth edition of this book is a balanced treatment of requirements,
design, quality validation, and management. It contains helpful diagrams and each subject has an annotated furtherreading section. At about 650 pages, it's not necessarily a book you'll read cover to cover, but if you want a
thumbnail description of a topic, it's probably in here. It has a good index.
Software Engineering: A Practitioner's Approach, Roger Pressman. This is an excellent alternative to
Sommerville’s book and is similar in scope and size. Don’t be mislead by the "Practitioner's Approach" in the title;
excellent as it is, this book is better suited to provide an overview of important issues than to serve as a practitioner’s
handbook.
Dynamics of Software Development, Jim McCarthy. McCarthy describes the insider’s view of the Microsoft
milestone process. He describes an essentially grim vision of software development in which Microsoft projects
spend most of their time in what we would call recovery mode.
Periodicals
IEEE Computer. IEEE Computer Society Publications Office, 10662 Los Vaqueros Cir., PO Box 3014, Los
Alamitos, CA 90720-1264; 714-821-8380, www.computer.org/computer/. This is the flagship publication of the
IEEE Computer society. It publishes articles monthly on a wide spectrum of computer topics and has scrupulous
review standards to ensure the quality of the articles it publishes. Because of its breadth, you'll probably find fewer
articles that interest you than you will in IEEE Software.
Communications of the ACM, ACM, PO Box 12114, Church Street Station, New York, NY 10257. www.acm.org.
This magazine is one of the oldest and most respected computer publications. It has the broad charter of publishing
about the length and breadth of computerology, a subject that's much vaster than it was even a few years ago. Like
IEEE Computer, because of its breadth, you'll probably find that many of the articles are outside your area of
interest.
The magazine tends to have an academic flavor, which has both a bad side and a good side. The bad side is that
some of the authors write in an intentionally confusing style that's designed more to impress readers with their
vocabulary and esoteric grammer rules than to explain their points clearly. The good side is that it contains leadingedge information that won't filter into the low-brow magazines for years.
Copyright © 1999 Construx Software Builders, Inc.
Level 11 Reading List
[ladder home page] [ladder overview] [reading list] [pyramid]
 Required reading
 Recommended Reading
 Appropriate Optional Reading
The top list is a recommendation by category. Detailed book descriptions follow the summary table.
Completing a Master of Software Engineering degree in Seattle University's M.S.E. program will be an acceptable
substitute for the following reading list.
R
Software Development Overview
L
Buy the book
A  Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl
Get the article
A  "A Spiral Model of Software Development and Enhancement," Barry W. Boehm
Get the article
-  "Applying Process Programming to the Spiral Model," Barry Boehm and F.C. Belz
Buy the book
-  The Psychology of Computer Programming, Gerald M. Weinberg
Buy the book
-  Peopleware, Tom DeMarco and Timothy Lister
Buy the book
-  Software Engineering, Merlin Dorfman and Richard H. Thayer, eds.
Buy the book
Requirements Development
(read at least one of the required books)
A  Requirements Engineering, A Good Practice Guide, Ian Sommerville and Pete Sawyer
Buy the book
A  Modern Structured Analysis, Edward Yourdon
Buy the book
Buy the book
A  Software Requirements, Karl Wiegers
 Exploring Requirements: Quality Before Design, Donald C. Gause and Gerald
Weinberg.
-  Rethinking Systems Analysis and Design, Gerald Weinberg
Buy the book
-  Structured Analysis and Systems Specification: Tools and Techniques, Tom DeMarco
Buy the book
-  Strategies for Real-Time System Specification, Derek J. Hatley and Imtiaz A. Pirbhai
Buy the book
Buy the book
Buy the book
-
 Software Requirements & Specifications: A Lexicon of Practice, Principles and
Prejudices, Michael Jackson
-  Software Requirements Engineering, Richard H. Thayer and Merlin Dorfman, eds
Get the article
Technical Reviews
 "Design and Code Inspections to Reduce Errors in Program Development," Michael E.
A
Fagan
A  "Advances in Software Inspections," Michael E. Fagan
Buy the book
Testing
(read at least one of the required books)
A  Testing Computer Software, Cem Kaner, et al
Buy the book
A  The Art of Software Testing, Glenford Myers
Buy the book
A  Complete Guide to Software Testing, Bill Hetzel
Buy the book
-  Software Testing Techniques, Boris Beizer
Buy the book
-  The Craft of Software Testing, Brian Marick
Download
Download
Project Management
 Recommended Approach to Software Development, NASA Goddard Space Flight
A
Center
A  Manager's Handbook for Software Development, NASA Goddard Space Flight Center
Buy the book
A  Rapid Development, Steve McConnell
Buy the book
-  Principles of Software Engineering Management, Tom Gilb
Buy the book
-  Creating a Software Engineering Culture, Karl Wiegers
Buy the book
-  Assessment and Control of Software Risks, Capers Jones
Buy the book
-  Controlling Software Projects, Tom DeMarco
Buy the book
-  Software Engineering Project Management, Richard H. Thayer, ed
Buy the book
-  Software Management, Donald J. Reifer, ed
Buy the book
-  A Manager’s Guide to Software Engineering, Roger Pressman
Buy the book
-  Managing a Programming Project, 3d Ed, Philip Metzger and John Boddie
Get the article
Get the article
Get the article
Configuration Management
A  "Elements of Software Configuration Management," Edward H. Bersoff
 "Impacts of Life Cycle Models on Software Configuration Management," Edward H.
A
Bersoff and Alan M. Davis
Buy the book
Metrics
-  Software Measurement Guidebook, NASA Goddard Space Flight Center
 Practical Software Metrics for Project Management and Process Improvement, Robert
B. Grady
-  Applied Software Measurement: Assuring Productivity and Quality, Capers Jones
Buy the book
Software Industry
-  Soul of a New Machine, Tracy Kidder
Download
Buy the book
Buy the book
Buy the book
-  Microsoft Secrets, Cusumano, Michael and Richard Selby
 Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at
Microsoft, Pascal Zachary
Buy the book
General Management
A  Built To Last, James C. Collins and Jerry I. Porras
Buy the book
-  In Search of Excellence,Tomas J. Peters and Robert H. Waterman, Jr
Buy the book
-  The E-Myth, Michael L. Gerber
Buy the book
-  High Output Management, Andrew S. Grove
Subscribe
Periodicals
-  Software Development
Subscribe
-  IEEE Software
Subscribe
-  IEEE Computer
Subscribe
-  Communciations of the ACM
Software Development Overview
Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl. I (SteveMcC) liked this book
from the start, and the longer I've considered its ideas the more important the book seems. The book describes life
cycle models such as waterfall, evolutionary prototyping, scrum development, and so on. Projects that choose the
wrong lifecycle model for their specific needs will face an uphill battle and risk not finishing at all. For gaining a
big-picture understanding of how software projects, work, this book is hard to beat.
The subtitle of this book is "A Catalog of Modern Software Engineering Paradigms," and it is by far the most
complete description of software lifecycle models available. Any approach to software development needs to vary as
the size of the project varies, and DeGrace and Stahl make that point clearly. The section titled "Attenuating and
Truncating" in Chapter 5 discusses customizing software development processes based on project size and
formality. It includes descriptions of models from NASA and the Department of Defense and lots of edifying
illustrations.
The book was produced though an unusual collaboration in which Peter DeGrace provided the useful technical
content and Leslie Hulet Stahl provided the unusually readable and entertaining writing style.
"A Spiral Model of Software Development and Enhancement," Barry W. Boehm. This paper describes a
development model called the "spiral model" and is written by the developer of the idea. Boehm presents the model
as an approach to managing the risk of a software development project, so it's about development generally rather
than integration specifically. Boehm is undoubtedly the world's foremost expert in the big-picture issues of software
development, and the clarity of his explanations reflects the quality of his understanding.
"Applying Process Programming to the Spiral Model," Barry Boehm and F.C. Belz. This is an update on the
Spiral model.
The Psychology of Computer Programming, Gerald M. Weinberg. This book is packed with fascinating
anecdotes about programming. Long before the term "peopleware" was coined, Weinberg was conducting an indepth exploration of computer programming as something done first and foremost by human beings, and only
secondarily as something that happened to involve computers. The sentiment expressed in the original review of the
book in the ACM Computing Reviews is as true today as when it was written:
Every manager of programmers should have his own copy. He should read it, take it to
heart, act on the precepts, and leave the copy on his desk to be stolen by his
programmers. He should continue replacing the stolen copies until equilibrium is
established. (Weiss 1972)
Peopleware, Tom DeMarco and Timothy Lister. The genesis of Peopleware was an obscure 1985 paper called
"Programmer Performance and the Effects of the Workplace" (Proceedings of the 8th International Conference on
Software Engineering, August 1985, pp. 268-272). The 1985 paper contains a higher information-to-explanation
ratio than the book, and I think in some ways the paper is more interesting. The book is also mis-subtitled. The
subtitle says it's about "productive projects and teams," but the discussion of teams is only 35 pages long, and the
book is probably better known for its coverage of the effects of work environment on productivity. Do these points
detract from the book? Not at all. The main message of this book is that software is something that is constructed by
people, and if you want good software, you'd better look out for the welfare of the people creating it. Peopleware
said that first and still says it best.
Software Engineering, Merlin Dorfman and Richard H. Thayer, eds. This IEEE Tutorial contains a collection of
influential papers describing many of the best practices in modern software engineering.
Requirements Development
Requirements Engineering, A Good Practice Guide, Ian Sommerville and Pete Sawyer. Description TBD.
Modern Structured Analysis, Edward Yourdon. Yourdon’s book contains a survey of requirements specification
and analysis circa 1989 including modeling tools, the requirements-gathering process, and related issues. One of the
most useful sections is hidden in an appendix: "Interviewing and Data Gathering Techniques."
Software Requirements: A Pragmatic Approach, Karl Wiegers. This is a practical book that focuses more on
what to do than on requirements theory. You can download chapters from the author's website at
http://www.processimpact.com. The published version will be available in October 1999.
Exploring Requirements: Quality Before Design, Donald C. Gause and Gerald Weinberg. Gause and Weinberg
chart an untraditional course through the requirements-management terrain. They discuss ambiguity, meetings,
conflict resolution, constraints, expectations, reasons that methodologies aren’t enough, and quite a few other topics.
They mostly avoid the topics that other requirements books include and include the topics that the other books leave
out.
Rethinking Systems Analysis and Design, Gerald Weinberg. This is an entertaining collection of essays that
stands some traditional requirements advice on its head. .
Structured Analysis and Systems Specification: Tools and Techniques, Tom DeMarco. This classic book was
the first written on requirements specification techniques.
Strategies for Real-Time System Specification, Derek J. Hatley and Imtiaz A. Pirbhai. This book extends
structured analysis technique by adding timing considerations.
Software Requirements & Specifications: A Lexicon of Practice, Principles and Prejudices, Michael Jackson.
This book is organized in a quirky A-Z format, but contains some good insights into requirements development.
Software Requirements Engineering, Richard H. Thayer and Merlin Dorfman, eds. This IEEE Tutorial
contains a collection of the best and most influential papers written about software requirements development.
Technical Reviews
"Design and Code Inspections to Reduce Errors in Program Development," Michael E. Fagan.
"Advances in Software Inspections," Michael E. Fagan.
These two articles are written by the developer of inspections. They contain the meat of what you need to know to
run an inspection including the standard inspection forms.
Software Testing
Testing Computer Software, Cem Kaner, et al. I (SteveMcC) think this is the best testing book available. It's
written by a practicing tester and is steeped in the realities of testing shrink-wrap software.
The Art of Software Testing, Glenford Myers. After more than twenty years, this is still one of the best testing
books available. Myers knows his subject, and the contents are straightforward: A Self-Assessment Test; The
Psychology and Economics of Program Testing; Program Inspections, Walkthroughs, and Reviews; Test-Case
Design; Module Testing; Higher-Order Testing; Debugging; Test Tools and Other Techniques. It short (177 pages)
and readable. The quiz at the beginning gets you started thinking like a tester and demonstrates how many ways
there are to break a piece of code.
Complete Guide to Software Testing, Bill Hetzel. In addition to what Myers covers, Hetzel discusses testing of
requirements and designs, regression testing, purchased software, and management considerations. At 284 pages, it's
also relatively short, and the author has a knack for presenting powerful technical concepts understandably.
Software Testing Techniques, Boris Beizer. This book is a long treatment of the subject matter (550 pages).
Whereas Myers and Hetzel touch on related topics, like reviews and inspections, Beizer sticks strictly to testing. He
covers a few kinds of testing that aren't discussed in other books, such as data-flow testing. In spite of its scope, the
contents are frequently eccentric and often don't represent mainstream testing ideas. For example, the book doesn't
include any significant discussion of testing documentation or the IEEE/ANSI testing standards, but it does include
an argument that most variables should be made global rather than local. Inspections and walkthroughs aren't
defined in the glossary, but "Incredible Hulk" is. If other books are available, read one of those first. Beizer's book is
worth having as an auxiliary reference.
The Craft of Software Testing, Brian Marick. TBD.
Software Project Management
Recommended Approach to Software Development, Revision 3, Document SEL-81-305, Greenbelt,
Maryland: NASA Goddard Space Flight Center, NASA, 1992. The Software Engineering Laboratory’s
Recommended Approach is probably the most practical overview of running a software project that I have read. It is
intended for use specifically with flight dynamics projects, but many of its recommendations are much more broadly
applicable. The book projects the heartening message that software projects are not mysterious, hard-to-control
entities. They are extremely complex entities, but they can be controlled through diligent application of lessons
learned from previous projects. Obtain a single copy for free from the SEL’s Web site at http://sel.gsfc.nasa.gov/.
Manager’s Handbook for Software Development, Revision 1, Document SEL-84-101, Greenbelt, Maryland:
NASA Goddard Space Flight Center, NASA, 1990. The SEL’s Manager’s Handbook is almost as useful as the
Recommended Approach. It is shorter, and the guidelines it presents are focused specifically on software project
management topics. You can order it or download it in the same way as you can the Recommended Approach. You
can obtain a single copy for free by writing to Software Engineering Branch, Code 552, Goddard Space Flight
Center, Greenbelt, Maryland 20771. Obtain a single copy for free from the SEL’s Web site at
http://sel.gsfc.nasa.gov/.
Rapid Development, Steve McConnell. Rapid Development contains general and practical discussions of classic
mistakes, risk management, lifecycle planning, scheduling, motivation, teamwork, and many other topics related to
rapid software development.
Principles of Software Engineering Management, Tom Gilb. Even if you plan to avoid management for your
entire career, it's a good idea to learn something about it for two reasons. It gives you insight into what your
manager does (or what your manager should do), and it helps you to self-manage your own projects. Tom Gilb's
Principles of Software Engineering Management (1988) is a good place to start. Gilb is a good writer, a metrics hot
shot, and a master of quantitative approaches to management. He is keenly aware of leading-edge approaches. After
the first couple of chapters, you can pick and choose your way through his book.
Creating a Software Engineering Culture, Karl Wiegers. This book is about the organizational change needed to
establish a software engineering culture. Readers familiar with basic software engineering practices will want to
focus on Part I: A Software Engineering Culture and Part VI: What To Do on Monday. Readers without deep
backgrounds in process improvement should also read Part III: Improving Your Processes.
Assessment and Control of Software Risks, Capers Jones. Jones set out to catalog the major risks that affect
software projects in a systematic, reference format that includes a description of each risk, severity, methods of
prevention, and methods of control. Jones follows this format in describing 60 specific risks, and he is to be
commended for being one of the earliest people to spot widespread software phenomenon such as excessive
schedule pressure, management malpractice, and many of the other risks he discusses.
I (SteveMcC) have a love/hate relationship with this book, which I give an A+ for concept and a B- for execution.
From a practical viewpoint, the most useful sections are the methods of prevention and control, and the control
sections tend to be skimpy. For example, for the risk of creeping requirements the book discusses only requirements
gathering and specification techniques (prototyping, JAD, etc.), but it doesn't discuss downstream control methods
such as change boards, triage, and so on. At a more fundamental level, the book is marred by lack of consistent
definition of what a "risk" is. Some of the book's risks apply to individual projects, some to whole organizations, and
some to the software industry at large. The dictionary definition of risk is "undesirable outcome," and many of the
risks listed seem to confuse cause and effect. Is "inadequate software engineering curriculum" an undesirable
outcome? How about "false productivity claims"? Jones' frequent polemics against lines of code metrics, the
Software Engineering Institute, and companies that don't have full-fledged metrics programs sound shrill after the
first 100 pages and detract from some of the book's important messages.
Controlling Software Projects, Tom DeMarco. This is a good alternative or complement to Gilb's book. DeMarco
also takes a quantitative approach, and both he and Gilb are somewhat uncommon in that they both emphasize
controlling projects rather than predicting how they will turn out. .
Software Engineering Project Management, Richard H. Thayer, ed. This IEEE Tutorial is a collection of about
45 papers on the topic of managing software projects. The papers are some of the best discussions available on the
topics of planning, organizing, staffing, directing, and controlling a software project. Thayer provides an
introduction to the topics and comments briefly on each paper.
Software Management, Donald J. Reifer, ed. This IEEE Tutorial contains a collection of about 50 papers on the
topic of managing software projects. There's quite a bit of overlap between this book and Thayer's book.
A Manager’s Guide to Software Engineering, Roger Pressman. This might be the best overview available on
general aspects of software project management. It includes introductory sections on estimation, risk analysis,
scheduling and tracking, and the human element. Its only drawback is its use of a question-and-answer format that
might come across as disjointed to some readers. (It does to me.)
Managing a Programming Project, 3d Ed, Philip Metzger and John Boddie. This little book is the classic
introductory project-management textbook. It’s fairly dated now because of its emphasis on the waterfall lifecycle
model and on document-driven development practices. But anyone who’s willing to read it critically will find that
Metzger still has some important things to say about today’s projects and says them well.
Configuration Management
"Elements of Software Configuration Management," Edward H. Bersoff. IEEE Transactions on Software
Engineering, vol. SE-10, no. 1 (January 1984), pp. 79-87. This paper succinctly describes the elements of software
configuration management.
"Impacts of Life Cycle Models on Software Configuration Management," Edward H. Bersoff and Alan M.
Davis, Communications of the ACM, vol. 34, no. 8 (August 1991), pp. 104-118. This article describes how SCM is
affected by newer approaches to software development, especially prototyping approaches.
Metrics
Software Measurement Guidebook. Document number SEL-94-002. Greenbelt, Maryland: Goddard Space Flight
Center, NASA, 1994. This is an excellent introductory book that describes the basics of how and why to establish a
measurement program. Among other highlights, it includes a chapter of experienced-based guidelines, lots of sample
data from NASA projects, and an extensive set of sample data-collection forms. Obtain a single copy for free from
the SEL’s Web site at http://sel.gsfc.nasa.gov/.
Practical Software Metrics for Project Management and Process Improvement, Robert B. Grady. This book is
the follow-on to Grady and Caswell’s earlier book and extends the discussion of lessons learned at Hewlett-Packard.
It contains a particularly nice presentation of a set of software business-management graphs, each of which is
annotated with the goals and questions that the graph was developed in response to.
Applied Software Measurement: Assuring Productivity and Quality, Capers Jones. This book contains Jones’s
recommendations for setting up an organization-wide measurement program. It is a good source of information on
functional metrics (the alternative to lines-of-code metrics). It describes problems of measuring software, various
approaches to measurement, and the mechanics of building a measurement baseline. It also contains excellent
general discussions of the factors that contribute to quality and productivity. I (SteveMcC) have found so many
typographical errors, inconsistencies, and questionable statistical practices that I can no longer recommend it as
wholeheartedly as I did in Code Complete. Read it for the general messages but don't put too much stock in any
specific numbers.
Software Industry
Microsoft Secrets, Cusumano, Michael and Richard Selby. This collection of Microsoft best practices describes
how Microsoft develops software when it's working at its best.
Soul of a New Machine, Tracy Kidder. This Pulitzer prize winning account of the development of Data General's
Eagle computer captures what it feels to work on a commitment-based project. It is about a hardware project, but the
dynamics are so similar to software projects that the project description will be painfully vivid to most softwareoriented readers.
Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft, Pascal
Zachary. This book contains a quick-reading account of the development of the first release of Windows NT. It
doesn't contain a lot of technical detail, but does a good job of conveying what it feels like to work on a high
pressure project at Microsoft. It is written in the same vein as Soul of a New Machine.
General Management
Built To Last, James C. Collins and Jerry I. Porras. Collins and Porras took the very interesting approach of
studying pairs of companies in similar industries, each of which had been in business at least 50 years, but one of
which is regarded as the industry leader and the other as second best. The lessons drawn from these comparisons
provide food for thought for anyone shaping a startup company or trying to decide whether he really wants to work
for his current company. The person who first recommended this book to me (SteveMcC) said that he had just
completed an MBA, and that he learned more from reading this book than from his whole MBA program.
In Search of Excellence,Tomas J. Peters and Robert H. Waterman, Jr. This book almost instantly achieved
classic status when it was published in 1982. Although it has been eclipsed by newer books, the basic messages are
still worth reading. It makes a nice complement to Built to Last.
High Output Management, Andrew S. Grove. Andy Grove is one of the founders of Intel and has strong opinions
about how to manage a company in a competitive technical industry. Grove takes a strongly quantitative approach to
management. The book contains important discussions of fixing defects at the "least value" stage, importance of
performance reviews, and other key topics.
The E-Myth, Michael L. Gerber. Gerber observes that 80% of small businesses fail within the first 5 years and
recommends that small business owners spend time working on their businesses in addition to working in them. His
specific approach centers on documenting roles, responsibilities, and processes. For software types, the book reads
like a CMM Level 2 approach to running the business part of a business.
Periodicals
IEEE Computer. IEEE Computer Society Publications Office, 10662 Los Vaqueros Cir., PO Box 3014, Los
Alamitos, CA 90720-1264; 714-821-8380, www.computer.org/computer/. This is the flagship publication of the
IEEE Computer society. It publishes articles monthly on a wide spectrum of computer topics and has scrupulous
review standards to ensure the quality of the articles it publishes. Because of its breadth, you'll probably find fewer
articles that interest you than you will in IEEE Software.
Communications of the ACM, ACM, PO Box 12114, Church Street Station, New York, NY 10257. www.acm.org.
This magazine is one of the oldest and most respected computer publications. It has the broad charter of publishing
about the length and breadth of computerology, a subject that's much vaster than it was even a few years ago. Like
IEEE Computer, because of its breadth, you'll probably find that many of the articles are outside your area of
interest.
The magazine tends to have an academic flavor, which has both a bad side and a good side. The bad side is that
some of the authors write in an intentionally confusing style that's designed more to impress readers with their
vocabulary and esoteric grammer rules than to explain their points clearly. The good side is that it contains leadingedge information that won't filter into the low-brow magazines for years.
Copyright © 1999 Construx Software Builders, Inc.
From the Editor
IEEE Software, Vol. 15, No. 6, November/December 1998
How To Read A Technical Article
How to Read a Book by Mortimer J. Adler stayed at the top of the nationwide best seller
list for more than a year when it was originally published in 1940 (Simon & Schuster).
Adler brought his experience as long-time editor of Encyclopedia Britannica to bear on
the project. Revised and updated in 1972, the book is still a tremendously practical guide
to the various kinds of reading we do both personally and professionally. Adler includes
sections on general reading as well as specialized sections on reading fiction, history,
philosophy, science, and mathematics.
Reading Levels
Adler differentiates between 4 levels of reading. "Elementary reading" is the most basic
reading and is characterized by learning to recognize individual words on a page.
"Inspectional reading" is a more advanced level of reading, which is characterized by
trying to get the most out of a book or article within a given amount of time. "Analytical
reading" is still more advanced, and is characterized by trying to get the most out of a
book or article with an unlimited amount of time. "Syntopical reading" is the most
advanced form of reading and involves reading sets of books or articles on a common
topic together in a way that allows you to extract information that might or might not be
present in any of the individual materials studied.
Adler describes several techniques a person can use to read a book or article quickly for
Inspectional reading. You might think of this as systematic skimming. He suggests that
you first study the title. What does the title tell you about the kind of book or article it is?
If it’s a book, next study the table of contents. What subject areas are covered? What is
the book’s emphasis? Can you infer the author’s main points from the table of contents?
Next, read the preface. In a well-written preface, the author will summarize why the book
was written, who the book was written for, and what you should expect to get from
reading it. Study the book’s index. The table of contents tells you what the author
planned to talk about, and sometimes the index tells you what the author actually did talk
about. After that, study the introductory text in each chapter, and then dip into the first
and last chapters of the book.
Technical articles are a little more difficult than books in that they don’t typically include
tables of contents, indexes, and so on. For technical articles, you might consider reading
the abstract, introduction, and conclusion, then reading the introductory text in each
section.
If what you’re after is a general understanding of the main points of a book or article
rather than the detailed logic, Inspectional reading may be the only kind of reading you’ll
need to do. If you later need a more detailed understanding of the book’s contents, your
Inspectional reading will have prepared you to find that information quickly. Prior to
reading this advice in How to Read a Book, I had always felt a little guilty about not
finishing a book. But Adler makes a strong case for not going beyond Inspectional
reading unless you need to. I found his advice liberating; he told me that it was
acceptable to read a book in this way, and gave me a systematic method for doing
something I had previously been doing only haphazardly.
In case you do need to perform Analytical reading, Inspectional reading prepares you for
that. In reading a book or article for understanding rather than just for information, you
need to both acquire an understanding of the way the author has organized the subject
matter and an understanding of the subject matter details. By jumping into the details
first, starting at page 1 and reading through to the end, you have to acquire both of these
kinds of knowledge simultaneously, which is very difficult. By performing Inspectional
reading first, you acquire an understanding of the organizational framework quickly, and
you can then fit the details into the framework during your more detailed reading of
pages1 to n.
Questions First, Answers Second
One of the rules of Analytical reading is that you should try to state as clearly as possible
the problem that the author has tried to solve. In reading a paper submitted to IEEE
Software, I always ask, "why would Software’s readers care about this paper? Does it
address a real problem? In what specific way will it make our readers’ lives easier?"
A related idea is that the more you engage in a dialog with the author of a book or article,
the better your understanding is likely to be. If you’ve performed Inspectional reading
first, you will probably have a long list of questions for the author: "Why did you include
subject X and not subject Y? Do you think subject Y is unimportant? Is it outdated? Did
you simply not know about it? Does it really make sense to discuss subject B before
subject A?" In addition to such specific questions, Adler proposes four generic questions
that you can ask of each book or article you read:
1. What is the book or article about as a whole?
2. What is being said in detail, and how is it being said?
3. Is the book or article true in whole or in part? You have to read the
material carefully enough to answer the first two questions before you can
answer this one.
4. What of it? How does the author’s conclusion relate to you or your work?
As Editor of Software, I have a more specific set of questions I ask of each manuscript that’s
submitted. Bearing these questions in mind helps me understand what the article is about.
First, I have to assign each submitted article a "CR Code," which is a classification
scheme IEEE Software uses to categorize all submitted articles and send them to
reviewers who have indicated an interest in the same subject. Often, I can assign the CR
code simply by reading the article’s title, abstract, and conclusion. The first question I
ask, then, is a variation of Adler’s "what is this about?" My question is, "What is the
article’s alphanumeric CR code?" If I have difficulty assigning a CR Code, that is my
first clue that the purpose of the article might be unclear, though sometimes it is our
classification scheme that is unclear.
The second question I ask of each submitted article is "What genre is it?" Every article
submitted to IEEE Software is assigned one of the genres that are highlighted in this
issue’s focus, and those genres are later used to guide the peer reviewers’ review of the
article. The genre designation amounts to a partial answer to Adler’s question of "What
of it?" Is the article a How To? A Case Study? A Tool Report? A Practice Tutorial? A
Research Tutorial? An Applied Research Result? An Experience Report? An Essay? Or
does it not fit neatly into any of our defined genres?
When the peer reviews for an article come back, I have to consider each of Adler’s four
questions in determining whether an article is suitable for publication. I rely on reviewer
comments to help me determine whether the article is "true in whole or in part" and
whether it will be useful to our readers. If we receive an article in a specialized area, such
as an Applied Research Report, the article’s vocabulary might be too specialized for me
to understand completely. I have to revert to "elementary reading" for that kind of article
because I struggle just to understand some of the individual words.
Because IEEE Software is a magazine, not a journal, before publication we try to rework
articles of this kind so that our typical reader will be able to read the article at the
Analytical level. Before that happens, reviewers who know more about the specialized
subject matter than I do help me to determine the answer to Adler’s second question,
"What is being said in detail, and how is it being said?" Sometimes, the reviewers
conclude that nothing is being said! In that case, we reject the article. Other times,
sometime valuable is being said but it isn’t being said clearly enough for our magazine,
and in those cases we work with the author to revise the material so that our typical
reader will be able to benefit from the author’s insights.
Editor: Steve McConnell, Construx Software, 11820 Northup Way #E200, Bellevue, WA 98005.
E-mail: steve.mcconnell@construx.com - WWW: http://www.construx.com/stevemcc/
Download