Software engineering : a practitioner's approach
by
 
Pressman, Roger S., author.

Title
Software engineering : a practitioner's approach

Author
Pressman, Roger S., author.

ISBN
9781260548006

Personal Author
Pressman, Roger S., author.

Edition
Ninth edition.
 
International student edition.

Physical Description
xxx, 671 pages : illustrations (black and white) ; 24 cm.

General Note
"This International Student Edition is for use outside of the U.S." -- Cover.
 
Previous edition (eighth edition): 2015.

Contents
Machine generated contents note: ch. 1 Software And Software Engineering -- 1.1.The Nature of Software -- 1.1.1.Defining Software -- 1.1.2.Software Application Domains -- 1.1.3.Legacy Software -- 1.2.Defining the Discipline -- 1.3.The Software Process -- 1.3.1.The. Process Framework -- 1.3.2.Umbrella Activities -- 1.3.3.Process Adaptation -- 1.4.Software Engineering Practice -- 1.4.1.The Essence of Practice -- 1.4.2.General Principles -- 1.5.How It All Starts -- 1.6.Summary -- ch. 2 Process Models -- 2.1.A Generic Process Model -- 2.2.Defining a Framework Activity -- 2.3.Identifying a Task Set -- 2.4.Process Assessment and Improvement -- 2.5.Prescriptive Process Models -- 2.5.1.The Waterfall Model -- 2.5.2.Prototyping Process Model -- 2.5.3.Evolutionary Process Model -- 2.5.4.Unified Process Model -- 2.6.Product and Process -- 2.7.Summary -- ch. 3 Agility And Process -- 3.1.What Is Agility? -- 3.2.Agility and the Cost of Change -- 3.3.What Is an Agile Process? --
 
Note continued: 3.3.1.Agility Principles -- 3.3.2.The Politics of Agile Development -- 3.4.Scrum -- 3.4.1.Scrum Teams and Artifacts -- 3.4.2.Sprint Planning Meeting -- 3.4.3.Daily Scrum Meeting -- 3.4.4.Sprint Review Meeting -- 3.4.5.Sprint Retrospective -- 3.5.Other Agile Frameworks -- 3.5.1.The XP Framework -- 3.5.2.Kanban -- 3.5.3.DevOps -- 3.6.Summary -- ch. 4 Recommended Process Model -- 4.1.Requirements Definition -- 4.2.Preliminary Architectural Design -- 4.3.Resource Estimation -- 4.4.First Prototype Construction -- 4.5.Prototype Evaluation -- 4.6.Go, No-Go Decision -- 4.7.Prototype Evolution -- 4.7.1.New Prototype Scope -- 4.7.2.Constructing New Prototypes -- 4.7.3.Testing New Prototypes -- 4.8.Prototype Release -- 4.9.Maintain Release Software -- 4.10.Summary -- ch. 5 Human Aspects Of Software Engineering -- 5.1.Characteristics of a Software Engineer -- 5.2.The Psychology of Software Engineering -- 5.3.The Software Team -- 5.4.Team Structures --
 
Note continued: 5.5.The Impact of Social Media -- 5.6.Global Teams -- 5.7.Summary -- ch. 6 Principles That Guide Practice -- 6.1.Core Principles -- 6.1.1.Principles That Guide Process -- 6.1.2.Principles That Guide Practice -- 6.2.Principles, That Guide Each Framework Activity -- 6.2.1.Communication Principles -- 6.2.2.Planning Principles -- 6.2.3.Modeling Principles -- 6.2.4.Construction Principles -- 6.2.5.Deployment Principles -- 6.3.Summary -- ch. 7 Understanding Requirements -- 7.1.Requirements Engineering -- 7.1.1.Inception -- 7.1.2.Elicitation -- 7.1.3.Elaboration -- 7.1.4.Negotiation -- 7.1.5.Specification -- 7.1.6.Validation -- 7.1.7.Requirements Management -- 7.2.Establishing the Groundwork -- 7.2.1.Identifying Stakeholders -- 7.2.2.Recognizing Multiple Viewpoints -- 7.2.3.Working Toward Collaboration -- 7.2.4.Asking the First Questions -- 7.2.5.Nonfunctional Requirements -- 7.2.6.Traceability -- 7.3.Requirements Gathering --
 
Note continued: 7.3.1.Collaborative Requirements Gathering -- 7.3.2.Usage Scenarios -- 7.3.3.Elicitation Work Products -- 7.4.Developing Use Cases -- 7.5.Building the Analysis Model -- 7.5.1.Elements of the Analysis Model -- 7.5.2.Analysis Patterns -- 7.6.Negotiating Requirements -- 7.7.Requirements Monitoring -- 7.8.Validating Requirements -- 7.9.Summary -- ch. 8 Requirements Modeling-a Recommended Approach -- 8.1.Requirements Analysis -- 8.1.1.Overall Objectives and Philosophy -- 8.1.2.Analysis Rules of Thumb -- 8.1.3.Requirements Modeling Principles -- 8.2.Scenario-Based Modeling -- 8.2.1.Actors and User Profiles -- 8.2.2.Creating Use Cases -- 8.2.3.Documenting Use Cases -- 8.3.Class-Based Modeling -- 8.3.1.Identifying Analysis Classes -- 8.3.2.Defining Attributes and Operations -- 8.3.3.UML Class Models -- 8.3.4.Class-Responsibility-Collaborator Modeling -- 8.4.Functional Modeling -- 8.4.1.A Procedural View -- 8.4.2.UML Sequence Diagrams -- 8.5.Behavioral Modeling --
 
Note continued: 8.5.1.Identifying Events with the Use Case -- 8.5.2.UML State Diagrams -- 8.5.3.UML Activity Diagrams -- 8.6.Summary -- ch. 9 Design Concepts -- 9.1.Design Within the Context of Software Engineering -- 9.2.The Design Process -- 9.2.1.Software Quality Guidelines and Attributes -- 9.2.2.The Evolution of Software Design -- 9.3.Design Concepts -- 9.3.1.Abstraction -- 9.3.2.Architecture -- 9.3.3.Patterns -- 9.3.4.Separation of Concerns -- 9.3.5.Modularity -- 9.3.6.Information Hiding -- 9.3.7.Functional Independence -- 9.3.8.Stepwise Refinement -- 9.3.9.Refactoring -- 9.3.10.Design Classes -- 9.4.The Design Model -- 9.4.1.Design Modeling Principles -- 9.4.2.Data Design Elements -- 9.4.3.Architectural Design Elements -- 9.4.4.Interface Design Elements -- 9.4.5.Component-Level Design Elements -- 9.4.6.Deployment-Level Design Elements -- 9.5.Summary -- ch. 10 Architectural Design-a Recommended Approach -- 10.1.Software Architecture --
 
Note continued: 10.1.1.What Is Architecture? -- 10.1.2.Why Is Architecture Important? -- 10.1.3.Architectural Descriptions -- 10.1.4.Architectural Decisions -- 10.2.Agility and Architecture -- 10.3.Architectural Styles -- 10.3.1.A Brief Taxonomy of Architectural Styles -- 10.3.2.Architectural Patterns -- 10.3.3.Organization and Refinement -- 10.4.Architectural Considerations -- 10.5.Architectural Decisions -- 10.6.Architectural Design -- 10.6.1.Representing the System in Context -- 10.6.2.Defining Archetypes -- 10.6.3.Refining the Architecture into Components -- 10.6.4.Describing Instantiations of the System -- 10.7.Assessing Alternative Architectural Designs -- 10.7.1.Architectural Reviews -- 10.7.2.Pattern-Based Architecture Review -- 10.7.3.Architecture Conformance Checking -- 10.8.Summary -- ch. 11 Component-Level Design -- 11.1.What Is a Component? -- 11.1.1.An Object-Oriented View -- 11.1.2.The Traditional View -- 11.1.3.A Process-Related View --
 
Note continued: 11.2.Designing Class-Based Components -- 11.2.1.Basic Design Principles -- 11.2.2.Component-Level Design Guidelines -- 11.2.3.Cohesion -- 11.2.4.Coupling -- 11.3.Conducting Component-Level Design -- 11.4.Specialized Component-Level Design -- 11.4.1.Component-Level Design for WebApps -- 11.4.2.Component-Level Design for Mobile Apps -- 11.4.3.Designing Traditional Components -- 11.4.4.Component-Based Development -- 11.5.Component Refactoring -- 11.6.Summary -- ch. 12 User Experience Design -- 12.1.User Experience Design Elements -- 12.1.1.Information Architecture -- 12.1.2.User Interaction Design -- 12.1.3.Usability Engineering -- 12.1.4.Visual Design -- 12.2.The Golden Rules -- 12.2.1.Place the User in Control -- 12.2.2.Reduce the User's Memory Load -- 12.2.3.Make the Interface Consistent -- 12.3.User Interface Analysis and Design -- 12.3.1.Interface Analysis and Design Models -- 12.3.2.The Process -- 12.4.User Experience Analysis --
 
Note continued: 12.4.1.User Research -- 12.4.2.User Modeling -- 12.4.3.Task Analysis -- 12.4.4.Work Environment Analysis -- 12.5.User Experience Design -- 12.6.User Interface Design -- 12.6.1.Applying Interface Design Steps -- 12.6.2.User Interface Design Patterns -- 12.7.Design Evaluation -- 12.7.1.Prototype Review -- 12.7.2.User Testing -- 12.8.Usability and Accessibility -- 12.8.1.Usability Guidelines -- 12.8.2.Accessibility Guidelines -- 12.9.Conventional Software UX and Mobility -- 12.10.Summary -- ch. 13 Design For Mobility -- 13.1.The Challenges -- 13.1.1.Development Considerations -- 13.1.2.Technical Considerations -- 13.2.Mobile Development Life Cycle -- 13.2.1.User Interface Design -- 13.2.2.Lessons Learned -- 13.3.Mobile Architectures -- 13.4.Context-Aware Apps -- 13.5.Web Design Pyramid -- 13.5.1.WebApp Interface Design -- 13.5.2.Aesthetic Design -- 13.5.3.Content Design -- 13.5.4.Architecture Design -- 13.5.5.Navigation Design --
 
Note continued: 13.6.Component-Level Design -- 13.7.Mobility and Design Quality -- 13.8.Mobility Design Best Practices -- 13.9.Summary -- ch. 14 Pattern-Based Design -- 14.1.Design Patterns -- 14.1.1.Kinds of Patterns -- 14.1.2.Frameworks -- 14.1.3.Describing a Pattern -- 14.1.4.Machine Learning and Pattern Discovery -- 14.2.Pattern-Based Software Design -- 14.2.1.Pattern-Based Design in Context -- 14.2.2.Thinking in Patterns -- 14.2.3.Design Tasks -- 14.2.4.Building a Pattern-Organizing Table -- 14.2.5.Common Design Mistakes 29$ -- 14.3.Architectural Patterns -- 14.4.Component-Level Design Patterns -- 14.5.Anti-Patterns -- 14.6.User Interface Design Patterns -- 14.7.Mobility Design Patterns -- 14.8.Summary -- ch. 15 Quality Concepts -- 15.1.What Is Quality? -- 15.2.Software Quality -- 15.2.1.Quality Factors -- 15.2.2.Qualitative Quality Assessment -- 15.2.3.Quantitative Quality Assessment -- 15.3.The Software Quality Dilemma -- 15.3.1."Good Enough" Software --
 
Note continued: 15.3.2.The Cost of Quality -- 15.3.3.Risks -- 15.3.4.Negligence and Liability -- 15.3.5.Quality and Security -- 15.3.6.The Impact of Management Actions -- 15.4.Achieving Software Quality -- 15.4.1.Software Engineering Methods -- 15.4.2.Project Management Techniques -- 15.4.3.Machine Learning and Defect Prediction -- 15.4.4.Quality Control -- 15.4.5.Quality Assurance -- 15.5.Summary -- ch. 16 Reviews-A Recommended Approach -- 16.1.Cost Impact of Software Defects -- 16.2.Defect Amplification and Removal -- 16.3.Review Metrics and Their Use -- 16.4.Criteria for Types of Reviews -- 16.5.Informal Reviews -- 16.6.Formal Technical Reviews -- 16.6.1.The Review Meeting -- 16.6.2.Review Reporting and Record Keeping -- 16.6.3.Review Guidelines -- 16.7.Postmortem Evaluations -- 16.8.Agile Reviews -- 16.9.Summary -- ch. 17 Software Quality Assurance -- 17.1.Background Issues -- 17.2.Elements of Software Quality Assurance --
 
Note continued: 17.3.SQA Processes and Product Characteristics -- 17.4.SQA Tasks, Goals, and Metrics -- 17.4.1.SQA Tasks -- 17.4.2.Goals, Attributes, and Metrics -- 17.5.Formal Approaches to SQA -- 17.6.Statistical Software Quality Assurance -- 17.6.1.A Generic Example -- 17.6.2.Six Sigma for Software Engineering -- 17.7.Software Reliability -- 17.7.1.Measures of Reliability and Availability -- 17.7.2.Use of Al to Model Reliability -- 17.7.3.Software Safety -- 17.8.The ISO 9000 Quality Standards -- 17.9.The SQA Plan -- 17.10.Summary -- ch. 18 Software Security Engineering -- 18.1.Why Software Security Information Is Important -- 18.2.Security Life-Cycle Models -- 18.3.Secure Development Life-Cycle Activities -- 18.4.Security Requirements Engineering -- 18.4.1.SQUARE -- 18.4.2.The SQUARE Process -- 18.5.Misuse and Abuse Cases and Attack Patterns -- 18.6.Security Risk Analysis -- 18.7.Threat Modeling, Prioritization, and Mitigation -- 18.8.Attack Surface --
 
Note continued: 18.9.Secure Coding -- 18.10.Measurement -- 18.11.Security Process Improvement and Maturity Models -- 18.12.Summary -- ch. 19 Software Testing-component Level -- 19.1.A Strategic Approach to Software Testing -- 19.1.1.Verification and Validation -- 19.1.2.Organizing for Software Testing -- 19.1.3.The Big Picture -- 19.1.4.Criteria for "Done" -- 19.2.Planning and Recordkeeping -- 19.2.1.Role of Scaffolding -- 19.2.2.Cost-Effective Testing -- 19.3.Test-Case Design -- 19.3.1.Requirements and Use Cases -- 19.3.2.Traceability -- 19.4.White-Box Testing -- 19.4.1.Basis Path Testing -- 19.4.2.Control Structure Testing -- 19.5.Black-Box Testing -- 19.5.1.Interface Testing -- 19.5.2.Equivalence Partitioning -- 19.5.3.Boundary Value Analysis -- 19.6.Object-Oriented Testing -- 19.6.1.Class Testing -- 19.6.2.Behavioral Testing -- 19.7.Summary -- ch. 20 Software Testing-integration Level -- 20.1.Software Testing Fundamentals -- 20.1.1.Black-Box Testing --
 
Note continued: 20.1.2.White-Box Testing -- 20.2.Integration Testing -- 20.2.1.Top-Down Integration -- 20.2.2.Bottom-Up Integration -- 20.2.3.Continuous Integration -- 20.2.4.Integration Test Work Products -- 20.3.Artificial Intelligence and Regression Testing -- 20.4.Integration Testing in the OO Context -- 20.4.1.Fault-Based Test-Case Design -- 20.4.2.Scenario-Based Test-Case Design -- 20.5.Validation Testing -- 20.6.Testing Patterns -- 20.7.Summary -- ch. 21 Software Testing-specialized Testing For Mobility -- 21.1.Mobile Testing Guidelines -- 21.2.The Testing Strategies -- 21.3.User Experience Testing Issues -- 21.3.1.Gesture Testing -- 21.3.2.Virtual Keyboard Input -- 21.3.3.Voice Input and Recognition -- 21.3.4.Alerts and Extraordinary Conditions -- 21.4.Web Application Testing -- 21.5.Web Testing Strategies -- 21.5.1.Content Testing -- 21.5.2.Interface Testing -- 21.5.3.Navigation Testing -- 21.6.Internationalization -- 21.7.Security Testing --
 
Note continued: 21.8.Performance Testing -- 21.9.Real- Time Testing -- 21.10.Testing Al Systems -- 21.10.1.Static and Dynamic Testing -- 21.10.2.Model-Based Testing -- 21.11.Testing Virtual Environments -- 21.11.1.Usability Testing -- 21.11.2.Accessibility Testing -- 21.11.3.Playability Testing -- 21.12.Testing Documentation and Help Facilities -- 21.13.Summary -- ch. 22 Software Configuration Management -- 22.1.Software Configuration Management -- 22.1.1.An SCM Scenario -- 22.1.2.Elements of a Configuration Management System -- 22.1.3.Baselines -- 22.1.4.Software Configuration Items -- 22.1.5.Management of Dependencies and Changes -- 22.2.The SCM Repository -- 22.2.1.General Features and Content -- 22.2.2.SCM Features -- 22.3.Version Control Systems -- 22.4.Continuous Integration -- 22.5.The Change Management Process -- 22.5.1.Change Control -- 22.5.2.Impact Management -- 22.5.3.Configuration Audit -- 22.5.4.Status Reporting --
 
Note continued: 22.6.Mobility and Agile Change Management -- 22.6.1.e-Change Control -- 22.6.2.Content Management -- 22.6.3.Integration and Publishing -- 22.6.4.Version Control -- 22.6.5.Auditing and Reporting -- 22.7.Summary -- ch. 23 Software Metrics And Analytics -- 23.1.Software Measurement -- 23.1.1.Measures, Metrics, and Indicators -- 23.1.2.Attributes of Effective Software Metrics -- 23.2.Software Analytics -- 23.3.Product Metrics -- 23.3.1.Metrics for the Requirements Model -- 23.3.2.Design Metrics for Conventional Software -- 23.3.3.Design Metrics for Object-Oriented Software -- 23.3.4.User Interface Design Metrics -- 23.3.5.Metrics for Source Code -- 23.4.Metrics for Testing -- 23.5.Metrics for Maintenance -- 23.6.Process and Project Metrics -- 23.7.Software Measurement -- 23.8.Metrics for Software Quality -- 23.9.Establishing Software Metrics Programs -- 23.10.Summary -- ch. 24 Project Management Concepts -- 24.1.The Management Spectrum -- 24.1.1.The People --
 
Note continued: 24.1.2.The Product -- 24.1.3.The Process -- 24.1.4.The Project -- 24.2.People -- 24.2.1.The Stakeholders -- 24.2.2.Team Leaders -- 24.2.3.The Software Team -- 24.2.4.Coordination and Communications Issues -- 24.3.Product -- 24.3.1.Software Scope -- 24.3.2.Problem Decomposition -- 24.4.Process -- 24.4.1.Melding the Product and the Process -- 24.4.2.Process Decomposition -- 24.5.Project -- 24.6.The W5HH Principle -- 24.7.Critical Practices -- 24.8.Summary -- ch. 25 Creating A Viable Software Plan -- 25.1.Comments on Estimation -- 25.2.The Project Planning Process -- 25.3.Software Scope and Feasibility -- 25.4.Resources -- 25.4.1.Human Resources -- 25.4.2.Reusable Software Resources -- 25.4.3.Environmental Resources -- 25.5.Data Analytics and Software Project Estimation -- 25.6.Decomposition and Estimation Techniques -- 25.6.1.Software Sizing -- 25.6.2.Problem-Based Estimation -- 25.6.3.An Example of LOC-Based Estimation --
 
Note continued: 25.6.4.An Example of FP-Based Estimation -- 25.6.5.An Example of Process-Based Estimation -- 25.6.6.An Example of Estimation Using Use Case Points -- 25.6.7.Reconciling Estimates -- 25.6.8.Estimation for Agile Development -- 25.7.Project Scheduling -- 25.7.1.-Basic Principles -- 25.7.2.The Relationship Between People and Effort -- 25.8.Defining a Project Task Set -- 25.8.1.A Task Set Example -- 25.8.2.Refinement of Major Tasks -- 25.9.Defining a Task Network -- 25.10.Scheduling -- 25.10.1.Time-Line Charts -- 25.10.2.Tracking the Schedule -- 25.11.Summary -- ch. 26 Risk Management -- 26.1.Reactive Versus Proactive Risk Strategies -- 26.2.Software Risks -- 26.3.Risk Identification -- 26.3.1.Assessing Overall Project Risk -- 26.3.2.Risk Components and Drivers -- 26.4.Risk Projection -- 26.4.1.Developing a Risk Table -- 26.4.2.Assessing Risk Impact -- 26.5.Risk Refinement -- 26.6.Risk Mitigation, Monitoring, and Management -- 26.7.The RMMM Plan --
 
Note continued: 26.8.Summary -- ch. 27 A Strategy For Software Support -- 27.1.Software Support -- 27.2.Software Maintenance -- 27.2.1.Maintenance Types -- 27.2.2.Maintenance Tasks -- 27.2.3.Reverse Engineering -- 27.3.Proactive Software Support -- 27.3.1.Use of Software Analytics -- 27.3.2.Role of Social Media -- 27.3.3.Cost of Support -- 27.4.Refactoring -- 27.4.1.Data Refactoring -- 24.4.2.Code Refactoring -- 27.4.3.Architecture Refactoring -- 27.5.Software Evolution -- 27.5.1.Inventory Analysis -- 27.5.2.Document Restructuring -- 27.5.3.Reverse Engineering -- 27.5.4.Code Refactoring -- 27.7.5.Data Refactoring -- 27.5.6.Forward Engineering -- 27.6.Summary -- ch. 28 Software Process Improvement -- 28.1.What Is SPI? -- 28.1.1.Approaches to SPI -- 28.1.2.Maturity Models -- 28.1.3.Is SPI for Everyone? -- 28.2.The SPI Process -- 28.2.1.Assessment and GAP Analysis -- 28.2.2.Education and Training -- 28.2.3.Selection and Justification -- 28.2.4.Installation/Migration --
 
Note continued: 28.2.5.Evaluation -- 28.2.6.Risk Management for SPI -- 28.3.The CMMI -- 28.4.Other SPI Frameworks -- 28.4.1.SPICE -- 28.4.2.TickI T Plus -- 28.5.SPI Return on Investment -- 28.6.SPI Trends -- 28.7.Summary -- ch. 29 Emerging Trends In Software Engineering -- 29.1.Technology Evolution -- 29.2.Software Engineering as a Discipline -- 29.3.Observing Software Engineering Trends -- 29.4.Identifying "Soft Trends" -- 29.4.1.Managing Complexity -- 29.4.2.Open-World Software -- 29.4.3.Emergent Requirements -- 29.4.4.The Talent Mix -- 29.4.5.Software Building Blocks -- 29.4.6.Changing Perceptions of "Value" -- 29.4.7.Open Source -- 29.5.Technology Directions -- 29.5.1.Process Trends -- 29.5.2.The Grand Challenge -- 29.5.3.Collaborative Development -- 29.5.4.Requirements Engineering -- 29.5.5.Model-Driven Software Development -- 29.5.6.Search-Based Software Engineering -- 29.5.7.Test-Driven Development -- 29.6.Tools-Related Trends -- 29.7.Summary --
 
Note continued: ch. 30 Concluding Comments -- 30.1.The Importance of Software-Revisited -- 30.2.People and the Way They Build Systems -- 30.3.Knowledge Discovery -- 30.4.The Long View -- 30.5.The Software Engineer's Responsibility -- 30.6.A Final Comment from RSP.

Subject Term
Software engineering.

Added Author
Maxim, Bruce R.,


LibraryMaterial TypeItem BarcodeShelf NumberCopy
IIEMSALecturer Books33168025853892005.1 PRE1
IIEMSALecturer Books33168025853975005.1 PRE2
IIEMSAMSA Reserves33168025857752005.1 PRE3
IIEMSALecturer Books33168025857760005.1 PRE4
IIEMSAMSA Reserves33168025857778005.1 PRE5