Software Engineering: Theory and Practice, 4th edition
Published by Pearson (February 17, 2009) © 2010
- Shari Lawrence Pfleeger
- Joanne M. Atlee
- Hardcover, paperback or looseleaf edition
- Affordable rental option for select titles
For introductory courses in Software Engineering.
This introduction to software engineering and practice addresses both procedural and object-oriented development. The book applies concepts consistently to two common examples — a typical information system and a real-time system. It combines theory with real, practical applications by providing an abundance of case studies and examples from the current literature. This revision has been thoroughly updated to reflect significant changes in software engineering, including modeling and agile methods.• Extensive coverage of object-oriented development, a programming perspective being implemented by many companies.
¿
• Discussion of key issues in software engineering: risk management, technology transfer, and the role of decision-making in software engineering.
¿
• Integrated treatment of concepts such as reuse, risk management, and quality engineering — Embeds discussion of these topics in the software engineering activities that are affected by them, instead of treating them as separate issues.
¿
• Discussion of measurement issues as an integral part of software engineering strategy, rather than as a separate discipline.
¿
• Examination of legal and ethical issues in software engineering — Poses thought-provoking questions at the end of each chapter.
• The Companion Website http://wps.prenhall.com/esm_pfleeger_softengtp_4/ provides additional materials to be used with the text in support of software engineering classes and other readers wanting to expand their knowledge of software engineering. Each section corresponds to a chapter of the book. This site also links to additional resources, real world examples, and articles related to many topics in the book. It provides resources for both students and instructors.
Chapters 5 and 6 in the new edition now provide significant, concrete advice on how to approach a design problem on two levels:
System Level — Chapter 5 has been significantly revised to focus just on architectural design: In addition to architectural styles (which were in the third edition), the new chapter includes architectural views and advice on combining views, tactics for revising an architecture to improve quality attributes, and software product lines.Â
Component Level — Chapter 6 has been entirely rewritten to focus on design advice in the modeling and designing of software modules (e.g., components, objects). There is extensive coverage of general design principles, object-oriented design principles, and design patterns.Â
Preface       Â
1         Why Software Engineering?        Â
1.1    What Is Software Engineering?     Â
1.2    How Successful Have We Been?    Â
1.3    What Is Good Software?    Â
1.4    Who Does Software Engineering?  Â
1.5Â Â Â Â A Systems Approach
1.6    An Engineering Approach    Â
1.7Â Â Â Â Members of the Development Team
1.8    How Has Software Engineering Changed? Â
1.9    Information Systems Example       Â
1.10   Real-Time Example  Â
1.11   What this Chapter Means for You  Â
1.12   What this Chapter Means for Your Development Team   Â
1.13Â Â Â What this Chapter Means for ResearchersÂ
1.14Â Â Â Term ProjectÂ
1.15   Key References      Â
1.16   Exercises     Â
2         Modeling the Process and Life Cycle     Â
2.1    The Meaning of Process     Â
2.2    Software Process Models   Â
2.3Â Â Â Â Tools and Techniques for Process Modeling
2.4    Practical Process Modeling Â
2.5Â Â Â Â Information System Example
2.6    Real-Time Example  Â
2.7    What this Chapter Means for You  Â
2.8    What this Chapter Means for Your Development Team   Â
2.9Â Â Â Â What this Chapter Means for ResearchersÂ
2.10Â Â Â Term ProjectÂ
2.11   Key References      Â
2.12   Exercises     Â
3         Planning and Managing the Project       Â
3.1    Tracking Progress   Â
3.2    Project Personnel    Â
3.3    Effort Estimation     Â
3.4    Risk Management    Â
3.5    The Project Plan     Â
3.6    Process Models and Project Management Â
3.7Â Â Â Â Information System Example
3.8    Real-Time Example  Â
3.9    What this Chapter Means for You  Â
3.10   What this Chapter Means for Your Development Team   Â
3.11Â Â Â What this Chapter Means for ResearchersÂ
3.12Â Â Â Term ProjectÂ
3.13   Key References      Â
3.14   Exercises     Â
4         Capturing the Requirements       Â
4.1    The Requirements Process  Â
4.2    Requirements Elicitation     Â
4.3    Types of Requirements      Â
4.4    Characteristics of Requirements    Â
4.5    Modeling Notations  Â
4.6Â Â Â Â Requirements and Specification Languages
4.7    Prototyping Requirements   Â
4.8    Requirements Documentation        Â
4.9    Validation and Verification  Â
4.10   Measuring Requirements     Â
4.11Â Â Â Choosing a Specification Technique
4.12   Information Systems Example       Â
4.13   Real-Time Example  Â
4.14Â Â Â Term ProjectÂ
4.15   Key References      Â
4.16   Exercises     Â
5         Designing the Architecture          Â
5.1    The Design Process Â
5.2    Decomposition and Views   Â
5.3    Modeling Architectures      Â
5.4Â Â Â Â Architectural Styles and Strategies
5.5Â Â Â Â Achieving Quality Attributes
5.6Â Â Â Â Collaborative DesignÂ
5.7    Architecture Evaluation and Refinement   Â
5.8Â Â Â Â Documenting Software Architectures
5.9 Â Â Â Architecture Design Review
5.10   Software Product Lines      Â
5.11Â Â Â Information System Example
5.12   Real-Time Example  Â
5.13   What this Chapter Means for you  Â
5.14   What this Chapter Means for Your Development Team   Â
5.15Â Â Â What this Chapter Means for ResearchersÂ
5.16Â Â Â Term ProjectÂ
5.17   Key References      Â
5.18   Exercises     Â
6         Designing the Modules     Â
6.1Â Â Â Â Design MethodologyÂ
6.2    Design Principles     Â
6.3    Object-Oriented Design     Â
6.4Â Â Â Â Representing Object-Oriented Designs in the UMLÂ Â Â Â Â Â Â Â Â Â
6.5    Object-Oriented Design Patterns   Â
6.6Â Â Â Â Other Design Considerations
6.7Â Â Â Â Object-Oriented Measurement
6.8    Design Documentation                 Â
6.9    Information Systems Example       Â
6.10   Real-Time Example  Â
6.11   What this Chapter Means for You  Â
6.12   What this Chapter Means for your Development Team    Â
6.13Â Â Â What this Chapter Means for ResearchersÂ
6.14Â Â Â Term ProjectÂ
6.15   Key References      Â
6.16   Exercises     Â
7         Writing the Programs        Â
7.1    Programming Standards and Procedures   Â
7.2    Programming Guidelines      Â
7.3    Documentation       Â
7.4    The Programming Process   Â
7.5    Information Systems Example       Â
7.6    Real-Time Example  Â
7.7    What this Chapter Means for You  Â
7.8    What this Chapter Means for Your Development Team   Â
7.9Â Â Â Â What this Chapter Means for ResearchersÂ
7.10Â Â Â Term ProjectÂ
7.11   Key References      Â
7.12   Exercises     Â
8         Testing the Programs       Â
8.1Â Â Â Â Software Faults and Failures
8.2    Testing Issues        Â
8.3    Unit Testing Â
8.4    Integration Testing Â
8.5    Testing Object-Oriented Systems  Â
8.6Â Â Â Â Test Planning
8.7    Automated Testing Tools   Â
8.8    When to Stop Testing       Â
8.9    Information Systems Example       Â
8.10   Real-Time Example  Â
8.11   What this Chapter Means for You  Â
8.12   What this Chapter Means for Your Development Team   Â
8.13Â Â Â What this Chapter Means for ResearchersÂ
8.14Â Â Â Term ProjectÂ
8.15   Key References      Â
8.16   Exercises     Â
9Â Â Â Â Â Â Â Â Â Testing the System
9.1Â Â Â Â Principles of System Testing
9.2    Function Testing     Â
9.3Â Â Â Â Performance TestingÂ
9.4    Reliability, Availability, and Maintainability Â
9.5Â Â Â Â Acceptance TestingÂ
9.6    Installation Testing Â
9.7Â Â Â Â Automated System TestingÂ
9.8Â Â Â Â Test DocumentationÂ
9.9    Testing Safety-Critical Systems    Â
9.10   Information Systems Example       Â
9.11   Real-Time Example  Â
9.12   What this Chapter Means for You  Â
9.13   What this Chapter Means for Your Development Team   Â
9.14Â Â Â What this Chapter Means for ResearchersÂ
9.15Â Â Â Term ProjectÂ
9.16   Key References      Â
9.17   Exercises     Â
10       Delivering the System      Â
10.1   Training       Â
10.2   Documentation       Â
10.3   Information Systems Example       Â
10.4   Real-Time Example  Â
10.5   What this Chapter Means for You  Â
10.6   What this Chapter Means for your Development Team    Â
10.7Â Â Â What this Chapter Means for ResearchersÂ
10.8Â Â Â Term ProjectÂ
10.9   Key References      Â
10.10 Exercises     Â
11       Maintaining the System   Â
11.1   The Changing System        Â
11.2Â Â Â The Nature of MaintenanceÂ
11.3   Maintenance Problems       Â
11.4   Measuring Maintenance Characteristics    Â
11.5Â Â Â Maintenance Techniques and Tools
11.6   Software Rejuvenation      Â
11.7   Information Systems Example       Â
11.8   Real-Time Example  Â
11.9   What this Chapter Means for You  Â
11.10 What this Chapter Means for Your Development Team   Â
11.11Â What this Chapter Means for ResearchersÂ
11.12Â Term ProjectÂ
11.13 Key References      Â
11.14 Exercises     Â
12       Evaluating Products, Processes, and Resources        Â
12.1   Approaches to Evaluation   Â
12.2Â Â Â Selecting an Evaluation TechniqueÂ
12.3   Assessment vs. Prediction  Â
12.4   Evaluating Products Â
12.5Â Â Â Evaluating Processes
12.6Â Â Â Evaluating Resources
12.7   Information Systems Example       Â
12.8   Real-Time Example  Â
12.9   What this Chapter Means for You  Â
12.10 What this Chapter Means for Your Development Team   Â
12.11Â What this Chapter Means for ResearchersÂ
12.12Â Term ProjectÂ
12.13 Key References      Â
12.14 Exercises     Â
13       Improving Predictions, Products, Processes, and Resources          Â
13.1Â Â Â Improving PredictionÂ
13.2   Improving Products Â
13.3Â Â Â Improving ProcessesÂ
13.4Â Â Â Improving ResourcesÂ
13.5   General Improvement Guidelines    Â
13.6   Information Systems Example       Â
13.7   Real-Time Example  Â
13.8   What this Chapter Means For You Â
13.9   What this Chapter Means for your Development Team    Â
13.10Â What this Chapter Means for ResearchersÂ
13.11Â Term ProjectÂ
13.12 Key References      Â
13.13 Exercises     Â
14       The Future of Software Engineering      Â
14.1Â Â Â How Have We Done?
14.2Â Â Â Technology TransferÂ
14.3   Decision-Making in Software Engineering  Â
14.4   The Professionalization of Software Engineering: Licensing, Certification, and Ethics  Â
14.5Â Â Â Term ProjectÂ
14.6   Key References      Â
14.7   Exercises     Â
Annotated Bibliography      Â
IndexÂ
Â
Shari Lawrence Pfleeger (Ph.D., Information Technology and Engineering, George Mason University; M.S., Planning, The Pennsylvania State University; M.A., Mathematics, The Pennsylvania State University; B.A., Mathematics with high honors, Harpur College, Binghamton, NY) is a senior researcher at RAND’s Arlington, VA office where she helps organizations and government agencies understand whether and how information technology supports their mission and goals. Dr. Pfleeger began her career as a mathematician and then a software developer and maintainer for real-time, business-critical software systems. From 1982 to 2002, Dr. Pfleeger was president of Systems/Software, Inc., a consultancy specializing in software engineering and technology. From 1997 to 2000, she was also a visiting professor at the University of Maryland's computer science department. In the past, she was founder and director of Howard University's Center for Research in Evaluating Software Technology (CREST), and was a visiting scientist at the City University (London) Centre for Software Reliability, principal scientist at MITRE Corporation's Software Engineering Center, and manager of the measurement program at the Contel Technology Center (named by the Software Engineering Institute as one of the best such programs in the country). Dr. Pfleeger is well-known for her work in software quality, software assurance, and empirical studies of software engineering; she is particularly known for her multi-disciplinary approach to solving information technology problems.
She is also well-known for her publications, many of which are required reading in software engineering curricula, including "Software Engineering: Theory and Practice" (3rd edition, with Joanne Atlee, 2005, Prentice Hall), "Security in Computing" (3rd edition, with Charles P. Pfleeger, 2003, Prentice Hall), "Solid Software" (2001, with Les Hatton and Charles Howell, Prentice Hall), and "Software Metrics: A Rigorous and Practical Approach" (2nd edition, with Norman Fention, 1996, Boyd and Fraser Publishers). Dr. Pfleeger is book review editor for IEEE Security and Privacy. For several years, she was the associate editor-in-chief of IEEE Software, where she edited the Quality Time column, and then associate editor of IEEE Transactions on Software Engineering. From 1998 to 2002, she was a member of the editorial board of Prentice Hall's Software Quality Institute series. She is a senior member of IEEE, the IEEE Computer Society, and the Association for Computing Machinery.
Joanne M. Atlee is an Associate Professor in the School of Computer Science at the University of Waterloo. Her research program focuses on software modeling, documentation, and analysis, with a particular emphasis on what she calls practical formalisms: specification and design notations that are practitioner-friendly but have a precise semantics suitable for automated analysis. More recently, she has been working on configurable model-driven development, whereby modeling notations, analysis tools, and code generators can be configured via semantics parameters.
Atlee was the founding Director of Waterloo’s Software Engineering degree program. She served on the Steering Committee for the Computing Curricula Software Engineering volume, co-sponsored by IEEE-CS and ACM. She is the vice chair of the International Federation for Information Processing (IFIP) Working Group 2.9 on software requirements engineering. Atlee was the program-committee chair for the International Conference on Requirements Engineering in 2005 (RE'05), and will be co-chair of the program committee for the International Conference on Software Engineering in 2009 (ICSE'09). She is a co-author with Shari Lawrence Pfleeger on the textbook "Software Engineering - Theory and Practice."
Need help? Get in touch