Software Engineering by Ian Sommerville
Hard to say what this book exactly is about, because ... is actually about everything (related to software engineering :) ) That's why I only picked up some few chapters to look more closely and to share snapshots from them.
The book is nevertheless an all-in- one compedium (so, no conceptual, critical, essay or whitepapers collection) and, in my view, should not miss from any engineer's library.
The big 8 on the cover, stands for the 8th Edition, in the meantime the handbook reached its 10th edition, but is actually the 8th one which is referred by the IEC61508 2nd Edition. Let me start with the "appealing" chapters, the ones I picked-up for my review here: critical systems, formal specification, then most of development ones, meaning, software reuse, component-based software egineering, critical systems development and software evolution, and lastly, the management (and cost-related ones), software cost estimation and quality management.
It was interesting to see authors view on how dependability is defined, as "sitting" on four pillars: availability (ability of a system to deliver services when requested), reliability (ability to deliver as specified), safety (operation without "catastrophic" failure) and security (ability to be protected against accidental or deliberate intrusion). Another reason to persuade you to read this chapter, was to find out the difference between safety-critical and mission-critical systems (is not one and the same!!). First interesting stuff I wanted to share here, is about reliability metrics (picture here above). Those are taken over from hardware reliability field and therefore should be carefully applied to software, considering the type of system and use case where software will be deployed.
The Formal specifications has also many take-aways, indeed very insightful and interesting, but to me, the one to the right here, called my attention: compare between software development costs, with and without formal specification.
Chapter 18, Software reuse, is definitely one worth-reading, not only because of the technical insights, but mainly because it brings closer one to the other, technical to business related aspects. Below a snapshot of the main approaches for software reuse (same chapter mentions also about main benefits and problems related to it)
Chapter 20, Critical systems development, another one highly tempting, is about development methods for critical systems. To the left is the (widely known) graphical dependency between cost of removal of detected errors and their number. Along with that, the text contains also seven key engineering practices to cope with errors in dependent software. You'll also find in this chapter explanations and background information on some of the architectural requirements from IEC61508, like forward/backward error recovery, or N-version programming, or recovery blocks.
Software evolution chapter diagrams is especially attractive due to many eye-catching diagrams, pies, charts, about cost distribution and cost evolution. Here to the left, an overview of the maintenance distribution effort (maintanance being known as the most "expensive" phase of software lifecycle), along with some contributing factors.
Some industry-proven maintenance predictions (here to the right) should be appealing too, since (as author says) "managers hate surprises".
Chapter 26 goes even deeper into exploring software costs and deals with software productivity metrics and cost estimation techniques (among them, the famous COCOMO model).
The last snapshot I have (here below) is about software metrics. I found really exciting this overveiw of them, to the left for the software as a product, to the right, object-oriented metrics.
To conclude, I want to emphasize once again on the personality of Ian Sommerville, as a professor, software reasearcher and thinker, and, interestingly, also author of an open letter to NHS (some many years ago) to call for an independent audit of NHS IT Systems, following one of the worlds' largest government investment programs.
Delivery Manager at Wipro specializing in Embedded Software Systems, Functional Safety and building high performance teams.
4 年Wonderfully Written! Thanks for pointers Bogdan. Can you suggest/write a review for book which suggest Architectural Design aspects of SW focusing Functional Safety (26262/61508 etc.)?
Software Engineeing Consultant at RDR Software
4 年I am currently using it for my class in advanced software engineering .