Software Engineering presents a broad perspective on software systems engineering, concentrating on widely used techniques for developing large-scale systems. The objectives of this seventh edition are to include new material on iterative software development, component-based software engineering and system architectures, to emphasize that system dependability is not an add-on but should be considered at all stages of the software process, and not to increase the size of the book significantly. To this end the book has been restructured into 6 parts, removing the separate section on evolution as the distinction between development and evolution can be seen as artificial. New chapters have been added Socio-technical Systems ¿ discussing the context of software in a broader system composed of other hardware and software, people, organisations, policies, procedures and laws. Application System Architectures ¿ to teach students the general structure of application systems such as transaction systems, information systems and embedded control systems. The chapter covers 6 common system architectures with an architectural overview and discussion of the characteristics of these types of system. Iterative Software Development ¿ looking at prototyping and adding new material on agile methods and extreme programming. Component-based Software Engineering ¿ introducing the notion of a component, component composition and component frameworks and covering design with reuse. Software Evolution ¿ revising the presentation of the 6th edition to cover re-engineering and software change in a single chapter. The book supports students taking undergraduate or graduate courses in software engineering, and software engineers in industry needing to update their knowledge.
Read this with a book club at work. It's a great book filled with lots of arcihtecture and best design concepts. It's defiintely a book I'll need to go back and reread a couple times.
Well, I know this borders on cheating, but I hope you will forgive me. It is 6 p.m. Eastern Time (3 p.m. here, in California) on 12/31/2014. I have read 99 books in 2014 and I pledged to read 100. I hate breaking pledges, so I will briefly review the textbook I have been teaching from all year. I had to read over 50 pages of the textbook today while grading the final exam, so I hope this justifies the inclusion of this review here.
I had taught Software Engineering, since mid-1990s, from various textbooks before I found Sommerville, Edition 6. Now I teach from the most current Edition 9, which is a truly mature textbook. It is divided, quite logically, into four main parts: Introduction to Software Engineering, Dependability and Security, Advanced Software Engineering, and Software Management. These parts comprise 26 content-packed chapters that I all manage to cover in the Software Engineering course. Sommerville is by far the best textbook on the subject I have ever read. The best feature of the text is that it is comprehensive, deep enough, and readable, if a bit boring (simply because the subject is quite boring).
Of course, I have minor qualms as to the allocation of space for individual topics. I would use more space for the Web-based programming and portable-device programming and less on obsolete concepts such as, say, the spiral model. I would expand space dedicated to agile methods. I am sure this will all come in the next edition.
My students programmatically do not like textbooks from which they are learning, yet they tolerate this one, and they do read all 716 pages (and are quizzed on all the material). This is another indication that it is quite a good textbook.
To lighten this overly serious review, let me quote a funny bit from Edition 8 of this textbook. Sommerville listed factors that influence programmers' productivity. One of these factors was termed "Outside awareness". The explanation made it clear that "outside awareness" meant "a window". Don't you love euphemisms?
I think this book is more useful for managers than programmers and Code Complete, the other textbook for my software engineering class, is much better for developers (as such, me right now). However, if you're interested in learning about different software engineering methods and styles of work / management / planning / cycles then this is pretty good. It goes into more detail than Code Complete on different styles of collective coding.
A seminal volume in the software engineering world. If you are serious about improving your credentials as a true software engineer, you simply must read this text.
An awful lot of the ideas in this book have been embedded into the requirement definition in my employer, and I would suspect throughout large portions of the industry. As a result, the book now reads like a long list of blindingly obvious points. I've been reading First 6th Chapters of this book in a Software Engineering course at the university.
Easy to understand for those learning about the foundations of software engineering. I found the writing to be a bit opinionated at times, for example the author’s opinion on Model Based SE. Overall, thorough book that ties in Software Systems Engineering well.
This book is very good for any one in software field. Some times I lost in the examples. But overall, you can depend on it. I studied it in 2003, but I use it again in 2012 and 2013 and I think I will use it again.
It's a textbook. I would have given it 3.5 stars, but I cannot give it a half-star, and I don't think it deserves a 3-star rating.
The book covers a lot of ground, from an intro to processes, engineering, refinement, improvement, modeling, architecture, and more to advanced concepts such as security, SOA, and different system types. The book is highly academic and was used in my master's course at TESU (SWT-571) alongside Code Complete as a companion book. Overall, the content needs to be updated as some of these concepts have not aged well. Likewise, a lot of the content is not overly practical, but instead, the academic theoretical knowledge may struggle to be applied by new software engineers in the business. As someone who works as a Senior Software Engineer at a mid-sized SaaS firm, I can say that I would not expect folks reading this to know some of the concepts, nor would I feel like someone working through the content would be adequately prepared for a job.
A lot more needs to be said these days surrounding CI/CD, cloud computing, Infrastructure as Code, elasticity, reliability, and scalability. Some of the practices in this book use terminology and references to software and tooling over a decade old. The industry moves fast. Books like these don't remain on par for long.
While the book is academic, it is at least logically written and somewhat consumable as a textbook for a student, which remains tolerable. Software engineers looking for a management track may find this textbook more valuable. Still, it does leave a lot to be desired, which remains a shortcoming of the author and academia geared toward the software industry.
The book covers all the essential topics that you have to master to move from "software developer" to "software engineer". In particular, I liked how it covers the software engineering from a theoretical point of view, trying to provide useful guidelines and a systematic approach to the discipline. Sure, as I say in CS textbooks' reviews - if you expect to read 1 book on the topic, it is better for you to change profession. In addition, some topics may not be understandable immediately, without practical experience. I refer to problems of enterprise software engineering and other domains with strict, established processes, like aeronautics or healthcare domain. But, in the general, the manual does a fantastic job of highlighting different topics that are important to learn as a software engineer. Just, consider it as the starting point, not "all-in-one".
I read this book as part of a software methodology course on my computer science education. Where the book truly shines is at its thorough core of process and methodology explanations. For this reason alone I would recommend reading the book, but as a modern approach to learn about the processes the book is unfortunately quite heavy and self repeating. I will most likely use this book as a glossary, in case I forget the name of a concept in the future.
Heady technical book for class. Not much else to say, class didn't follow the book, but it is insightful and helped with many core concepts. The topic is so fluid that any one perspective (or book) is just good as a resource for critical thought, this book is no different. If you are into concrete concepts to abstract applications (as in uses not programs) this book will help. If you prefer open-ended abstract principals in software engineering, I would not choose this one.
The book itself is easy to understand and covers the surface quite well. However, it is not really helpful for developers to achieve better and smoother workflow. Would recommend it to people such as business managers to grab some basic idea of how an SWE project works.
İçinde süreçler, yönetim, test, mimari, sistemler ve temel yazılımla alakalı akla gelebilecek her konuya değinen bir kaynak. Teoriden ziyade iş hayatında zamanla edinilen pratik bilgiyle de harmanlandığında mükemmel bir başvuru, pekiştirme kitabı oluyor.
Good theories only hold themselves if you are using them constantly. This is a good textbook with a readable level, will be a good foundation for people who want to understand the basics