This book is a quite thorough text on software engineering, clearly written by someone with experience of large-scale projects. I read the book cover to cover and one of the first things that struck me about it was that it was clearly written by an engineer (and I don't intend that as a criticism). I enjoyed the book and learned a lot from it, so I'll get my only real complaint about it in early; it's a very dry, technical read and is reminiscent of university textbooks. I suspect that the author is aiming towards the 'prescribed reading' academic text market and I certainly think it will fill this role very well. However, it might require an unusual interest in the technical aspects of large-scale project software engineering (or the need to review it) to propel the reader completely through this book. The language is quite jargon and acronym heavy and although the book is attempting to commit these words to the reader's vocabulary, it does occasionally make the book a chore to read.
That said, the book is otherwise a good, thorough text and I would recommend it to be considered as a course textbook by anyone in the position to do so for a relevant course. The book covers in good detail the process of planning and documenting a large-scale project and illustrates this with a sample case study, which runs through the book. Chapters include project management, requirements analysis, software architecture, detailed design, unit implementing and testing and maintenance. The book focuses heavily on the IEEE standards for software and if your company is required to use any of these for a project, this book might be useful.
Each chapter breaks down its topic into sub-headings and the subjects are explained well and amply accompanied by illustrations, graphs, flow charts and UML diagrams where necessary. Each ends by summarising and then the contents are put into practice in the sample case study. Exercises are provided and many also have sample solutions or hints. The author does not dictate methods and often suggests several ways to approach aspects of projects.
In the chapter on maintenance the author quotes a study whose results surprised and amused me and which I must mention in this review: the author quotes a study which says that improved methods of system development actually results in more rather then less maintenance! The reason is that better-designed applications, being easier to change, are more likely to be adapted to new circumstances.
In summary, I think this is a well-written and detailed book about software engineering. It is not an easy read, but would be useful as a university textbook or to a company undertaking a large IEEE standardised project.