Page iii
Software Engineering
A Practitioners Approach
NINTH EDITION
Roger S. Pressman, Ph.D.
Bruce R. Maxim, Ph.D.
Page iv
SOFTWARE ENGINEERING: A PRACTITIONERS APPROACH
Published by McGraw-Hill Education, 2 Penn Plaza, New York, NY 10121. Copyright 2020 by McGraw-Hill Education. All rights reserved. Printed in the United States of America. No part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written consent of McGraw-Hill Education, including, but not limited to, in any network or other electronic storage or transmission, or broadcast for distance learning.
Some ancillaries, including electronic and print components, may not be available to customers outside the United States.
This book is printed on acid-free paper.
1 2 3 4 5 6 7 8 9 LCR 24 23 22 21 20 19
ISBN 978-1-260-54800-6 (bound edition)
MHID 1-260-54800-7 (bound edition)
Cover Image: R.L. Hausdorf/Shutterstock
All credits appearing on page or at the end of the book are considered to be an extension of the copyright page.
The Internet addresses listed in the text were accurate at the time of publication. The inclusion of a website does not indicate an endorsement by the authors or McGraw-Hill Education, and McGraw-Hill Education does not guarantee the accuracy of the information presented at these sites.
mheducation.com/highered
Page v
To Barbara, Matt, Mike,
Shiri, Adam, Lily,
and Maya.
Roger S. Pressman
To my family who
support me in all
that I do.
Bruce R. Maxim
Page vi
A bout the A uthor
Courtesy of Roger Pressman
Roger S. Pressman is an internationally recognized consultant and author in software engineering. For almost five decades, he has worked as a software engineer, a manager, a professor, an author, a consultant, and an entrepreneur.
Dr. Pressman was president of R. S. Pressman & Associates, Inc., a consulting firm that specialized in helping companies establish effective software engineering strategies. Over the years he developed a set of techniques and tools that improved software engineering practice. He is also the founder and chief technology officer of EVANNEX, an automotive aftermarket company that specializes in the design and manufacture of accessories for the Tesla line of electric vehicles.
Dr. Pressman is the author of ten books, including two novels, and many technical and management papers. He has been on the editorial boards of IEEE Software and The Cutter IT Journal and was editor of the Manager column in IEEE Software.
Dr. Pressman is a well-known speaker, keynoting a number of major industry conferences. He has presented tutorials at the International Conference on Software Engineering and at many other industry meetings. He has been a member of the ACM, IEEE, Tau Beta Pi, Phi Kappa Phi, Eta Kappa Nu, and Pi Tau Sigma.
Michigan Creative/UM-Dearborn
Bruce R. Maxim has worked as a software engineer, project manager, professor, author, and consultant for more than thirty years. His research interests include software engineering, user experience design, serious game development, artificial intelligence, and engineering education.
Dr. Maxim is professor of computer and information science and collegiate professor of engineering at the University of MichiganDearborn. He established the GAME Lab in the College of Engineering and Computer Science. He has published papers on computer algorithm animation, game development, and engineering education. He is coauthor of a best-selling introductory computer science text and two edited collections of software engineering research papers. Dr. Maxim has supervised several hundred industry-based software development projects as part of his work at the University of MichiganDearborn.
Dr. Maxims professional experience includes managing research information systems at a medical school, directing instructional computing for a medical campus, and working as a statistical programmer. Dr. Maxim served as the chief technology officer for a game development company.
Dr. Maxim was the recipient of several distinguished teaching awards, a distinguished community service award, and a distinguished faculty governance award. He is a member of Sigma Xi, Upsilon Pi Epsilon, Pi Mu Epsilon, Association of Computing Machinery, IEEE Computer Society, American Society for Engineering Education, Society of Women Engineers, and International Game Developers Association.
Page vii
C ontents At a G lance
Page viii
Page ix
T able of C ontents
Page x
Page xi
Page xii
Page xiii
Page xiv
Page xv
Page xvi
Page xvii
Page xviii
Page xix
Page xx
Page xxi
Page xxii
Page xxiii
Page xxiv
Page xxv
Page xxvi
Page xxvii
P reface
When computer software succeedswhen it meets the needs of the people who use it, when it performs flawlessly over a long period of time, when it is easy to modify and even easier to useit can and does change things for the better. But when software failswhen its users are dissatisfied, when it is error prone, when it is difficult to change and even harder to usebad things can and do happen. We all want to build software that makes things better, avoiding the bad things that lurk in the shadow of failed efforts. To succeed, we need discipline when software is designed and built. We need an engineering approach.
It has been nearly four decades since the first edition of this book was written. During that time, software engineering has evolved from an obscure idea practiced by a relatively small number of zealots to a legitimate engineering discipline. Today, it is recognized as a subject worthy of serious research, conscientious study, and tumultuous debate. Throughout the industry, software engineer has replaced programmer or coder as the job title of preference. Software process models, software engineering methods, and software tools have been adopted successfully across a broad spectrum of industry segments.
Although managers and practitioners alike recognize the need for a more disciplined approach to software, they continue to debate the manner in which discipline is to be applied. Many individuals and companies still develop software haphazardly, even as they build systems to service todays most advanced technologies. Many professionals and students are unaware of modern methods. And as a result, the quality of the software that we produce suffers, and bad things happen. In addition, debate, and controversy about the true nature of the software engineering approach continue. The status of software engineering is a study in contrasts. Attitudes have changed, progress has been made, but much remains to be done before the discipline reaches full maturity.
Next page