Part 1 Software Projects 1
Chapter 1 Software Development Lifecycle 5
1.1.1 Software System is less than Enterprise Information System 7
Guided tour 7
1.1 Software Engineering Quintessence 7
Contents 7
1.1.2 Software Process is part of Business Process 8
Preface 9
1.1.3 Software Engineering is different from Traditional Engineering 10
1.1.4 Software Engineering is more than Programming 11
1.1.5 Software Engineenng is about Modeling 12
1.1.6 Software System is Complex 13
1.2 Lifecycle Phases 15
Acknowledgements 15
1.2.1 Requirements Analysis 16
1.2.2 System Design 17
1.2.3 Implementation 18
1.2.4 Integration and Deployment 19
1.3 Lifecycle Models 21
1.2.5 Operation and Maintenance 21
1.3.1 Waterfall Lifecycle with Feedback 22
Spiral model 25
1.3.2 Iterative Lifecycle with Increments 25
Rational Unified Process(RUP) 27
Agile lifecycle with short cycles 29
Model Driven Architecture(MDA) 29
Summary 32
Key Terms 34
Review Questions 35
Chapter 2 Software Modeling Language 37
2.1 Structured Modeling Language 38
2.1.1 Data Flow Modeling 39
2.1.2 Entity-Relationship Modeling 42
2.2.1 Class Diagrams 43
2.2 Object-Oriented Modeling Language 43
2.2.2 Use Case Diagrams 46
Sequence diagrams 50
2.2.3 Interaction Diagrams 50
Collaboration(communication)diagrams 51
2.2.4 Statechart Diagrams 53
2.2.5 Activity Diagrams 55
Component diagrams 56
2.2.6 Implementation Diagrams 56
Summary 59
Deployment diagrams 59
Key Terms 60
Review Questions 61
Problem-Solving Exercises 62
Chapter 3 Software Engineering Tools 63
3.1 Project Management Tools 64
3.1.1 Project Scheduling and Controlling 65
3.1.2 Aligning project and Performance Management with Strategic Objectives 66
3.1.3 Unifying Project Management with Web-Based Collaboration and Content Management 67
3.1.4 Unifying Project Management with Web-Based Portfolio Management 68
3.1.5 Integrating project Management with Metrics 69
3.1.6 Integrating Project Management with Risk Management 72
3.2 System Modeling Tools 73
3.2.1 Managing Requirements 74
3.2.2 Visual UML Modeling 79
3.2.4 Database Modeling 82
3.2.3 Report Generation 82
3.3 Integrated Development Environments 83
3.3.1 Routine Programming Tasks 85
Writing the program 86
Executing the program 89
Debugging the program 90
3.3.3 Enterprise Application Development 93
3.3.2 Integration with Software Modeling 93
3.3.4 Integration with Business Components 95
3.3.5 Integration with Change and Configuration Management 97
3.4.1 Support for Changes 99
3.4 Change and Configuration Management Tools 99
3.4.3 Support for System Building 102
3.4.2 Support for Versions 102
3.4.4 Support for Reengineering 104
Summary 107
Key Terms 108
Problem-SolvingExercises 109
Review Questions 109
Chapter 4 Software Project Planning and Tracking 112
4.1 Project Plan Development 113
4.2 Project Scheduling 116
4.2.1 Tasks,Milestones,and Deliverables 117
4.2.2 Task Scheduling in a Bar Chart 118
4.2.3 Resources and Resource Calendars 121
4.2.4 Effort-Driven Scheduling in a Bar Chart 122
4.2.5 Resource Underallocation and Overallocation 123
4.3 Project Budget Estimation 126
4.3.1 Schedule-Driven Budget Estimation 127
4.3.2 Algorithmic Budget Estimation 130
Principles of algorithmic models 131
COCOMO 81 133
COCOMO Ⅱ 135
4.4 Tracking Project Progress 138
4.4.1 Tracking the Schedule 139
4.4.2 Tracking the Budget 141
Actual costs from schedule 142
Actual costs from accounting 143
Earned value 146
Summary 149
Review Questions 150
Key Terms 150
Problem-Solving Exercises 151
Chapter 5 Software Process Management 153
5.1.1 Acquiring and Motivating People 155
5.1 People Management 155
Team creation 156
Motivational theories 157
Forms of communication 158
5.1.2 Project Communications 158
Lines of communication 159
Factors in communication 160
Communication in conflict resolution 161
5.1.3 Team Development 162
5.2.1 Risk Identification 163
5.2 Risk Management 163
5.2.2 Risk Assessment 164
5.2.3 Risk Handling 167
5.3 Quality Management 168
5.3.1 Software Qualities 169
Softwaretesting 171
5.3.2 Quality Control 171
Testing techniques 173
Test planning 176
5.3.3 Quality Assurance 177
Reviews 178
Checklists 178
Audits 179
5.4 Change and Configuration Management 180
5.4.1 Requirements Changes 181
5.4.2 Artifact Versions 182
5.4.3 Defects and Enhancements 185
5.4.4 Metrics 187
Summary 190
Key Terms 191
Review Questions 193
Part 2 From Requirements via Architectural Design to Software Release 195
Chapter 6 Business Object Model 199
6.1 Advertising Expenditure Measurement-The Business 200
6.2 Business Context Diagram 201
6.3.1 Business Use Cases and Business Actors 202
6.3 Business Use Case Model 202
6.3.2 Business Use Case Model for AEM 203
6.3.3 Alternative Business Use Case Model for AEM 204
6.5.1 Business Entities 207
6.5 Business Class Model 207
6.4 Business Glossary 207
6.4.1 Business Glossary for AEM 207
6.5.2 Business Class Model for AEM 208
6.5.3 Alternative Business Class Model for AEM 209
Summary 210
Case Study Questions 211
Discussion Questions 211
Key Terms 211
ReviewQuestions 211
Minicase-Advertising Expenditure Measurement 212
Case Study Exercises 212
Problem-Solving Exercises 212
Chapter 7 Domain Object Model 215
7.1 Contact Management-The Domain 216
7.2.2 Use Case Relationships 217
7.2.1 Use Cases and Actors 217
7.2 Domain Use Case Model 217
7.2.3 Use Case Model for Contact Management 219
7.2.4 Alternative Use Case Model for Contact Management 220
7.3.1 Domain Glossary for Contact Management 222
7.3 Domain Glossary 222
7.4.1 Classes and Attributes 224
7.4 Domain Class Model 224
7.4.2 Class Relationships 226
7.4.3 Class Model for Contact Management 227
7.4.4 Alternative Class Model for Contact Management 228
Summary 229
Key Terms 230
Case Study Exercises 231
Problem-Solving Exercises 231
Review Questions 231
Discussion Questions 231
CaseStudyQuestions 231
Minicase-Time Logging 232
Chapter 8 Iteration 1 Requirements and Object Model 234
8.1 Use Case Model 235
8.2.1 Brief Description,Preconditions,and Postconditions 236
8.2 Use Case Document 236
8.2.2 Basic Flow 237
8.2.3 Subflows 239
8.3 Conceptual Classes 241
8.2.4 Exception Flows 241
8.4 Supplementary Specification 243
Key Terms 245
Summary 245
Case Study Exercises 246
Problem-Solving Exercises 246
Review Questions 246
Discussion Questions 246
CaseStudy Questions 246
Minicase-Time Logging 247
Chapter 9 Architectural Design 248
9.1.1 Architectural Modules 249
9.1 Architectural Layers and Dependency Management 249
Packages 250
Design classes 250
9.1.2 Package Dependencies 251
9.1.3 Layer Dependencies 253
9.1.4 Class Dependencies 254
9.1.5 Inheritance Dependencies 255
Inheritance without polymorphism 258
Extension and restriction inheritance 258
Down-calls 259
9.1.6 Method Dependencies 260
Up-calls 260
Method dependencies in the presence of implementation inheritance 262
Method dependencies in the presence of delegation 262
9.1.7 Interfaces 264
Usage dependency 266
Implementation dependency 266
Breaking circular dependencies with interfaces 267
9.1.8 Event Processing 268
Event processing and interfaces 270
Event processing and layer dependencies 270
Acquaintance dependencies and interfaces 273
9.1.9 Acquaintance 273
Acquaintance package 275
9.2.1 Model-View-Controller 277
9.2 Architectural Frameworks 277
9.2.2 Presentation-Control-Mediator-Entity-Foundation 279
PCMEF layers 280
PCMEF principles 282
Acquaintance in PCMEF+ 283
9.3 Architectural Patterns 285
Deployment of PCMEF layers 285
9.3.2 Abstract Factory 286
9.3.1 Fa?ade 286
9.3.3 Chain of Responsibility 287
9.3.4 Observer 288
9.3.5 Mediator 290
Summary 292
Key Terms 293
Review Questions 294
Minicase-Contact Information Management 295
Case Study Exercises 295
Problem-Solving Exercises 295
Chapter 10 Database Design and Programming 301
10.1 Quick Tutorial in Relational Databases from a Software Engineering Viewpoint 302
10.1.1 Table 303
10.1.2 ReferentialIntegrity 305
10.1.3 Conceptual versus Logical Database Models 306
10.1.4 Implementing Business Rules 307
10.1.5 Programming Database Application Logic 310
10.1.6 Indexes 311
10.2 Mapping Transient Objects to Persistent Records 315
10.2.1 Object Databases,SQL:1999,and Impedance Mismatch 316
Mapping a one-to-many association and aggregation 317
10.2.2 Object-Relational Mapping 317
Mapping a many-to-many association 319
Mapping a one-to-many recursive association 320
Mapping a one-to-one association 320
Mapping generalization 321
Mapping a many-to-many recursive association 321
10.3 Database Design and Creation for Email Management 322
10.3.1 Database Model 323
10.3.2 Creating the Database Schema 325
10.3.3 Sample Database Content 326
Key Terms 328
Summary 328
CaseStudyQuestions 329
Discussion Questions 329
Review Questions 329
Minicase-ContactInformationManagement 330
Case Study Exercises 330
Problem-Solving Exercises 330
Chapter 11 Class and Interaction Design 331
11.1 Finding Classes from Use Case Requirements 332
11.1.1 Finding Classes from Use Case Requirements for Email Management 333
11.1.2 Initial Class Design for Email Management 337
11.2 Architectural Elaboration of Class Design 339
Constants in interface 339
11.2.1 Architectural Elaboration of Class Design for Email Management 342
11.2.2 Class Design for Email Management after Architectural Elaboration 343
11.2.3 Class Instantiation 344
Instantiation diagram for Email Management 345
Who instantiates the first object? 345
11.3 Interactions 346
11.3.1 Sequence Diagrams 347
11.3.2 Communication Diagrams 349
11.4 Interactions for Email Management 351
11.3.3 Interaction Overview Diagrams 351
11.4.1 The'Login'Interaction 352
11.4.2 The'Exit'Interaction 353
11.4.3 The'View Unsent Messages'Interaction 354
11.4.4 The'Display Message Text'Interaction 356
11.4.5 The'Email Message'Interaction 357
11.4.7 The'Incorrect Option'Interaction 358
11.4.6 The'Incorrect User Name or Password'Interaction 358
11.4.8 The'Too Many Messages'Interaction 359
Summary 361
11.4.9 The'Email Couid Not Be Sent'Interaction 361
CaseStudyQuestions 362
Discussion Questions 362
Key Terms 362
Review Questions 362
Minicase-Time Logging System 363
Case Study Exercises 363
Problem-Solving Exercises 363
Minicase-ContactInformationManagement 364
Chapter 12 Programming and Testing 365
12.1.1 Class 366
12.1 Quick Tutorial in Java from a Software Engineenng Viewpoint 366
From conceptual to design class model 369
12.1.2 Class Associations and Collections 369
Java collections 371
Associations on entity objects 373
C++ parameterized types 375
12.1.3 Database Access in Java 377
Comparison of JDBC and SQLJ 378
Executing SQL statements 379
Establishing a database connection 379
Calling stored procedures and functions 383
12.2 Test-Driven Development 385
12.2.1 JUnit Framework 386
12.2.2 Test-Driven Development in Email Management 389
12.3 Acceptance and Regression Testing 395
12.3.1 Test Scripts in Email Management 396
12.3.2 Test Input,Output,and Regression Testing in Email Management 398
12.3.3 Implementation of Test Script in Email Management 401
12.4 Iteration 1 Runtime Screenshots 404
Summary 409
Key Terms 410
Tutorial and Case Study Exercises 411
Problem-Solving Exercises 411
Review Questions 411
Minicase-Time Logging System 412
Minicase-ContactInformation Management 413
Chapter 13 Iteration 1 Annotated Code 414
13.1 Code Overview 415
13.2.1 Interface IAConstants 417
13.2 Package Acquaintance 417
13.2.3 Interface IAContact 419
13.2.2 Interface IAEmployee 419
13.2.4 Interface IAOutMessage 420
13.3.1 Class PMain 422
13.3 Package Presentation 422
13.3.2 Class PConsole 423
Constructing a PConsole object 424
Viewing outmessages 426
Displaying login and menu 426
Requesting to email an outmessage 429
13.4.1 Class CActioner 430
13.4 Package Control 430
Constructing a CActioner object 432
Routing retrieval of outmessages 433
Initiating login 433
Emailing an outmessage 434
13.5.1 Interface IEDataSupplier 435
13.5 Package Entity 435
Using JavaMailTM API 435
Object identifiers and identity field pattern 438
Constructing an EEmployee object 439
13.5.2 Class EEmployee 439
Removing sent outmessages 440
Getting unsent outmessages 440
13.5.3 Class EContact 441
Removing sent outmessages 442
Getting unsent outmessages 442
Constructing an EContact object 442
13.5.4 Class EOutMessage 443
Getting and setting a contact for Outmessage 444
Constructing an EOutMessage object 444
Getting and setting a sender employee for outmessage 445
Getting and setting a creator employee for outmessage 445
13.6 Package Mediator 446
13.6.1 Class MBroker 447
Requesting login connection 448
Constructing an MBroker object 448
Retrieving unsent outmessages 450
Creating Employees Cache 450
Creating an outmessages cache 452
Creating a contacts cache 453
Updating outmessages after emailing and restoring the cache 454
13.7.1 Class FConnection 455
13.7 Package Foundation 455
Obtaining database connection 456
Constructing an FConnection object 456
13.7.3 Class FWriter 458
13.7.2 Class FReader 458
Iteration 1 Questions and Exercises 459
Key Terms 459
Summary 459
Part 3 Software Refactoring and User Interface Development 461
Chapter 14 Iteration 2 Requirements and Object Model 463
14.1 Use Case Model 464
14.2 Use Case Document 465
14.2.2 Basic Flow 466
14.2.1 Brief Description,Preconditions,and Postconditions 466
14.2.3 Subflows 468
14.2.4 Exception Flows 472
14.3 Conceptual Classes and Relational Tables 474
14.4 Supplementary Specification 476
Review Questions 477
Key Terms 477
Summary 477
Chapter 15 Architectural Refactoring 478
15.2 Refactoring Methods 479
15.1 Refactoring Targets 479
15.2.1 Extract Class 480
15.2.2 Subsume Method 481
15.2.3 Extract Interface 483
15.3 Refactoring Patterns 484
15.3.1 Identity Map 485
Load-check-out 487
15.3.2 Data Mapper 487
Unload-check-in 488
Many data mappers 490
15.3.3 Alternative Data Mapper Strategies 490
Metadata mapping 492
15.3.4 Lazy Load 493
Lazy Initialization 494
OID Proxy 495
Virtual Proxy 495
Navigation in Identity Map 498
Navigation in Entity Classes 500
15.3.5 Unit of Work 501
15.4 Refactored Class Model 502
Summary 505
Key Terms 506
Problem-Solving Exercises 507
CaseStudy Questions 507
Review Questions 507
Discussion Questions 507
Chapter 16 User Interface Design and Programming 509
16.1 User Interface Design Guidelines 510
16.1.1 User in Control 511
16.1.2 Interrace Consistency 512
16.1.3 Interface Forgiveness 512
16.1.4 Interface Adaptability 513
16.2 User Interface Components 514
16.2.1 Containers 515
Layout management 518
Layering management 519
16.2.2 Menus 520
16.2.3 Controls 521
16.3 User Interface Event Handling 523
16.4 Patterns and the User Interface 527
16.4.1 Observer 528
16.4.3 Chain of Responsibility 530
16.4.2 Decorator 530
16.4.4 Command 531
16.5 User Interface for Email Management 532
Summary 537
Key Terms 538
Review Questions 539
Problem-Solving Exercises 540
Chapter 17 Web-Based User Interface Design and Programming 541
17.1.1 Basic HTML 543
17.1 Enabling Technologies for the Web Client Tier 543
17.1.2 Scripting Language 545
17.1.3 Applet:Thin and Thick 547
17.2.1 Servlet 551
17.2 Enabling Technologies for the Web Server Tier 551
17.2.2 JSP 555
17.3 Transactions on Stateless Internet Systems 559
17.4 Patterns and the Web 561
17.4.2 Composite 563
17.4.1 Observer 563
17.4.3 Factory Method 564
17.4.5 Decorator 565
17.4.4 Strategy 565
17.4.6 Model-View-Controller 566
17.4.8 Reuse of Tags in JSP 567
17.4.7 Front Controller 567
17.4.9 Decoupled Control:Struts 572
17.5 Servlet Implementation of Email Management 573
Summary 581
Review Questions 582
Key Terms 582
Problem-Solving Exercises 583
Chapter 18 Iteration 2 Annotated Code 584
18.1 Code Overview 585
18.2 Package Acquaintance 586
18.2.1 Interface IAEmployee 587
Constructing and launching PWindow 588
18.3.1 Class PWindow 588
18.3 Package Presentation 588
Data retrievalin PWindow 590
Filter activation 593
18.3.2 Class PMessageDetailWindow 595
18.3.3 Class PMessageTableModel 598
18.3.4 Class PDisplayList 601
18.3.5 Class PDisplayList.Filter 604
18.4.2 Class CMsgSeeker 607
18.4.1 Class CAdmin 607
18.4 Package Control 607
18.5 Package Entity 608
18.5.1 Class EldentityMap 609
18.6 Package Mediator 612
18.6.2 Class MDataMapper 613
18.6.1 Class MModerator 613
Outmessage retrievals and loading 615
Outmessage saving and unloading 618
18.7 Presentation Layer:Applet Version 620
18.8 Presentation Layer:Servlet Version 622
18.8.1 Class PEMS 623
Login in servlet 624
Showing outmessages in servlet 626
18.8.2 Class PEMSEdit 630
Summary 632
Iteration 2 Questions andExercises 633
Key Terms 633
Part 4 Data Engineering and Business Components 637
Chapter 19 Iteration 3 Requirements and Object Model 639
19.1 Use Case Model 640
19.2.1 Brief Description,Preconditions,and Postconditions 641
19.2 Use Case Document 641
19.2.2 Basic Flow 642
19.2.3 Subflows 644
19.2.4 Exception Flows 651
19.3 Conceptual Classes and Relational Tables 653
19.4 Supplementary Specification 655
19.5 Database Specification 657
Review Questions 659
Key Terms 659
Summary 659
Chapter 20 Security and Integrity 660
20.1 Designing Secunty 661
20.1.1 Discretionary Authorization 662
System and object privileges 663
Programmatic discretionary authorization 664
20.1.2 Mandatory Authorization 671
20.1.3 Enterprise Authorization 672
20.2 Designing Integrity 675
20.2.1 Null and Default Constraints 676
20.2.3 Unique and Primary Keys 677
20.2.2 Domain and Check Constraints 677
20.2.4 Foreign Keys 678
20.2.5 Triggers 680
20.3.1 Secunty in Email Management 685
20.3 Security and Integrity in Email Management 685
Explicit Authorization table 688
Using individual schemas,global schema,views,and stored procedures 689
Using individual schemas,global schema,and stored procedures 689
Authorization administration 692
20.3.2 Integrity in Email Management 693
Summary 697
Key Terms 698
Problem-Solving Exercises 699
Review Questions 699
Chapter 21 Transactions and Concurrency 700
21.1 Concurrency in System Transactions 701
21.1.1 ACID Properties 702
21.1.2 Isolation Levels 703
21.1.3 Lock Modes and Levels 705
21.1.4 Transactional Models 706
21.1.5 Concurrency Control Schemes 707
21.2.1 Business Transaction Execution Contexts 711
21.2 Concurrency in Business Transactions 711
21.2.3 Transaction Services across Tiers 712
21.2.2 Business Transactions and Component Technology 712
Webtier 713
Application tier 714
Database tier 716
21.2.4 Offline Concurrency Patterns 717
Unit of Work 718
Optimistic Offline Lock 719
Pessimistic Offline Lock 721
21.3.1 Flat Transaction Model 722
21.3 Transactions and Concurrency in Email Management 722
21.3.2 Unit of Work and Transactional Support 723
Summary 725
Key Terms 726
Problem-Solving Exercises 727
Review Questions 727
Chapter 22 Business Components 729
22.1 Enterprise JavaBeans 730
22.1.1 EJB Fundamentals 732
22.1.2 Entity Beans 735
22.1.3 Session Beans 739
22.2.1 Creating Entity Components 741
22.2 Business Components for Java 741
XML for entity components 742
22.2.2 Creating View Components 744
Java for entity components 744
XML for view components 745
Java for view components 746
22.2.3 Creating the Application Module 747
Summary 748
Review Questions 749
Key Terms 749
Chapter 23 Iteration 3 Annotated Code 750
23.2.1 Interface IAReportEntry 751
23.2 Package Acquaintance 751
23.1 Code Overview 751
23.3 Package Presentation 753
Populating the report contact list 754
23.3.1 Class PWindow 754
Report window 755
Printing the report 757
Activity report 757
Populating the report table 758
Showing the authorization window 759
Saving modified authorization rules 762
Conversion from rule matrix to authorization table 762
Deleting an outmessage 764
Conversion from authorization table to rule matrix 764
Creating an outmessage 766
Modifying an outmessage 766
Dynamic registration of buttons 767
23.3.2 Class PTableWindow 767
Adding listeners to dynamically generated buttons 769
Button return status 770
Printing in PTabieWindow 770
23.4 Package Control 771
23.5 Package Entity 771
23.5.1 Class EldentityMap 773
Report registration and removal 773
Report retrieval 774
23.6 Package Mediator 776
23.6.1 Class MModerator 777
Authorization rules 777
Report retrieval 779
Creating an outmessage 781
Updating an outmessage 781
Changes to previous methods 782
23.6.2 Class MDataMapper 782
Report retrievalin MDataMapper 784
Authorization rules loading in MDataMapper 786
Saving authorization rules in MDataMapper 786
23.6.3 Class MUnitOfWork 789
Acquiring MUnitOfWork 790
New entity registration in MUnitOfWork 791
Dirty entity registration in MUnitOfWork 791
Entity removal in MUnitOfWork 792
Committing MUnitOfWork 792
Execution of a transaction 793
Starting a transaction 795
23.7 Package Foundation 795
23.7.1 Transactions on FConnection 796
23.7.2 Execute Statements in FWriter 796
23.7.3 Querying the Database in FReader 798
23.8 Database Code 799
23.8.1 Ref Cursor for ResultSet 800
23.8.2 Retrieval of Outmessages 801
23.8.3 Retrieval of Departmental Outmessages 801
23.8.4 Deleting an Outmessage 802
23.8.5 Creating an Outmessage 803
23.8.6 Report Generation 805
23.8.7 Trigger on OutMessage Table 807
Summary 809
Key Terms 810
Iteration 3 Questions andExercises 810
Bibliography 811
Index 816
The accompanying CD 826