Software Engineering: Principles and Practice challenges the reader to appreciate the issues, design trade-offs and teamwork required for successful software development. This new edition has been brought fully up to date, with complete coverage of all aspects of the software lifecycle and a strong focus on all the skills needed to carry out software projects on time and within budget. Highlights of the third edition include:
Fully updated chapters on requirements engineering and software architecture.
New chapters on component-based software engineering, service orientation and global software development.
Extensive coverage of the human and social aspects of software development.
Balanced coverage of both traditional, heavyweight development and agile, lightweight development approaches such as Extreme Programming (XP).
Written to support both introductory and advanced software engineering courses, this book is invaluable for everyone in software development and maintenance who wants an accessible account of the problems incurred in large-scale software development and the proposed solutions. A companion Web site with additional resources for students and instructors can be found at www.wileyeurope.com/college/van vliet
Review By: Gerry Thompson 03/12/2010Hans Vliet's book is a comprehensive review of software engineering principles that can be applied either to commercial software development projects or for academic study of the software engineering process. The author begins by emphasizing that quantitative engineering principles can definitely be applied to the software development process. By using vivid examples, he convincingly argues for the necessity of applying sound engineering principles to the software development process. He approaches each topic as an instructor preparing his class for an in depth discussion.
Learning objectives are presented along with questions at the end of each chapter, which are categorized by the amount of effort required to address the question. This way the reader has the opportunity to explore each topic to the desired level of complexity. References for further reading are also included at the end of each chapter for a deeper level of study.
The author uses many real life examples to illustrate his points which bring meaning to the body of his work. He describes traditional software development concepts, such as the waterfall model, and currently popular techniques including agile and extreme programming. In these processes, the human element is very important in managing software development to which he describes various organizational models such as an agile team and the open source software development model. He asserts software quality is an integral part of software engineering, as well as cost estimation and project planning and control. He describes the software lifecycle model in detail from requirements engineering to software architectural elements, design, and testing. This comprehensive volume includes advanced topics such as user interface design, software reusability, component-based software engineering, service orientation, and global software development.
This book is well written, detailed, and brings the otherwise dry and complex topics into a clear and compelling focus. He uses stories of actual software projects gone hideously wrong to make his case for a systematic approach to software engineering that employs sound engineering principles. Rather than being an unwelcome imposition upon the creative programming process, the application of sound engineering principles is critical in assuring competent software design and implementation. He includes many examples of various design, team building, and software development models in an unbiased and informative manner.
Proper software engineering must include the correct methodology for the project at hand, so the author includes discussion of the strengths and weaknesses of the various models. Included under software management are numerous software life cycle models, configuration management topics, various organizational team models, and managing software quality, cost, planning, and control. He goes into great detail regarding software modeling, architecture, design, testing, and maintenance. This book is highly recommended for professionals involved software project management, design and implementation as well as those wishing to gain through insight into software engineering principles.