This first edition of the popular tutorial, Software Engineering, describes the current state of the practice of software engineering. This book begins with an overview of current issues and in particular the engineering of large complex systems. Its collection of landmark papers goes on to describe the problems that occur in developing software, and presents the concepts for system engineering of software intensive systems and of engineering software products as the solution to the "software crisis."
The text illustrates the phases of the software development life cycle: requirements, design, implementation, testing, and maintenance. Furthermore, it discusses the current practices in requirements and design, and defines software development methodologies, including a special emphasis on object-oriented tools and formal methods. The book also covers programming activities as they affect software engineering, details verification and validation throughout the software life cycle, and discusses software quality assurance, configuration management, and standards. In addition, the book covers project management and risk management concerns, and discusses the various life cycle process models including the spiral and incremental models.
Table of Contents:
List of Contributors.
Foreword (Barry Boehm, USC).
Chapter 1: Issues — The Software Crisis. Software's Chronic Crisis (W. Wayt Gibbs, Scientific American, September 1994).
No Silver Bullet: Essence and Accidents of Software Engineering (Frederick P. Brooks, Computer, 1987).
Chapter 2: System and Software System Engineering.
Engineering a Small System (Kurt Skytte, IEEE Spectrum, March 1994).
Software Systems Engineering: The Case for a New Discipline (Stephen J. Andriole and Peter A. Freeman, Software Engineering Journal, May 1993).
The Concept of Operations: The Bridge from Operational Requirements to Technical Specifications (Richard E. Fairley and Richard H. Thayer).
Chapter 3: Software Engineering.
Software Engineering (Roger S. Pressman).
Foreword: Software Engineering — A European Perspective (Freidrich L. Bauer).
Software Engineering — 20 Years On and 20 Years Back (J.N. Buxton, Journal of Systems and Software, Volume 13, 1990).
Chapter 4: Software Requirements Engineering and Software Design.
Software Requirements: A Tutorial (Stuart Faulk).
Software Design: An Introduction (David Budgen).
Design Methods for Concurrent and Real-Time Systems (Hussan Gomaa).
Computer Human Interface Software Development Survey (Robert J. Remington).
Chapter 5: Software Development Methodologies.
Object-Oriented Development (Linda M. Northrop).
Object-Oriented Systems Development: Survey of Structured Methods (A.G. Sutcliffe, Information and Software Technology, July/August 1991).
Structured Systems Analysis and Design Method (SSADM) (Caroline Ashworth, Information and Software Technology, April 1988).
A Review of Formal Methods (Robert Vienneau, extracted from A Review of Formal Methods, Kaman Science Corporation, May 26, 1993).
Chapter 6: Coding.
Structured Programming: Retrospect and Prospect (Harlan D. Mills, IEEE Software, November 1986).
The Programming Language (Dough Bell, Ian Morrey, and John Pugh).
Chapter 7: Software Validation, Verification, and Testing.
Software Verification and Validation (Roger Fujii and Dolores R. Wallace).
Software Inspections and the Cost-Effective Production of Reliable Software (A. Frank Ackerman).
Reviews and Audits (John J. Marciniak).
Traceability (James D. Palmer).
A Review of Software Testing (P. David Coward, Information and Software Technology, April 1988).
Chapter 8: Software Maintenance.
Software Maintenance: A Tutorial (Keith Bennett).
Chapter 9: Software Quality and Quality Assurance.
Software Quality Assurance: A Survey of an Emerging View (Patricia W. Hurst).
Elements of Software Configuration Management (Edward H. Bersoff, IEEE Transactions on Software Engineering, January 1984).
Evaluating Software Engineering Standards (Shari Lawrence Pfleeger, Norman Fenton, and Stella Page, IEEE Software, September 1994).
Software-Reliability Engineering: Technology for the 1990s (John D. Musa and William W. Everett, IEEE Software, November 1990).
Chapter 10: Software Project Management.
The Mythical Man-Month (Frederick P. Brooks Jr., Datamation, December 1974).
Software Engineering Project Management (Richard H. Thayer).
Why Does Software Cost so Much? (Tom DeMarco, IEEE Software, March 1993).
Software Cost Estimation (F.J. Heemstra, Information and Software Technology, October 1992).
Risk Management for Software Development (Richard E. Fairley and Paul Rook).
Chapter 11: Software Development Process.
Alternative Software Life Cycle Models (Edward R. Comer, Aerospace Software Engineering: A Collection of Concepts, American Institute of Aeronautics, 1991).
A Spiral Model of Software Development and Enhancement (Barry W. Boehm, Computer, May 1988).
Capability Maturity Model for Software (Mark C. Paulk, Bill Curtis, Mary Beth Chrissis, and Charles V. Weber).
Chapter 12: Software Technology.
The Re-engineering and Reuse of Software (Patrick A.V. Hall and Lingzi Jin).
Prototyping: Alternate Systems Development Methodology (J.M. Carey, Information and Software Technology, March 1990)
A Classification of CASE Technology (Alfonso Fuggetta, Computer, December 1993).
A Guidebook and a Spreadsheet Tool for a Corporate Metrics Program (Ronald E. Nusenoff and Dennis C. Bunde, Journal of Systems and Software, Volume 23, 1993).
Industrial Software Metrics Top 10 List (Barry Boehm, IEEE Software, September 1987).
Chapter 13: Software Engineering Education.
Education for Computing Professionals (David L. Parnas, Computer, January 1990).
A Software Engineering Bibliography (David Budgen and Pearl Brereton).
Software Engineering Standards (Richard H. Thayer).
Software Engineering Survey Results (Merlin Dorfman).