Carlo Ghezziis a professor of computer science at the Politecnico di Milano, where he holds the chair of software engineering. He was named a Fellow of the Association for Computing Machinery in 2000 for his contributions to software engineering research.
Mehdi Jazayeriis a professor of computer science at the Technische Universität Wien, where he holds the chair of distributed systems. He spent many years in software development at several Silicon
more >>
Carlo Ghezziis a professor of computer science at the Politecnico di Milano, where he holds the chair of software engineering. He was named a Fellow of the Association for Computing Machinery in 2000 for his contributions to software engineering research.
Mehdi Jazayeriis a professor of computer science at the Technische Universität Wien, where he holds the chair of distributed systems. He spent many years in software development at several Silicon Valley companies, including 10 years at Hewlett-Packard Laboratories, Palo Alto, CA.
Dino Mandrioliis a professor of computer science at the Politecnico di Milano, where he holds the chair of theoretical computer science. His research interests are centered on the application of formal methods in the practice of software engineering.
The long-awaited second edition ofFundamentals of Software Engineeringpresents the fundamental principles of software engineering and illustrates the application of those principles in the different phases of software development. It stresses the importance of a rigorous approach to the practice of software engineering. Over 350 exercises are provided to aid in the comprehension of the material. Over 20 in-depth case studies show how to deal with the intricacies of real-world problems.
This second edition maintains the successful structure of the first edition and enhances the contents by adding treatment of recent developments in software engineering.
New coverage to this edition includes:
- More thorough treatment of object orientation
- Greater coverage of software architecture and components
- Introduction to modeling languages Z and UML
- Description and case study of requirements engineering
- New validation techniques, including model checking
- Quality improvement paradigms, including GQM and CMM
- More material on software processes, including the unified process
- Several new case studies on process, requirements, design, organization, and systems engineering
- A comprehensive supplement package, including an Instructor's Resource CD and a Companion Website.
Preface to the Second Edition
The first edition of this book was published in 1991. Since then, there has been a lot of progress in computing technology and also in software engineering. Certainly the proliferation of the Internet has had a profound influence on education, research, development, business, and commerce. We decided to produce this second edition in order to bring the book up to date with respect to the advances in software engineering in the last 10 years.
We were pleased to find that the basic premise of the bookthe durability and importance of principleshas been borne out by the passage of time: Even though the technology has improved, principles of software engineering have remained the same. We have therefore been able to update every chapter without changing the original structure of the book. The following is still the structure:
- Introduction: Chapters 1-3;
- The product: Chapters 4 -6;
- Process and management: Chapters 7 -8;
- Tools and environments: Chapter 9.
The product-related chapters follow the sequence consisting of design (4), specification (5), and verification (6). This is different from the approach taken by other books, which cover specification before design. The reason for our choice follows from the principles-based approach of the book. All of these activitiesdesign, specification, and verificationare basic activities that must be learned and applied throughout the software life cycle. For example, design is something we do not only with software architecture, but also with software specifications. The modular design approach helps us structure software and also the specification documents. Other books present specificat
<< less