Software engineering : a practitioner’s approach
Book information
Description
Preface......Page 28 Chapter 1. The Nature of Software......Page 32 1.1. The Nature of Software......Page 34 1.1.1. Defining Software......Page 35 1.1.2. Software Application Domains......Page 37 1.1.3. Legacy Software......Page 38 1.2.2. Mobile Applications......Page 40 1.2.3. Cloud Computing......Page 41 1.3. Summary......Page 42 Further Readings and Information Sources......Page 43 Chapter 2. Software Engineering......Page 45 2.1. Defining the Discipline......Page 46 2.2. The Software Process......Page 47 2.2.1. The Process Framework......Page 48 2.2.3. Process Adaptation......Page 49 2.3.1. The Essence of Practice......Page 50 2.3.2. General Principles......Page 52 2.4. Software Development Myths......Page 54 2.5. How It All Starts......Page 57 Further Readings and Information Sources......Page 58 Part One. The Software Process......Page 60 Chapter 3. Software Process Structure......Page 61 3.1. A Generic Process Model......Page 62 3.2. Defining a Framework Activity......Page 63 3.3. Identifying a Task Set......Page 65 3.4. Process Patterns......Page 66 3.5. Process Assessment and Improvement......Page 68 Problems and Points to Ponder......Page 69 Further Readings and Information Sources......Page 70 Chapter 4. Process Models......Page 71 4.1.1. The Waterfall Model......Page 72 4.1.2. Incremental Process Models......Page 74 4.1.3. Evolutionary Process Models......Page 76 4.1.4. Concurrent Models......Page 80 4.1.5. A Final Word on Evolutionary Processes......Page 82 4.2. Specialized Process Models......Page 83 4.2.2. The Formal Methods Model......Page 84 4.2.3. Aspect-Oriented Software Development......Page 85 4.3. The Unified Process......Page 86 4.3.2. Phases of the Unified Process......Page 87 4.4.1. Personal Software Process......Page 90 4.4.2. Team Software Process......Page 91 4.5. Process Technology......Page 92 4.6. Product and Process......Page 93 Problems and Points to Ponder......Page 95 Further Readings and Information Sources......Page 96 Chapter 5. Agile Development......Page 97 5.2. Agility and the Cost of Change......Page 99 5.3. What Is an Agile Process?......Page 100 5.3.1. Agility Principles......Page 101 5.3.2. The Politics of Agile Development......Page 102 5.4.1. The XP Process......Page 103 5.4.2. Industrial XP......Page 106 5.5. Other Agile Process Models......Page 108 5.5.1. Scrum......Page 109 5.5.2. Dynamic Systems Development Method......Page 110 5.5.3. Agile Modeling......Page 111 5.5.4. Agile Unified Process......Page 113 5.6. A Tool Set for the Agile Process......Page 114 5.7. Summary......Page 115 Further Readings and Information Sources......Page 116 Chapter 6. Human Aspects of Software Engineering......Page 118 6.1. Characteristics of a Software Engineer......Page 119 6.2. The Psychology of Software Engineering......Page 120 6.3. The Software Team......Page 121 6.4. Team Structures......Page 123 6.5.1. The Generic Agile Team......Page 124 6.5.2. The XP Team......Page 125 6.6. The Impact of Social Media......Page 126 6.7. Software Engineering Using the Cloud......Page 128 6.8. Collaboration Tools......Page 129 6.9. Global Teams......Page 130 6.10. Summary......Page 131 Problems and Points to Ponder......Page 132 Further Readings and Information Sources......Page 133 Part Two. Modeling......Page 134 Chapter 7. Principles That Guide Practice......Page 135 7.1. Software Engineering Knowledge......Page 136 7.2.1. Principles That Guide Process......Page 137 7.2.2. Principles That Guide Practice......Page 138 7.3. Principles That Guide Each Framework Activity......Page 140 7.3.1. Communication Principles......Page 141 7.3.2. Planning Principles......Page 143 7.3.3. Modeling Principles......Page 145 7.3.4. Construction Principles......Page 152 7.3.5. Deployment Principles......Page 156 7.4. Work Practices......Page 157 7.5. Summary......Page 158 Problems and Points to Ponder......Page 159 Further Readings and Information Sources......Page 160 Chapter 8. Understanding Requirements......Page 162 8.1. Requirements Engineering......Page 163 8.2. Establishing the Groundwork......Page 169 8.2.2. Recognizing Multiple Viewpoints......Page 170 8.2.4. Asking the First Questions......Page 171 8.2.5. Nonfunctional Requirements......Page 172 8.3. Eliciting Requirements......Page 173 8.3.1. Collaborative Requirements Gathering......Page 174 8.3.3. Usage Scenarios......Page 177 8.3.4. Elicitation Work Products......Page 178 8.3.6. Service-Oriented Methods......Page 179 8.4. Developing Use Cases......Page 180 8.5.1. Elements of the Analysis Model......Page 185 8.5.2. Analysis Patterns......Page 188 8.5.4. Requirements for Self-Adaptive Systems......Page 189 8.6. Negotiating Requirements......Page 190 8.7. Requirements Monitoring......Page 191 8.8. Validating Requirements......Page 192 8.10. Summary......Page 193 Problems and Points to Ponder......Page 194 Further Readings and Other Information Sources......Page 195 Chapter 9. Requirements Modeling: Scenario-Based Methods......Page 197 9.1. Requirements Analysis......Page 198 9.1.1. Overall Objectives and Philosophy......Page 199 9.1.2. Analysis Rules of Thumb......Page 200 9.1.3. Domain Analysis......Page 201 9.1.4. Requirements Modeling Approaches......Page 202 9.2.1. Creating a Preliminary Use Case......Page 204 9.2.2. Refining a Preliminary Use Case......Page 207 9.2.3. Writing a Formal Use Case......Page 208 9.3. UML Models That Supplement the Use Case......Page 210 9.3.1. Developing an Activity Diagram......Page 211 9.3.2. Swimlane Diagrams......Page 212 Problems and Points to Ponder......Page 213 Further Readings and Information Sources......Page 214 Chapter 10. Requirements Modeling: Class-Based Methods......Page 215 10.1. Identifying Analysis Classes......Page 216 10.2. Specifying Attributes......Page 219 10.3. Defining Operations......Page 220 10.4. Class-Responsibility-Collaborator Modeling......Page 223 10.5. Associations and Dependencies......Page 229 10.6. Analysis Packages......Page 230 10.7. Summary......Page 231 Further Readings and Information Sources......Page 232 Chapter 11. Requirements Modeling: Behavior, Patterns, and Web/Mobile Apps......Page 233 11.2. Identifying Events with the Use Case......Page 234 11.3. State Representations......Page 235 11.4. Patterns for Requirements Modeling......Page 238 11.4.1. Discovering Analysis Patterns......Page 239 11.4.2. A Requirements Pattern Example: Actuator-Sensor......Page 240 11.5. Requirements Modeling for Web and Mobile Apps......Page 244 11.5.2. Requirements Modeling Input......Page 245 11.5.3. Requirements Modeling Output......Page 246 11.5.4. Content Model......Page 247 11.5.5. Interaction Model for Web and Mobile Apps......Page 248 11.5.6. Functional Model......Page 249 11.5.7. Configuration Models for WebApps......Page 250 11.5.8. Navigation Modeling......Page 251 11.6. Summary......Page 252 Further Readings and Information Sources......Page 253 Chapter 12. Design Concepts......Page 255 12.1. Design within the Context of Software Engineering......Page 256 12.2.1. Software Quality Guidelines and Attributes......Page 259 12.2.2. The Evolution of Software Design......Page 261 12.3. Design Concepts......Page 262 12.3.2. Architecture......Page 263 12.3.3. Patterns......Page 264 12.3.5. Modularity......Page 265 12.3.6. Information Hiding......Page 266 12.3.7. Functional Independence......Page 267 12.3.9. Aspects......Page 268 12.3.11. Object-Oriented Design Concepts......Page 269 12.3.12. Design Classes......Page 270 12.3.13. Dependency Inversion......Page 272 12.3.14. Design for Test......Page 273 12.4. The Design Model......Page 274 12.4.2. Architectural Design Elements......Page 275 12.4.3. Interface Design Elements......Page 276 12.4.4. Component-Level Design Elements......Page 278 12.4.5. Deployment-Level Design Elements......Page 279 12.5. Summary......Page 280 Problems and Points to Ponder......Page 281 Further Readings and Information Sources......Page 282 Chapter 13. Architectural Design......Page 283 13.1.1. What Is Architecture?......Page 284 13.1.2. Why Is Architecture Important?......Page 285 13.1.3. Architectural Descriptions......Page 286 13.1.4. Architectural Decisions......Page 287 13.2. Architectural Genres......Page 288 13.3.1. A Brief Taxonomy of Architectural Styles......Page 289 13.3.3. Organization and Refinement......Page 294 13.4. Architectural Considerations......Page 295 13.5. Architectural Decisions......Page 297 13.6.1. Representing the System in Context......Page 298 13.6.2. Defining Archetypes......Page 300 13.6.3. Refining the Architecture into Components......Page 301 13.6.4. Describing Instantiations of the System......Page 303 13.6.5. Architectural Design for Web Apps......Page 304 13.7. Assessing Alternative Architectural Designs......Page 305 13.7.1. Architectural Description Languages......Page 307 13.7.2. Architectural Reviews......Page 308 13.9. Pattern-based Architecture Review......Page 309 13.10. Architecture Conformance Checking......Page 310 13.11. Agility and Architecture......Page 311 Problems and Points to Ponder......Page 313 Further Readings and Information Sources......Page 314 Chapter 14. Component-Level Design......Page 316 14.1.1. An Object-Oriented View......Page 317 14.1.2. The Traditional View......Page 319 14.2. Designing Class-Based Components......Page 322 14.2.1. Basic Design Principles......Page 323 14.2.2. Component-Level Design Guidelines......Page 326 14.2.3. Cohesion......Page 327 14.2.4. Coupling......Page 329 14.3. Conducting Component-Level Design......Page 330 14.4. Component-Level Design for WebApps......Page 336 14.5. Component-Level Design for Mobile Apps......Page 337 14.6. Designing Traditional Components......Page 338 14.7.1. Domain Engineering......Page 339 14.7.2. Component Qualification, Adaptation, and Composition......Page 340 14.7.3. Architectural Mismatch......Page 342 14.7.5. Classifying and Retrieving Components......Page 343 14.8. Summary......Page 344 Further Readings and Information Sources......Page 346 Chapter 15. User Interface Design......Page 348 15.1.1. Place the User in Control......Page 349 15.1.2. Reduce the User’s Memory Load......Page 350 15.1.3. Make the Interface Consistent......Page 352 15.2.1. Interface Analysis and Design Models......Page 353 15.2.2. The Process......Page 354 15.3.1. User Analysis......Page 356 15.3.2. Task Analysis and Modeling......Page 357 15.3.4. Analysis of the Work Environment......Page 362 15.4.1. Applying Interface Design Steps......Page 363 15.4.2. User Interface Design Patterns......Page 365 15.4.3. Design Issues......Page 366 15.5.1. Interface Design Principles and Guidelines......Page 368 15.5.2. Interface Design Workflow for Web and Mobile Apps......Page 372 15.6. Design Evaluation......Page 373 15.7. Summary......Page 375 Problems and Points to Ponder......Page 376 Further Readings and Information Sources......Page 377 Chapter 16. Pattern-Based Design......Page 378 16.1. Design Patterns......Page 379 16.1.1. Kinds of Patterns......Page 380 16.1.2. Frameworks......Page 382 16.1.3. Describing a Pattern......Page 383 16.1.4. Pattern Languages and Repositories......Page 384 16.2.2. Thinking in Patterns......Page 385 16.2.3. Design Tasks......Page 387 16.2.4. Building a Pattern-Organizing Table......Page 389 16.3. Architectural Patterns......Page 390 16.4. Component-Level Design Patterns......Page 391 16.5. User Interface Design Patterns......Page 393 16.6. WebApp Design Patterns......Page 395 16.6.2. Design Granularity......Page 396 16.7. Patterns for Mobile Apps......Page 397 16.8. Summary......Page 398 Problems and Points to Ponder......Page 399 Further Readings and Information Sources......Page 400 Chapter 17. WebApp Design......Page 402 17.1. WebApp Design Quality......Page 403 17.2. Design Goals......Page 405 17.3. A Design Pyramid for WebApps......Page 406 17.4. WebApp Interface Design......Page 407 17.5. Aesthetic Design......Page 408 17.5.2. Graphic Design Issues......Page 409 17.6.1. Content Objects......Page 410 17.6.2. Content Design Issues......Page 411 17.7.1. Content Architecture......Page 412 17.7.2. WebApp Architecture......Page 415 17.8.1. Navigation Semantics......Page 416 17.9. Component-Level Design......Page 418 17.10. Summary......Page 419 Further Readings and Information Sources......Page 420 Chapter 18. MobileApp Design......Page 422 18.1.1. Development Considerations......Page 423 18.1.2. Technical Considerations......Page 424 18.2. Developing MobileApps......Page 426 18.2.1. MobileApp Quality......Page 428 18.2.2. User Interface Design......Page 429 18.2.3. Context-Aware Apps......Page 430 18.2.4. Lessons Learned......Page 431 18.3. MobileApp Design—Best Practices......Page 432 18.4. Mobility Environments......Page 434 18.5. The Cloud......Page 436 18.6. The Applicability of Conventional Software Engineering......Page 438 18.7. Summary......Page 439 Further Readings and Information Sources......Page 440 Part Three. Quality Management......Page 442 Chapter 19. Quality Concepts......Page 443 19.1. What Is Quality?......Page 444 19.2. Software Quality......Page 445 19.2.1. Garvin’s Quality Dimensions......Page 446 19.2.2. McCall’s Quality Factors......Page 447 19.2.4. Targeted Quality Factors......Page 449 19.3. The Software Quality Dilemma......Page 451 19.3.1. “Good Enough” Software......Page 452 19.3.2. The Cost of Quality......Page 453 19.3.3. Risks......Page 455 19.3.5. Quality and Security......Page 456 19.3.6. The Impact of Management Actions......Page 457 19.4.3. Quality Control......Page 458 19.5. Summary......Page 459 Further Readings and Information Sources......Page 460 Chapter 20. Review Techniques......Page 462 20.1. Cost Impact of Software Defects......Page 463 20.2. Defect Amplification and Removal......Page 464 20.3.1. Analyzing Metrics......Page 466 20.3.2. Cost-Effectiveness of Reviews......Page 467 20.4. Reviews: A Formality Spectrum......Page 469 20.5. Informal Reviews......Page 470 20.6.1. The Review Meeting......Page 472 20.6.3. Review Guidelines......Page 473 20.6.4. Sample-Driven Reviews......Page 475 20.7. Post-Mortem Evaluations......Page 476 Problems and Points to Ponder......Page 477 Further Readings and Information Sources......Page 478 Chapter 21. Software Quality Assurance......Page 479 21.1. Background Issues......Page 480 21.2. Elements of Software Quality Assurance......Page 481 21.4. SQA Tasks, Goals, and Metrics......Page 483 21.4.1. SQA Tasks......Page 484 21.4.2. Goals, Attributes, and Metrics......Page 485 21.6. Statistical Software Quality Assurance......Page 487 21.6.1. A Generic Example......Page 488 21.6.2. Six Sigma for Software Engineering......Page 489 21.7.1. Measures of Reliability and Availability......Page 490 21.7.2. Software Safety......Page 491 21.8. The ISO 9000 Quality Standards......Page 492 21.10. Summary......Page 494 Further Readings and Information Sources......Page 495 22.1. A Strategic Approach to Software Testing......Page 497 22.1.2. Organizing for Software Testing......Page 499 22.1.3. Software Testing Strategy—The Big Picture......Page 500 22.2. Strategic Issues......Page 503 22.3.1. Unit Testing......Page 504 22.3.2. Integration Testing......Page 506 22.4.2. Integration Testing in the OO Context......Page 512 22.5. Test Strategies for WebApps......Page 513 22.7. Validation Testing......Page 514 22.7.3. Alpha and Beta Testing......Page 515 22.8.2. Security Testing......Page 517 22.8.5. Deployment Testing......Page 518 22.9.1. The Debugging Process......Page 519 22.9.2. Psychological Considerations......Page 521 22.9.3. Debugging Strategies......Page 522 22.9.4. Correcting the Error......Page 523 Problems and Points to Ponder......Page 524 Further Readings and Information Sources......Page 525 Chapter 23. Testing Conventional Applications......Page 527 23.1. Software Testing Fundamentals......Page 528 23.2. Internal and External Views of Testing......Page 530 23.4.1. Flow Graph Notation......Page 531 23.4.2. Independent Program Paths......Page 533 23.4.3. Deriving Test Cases......Page 535 23.4.4. Graph Matrices......Page 537 23.5. Control Structure Testing......Page 538 23.6.1. Graph-Based Testing Methods......Page 540 23.6.2. Equivalence Partitioning......Page 542 23.6.3. Boundary Value Analysis......Page 543 23.6.4. Orthogonal Array Testing......Page 544 23.8. Testing Documentation and Help Facilities......Page 547 23.9. Testing for Real-Time Systems......Page 548 23.10. Patterns for Software Testing......Page 550 23.11. Summary......Page 551 Further Readings and Information Sources......Page 552 Chapter 24. Testing Object-Oriented Applications......Page 554 24.1. Broadening the View of Testing......Page 555 24.2.1. Correctness of OOA and OOD Models......Page 556 24.2.2. Consistency of Object-Oriented Models......Page 557 24.3.1. Unit Testing in the OO Context......Page 559 24.4. Object-Oriented Testing Methods......Page 560 24.4.1. The Test-Case Design Implications of OO Concepts......Page 561 24.4.3. Fault-Based Testing......Page 562 24.5.1. Random Testing for OO Classes......Page 563 24.5.2. Partition Testing at the Class Level......Page 564 24.6.1. Multiple Class Testing......Page 565 24.6.2. Tests Derived from Behavior Models......Page 567 24.7. Summary......Page 568 Further Readings and Information Sources......Page 569 Chapter 25. Testing Web Applications......Page 571 25.1.1. Dimensions of Quality......Page 572 25.1.2. Errors within a WebApp Environment......Page 573 25.1.4. Test Planning......Page 574 25.2. The Testing Process—An Overview......Page 575 25.3.1. Content Testing Objectives......Page 576 25.3.2. Database Testing......Page 578 25.4.1. Interface Testing Strategy......Page 580 25.4.2. Testing Interface Mechanisms......Page 581 25.4.4. Usability Tests......Page 583 25.4.5. Compatibility Tests......Page 585 25.5. Component-Level Testing......Page 586 25.6.2. Testing Navigation Semantics......Page 587 25.7.1. Server-Side Issues......Page 589 25.8. Security Testing......Page 590 25.9. Performance Testing......Page 591 25.9.1. Performance Testing Objectives......Page 592 25.9.3. Stress Testing......Page 593 25.10. Summary......Page 594 Problems and Points to Ponder......Page 595 Further Readings and Information Sources......Page 596 Chapter 26. Testing MobileApps......Page 598 26.1. Testing Guidelines......Page 599 26.2. The Testing Strategies......Page 600 26.2.1. Are Conventional Approaches Applicable?......Page 601 26.2.2. The Need for Automation......Page 602 26.2.3. Building a Test Matrix......Page 603 26.2.5. Testing in a Production Environment......Page 604 26.3. Considering the Spectrum of User Interaction......Page 605 26.3.1. Gesture Testing......Page 606 26.3.2. Voice Input and Recognition......Page 607 26.3.4. Alerts and Extraordinary Conditions......Page 608 26.5. Real-Time Testing Issues......Page 609 26.6. Testing Tools and Environments......Page 610 26.7. Summary......Page 612 Further Readings and Information Sources......Page 613 Chapter 27. Security Engineering......Page 615 27.1. Analyzing Security Requirements......Page 616 27.2. Security and Privacy in an Online World......Page 617 27.2.3. Cloud Computing......Page 618 27.3. Security Engineering Analysis......Page 619 27.3.1. Security Requirement Elicitation......Page 620 27.3.2. Security Modeling......Page 621 27.3.4. Correctness Checks......Page 622 27.4.1. The Security Assurance Process......Page 623 27.4.2. Organization and Management......Page 624 27.5. Security Risk Analysis......Page 625 27.6. The Role of Conventional Software Engineering Activities......Page 626 27.7. Verification of Trustworthy Systems......Page 628 Problems and Points to Ponder......Page 630 Further Readings and Information Sources......Page 631 Chapter 28. Formal Modeling and Verification......Page 632 28.1. The Cleanroom Strategy......Page 633 28.2. Functional Specification......Page 635 28.2.1. Black-Box Specification......Page 636 28.2.2. State-Box Specification......Page 637 28.3. Cleanroom Design......Page 638 28.3.2. Design Verification......Page 639 28.4.1. Statistical Use Testing......Page 641 28.5. Rethinking Formal Methods......Page 643 28.6. Formal Methods Concepts......Page 646 28.7. Alternative Arguments......Page 649 28.8. Summary......Page 650 Problems and Points to Ponder......Page 651 Further Readings and Information Sources......Page 652 Chapter 29. Software Configuration Management......Page 654 29.1. Software Configuration Management......Page 655 29.1.1. An SCM Scenario......Page 656 29.1.3. Baselines......Page 657 29.1.5. Management of Dependencies and Changes......Page 659 29.2.1. General Features and Content......Page 661 29.2.2. SCM Features......Page 662 29.3. The SCM Process......Page 663 29.3.1. Identification of Objects in the Software Configuration......Page 664 29.3.2. Version Control......Page 665 29.3.3. Change Control......Page 666 29.3.4. Impact Management......Page 669 29.3.6. Status Reporting......Page 670 29.4. Configuration Management for Web and MobileApps......Page 671 29.4.1. Dominant Issues......Page 672 29.4.2. Configuration Objects......Page 673 29.4.3. Content Management......Page 674 29.4.4. Change Management......Page 677 29.4.5. Version Control......Page 679 29.4.6. Auditing and Reporting......Page 680 29.5. Summary......Page 681 Further Readings and Information Sources......Page 682 Chapter 30. Product Metrics......Page 684 30.1.1. Measures, Metrics, and Indicators......Page 685 30.1.2. The Challenge of Product Metrics......Page 686 30.1.4. Goal-Oriented Software Measurement......Page 687 30.1.5. The Attributes of Effective Software Metrics......Page 688 30.2.1. Function-Based Metrics......Page 690 30.2.2. Metrics for Specification Quality......Page 693 30.3.1. Architectural Design Metrics......Page 694 30.3.2. Metrics for Object-Oriented Design......Page 697 30.3.3. Class-Oriented Metrics—The CK Metrics Suite......Page 698 30.3.4. Class-Oriented Metrics—The MOOD Metrics Suite......Page 701 30.3.7. Operation-Oriented Metrics......Page 702 30.4. Design Metrics for Web and Mobile Apps......Page 703 30.5. Metrics for Source Code......Page 706 30.6.1. Halstead Metrics Applied to Testing......Page 707 30.6.2. Metrics for Object-Oriented Testing......Page 708 30.7. Metrics for Maintenance......Page 709 Problems and Points to Ponder......Page 710 Further Readings and Information Sources......Page 711 Part Four. Managing Software Projects......Page 714 Chapter 31. Project Management Concepts......Page 715 31.1.1. The People......Page 716 31.1.4. The Project......Page 717 31.2.1. The Stakeholders......Page 718 31.2.2. Team Leaders......Page 719 31.2.3. The Software Team......Page 720 31.2.4. Agile Teams......Page 722 31.2.5. Coordination and Communication Issues......Page 723 31.3. The Product......Page 724 31.4. The Process......Page 725 31.4.1. Melding the Product and the Process......Page 726 31.4.2. Process Decomposition......Page 727 31.5. The Project......Page 728 31.6. The W5HH Principle......Page 729 31.7. Critical Practices......Page 730 Problems and Points to Ponder......Page 731 Further Readings and Information Sources......Page 732 Chapter 32. Process and Project Metrics......Page 734 32.1.1. Process Metrics and Software Process Improvement......Page 735 32.1.2. Project Metrics......Page 738 32.2. Software Measurement......Page 739 32.2.1. Size-Oriented Metrics......Page 740 32.2.2. Function-Oriented Metrics......Page 741 32.2.3. Reconciling LOC and FP Metrics......Page 742 32.2.4. Object-Oriented Metrics......Page 744 32.2.6. WebApp Project Metrics......Page 745 32.3. Metrics for Software Quality......Page 747 32.3.1. Measuring Quality......Page 748 32.3.2. Defect Removal Efficiency......Page 749 32.4. Integrating Metrics within the Software Process......Page 750 32.4.2. Establishing a Baseline......Page 751 32.5. Metrics for Small Organizations......Page 752 32.6. Establishing a Software Metrics Program......Page 753 Problems and Points to Ponder......Page 755 Further Readings and Information Sources......Page 756 Chapter 33. Estimation for Software Projects......Page 758 33.1. Observations on Estimation......Page 759 33.2. The Project Planning Process......Page 760 33.3. Software Scope and Feasibility......Page 761 33.4.1. Human Resources......Page 762 33.4.3. Environmental Resources......Page 763 33.5. Software Project Estimation......Page 764 33.6.1. Software Sizing......Page 765 33.6.2. Problem-Based Estimation......Page 766 33.6.3. An Example of LOC-Based Estimation......Page 767 33.6.4. An Example of FP-Based Estimation......Page 769 33.6.5. Process-Based Estimation......Page 770 33.6.7. Estimation with Use Cases......Page 771 33.6.9. Reconciling Estimates......Page 773 33.7. Empirical Estimation Models......Page 774 33.7.3. The Software Equation......Page 775 33.9.1. Estimation for Agile Development......Page 777 33.9.2. Estimation for WebApp Projects......Page 778 33.10. The Make/Buy Decision......Page 779 33.10.1. Creating a Decision Tree......Page 780 33.10.2. Outsourcing......Page 781 Problems and Points to Ponder......Page 783 Further Readings and Information Sources......Page 784 Chapter 34. Project Scheduling......Page 785 34.1. Basic Concepts......Page 786 34.2. Project Scheduling......Page 788 34.2.1. Basic Principles......Page 789 34.2.2. The Relationship between People and Effort......Page 790 34.2.3. Effort Distribution......Page 791 34.3. Defining a Task Set for the Software Project......Page 792 34.3.1. A Task Set Example......Page 793 34.3.2. Refinement of Major Tasks......Page 794 34.4. Defining a Task Network......Page 795 34.5. Scheduling......Page 796 34.5.1. Time-Line Charts......Page 797 34.5.2. Tracking the Schedule......Page 798 34.5.3. Tracking Progress for an OO Project......Page 799 34.5.4. Scheduling for WebApp and Mobile Projects......Page 800 34.6. Earned Value Analysis......Page 803 Problems and Points to Ponder......Page 805 Further Readings and Information Sources......Page 807 Chapter 35. Risk Management......Page 808 35.2. Software Risks......Page 809 35.3. Risk Identification......Page 811 35.3.1. Assessing Overall Project Risk......Page 812 35.4. Risk Projection......Page 813 35.4.1. Developing a Risk Table......Page 814 35.4.2. Assessing Risk Impact......Page 816 35.5. Risk Refinement......Page 818 35.6. Risk Mitigation, Monitoring, and Management......Page 819 35.7. The RMMM Plan......Page 821 Problems and Points to Ponder......Page 823 Further Readings and Information Sources......Page 824 Chapter 36. Maintenance and Reengineering......Page 826 36.1. Software Maintenance......Page 827 36.3. Reengineering......Page 829 36.4.1. Business Processes......Page 830 36.4.2. A BPR Model......Page 831 36.5.1. A Software Reengineering Process Model......Page 833 36.5.2. Software Reengineering Activities......Page 834 36.6. Reverse Engineering......Page 836 36.6.2. Reverse Engineering to Understand Processing......Page 838 36.6.3. Reverse Engineering User Interfaces......Page 839 36.7.1. Code Restructuring......Page 840 36.7.2. Data Restructuring......Page 841 36.8. Forward Engineering......Page 842 36.8.1. Forward Engineering for Client-Server Architectures......Page 843 36.9. The Economics of Reengineering......Page 844 36.10. Summary......Page 845 Problems and Points to Ponder......Page 846 Further Readings and Information Sources......Page 847 Part Five. Advanced Topics......Page 848 Chapter 37. Software Process Improvement......Page 849 37.1.1. Approaches to SPI......Page 850 37.1.2. Maturity Models......Page 852 37.1.3. Is SPI for Everyone?......Page 853 37.2.1. Assessment and Gap Analysis......Page 854 37.2.3. Selection and Justification......Page 856 37.2.4. Installation/Migration......Page 857 37.2.6. Risk Management for SPI......Page 858 37.3. The CMMI......Page 859 37.5. Other SPI Frameworks......Page 863 37.6. SPI Return on Investment......Page 865 37.7. SPI Trends......Page 866 37.8. Summary......Page 867 Further Readings and Information Sources......Page 868 Chapter 38. Emerging Trends in Software Engineering......Page 870 38.1. Technology Evolution......Page 871 38.2. Prospects for a True Engineering Discipline......Page 872 38.3. Observing Software Engineering Trends......Page 873 38.4. Identifying “Soft Trends”......Page 874 38.4.1. Managing Complexity......Page 876 38.4.3. Emergent Requirements......Page 877 38.4.5. Software Building Blocks......Page 878 38.4.7. Open Source......Page 879 38.5.1. Process Trends......Page 880 38.5.2. The Grand Challenge......Page 882 38.5.4. Requirements Engineering......Page 883 38.5.5. Model-Driven Software Development......Page 884 38.5.7. Test-Driven Development......Page 885 38.6. Tools-Related Trends......Page 886 Problems and Points to Ponder......Page 888 Further Readings and Information Sources......Page 889 Chapter 39. Concluding Comments......Page 891 39.2. People and the Way They Build Systems......Page 892 39.3. New Modes for Representing Information......Page 893 39.4. The Long View......Page 895 39.5. The Software Engineer’s Responsibility......Page 896 39.6. A Final Comment from RSP......Page 898 Appendix 1. AN INTRODUCTION TO UML......Page 900 Appendix 2. OBJECT-ORIENTED CONCEPTS......Page 922 Appendix 3. FORMAL METHODS......Page 930 References......Page 940 Index......Page 964
Similar books
Playful Python Project: Modeling and Animation
2024 · EPUB
Dictionary of science and technology in English-French-German-Spanish, containing 10,000 current terms in the English language most frequently used in the physical sciences and their applied fields, together with separated indices in French, German, and Spanish, conversion tables, and technical abbreviations.
1943 · PDF
Die Delegation von Compliance-Zuständigkeit des Vorstands einer Aktiengesellschaft: Eine Untersuchung auf der Grundlage einer strikt dichotomen Sichtweise auf die organschaftliche Zuständigkeit und Verantwortung der Unternehmensleitung
2020 · PDF
Kritik der mythischen Ökonomie
2015 · PDF
Inglés para niños hispanohablantes. Future Simple Tense (el tiempo futuro simple)
2019 · EPUB
Point Processes for Reliability Analysis: Shocks and Repairable Systems
2018 · PDF
Stream Smarter: 170+ tricks Successful Streamers Use To Get More Viewers And Followers Streaming Games on Twitch
2015 · AZW3
Concentrationary cinema: aesthetics as political resistance in Alain Resnais's Night and Fog (1955)
2014 · PDF