Object-oriented software engineering : an agile unified methodology

  • 6 Want to read

My Reading Lists:

Create a new list

  • 6 Want to read

Buy this book

Last edited by MARC Bot
October 18, 2020 | History

Object-oriented software engineering : an agile unified methodology

  • 6 Want to read

This work doesn't have a description yet. Can you add one?

Publish Date
Publisher
McGraw-Hill
Pages
720

Buy this book

Book Details


Table of Contents

Preface
Page xvi
Part I. Introduction and System Engineering
Page 1
Chapter 1. Introduction
Page 2
1.1. What Is Software Engineering?
Page 2
1.2. Why Software Engineering?
Page 3
1.3. Software Life-Cycle Activities
Page 4
1.3.1. Software Development Process
Page 5
1.3.2. Software Quality Assurance
Page 9
1.3.3. Software Project Management
Page 10
1.4. Object-Oriented Software Engineering
Page 11
1.4.1. Object-Oriented Modeling and Design Languages
Page 12
1.4.2. Object-Oriented Development Processes
Page 12
1.4.3. Object-Oriented Development Methodologies
Page 12
1.4.4. Will OO Replace the Conventional Approaches?
Page 13
1.5. Software Engineering and Computer Science
Page 13
Summary
Page 14
Further Reading
Page 15
Chapter Review Questions
Page 15
Exercises
Page 15
Chapter 2. Software Process and Methodology
Page 16
2.1. Challenges of System Development
Page 17
2.2. Software Process
Page 18
2.3. Merits and Problems of the Waterfall Process
Page 19
2.4. Software Development Is a Wicked Problem
Page 19
2.5. Software Process Models
Page 21
2.5.1. Prototyping Process
Page 21
2.5.2. Evolutionary Process
Page 22
2.5.3. Spiral Process
Page 22
2.5.4. The Unified Process
Page 23
2.5.5. Personal Software Process
Page 25
2.5.6. Team Software Process
Page 28
2.5.7. Agile Processes
Page 30
2.6. Software Development Methodology
Page 37
2.6.1. Difference between Process and Methodology
Page 37
2.6.2. Benefits of a Methodology
Page 38
2.6.3. Structured Methodologies
Page 39
2.6.4. Classical OO Methodologies
Page 39
2.7. Agile Methods
Page 40
2.7.1. Dynamic Systems Development Method
Page 40
2.7.2. Scrum
Page 42
2.7.3. Feature Driven Development
Page 43
2.7.4. Extreme Programming
Page 44
2.7.5. Agile or Plan-Driven
Page 44
2.8. Overview of Process and Methodology of the Book
Page 45
Summary
Page 50
Further Reading
Page 51
Chapter Review Questions
Page 51
Exercises
Page 51
Chapter 3. System Engineering
Page 53
3.1. What Is a System?
Page 54
3.2. What Is System Engineering?
Page 55
3.3. System Requirements Definition
Page 58
3.3.1. Identifying Business Needs
Page 58
3.3.2. Defining System Requirements
Page 60
3.4. System Architectural Design
Page 60
3.4.1. System Decomposition
Page 61
3.4.2. Requirements Allocation
Page 64
3.4.3. Architectural Design Diagrams
Page 66
3.4.4. Specification of Subsystem Functions and Interfaces
Page 70
3.5. Subsystems Development
Page 71
3.5.1. Object-Oriented Context Diagram
Page 71
3.5.2. Usefulness of an Object-Oriented Context Diagram
Page 72
3.5.3. Collaboration of Engineering Teams
Page 73
3.6. System Integration, Testing, and Deployment
Page 73
3.7. System Configuration Management
Page 74
Summary
Page 76
Further Reading
Page 76
Chapter Review Questions
Page 76
Exercises
Page 76
Part II. Analysis and Architectural Design
Page 79
Chapter 4. Software Requirements Elicitation
Page 80
4.1. What Is Requirements Elicitation?
Page 81
4.2. Importance of Requirements Elicitation
Page 82
4.3. Challenges of Requirements Elicitation
Page 83
4.4. Types of Requirement
Page 85
4.5. Steps for Requirements Elicitation
Page 86
4.5.1. Collecting Information
Page 87
4.5.2. Constructing Analysis Models
Page 91
4.5.3. Deriving Requirements and Constraints
Page 92
4.5.4. Requirements Specification Standards
Page 97
4.5.5. Conducting Feasibility Study
Page 97
4.5.6. Reviewing Requirements Specification
Page 99
4.6. Applying Agile Principles
Page 100
4.7. Requirements Management and Tools
Page 101
Summary
Page 102
Further Reading
Page 103
Chapter Review Questions
Page 103
Exercises
Page 103
Chapter 5. Domain Modeling
Page 105
5.1. What Is Domain Modeling?
Page 105
5.2. Why Domain Modeling?
Page 106
5.3. Object-Orientation and Class Diagram
Page 107
5.3.1. Extensional and Intentional Definitions
Page 107
5.3.2. Class and Object
Page 108
5.3.3. Object and Attribute
Page 110
5.3.4. Association
Page 110
5.3.5. Multiplicity and Role
Page 111
5.3.6. Aggregation
Page 113
5.3.7. Inheritance
Page 114
5.3.8. Inheritance and Polymorphism
Page 114
5.3.9. Association Class
Page 115
5.4. Steps for Domain Modeling
Page 117
5.4.1. Collecting Application Domain Information
Page 118
5.4.2. Brainstorming
Page 119
5.4.3. Classifying Brainstorming Results
Page 120
5.4.4. Visualizing the Domain Model
Page 124
5.4.5. Domain Model Review Checklist
Page 129
5.5. Putting It Together
Page 130
5.6. Guidelines for Domain Modeling
Page 133
5.7. Applying Agile Principles
Page 134
5.8. Tool Support for Domain Modeling
Page 135
Summary
Page 136
Further Reading
Page 136
Chapter Review Questions
Page 138
Exercises
Page 138
Chapter 6. Architectural Design
Page 139
6.1. What Is Architectural Design?
Page 140
6.2. The Importance of Architectural Design
Page 140
6.3. Architectural Design Process
Page 141
6.3.1. Determine Architectural Design Objectives
Page 142
6.3.2. Determine System Type
Page 143
6.3.3. Applying Architectural Styles
Page 147
6.3.4. Perform Custom Architectural Design
Page 157
6.3.5. Specify Subsystem Functions and Interfaces
Page 157
6.3.6. Review the Architectural Design
Page 158
6.4. Architectural Style and Package Diagram
Page 158
6.5. Applying Software Design Principles
Page 160
6.5.1. What Are Software Design Principles?
Page 161
6.5.2. Design for Change
Page 162
6.5.3. Separation of Concerns
Page 162
6.5.4. Information Hiding
Page 163
6.5.5. High Cohesion
Page 164
6.5.6. Low Coupling
Page 165
6.5.7. Keep It Simple and Stupid
Page 166
6.6. Guidelines for Architectural Design
Page 166
6.7. Architectural Design and Design Patterns
Page 167
6.8. Applying Agile Principles
Page 167
Summary
Page 168
Further Reading
Page 168
Chapter Review Questions
Page 169
Exercises
Page 169
Part III. Modeling and Design of Interactive Systems
Page 171
Chapter 7. Deriving Use Cases from Requirements
Page 172
7.1. What Is an Actor?
Page 173
7.2. What Is a Use Case?
Page 173
7.3. Business Process, Operation, and Action
Page 174
7.4. Steps for Deriving Use Cases from Requirements
Page 176
7.4.1. Identifying Use Cases
Page 177
7.4.2. Specifying Use Case Scopes
Page 184
7.4.3. Visualizing Use Case Contexts
Page 186
7.4.4. Reviewing Use Case Specifications
Page 190
7.4.5. Allocating the Use Cases to Iterations
Page 191
7.5. Guidelines for Use Case Derivation
Page 192
7.6. Applying Agile Principles
Page 195
7.7. Tool Support for Use Case Modeling
Page 196
Summary
Page 198
Further Reading
Page 198
Chapter Review Questions
Page 199
Exercises
Page 199
Chapter 8. Actor-System Interaction Modeling
Page 200
8.1. What Is Actor-System Interaction Modeling?
Page 201
8.2. Importance of Actor-System Interaction Modeling
Page 202
8.3. Steps for Actor-System Interaction Modeling
Page 202
8.3.1. Initializing a Two-Column Table
Page 202
8.3.2. Specifying Actor-System Interaction Steps
Page 203
8.3.3. Reviewing Actor-System Interaction Specifications
Page 204
8.4. Specifying Alternative Flows
Page 204
8.5. Using User Interface Prototypes
Page 204
8.6. Do Not Show Exception Handling
Page 208
8.7. Use Case Precondition and Postcondition
Page 209
8.8. Including Other Use Cases
Page 210
8.9. Continuing with Other Use Cases
Page 210
8.10. Commonly Seen Problems
Page 211
8.11. Applying Agile Principles
Page 213
Summary
Page 214
Further Reading
Page 214
Chapter Review Questions
Page 215
Exercises
Page 215
Chapter 9. Object Interaction Modeling
Page 216
9.1. What Is Object Interaction Modeling?
Page 216
9.2. UML Sequence Diagram
Page 218
9.2.1. Notions and Notations
Page 218
9.2.2. Representing Instances of a Class
Page 218
9.2.3. Sequence Diagrams Illustrated
Page 220
9.2.4. Sequence Diagram for Analysis and Design
Page 222
9.2.5. Using the Notations Correctly
Page 224
9.3. Steps for Object Interaction Modeling
Page 225
9.3.1. Collecting Information About Business Processes
Page 226
9.3.2. Identifying Nontrivial Steps
Page 227
9.3.3. Writing Scenarios for Nontrivial Steps
Page 228
9.3.4. Constructing Scenario Tables
Page 230
9.3.5. Scenarios: How to Write Them
Page 232
9.3.6. Deriving Sequence Diagrams from Scenario Tables
Page 236
9.3.7. Object Interaction Modeling Review Checklist
Page 245
9.4. Applying Agile Principles
Page 246
9.5. Tool Support for Object Interaction Modeling
Page 248
Summary
Page 249
Further Reading
Page 249
Chapter Review Questions
Page 249
Exercises
Page 249
Chapter 10. Applying Responsibility-Assignment Patterns
Page 251
10.1. What Are Design Patterns?
Page 252
10.2. Why Design Patterns?
Page 253
10.3. Situation-Specific and Responsibility-Assignment Patterns
Page 253
10.4. Pattern Specification
Page 254
10.5. The Controller Pattern
Page 254
10.5.1. A Motivating Example
Page 255
10.5.2. What Is a Controller?
Page 258
10.5.3. Applying the Controller Pattern
Page 258
10.5.4. Types of Controller
Page 261
10.5.5. Keeping Track of Use Case State
Page 261
10.5.6. Bloated Controller
Page 263
10.5.7. Comparing Different Designs
Page 264
10.5.8. When Does One Apply the Controller Pattern?
Page 265
10.5.9. Guidelines for Using Controller
Page 265
10.6. The Expert Pattern
Page 267
10.6.1. The Information Expert
Page 267
10.6.2. Applying the Expert Pattern
Page 267
10.6.3. Expert Pattern Involving More Than One Object
Page 269
10.6.4. When Does One Apply the Expert Pattern?
Page 269
10.6.5. Guidelines for Using Expert
Page 270
10.7. The Creator Pattern
Page 270
10.7.1. What Is a Creator?
Page 270
10.7.2. Applying the Creator Pattern
Page 271
10.7.3. Benefits of the Creator Pattern
Page 272
10.7.4. When Does One Apply the Creator Pattern?
Page 273
Summary
Page 273
Further Reading
Page 274
Chapter Review Questions
Page 274
Exercises
Page 275
Chapter 11. Deriving a Design Class Diagram
Page 276
11.1. What Is a Design Class Diagram?
Page 278
11.2. Usefulness of a Design Class Diagram
Page 278
11.3. Steps for Deriving a Design Class Diagram
Page 279
11.3.1. Identifying Classes
Page 279
11.3.2. Identifying Methods
Page 281
11.3.3. Identifying Attributes
Page 281
11.3.4. Relationships between Classes
Page 285
11.3.5. Identifying Relationships
Page 285
11.3.6. Design Class Diagram Review Checklist
Page 288
11.4. Organize Classes with Package Diagram
Page 288
11.5. Applying Agile Principles
Page 291
11.6. Tool Support for Design Class Diagram
Page 292
Summary
Page 292
Further Reading
Page 292
Chapter Review Questions
Page 292
Exercises
Page 292
Chapter 12. User Interface Design
Page 293
12.1. What Is User Interface Design?
Page 294
12.2. Why Is User Interface Design Important?
Page 295
12.3. Graphical User Interface Widgets
Page 296
12.3.1. Container Widgets
Page 297
12.3.2. Input, Output, and Information Presentation Widgets
Page 298
12.3.3. Guidelines for Using GUI Widgets
Page 298
12.4. User Interface Design Process
Page 300
12.4.1. Case Study: User Interface Design for a Diagram Editor
Page 301
12.4.2. Identifying Major System Displays
Page 302
12.4.3. Producing a Draft Layout Design
Page 304
12.4.4. Specifying Interaction Behavior
Page 306
12.4.5. Constructing a Prototype
Page 307
12.4.6. Evaluating the User Interface Design with Users
Page 308
12.4.7. User Interface Design Review Checklist
Page 310
12.5. Designing User Support Capabilities
Page 310
12.6. Guidelines for User Interface Design
Page 311
12.7. Applying Agile Principles
Page 313
12.8. Tool Support for User Interface Design
Page 314
Summary
Page 315
Further Reading
Page 315
Chapter Review Questions
Page 315
Exercises
Page 315
Part IV. Modeling and Design of Other Types of Systems
Page 317
Chapter 13. Object State Modeling for Event-Driven Systems
Page 318
13.1. What Is Object State Modeling?
Page 319
13.2. Why Object State Modeling?
Page 319
13.3. Basic Definitions
Page 320
13.4. Steps for Object State Modeling
Page 321
13.4.1. Collecting and Classifying State Behavior Information
Page 322
13.4.2. Constructing a Domain Model to Show the Context
Page 325
13.4.3. Constructing State Transition Tables
Page 327
13.4.4. Usefulness of the State Transition Table
Page 329
13.4.5. Converting State Transition Table to Analysis State Diagram
Page 330
13.4.6. Converting Analysis State Diagram to Design State Diagram
Page 333
13.4.7. State Modeling Review Checklists
Page 334
13.5. The State Pattern
Page 334
13.5.1. Conventional Approaches
Page 334
13.5.2. What Is State Pattern?
Page 335
13.5.3. Applying State Pattern
Page 337
13.6. Real-Time Systems Modeling and Design
Page 339
13.6.1. The Transformational Schema
Page 339
13.6.2. Timed State Machine
Page 342
13.6.3. Interrupt Handling
Page 343
13.7. Applying Agile Principles
Page 344
13.8. Tool Support for Object State Modeling
Page 345
Summary
Page 345
Further Reading
Page 346
Chapter Review Questions
Page 346
Exercises
Page 346
Chapter 14. Activity Modeling for Transformational Systems
Page 349
14.1. What Is Activity Modeling?
Page 350
14.2. Why Activity Modeling?
Page 351
14.3. Activity Modeling: Technical Background
Page 351
14.3.1. Flowchart
Page 352
14.3.2. Petri Net
Page 352
14.3.3. Data Flow Diagram
Page 353
14.4. UML Activity Diagram
Page 355
14.5. Steps for Activity Modeling
Page 356
14.5.1. Identifying Activities and Workflows
Page 357
14.5.2. Producing a Preliminary Activity Diagram
Page 360
14.5.3. Introducing Branching, Forking, and Joining
Page 362
14.5.4. Refining Complex Activities
Page 362
14.5.5. Activity Modeling Review Checklist
Page 363
14.6. Relationships to Other Diagrams
Page 363
14.7. Applying Agile Principles
Page 364
14.8. Tool Support for Activity Modeling
Page 365
Summary
Page 365
Further Reading
Page 365
Chapter Review Questions
Page 366
Exercises
Page 366
Chapter 15. Modeling and Design of Rule-Based Systems
Page 367
15.1. What Is a Decision Table?
Page 368
15.2. Usefulness of Decision Table
Page 369
15.3. Systematic Decision Table Construction
Page 370
15.4. Progressive Decision Table Construction
Page 371
15.5. Checking for Desired Properties
Page 373
15.6. Decision Table Consolidation
Page 374
15.7. Generating Code from a Decision Table
Page 375
15.8. Applying the Interpreter Pattern
Page 375
15.8.1. Defining a Business Rule Grammar
Page 376
15.8.2. Representing Rules in a Class Diagram
Page 376
15.8.3. Constructing a Parser and a Variable Look Up Context
Page 377
15.8.4. Interpreting Business Rules
Page 378
15.8.5. Updating Rules Dynamically
Page 378
15.8.6. Merits of the Interpretation Approach
Page 379
15.9. Using a Decision Table in Test-Driven Development
Page 379
15.10. Decision Trees
Page 380
15.11. Applying Agile Principles
Page 380
Summary
Page 381
Further Reading
Page 382
Chapter Review Questions
Page 382
Exercises
Page 382
Part V. Applying Situation-Specific Patterns
Page 385
Chapter 16. Applying Patterns to Design a State Diagram Editor
Page 386
16.1. Process for Applying Patterns
Page 387
16.2. Case Study: State Diagram Editor
Page 390
16.3. Working with Complex Structures
Page 391
16.3.1. Representing Recursive Whole-Part Structures
Page 391
16.3.2. Providing Layout Choices with Strategy
Page 395
16.3.3. Accessing Complex Structures with Iterator
Page 395
16.3.4. Analyzing Complex Structures with Visitor
Page 398
16.3.5. Storing and Restoring Object State with Memento
Page 402
16.4. Creating and Constructing Complex Objects
Page 404
16.4.1. Creating Families of Products
Page 404
16.4.2. Building Large Complex Objects
Page 407
16.4.3. Reusing Objects with Flyweight
Page 410
16.5. Designing Graphical User Interface and Display
Page 411
16.5.1. Keeping Track of Editing States
Page 411
16.5.2. Responding to Editing Events
Page 412
16.5.3. Converting One Interface to Another
Page 414
16.5.4. Providing Context-Dependent Help
Page 418
16.5.5. Enhancing Display Capability with a Decorator
Page 420
16.6. Applying Agile Principles
Page 423
Summary
Page 424
Further Reading
Page 424
Chapter Review Questions
Page 425
Exercises
Page 425
Chapter 17. Applying Patterns to Design a Persistence Framework
Page 426
17.1. Problems with Direct Database Access
Page 427
17.2. Hiding Persistence Storage with Bridge
Page 428
17.3. Encapsulating Database Requests as Commands
Page 431
17.4. Hiding Network Access with Remote Proxy
Page 435
17.5. Sharing Common Code with Template Method
Page 439
17.6. Retrieving Different Objects with Factory Method
Page 442
17.7. Reducing Number of Classes with Prototype
Page 444
17.8. Applying Agile Principles
Page 447
Summary
Page 447
Further Reading
Page 448
Chapter Review Questions
Page 448
Exercises
Page 448
Part VI. Implementation and Quality Assurance
Page 449
Chapter 18. Implementation Considerations
Page 450
18.1. Coding Standards
Page 450
18.1.1. What Are Coding Standards?
Page 451
18.1.2. Why Coding Standards?
Page 455
18.1.3. Code Review Checklist
Page 455
18.1.4. Guidelines for Practicing Coding Standards
Page 456
18.2. Organizing the Implementation Artifacts
Page 457
18.3. Generating Code from Design
Page 459
18.3.1. Implementing Classes and Interfaces
Page 459
18.3.2. From Sequence Diagram to Method Code Skeleton
Page 460
18.3.3. Implementing Association Relationships
Page 460
18.4. Assigning Implementation Work to Team Members
Page 461
18.5. Pair Programming
Page 462
18.6. Test-Driven Development
Page 463
18.6.1. Test-Driven Development Workflow
Page 463
18.6.2. Merits of Test-Driven Development
Page 465
18.6.3. Potential Problems
Page 466
18.7. Applying Agile Principles
Page 466
18.8. Tool Support for Implementation
Page 467
Summary
Page 467
Further Reading
Page 467
Chapter Review Questions
Page 468
Exercises
Page 468
Chapter 19. Software Quality Assurance
Page 469
19.1. Benefits of Software Quality Assurance
Page 469
19.2. Software Quality Attributes
Page 470
19.3. Quality Measurements and Metrics
Page 472
19.3.1. Usefulness of Quality Measurements and Metrics
Page 473
19.3.2. Conventional Quality Metrics
Page 474
19.3.3. Reusing Conventional Metrics for Object-Oriented Software
Page 480
19.3.4. Object-Oriented Quality Metrics
Page 480
19.4. Software Verification and Validation Techniques
Page 483
19.4.1. Inspection
Page 484
19.4.2. Walkthrough
Page 485
19.4.3. Peer Review
Page 486
19.5. Verification and Validation in the Life Cycle
Page 487
19.6. Software Quality Assurance Functions
Page 490
19.6.1. Definition of Processes and Standards
Page 490
19.6.2. Quality Management
Page 494
19.6.3. Process Improvement
Page 495
19.7. Applying Agile Principles
Page 497
19.8. Tool Support for SQA
Page 498
Summary
Page 498
Further Reading
Page 499
Chapter Review Questions
Page 499
Exercises
Page 499
Chapter 20. Software Testing
Page 501
20.1. What Is Software Testing?
Page 502
20.2. Why Software Testing?
Page 503
20.3. Conventional Black-Box Testing
Page 504
20.3.1. Functional Testing: An Example
Page 504
20.3.2. Equivalence Partitioning
Page 505
20.3.3. Boundary Value Analysis
Page 507
20.3.4. Cause-Effect Analysis
Page 509
20.4. Conventional White-Box Testing
Page 510
20.4.1. Basis Path Testing
Page 510
20.4.2. Cyclomatic Complexity
Page 511
20.4.3. Flow Graph Test Coverage Criteria
Page 512
20.4.4. Testing Loops
Page 512
20.4.5. Data Flow Testing
Page 514
20.4.6. Coverage Criteria for Data Flow Testing
Page 515
20.4.7. Interprocedural Data Flow Testing
Page 515
20.5. Test Coverage
Page 516
20.6. A Generic Software Testing Process
Page 517
20.7. Object-Oriented Software Testing
Page 518
20.7.1. Use Case-Based Testing
Page 518
20.7.2. Object State Testing with ClassBench
Page 520
20.7.3. Testing Class Hierarchy
Page 523
20.7.4. Testing Exception-Handling Capabilities
Page 524
20.8. Testing Web Applications
Page 525
20.8.1. Object-Oriented Model for Web Application Testing
Page 525
20.8.2. Static Analysis Using the Object-Oriented Model
Page 526
20.8.3. Test Case Generation Using the Object-Oriented Model
Page 527
20.8.4. Web Application Testing with HttpUnit
Page 527
20.9. Testing for Nonfunctional Requirements
Page 527
20.9.1. Performance and Stress Testings
Page 527
20.9.2. Testing for Security
Page 528
20.9.3. Testing User Interface
Page 529
20.10. Software Testing in the Life Cycle
Page 529
20.11. Regression Testing
Page 532
20.12. When to Stop Testing?
Page 533
20.13. Applying Agile Principles
Page 534
20.14. Tool Support for Testing
Page 534
Summary
Page 535
Further Reading
Page 535
Chapter Review Questions
Page 535
Exercises
Page 535
Part VII. Maintenance and Configuration Management
Page 537
Chapter 21. Software Maintenance
Page 538
21.1. What Is Software Maintenance?
Page 539
21.2. Factors That Mandate Change
Page 539
21.3. Lehman's Laws of System Evolution
Page 540
21.4. Types of Software Maintenance
Page 541
21.5. Software Maintenance Process and Activities
Page 542
21.5.1. Maintenance Process Models
Page 542
21.5.2. Program Understanding
Page 543
21.5.3. Change Identification and Analysis
Page 544
21.5.4. Configuration Change Control
Page 547
21.5.5. Change Implementation, Testing, and Delivery
Page 547
21.6. Reverse-Engineering
Page 547
21.6.1. Reverse-Engineering Workflow
Page 548
21.6.2. Usefulness of Reverse-Engineering
Page 548
21.6.3. Reverse-Engineering: A Case Study
Page 549
21.7. Software Reengineering
Page 549
21.7.1. Objectives of Reengineering
Page 550
21.7.2. Software Reengineering Process
Page 551
21.7.3. Software Reengineering: A Case Study
Page 551
21.8. Patterns for Software Maintenance
Page 553
21.8.1. Simplifying Client Interface with Facade
Page 553
21.8.2. Simplifying Component Interaction with Mediator
Page 553
21.8.3. Other Patterns for Software Maintenance
Page 555
21.9. Applying Agile Principles
Page 555
21.10. Tool Support for Software Maintenance
Page 557
Summary
Page 559
Further Reading
Page 560
Chapter Review Questions
Page 560
Exercises
Page 560
Chapter 22. Software Configuration Management
Page 562
22.1. The Baselines of a Software Life Cycle
Page 563
22.2. What Is Software Configuration Management?
Page 564
22.3. Why Software Configuration Management?
Page 565
22.4. Software Configuration Management Functions
Page 565
22.4.1. Software Configuration Identification
Page 566
22.4.2. Software Configuration Change Control
Page 568
22.4.3. Software Configuration Auditing
Page 569
22.4.4. Software Configuration Status Accounting
Page 570
22.5. Configuration Management in an Agile Project
Page 570
22.6. Software Configuration Management Tools
Page 570
Summary
Page 572
Further Reading
Page 573
Chapter Review Questions
Page 573
Exercises
Page 573
Part VIII. Project Management and Software Security
Page 575
Chapter 23. Software Project Management
Page 576
23.1. Project Organization
Page 577
23.1.1. Project Format
Page 578
23.1.2. Team Structure
Page 579
23.2. Effort Estimation Methods
Page 580
23.2.1. The Function Point Method
Page 581
23.2.2. The COCOMO II Model
Page 583
23.2.3. The Delphi Estimation Method
Page 588
23.2.4. Agile Estimation
Page 589
23.3. Project Planning and Scheduling
Page 591
23.3.1. PERT Chart
Page 591
23.3.2. Gantt Chart and Staff Allocation
Page 593
23.3.3. Agile Planning
Page 594
23.4. Risk Management
Page 595
23.4.1. Risk Identification
Page 596
23.4.2. Risk Analysis and Prioritizing
Page 597
23.4.3. Risk Management Planning
Page 599
23.4.4. Risk Resolution and Monitoring
Page 599
23.5. Process Improvement
Page 599
23.6. Applying Agile Principles
Page 601
23.7. Tool Support for Project Management
Page 602
Summary
Page 603
Further Reading
Page 603
Chapter Review Questions
Page 604
Exercises
Page 604
Chapter 24. Software Security
Page 606
24.1. What Is Software Security?
Page 607
24.2. Security Requirements
Page 608
24.3. Secure Software Design Principles
Page 609
24.4. Secure Software Design Patterns
Page 610
24.5. Seven Best Practices of Software Security
Page 612
24.6. Risk Analysis with an Attack Tree
Page 613
24.7. Software Security in the Life Cycle
Page 614
24.7.1. Security in the Planning Phase
Page 615
24.7.2. Security in the Iterative Phase
Page 623
24.8. Applying Agile Principles
Page 627
24.9. Tool Support for Software Security
Page 628
Summary
Page 629
Further Reading
Page 629
Chapter Review Questions
Page 630
Exercises
Page 630
Appendices
A. Personal Software Process: Estimation, Planning, and Quality Assurance
Page 631
A.1. Effort Estimation in PSP
Page 631
A.2. Software Quality Assurance in PSP
Page 632
A.3. Design and Quality
Page 633
B. Java Technologies
Page 634
B.1. Getting Started with Database Connectivity
Page 634
B.1.1. What Is Database Connectivity?
Page 634
B.1.2. Setting Up Data Sources
Page 634
B.1.3. Accessing Databases from a Program
Page 635
B.2. Getting Started with Swing
Page 636
B.2.1. Creating Main Window with JFrame
Page 637
B.2.2. Using Layout Managers to Arrange Components
Page 638
B.2.3. Processing Button Events with Action Listener
Page 640
B.2.4. Implementing Drawing Capabilities
Page 640
B.3. Getting Started with Java Server Pages
Page 642
B.3.1. What Are Java Server Pages?
Page 642
B.3.2. JSP Workflow
Page 642
B.3.3. Installing a Web Server with a JSP Container
Page 643
B.3.4. Using Java Server Pages
Page 643
C. Software Tools
Page 647
C.1. NetBeans
Page 647
C.2. Using JUnit
Page 648
C.3. Running JUnit in NetBeans
Page 652
C.4. The Emma Coverage Tool
Page 652
C.5. The Cobertura Coverage Tool
Page 653
C.6. Web Application Testing with HttpUnit
Page 655
C.6.1. Configure an IDE to Use HttpUnit
Page 655
C.6.2. Implementing Test Cases in HttpUnit
Page 655
C.7. Using CVS and Subversion in NetBeans
Page 656
C.7.1. Creating a CVS Remote Repository
Page 656
C.7.2. Setting Up Subversion in NetBeans
Page 658
C.7.3. Checking Out Files from a Repository
Page 659
C.7.4. Editing Sources and Viewing Changes
Page 661
C.7.5. Viewing File Status
Page 662
C.7.6. Comparing File Revisions
Page 662
C.7.7. Merging Changes from Repository
Page 662
C.7.8. Resolving Conflicts
Page 663
C.7.9. Updating Local Copies
Page 663
C.7.10. Committing Local Files to a Repository
Page 663
C.7.11. Importing Files into a Repository
Page 664
D. Project Descriptions
Page 665
D.1. Car Rental System
Page 665
D.2. National Trade Show Service System
Page 666
D.3. Study Abroad Management System
Page 667
D.4. UML Class Diagram Editor
Page 669
D.5. Radio Communication Simulator
Page 670
D.6. Object State Testing Environment
Page 672
References
Page 675
Index
Page 682

Classifications

Library of Congress
QA76.758.K86 2013, QA76.758 .K86 2013

Edition Identifiers

Open Library
OL27461769M
Internet Archive
objectorientedso0000kung
ISBN 13
9780073376257
LCCN
2012047040

Work Identifiers

Work ID
OL20262998W

Community Reviews (0)

No community reviews have been submitted for this work.

Lists

Download catalog record: RDF / JSON