Software engineering: the current practice by Vaclav Rajlich
This book was a hard book for me to review – not because it is a hard book to read – on the contrary – it was a great read – it is just I had a hard time finding the time to review the book because it was a good book to read and I couldn't find the time to read it. Software Engineering: The Current Practice is a title that may cause some reviewers to ask " What is the current practice anyway and how can anyone claim that this is definitively the most 'current' practice they are describing? " (I did at least). As I read it, I was very critical at first, but then I understood that this was an entirely different approach to teaching Software Engineering and that it could really help students (and practitioners) better understand recent advances in software engineering – and become better software engineers Why? Because metaphorically speaking, the cart is in place behind the horse, where more software engineering takes place. What I am saying is that this book explains software engineering not from a constructionist point of view, but from a change/maintenance perspective – meaning most of the time you need to read/analyze programs rather than write them (though there is plenty of material in the book to support green field development). The book is organized into 4 sections. The first section, INTRODUCTION, consists of 4 chapters. It provides a short " History of Software Engineering " (what fits into 12 pages), next it sets the stage for motivating the rationale for focusing on software change in " Software Life Span Models " , then spends 12 pages on " Software Technologies " (i.e., Programming Languages and Compilers, Object-Oriented Technology, and Version Control System) before ending with a chapter on " Software Models " that reviews some of the basics of UML. Each chapter nicely ends with " Further Readings and Topics " , a set of Exercises and References. Section II (7 chapters) is titled SOFTWARE CHANGE and includes such topics as: Impact Analysis (preparing for change), Actualization (performing the change), Refactoring (improving on the change while making the change), and Verification (testing the change). This section concludes with a discussion on the build process and preparing for future changes by creating a new baseline. The third section, SOFTWARE PROCESSES, consists of 4 chapters with a good treatment …