Essentials of Software Engineering, 5th Edition
- Length: 450 pages
- Edition: 5
- Language: English
- Publisher: Jones & Bartlett Learning
- Publication Date: 2022-02-07
- ISBN-10: 1284228991
- ISBN-13: 9781284228991
- Sales Rank: #0 (See Top 100 Books)
Written for the undergraduate, 1-term course, Essentials of Software Engineering provides students with a systematic engineering approach to software engineering principles and methodologies. Comprehensive yet concise, the new edition covers some of the latest improvements in technology and tools, while reducing areas that are becoming less relevant. In-depth coverage of key issues, combined with a strong focus on software quality, makes Essentials of Software Engineering the perfect text for students entering the fast-growing and lucrative field of software development. The text includes thorough overviews of programming concepts, system analysis and design, principles of software engineering, development and support processes, methodologies, software testing, quality assurance, and product management, while incorporating real-world examples throughout. Key Features Presents a broad coverage of the software engineering field that lends itself well to an introductory course. Clearly differentiates and explains software engineering from the subtopics of software processes, software development, and software management. Expanded coverage of continuous integration and Agile methodologies. New coverage of contemporary design and development ideas, including SOA, microservices, virtualization, and containerization.
Cover Title Page Copyright Page Contents Preface About the Author 1 Creating a Program 1.1 A Simple Problem 1.1.1 Decisions, Decisions 1.1.2 Functional Requirements 1.1.3 Nonfunctional Requirements 1.1.4 Design Constraints 1.1.5 Design Decisions 1.2 Testing 1.3 Estimating Effort 1.4 Implementations 1.4.1 A Few Pointers on Implementation 1.4.2 Basic Design 1.4.3 Unit Testing with JUnit 1.4.4 Implementation of StringSorter 1.4.5 User Interfaces 1.5 Summary 1.6 Review Questions 1.7 Exercises 1.8 References and Suggested Readings 2 Building a System 2.1 Characteristics of Building a System 2.1.1 Size and Complexity 2.1.2 Technical Considerations of Development and Support 2.1.3 Nontechnical Considerations of Development and Support 2.2 Building a Hypothetical System 2.2.1 Requirements of the Payroll System 2.2.2 Designing the Payroll System 2.2.3 Code and Unit Testing the Payroll System 2.2.4 Integration and Functional Testing of the Payroll System 2.2.5 Release of the Payroll System 2.2.6 Support and Maintenance 2.3 Coordination Efforts 2.3.1 Process 2.3.2 Product 2.3.3 People 2.4 Summary 2.5 Review Questions 2.6 Exercises 2.7 References and Suggested Readings 3 Engineering of Software 3.1 Examples and Characteristics of Software Failures 3.1.1 Project Failures 3.1.2 Software Product Failures 3.1.3 Coordination and Other Concerns 3.2 Software Engineering 3.2.1 What Is Software Engineering? 3.2.2 Definitions of Software Engineering 3.2.3 Relevancy of Software Engineering and Software 3.3 Software Engineering Profession and Ethics 3.3.1 Software Engineering Code of Ethics 3.3.2 Professional Behavior 3.4 Principles of Software Engineering 3.4.1 Davis’s Early Principles of Software Engineering 3.4.2 Royce’s More Modern Principles 3.4.3 Wasserman’s Fundamental Software Engineering Concepts 3.5 Summary 3.6 Review Questions 3.7 Exercises 3.8 References and Suggested Readings 4 Traditional Software Process Models 4.1 Software Processes 4.1.1 Goal of Software Process Models 4.1.2 The “Simplest” Process Model 4.2 Traditional Process Models 4.2.1 Waterfall Model 4.2.2 Chief Programmer Team Approach 4.2.3 Incremental Model 4.2.4 Spiral Model 4.3 A More Modern Process 4.3.1 General Foundations of Rational Unified Process Framework 4.3.2 The Phases of RUP 4.4 Entry and Exit Criteria 4.4.1 Entry Criteria 4.4.2 Exit Criteria 4.5 Process Assessment Models 4.5.1 SEI’s Capability Maturity Model 4.5.2 SEI’s Capability Maturity Model Integrated 4.6 Process Definition and Communication 4.7 Summary 4.8 Review Questions 4.9 Exercises 4.10 References and Suggested Readings 5 Agile Software Process Models 5.1 What Are Agile Processes? 5.2 Why Agile Processes? 5.3 Some Process Methodologies 5.3.1 Extreme Programming (XP) 5.3.2 The Crystal Family of Methodologies 5.3.3 The Unified Process as Agile 5.3.4 Scrum 5.3.5 Kanban Method: A New Addition to Agile 5.3.6 Open Source Software Development 5.3.7 Summary of Processes 5.4 Choosing a Process 5.4.1 Projects and Environments Better Suited for Each Kind of Process 5.4.2 Main Risks and Disadvantages of Agile Processes 5.4.3 Main Advantages of Agile Processes 5.5 Summary 5.6 Review Questions 5.7 Exercises 5.8 References and Suggested Readings 6 Requirements Engineering 6.1 Requirements Processing 6.1.1 Preparing for Requirements Processing 6.1.2 Requirements Engineering Process 6.2 Requirements Elicitation and Gathering 6.2.1 Eliciting High-Level Requirements 6.2.2 Eliciting Detailed Requirements 6.3 Requirements Analysis 6.3.1 Requirements Analysis and Clustering by Business Flow 6.3.2 Requirements Analysis and Clustering with Object-Oriented Use Cases 6.3.3 Requirements Analysis and Clustering by Viewpoint-Oriented Requirements Definition 6.3.4 Requirements Analysis and Prioritization 6.3.5 Requirements Traceability 6.4 Requirements Definition, Prototyping, and Reviews 6.5 Requirements Specification and Requirements Agreement 6.6 Summary 6.7 Review Questions 6.8 Exercises 6.9 References and Suggested Readings 7 Design: Architecture and Methodology 7.1 Introduction to Design 7.2 Architectural Design 7.2.1 What Is Software Architecture? 7.2.2 Views and Viewpoints 7.2.3 Meta-Architectural Knowledge: Styles, Patterns, Tactics, and Reference Architectures 7.2.4 A Network-Based Web Reference Architecture—REST 7.3 Detailed Design 7.3.1 Functional Decomposition 7.3.2 Relational Database Design 7.3.3 Designing for Big Data 7.3.4 Object-Oriented Design and UML 7.3.5 User-Interface Design 7.3.6 Some Further Design Concerns 7.4 HTML-Script-SQL Design Example 7.5 Summary 7.6 Review Questions 7.7 Exercises 7.8 References and Suggested Readings 8 Design Characteristics and Metrics 8.1 Characterizing Design 8.2 Some Legacy Characterizations of Design Attributes 8.2.1 Halstead Complexity Metric 8.2.2 McCabe’s Cyclomatic Complexity 8.2.3 Henry-Kafura Information Flow 8.2.4 A Higher-Level Complexity Measure 8.3 “Good” Design Attributes 8.3.1 Cohesion 8.3.2 Coupling 8.4 OO Design Metrics 8.4.1 Aspect-Oriented Programming 8.4.2 The Law of Demeter 8.5 User-Interface Design 8.5.1 Good UI Characteristics 8.5.2 Usability Evaluation and Testing 8.6 Summary 8.7 Review Questions 8.8 Exercises 8.9 References and Suggested Readings 9 Implementation 9.1 Introduction to Implementation 9.2 Characteristics of a Good Implementation 9.2.1 Programming Style and Coding Guidelines 9.2.2 Comments 9.3 Implementation Practices 9.3.1 Debugging 9.3.2 Assertions and Defensive Programming 9.3.3 Performance Optimization 9.3.4 Refactoring 9.3.5 Code Reuse 9.4 Virtualization and Containers 9.5 Developing for the Cloud 9.5.1 Infrastructure as a Service 9.5.2 Platform as a Service 9.5.3 Cloud Application Services 9.5.4 Cloud Services for Developers 9.5.5 Infrastructure as Code and DevOps 9.5.6 Advantages and Disadvantages of the Cloud 9.6 Summary 9.7 Review Questions 9.8 Exercises 9.9 References and Suggested Readings 10 Testing and Quality Assurance 10.1 Introduction to Testing and Quality Assurance 10.2 Testing 10.2.1 The Purposes of Testing 10.3 Testing Techniques 10.3.1 Equivalence-Class Partitioning 10.3.2 Boundary Value Analysis 10.3.3 Path Analysis 10.3.4 Combinations of Conditions 10.3.5 Automated Unit Testing and Test-Driven Development 10.3.6 An Example of Test-Driven Development 10.4 When to Stop Testing 10.5 Inspections and Reviews 10.6 Formal Methods 10.7 Static Analysis 10.8 Summary 10.9 Review Questions 10.10 Exercises 10.11 References and Suggested Readings 11 Configuration Management, Integration, and Builds 11.1 Software Configuration Management 11.2 Policy, Process, and Artifacts 11.2.1 Business Policy Impact on Configuration Management 11.2.2 Process Influence on Configuration Management 11.3 Configuration Management Framework 11.3.1 Naming Model 11.3.2 Storage and Access Model 11.4 Build and Integration and Build 11.5 Tools for Configuration Management 11.6 Managing the Configuration Management Framework 11.7 Summary 11.8 Review Questions 11.9 Exercises 11.10 References and Suggested Readings 12 Software Support and Maintenance 12.1 Customer Support 12.1.1 User Problem Arrival Rate 12.1.2 Customer Interface and Call Management 12.1.3 Technical Problem/Fix 12.1.4 Fix Delivery and Fix Installs 12.2 Product Maintenance Updates and Release Cycles 12.3 Change Control 12.4 Summary 12.5 Review Questions 12.6 Exercises 12.7 References and Suggested Readings 13 Software Project Management 13.1 Project Management 13.1.1 The Need for Project Management 13.1.2 The Project Management Process 13.1.3 The Planning Phase of Project Management 13.1.4 The Organizing Phase of Project Management 13.1.5 The Monitoring Phase of Project Management 13.1.6 The Adjusting Phase of Project Management 13.2 Some Project Management Techniques 13.2.1 Project Effort Estimation 13.2.2 Work Breakdown Structure 13.2.3 Project Status Tracking with Earned Value 13.2.4 Measuring Project Properties and Goal-Question-Metric (GQM) 13.3 Summary 13.4 Review Questions 13.5 Exercises 13.6 References and Suggested Readings 14 Epilogue and Some Contemporary Issues 14.1 Security and Software Engineering 14.2 Reverse Engineering and Software Obfuscation 14.3 Software Validation and Verification Methodologies and Tools 14.4 References and Suggested Readings APPENDIX A Essential Software Development Plan (SDP) APPENDIX B Essential Software Requirements Specifications (SRS) APPENDIX C Essential Software Design APPENDIX D Essential Test Plan Glossary Index
Donate to keep this site alive
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.