Software engineering : principles and practice /
Hans van Vliet
- 2nd ed
- Chichester [England] ; New York : John Wiley, 2000
- xxii, 726 pages : illustrations ; 24 cm
Includes bibliographical references (pages 673-716) and index
What is Software Engineering? Phases in the Development of Software Maintenance or Evolution From the Trenches Ariane 5, Flight 501 Therac-25 London Ambulance Service Software Engineering Ethics Quo Vadis? Software Management Introduction to Software Engineering Management Planning a Software Development Project Controlling a Software Development Project Software Life Cycle Revisited Waterfall Model Prototyping Incremental Development Rapid Application Development Intermezzo: Maintenance or Evolution Spiral Model Towards a Software Factory Process Modeling Configuration Management Tasks and Responsibilities Configuration Management Plan People Management and Team Organization People Management Coordination Mechanisms Management Styles Team Organization Hierarchical Organization Matrix Organization Chief Programmer Team SWAT Team Open Structured Team General Principles for Organizing a Team On Managing Software Quality On Measures and Numbers A Taxonomy of Quality Attributes Perspectives on Quality Quality System Software Quality Assurance Capability Maturity Model (CMM) Some Critical Notes Cost Estimation How Not to Estimate Cost Early Algorithmic Models Later Algorithmic Models Walston--Felix COCOMO Putnam DeMarco Function Point Analysis COCOMO 2: Variations on a Theme Distribution of Manpower over Time Project Planning and Control A Systems View of Project Control A Taxonomy of Software Development Projects Risk Management Techniques for Project Planning and Control Software Life Cycle Requirements Engineering Requirements Elicitation Requirements Elicitation Techniques Requirements Specification Document Requirements Specification Techniques Entity--Relationship Modeling Finite State Machines SADT Specifying Non-Functional Requirements A Modeling Framework Verification and Validation Software Architecture An Example: Producing a KWIC-Index Main Program and Subroutines with Shared Data Abstract Data Types Implicit Invocation Pipes and Filters Evaluation of the Architectures Architectural Styles Design Patterns Verification and Validation Software Design Design Considerations Abstraction Modularity Information Hiding Complexity System Structure Design Methods Functional Decomposition Data Flow Design (SA/SD) Design based on Data Structures How to Select a Design Method Notations that Support the Design Process Design Documentation Verification and Validation Object-Oriented Analysis and Design On Objects and Related Stuff Object-Oriented Analysis and Design Notations Class Diagram State Diagram Sequence Diagram Collaboration Diagram Use Case Diagram CRC Cards Object-Oriented Analysis and Design Methods Booch Method Object Modeling Technique (OMT) Fusion Object Orientation: Hype or the Answer? Object-Oriented Metrics Software Testing Test Objectives Test Adequacy Criteria Fault Detection Versus Confidence Building From Fault Detection to Fault Prevention Testing and the Software Life Cycle Requirements Engineering Design Implementation Maintenance Verification and Validation Planning and Documentation Manual Test Techniques Reading Walkthroughs and Inspections Scenario-Based Evaluation Correctness Proofs Stepwise Abstraction Coverage-Based Test Techniques Control-Flow Coverage Data Flow Coverage Coverage-Based Testing of Requirements Specifications Fault-Based Test Techniques Fault Seeding Mutation Testing Error-Based Test Techniques Comparison of Test Techniques Comparison of Test Adequacy Criteria Properties of Test Adequacy Criteria Experimental Results Different Test Stages Software Maintenance Major Causes of Maintenance Problems Reverse Engineering and Restructuring Inherent Limitations Tools Organizational and Managerial Issues Organization of Maintenance Activities Software Maintenance from a Service Perspective Control of Maintenance Tasks Quality Issues Supporting Technology Formal Specification Informal Specification Techniques Model-Oriented Specifications Concepts of VDM A Sample VDM Specification Validation of a VDM Specification Algebraic Specifications Initial and Final Semantics Some Difficulties How to Construct an Algebraic Specification Some Example Algebraic Specifications Large Specifications Specification by Pre- and Postconditions Thou Shalt Formalize User Interface Design Where Is the User Interface? What Is the User Interface? Human Factors in Human--Computer Interaction Humanities Artistic Design Ergonomics Role of Models in Human--Computer Interaction A Model of Human Information Processing Mental Models of Information Systems Conceptual Models in User Interface Design Design of Interactive Systems Design as an Activity Structure Design as Multi-Disciplinary Collaboration Task Analysis Task Analysis in HCI Design Analysis Approaches for Collaborative Work Sources of Knowledge and Collection Methods An Integrated Approach to Task Analysis: GTA Specification of the User Interface Details Dialog Representation Evaluation Evaluation of Analysis Decisions Evaluation of UVM Specifications Evaluation of Prototypes Software Reusability Reuse Dimensions Reuse of Intermediate Products Libraries of Software Components Templates Design Reuse Reuse of Architecture Transformation Systems Application Generators and Fourth-Generation Languages Reuse and the Software Life Cycle Reuse Tools and Techniques From Module Interconnection 1.1 6 -- 1.2 10 -- 1.3 16 -- 1.4 17 -- 1.4.1 18 -- 1.4.2 19 -- 1.4.3 21 -- 1.5 24 -- 1.6 26 -- Part I 33 -- 2 35 -- 2.1 38 -- 2.2 41 -- 3 47 -- 3.1 49 -- 3.2 51 -- 3.3 56 -- 3.4 57 -- 3.5 59 -- 3.6 62 -- 3.7 64 -- 3.8 65 -- 4 73 -- 4.1 75 -- 4.2 80 -- 5 85 -- 5.1 87 -- 5.1.1 88 -- 5.1.2 90 -- 5.2 92 -- 5.2.1 92 -- 5.2.2 94 -- 5.2.3 95 -- 5.2.4 96 -- 5.2.5 96 -- 5.2.6 97 -- 6 101 -- 6.1 104 -- 6.2 110 -- 6.3 120 -- 6.4 123 -- 6.5 125 -- 6.6 126 -- 6.7 134 -- 7 143 -- 7.1 149 -- 7.2 151 -- 7.3 154 -- 7.3.1 156 -- 7.3.2 158 -- 7.3.3 160 -- 7.3.4 162 -- 7.3.5 163 -- 7.3.6 166 -- 7.4 172 -- 8 181 -- 8.1 182 -- 8.2 185 -- 8.3 189 -- 8.4 192 -- Part II 201 -- 9 203 -- 9.1 210 -- 9.1.1 217 -- 9.2 224 -- 9.3 231 -- 9.3.1 233 -- 9.3.2 236 -- 9.3.3 237 -- 9.3.4 241 -- 9.4 242 -- 9.5 246 -- 10 253 -- 10.1 258 -- 10.1.1 260 -- 10.1.2 261 -- 10.1.3 264 -- 10.1.4 266 -- 10.1.5 267 -- 10.2 270 -- 10.3 282 -- 10.4 285 -- 11 291 -- 11.1 295 -- 11.1.1 296 -- 11.1.2 299 -- 11.1.3 303 -- 11.1.4 303 -- 11.1.5 311 -- 11.2 315 -- 11.2.1 317 -- 11.2.2 321 -- 11.2.3 326 -- 11.2.4 334 -- 11.3 337 -- 11.4 339 -- 11.5 342 -- 12 351 -- 12.1 353 -- 12.2 359 -- 12.2.1 360 --c 12.2.2 363 -- 12.2.3 367 -- 12.2.4 368 -- 12.2.5 369 -- 12.2.6 370 -- 12.3 371 -- 12.3.1 378 -- 12.3.2 379 -- 12.3.3 381 -- 12.3.4 383 -- 12.4 385 -- 13 395 -- 13.1 399 -- 13.1.1 402 -- 13.1.2 403 -- 13.1.3 405 -- 13.2 407 -- 13.2.1 407 -- 13.2.2 409 -- 13.2.3 410 -- 13.2.4 411 -- 13.3 411 -- 13.4 413 -- 13.4.1 414 -- 13.4.2 415 -- 13.4.3 417 -- 13.4.4 418 -- 13.4.5 419 -- 13.5 420 -- 13.5.1 421 -- 13.5.2 424 -- 13.5.3 425 -- 13.6 427 -- 13.6.1 427 -- 13.6.2 428 -- 13.7 429 -- 13.8 431 -- 13.8.1 432 -- 13.8.2 433 -- 13.8.3 436 -- 13.9 438 -- 14 447 -- 14.1 451 -- 14.2 455 -- 14.2.1 458 -- 14.2.2 462 -- 14.3 463 -- 14.3.1 464 -- 14.3.2 467 -- 14.3.3 473 -- 14.3.4 476 -- Part III 481 -- 15 483 -- 15.1 487 -- 15.2 489 -- 15.2.1 493 -- 15.2.2 496 -- 15.2.3 504 -- 15.3 505 -- 15.3.1 507 -- 15.3.2 510 -- 15.3.3 511 -- 15.3.4 514 -- 15.3.5 518 -- 15.4 519 -- 15.5 521 -- 16 531 -- 16.1 534 -- 16.2 538 -- 16.3 539 -- 16.3.1 539 -- 16.3.2 540 -- 16.3.3 541 -- 16.4 543 -- 16.4.1 544 -- 16.4.2 547 -- 16.4.3 549 -- 16.5 552 -- 16.5.1 553 -- 16.5.2 555 -- 16.6 557 -- 16.6.1 557 -- 16.6.2 559 -- 16.6.3 560 -- 16.6.4 561 -- 16.7 563 -- 16.7.1 564 -- 16.7.2 565 -- 16.8 565 -- 16.8.1 566 -- 16.8.2 567 -- 16.8.3 570 -- 17 575 -- 17.1 578 -- 17.2 580 -- 17.2.1 580 -- 17.2.2 585 -- 17.2.3 585 -- 17.2.4 586 -- 17.2.5 586 -- 17.2.6 588 -- 17.3 589 -- 17.4 591 -- 17.4.1 Language to Architecture Description Language Middleware Object-Oriented Programming Software Development Environments Perspectives of Software Reuse Non-Technical Aspects of Software Reuse Economics Management Psychology of Programmers Software Reliability An Example: Fault-Tolerant Disks Estimating Software Reliability Software Tools Toolkits Language-Centered Environments Integrated Environments and Workbenches Analyst WorkBenches Programmer Workbenches Management Workbenches Integrated Project Support Environments Process-Centered Environments A ISO 9001: Quality Systems IEEE Standard 730: Software Quality Assurance Plans IEEE Standard 830: Software Requirements Specifications IEEE Standard 1012: Software Verification and Verification Plans 591 -- 17.4.2 596 -- 17.4.3 597 -- 17.4.4 598 -- 17.5 600 -- 17.6 604 -- 17.6.1 605 -- 17.6.2 607 -- 17.6.3 608 -- 18 615 -- 18.1 617 -- 18.2 621 -- 19 631 -- 19.1 636 -- 19.2 638 -- 19.3 641 -- 19.3.1 642 -- 19.3.2 643 -- 19.3.3 647 -- 19.3.4 648 -- 19.4 650 -- Appendix 655 -- Appendix B 659 -- Appendix C 663 -- Appendix D 667