Springer an integrated approach to software engineering 3rd ed p jalote (springer 2005) WW

571 133 0
Springer an integrated approach to software engineering 3rd ed p jalote (springer 2005) WW

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TEXTS IN COMPUTER SCIENCE Editors David Gries Fred B Schneider An Integrated Approach to Software Engineering Third Edition Pankaj Jalote Indian Institute of Technology Kanpur Springer Pankaj Jalote Department of Computer Science and Engineering Indian Institute of Technology Kanpur208016 India Series Editors David Gries Fred B Schneider Department of Computer Science Cornell University Upson Hall Ithaca, NY 14853-7501 Pankaj Jalote Indian Institute of Technology Kanpur Library of Congress Cataloging-in-Publication Data A C.I.P Catalogue record for this book is available From the Library of Congress ISBN-10: 0-387-20881-X(HB)ISBN-10: 0-387-28132-0 (eBook) ISBN-13: 978-0387-20881-7 (HB)ISBN-13: 978-0387-28132-2 (eBook) © 2005 by Springer Science-i-Business Media, Inc All rights reserved This work may not be translated or copied in whole or in part without the written permission of the publisher (Springer Science + Business Media, Inc., 233 Spring Street, New York, NY 10013, USA), except for brief excerpts in connection with reviews or scholarly analysis Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed is forbidden The use in this publication of trade names, trademarks, service marks and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights Printed in the United States of America 987654321 springeronline.com SPIN 10949597 Contents Preface to the Third Edition xiii Introduction 1.1 The Problem Domain 1.1.1 Industrial Strength Software 1.1.2 Software is Expensive 1.1.3 Late and Unreliable 1.1.4 Maintenance and Rework 1.2 The Software Engineering Challenges 1.2.1 Scale 1.2.2 Quality and Productivity 1.2.3 Consistency and Repeatability 1.2.4 Change 1.3 The Software Engineering Approach 1.3.1 Phased Development Process 1.3.2 Managing the Process 1.4 Summary Exercises 2 11 14 15 15 16 20 21 22 Software Processes 2.1 Software Process 2.1.1 Processes and Process Models 2.1.2 Component Software Processes 2.1.3 ETVX Approach for Process Specification 2.2 Desired Characteristics of Software Process 2.2.1 Predictability 2.2.2 Support Testability and Maintainability 2.2.3 Support Change 2.2.4 Early Defect Removal 25 25 26 27 29 31 31 33 34 35 vi CONTENTS 2.2.5 Process Improvement and Feedback Software Development Process Models 2.3.1 Waterfall Model 2.3.2 Prototyping 2.3.3 Iterative Development 2.3.4 Timeboxing Model 2.3.5 Comparision of Models Other Software Processes 2.4.1 Project Management Process 2.4.2 The Inspection Process 2.4.3 Software Configuration Management Process 2.4.4 Requirements Change Management Process 2.4.5 Process Management Process Summary Exercises 36 37 37 41 43 46 50 50 52 54 61 67 69 73 75 Softw^are Requirements Analysis and Specification 3.1 Software Requirements 3.1.1 Need for SRS 3.1.2 Requirement Process 3.2 Problem Analysis 3.2.1 Informal Approach 3.2.2 Data Flow Modeling 3.2.3 Object-Oriented Modeling 3.2.4 Prototyping 3.3 Requirements Specification 3.3.1 Characteristics of an SRS 3.3.2 Components of an SRS 3.3.3 Specification Language 3.3.4 Structure of a Requirements Document 3.4 Functional Specification with Use Cases 3.4.1 Basics 3.4.2 Examples 3.4.3 Extensions 3.4.4 Developing Use Cases 3.5 Validation 3.6 Metrics 3.6.1 Size—Function Points 3.6.2 Quality Metrics 3.7 Summary Exercises 79 80 81 85 89 90 91 103 113 117 118 120 124 125 128 129 132 135 136 138 142 142 147 148 150 2.3 2.4 2.5 CONTENTS Case Studies Software Architecture 4.1 Role of Software Architecture 4.2 Architecture Views 4.3 Component and Connector View 4.3.1 Components 4.3.2 Connectors 4.3.3 An Example 4.4 Architecture Styles for C&C View 4.4.1 Pipe and Filter 4.4.2 Shared-Data Style 4.4.3 Client-Server Style 4.4.4 Some Other Styles 4.5 Discussion 4.5.1 Architecture and Design 4.5.2 Preserving the Integrity of an Architecture 4.5.3 Deployment View and Performance Analysis 4.5.4 Documenting Architecture Design 4.6 Evaluating Architectures 4.6.1 The ATAM Analysis Method 4.6.2 An Example 4.7 Summary Exercises Case Studies Planning a Software Project 5.1 Process Planning 5.2 Effort Estimation 5.2.1 Uncertainties in Effort Estimation 5.2.2 Building Effort Estimation Models 5.2.3 A Bottom-Up Estimation Approach 5.2.4 COCOMO Model 5.3 Project Scheduling and Staffing 5.3.1 Overall Scheduling 5.3.2 Detailed Scheduling 5.3.3 An Example 5.3.4 Team Structure 5.4 Software Configuration Management Plan 5.5 Quality Plan 5.5.1 Defect Injection and Removal Cycle vii 152 159 160 163 167 167 169 172 176 176 178 181 182 183 183 184 188 190 194 195 196 199 201 203 207 208 208 209 211 213 215 219 219 221 223 224 225 226 227 viii CONTENTS 5.6 5.7 5.8 5.5.2 Approaches to Quality Management 5.5.3 Quality Plan Risk Management 5.6.1 Risk Management Concepts 5.6.2 Risk Assessment 5.6.3 Risk Control 5.6.4 A Practical Risk Management Approach Project Monitoring Plan 5.7.1 Measurements 5.7.2 Project Monitoring and Tracking Summary Exercises Case Studies Function-Oriented Design 6.1 Design Principles 6.1.1 Problem Partitioning and Hierarchy 6.1.2 Abstraction 6.1.3 Modularity 6.1.4 Top-Down and Bottom-Up Strategies 6.2 Module-Level Concepts 6.2.1 Coupling 6.2.2 Cohesion 6.3 Design Notation and Specification ' 6.3.1 Structure Charts 6.3.2 Specification 6.4 Structured Design Methodology 6.4.1 Restate the Problem as a Data Flow Diagram 6.4.2 Identify the Most Abstract Input and Output Data Elements 6.4.3 First-Level Factoring 6.4.4 Factoring the Input, Output, and Transform Branches 6.4.5 Design Heuristics 6.4.6 Transaction Analysis 6.4.7 Discussion 6.5 Verification 6.6 Metrics 6.6.1 Network Metrics 6.6.2 Stability Metrics 6.6.3 Information Flow Metrics 6.7 Summary 228 229 230 230 232 236 237 237 239 239 241 243 245 247 248 250 251 253 254 255 255 257 260 261 265 266 267 269 271 273 276 277 279 281 283 284 285 288 290 CONTENTS Exercises Case Studies ix 292 294 Object-Oriented Design 7.1 GO Analysis and GO Design 7.2 GG Concepts 7.2.1 Classes and Objects 7.2.2 Relationships Among Objects 7.2.3 Inheritance and Polymorphism 7.3 Design Concepts 7.3.1 Coupling 7.3.2 Cohesion 7.3.3 The Open-Closed Principle 7.3.4 Some Design Guidehnes 7.4 Unified Modehng Language (UML) 7.4.1 Class Diagram 7.4.2 Sequence and Collaboration Diagrams 7.4.3 Other Diagrams and Capabilities 7.5 A Design Methodology 7.5.1 Dynamic Modehng 7.5.2 Functional Modeling 7.5.3 Defining Internal Classes and Operations 7.5.4 Optimize and Package 7.5.5 Examples 7.6 Metrics 7.7 Summary Exercises Case Studies 303 304 306 307 312 315 323 323 325 327 329 331 331 335 339 341 343 345 346 347 348 356 360 362 364 Detailed Design 8.1 Detailed Design and PDL 8.1.1 PDL 8.1.2 Logic/Algorithm Design 8.1.3 State Modeling of Classes 8.2 Verification 8.2.1 Design Walkthroughs 8.2.2 Critical Design Review 8.2.3 Consistency Checkers 8.3 Metrics 8.3.1 Cyclomatic Complexity 8.3.2 Data Bindings 371 371 371 374 378 380 380 381 382 383 383 386 X CONTENTS 8.4 8.3.3 Cohesion Metric Summary Exercises Coding 9.1 Programming Principles and Guidelines 9.1.1 Common Coding Errors 9.1.2 Structured Programming 9.1.3 Information Hiding 9.1.4 Some Programming Practices 9.1.5 Coding Standards 9.2 Coding Process 9.2.1 An Incremental Coding Process 9.2.2 Test Driven Development 9.2.3 Pair Programming 9.2.4 Source Code Control and Build 9.3 Refactoring 9.3.1 Basic Concepts 9.3.2 An example 9.3.3 Bad Smells 9.3.4 Common Refactorings 9.4 Verification 9.4.1 Code Inspections 9.4.2 Static Analysis 9.4.3 Proving Correctness 9.4.4 Unit Testing 9.4.5 Combining Different Techniques 9.5 Metrics 9.5.1 Size Measures 9.5.2 Complexity Metrics 9.6 Summary Exercises Case Studies 10 Testing 10.1 Testing Fundamentals 10.1.1 Error, Fault, and Failure 10.1.2 Test Oracles 10.1.3 Test Cases and Test Criteria 10.1.4 Psychology of Testing 10.2 Black-Box Testing 387 388 389 391 392 393 398 401 402 406 409 410 411 413 414 416 417 419 422 424 429 429 431 437 444 449 451 452 453 456 458 462 465 466 466 468 469 471 472 CONTENTS 10.3 10.4 10.5 10.6 10.7 10.2.1 Equivalence Class Partitioning 10.2.2 Boundary Value Analysis 10.2.3 Cause-Effect Graphing 10.2.4 Pair-wise Testing 10.2.5 Special Cases 10.2.6 State-Based Testing White-Box Testing 10.3.1 Control Flow-Based Criteria 10.3.2 Data Flow-Based Testing 10.3.3 An Example 10.3.4 Mutation Testing 10.3.5 Test Case Generation and Tool Support Testing Process 10.4.1 Levels of Testing 10.4.2 Test Plan 10.4.3 Test Case Specifications 10.4.4 Test Case Execution and Analysis 10.4.5 Defect Logging and Tracking Defect Analysis and Prevention 10.5.1 Pareto Analysis 10.5.2 Perform Causal Analysis 10.5.3 Develop and Implement Solutions Metrics—Reliability Estimation 10.6.1 Basic Concepts and Definitions 10.6.2 A Reliability Model 10.6.3 Failure Data and Parameter Estimation 10.6.4 Translating to Calendar Time 10.6.5 An Example Summary Exercises Case Studies xi 473 475 477 480 483 484 487 488 491 495 498 502 504 505 507 509 511 513 516 517 517 520 521 522 524 529 532 532 534 536 539 Bibliography 543 Index 553 552 BIBLIOGRAPHY 144] E F Weller Lessons learned from three years of inspection data Software, pages 38-53, Sept 1993 IEEE 145] E J Weyuker The evaluation of program based software test data adequacy criteria Communications of the ACM, 31(6):668-675, June 1988 146] FE J Weyuker The cost of data flow testing: An empirical study Transactions on Software Engineering, 16(2): 121-128, Feb 1990 IEEE 147] D Whitgift Methods and tools for software configuration management John Wiley and Sons, 1991 148] N Wirth Program development by stepwise refinement Communications of the ACM, 14(4):221-227, April 1971 149] M Woodward, M Hennell, and D Hedley A measure of control flow complexity in program text IEEE Transactions on Software Engineering, SE-5:45-50, Jan 1979 150] Y Xie and D Engler Using redundancies to find errors IEEE Transactions on Software Engineering, 29(10):915-928, Oct 2003 151] S S Yau and J S Collofello Design stability measures for software maintenance IEEE Transactions on Software Engineering, ll(9):849-856, Sept 1985 152] R T Yeh and P Zave Specifying software requirements Proceedings of the IEEE, 68(9): 1077-1088, Sept 1980 153] B H Yin and J W Winchester The establishment and use of measures to evaluate the quality of designs Software Engineering Notes, 3:45-52, 1978 154] E Yourdon and L Constantine Structured design Prentice Hall, 1979 155] W M Zage and D M Zage Evaluating design metrics on large-scale software IEEE Software, pages 75-81, July 1993 Index Abstract data type, 310 Abstraction, 251 data, 253 functional, 252 Acceptance testing, 506 Accessing uninitialized memory, 395 Activity diagram, 340 Adaptive maintenance, Aggregation, 314, 335 Agile approach, 46 Algorithm design, 374 All defs criterion, 493 All uses criterion, 493 Alternate statement rule, 439 Analysis, 85, 89, 149 data flow modeling, see Structured analysis for Case Study (Scheduling), 152 for Case Study (PIMS), 156 informal approach, 90 level of detail, 87 object-oriented analysis, see Objectoriented analysis problem partitioning, 89 projection, 89 prototyping, see Prototyping similarity with design, 87 structured analysis, see Structured analysis transition to specification, 87, 117 Architecture, see Software architecture Architecture description language, 193 Assignment axiom, 438 Associations, 105 Axiomatic approach for verification, 437 alternate statement rule, 439 an example, 441 assignment axiom, 438 iteration rule, 440 loop invariant, 441 post condition, 437 pre condition, 437 program specification, 438 rule of composition, 439 rule of consequence, 440 Base class, 315 Behavioral testing, see Black-box testing Black-box testing, 472 boundary value analysis, 475 cause eff'ect graphing, 477 equivalence class partitioning, 473 error guessing, 483 example, 475, 476, 478, 481, 485 pair-wise testing, 480 state-based testing, see State-based testing Bottom up design, 254 Bottom-up approach to coding, 409 Boundary value analysis, 475 an example, 476 selecting test cases, 476 Branch testing, 489 Buffer overflow, 397 Bug, see Fault, Error Build process, 416 Capability Maturity Model, 15, 70 Case study (Scheduling) design analysis, 299 554 INDEX design metrics, 299 Client-server interaction of objects, 312 development process, 245 Client-server style, 181 COCOMO, 215 estimation, 245 implementation of 0 design, 463 cost driver attributes, 216 implementation of the function-oriented distribution with phases, 216 design, 462 effort multipliers, 216 example, 218 object-oriented design, 364 project types, 215 problem analysis, 152 schedule distribution, 221 project planning, 245 software architecture, 203 schedule estimation, 220 Code inspection, 429 structured design, 294 Code inspection checklist, 429 test plan, 539 Code reading, 430 Case study (PIMS) Code verification, 429, 457 development process, 246 estimation, 246 code reading, 430 combining different techniques, 451 implementation of the design, 463 object-oriented design, 368 cost effectiveness of techniques, 450 problem analysis, 156 dynamic analysis, 431 effectiveness of different techniques, project planning, 246 450 software architecture, 203 formal verification, see Axiomatic aptest plan, 540 proach for verification Causal analysis of defects, 517 inspection, 429 Cause effect graphing, 477 model checking, 431 an example, 478 static analsyis, see Static analysis selecting test cases, 479 unit testing, see Unit testing Cause-effect diagram, 518 Coding, 19, 391 an example, 520 bottom-up approach, 409 steps for constructing, 518 errors, see Coding errors Central transforms, 270 goal of, 391 Change request frequency, 148 incremental coding, 410 Chief programmer team, 224 Class, 104, 307, 309 of function-oriented design of case study 1, 462 container, 346 of 0 design of the case study 1, hierarchy, 316 463 inheritance, see Inheritance of 0 design of the case study 2, methods, 311 463 operation types, 310 pair programming, 413 relationship to abstract data types, process, 409 310 refactoring, see Refactoring relationship to objects, 310 test driven development, 411 state modeling, 378 top-down approach, 409 Class diagram, 104, 331 Coding errors drug store example, 105 accessing unitialized memory, 395 restaurant example, 111 INDEX arithmetic exceptions, 396 array index out of bounds, 396 buffer overflow, 397 enumerated data type, 396 freeing an already freed resource, 394 lack of unique addresses, 395 memory leaks, 393 NULL dereferencing, 394 off by one, 396 string handling, 397 synchronization, 395 Coding standards, 406 commenting and layout, 408 conventions for statements, 407 conventions on files, 407 naming conventions, 406 Cohesion, 257, 325, 359 determining, 260 levels, 258 Cohesion metric, 387 Collaboration diagram, 337 Combinatorial testing, 481 Commenting, 408 Communicating processes style, 183 Comparison of different V&V techniques, 449 Competent programmer hypothesis, 499 Complexity metrics, 453 Component and connector view, 167, 188, 200 blackboard style, 179 client-server style, 181 communicating processes style, 183 component types, 169 components, 167 connector implementation, 171 connector type, 170 connectors, 169 example, 172 n-tier structure, 181 object-oriented style, 182 peer-to-peer style, 182 pipe and filter style, 176 pipe and filter style example, 178 555 publish-subscribe style, 182 shared data style example, 179 shared-data style, 178 styles, 176, 200 Configuration management, see Software configuration management Consistency checkers, 382 Constructor of an object, 310 Container classes, 346 Context diagram, 97, 99 Control flow based testing an example, 495 criteria, 488 Control flow graph, 383, 384, 488 Corrective maintenance, Correctness of design, 248 Cost estimation, see Estimation Cost of correcting errors, 35 Cost of fixing requirement errors, 83 Cost schedule milestone graph, 240 Coupling, 255, 323, 358 between classes, 358 Coupling effect, 499 Coverage analysis, 503 Critical design review, 381 Cross referencing of requirements, 141 Cyclomatic complexity, 383 Cyclomatic complexity based testing, 491 Data abstraction, 253 Data bindings, 386 Data dictionary, 91, 94 example, 94 restaurant example, 101 Data flow based testing, 491 all defs criterion, 493 all uses criterion, 493 an example, 495 def/use graph, 492 Data flow diagram, 91, 267, 346 common errors, 95 conventions, 92 example, 91 leveled, 94 556 restaurant example, 99, 100 rules for construction, 93 Data flow modeling, see Structured analysis Debugging, 444 Def/use graph, 492 Defect, 14 classification, 514 closure, 515 life cycle, 513 logging and tracking, 513 prevention, see Defect prevention severity, 514 severity classification, 514 types, 514 Defect arrival and closure trends, 515 Defect distribution, 35 Defect injection and removal cycle, 227 Defect prevention, 36, 516 an example, 520 at organization level, 516 at project level, 516 causal analysis, 517 cause-effect diagram, 518 Pareto analysis, 517 root cause analysis, 520 solutions, 520 Defect removal efficiency, 522 Defects, 239 Delphi approach, 236 Depth of inheritance tree, 357 Design, 18 architecture, see Software architecture detailed, see Detailed design high level, see System design Design analysis of the case study, 299 Design constraints, 122 Design heuristics, 276 Design methodology, 248 Design metrics, 283 graph impurity, 284 identifying error prone modules, 289 information flow metrics, 288 INDEX network metrics, 284 of object-oriented design, see OOD Metrics stability, 285 Design principles, 248 Design review, 281, 381 Design review checklist, 282, 381 Design specification, 260, 265 Design verification, 281 Design walkthrough, 380 Desk review, 431 Destructor of an object, 310 Detailed design, 18, 247, 371, 388 algorithm design, 374 PDL, 371 state modeling of classes, 378 stepwise refinement, 375 verification, 380 Detailed design review, 381 Development process, 16, 27, 37 a step, 29 agile approach, 46 comparison of models, 50 entry criteria for a step, 30 ETVX specification, 30 exit criteria for a step, 30 extreme programming, 46 iterative development, see Iterative development iterative enhancement model, 44 prototyping, see Prototyping rational unified process, 46 spiral model, 45 timeboxing model, see Timeboxing model waterfall model, see Waterfall model Dynamic analysis, 431 Dynamic binding, 322 Dynamic modeling, 343 Efficiency, 13 Eflftciency of design, 249 Effort, 239 Eff'ort estimation, see Estimation INDEX Encapsulation, 307 Equivalence class partitioning, 473 an example, 475 selecting test cases, 474 ER diagram, 104 Error, 465, see also Defect Error guessing, 483 Error report, 512 Errors in coding, see Coding errors Estimation, 208, 242 a bottom-up approach example, 213 bottom-up approach, 213 building models, 211 COCOMO, see COCOMO delhpi approach, 209 for case study (Scheduling), 245 models, 211 multivariable models, 215 person-months, 209 single variable models, 211 size estimation, 212 top-down approach, 212 uncertainties, 209 Exhaustive testing, 470 External interface requirements, 123 Extreme programming, 46, 413, 417 557 parameter complexity, 143 parameters, 143 relationship to LOG, 145 unadjusted function points, 144 weights, 144 Function-oriented design, 247 Function-oriented design of the case study, 294 Functional abstraction, 252 Functional modeling, 345 Functional requirements, 121 Functional testing, see Black-box testing Functionality, 13 Generic types, 347 Graph impurity metric, 284 Halstead's measures, 452, 454 Hardware-software cost, High level design, see System design Identifying redundancies in code, 432 Impact analysis, 68 Incremental development, 410, 445, 457 refactoring, see Refactoring test driven development, 411 Industrial strength software, 2, 3, 22 Inflow of a module, 288 Factoring, 267, 273 Information flow metrics, 288 Failure, 466 Information hiding, 401, 402 Failure intensity, 523 Inheritance, 104, 315 Fan-in of modules, 276 base class, 315 Fan-out of modules, 276 class hierarchy, 316 Fault, see also Error, Defect multiple, 320 multi-mode, 481 non-strict, 320 single-mode, 480 repeated, 321 Fault tolerance, 123 strict, 319 Finite state automata, 379 subclass, 315 Fishbone diagram, 519 superclass, 315 an example, 520 Inspection process, 54, 74, 429 Formal verification of programs, see Axchecklists, 56 iomatic approach for verification defect log, 58 Function point analysis, 142 experiments to evaluate benefits, 61 advantages, 146 group review meeting, 56 drawbacks, 146 558 guidelines for work products, 60 moderator, 55 moderator responsibilities, 59 overview and preparation, 55 planning, 55 reviewer responsibilities, 60 rework and follow up, 58 roles and responsibilities, 59 scribe, 57 self-preparation log, 56 self-review, 56 sorjie characteristics, 54 summary report, 58 summary report example, 58 Integration testing, 506 Interaction diagram, 336 Internal documentation of programs, 408 Iron triangle, 15 Ishikawa diagram, 518 ISO9000, 15 Iterative development, 74 iterative enhancement model, 44 spiral model, 45 strengths, weaknesses, and applicability, 50 timeboxing model, see Timeboxing model Iterative enhancement model, 44 Knot count, 455 Lack of cohesion in methods, 359 Layers of abstraction, 254 Least squares approach, 529 Leveled data flow diagram, 94 Levels of testing, 505 Life cycle of a defect, 513 Liskov substitution principle, 329 Live variables, 454 Logic design of modules, 374 Loop invariant, 441 Maintainability, 13 Maintenance, INDEX adaptive, corrective, costs, Manpower ramp-up in a project, 220 Mean time to failure, 523 Measurements defects, 239 effort, 239 size, 239 Memory leaks, 393 Methods of a class, 311 Metrics, 21, 383, 451 cohesion metric, 387 complexity measures, 453 cyclomatic complexity, 383 data bindings, 386 defect removal efficiency, 522 for design, see Design metrics for object-oriented design, see Metrics for OOD function points, see Function point analysis graph impurity, 284 Halstead's, 452 information flow metrics, 288 knot count, 455 live variables, 454 network metrics, 284 process metrics, 21 product metrics, 21 productivity, 522 reliability, 521 size measures, see Size span, 455 stability, 285 text size, 142 topological complexity, 456 Metrics analysis of the case study design, 299 Metrics for OOD, 356, 361 coupling between classes, 358 depth of inheritance tree, 357 lack of cohesion in methods, 359 number of children, 358 INDEX 559 response for a class, 359 identifying classes, 107 weighted methods per class, 356 identifying structures, 108 Model checking, 431 inheritance, 104 Modularity, 253, 291 methodology, 107 Module size, 403 relationship to design, 304 Monitoring and control, 242 relationship to ER diagram, 104 Most abstract inputs, 269 restaurant example, 110 Most abstract outputs, 269 services, 104 Multi-mode faults, 481 transition to design, 305 Multiple inheritance, 320 UML, see UML Musa's basic model, see Reliability model Object-oriented design, 303 Mutation testing, 498 aggregation, 314 competent programmer hypothesis, association between objects, 313 499 class diagram, 342 coupling effect, 499 class hierarchy, 316 mutants, 499 cohesion, 325 coupling, 323 mutation operators, 499 defining internal classes and operaperformance, 501 tions, 346 Nesting of constructs, 403 design guidelines, 329 Network metrics, 284 design patterns, 303 Newton-Raphson method, 531 dynamic modeling, 343 NULL dereferencing, 394 functional modeling, 345 Liskov substitution principle, 329 Object, 307 methodology, 341 behavior, 308 metrics, see Metrics for OOD constructor, 310 of case study (Scheduling), 364 destructor, 310 of case study (PIMS), 368 identity, 309 open-closed principle, 327 interface, 307 optimization, 347 relationships between, 312 rate of returns example, 352 state, 308 relationship to analysis, 304 Object modeling technique, 341, 342 state modeling of classes, 378 Object-oriented analysis, 103, 342 UML, see UML aggregation, 104 word counting example, 349 assembly, 104 OOP testing associations, 105 state based testing, 445 attributes, 108 Open-closed principle, 327 class, 104 Operational profile, 524 class diagram, see Class diagram Orthogonal defect classification, 514 defining services, 109 Outflow of a module, 288 generalization-specialization, 104 identifying associations, 109 Pair programming, 413 identifying attributes, 108 Pair-wise testing, 480, 481 560 an example, 481 generating test cases, 482 objective, 481 Pareto analysis of defects, 517 an example, 517 Partial correctness, 443 Path testing, 490 Peak team size, 220 Peer-to-peer style, 182 Performance requirements, 122 Pipe and filter style, 176 example, 178 Polymorphism, 315, 321 Portability, 13 Post condition, 437 Postmortem analysis, 53 Pre condition, 437 Predictability of a Process, 31 Problem analysis, see Analysis Problem of scale, Problem partitioning, 89, 250 Process, see Software process Process design language (PDL), 371 Process improvement, 36 Process management, 28, 69 software engineering process group, 28 Process management process, 75 Process model, 26, 37, 73 Process planning, 208 Process Predictability, 31 Process tailoring, 27, 208 Process under statistical control, 32 Productivity, 1, 3, 4, 12, 522 Programmer time distribution, 33 Programming practices, 392, 402 checking read return value, 404 coding standards, see Coding standards control constructs, 402 correlated parameters, 405 empty if, while, 404 importance of exceptions, 406 information hiding, 402 INDEX nesting of constructs, 403 return from finally block, 405 robustness, 403 side effects, 403 switch case with default, 404 trusted data sources, 405 use of gotos, 402 use of user defined types, 402 Programming principles, 392 Project management, 10, 20, 27, 52, 74 cost estimation, see Estimation monitoring and control, see Project monitoring and control planning, see Project planning, see Project planning postmortem analysis, 53 process, 52 project monitoring, 52 project tracking, 52 quality, see Quality plan relationship with development process, 54 risk management, see Risk management scheduling, see Project scheduling Project monitoring and control, 52, 237 activity-level monitoring, 240 cost schedule milestone graph, 240 measurements, 239 milestone analysis, 240 status reports, 240 Project planning, 20, 52, 207 case study (Scheduling), 245 case study (PIMS), 246 chief programmer team, 224 democratic teams, 225 effort estimation, see Estimation manpower ramp-up, 220 peak team size, 220 process planning, 208 quality plan, 226, 229 risk management, see Risk management schedule, see Project scheduling INDEX team structure, 224 Project scheduling, 219, 242 an example, 223 detailed schedule, 221 distribution among different phases, 221 estimation, 219 flexibility, 219 Microsoft project, 222 milestones, 220 overall schedule estimation, 219 square root check, 220 Project tracking, 52 Projection, 89 Prototyping, 41, 74, 113 cost, 42, 115 cost-cutting methods, 42 design prototype, 113 development, 115 evolutionary, 113 horizontal, 114 process, 41 process suitability, 43 restaurant example, 116 selecting requirements, 114 strengths, weaknesses, and applicability, 50 throwaway, 41, 113 vertical, 115 Proving correctness, see Axiomatic approach for verification Psychology of testing, 471 Publish-subscribe style, 182 561 Quality plan, 226, 229 Rational unified process, 46 Rayleigh curve, 220 Refactoring, 416 an example, 419 bad smells, 422 impact on design, 418 objective, 417 risk mitigation, 418 test suite, 418 to improve classes, 426 to improve hierarchies, 427 to improve methods, 425 unit testing, 420 Regression testing, 7, 506 Reliabihty, 6, 13, 14, 521, 522 calendar and clock times, 524 definition, 523 failure intensity, 523 mean time to failure, 523 musa's basic model, see Reliability model operational profile, 524 Reliability model, 524 an example, 532 assumptions, 524 failure data, 529 parameter estimation, 529 transition to calendar time, 532 Repeated inheritance, 321 Requirement analysis, see Analysis Requirement change, 8, 15, 28, 84, 148 change request, 68 impact analysis, 68 Quality, 5, 12, 13, 82, 465 management process, 67, 148 defect injection and removal cycle, Requirement errors, 82 227 Requirement metrics, 142, 150 management approaches, 228 change request frequency, 148 procedural approach, 228 function points, see Function point quantitative management approach, analysis 229 number of errors found, 147 using statistical process control, 229 quality, 147 Quality and productivity, Q&P, 15 text size, 142 Quality attributes, 12 562 Requirement specification, 81, 117, 159 components, 120 design constraints, 122 desired characteristics, 118 document structure, 125 external interface requirements, 123 functional requirements, 121 IEEE standards, 125 performance requirements, 122 specification language, 124 use cases, see Use cases Requirement validation, 138 cross-referencing, 141 error types, 139 review checklist, 140 reviews, 140 Requirements, see Software requirements Requirements activity, 80 Requirements review, 140 Restaurant example, 99, 110, 116 Reviews, see Inspection process Rework, 7, 8, 84 Risk management, 230, 242 a practical approach, 237 activities, 231 an example, 237 checklists of frequently occuring risks, 232 delphi approach, 236 risk, 230 risk analysis, 234 risk assessment, 232 risk control, 236 risk exposure, 235 risk identification, 232 risk monitoring, 236 risk prioritization, 234, 237 top 10 risks, 232 Root cause analysis of defects, 520 Scenario, 130 Scenarios for modeling, 343 Schedule, 12, 239 Security, 123, 398 INDEX Semantic objects, 305 Sequence diagram, 335 Severity of defects, 514 Shared-data style, 178 example, 179 Side effects, 403 Single-entry, single-exit constructs, 400 Single-mode faults, 480 Size, 4, 11, 212, 239, 452 function points, see Function point analysis halstead's measure, 452 lines of code, 452 lines of code (LOG), 1, of some products, 11 Size estimation, 212 Software, costs, 4, 12 industrial strength software, metrics, see Metrics problem of scale, productivity, size, see Size student system, Software architecture, 18, 159, 199 allocation view, 165 analysis, see Software architecture evaluation behavior description, 192 blackboard style, 179 case study (Scheduling), 203 case study (PIMS), 203 client-server style, 181 combining views, 193 communicating processes style, 183 component and connector view, see Component and connector view definition, 160 deployment view, 188, 340 description, 161 description language, 193 designing, 200 documenting, 190 element catalog, 191 INDEX elements, 164 evaluation, see Software architecture evaluation example, 172 example implementation, 185 integrity, 185 layered style, 182 mismatch with implementation, 188 module view, 164, 247 object-oriented style, 182 peer-to-peer style, 182 pipe and filter style, 176 pipe and filter style example, 178 preserving integrity, 184 primary view, 191 publish-subscribe style, 182 quality attributes, 194 rationale, 191 relationship among views, 165 relationship between elements, 164 relationship with design, 183 role in analysis, 163 role in communication, 161 role in construction, 162 role in reuse, 162 shared data style example, 179 shared-data style, 178 stakeholders, 190 styles, 200 system context, 191 views, 163, 165, 200 Software architecture analysis, 188 Software architecture evaluation, 194, 201 an example, 196 approaches, 194 availability analysis, 198 performance analysis, 189 quality attributes, 194 response time analysis, 198 the ATAM approach, 195, 201 tradeoffs, 196 Software configuration management, 28, 61, 62, 75, 225, 242, 414 baselines, 64 563 configuration control board, 67 configuration controller, 67 configuration identification, 64 dependency between items, 64 functionality, 63 library management, 66 life of an item, 65 mechanisms, 64 plan, 226 process, 66 relationship to development process, 62 source code control, see Source code control status auditing, 67 version control, 64 Software design, see Design Software engineering, 2, 22 definition, problem domain, Software engineering process group, 28 Software fault, see Fault, Defect, Error Software inspections, see Inspection process Software process, 16, 25, 28, 73 characteristics, 31, 73 components, 27 development process, see Development process early defect removal, 35 ETVX specification, 30 improvement, see Process improvement inspection process, see Inspection process management, 28 non-engineering processes, 25 predictability, 31 product engineering processes, 28 project management process, see Project management requirement change management process, see Requirement change specification, 29 564 INDEX support for change, 34 State diagram, 340, 379 tailoring, 27, 208 State modeling of classes, 378 under statistical control, 32 an example, 379 Software process improvement, 69 State-based testing, 484 Software quality, see Quality an example, 485 Software Reliability, see Reliability coverage criteria, 486 Software requirement process, 85 example of selecting test cases, 487 Software requirement specification, see of classes, 445 Requirement specification selecting test cases, 485 Software requirements, 7, 17, 79, 117, state model, 484 148 test case selection criteria, 486 analysis, see Analysis Statement coverage criterion, 489 Static analysis, 431 case study (Scheduling), 152 by compilers, 432 case study (PIMS), 156 change, see Requirement change checkers, 433 consistent, 119 completeness, 432 cost of fixing errors, 83 cost effectiveness, 436 definition, 80 data flow anamolies, 432 error types, 139 false positives, 436 identifying redundancies, 432 errors, 82, 83, 139 PREfix, 433 impact on development cost, 84 soundness, 432 impact on quality, 82 Statistical process control, 229 metrics, see Requirement metrics Stepwise refinement, 254, 375 modifiable, 120 example, 376 need, 81 Structural testing, see White-box testing process, 85 specification, see Requirement spec- Structure chart, 261, 271 an example, 261 ification decision representation, 263 use cases, see Use cases iteration representation, 263 validation, see Requirement validation module types, 263 of the case study, 297 verifiable, 119 Structured analysis, 91 Software size, see Size context diagram, 97 Source code control, 414 data dictionary, 91 checkout, 414 data flow diagram, 91 command types, 414 man-machine boundary, 98 conflicts, 415 methodology, 96 tools, 65, 414 modeling the current system, 97 version maintenance, 415 restaurant example, 99 Specification, 437 Structured design methodology, 266, 291 Specification language, 124 applying to case study, 294 Spiral model, 45 central transforms, 270 Stability metrics for design, 285 design heuristics, 276 Standards compliance, 123 INDEX factoring, 267, 273 first level factoring, 271 most abstract input, 269 most abstract output, 269 steps, 267 transaction analysis, 277 transform analysis, 277 Structured programming, 398, 457 Superclass, 315 System design, 18, 247 abstraction, 251 bottom up approach, 254 correctness, 248 efficiency, 249 function-oriented design, see Structured design methodology modularity, 253 object-oriented design, see Objectoriented design principles, 248 problem partitioning, 250 simplicity, 249 specification, 265 top down approach, 254 verification, see Design verification System testing, 506 Team structure, 224 Test case generation, 502 Test C£Lse review, 510 Test case specification, 509 Test criterion, 470 generating test cases, 470 inclusion or subsumption, 470 reliability, 470 validity, 470 Test driven development, 411, 417, 457 Test oracle, 468 Test plan, 507 of case study 1, 539 of case study 2, 540 Test summary report, 512 Testing, 3, 19, 465 acceptance testing, 20, 506 565 black-box, see Black-box testing defect logging, 513 deliverables, 509 error report, 20, 512 exhaustive, 470 functional, see Black-box testing integration testing, 19, 506 levels of, 505 mutation testing, see Mutation testing of object-oriented programs, 445 process, 504 psychology of, 471 purpose of, 471 regression, 7, 506 structural testing, see White-box testing system testing, 19, 506 test case execution and analysis, 511 test case review, 510 test case specification, 509 test cases, 469 test criterion, see Test criterion test oracle, 468 test plan, 20, 507 test report, 20 test summary report, 512 unit testing, see Unit testing white-box testing, see White-box testing Testing process, 504 Timeboxing model, 46, 74 a time box, 47 execution with three stage time box, 48 iteration completion times, 48 pipelined execution of iterations, 47 stages in a time box, 47 strengths, weaknesses, and applicability, 50 suitability, 50 team size, 49 team-wise activity, 49 teams, 49 566 Tool support for testing, 502 Top down design, 254 Top-down approach to coding, 409 Topological complexity, 456 Total correctness, 443 Transaction analysis, 277 Transform analysis, 277 UML, 361 activity diagram, 340 aggregation, 335 association between classes, 331 class diagram, 331 class hierarchy representation, 333 collaboration diagram, 337 components, subsystems, packages, 339 interaction diagrams, 336 part-whole relationship representation, 335 sequence diagram, 335 state diagram, 340 stereotype, 341 subtype, supertype relationship, 331 tagged values, 341 use case diagrams, 341 Unified modeling language, see UML Unit testing, 19, 444, 458, 505 an example, 446 of classes, 420 with Junit, 446 Usability, 13 Use case diagram, 131 Use cases, 128, 149 actor, 129 development, 136 examples, 132, 136 extension scenario, 130 failure conditions, 137 failure handling, 137 level of detail, 138 levels, 137 main success scenario, 130, 137 precondition, 132 INDEX primary actor, 129 refinement, 134 scenario, 130, 343 scope, 135 summary level, 135 use case diagram, 131 writing them, 138 User-defined types, 402 Verification and Validation (V&V), 227 Verification of code, see Code verification Verification of detailed design, 380 Waterfall model, 37, 74 impact of linear ordering of phases, 38 limitations, 40 outputs, 38 stages, 37 strengths, weaknesses, and applicability, 50 Weighted methods per class, 356 Weinberg experiment, 392 White-box testing, 487 an example, 495 branch testing, 489 control flow based, 488 cyclomatic complexity based testing, 491 data flow based, 491 mutation testing, see Mutation testing path testing, 490 statement coverage criterion, 489 test case generation, 502 tool support, 502 Work products, 29, 38 .. .An Integrated Approach to Software Engineering Third Edition Pankaj Jalote Indian Institute of Technology Kanpur Springer Pankaj Jalote Department of Computer Science and Engineering Indian... openssl Python apache CVS sendmail xfig gnuplot openssh Red Hat Linux Windows XP 11 Languages ansic, cpp, yacc perl, ansic, sh ansic, perl ansic, cpp, perl python, ansic ansic, sh ansic, sh ansic ansic... capability to maintain a specified level of performance • Usability The capability to be understood, learned, and used • Efficiency The capability to provide appropriate performance relative to

Ngày đăng: 11/05/2018, 14:53

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan