{"publishers": ["McGraw-Hill"], "number_of_pages": 852, "subtitle": "a practitioner's approach", "isbn_10": ["0070521824"], "covers": [55146], "lc_classifications": ["QA76.758 .P75 1997", "QA76.758 .P75 1994"], "key": "/books/OL1019474M", "authors": [{"key": "/authors/OL548592A"}], "ocaid": "softwareengineer4edpres", "publish_places": ["New York"], "languages": [{"key": "/languages/eng"}], "pagination": "xxvii, 852 p. :", "source_records": ["ia:softwareengineer4edpres", "ia:softwareengineer0000pres", "marc:marc_loc_2016/BooksAll.2016.part25.utf8:121483892:845", "ia:softwareengineer0000pres_e9a6", "marc:harvard_bibliographic_metadata/20220215_025.bib.mrc:178149610:2526"], "title": "Software engineering", "dewey_decimal_class": ["005.1"], "notes": {"type": "/type/text", "value": "Includes bibliographical references and index."}, "identifiers": {"librarything": ["153862"], "goodreads": ["3290603"]}, "edition_name": "4th ed.", "lccn": ["96077396"], "subjects": ["Software engineering."], "publish_date": "1997", "publish_country": "nyu", "by_statement": "Roger S. Pressman.", "works": [{"key": "/works/OL284009W"}], "type": {"key": "/type/edition"}, "oclc_numbers": ["35573720"], "table_of_contents": [{"level": 0, "label": "", "title": "Preface", "pagenum": "xxvii"}, {"level": 0, "label": "Part One", "title": "The Product and the Process", "pagenum": "1"}, {"level": 1, "label": "Chapter 1", "title": "The Product", "pagenum": "3"}, {"level": 2, "label": "1.1", "title": "The Evolving Role of Software", "pagenum": "4"}, {"level": 3, "label": "1.1.1", "title": "An Industry Perspective", "pagenum": "7"}, {"level": 3, "label": "1.1.2", "title": "An Aging Software Plant", "pagenum": "8"}, {"level": 3, "label": "1.1.3", "title": "Software Competitiveness", "pagenum": "9"}, {"level": 2, "label": "1.2", "title": "Software", "pagenum": "9"}, {"level": 3, "label": "1.2.1", "title": "Software Characteristics", "pagenum": "10"}, {"level": 3, "label": "1.2.2", "title": "Software Components", "pagenum": "13"}, {"level": 3, "label": "1.2.3", "title": "Software Applications", "pagenum": "14"}, {"level": 2, "label": "1.3", "title": "Software: A Crisis on the Horizon", "pagenum": "16"}, {"level": 2, "label": "1.4", "title": "Software Myths", "pagenum": "17"}, {"level": 2, "label": "1.5", "title": "Summary", "pagenum": "19"}, {"level": 2, "label": "", "title": "References", "pagenum": "19"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "20"}, {"level": 2, "label": "", "title": "Further Readings and Information Sources", "pagenum": "21"}, {"level": 1, "label": "Chapter 2", "title": "The Process", "pagenum": "22"}, {"level": 2, "label": "2.1", "title": "Software Engineering - A Layered Technology", "pagenum": "22"}, {"level": 3, "label": "2.1.1", "title": "Process, Methods, and Tools", "pagenum": "23"}, {"level": 3, "label": "2.1.2", "title": "A Generic View of Software Engineering", "pagenum": "24"}, {"level": 2, "label": "2.2", "title": "The Software Process", "pagenum": "26"}, {"level": 3, "label": "2.2.1", "title": "SPICE Components", "pagenum": "29"}, {"level": 3, "label": "2.2.2", "title": "The Future", "pagenum": "30"}, {"level": 2, "label": "2.3", "title": "Software Process Models", "pagenum": "31"}, {"level": 2, "label": "2.4", "title": "The Linear Sequential Model", "pagenum": "33"}, {"level": 2, "label": "2.5", "title": "The Prototyping Model", "pagenum": "35"}, {"level": 2, "label": "2.6", "title": "The RAD Model", "pagenum": "37"}, {"level": 2, "label": "2.7", "title": "Evolutionary Software Process Models", "pagenum": "39"}, {"level": 3, "label": "2.7.1", "title": "The Incremental Model", "pagenum": "40"}, {"level": 3, "label": "2.7.2", "title": "The Spiral Model", "pagenum": "42"}, {"level": 3, "label": "2.7.3", "title": "The Component Assembly Model", "pagenum": "44"}, {"level": 3, "label": "2.7.4", "title": "The Concurrent Development Model", "pagenum": "46"}, {"level": 2, "label": "2.8", "title": "The Formal Methods Model", "pagenum": "48"}, {"level": 2, "label": "2.9", "title": "Fourth Generation Techniques", "pagenum": "49"}, {"level": 2, "label": "2.10", "title": "Process Technology", "pagenum": "50"}, {"level": 2, "label": "2.11", "title": "Product and Process", "pagenum": "50"}, {"level": 2, "label": "2.12", "title": "Summary", "pagenum": "51"}, {"level": 2, "label": "", "title": "References", "pagenum": "52"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "53"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "54"}, {"level": 0, "label": "Part Two", "title": "Managing Software Projects", "pagenum": "57"}, {"level": 1, "label": "Chapter 3", "title": "Project Management Concepts", "pagenum": "59"}, {"level": 2, "label": "3.1", "title": "The Management Spectrum", "pagenum": "60"}, {"level": 3, "label": "3.1.1", "title": "People", "pagenum": "60"}, {"level": 3, "label": "3.1.2", "title": "The Problem", "pagenum": "60"}, {"level": 3, "label": "3.1.3", "title": "The Process", "pagenum": "61"}, {"level": 2, "label": "3.2", "title": "People", "pagenum": "61"}, {"level": 3, "label": "3.2.1", "title": "The Players", "pagenum": "62"}, {"level": 3, "label": "3.2.2", "title": "Team Leaders", "pagenum": "62"}, {"level": 3, "label": "3.2.3", "title": "The Software Team", "pagenum": "63"}, {"level": 3, "label": "3.2.4", "title": "Coordination and Communication Issues", "pagenum": "67"}, {"level": 2, "label": "3.3", "title": "The Problem", "pagenum": "68"}, {"level": 3, "label": "3.3.1", "title": "Software Scope", "pagenum": "68"}, {"level": 3, "label": "3.3.2", "title": "Problem Decomposition", "pagenum": "69"}, {"level": 2, "label": "3.4", "title": "The Process", "pagenum": "70"}, {"level": 3, "label": "3.4.1", "title": "Melding the Problem and the Process", "pagenum": "71"}, {"level": 3, "label": "3.4.2", "title": "Process Decomposition", "pagenum": "72"}, {"level": 2, "label": "3.5", "title": "The Project", "pagenum": "73"}, {"level": 2, "label": "3.6", "title": "Summary", "pagenum": "74"}, {"level": 2, "label": "", "title": "References", "pagenum": "74"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "75"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "76"}, {"level": 1, "label": "Chapter 4", "title": "Software Process and Project Metrics", "pagenum": "78"}, {"level": 2, "label": "4.1", "title": "Measures, Metrics, and Indicators", "pagenum": "79"}, {"level": 2, "label": "4.2", "title": "Metrics in the Process and Project Domains", "pagenum": "79"}, {"level": 3, "label": "4.2.1", "title": "Process Metrics and Software Process Improvement", "pagenum": "80"}, {"level": 3, "label": "4.2.2", "title": "Project Metrics", "pagenum": "84"}, {"level": 2, "label": "4.3", "title": "Software Measurement", "pagenum": "85"}, {"level": 3, "label": "4.3.1", "title": "Size-Oriented Metrics", "pagenum": "86"}, {"level": 3, "label": "4.3.2", "title": "Function-Oriented Metrics", "pagenum": "87"}, {"level": 3, "label": "4.3.3", "title": "Extended Function Point Metrics", "pagenum": "89"}, {"level": 2, "label": "4.4", "title": "Reconciling Different Metrics Approaches", "pagenum": "92"}, {"level": 2, "label": "4.5", "title": "Metrics for Software Quality", "pagenum": "94"}, {"level": 3, "label": "4.5.1", "title": "An Overview of Factors That Affect Quality", "pagenum": "94"}, {"level": 3, "label": "4.5.2", "title": "Measuring Quality", "pagenum": "95"}, {"level": 3, "label": "4.5.3", "title": "Defect Removal Efficiency", "pagenum": "96"}, {"level": 2, "label": "4.6", "title": "Integrating Metrics Within the Software Process", "pagenum": "97"}, {"level": 2, "label": "4.7", "title": "The Development of Metrics and GQM", "pagenum": "99"}, {"level": 2, "label": "4.8", "title": "Summary", "pagenum": "104"}, {"level": 2, "label": "", "title": "References", "pagenum": "104"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "105"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "107"}, {"level": 1, "label": "Chapter 5", "title": "Software Project Planning", "pagenum": "110"}, {"level": 2, "label": "5.1", "title": "Observations on Estimating", "pagenum": "110"}, {"level": 2, "label": "5.2", "title": "Project Planning Objectives", "pagenum": "112"}, {"level": 2, "label": "5.3", "title": "Software Scope", "pagenum": "112"}, {"level": 3, "label": "5.3.1", "title": "Obtaining Information Necessary for Scope", "pagenum": "112"}, {"level": 3, "label": "5.3.2", "title": "A Scoping Example", "pagenum": "114"}, {"level": 2, "label": "5.4", "title": "Resources", "pagenum": "116"}, {"level": 3, "label": "5.4.1", "title": "Human Resources", "pagenum": "117"}, {"level": 3, "label": "5.4.2", "title": "Reusable Software Resources", "pagenum": "117"}, {"level": 3, "label": "5.4.3", "title": "Environmental Resources", "pagenum": "118"}, {"level": 2, "label": "5.5", "title": "Software Project Estimation", "pagenum": "119"}, {"level": 2, "label": "5.6", "title": "Decomposition Techniques", "pagenum": "120"}, {"level": 3, "label": "5.6.1", "title": "Software Sizing", "pagenum": "120"}, {"level": 3, "label": "5.6.2", "title": "Problem-Based Estimation", "pagenum": "121"}, {"level": 3, "label": "5.6.3", "title": "An Example of LOC-Based Estimation", "pagenum": "123"}, {"level": 3, "label": "5.6.4", "title": "An Example of FP-Based Estimation", "pagenum": "124"}, {"level": 3, "label": "5.6.5", "title": "Process-Based Estimation", "pagenum": "126"}, {"level": 3, "label": "5.6.6", "title": "An Example of Process-Based Estimation", "pagenum": "126"}, {"level": 2, "label": "5.7", "title": "Empirical Estimation Models", "pagenum": "128"}, {"level": 3, "label": "5.7.1", "title": "The Structure of Estimation Models", "pagenum": "128"}, {"level": 3, "label": "5.7.2", "title": "The COCOMO Model", "pagenum": "129"}, {"level": 3, "label": "5.7.3", "title": "The Software Equation", "pagenum": "132"}, {"level": 2, "label": "5.8", "title": "The Make-Buy Decision", "pagenum": "133"}, {"level": 3, "label": "5.8.1", "title": "Creating a Decision Tree", "pagenum": "134"}, {"level": 3, "label": "5.8.2", "title": "Outsourcing", "pagenum": "135"}, {"level": 2, "label": "5.9", "title": "Automated Estimation Tools", "pagenum": "136"}, {"level": 2, "label": "5.10", "title": "Summary", "pagenum": "137"}, {"level": 2, "label": "", "title": "References", "pagenum": "137"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "137"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "138"}, {"level": 1, "label": "Chapter 6", "title": "Risk Management", "pagenum": "140"}, {"level": 2, "label": "6.1", "title": "Reactive vs. Proactive Risk Strategies", "pagenum": "141"}, {"level": 2, "label": "6.2", "title": "Software Risks", "pagenum": "141"}, {"level": 2, "label": "6.3", "title": "Risk Identification", "pagenum": "142"}, {"level": 3, "label": "6.3.1", "title": "Product Size Risks", "pagenum": "143"}, {"level": 3, "label": "6.3.2", "title": "Business Impact Risks", "pagenum": "144"}, {"level": 3, "label": "6.3.3", "title": "Customer-Related Risks", "pagenum": "144"}, {"level": 3, "label": "6.3.4", "title": "Process Risks", "pagenum": "145"}, {"level": 3, "label": "6.3.5", "title": "Technology Risk", "pagenum": "147"}, {"level": 3, "label": "6.3.6", "title": "Development Environment Risks", "pagenum": "147"}, {"level": 3, "label": "6.3.7", "title": "Risks Associated with Staff Size and Experience", "pagenum": "148"}, {"level": 3, "label": "6.3.8", "title": "Risk Components and Drivers", "pagenum": "149"}, {"level": 2, "label": "6.4", "title": "Risk Projection", "pagenum": "149"}, {"level": 3, "label": "6.4.1", "title": "Developing a Risk Table", "pagenum": "149"}, {"level": 3, "label": "6.4.2", "title": "Assessing Risk Impact", "pagenum": "152"}, {"level": 3, "label": "6.4.3", "title": "Risk Assessment", "pagenum": "153"}, {"level": 2, "label": "6.5", "title": "Risk Mitigation, Monitoring, and Management", "pagenum": "154"}, {"level": 2, "label": "6.6", "title": "Safety Risks and Hazards", "pagenum": "156"}, {"level": 2, "label": "6.7", "title": "The RMMM Plan", "pagenum": "157"}, {"level": 2, "label": "6.8", "title": "Summary", "pagenum": "157"}, {"level": 2, "label": "", "title": "References", "pagenum": "158"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "158"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "159"}, {"level": 1, "label": "Chapter 7", "title": "Project Scheduling and Tracking", "pagenum": "161"}, {"level": 2, "label": "7.1", "title": "Basic Concepts", "pagenum": "162"}, {"level": 3, "label": "7.1.1", "title": "Comments on \"Lateness\"", "pagenum": "162"}, {"level": 3, "label": "7.1.2", "title": "Basic Principles", "pagenum": "164"}, {"level": 2, "label": "7.2", "title": "The Relationship Between People and Effort", "pagenum": "165"}, {"level": 3, "label": "7.2.1", "title": "An Example", "pagenum": "166"}, {"level": 3, "label": "7.2.2", "title": "An Empirical Relationship", "pagenum": "166"}, {"level": 3, "label": "7.2.3", "title": "Effort Distribution", "pagenum": "167"}, {"level": 2, "label": "7.3", "title": "Defining a Task Set for the Software Project", "pagenum": "168"}, {"level": 3, "label": "7.3.1", "title": "Degree of Rigor", "pagenum": "169"}, {"level": 3, "label": "7.3.2", "title": "Defining Adaptation Criteria", "pagenum": "169"}, {"level": 3, "label": "7.3.3", "title": "Computing a Task Set Selector Value", "pagenum": "170"}, {"level": 3, "label": "7.3.4", "title": "Interpreting the TSS Value and Selecting the Task Set", "pagenum": "171"}, {"level": 2, "label": "7.4", "title": "Selecting Software Engineering Tasks", "pagenum": "172"}, {"level": 2, "label": "7.5", "title": "Refinement of Major Tasks", "pagenum": "173"}, {"level": 2, "label": "7.6", "title": "Defining a Task Network", "pagenum": "176"}, {"level": 2, "label": "7.7", "title": "Scheduling", "pagenum": "178"}, {"level": 3, "label": "7.7.1", "title": "Timeline Charts", "pagenum": "178"}, {"level": 3, "label": "7.7.2", "title": "Tracking the Schedule", "pagenum": "180"}, {"level": 2, "label": "7.8", "title": "The Project Plan", "pagenum": "182"}, {"level": 2, "label": "", "title": "Summary", "pagenum": "183"}, {"level": 2, "label": "", "title": "References", "pagenum": "184"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "184"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "185"}, {"level": 1, "label": "Chapter 8", "title": "Software Quality Assurance", "pagenum": "187"}, {"level": 2, "label": "8.1", "title": "Quality Concepts", "pagenum": "188"}, {"level": 3, "label": "8.1.1", "title": "Quality", "pagenum": "189"}, {"level": 3, "label": "8.1.2", "title": "Quality Control", "pagenum": "189"}, {"level": 3, "label": "8.1.3", "title": "Quality Assurance", "pagenum": "190"}, {"level": 3, "label": "8.1.4", "title": "Cost of Quality", "pagenum": "190"}, {"level": 2, "label": "8.2", "title": "The Quality Movement", "pagenum": "192"}, {"level": 2, "label": "8.3", "title": "Software Quality Assurance", "pagenum": "193"}, {"level": 3, "label": "8.3.1", "title": "Background Issues", "pagenum": "193"}, {"level": 3, "label": "8.3.2", "title": "SQA Activities", "pagenum": "194"}, {"level": 2, "label": "8.4", "title": "Software Reviews", "pagenum": "195"}, {"level": 3, "label": "8.4.1", "title": "Cost Impact of Software Defects", "pagenum": "196"}, {"level": 3, "label": "8.4.2", "title": "Defect Amplification and Removal", "pagenum": "197"}, {"level": 2, "label": "8.5", "title": "Formal Technical Reviews", "pagenum": "198"}, {"level": 3, "label": "8.5.1", "title": "The Review Meeting", "pagenum": "199"}, {"level": 3, "label": "8.5.2", "title": "Review Reporting and Record Keeping", "pagenum": "200"}, {"level": 3, "label": "8.5.3", "title": "Review Guidelines", "pagenum": "201"}, {"level": 2, "label": "8.6", "title": "Formal Approaches to SQA", "pagenum": "202"}, {"level": 2, "label": "8.7", "title": "Statistical Quality Assurance", "pagenum": "203"}, {"level": 2, "label": "8.8", "title": "Software Reliability", "pagenum": "205"}, {"level": 3, "label": "8.8.1", "title": "Measures of Reliability and Availability", "pagenum": "206"}, {"level": 3, "label": "8.8.2", "title": "Software Safety and Hazard Analysis", "pagenum": "206"}, {"level": 2, "label": "8.9", "title": "The Quality System", "pagenum": "208"}, {"level": 2, "label": "8.10", "title": "The ISO 9001 Quality Standard", "pagenum": "211"}, {"level": 2, "label": "8.11", "title": "A Selection of the Elements of ISO 9001", "pagenum": "212"}, {"level": 3, "label": "8.11.1", "title": "Management Responsibility", "pagenum": "212"}, {"level": 3, "label": "8.11.2", "title": "Quality System", "pagenum": "214"}, {"level": 3, "label": "8.11.3", "title": "Contract Review", "pagenum": "214"}, {"level": 3, "label": "8.11.4", "title": "Design Control", "pagenum": "216"}, {"level": 3, "label": "8.11.5", "title": "Purchasing", "pagenum": "217"}, {"level": 2, "label": "8.12", "title": "Attaining ISO Certification", "pagenum": "218"}, {"level": 2, "label": "8.13", "title": "Summary", "pagenum": "219"}, {"level": 2, "label": "", "title": "References", "pagenum": "220"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "221"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "222"}, {"level": 1, "label": "Chapter 9", "title": "Software Configuration Management", "pagenum": "225"}, {"level": 2, "label": "9.1", "title": "Software Configuration Management", "pagenum": "226"}, {"level": 3, "label": "9.1.1", "title": "Baselines", "pagenum": "226"}, {"level": 3, "label": "9.1.2", "title": "Software Configuration Items", "pagenum": "228"}, {"level": 2, "label": "9.2", "title": "The SCM Process", "pagenum": "230"}, {"level": 2, "label": "9.3", "title": "Identification of Objects in the Software Configuration", "pagenum": "231"}, {"level": 2, "label": "9.4", "title": "Version Control", "pagenum": "234"}, {"level": 2, "label": "9.5", "title": "Change Control", "pagenum": "236"}, {"level": 2, "label": "9.6", "title": "Configuration Audit", "pagenum": "239"}, {"level": 2, "label": "9.7", "title": "Status Reporting", "pagenum": "240"}, {"level": 2, "label": "9.8", "title": "SCM Standards", "pagenum": "240"}, {"level": 2, "label": "9.9", "title": "Summary", "pagenum": "240"}, {"level": 2, "label": "", "title": "References", "pagenum": "241"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "242"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "242"}, {"level": 0, "label": "Part Three", "title": "Conventional Methods for Software Engineering", "pagenum": "245"}, {"level": 1, "label": "Chapter 10", "title": "System Engineering", "pagenum": "247"}, {"level": 2, "label": "10.1", "title": "Computer-Based Systems", "pagenum": "248"}, {"level": 2, "label": "10.2", "title": "The System Engineering Hierarchy", "pagenum": "250"}, {"level": 3, "label": "10.2.1", "title": "System Modeling", "pagenum": "251"}, {"level": 3, "label": "10.2.2", "title": "Information Engineering: An Overview", "pagenum": "253"}, {"level": 3, "label": "10.2.3", "title": "Product Engineering: An Overview", "pagenum": "255"}, {"level": 2, "label": "10.3", "title": "Information Engineering", "pagenum": "257"}, {"level": 2, "label": "10.4", "title": "Information Strategy Planning", "pagenum": "257"}, {"level": 3, "label": "10.4.1", "title": "Enterprise Modeling", "pagenum": "258"}, {"level": 3, "label": "10.4.2", "title": "Business-Level Data Modeling", "pagenum": "260"}, {"level": 2, "label": "10.5", "title": "Business Area Analysis", "pagenum": "261"}, {"level": 3, "label": "10.5.1", "title": "Process Modeling", "pagenum": "263"}, {"level": 3, "label": "10.5.2", "title": "Information Flow Modeling", "pagenum": "263"}, {"level": 2, "label": "10.6", "title": "Product Engineering", "pagenum": "266"}, {"level": 3, "label": "10.6.1", "title": "System Analysis", "pagenum": "269"}, {"level": 3, "label": "10.6.2", "title": "Identification of Need", "pagenum": "269"}, {"level": 3, "label": "10.6.3", "title": "Feasibility Study", "pagenum": "269"}, {"level": 3, "label": "10.6.4", "title": "Economic Analysis", "pagenum": "271"}, {"level": 3, "label": "10.6.5", "title": "Technical Analysis", "pagenum": "272"}, {"level": 2, "label": "10.7", "title": "Modeling the System Architecture", "pagenum": "275"}, {"level": 2, "label": "10.8", "title": "System Modeling and Simulation", "pagenum": "278"}, {"level": 2, "label": "10.9", "title": "System Specification", "pagenum": "280"}, {"level": 2, "label": "10.10", "title": "Summary", "pagenum": "280"}, {"level": 2, "label": "", "title": "References", "pagenum": "282"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "282"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "284"}, {"level": 1, "label": "Chapter 11", "title": "Analysis Concepts and Principles", "pagenum": "286"}, {"level": 2, "label": "11.1", "title": "Requirements Analysis", "pagenum": "286"}, {"level": 2, "label": "11.2", "title": "Communication Techniques", "pagenum": "288"}, {"level": 3, "label": "11.2.1", "title": "Initiating the Process", "pagenum": "289"}, {"level": 3, "label": "11.2.2", "title": "Facilitated Application Specification Techniques", "pagenum": "290"}, {"level": 3, "label": "11.2.3", "title": "Quality Function Deployment", "pagenum": "293"}, {"level": 2, "label": "11.3", "title": "Analysis Principles", "pagenum": "294"}, {"level": 3, "label": "11.3.1", "title": "The Information Domain", "pagenum": "295"}, {"level": 3, "label": "11.3.2", "title": "Modeling", "pagenum": "297"}, {"level": 3, "label": "11.3.3", "title": "Partitioning", "pagenum": "298"}, {"level": 3, "label": "11.3.4", "title": "Essential and Implementation Views", "pagenum": "300"}, {"level": 2, "label": "11.4", "title": "Software Prototyping", "pagenum": "301"}, {"level": 3, "label": "11.4.1", "title": "Selecting the Prototyping Approach", "pagenum": "301"}, {"level": 3, "label": "11.4.2", "title": "Prototyping Methods and Tools", "pagenum": "303"}, {"level": 2, "label": "11.5", "title": "Specification", "pagenum": "304"}, {"level": 3, "label": "11.5.1", "title": "Specification Principles", "pagenum": "304"}, {"level": 3, "label": "11.5.2", "title": "Representation", "pagenum": "305"}, {"level": 3, "label": "11.5.3", "title": "The Software Requirements Specification", "pagenum": "306"}, {"level": 2, "label": "11.6", "title": "Specification Review", "pagenum": "308"}, {"level": 2, "label": "11.7", "title": "Summary", "pagenum": "309"}, {"level": 2, "label": "", "title": "References", "pagenum": "310"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "311"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "312"}, {"level": 1, "label": "Chapter 12", "title": "Analysis Modeling", "pagenum": "314"}, {"level": 2, "label": "12.1", "title": "A Brief History", "pagenum": "315"}, {"level": 2, "label": "12.2", "title": "The Elements of the Analysis Model", "pagenum": "316"}, {"level": 2, "label": "12.3", "title": "Data Modeling", "pagenum": "317"}, {"level": 3, "label": "12.3.1", "title": "Data Objects, Attributes, and Relationships", "pagenum": "317"}, {"level": 3, "label": "12.3.2", "title": "Cardinality and Modality", "pagenum": "320"}, {"level": 3, "label": "12.3.3", "title": "Entity-Relationship Diagrams", "pagenum": "321"}, {"level": 2, "label": "12.4", "title": "Functional Modeling and Information Flow", "pagenum": "325"}, {"level": 3, "label": "12.4.1", "title": "Data Flow Diagrams", "pagenum": "325"}, {"level": 3, "label": "12.4.2", "title": "Extensions for Real-Time Systems", "pagenum": "328"}, {"level": 3, "label": "12.4.3", "title": "Ward and Mellor Extensions", "pagenum": "328"}, {"level": 3, "label": "12.4.4", "title": "Hatley and Pirbhai Extensions", "pagenum": "331"}, {"level": 2, "label": "12.5", "title": "Behavioral Modeling", "pagenum": "332"}, {"level": 2, "label": "12.6", "title": "The Mechanics of Structured Analysis", "pagenum": "336"}, {"level": 3, "label": "12.6.1", "title": "Creating an Entity-Relationship Diagram", "pagenum": "337"}, {"level": 3, "label": "12.6.2", "title": "Creating a Data Flow Model", "pagenum": "339"}, {"level": 3, "label": "12.6.3", "title": "Creating a Control Flow Model", "pagenum": "341"}, {"level": 3, "label": "12.6.4", "title": "The Control Specification", "pagenum": "344"}, {"level": 3, "label": "12.6.5", "title": "The Process Specification", "pagenum": "346"}, {"level": 2, "label": "12.7", "title": "The Data Dictionary", "pagenum": "346"}, {"level": 2, "label": "12.8", "title": "An Overview of Other Classical Analysis Methods", "pagenum": "350"}, {"level": 3, "label": "12.8.1", "title": "Data Structured Systems Development", "pagenum": "350"}, {"level": 3, "label": "12.8.2", "title": "Jackson System Development", "pagenum": "351"}, {"level": 3, "label": "12.8.3", "title": "SADT", "pagenum": "351"}, {"level": 2, "label": "12.9", "title": "Summary", "pagenum": "352"}, {"level": 2, "label": "", "title": "References", "pagenum": "352"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "353"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "355"}, {"level": 1, "label": "Chapter 13", "title": "Design Concepts and Principles", "pagenum": "357"}, {"level": 2, "label": "13.1", "title": "Software Design and Software Engineering", "pagenum": "357"}, {"level": 2, "label": "13.2", "title": "The Design Process", "pagenum": "359"}, {"level": 3, "label": "13.2.1", "title": "Design and Software Quality", "pagenum": "359"}, {"level": 3, "label": "13.2.2", "title": "The Evolution of Software Design", "pagenum": "360"}, {"level": 2, "label": "13.3", "title": "Design Principles", "pagenum": "361"}, {"level": 2, "label": "13.4", "title": "Design Concepts", "pagenum": "362"}, {"level": 3, "label": "13.4.1", "title": "Abstraction", "pagenum": "363"}, {"level": 3, "label": "13.4.2", "title": "Refinement", "pagenum": "364"}, {"level": 3, "label": "13.4.3", "title": "Modularity", "pagenum": "364"}, {"level": 3, "label": "13.4.4", "title": "Software Architecture", "pagenum": "367"}, {"level": 3, "label": "13.4.5", "title": "Control Hierarchy", "pagenum": "368"}, {"level": 3, "label": "13.4.6", "title": "Structural Partitioning", "pagenum": "369"}, {"level": 3, "label": "13.4.7", "title": "Data Structure", "pagenum": "370"}, {"level": 3, "label": "13.4.8", "title": "Software Procedure", "pagenum": "371"}, {"level": 3, "label": "13.4.9", "title": "Information Hiding", "pagenum": "372"}, {"level": 2, "label": "13.5", "title": "Effective Modular Design", "pagenum": "373"}, {"level": 3, "label": "13.5.1", "title": "Functional Independence", "pagenum": "373"}, {"level": 3, "label": "13.5.2", "title": "Cohesion", "pagenum": "374"}, {"level": 3, "label": "13.5.3", "title": "Coupling", "pagenum": "375"}, {"level": 2, "label": "13.6", "title": "Design Heuristics for Effective Modularity", "pagenum": "377"}, {"level": 2, "label": "13.7", "title": "The Design Model", "pagenum": "379"}, {"level": 2, "label": "13.8", "title": "Design Documentation", "pagenum": "379"}, {"level": 2, "label": "13.9", "title": "Summary", "pagenum": "381"}, {"level": 2, "label": "", "title": "References", "pagenum": "382"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "383"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "384"}, {"level": 1, "label": "Chapter 14", "title": "Design Methods", "pagenum": "387"}, {"level": 2, "label": "14.1", "title": "Data Design", "pagenum": "387"}, {"level": 2, "label": "14.2", "title": "Architectural Design", "pagenum": "389"}, {"level": 3, "label": "14.2.1", "title": "Contributors", "pagenum": "390"}, {"level": 3, "label": "14.2.2", "title": "Areas of Application", "pagenum": "390"}, {"level": 2, "label": "14.3", "title": "The Architectural Design Process", "pagenum": "391"}, {"level": 3, "label": "14.3.1", "title": "Transform Flow", "pagenum": "391"}, {"level": 3, "label": "14.3.2", "title": "Transaction Flow", "pagenum": "391"}, {"level": 2, "label": "14.4", "title": "Transform Mapping", "pagenum": "393"}, {"level": 3, "label": "14.4.1", "title": "An Example", "pagenum": "393"}, {"level": 3, "label": "14.4.2", "title": "Design Steps", "pagenum": "394"}, {"level": 2, "label": "14.5", "title": "Transaction Mapping", "pagenum": "403"}, {"level": 3, "label": "14.5.1", "title": "An Example", "pagenum": "403"}, {"level": 3, "label": "14.5.2", "title": "Design Steps", "pagenum": "403"}, {"level": 2, "label": "14.6", "title": "Design Postprocessing", "pagenum": "406"}, {"level": 2, "label": "14.7", "title": "Architectural Design Optimization", "pagenum": "407"}, {"level": 2, "label": "14.8", "title": "Interface Design", "pagenum": "409"}, {"level": 3, "label": "14.8.1", "title": "Internal and External Interface Design", "pagenum": "410"}, {"level": 3, "label": "14.8.2", "title": "User Interface Design", "pagenum": "410"}, {"level": 2, "label": "14.9", "title": "Human-Computer Interface Design", "pagenum": "411"}, {"level": 3, "label": "14.9.1", "title": "Interface Design Models", "pagenum": "411"}, {"level": 3, "label": "14.9.2", "title": "Task Analysis and Modeling", "pagenum": "412"}, {"level": 3, "label": "14.9.3", "title": "Design Issues", "pagenum": "414"}, {"level": 3, "label": "14.9.4", "title": "Implementation Tools", "pagenum": "416"}, {"level": 3, "label": "14.9.5", "title": "Design Evaluation", "pagenum": "417"}, {"level": 2, "label": "14.10", "title": "Interface Design Guidelines", "pagenum": "419"}, {"level": 3, "label": "14.10.1", "title": "General Interaction", "pagenum": "419"}, {"level": 3, "label": "14.10.2", "title": "Information Display", "pagenum": "420"}, {"level": 3, "label": "14.10.3", "title": "Data Input", "pagenum": "421"}, {"level": 2, "label": "14.11", "title": "Procedural Design", "pagenum": "422"}, {"level": 3, "label": "14.11.1", "title": "Structured Programming", "pagenum": "422"}, {"level": 3, "label": "14.11.2", "title": "Graphical Design Notation", "pagenum": "423"}, {"level": 3, "label": "14.11.3", "title": "Tabular Design Notation", "pagenum": "425"}, {"level": 3, "label": "14.11.4", "title": "Program Design Language", "pagenum": "427"}, {"level": 3, "label": "14.11.5", "title": "A PDL Example", "pagenum": "428"}, {"level": 2, "label": "14.12", "title": "Summary", "pagenum": "431"}, {"level": 2, "label": "", "title": "References", "pagenum": "432"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "433"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "437"}, {"level": 1, "label": "Chapter 15", "title": "Design for Real-Time Systems", "pagenum": "439"}, {"level": 2, "label": "15.1", "title": "System Considerations", "pagenum": "440"}, {"level": 2, "label": "15.2", "title": "Real-Time Systems", "pagenum": "441"}, {"level": 3, "label": "15.2.1", "title": "Integration and Performance Issues", "pagenum": "441"}, {"level": 3, "label": "15.2.2", "title": "Interrupt Handling", "pagenum": "442"}, {"level": 3, "label": "15.2.3", "title": "Real-Time Databases", "pagenum": "444"}, {"level": 3, "label": "15.2.4", "title": "Real-Time Operating Systems", "pagenum": "444"}, {"level": 3, "label": "15.2.5", "title": "Real-Time Languages", "pagenum": "445"}, {"level": 3, "label": "15.2.6", "title": "Task Synchronization and Communication", "pagenum": "446"}, {"level": 2, "label": "15.3", "title": "Analysis and Simulation of Real-Time Systems", "pagenum": "446"}, {"level": 3, "label": "15.3.1", "title": "Mathematical Tools for Real-Time System Analysis", "pagenum": "447"}, {"level": 3, "label": "15.3.2", "title": "Simulation and Modeling Techniques", "pagenum": "451"}, {"level": 2, "label": "15.4", "title": "Real-Time Design", "pagenum": "458"}, {"level": 2, "label": "15.5", "title": "Summary", "pagenum": "459"}, {"level": 2, "label": "", "title": "References", "pagenum": "460"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "461"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "462"}, {"level": 1, "label": "Chapter 16", "title": "Software Testing Methods", "pagenum": "464"}, {"level": 2, "label": "16.1", "title": "Software Testing Fundamentals", "pagenum": "465"}, {"level": 3, "label": "16.1.1", "title": "Testing Objectives", "pagenum": "465"}, {"level": 3, "label": "16.1.2", "title": "Testing Principles", "pagenum": "466"}, {"level": 3, "label": "16.1.3", "title": "Testability", "pagenum": "467"}, {"level": 2, "label": "16.2", "title": "Test Case Design", "pagenum": "469"}, {"level": 2, "label": "16.3", "title": "White Box Testing", "pagenum": "471"}, {"level": 2, "label": "16.4", "title": "Basis Path Testing", "pagenum": "471"}, {"level": 3, "label": "16.4.1", "title": "Flow Graph Notation", "pagenum": "472"}, {"level": 3, "label": "16.4.2", "title": "Cyclomatic Complexity", "pagenum": "474"}, {"level": 3, "label": "16.4.3", "title": "Deriving Test Cases", "pagenum": "476"}, {"level": 3, "label": "16.4.4", "title": "Graph Matrices", "pagenum": "479"}, {"level": 2, "label": "16.5", "title": "Control Structure Testing", "pagenum": "480"}, {"level": 3, "label": "16.5.1", "title": "Condition Testing", "pagenum": "481"}, {"level": 3, "label": "16.5.2", "title": "Data Flow Testing", "pagenum": "483"}, {"level": 3, "label": "16.5.3", "title": "Loop Testing", "pagenum": "485"}, {"level": 2, "label": "16.6", "title": "Black-Box Testing", "pagenum": "486"}, {"level": 3, "label": "16.6.1", "title": "Graph-Based Testing Methods", "pagenum": "487"}, {"level": 3, "label": "16.6.2", "title": "Equivalence Partitioning", "pagenum": "490"}, {"level": 3, "label": "16.6.3", "title": "Boundary Value Analysis", "pagenum": "491"}, {"level": 3, "label": "16.6.4", "title": "Comparison Testing", "pagenum": "492"}, {"level": 2, "label": "16.7", "title": "Testing for Specialized Environments", "pagenum": "493"}, {"level": 3, "label": "16.7.1", "title": "Testing GUIs", "pagenum": "493"}, {"level": 3, "label": "16.7.2", "title": "Testing of Client/Server Architectures", "pagenum": "495"}, {"level": 3, "label": "16.7.3", "title": "Testing Documentation and Help Facilities", "pagenum": "495"}, {"level": 3, "label": "16.7.4", "title": "Testing for Real-Time Systems", "pagenum": "496"}, {"level": 2, "label": "16.8", "title": "Summary", "pagenum": "497"}, {"level": 2, "label": "", "title": "References", "pagenum": "498"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "499"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "500"}, {"level": 1, "label": "Chapter 17", "title": "Software Testing Strategies", "pagenum": "503"}, {"level": 2, "label": "17.1", "title": "A Strategic Approach to Software Testing", "pagenum": "504"}, {"level": 3, "label": "17.1.1", "title": "Verification and Validation", "pagenum": "504"}, {"level": 3, "label": "17.1.2", "title": "Organizing for Software Testing", "pagenum": "505"}, {"level": 3, "label": "17.1.3", "title": "A Software Testing Strategy", "pagenum": "506"}, {"level": 3, "label": "17.1.4", "title": "Criteria for Completion of Testing", "pagenum": "508"}, {"level": 2, "label": "17.2", "title": "Strategic Issues", "pagenum": "509"}, {"level": 2, "label": "17.3", "title": "Unit Testing", "pagenum": "510"}, {"level": 3, "label": "17.3.1", "title": "Unit Test Considerations", "pagenum": "511"}, {"level": 3, "label": "17.3.2", "title": "Unit Test Procedures", "pagenum": "513"}, {"level": 2, "label": "17.4", "title": "Integration Testing", "pagenum": "514"}, {"level": 3, "label": "17.4.1", "title": "Top-Down Integration", "pagenum": "515"}, {"level": 3, "label": "17.4.2", "title": "Bottom-Up Integration", "pagenum": "517"}, {"level": 3, "label": "17.4.3", "title": "Regression Testing", "pagenum": "517"}, {"level": 3, "label": "17.4.4", "title": "Comments on Integration Testing", "pagenum": "519"}, {"level": 3, "label": "17.4.5", "title": "Integration Test Documentation", "pagenum": "519"}, {"level": 2, "label": "17.5", "title": "Validation Testing", "pagenum": "521"}, {"level": 3, "label": "17.5.1", "title": "Validation Test Criteria", "pagenum": "522"}, {"level": 3, "label": "17.5.2", "title": "Configuration Review", "pagenum": "522"}, {"level": 3, "label": "17.5.3", "title": "Alpha and Beta Testing", "pagenum": "522"}, {"level": 2, "label": "17.6", "title": "System Testing", "pagenum": "523"}, {"level": 3, "label": "17.6.1", "title": "Recovery Testing", "pagenum": "523"}, {"level": 3, "label": "17.6.2", "title": "Security Testing", "pagenum": "524"}, {"level": 3, "label": "17.6.3", "title": "Stress Testing", "pagenum": "524"}, {"level": 3, "label": "17.6.4", "title": "Performance Testing", "pagenum": "525"}, {"level": 2, "label": "17.7", "title": "The Art of Debugging", "pagenum": "525"}, {"level": 3, "label": "17.7.1", "title": "The Debugging Process", "pagenum": "526"}, {"level": 3, "label": "17.7.2", "title": "Psychological Considerations", "pagenum": "527"}, {"level": 3, "label": "17.7.3", "title": "Debugging Approaches", "pagenum": "527"}, {"level": 2, "label": "17.8", "title": "Summary", "pagenum": "529"}, {"level": 2, "label": "", "title": "References", "pagenum": "530"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "530"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "531"}, {"level": 1, "label": "Chapter 18", "title": "Technical Metrics for Software", "pagenum": "533"}, {"level": 2, "label": "18.1", "title": "Software Quality", "pagenum": "534"}, {"level": 3, "label": "18.1.1", "title": "McCall's Quality Factors", "pagenum": "535"}, {"level": 3, "label": "18.1.2", "title": "FURPS", "pagenum": "537"}, {"level": 3, "label": "18.1.3", "title": "The Transition to a Quantitative View", "pagenum": "538"}, {"level": 2, "label": "18.2", "title": "A Framework for Technical Software Metrics", "pagenum": "539"}, {"level": 3, "label": "18.2.1", "title": "The Challenge of Technical Metrics", "pagenum": "539"}, {"level": 3, "label": "18.2.2", "title": "Measurement Principles", "pagenum": "540"}, {"level": 3, "label": "18.2.3", "title": "The Attributes of Effective Software Metrics", "pagenum": "541"}, {"level": 2, "label": "18.3", "title": "Metrics for the Analysis Model", "pagenum": "542"}, {"level": 3, "label": "18.3.1", "title": "Function-Based Metrics", "pagenum": "543"}, {"level": 3, "label": "18.3.2", "title": "The Bang Metric", "pagenum": "545"}, {"level": 3, "label": "18.3.3", "title": "Metrics for Specification Quality", "pagenum": "547"}, {"level": 2, "label": "18.4", "title": "Metrics for the Design Model", "pagenum": "548"}, {"level": 3, "label": "18.4.1", "title": "High-Level Design Metrics", "pagenum": "549"}, {"level": 3, "label": "18.4.2", "title": "Component-Level Design Metrics", "pagenum": "552"}, {"level": 3, "label": "18.4.3", "title": "Interface Design Metrics", "pagenum": "555"}, {"level": 2, "label": "18.5", "title": "Metrics for Source Code", "pagenum": "556"}, {"level": 2, "label": "18.6", "title": "Metrics for Testing", "pagenum": "558"}, {"level": 2, "label": "18.7", "title": "Metrics for Maintenance", "pagenum": "559"}, {"level": 2, "label": "18.8", "title": "Summary", "pagenum": "560"}, {"level": 2, "label": "", "title": "References", "pagenum": "560"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "562"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "563"}, {"level": 0, "label": "Part Four", "title": "Object-Oriented Software Engineering", "pagenum": "565"}, {"level": 1, "label": "Chapter 19", "title": "Object-Oriented Concepts and Principles", "pagenum": "567"}, {"level": 2, "label": "19.1", "title": "The Object-Oriented Paradigm", "pagenum": "568"}, {"level": 2, "label": "19.2", "title": "Object-Oriented Concepts", "pagenum": "569"}, {"level": 3, "label": "19.2.1", "title": "Classes and Objects", "pagenum": "572"}, {"level": 3, "label": "19.2.2", "title": "Attributes", "pagenum": "573"}, {"level": 3, "label": "19.2.3", "title": "Operations, Methods, and Services", "pagenum": "574"}, {"level": 3, "label": "19.2.4", "title": "Messages", "pagenum": "574"}, {"level": 3, "label": "19.2.5", "title": "Encapsulation, Inheritance, and Polymorphism", "pagenum": "576"}, {"level": 2, "label": "19.3", "title": "Identifying the Elements of an Object Model", "pagenum": "580"}, {"level": 3, "label": "19.3.1", "title": "Identifying Classes and Objects", "pagenum": "581"}, {"level": 3, "label": "19.3.2", "title": "Specifying Attributes", "pagenum": "584"}, {"level": 3, "label": "19.3.3", "title": "Defining Operations", "pagenum": "585"}, {"level": 3, "label": "19.3.4", "title": "Finalizing the Object Definition", "pagenum": "587"}, {"level": 2, "label": "19.4", "title": "Management of Object-Oriented Software Projects", "pagenum": "587"}, {"level": 3, "label": "19.4.1", "title": "The Common Process Framework for OO", "pagenum": "588"}, {"level": 3, "label": "19.4.2", "title": "Object-Oriented Project Metrics and Estimation", "pagenum": "589"}, {"level": 3, "label": "19.4.3", "title": "An OO Estimating and Scheduling Approach", "pagenum": "591"}, {"level": 3, "label": "19.4.4", "title": "Progress for an Object-Oriented Project", "pagenum": "592"}, {"level": 2, "label": "19.5", "title": "Summary", "pagenum": "593"}, {"level": 2, "label": "", "title": "References", "pagenum": "594"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "594"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "595"}, {"level": 1, "label": "Chapter 20", "title": "Object-Oriented Analysis", "pagenum": "597"}, {"level": 2, "label": "20.1", "title": "Object-Oriented Analysis", "pagenum": "598"}, {"level": 3, "label": "20.1.1", "title": "Conventional vs. OO Approaches", "pagenum": "598"}, {"level": 3, "label": "20.1.2", "title": "The OOA Landscape", "pagenum": "599"}, {"level": 2, "label": "20.2", "title": "Domain Analysis", "pagenum": "602"}, {"level": 3, "label": "20.2.1", "title": "Reuse and Domain Analysis", "pagenum": "603"}, {"level": 3, "label": "20.2.2", "title": "The Domain Analysis Process", "pagenum": "603"}, {"level": 2, "label": "20.3", "title": "Generic Components of the OO Analysis Model", "pagenum": "606"}, {"level": 2, "label": "20.4", "title": "The OOA Process", "pagenum": "607"}, {"level": 3, "label": "20.4.1", "title": "Use Cases", "pagenum": "608"}, {"level": 3, "label": "20.4.2", "title": "Class-Responsibility-Collaborator Modeling", "pagenum": "610"}, {"level": 3, "label": "20.4.3", "title": "Defining Structures and Hierarchies", "pagenum": "615"}, {"level": 3, "label": "20.4.4", "title": "Defining Subjects and Subsystems", "pagenum": "616"}, {"level": 2, "label": "20.5", "title": "The Object-Relationship Model", "pagenum": "617"}, {"level": 2, "label": "20.6", "title": "The Object-Behavior Model", "pagenum": "621"}, {"level": 3, "label": "20.6.1", "title": "Event Identification with Use Cases", "pagenum": "621"}, {"level": 3, "label": "20.6.2", "title": "State Representations", "pagenum": "622"}, {"level": 2, "label": "20.7", "title": "Summary", "pagenum": "625"}, {"level": 2, "label": "", "title": "References", "pagenum": "626"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "627"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "628"}, {"level": 1, "label": "Chapter 21", "title": "Object-Oriented Design", "pagenum": "630"}, {"level": 2, "label": "21.1", "title": "Design for Object-Oriented Systems", "pagenum": "631"}, {"level": 3, "label": "21.1.1", "title": "Conventional vs. OO Approaches", "pagenum": "632"}, {"level": 3, "label": "21.1.2", "title": "Design Issues", "pagenum": "633"}, {"level": 3, "label": "21.1.3", "title": "The OOD Landscape", "pagenum": "634"}, {"level": 2, "label": "21.2", "title": "The Generic Components of the OO Design Model", "pagenum": "639"}, {"level": 2, "label": "21.3", "title": "The System Design Process", "pagenum": "640"}, {"level": 3, "label": "21.3.1", "title": "Partitioning the Analysis Model", "pagenum": "641"}, {"level": 3, "label": "21.3.2", "title": "Concurrency and Subsystem Allocation", "pagenum": "642"}, {"level": 3, "label": "21.3.3", "title": "The Task Management Component", "pagenum": "642"}, {"level": 3, "label": "21.3.4", "title": "The Data Management Component", "pagenum": "643"}, {"level": 3, "label": "21.3.5", "title": "The Resource Management Component", "pagenum": "644"}, {"level": 3, "label": "21.3.6", "title": "The Human-Computer Interface Component", "pagenum": "644"}, {"level": 3, "label": "21.3.7", "title": "Inter-Subsystem Communication", "pagenum": "645"}, {"level": 2, "label": "21.4", "title": "The Object Design Process", "pagenum": "647"}, {"level": 3, "label": "21.4.1", "title": "Object Descriptions", "pagenum": "647"}, {"level": 3, "label": "21.4.2", "title": "Designing Algorithms and Data Structures", "pagenum": "648"}, {"level": 3, "label": "21.4.3", "title": "Program Components and Interfaces", "pagenum": "650"}, {"level": 2, "label": "21.5", "title": "Design Patterns", "pagenum": "652"}, {"level": 3, "label": "21.5.1", "title": "Describing a Design Pattern", "pagenum": "653"}, {"level": 3, "label": "21.5.2", "title": "Using Patterns in Design", "pagenum": "654"}, {"level": 2, "label": "21.6", "title": "Object-Oriented Programming", "pagenum": "654"}, {"level": 2, "label": "21.7", "title": "Summary", "pagenum": "654"}, {"level": 2, "label": "", "title": "References", "pagenum": "655"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "656"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "657"}, {"level": 1, "label": "Chapter 22", "title": "Object-Oriented Testing", "pagenum": "660"}, {"level": 2, "label": "22.1", "title": "Broadening the View of Testing", "pagenum": "660"}, {"level": 2, "label": "22.2", "title": "Testing OOA and OOD Models", "pagenum": "662"}, {"level": 3, "label": "22.2.1", "title": "Correctness of OOA and OOD Models", "pagenum": "662"}, {"level": 3, "label": "22.2.2", "title": "Consistency of OOA and OOD Models", "pagenum": "662"}, {"level": 2, "label": "22.3", "title": "Object-Oriented Testing Strategies", "pagenum": "664"}, {"level": 3, "label": "22.3.1", "title": "Unit Testing in the OO Context", "pagenum": "664"}, {"level": 3, "label": "22.3.2", "title": "Integration Testing in the OO Context", "pagenum": "665"}, {"level": 3, "label": "22.3.3", "title": "Validation Testing in an OO Context", "pagenum": "666"}, {"level": 2, "label": "22.4", "title": "Test Case Design for OO Software", "pagenum": "666"}, {"level": 3, "label": "22.4.1", "title": "The Test Case Design Implications of OO Concepts", "pagenum": "666"}, {"level": 3, "label": "22.4.2", "title": "Applicability of Conventional Test Case Design Methods", "pagenum": "667"}, {"level": 3, "label": "22.4.3", "title": "Fault-Based Testing", "pagenum": "667"}, {"level": 3, "label": "22.4.4", "title": "The Impact of OO Programming on Testing", "pagenum": "668"}, {"level": 3, "label": "22.4.5", "title": "Test Cases and the Class Hierarchy", "pagenum": "669"}, {"level": 3, "label": "22.4.6", "title": "Scenario-Based Test Design", "pagenum": "670"}, {"level": 3, "label": "22.4.7", "title": "Testing Surface Structure and Deep Structure", "pagenum": "671"}, {"level": 2, "label": "22.5", "title": "Testing Methods Applicable at the Class Level", "pagenum": "672"}, {"level": 3, "label": "22.5.1", "title": "Random Testing for OO Classes", "pagenum": "672"}, {"level": 3, "label": "22.5.2", "title": "Partition Testing at the Class Level", "pagenum": "673"}, {"level": 2, "label": "22.6", "title": "Interclass Test Case Design", "pagenum": "674"}, {"level": 3, "label": "22.6.1", "title": "Multiple Class Testing", "pagenum": "674"}, {"level": 3, "label": "22.6.2", "title": "Tests Derived from Behavior Models", "pagenum": "675"}, {"level": 2, "label": "22.7", "title": "Summary", "pagenum": "677"}, {"level": 2, "label": "", "title": "References", "pagenum": "678"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "678"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "679"}, {"level": 1, "label": "Chapter 23", "title": "Technical Metrics for Object-Oriented Systems", "pagenum": "680"}, {"level": 2, "label": "23.1", "title": "The Intent of Object-Oriented Metrics", "pagenum": "680"}, {"level": 2, "label": "23.2", "title": "The Distinguishing Characteristics", "pagenum": "681"}, {"level": 3, "label": "23.2.1", "title": "Localization", "pagenum": "681"}, {"level": 3, "label": "23.2.2", "title": "Encapsulation", "pagenum": "682"}, {"level": 3, "label": "23.2.3", "title": "Information Hiding", "pagenum": "682"}, {"level": 3, "label": "23.2.4", "title": "Inheritance", "pagenum": "682"}, {"level": 3, "label": "23.2.5", "title": "Abstraction", "pagenum": "683"}, {"level": 2, "label": "23.3", "title": "Metrics for the OO Design Model", "pagenum": "683"}, {"level": 2, "label": "23.4", "title": "Class-Oriented Metrics", "pagenum": "683"}, {"level": 3, "label": "23.4.1", "title": "The CK Metrics Suite", "pagenum": "683"}, {"level": 3, "label": "23.4.2", "title": "Metrics Proposed by Lorenz and Kidd", "pagenum": "686"}, {"level": 2, "label": "23.5", "title": "Operation-Oriented Metrics", "pagenum": "688"}, {"level": 2, "label": "23.6", "title": "Metrics for Object-Oriented Testing", "pagenum": "688"}, {"level": 2, "label": "23.7", "title": "Metrics for Object-Oriented Projects", "pagenum": "689"}, {"level": 2, "label": "23.8", "title": "Summary", "pagenum": "690"}, {"level": 2, "label": "", "title": "References", "pagenum": "691"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "691"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "692"}, {"level": 0, "label": "Part Five", "title": "Advanced Topics in Software Engineering", "pagenum": "695"}, {"level": 1, "label": "Chapter 24", "title": "Formal Methods", "pagenum": "697"}, {"level": 2, "label": "24.1", "title": "Basic Concepts", "pagenum": "697"}, {"level": 3, "label": "24.1.1", "title": "Deficiencies of Less Formal Approaches", "pagenum": "698"}, {"level": 3, "label": "24.1.2", "title": "Mathematics in Software Development", "pagenum": "700"}, {"level": 3, "label": "24.1.3", "title": "Formal Methods Concepts", "pagenum": "701"}, {"level": 2, "label": "24.2", "title": "Mathematical Preliminaries", "pagenum": "706"}, {"level": 3, "label": "24.2.1", "title": "Sets and Constructive Specification", "pagenum": "706"}, {"level": 3, "label": "24.2.2", "title": "Set Operators", "pagenum": "707"}, {"level": 3, "label": "24.2.3", "title": "Logic Operators", "pagenum": "710"}, {"level": 3, "label": "24.2.4", "title": "Sequences", "pagenum": "710"}, {"level": 2, "label": "24.3", "title": "Applying Mathematical Notation for Formal Specification", "pagenum": "712"}, {"level": 2, "label": "24.4", "title": "Formal Specification Languages", "pagenum": "714"}, {"level": 2, "label": "24.5", "title": "Using Z to Represent an Example Software Component", "pagenum": "715"}, {"level": 2, "label": "24.6", "title": "Object-Based Formal Methods", "pagenum": "717"}, {"level": 2, "label": "24.7", "title": "Algebraic Specification", "pagenum": "721"}, {"level": 2, "label": "24.8", "title": "Concurrent Formal Methods", "pagenum": "726"}, {"level": 2, "label": "24.9", "title": "Summary", "pagenum": "730"}, {"level": 2, "label": "", "title": "References", "pagenum": "731"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "732"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "733"}, {"level": 1, "label": "Chapter 25", "title": "Cleanroom Software Engineering", "pagenum": "735"}, {"level": 2, "label": "25.1", "title": "The Cleanroom Approach", "pagenum": "736"}, {"level": 3, "label": "25.1.1", "title": "The Cleanroom Strategy", "pagenum": "736"}, {"level": 3, "label": "25.1.2", "title": "What Makes Cleanroom Different?", "pagenum": "739"}, {"level": 2, "label": "25.2", "title": "Functional Specification", "pagenum": "739"}, {"level": 3, "label": "25.2.1", "title": "Black-Box Specification", "pagenum": "740"}, {"level": 3, "label": "25.2.2", "title": "State-Box Specification", "pagenum": "741"}, {"level": 3, "label": "25.2.3", "title": "Clear-Box Specification", "pagenum": "742"}, {"level": 2, "label": "25.3", "title": "Design Refinement and Verification", "pagenum": "742"}, {"level": 3, "label": "25.3.1", "title": "Design Refinement and Verification", "pagenum": "743"}, {"level": 3, "label": "25.3.2", "title": "Advantages of Design Verification", "pagenum": "747"}, {"level": 2, "label": "25.4", "title": "Cleanroom Testing", "pagenum": "748"}, {"level": 3, "label": "25.4.1", "title": "Statistical Use Testing", "pagenum": "748"}, {"level": 3, "label": "25.4.2", "title": "Certification", "pagenum": "750"}, {"level": 2, "label": "25.5", "title": "Summary", "pagenum": "751"}, {"level": 2, "label": "", "title": "References", "pagenum": "752"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "752"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "753"}, {"level": 1, "label": "Chapter 26", "title": "Software Reuse", "pagenum": "756"}, {"level": 2, "label": "26.1", "title": "Management Issues", "pagenum": "757"}, {"level": 3, "label": "26.1.1", "title": "Roadblocks to Reuse", "pagenum": "757"}, {"level": 3, "label": "26.1.2", "title": "A Hardware Analogy", "pagenum": "758"}, {"level": 3, "label": "26.1.3", "title": "Some Suggestions for Establishing an Approach to Reuse", "pagenum": "759"}, {"level": 2, "label": "26.2", "title": "The Reuse Process", "pagenum": "760"}, {"level": 3, "label": "26.2.1", "title": "Reusable Artifacts", "pagenum": "760"}, {"level": 3, "label": "26.2.2", "title": "A Process Model", "pagenum": "762"}, {"level": 2, "label": "26.3", "title": "Domain Engineering", "pagenum": "763"}, {"level": 3, "label": "26.3.1", "title": "The Domain Analysis Process", "pagenum": "764"}, {"level": 3, "label": "26.3.2", "title": "Characterization Functions", "pagenum": "765"}, {"level": 3, "label": "26.3.3", "title": "Structural Modeling and Structure Points", "pagenum": "766"}, {"level": 2, "label": "26.4", "title": "Building Reusable Components", "pagenum": "768"}, {"level": 3, "label": "26.4.1", "title": "Analysis and Design for Reuse", "pagenum": "768"}, {"level": 3, "label": "26.4.2", "title": "Construction Methods", "pagenum": "769"}, {"level": 3, "label": "26.4.3", "title": "Component-Based Development", "pagenum": "770"}, {"level": 2, "label": "26.5", "title": "Classifying and Retrieving Components", "pagenum": "771"}, {"level": 3, "label": "26.5.1", "title": "Describing Reusable Components", "pagenum": "772"}, {"level": 3, "label": "26.5.2", "title": "The Reuse Environment", "pagenum": "774"}, {"level": 2, "label": "26.6", "title": "Economics of Software Reuse", "pagenum": "775"}, {"level": 3, "label": "26.6.1", "title": "Impact on Quality, Productivity, and Cost", "pagenum": "775"}, {"level": 3, "label": "26.6.2", "title": "Cost Analysis Using Structure Points", "pagenum": "776"}, {"level": 3, "label": "26.6.3", "title": "Reuse Metrics", "pagenum": "777"}, {"level": 2, "label": "26.7", "title": "Summary", "pagenum": "778"}, {"level": 2, "label": "", "title": "References", "pagenum": "779"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "780"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "781"}, {"level": 1, "label": "Chapter 27", "title": "Reengineering", "pagenum": "784"}, {"level": 2, "label": "27.1", "title": "Business Process Reengineering", "pagenum": "785"}, {"level": 3, "label": "27.1.1", "title": "Business Processes", "pagenum": "785"}, {"level": 3, "label": "27.1.2", "title": "Principles of Business Process Reengineering", "pagenum": "787"}, {"level": 3, "label": "27.1.3", "title": "A BPR Model", "pagenum": "788"}, {"level": 3, "label": "27.1.4", "title": "Words of Warning", "pagenum": "789"}, {"level": 2, "label": "27.2", "title": "Software Reengineering", "pagenum": "790"}, {"level": 3, "label": "27.2.1", "title": "Software Maintenance", "pagenum": "790"}, {"level": 3, "label": "27.2.2", "title": "A Software Reengineering Process Model", "pagenum": "791"}, {"level": 2, "label": "27.3", "title": "Reverse Engineering", "pagenum": "795"}, {"level": 3, "label": "27.3.1", "title": "Reverse Engineering to Understand Processing", "pagenum": "796"}, {"level": 3, "label": "27.3.2", "title": "Reverse Engineering to Understand Data", "pagenum": "798"}, {"level": 3, "label": "27.3.3", "title": "Reverse Engineering User Interfaces", "pagenum": "799"}, {"level": 2, "label": "27.4", "title": "Restructuring", "pagenum": "801"}, {"level": 3, "label": "27.4.1", "title": "Code Restructuring", "pagenum": "801"}, {"level": 3, "label": "27.4.2", "title": "Data Restructuring", "pagenum": "802"}, {"level": 2, "label": "27.5", "title": "Forward Engineering", "pagenum": "802"}, {"level": 3, "label": "27.5.1", "title": "Forward Engineering for Client/Server Architectures", "pagenum": "803"}, {"level": 3, "label": "27.5.2", "title": "Forward Engineering for Object-Oriented Architectures", "pagenum": "805"}, {"level": 3, "label": "27.5.3", "title": "Forward Engineering User Interfaces", "pagenum": "806"}, {"level": 2, "label": "27.6", "title": "The Economics of Reengineering", "pagenum": "806"}, {"level": 2, "label": "27.7", "title": "Summary", "pagenum": "807"}, {"level": 2, "label": "", "title": "References", "pagenum": "808"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "809"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "810"}, {"level": 1, "label": "Chapter 28", "title": "Client/Server Software Engineering", "pagenum": "812"}, {"level": 2, "label": "28.1", "title": "The Structure of Client/Server Systems", "pagenum": "813"}, {"level": 3, "label": "28.1.1", "title": "Software Components for C/S Systems", "pagenum": "814"}, {"level": 3, "label": "28.1.2", "title": "The Distribution of Software Components", "pagenum": "815"}, {"level": 3, "label": "28.1.3", "title": "Guidelines for Distributing Application Components", "pagenum": "816"}, {"level": 3, "label": "28.1.4", "title": "Linking C/S Software Components", "pagenum": "817"}, {"level": 3, "label": "28.1.5", "title": "Middleware and Object Request Broker Architectures", "pagenum": "817"}, {"level": 2, "label": "28.2", "title": "Software Engineering for C/S Systems", "pagenum": "819"}, {"level": 2, "label": "28.3", "title": "Analysis Modeling Issues", "pagenum": "819"}, {"level": 2, "label": "28.4", "title": "Design for C/S Systems", "pagenum": "820"}, {"level": 3, "label": "28.4.1", "title": "Conventional Design Approaches", "pagenum": "822"}, {"level": 3, "label": "28.4.2", "title": "Database Design", "pagenum": "821"}, {"level": 3, "label": "28.4.3", "title": "An Overview of a Design Approach", "pagenum": "824"}, {"level": 3, "label": "28.4.4", "title": "Process Design Iteration", "pagenum": "825"}, {"level": 2, "label": "28.5", "title": "Testing Issues", "pagenum": "826"}, {"level": 3, "label": "28.5.1", "title": "Overall C/S Testing Strategy", "pagenum": "826"}, {"level": 3, "label": "28.5.2", "title": "C/S Testing Tactics", "pagenum": "829"}, {"level": 2, "label": "28.6", "title": "Intranets", "pagenum": "830"}, {"level": 3, "label": "28.6.1", "title": "What is an Intranet?", "pagenum": "830"}, {"level": 3, "label": "28.6.2", "title": "A Sample Technology", "pagenum": "831"}, {"level": 3, "label": "28.6.3", "title": "The Process of Developing an Intranet Application", "pagenum": "831"}, {"level": 2, "label": "28.7", "title": "Summary", "pagenum": "833"}, {"level": 2, "label": "", "title": "References", "pagenum": "833"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "834"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "835"}, {"level": 1, "label": "Chapter 29", "title": "Computer-Aided Software Engineering", "pagenum": "837"}, {"level": 2, "label": "29.1", "title": "What is CASE?", "pagenum": "838"}, {"level": 2, "label": "29.2", "title": "Building Blocks for CASE", "pagenum": "838"}, {"level": 2, "label": "29.3", "title": "A Taxonomy of CASE Tools", "pagenum": "840"}, {"level": 2, "label": "29.4", "title": "Integrated CASE Environments", "pagenum": "845"}, {"level": 2, "label": "29.5", "title": "The Integration Architecture", "pagenum": "846"}, {"level": 2, "label": "29.6", "title": "The CASE Repository", "pagenum": "848"}, {"level": 3, "label": "29.6.1", "title": "The Role of the Repository in I-CASE", "pagenum": "848"}, {"level": 3, "label": "29.6.2", "title": "Features and Content", "pagenum": "849"}, {"level": 2, "label": "29.7", "title": "Summary", "pagenum": "853"}, {"level": 2, "label": "", "title": "References", "pagenum": "854"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "854"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "855"}, {"level": 1, "label": "Chapter 30", "title": "The Road Ahead", "pagenum": "858"}, {"level": 2, "label": "30.1", "title": "The Importance of Software\u2014Revisited", "pagenum": "859"}, {"level": 2, "label": "30.2", "title": "The Scope of Change", "pagenum": "859"}, {"level": 2, "label": "30.3", "title": "People and the Way They Build Systems", "pagenum": "861"}, {"level": 2, "label": "30.4", "title": "The \"New\" Software Process", "pagenum": "864"}, {"level": 2, "label": "30.5", "title": "New Modes for Representing Information", "pagenum": "865"}, {"level": 2, "label": "30.6", "title": "Technology as a Driver", "pagenum": "867"}, {"level": 2, "label": "30.7", "title": "A Concluding Comment", "pagenum": "869"}, {"level": 2, "label": "", "title": "References", "pagenum": "869"}, {"level": 2, "label": "", "title": "Problems and Points to Ponder", "pagenum": "870"}, {"level": 2, "label": "", "title": "Further Readings and Other Information Sources", "pagenum": "870"}, {"level": 0, "label": "", "title": "Index", "pagenum": "872"}], "latest_revision": 12, "revision": 12, "created": {"type": "/type/datetime", "value": "2008-04-01T03:28:50.625462"}, "last_modified": {"type": "/type/datetime", "value": "2026-05-31T17:32:05.979774"}}