Warning:Don't expect to find any mention of COBOL. The books are mostly oriented toward C, Pascal, and even Fortran; it's up to you to apply the same principles to COBOL. The people who write these kinds of books generally consider COBOL to be scum.
A standard text on compiler theory; often referred to as the "dragon book" because of the beast featured on the cover. Oriented toward those who write real compilers, it is densely packed with more than you'll ever want to know. For service orders the early chapters, devoted to lexical analysis, are a useful source of ideas. There is a good discussion of finite state machines.
Examples are given in pseudocode, various kinds of formal notation, and occasionally C.
An excellent and comprehensive introduction. Examples are given in pseudocode resembling an extended Pascal. The book predates the widespread adoption of the object-oriented paradigm; instead, it promotes the use of Abstract Data Types. An ADT is a lot like an Object, but without inheritance or polymorphism.
As with the dragon book (above), don't expect an easy read. The tone is rather dry and academic, and some topics are covered in more depth than you are likely to need. Read the first few chapters for inspiration, and keep the rest for reference.
This book makes the list because of its discussion of finite state machines. It also describes a flexible and economical notation for drawing transition diagrams.
An oldie but goodie from the classical school of structured analysis and design. It focuses on the analysis phase -- understanding and defining requirements -- with some attention to design. The major tools described here are the data flow diagram and the structure chart. As described here, the analyst's job is to describe an existing system, identify its logical essence, and rearrange it into a new design that is logically equivalent.
Another classic from the classical school, this book picks up where DeMarco (above) leaves off, concentrating on design. Topics discussed include:
Considering how many unstructured or ill-structured programs are still being written in COBOL today, Yourdon and Constantine should be required reading for every COBOL programmer.
Techniques for writing error-free code, in part by letting the code check itself for consistency. This book is specific for the C language, and, by extension, C++. Some of the recommended tricks simply have no parallel in COBOL. Nevertheless, if you know enough C to follow what he says, you can find some useful inspiration.
The fact that the author works at Microsoft may or may not give him credibility, depending on your point of view. Let the book stand or fall on its own merits.
A wide-ranging discussion of good and bad ways to build software, ranging from high-level design to nitty-gritty coding practices. The languages discussed include Pascal, C, Ada, Basic, and Fortran. Here is a sampling of the topics considered: