ENGLISH

Software Engineering: Modern Approaches

Book information

Publisher
Waveland Press
Year
2016
ISBN
1478632305, 9781478632306
Language
english
Format
DJVU
Filesize
13 MB (13724624 bytes)
Edition
2
Pages
782\802
Time added
2018-06-04 05:18:02

Description

Today's software engineer must be able to employ more than one kind of software process, ranging from agile methodologies to the waterfall process, from highly integrated tool suites to refactoring and loosely coupled tool sets. Braude and Bernstein's thorough coverage of software engineering perfect the reader's ability to efficiently create reliable software systems, designed to meet the needs of a variety of customers. Topical highlights • Process: concentrates on how applications are planned and developed • Design: teaches software engineering primarily as a requirements-to-design activity • Programming and agile methods: encourages software engineering as a code-oriented activity • Theory and principles: focuses on foundations • Hands-on projects and case studies: utilizes active team or individual project examples to facilitate understanding theory, principles, and practice In addition to knowledge of the tools and techniques available to software engineers, readers will grasp the ability to interact with customers, participate in multiple software processes, and express requirements clearly in a variety of ways. They will have the ability to create designs flexible enough for complex, changing environments, and deliver the proper products. Title Page......Page 2 Brief Contents......Page 5 PART I: Introduction to Software Engineering......Page 6 Preface......Page 15 Acknowledgments......Page 18 Chapter 1: The Goals and Terminology of Software Engineering......Page 20 1.1 What is Software Engineering......Page 21 1.2.3 Radiation Overdose......Page 22 1.3 Why Software Fails or Succeeds......Page 23 1.4 Software Engineering Activities......Page 24 1.4.1 People......Page 25 1.4.2 Product......Page 26 1.4.3 Project......Page 27 1.4.4 Process......Page 28 1.5 Software Engineering Principles......Page 29 1.6 Ethics in Software Engineering......Page 31 1.7 Case Studies......Page 33 1.9 Exercises......Page 38 Bibliography......Page 39 Chapter 2: Introduction to Quality and Metrics in Software Engineering......Page 40 2.1 The Meaning of Software Quality......Page 41 2.2 Defects in Software......Page 42 2.3 Verification and Validation......Page 44 2.4 Planning for Quality......Page 46 2.5 Metrics......Page 47 2.5.1 Quality Metrics......Page 48 2.6 Summary......Page 49 Bibliography......Page 50 Chapter 3: Software Process......Page 51 3.1 The Activities of Software Process......Page 52 3.2.1 The Waterfall Process Model......Page 56 3.2.2 Iterative and Incremental Development......Page 58 3.2.3 Prototyping, Feasibility Studies, and Proofs of Concept......Page 59 3.2.4 Spiral Model......Page 63 3.2.5 Unified Process and the Rational Unified Process......Page 65 3.2.6 Agile Processes......Page 68 3.2.7 Open-Source Processes......Page 70 3.3 Case Study: Student Team Guidance......Page 74 3.3.1 Team Guidance-Initial Team Meeting......Page 75 3.3.2 Team Guidance-Communication Plan......Page 76 3.4 Summary......Page 78 3.5 Exercises......Page 79 Bibliography......Page 81 Chapter 4: Agile Software Processes......Page 82 4.1 Agile History and Agile Manifesto......Page 83 4.2 Agile Principles......Page 84 4.3 Agile Methods......Page 85 4.4 Agile Processes......Page 87 4.4.1 Extreme Programming......Page 88 4.4.2 Scrum ......Page 90 4.4.3 Crystal......Page 91 4.5 Integrating Agile with Non-Agile Processes......Page 93 4.5.1 A Non-Agile-Driven Approach......Page 94 4.5.2 An Agile-Driven Approach......Page 95 4.6 Summary......Page 96 4.7 Exercises......Page 97 Bibliography......Page 98 Chapter 5: Quality in the Software Process......Page 99 5.1 Principles of Managing Quality......Page 100 5.2 Managing Quality in Agile Processes......Page 101 5.3.1 Software Quality Assurance Plan......Page 102 5.3.2 IEEE Quality Documents......Page 104 5.4.1 Inspection Principles......Page 106 5.4.2 Inspection Process......Page 109 5.5 QA Reviews and Audits......Page 111 5.6.1 Classifying Defects......Page 112 5.6.2 Tracking Defects......Page 114 5.7 Process Improvement and Process Metrics......Page 115 5.8.1 Level 1: Initial......Page 119 5.8.6 Relationship of the CMMI to the PSP, TSP......Page 121 5.9 Case Study: Software Quality Assurance Plan for Encounter......Page 122 5.11 Exercises......Page 137 Bibliography......Page 138 Chapter 6: Software Configuration Management......Page 139 6.2 SCM Activities......Page 140 6.2.2 Baselines......Page 141 6.2.3 Change Control......Page 143 6.2.4 Version Control......Page 144 6.2.7 Release Management and Delivery......Page 146 6.4.1 Concurrent Version System (CVS)......Page 147 6.5 Case Study: Encounter Video Game......Page 148 6.6 Case Study: Eclipse......Page 153 6.7 Student Team Guidance: Configuration Management......Page 155 6.8 Summary......Page 156 6.9 Exercises......Page 157 Bibliography......Page 158 Chapter 7: Principles of Software Project Management I: Organization, Tools, and Risk Management......Page 159 7.1.1 Project-Oriented Organization......Page 161 7.1.3 Matrix Organization......Page 162 7.2 Team Size......Page 163 7.3 Geographically Distributed Development......Page 165 7.4 The Team Software Process......Page 170 7.4.1 Introductory Team Software Process (TSPi)......Page 171 7.5 Software Project Tools and Techniques......Page 172 7.5.1 Tool Selection......Page 173 7.5.3 Language Selection......Page 174 7.5.4 Decision Making with Triage......Page 175 7.5.5 Project Variables......Page 176 7.6 Risk Management......Page 178 7.7.1 Team Guidance-Student Team Organization......Page 181 7.7.2 Team Guidance-Team Meetings......Page 182 7.8 Summary......Page 184 7.9 Exercises......Page 185 Bibliography......Page 186 Chapter 8: Principles of Software Project Management II: Estimation, Scheduling, and Planning......Page 187 8.1.1 Estimate Precision......Page 188 8.1.3 Estimating Lines of Code without Function Points......Page 189 8.1.4 Function Points......Page 190 8.1.5 Estimating Effort and Duration from Lines of Code......Page 196 8.1.6 Assessments for Agile Projects: Story Points and Velocity......Page 199 8.2 Scheduling......Page 201 8.3 The Software Project Management Plan......Page 204 8.4 Case Study: Encounter Project Management Plan......Page 206 8.5 Case Study: Project Management in Eclipse......Page 215 8.6 Case Study: Project Management for Open Office......Page 224 8.7 Case Study: Student Team Guidance......Page 227 8.8 Summary......Page 229 8.9 Exercises......Page 230 Bibliography......Page 231 Chapter 9: Quality and Metrics in Project Management......Page 232 9.1 Cultivating and Planning Internal Quality......Page 233 9.2 Project Metrics......Page 234 9.2.1 Identification......Page 235 9.2.3 Monitor and Review......Page 236 9.3.1 Improvement within a Project......Page 238 9.3.2 Improvement across Projects......Page 241 9.4 Software Verification and Validation Plan......Page 242 9.5 Case Study: Software Verification and Validation Plan for Encounter......Page 244 9.7 Exercises......Page 247 Bibliography......Page 248 Chapter 10: Principles of Requirements Analysis......Page 249 10.2 Sources of Requirements......Page 250 10.3 High-Level vs. Detailed Requirements ......Page 251 10.5 Nonfunctional Requirements......Page 252 10.5.1 Quality Attributes......Page 253 10.5.2 Constraints......Page 255 10.5.5 Error-Handling Requirements......Page 256 10.6 Documenting Requirements......Page 257 10.8 Agile Methods and Requirements......Page 258 10.9 Updating the Project to Reflect Requirements Analysis......Page 260 10.10 Summary......Page 262 Bibliography......Page 263 Chapter 11: Analyzing High-Level Requirements......Page 264 11.1 Examples of Customer Wants......Page 265 11.2 Stakeholder Vision......Page 266 11.3 The Interview and Documentation Process......Page 267 11.5 Describing Main Functions and Use Cases......Page 268 11.6 Agile Methods for High-Level Requirements......Page 271 11.7.2 Step 2: Understand the Business Function......Page 273 11.7.3 GUI Transitions......Page 275 11.8 Security Requirements......Page 277 11.9.1 Data Flow Diagrams......Page 279 11.9.2 State Transition Diagrams......Page 281 11.10 Case Study: High-Level Software Requirements Specification (SRS) for the Encounter Video Game......Page 283 11.11 Case Study: High-Level Requirements for Eclipse......Page 287 11.12 Eclipse Platform Subproject (First of Three) ......Page 288 11.13 Case Study: High-Level Requirements for OpenOffice......Page 292 11.15 Exercises......Page 294 Bibliography......Page 295 Chapter 12: Analyzing Detailed Requirements......Page 297 12.1 The Meaning of Detailed Requirements......Page 298 12.2 Organizing Detailed Requirements......Page 299 12.2.1 Organizing Detailed Requirements by Feature......Page 300 12.2.2 Organizing Detailed Requirements by Use Case......Page 301 12.2.3 Organizing Detailed Requirement by GUI......Page 302 12.2.5 Organizing Requirements by Class......Page 304 12.3 User Interfaces: Detailed Requirements......Page 310 12.5 Error Conditions......Page 315 12.6 Traceability of Detailed Requirements......Page 316 12.7 Using Detailed Requirements to Manage Projects......Page 319 12.8 Prioritizing Requirements......Page 320 12.9 Associating Requirements with Tests......Page 321 12.10 Agile Methods for Detailed Requirements......Page 322 12.11 Using Tools and the Web for Requirements Analysis......Page 324 12.11.1 Simple Projects......Page 325 12.11.2 IBM's RequisitePro......Page 326 12.12 The Effects on Projects of the Detailed Requirements Process......Page 327 12.13 Student Project Guide: Requirements for the Encounter Case Study......Page 328 12.14 Case Study: Detailed Requirements for the Encounter Video Game......Page 334 12.15 Summary......Page 347 12.16 Exercises......Page 348 Bibliography......Page 349 Chapter 13: Quality and Metrics in Requirements Analysis......Page 350 13.2 Accessibility of Requirements......Page 351 13.3 Comprehensiveness of Requirements......Page 352 13.5 Unambiguity of Requirements......Page 354 13.6 Consistency of Requirements......Page 355 13.7 Prioritization of Requirements......Page 356 13.8 Security and High-Level Requirements......Page 357 13.9 Self-Completeness of Requirements......Page 358 13.10 Testability of Requirements......Page 359 13.11 Traceability of Requirements......Page 361 13.12 Metrics for Requirements Analysis......Page 362 13.13 Inspecting Detailed Requirements......Page 363 13.14 Summary......Page 366 13.15 Exercises......Page 367 Chapter 14: Formal and Emerging Methods in Requirements Analysis: An Introduction (Online Chapter)......Page 368 Chapter 15: Principles of Software Design......Page 369 15.1 The Goals of Software Design......Page 370 15.2.1 Use Case Model......Page 373 15.2.3 Data Flow Models......Page 374 15.2.4 State Models......Page 375 15.3 Frameworks......Page 376 15.5 Summary......Page 378 15.6 Exercises......Page 379 Chapter 16: The Unified Modeling Language......Page 380 16.2 Class Relationships in UML......Page 381 16.2.2 Associations......Page 382 16.4 Inheritance......Page 383 16.4.2 Composition......Page 385 16.4.3 Dependency......Page 386 16.5 Sequence Diagrams......Page 387 16.6.2 Events......Page 391 16.6.4 OnlineShopper State Diagram Example......Page 392 16.7 Activity Diagrams......Page 393 16.8 Data Flow Models......Page 395 16.9 A Design Example with UML......Page 396 16.10 Summary......Page 399 16.11 Exercises......Page 400 Bibliography......Page 401 Chaper 17: Software Design Patterns......Page 402 17.1.2 A More Complex Example......Page 403 17.2.2 Example Application: Applying a Design Pattern......Page 405 17.3 Summary of Design Patterns by Type: Creational, Structural, and Behavioral ......Page 409 17.3.2 Structural Design Patterns......Page 410 17.3.3 Behavioral Design Patterns......Page 412 17.4 Characteristics of Design Patterns: Viewpoints, Roles, and Levels......Page 415 17.4.1 Two Viewpoints for Describing a Pattern: Static and Dynamic......Page 416 17.4.2 Two Layers of a Pattern: Abstract and Concrete......Page 417 17.4.3 Three Roles Involved in Pattern Usage: Pattern Application, Client, and Setup......Page 418 17.5.1 Singleton......Page 419 17.5.2 Abstract Factory......Page 422 17.6.1 Facade: Interfacing with a Collection of Classes......Page 427 17.6.2 Adapter: Interfacing in a Flexible Manner......Page 431 17.7.1 Interpreter: Parsing Expressions......Page 436 17.7.2 Observer......Page 441 17.7.3 State......Page 447 17.8.1 The Delegation Design Pattern Form......Page 450 17.8.2 The Recursion Design Pattern Form......Page 452 17.9 Summary......Page 454 17.10 Exercises......Page 455 Bibliography......Page 456 Chapter 18: Software Architecture......Page 457 18.2.1 Data Flow Architectures......Page 458 18.2.2 Independent Components......Page 462 18.2.3 Virtual Machines......Page 466 18.2.4 Repository Architectures......Page 467 18.2.5 Layered Architectures......Page 468 18.2.6 Service-Oriented Architectures......Page 469 18.2.7 Using Multiple Architectures within an Application ......Page 471 18.3 Trading Off Architecture Alternatives......Page 472 18.4 Tools for Architectures......Page 473 18.6 Effects of Architecture Selection on the Project Plan......Page 474 18.7 Case Study: Preparing to Design Encounter (Student Project Guide continued)......Page 476 18.8 Case Study: Software Design Document for the Role-Playing Video Game Framework......Page 479 18.9 Case Study: Software Design Document for Encounter (Uses the Framework)......Page 481 18.10 Case Study: Architecture of Eclipse......Page 485 18.11 Case Study: OpenOffice Architecture......Page 487 18.12 Summary......Page 492 18.13 Exercises......Page 493 Bibliography......Page 494 Chapter 19: Detailed Design......Page 495 19.1 Relating Use Cases, Architecture, and Detailed Design......Page 496 19.2 A Typical Road Map for the "Detailed Design" Process......Page 497 19.3 Object-Oriented Design Principles......Page 498 19.4 Designing against Interfaces......Page 500 19.5 Specifying Classes, Functions, and Algorithms......Page 501 19.5.1 Preconditions, Postconditions, and Invariants......Page 502 19.5.2 Expressing Algorithms with Activity Diagrams and Pseudocode......Page 503 19.6 Reusing Components......Page 504 19.7 Sequence and Data Flow Diagrams for Detailed Design......Page 505 19.7.1 Detailed Sequence Diagrams......Page 506 19.7.2 Detailed Data Flow Diagrams......Page 508 19.9 Design in the Unified Development Process......Page 509 19.11 Updating a Project with Detailed Design......Page 510 19.12 Case Study: Detailed Design of Encounter......Page 513 19.13 Case Study: Detailed Design of Eclipse......Page 522 19.15 Exercises......Page 524 Bibliography......Page 526 Chapter 20: Design Quality and Metrics......Page 527 20.2 Degree of Sufficiency as a Quality Goal......Page 529 20.3 Degree of Robustness as a Quality Goal......Page 530 20.4 Degree of Flexibility as a Design Quality Goal......Page 531 20.5 Degree of Reusability as a Design Quality Goal......Page 532 20.6 Degree of Time Efficiency as a Design Quality Measure......Page 536 20.7 Degree of Space Efficiency as a Design Quality Measure......Page 538 20.8 Degree of Reliability as a Design Quality Measure......Page 540 20.9 Degree of Security as a Design Quality Measure......Page 542 20.10.1 Metrics for Architecture Quality......Page 544 20.10.2 Choosing an Architecture among Alternatives......Page 547 20.10.3 Verifying Architectures......Page 549 20.11.1 Techniques for Assessing the Quality of Detailed Designs......Page 550 20.11.2 Metrics for Detailed Design......Page 552 20.11.3 Inspection of Detailed Designs ......Page 553 20.13 Exercises......Page 555 Bibliography......Page 556 Chapter 21: Advanced and Emerging Methods in Software Design (Online Chapter)......Page 557 Chapter 22: Principles of Implementation......Page 558 22.3 Identifying Classes......Page 559 22.4 Defining Methods......Page 560 22.5.1 Use Expressive Naming......Page 563 22.5.4 Explicit Numbers......Page 565 22.5.6 Loops......Page 566 22.6.1 Error Handling......Page 567 22.6.2 Exception Handling......Page 569 22.6.4 "Enforce Intentions"......Page 570 22.7 Coding Standards......Page 571 22.7.2 Other Conventions......Page 572 22.8 Comments......Page 573 22.9 Tools and Environments for Programming......Page 574 22.10 Case Study: Encounter Implementation......Page 575 22.12 Case Study: OpenOffice......Page 578 22.13 Student Team Guidance for Implementation......Page 584 22.15.1 Code Listing for Video Rental Example......Page 585 22.15.2 Code Listing for Encounter Character......Page 594 22.16 Exercises......Page 600 Bibliography......Page 602 Chapter 23: Quality and Metrics in Implementation......Page 603 23.1 Quality of Implementation......Page 604 23.1.1 The Sufficiency of an Implementation......Page 605 23.1.2 The Robustness of an Implementation......Page 606 23.1.3 The Flexibility of an Implementation......Page 611 23.1.4 The Reusability of an Implementation......Page 613 23.1.5 The Efficiency of an Implementation......Page 614 23.1.8 The Degree of Security of an Implementation......Page 615 23.2 Code Inspections and Related Quality Procedures......Page 616 23.4 Exercises......Page 618 Chapter 24: Refactoring......Page 620 24.1 Big Refactorings......Page 623 24.2 Composing Methods......Page 625 24.3 Moving Features between Objects......Page 627 24.4 Organizing Data......Page 628 24.5 Generalization......Page 631 24.6 Introducing Modules......Page 635 24.7 Refactoring in Projects......Page 636 24.7.2 Refactoring and Design Patterns......Page 637 24.9 Exercises......Page 638 Bibliography......Page 639 Chapter 25: Introduction to Software Testing......Page 640 25.2 Retesting: Regression Testing......Page 641 25.3 Black Box and White Box Testing......Page 642 25.4 Unit Testing vs. Post-Unit Testing......Page 643 25.5 Testing Object-Oriented Implementations......Page 644 25.7.1 Organize "Unit" vs. Non-Unit Tests......Page 645 25.7.4 Decide How and Where to Get Test Input......Page 646 25.9 Summary......Page 647 25.10 Exercises......Page 648 Chapter 26: Unit Testing......Page 649 26.2 Unit Test Methods......Page 650 26.2.1 Statement Coverage......Page 651 26.2.3 Path Coverage......Page 653 26.2.4 Equivalence Partitioning......Page 657 26.2.5 Boundary Value Analysis......Page 660 26.3.3 Stubs......Page 661 26.3.4 Example of a Method-Level Unit Test......Page 662 26.4 Test-Driven Development......Page 666 26.4.1 Using JUnit for Unit Testing......Page 668 26.5.1 Code Listing for EncounterCharacter Class......Page 671 26.5.2 Unit Tests for the EncounterCharacter Class......Page 678 26.6 Summary......Page 681 26.7 Exercises......Page 682 Bibliography......Page 684 Chapter 27: Module and Integration Testing......Page 685 27.1 Stubs and Drivers......Page 686 27.2 Testing a Class......Page 687 27.2.1 Example of a Class Test......Page 688 27.2.2 Attribute-Oriented Tests......Page 689 27.2.4 State-Based Tests......Page 690 27.3 Integration......Page 691 27.3.1 Big Bang Integration......Page 692 27.3.3 Bottom-Up Integration......Page 693 27.3.4 Top-Down Integration......Page 696 27.3.6 Continuous Integration......Page 697 27.4 Daily Builds......Page 698 27.5 Interface Testing......Page 699 27.6 Module Integration......Page 701 27.7 Case Study: Class Test for Encounter......Page 702 27.8 Case Study: Encounter Integration Plan......Page 707 27.10 Exercises......Page 711 Bibliography......Page 712 Chapter 28: Testing at the System Level......Page 713 28.1 Functional Testing......Page 715 28.2.1 Performance Testing......Page 717 28.2.2 Load/Stress Event Testing......Page 718 28.2.4 Recoverability Testing......Page 719 28.2.5 Usability Testing......Page 721 28.2.6 Security Testing......Page 722 28.2.7 Compatibility Testing......Page 725 28.2.9 Serviceability Testing......Page 726 28.3.1 Testing in the Absence of Requirements......Page 727 28.3.3 Constructing Directed Graphs for Black Box Testing......Page 728 28.3.5 Testing for Agile Processes......Page 730 28.3.6 Qualities of a Good Tester......Page 731 28.4.3 Alpha and Beta Releases......Page 732 28.5 Case Study: Encounter Software Test Documentation......Page 733 28.6 Case Study: Eclipse......Page 742 28.7.2 Smoke Tests......Page 745 28.7.5 Automated GUI Testing......Page 746 28.9 Exercises......Page 747 Bibliography......Page 748 Chapter 29: Software Maintenance......Page 749 29.1.1 Maintenance Requests......Page 750 29.1.2 Corrective Maintenance......Page 751 29.1.4 Perfective Maintenance......Page 752 29.2.1 Management Challenges......Page 753 29.2.3 Technical Issues......Page 754 29.3 Maintenance Process......Page 755 29.3.1 Root-Cause Analysis......Page 757 29.3.2 Patch Releases......Page 758 29.3.3 Software Trouble Reports, Maintenance Requests, and Correction Reports......Page 759 29.4 IEEE Maintenance Standards......Page 760 29.4.2 Maintenance Problem Analysis......Page 762 29.4.3 Designing for a Maintenance Request......Page 765 29.4.4 Implementing a Maintenance Request......Page 766 29.5 Software Evolution......Page 768 29.5.2 Reengineering......Page 769 29.6 Maintenance Metrics......Page 770 29.7 Case Study......Page 773 29.8 Summary......Page 775 29.9 Exercises......Page 776 Bibliography......Page 777 Glossary......Page 778 Index......Page 786

Similar books