关于我们
书单推荐
新书推荐
|
软件工程:实践者的研究方法(英文版·原书第9版)
本书是软件工程领域的经典著作,自第1版出版至今,几十年来在软件工程界产生了巨大而深远的影响。本书涵盖软件过程、建模、质量管理、项目管理等主题,对概念、原则、方法和工具的介绍细致、清晰且实用。
CHAPTER 1SOFTWARE AND SOFTWARE
ENGINEERING.1 1.1The Nature of Software.4 1.1.1Defining Software.5 1.1.2Software Application Domains.7 1.1.3Legacy Software.8 1.2Defining the Discipline.8 1.3The Software Process.9 1.3.1The Process Framework.10 1.3.2Umbrella Activities.11 1.3.3Process Adaptation.11 1.4Software Engineering Practice.12 1.4.1The Essence of Practice.12 1.4.2General Principles.14 1.5How It All Starts.15 1.6Summary.17 PART ONETHE SOFTWARE PROCESS.19 CHAPTER 2PROCESS MODELS.20 2.1A Generic Process Model.21 2.2Defining a Framework Activity.23 2.3Identifying a Task Set.23 2.4Process Assessment and Improvement.24 2.5Prescriptive Process Models.25 2.5.1The Waterfall Model.25 2.5.2Prototyping Process Model.26 2.5.3Evolutionary Process Model.29 2.5.4Unified Process Model.31 2.6Product and Process.33 2.7Summary.35 CHAPTER 3AGILITY AND PROCESS.37 3.1What Is Agility?.38 3.2Agility and the Cost of Change.39 3.3What Is an Agile Process?.40 3.3.1Agility Principles.40 3.3.2The Politics of Agile Development.41 3.4Scrum.42 3.4.1Scrum Teams and Artifacts.43 3.4.2Sprint Planning Meeting.44 3.4.3Daily Scrum Meeting.44 3.4.4Sprint Review Meeting.45 3.4.5Sprint Retrospective.45 3.5Other Agile Frameworks.46 3.5.1The XP Framework.46 3.5.2Kanban.48 3.5.3DevOps.50 3.6Summary.51 CHAPTER 4RECOMMENDED PROCESS MODEL.54 4.1Requirements Definition.57 4.2Preliminary Architectural Design.59 4.3Resource Estimation.60 4.4First Prototype Construction.61 4.5Prototype Evaluation.64 4.6Go, No-Go Decision.65 4.7Prototype Evolution.67 4.7.1New Prototype Scope.67 4.7.2Constructing New Prototypes.68 4.7.3Testing New Prototypes.68 4.8Prototype Release.68 4.9Maintain Release Software.69 4.10Summary.72 CHAPTER 5HUMAN ASPECTS OF SOFTWARE ENGINEERING.74 5.1Characteristics of a Software Engineer.75 5.2The Psychology of Software Engineering.75 5.3The Software Team.76 5.4Team Structures.78 5.5The Impact of Social Media.79 5.6Global Teams.80 5.7Summary.81 PART TWOMODELING.83 CHAPTER 6PRINCIPLES THAT GUIDE PRACTICE.84 6.1Core Principles.85 6.1.1Principles That Guide Process.85 6.1.2Principles That Guide Practice.86 6.2Principles That Guide Each Framework Activity.88 6.2.1Communication Principles.88 6.2.2Planning Principles.91 6.2.3Modeling Principles.92 6.2.4Construction Principles.95 6.2.5Deployment Principles.98 6.3Summary.100 CHAPTER 7UNDERSTANDING REQUIREMENTS.102 7.1Requirements Engineering.103 7.1.1Inception.104 7.1.2Elicitation.104 7.1.3Elaboration.104 7.1.4Negotiation.105 7.1.5Specification.105 7.1.6Validation.105 7.1.7Requirements Management.106 7.2Establishing the Groundwork.107 7.2.1Identifying Stakeholders.107 7.2.2Recognizing Multiple Viewpoints.107 7.2.3Working Toward Collaboration.108 7.2.4Asking the First Questions.108 7.2.5Nonfunctional Requirements.109 7.2.6Traceability.109 7.3Requirements Gathering.110 7.3.1Collaborative Requirements Gathering.110 7.3.2Usage Scenarios.113 7.3.3Elicitation Work Products.114 7.4Developing Use Cases.114 7.5Building the Analysis Model.118 7.5.1Elements of the Analysis Model.119 7.5.2Analysis Patterns.122 7.6Negotiating Requirements.122 7.7Requirements Monitoring.123 7.8Validating Requirements.123 7.9Summary.124 CHAPTER 8REQUIREMENTS MODELING— A RECOMMENDED APPROACH.126 8.1Requirements Analysis.127 8.1.1Overall Objectives and Philosophy.128 8.1.2Analysis Rules of Thumb.128 8.1.3Requirements Modeling Principles.129 8.2Scenario-Based Modeling.130 8.2.1Actors and User Profiles.131 8.2.2Creating Use Cases.131 8.2.3Documenting Use Cases.135 8.3Class-Based Modeling.137 8.3.1Identifying Analysis Classes.137 8.3.2Defining Attributes and Operations.140 8.3.3UML Class Models.141 8.3.4Class-Responsibility-Collaborator Modeling.144 8.4Functional Modeling.146 8.4.1A Procedural View.146 8.4.2UML Sequence Diagrams.148 8.5Behavioral Modeling.149 8.5.1Identifying Events with the Use Case.149 8.5.2UML State Diagrams.150 8.5.3UML Activity Diagrams.151 8.6Summary.154 CHAPTER 9DESIGN CONCEPTS.156 9.1Design Within the Context of Software Engineering.157 9.2The Design Process.159 9.2.1Software Quality Guidelines and Attributes.160 9.2.2The Evolution of Software Design.161 9.3Design Concepts.163 9.3.1Abstraction.163 9.3.2Architecture.163 9.3.3Patterns.164 9.3.4Separation of Concerns.165 9.3.5Modularity.165 9.3.6Information Hiding.166 9.3.7Functional Independence.167 9.3.8Stepwise Refinement.167 9.3.9Refactoring.168 9.3.10Design Classes.169 9.4The Design Model.171 9.4.1Design Modeling Principles.173 9.4.2Data Design Elements.174 9.4.3Architectural Design Elements.175 9.4.4Interface Design Elements.175 9.4.5Component-Level Design Elements.176 9.4.6Deployment-Level Design Elements.177 9.5Summary.178 CHAPTER 10ARCHITECTURAL DESIGN— A RECOMMENDED APPROACH.181 10.1Software Architecture.182 10.1.1What Is Architecture?.182 10.1.2Why Is Architecture Important?.183 10.1.3Architectural Descriptions.183 10.1.4Architectural Decisions.184 10.2Agility and Architecture.185 10.3Architectural Styles.186 10.3.1A Brief Taxonomy of Architectural Styles.187 10.3.2Architectural Patterns.192 10.3.3Organization and Refinement.193 10.4Architectural Considerations.193 10.5Architectural Decisions.195 10.6Architectural Design.196 10.6.1Representing the System in Context.196 10.6.2Defining Archetypes.197 10.6.3Refining the Architecture into Components.198 10.6.4Describing Instantiations of the System.200 10.7Assessing Alternative Architectural Designs.201 10.7.1Architectural Reviews.202 10.7.2Pattern-Based Architecture Review.203 10.7.3Architecture Conformance Checking.204 10.8Summary.204 CHAPTER 11COMPONENT-LEVEL DESIGN.206 11.1What Is a Component?.207 11.1.1An Object-Oriented View.207 11.1.2The Traditional View.209 11.1.3A Process-Related View.211 11.2Designing Class-Based Components.212 11.2.1Basic Design Principles.212 11.2.2Component-Level Design Guidelines.215 11.2.3Cohesion.216 11.2.4Coupling.218 11.3Conducting Component-Level Design.219 11.4Specialized Component-Level Design.225 11.4.1Component-Level Design for WebApps.226 11.4.2Component-Level Design for Mobile Apps.226 11.4.3Designing Traditional Components.227 11.4.4Component-Based Development.228 11.5Component Refactoring.230 11.6Summary.231 CHAPTER 12USER EXPERIENCE DESIGN.233 12.1User Experience Design Elements.234 12.1.1Information Architecture.235 12.1.2User Interaction Design.236 12.1.3Usability Engineering.236 12.1.4Visual Design.237 12.2The Golden Rules.238 12.2.1Place the User in Control.238 12.2.2Reduce the User’s Memory Load.239 12.2.3Make the Interface Consistent.240 12.3User Interface Analysis and Design.241 12.3.1Interface Analysis and Design Models.241 12.3.2The Process.242 12.4User Experience Analysis.243 12.4.1User Research.244 12.4.2User Modeling.245 12.4.3Task Analysis.247 12.4.4Work Environment Analysis.248 12.5User Experience Design.249 12.6User Interface Design.250 12.6.1Applying Interface Design Steps.251 12.6.2User Interface Design Patterns.252 12.7Design Evaluation.253 12.7.1Prototype Review.253 12.7.2User Testing.255 12.8Usability and Accessibility.256 12.8.1Usability Guidelines.257 12.8.2Accessibility Guidelines.259 12.9Conventional Software UX and Mobility.261 12.10Summary.261 CHAPTER 13DESIGN FOR MOBILITY.264 13.1The Challenges.265 13.1.1Development Considerations.265 13.1.2Technical Considerations.266 13.2Mobile Development Life Cycle.268 13.2.1User Interface Design.270 13.2.2Lessons Learned.271 13.3Mobile Architectures.273 13.4Context-Aware Apps.274 13.5Web Design Pyramid.275 13.5.1WebApp Interface Design.275 13.5.2Aesthetic Design.277 13.5.3Content Design.277 13.5.4Architecture Design.278 13.5.5Navigation Design.280 13.6Component-Level Design.282 13.7Mobility and Design Quality.282 13.8Mobility Design Best Practices.285 13.9Summary.287 CHAPTER 14PATTERN-BASED DESIGN.289 14.1Design Patterns.290 14.1.1Kinds of Patterns.291 14.1.2Frameworks.293 14.1.3Describing a Pattern.293 14.1.4Machine Learning and Pattern Discovery.294 14.2Pattern-Based Software Design.295 14.2.1Pattern-Based Design in Context.295 14.2.2Thinking in Patterns.296 14,2.3Design Tasks.297 14.2.4Building a Pattern-Organizing Table.298 14.2.5Common Design Mistakes.298 14.3Architectural Patterns.299 14.4Component-Level Design Patterns.300 14.5Anti-Patterns.302 14.6User Interface Design Patterns.304 14.7Mobility Design Patterns.305 14.8Summary.306 PART THREEQUALITY AND SECURITY.309 CHAPTER 15QUALITY CONCEPTS.310 15.1What Is Quality?.311 15.2Software Quality.312 15.2.1Quality Factors.312 15.2.2Qualitative Quality Assessment.314 15.2.3Quantitative Quality Assessment.315 15.3The Software Quality Dilemma.315 15.3.1“Good Enough” Software.316 15.3.2The Cost of Quality.317 15.3.3Risks.319 15.3.4Negligence and Liability.320 15.3.5Quality and Security.320 15.3.6The Impact of Management Actions.321 15.4Achieving Software Quality.321 15.4.1Software Engineering Methods.322 15.4.2Project Management Techniques.322 15.4.3Machine Learning and Defect Prediction.322 15.4.4Quality Control.322 15.4.5Quality Assurance.323 15.5Summary.323 CHAPTER 16REVIEWS—A RECOMMENDED APPROACH.325 16.1Cost Impact of Software Defects.326 16.2Defect Amplification and Removal.327 16.3Review Metrics and Their Use.327 16.4Criteria for Types of Reviews.330 16.5Informal Reviews.331 16.6Formal Technical Reviews.332 16.6.1The Review Meeting.332 16.6.2Review Reporting and Record Keeping.333 16.6.3Review Guidelines.334 16.7Postmortem Evaluations.336 16.8Agile Reviews.336 16.9Summary.337 CHAPTER 17SOFTWARE QUALITY ASSURANCE.339 17.1Background Issues.341 17.2Elements of Software Quality Assurance.341 17.3SQA Processes and Product Characteristics.343 17.4SQA Tasks, Goals, and Metrics.343 17.4.1SQA Tasks.343 17.4.2Goals, Attributes, and Metrics.345 17.5Formal Approaches to SQA.347 17.6Statistical Software Quality Assurance.347 17.6.1A Generic Example.347 17.6.2Six Sigma for Software Engineering.349 17.7Software Reliability.350 17.7.1Measures of Reliability and Availability.350 17.7.2Use of AI to Model Reliability.351 17.7.3Software Safety.352 17.8The ISO 9000 Quality Standards.353 17.9The SQA Plan.354 17.10Summary.355 CHAPTER 18SOFTWARE SECURITY ENGINEERING.356 18.1Why Software Security Information Is Important.357 18.2Security Life-Cycle Models.357 18.3Secure Development Life-Cycle Activities.359 18.4Security Requirements Engineering.360 18.4.1SQUARE.360 18.4.2The SQUARE Process.360 18.5Misuse and Abuse Cases and Attack Patterns.363 18.6Security Risk Analysis.364 18.7Threat Modeling, Prioritization, and Mitigation.365 18.8Attack Surface.366 18.9Secure Coding.367 18.10Measurement.368 18.11Security Process Improvement and Maturity Models.370 18.12Summary.370 CHAPTER 19SOFTWARE TESTING—COMPONENT LEVEL.372 19.1A Strategic Approach to Software Testing.373 19.1.1Verification and Validation.373 19.1.2Organizing for Software Testing.374 19.1.3The Big Picture.375 19.1.4Criteria for “Done”.377 19.2Planning and Recordkeeping.378 19.2.1Role of Scaffolding.379 19.2.2Cost-Effective Testing.379 19.3Test-Case Design.381 19.3.1Requirements and Use Cases.382 19.3.2Traceability.383 19.4White-Box Testing.383 19.4.1Basis Path Testing.384 19.4.2Control Structure Testing.386 19.5Black-Box Testing.388 19.5.1Interface Testing.388 19.5.2Equivalence Partitioning.389 19.5.3Boundary Value Analysis.389 19.6Object-Oriented Testing.390 19.6.1Class Testing.390 19.6.2Behavioral Testing.392 19.7Summary.393 CHAPTER 20SOFTWARE TESTING— INTEGRATION LEVEL.395 20.1Software Testing Fundamentals.396 20.1.1Black-Box Testing.397 20.1.2White-Box Testing.397 20.2Integration Testing.398 20.2.1Top-Down Integration.398 20.2.2Bottom-Up Integration.399 20.2.3Continuous Integration.400 20.2.4Integration Test Work Products.402 20.3Artificial Intelligence and Regression Testing.402 20.4Integration Testing in the OO Context.404 20.4.1Fault-Based Test-Case Design.405 20.4.2Scenario-Based Test-Case Design.406 20.5Validation Testing.407 20.6Testing Patterns.409 20.7Summary.409 CHAPTER 21SOFTWARE TESTING—SPECIALIZED TESTING FOR MOBILITY.412 21.1Mobile Testing Guidelines.413 21.2The Testing Strategies.414 21.3User Experience Testing Issues.415 21.3.1Gesture Testing.415 21.3.2Virtual Keyboard Input.416 21.3.3Voice Input and Recognition.416 21.3.4Alerts and Extraordinary Conditions.417 21.4Web Application Testing.418 21.5Web Testing Strategies.418 21.5.1Content Testing.420 21.5.2Interface Testing.421 21.5.3Navigation Testing.421 21.6Internationalization.423 21.7Security Testing.423 21.8Performance Testing.424 21.9Real-Time Testing.426 21.10Testing AI Systems.428 21.10.1Static and Dynamic Testing.429 21.10.2Model-Based Testing.429 21.11Testing Virtual Environments.430 21.11.1Usability Testing.430 21.11.2Accessibility Testing.432 21.11.3Playability Testing.433 21.12 Testing Documentation and Help Facilities.434 21.13 Summary.435 CHAPTER 22SOFTWARE CONFIGURATION MANAGEMENT.437 22.1Software Configuration Management.438 22.1.1An SCM Scenario.439 22.1.2Elements of a Configuration Management System.440 22.1.3Baselines.441 22.1.4Software Configuration Items.441 22.1.5Management of Dependencies and Changes.442 22.2The SCM Repository.443 22.2.1General Features and Content.444 22.2.2SCM Features.444 22.3Version Control Systems.445 22.4Continuous Integration.446 22.5The Change Management Process.447 22.5.1Change Control.448 22.5.2Impact Management.451 22.5.3Configuration Audit.452 22.5.4Status Reporting.452 22.6Mobility and Agile Change Management.453 22.6.1e-Change Control.453 22.6.2Content Management.455 22.6.3Integration and Publishing.455 22.6.4Version Control.457 22.6.5Auditing and Reporting.458 22.7Summary.458 CHAPTER 23SOFTWARE METRICS AND ANALYTICS.460 23.1Software Measurement.461 23.1.1Measures, Metrics, and Indicators.461 23.1.2Attributes of Effective Software Metrics.462 23.2Software Analytics.462 23.3Product Metrics.463 23.3.1Metrics for the Requirements Model.464 23.3.2Design Metrics for Conventional Software.466 23.3.3Design Metrics for Object-Oriented Software.468 23.3.4User Interface Design Metrics.471 23.3.5Metrics for Source Code.473 23.4Metrics for Testing.474 23.5Metrics for Maintenance.476 23.6Process and Project Metrics.476 23.7Software Measurement.479 23.8Metrics for Software Quality.482 23.9Establishing Software Metrics Programs.485 23.10Summary.487 PART FOURMANAGING SOFTWARE PROJECTS.489 CHAPTER 24PROJECT MANAGEMENT CONCEPTS.490 24.1The Management Spectrum.491 24.1.1The People.491 24.1.2The Product.491 24.1.3The Process.492 24.1.4The Project.492 24.2People.493 24.2.1The Stakeholders.493 24.2.2Team Leaders.493 24.2.3The Software Team.494 24.2.4Coordination and Communications Issues.496 24.3Product.497 24.3.1Software Scope.497 24.3.2Problem Decomposition.497 24.4Process.498 24.4.1Melding the Product and the Process.498 24.4.2Process Decomposition.498 24.5Project.500 24.6The W5HH Principle.501 24.7Critical Practices.502 24.8Summary.502 CHAPTER 25CREATING A VIABLE SOFTWARE PLAN.504 25.1Comments on Estimation.505 25.2The Project Planning Process.506 25.3Software Scope and Feasibility.507 25.4Resources.507 25.4.1Human Resources.508 25.4.2Reusable Software Resources.509 25.4.3Environmental Resources.509 25.5Data Analytics and Software Project Estimation.509 25.6Decomposition and Estimation Techniques.511 25.6.1Software Sizing.511 25.6.2Problem-Based Estimation.512 25.6.3An Example of LOC-Based Estimation.512 25.6.4An Example of FP-Based Estimation.514 25.6.5An Example of Process-Based Estimation.515 25.6.6An Example of Estimation Using Use Case Points.517 25.6.7Reconciling Estimates.518 25.6.8Estimation for Agile Development.519 25.7Project Scheduling.520 25.7.1Basic Principles.521 25.7.2The Relationship Between People and Effort.522 25.8Defining a Project Task Set.523 25.8.1A Task Set Example.524 25.8.2Refinement of Major Tasks.524 25.9Defining a Task Network.525 25.10Scheduling.526 25.10.1Time-Line Charts.526 25.10.2Tracking the Schedule.528 25.11Summary.530 CHAPTER 26RISK MANAGEMENT.532 26.1Reactive Versus Proactive Risk Strategies.533 26.2Software Risks.534 26.3Risk Identification.535 26.3.1Assessing Overall Project Risk.536 26.3.2Risk Components and Drivers.537 26.4Risk Projection.538 26.4.1Developing a Risk Table.538 26.4.2Assessing Risk Impact.540 26.5Risk Refinement.542 26.6Risk Mitigation, Monitoring, and Management.543 26.7The RMMM Plan.546 26.8Summary.547 CHAPTER 27A STRATEGY FOR SOFTWARE SUPPORT.549 27.1Software Support.550 27.2Software Maintenance.552 27.2.1Maintenance Types.553 27.2.2Maintenance Tasks.554 27.2.3Reverse Engineering.555 27.3Proactive Software Support.557 27.3.1Use of Software Analytics.558 27.3.2Role of Social Media.559 27.3.3Cost of Support.559 27.4Refactoring.560 27.4.1Data Refactoring.561 27.4.2Code Refactoring.561 27.4.3Architecture Refactoring.561 27.5Software Evolution.562 27.5.1Inventory Analysis.563 27.5.2Document Restructuring.564 27.5.3Reverse Engineering.564 27.5.4Code Refactoring.564 27.5.5Data Refactoring.564 27.5.6Forward Engineering.565 27.6Summary.565 PART FIVEADVANCED TOPICS.567 CHAPTER 28SOFTWARE PROCESS IMPROVEMENT.568 28.1What Is SPI?.569 28.1.1Approaches to SPI.569 28.1.2Maturity Models.570 28.1.3Is SPI for Everyone?.571 28.2The SPI Process.571 28.2.1Assessment and GAP Analysis.572 28.2.2Education and Training.573 28.2.3Selection and Justification.573 28.2.4Installation/Migration.574 28.2.5Evaluation.575 28.2.6Risk Management for SPI.575 28.3The CMMI.576 28.4Other SPI Frameworks.579 28.4.1SPICE.579 28.4.2TickIT Plus.579 28.5SPI Return on Investment.580 28.6SPI Trends.580 28.7Summary.581 CHAPTER 29EMERGING TRENDS IN SOFTWARE ENGINEERING.583 29.1Technology Evolution.584 29.2Software Engineering as a Discipline.585 29.3Observing Software Engineering Trends.586 29.4Identifying “Soft Trends”.587 29.4.1Managing Complexity.588 29.4.2Open-World Software.589 29.4.3Emergent Requirements.590 29.4.4The Talent Mix.591 29.4.5Software Building Blocks.591 29.4.6Changing Perceptions of “Value”.592 29.4.7Open Source.592 29.5Technology Directions.593 29.5.1Process Trends.593 29.5.2The Grand Challenge.594 29.5.3Collaborative Development.595 29.5.4Requirements Engineering.596 29.5.5Model-Driven Software Development.596 29.5.6Search-Based Software Engineering.597 29.5.7Test-Driven Development.598 29.6Tools-Related Trends.599 29.7Summary.600 CHAPTER 30CONCLUDING COMMENTS.602 30.1The Importance of Software—Revisited.603 30.2People and the Way They Build Systems.603 30.3Knowledge Discovery.605 30.4The Long View.606 30.5The Software Engineer’s Responsibility.607 30.6A Final Comment from RSP.609 APPENDIX 1An Introduction to UML.611 APPENDIX 2Data Science for Software Engineers.629 REFERENCES.639 INDEX.659
你还可能感兴趣
我要评论
|