Agree with those on Amazon.com, overly verbose and boring. Reminds me very much of a GCSE level "Information Systems" book. Meaningless sentences like "...Open distributed systems are systems that are built according to generally accepted standards..." or "...Timely response is an important factor in all embedded systems but not all embedded systems require a very fast response...". Also way too many faux-scientific references, blah et al, 2000 etc. It's not a journal paper, I want someone who knows' opinion, I want it concise and to the point, I want to get some value out of it, not namby pamby floaty stuff that sounds like it's from some professional qualification syllabus.
In all honesty, I didn't learn much from reading this book. I do have a lot of programming years on my back, but I don't think that is the reason.
This book is obviously not about learning to write code, but instead how to manage a larger software project (and think like an engineer): How to start, how to make sure there are no miscommunication in what the product should be able to do, how to make sure all scenarios are taken into account, UML, testing with JUnit and more.
That being said, if you are taking the step from programmer to engineer, you probably already know most of this. Software >>engineering<< indicates that you are already advanced enough. Modeling systems, use cases, user stories, case-, class- and sequence diagrams are probably things you are already doing, even if you don't realize it yourself.
So I guess it is a fine book to put what you are already doing into words and diagrams. Using these tools systematically in the design phase of the project (BEFORE actually coding the system), is very helpful, but something you should already (to some degree) be doing. But you are still left with a "who cares, this is just useless talk.. I already know this.." kind of feeling.