| Acknowledgments | xvii
|
| About This Book | xix
|
| Intended Audience | xix
|
| Prerequisites | xix
|
| Getting Started | xx
|
| Course Overview | xxi
|
| Case Studies | xxvi
|
| Using This Book to Prepare for Certification | xxx
|
| The Microsoft Certified Professional Program | xxxv
|
| Technical Support | xxxvi
|
| About the Authors | xxxvii
|
| PART 1 DEVELOPING THE FRAMEWORK |
|
| CHAPTER 1 Enterprise Architecture | 3
|
| What Is Architecture? | 4
|
| Making a Commitment to Architecture-First Design and Practice | 5
|
| Challenges of the IT Environment | 6
|
| How Enterprise Architecture Responds to IT Challenges | 8
|
| Goal of Enterprise Architecture | 8
|
| Microsoft Solutions Framework (MSF) | 9
|
| MSF Enterprise Architecture Model | 10
|
| MSF Team Model for Application Development | 10
|
| MSF Process Model for Application Development | 10
|
| MSF Risk Management Model | 10
|
| MSF Design Process Model | 10
|
| MSF Application Model | 11
|
| Presentation of MSF in This Book | 11
|
| MSF Enterprise Architecture Model | 11
|
| Business Perspective | 12
|
| Application Perspective | 12
|
| Information Perspective | 13
|
| Technology Perspective | 13
|
| Four Perspectives, One Architecture | 14
|
| Alignment of Business and IT Goals | 14
|
| Dangers to Avoid During the Enterprise Architecture Process | 16
|
| Objectives of the MSF Enterprise Architecture Model | 18
|
| Creating an Enterprise Architecture | 19
|
| The Myth of an Enterprise-Wide, Project-Deep Architecture | 19
|
| Milestone-Driven Process | 20
|
| Getting from Current State to Future State | 20
|
| Reactive and Proactive Flows | 23
|
| Maintaining Focus | 24
|
| Enterprise Architecture and Individual Projects | 25
|
| Planning While Building and Building While Planning | 26
|
| Summary | 27
|
| Review | 28
|
| Case Study 1 Developing an Enterprise Architecture | 29
|
| EA Kickoff | 31
|
| Four Models with Perspective | 35
|
| Proactive, Reactive, and Versions | 37
|
| Getting Started on F-BEAP | 40
|
| CHAPTER 2 Enterprise Applications | 43
|
| Features of Enterprise Applications | 44
|
| Enterprise Application Architecture | 45
|
| Component Reuse | 46
|
| Application Size | 48
|
| Software Performance | 49
|
| Application Scaling | 50
|
| Architecture Forms | 51
|
| Guiding Software Principles | 57
|
| Alignment with Business Goals | 58
|
| Product Mindset | 58
|
| Architecture-First | 59
|
| Design Within Context | 59
|
| Different Languages for Different Project Phases | 59
|
| Project Success Factors | 59
|
| Team Approach | 60
|
| Individual Commitment to Project Goal | 60
|
| Early Product Demonstrations | 60
|
| Risk Management | 61
|
| Component-Based Development | 61
|
| Change Management | 62
|
| Product Versions Based on Customer Priorities and Expectations | 62
|
| Flexible, Scalable Framework | 62
|
| Enterprise Application Model | 63
|
| Designing with the Enterprise Application Model | 65
|
| Business Model | 68
|
| User Model | 69
|
| Logical Model | 71
|
| Technology Model | 73
|
| Development Model | 74
|
| Physical Model | 76
|
| MSF Application Model for Development | 82
|
| User Services | 82
|
| Business Services | 82
|
| Data Services | 83
|
| Summary | 83
|
| Review | 84
|
| CHAPTER 3 Project Teams | 85
|
| Team Model vs. Hierarchical Model | 86
|
| Project Responsibilities | 88
|
| The MSF Development Team Model | 90
|
| Product Management | 91
|
| Program Management | 93
|
| Development | 95
|
| Testing | 96
|
| User Education | 98
|
| Logistics Management | 99
|
| Adapting Team Size to Project Size | 100
|
| Large-Project Scaling | 101
|
| Small-Project Scaling | 102
|
| Building Successful Teams | 103
|
| Finding Effective Leaders | 103
|
| Improving Team Effectiveness | 104
|
| Educating the Team | 109
|
| Coordinating with Outside Teams | 110
|
| Team Management Tools | 111
|
| Summary | 113
|
| Review | 114
|
| Case Study 2 Introducing the RMS Project Team | 115
|
| Agenda Overview | 116
|
| Team Introductions | 119
|
| MSF Revisited | 122
|
| RMS Application | 123
|
| Review of the MSF Development Team Model | 124
|
| Team Roles | 125
|
| Chapter 4 Development Process | 131
|
| Models for Application Development | 132
|
| Waterfall Model | 132
|
| Spiral Model | 134
|
| Unified Process | 136
|
| Workflows | 136
|
| Project Phases | 140
|
| Iterations | 143
|
| MSF Development Process Model | 145
|
| Phased Process | 146
|
| Milestone-Driven Process | 147
|
| Versioned Process | 148
|
| The Four MSF Phases and Their Major Milestones | 148
|
| Envisioning Phase | 148
|
| Planning Phase | 150
|
| Developing Phase | 152
|
| Stabilizing Phase | 154
|
| Importance of All Phases | 155
|
| MSF Development Process Model Principles | 155
|
| Using Versioned Releases | 156
|
| Creating Living Documents | 157
|
| Scheduling for an Uncertain Future | 158
|
| Managing Tradeoffs | 159
|
| Managing Risk | 161
|
| Maintaining a Fixed Ship-Date Mindset | 162
|
| Breaking Large Projects into Manageable Parts | 162
|
| Performing Daily Builds | 164
|
| Using Bottom-Up Scheduling | 164
|
| Using Versioned Processes | 165
|
| Guidelines for Versioned Releases | 166
|
| Development Tasks During Other Phases | 167
|
| Team Roles in the MSF Development Process Model | 170
|
| Artifacts and Deliverables | 170
|
| Relationships Between Models | 171
|
| Summary | 173
|
| Review | 174
|
| Case Study 3 Introducing the RMS Project | 175
|
| Current State | 176
|
| Scheduling Resources | 176
|
| Completing Timesheets | 179
|
| Recording Time | 182
|
| Generating Invoices | 185
|
| Business Implications | 186
|
| Wrapping Up and Assignments | 189
|
| Case Study 4 Determining Goals | 191
|
| Review of the MSF Development Process Model | 194
|
| Team Roles and Their Phase Responsibilities | 195
|
| Iterations Within Versions | 197
|
| RMS Project Calendar and Initial Goals | 199
|
| PART 2 DESIGNING THE PRODUCT |
|
| CHAPTER 5 Project Vision | 205
|
| Overview of Project Envisioning | 206
|
| Why Establish a Vision? | 208
|
| Pitfalls | 209
|
| Envisioning Process | 210
|
| Who Does What During Envisioning? | 210
|
| Step #1: Research | 211
|
| Step #2: Analysis | 213
|
| Step #3: Rationalization | 214
|
| Step #4: Implementation | 214
|
| Step #5: Validation | 214
|
| Communicating | 215
|
| Risk Management Process | 215
|
| Sources of Risk | 216
|
| Types of Risk Management | 217
|
| Step #1: Risk Identification | 219
|
| Step #2: Risk Analysis | 220
|
| Step #3: Risk Action Planning | 222
|
| Step #4: Risk Tracking | 224
|
| Step #5: Risk Control | 225
|
| Vision Approved Milestone and Its Deliverables | 226
|
| Vision Document | 227
|
| Prototype System | 229
|
| Project Structure Document | 229
|
| Master Risk Assessment Document | 230
|
| Communicating the Vision | 230
|
| Expanding the Envisioning Process | 231
|
| Summary | 232
|
| Review | 233
|
| Case Study 5 Envisioning RMS | 235
|
| Round One | 235
|
| Round Two | 241
|
| Client Perspective | 249
|
| Wrap-Up | 257
|
| CHAPTER 6 Project Plan | 261
|
| Overview of Project Planning | 262
|
| Planning Phase and the MSF Design Process | 263
|
| Who Does What During Planning? | 263
|
| MSF Design Process | 264
|
| Overview of the MSF Design Process | 265
|
| Conceptual Design | 269
|
| Logical Design | 277
|
| Physical Design | 285
|
| Ongoing Risk Management Process | 300
|
| Project Plan Approved Milestone and Its Deliverables | 302
|
| Interim Milestones | 303
|
| Functional Specification | 304
|
| Master Project Plan | 307
|
| Master Project Schedule | 308
|
| Revised Master Risk Assessment Document | 311
|
| Summary | 311
|
| Review | 312
|
| Case Study 6 Planning RMS | 313
|
| Overview of the Planning Phase | 316
|
| Overview of the Design Process | 318
|
| Conceptual Design | 322
|
| Logical Design | 324
|
| Development and EA Team Meeting | 328
|
| Physical Design | 336
|
| Project Plan Approved Milestone | 346
|
| Part 3 Developing the Product |
|
| CHAPTER 7 User Service Layer Technologies | 353
|
| Determining the User Interface | 354
|
| User Service Layer Considerations | 354
|
| Selecting a User Service Layer Architecture | 360
|
| Basics of Interface Design | 362
|
| UI Elements | 362
|
| Composition | 365
|
| Color and Images | 368
|
| Usability | 369
|
| User Assistance Model | 371
|
| Creating the UI | 371
|
| Implementing a Native User Service Layer | 371
|
| Implementing a Web-Based User Service Layer | 372
|
| Accessing a Native Application | 377
|
| Accessing a Web-Based Application | 377
|
| Connecting the User and Business Service Layers | 380
|
| Making Business Objects Available to Client Computers | 380
|
| Accessing Business Objects in Native Applications | 381
|
| Accessing Business Objects in Web-Based Applications | 382
|
| Accessing Remote Objects Using RDS | 383
|
| Summary | 385
|
| Review | 386
|
| CHAPTER 8 Business Service Layer Technologies | 387
|
| Overview of Business Services | 388
|
| Component Object Model (COM) | 389
|
| Why COM? | 389
|
| COM Programming Model | 401
|
| Automation | 402
|
| The IDispatch Interface | 402
|
| Type Libraries | 404
|
| Dispinterfaces | 405
|
| Dual Interfaces | 406
|
| COM Support in Distributed Environments | 406
|
| COM Security | 407
|
| Remote Activation and Marshaling | 411
|
| Packaging with MTS | 412
|
| Designing MTS Packages | 414
|
| Activation | 415
|
| Shared Resources | 415
|
| Fault Isolation | 416
|
| Security Isolation | 416
|
| Implementing COM in an MTS Environment | 417
|
| Basic Windows NT Application Services | 419
|
| Windows 2000 COM+ Services | 424
|
| Unified Programming Model | 424
|
| Primary COM+ Services | 426
|
| Summary | 427
|
| Review | 428
|
| Case Study 7 Introducing COM+ | 429
|
| Time to Learn | 429
|
| Overview of COM+ | 430
|
| Examples of COM+-Based Application Architecture | 434
|
| Expanded Range of Design Choices | 435
|
| Queued Components | 435
|
| Loosely Coupled Events (LCE) | 436
|
| In-Memory Database (IMDB) | 437
|
| Transactional Shared Property Manager | 437
|
| Object Pooling | 438
|
| Dynamic Load Balancing | 439
|
| Application Design Considerations | 440
|
| Objects in the COM+ Environment | 443
|
| Connecting Components | 448
|
| CHAPTER 9 Data Service Layer Technologies | 453
|
| What Is the Data Service Layer? | 454
|
| Universal Storage | 454
|
| Application Programming Interfaces (APIs) | 454
|
| Universal Data Access | 455
|
| UDA-Based Access Components | 456
|
| Data Modeling | 456
|
| Identifying Data | 457
|
| Defining Data | 458
|
| Ensuring Data Integrity | 461
|
| Defining Operational Processes | 466
|
| Choosing a Data Storage Technology | 468
|
| Microsoft Data Access Components (MDAC) | 468
|
| Open Database Connectivity (ODBC) | 470
|
| OLE DB | 471
|
| ActiveX Data Objects (ADO) | 474
|
| Remote Data Service (RDS) | 481
|
| Choosing the Right Data Access Technology | 484
|
| When to Use ADO | 484
|
| When to Use RDO | 484
|
| When to Use ODBCDirect | 485
|
| When to Use DAO | 485
|
| When to Use ODBC | 485
|
| Choosing a Data Access Strategy | 486
|
| Accessing Host-Based Data | 488
|
| ADO for the AS/400 and VSAM | 488
|
| DDM and OLE DB | 489
|
| COMTI and Mainframe Data Integration | 492
|
| COMTI Makes It Easier to Extend Transactions | 493
|
| Differences Between Windows and Mainframe Terminology | 494
|
| DCOM Connector for SAP | 495
|
| COM+ In-Memory Database (IMDB) | 497
|
| Summary | 499
|
| Review | 500
|
| CHAPTER 10 Testing and the Production Channel | 501
|
| Managing the Development Environment | 502
|
| Production Channel | 503
|
| Change Control Process | 505
|
| Sizing the Production Channel | 507
|
| Testing Enterprise Applications | 508
|
| Component-Level Testing | 509
|
| Local Integration Testing | 510
|
| Debugging Tools | 510
|
| Data Access Testing | 511
|
| Integration Testing | 511
|
| Performance Validation | 512
|
| Defining Performance Requirements | 513
|
| Defining Metrics and Goals | 514
|
| Measuring Performance | 515
|
| Defining Performance Tests | 515
|
| Determining Baseline Performance | 516
|
| Identifying and Eliminating Bottlenecks | 516
|
| Common Bottlenecks | 520
|
| Scaling the Production Environment | 522
|
| Configuration #1: Single Node | 523
|
| Configuration #2: IIS on a Separate Node | 523
|
| Configuration #3: SQL Server on a Separate Node | 524
|
| Configuration #4: Each Database on a Separate Node | 525
|
| Configuration #5: Partitioned Database | 526
|
| Configuration #6: Partitioned Application | 527
|
| Fault Tolerance | 528
|
| Bug Management | 529
|
| Tracking | 529
|
| Classification | 530
|
| Resolution | 531
|
| Summary | 531
|
| Review | 532
|
| Case Study 8 Testing RMS | 533
|
| What's Needed and Why | 535
|
| CHAPTER 11 Application Security | 539
|
| Authentication Security | 540
|
| Windows NT Authentication | 540
|
| Kerberos Authentication | 542
|
| Web-Based Authentication | 543
|
| SQL Server Authentication | 547
|
| Encryption | 549
|
| Security-Related Protocols | 549
|
| Secure Sockets Layer (SSL) | 550
|
| SSL, IIS 4.0, and Microsoft Proxy Server | 551
|
| Server Gated Cryptography | 552
|
| CryptoAPI | 554
|
| Access Security | 554
|
| Windows NT Access Security | 554
|
| User Access Control | 556
|
| File Protection | 558
|
| Distributed Component Protection | 559
|
| Operating System Services Protection | 560
|
| Windows NT Registry Security | 560
|
| ASP and HTML Page Security | 561
|
| MTS Application and Data Security | 562
|
| SQL Server Access Permissions | 564
|
| Auditing | 565
|
| Log Files | 566
|
| Event Logs | 566
|
| Distributed Environments | 567
|
| Summary | 569
|
| Review | 570
|
| CHAPTER 12 Development Deliverables | 571
|
| Overview of the Developing Phase | 572
|
| Planning Feeds the Developing Phase Deliverable | 574
|
| Development Process | 574
|
| Who Does What During Development? | 575
|
| Step #1: Analysis and Rationalization | 576
|
| Step #2: Implementation | 576
|
| Step #3: Validation | 577
|
| Ongoing Risk Management Process | 577
|
| Scope Complete Milestone and Its Deliverables | 578
|
| Interim Milestones | 579
|
| Revised Functional Specification | 582
|
| Revised Master Project Plan | 584
|
| Revised Master Project Schedule | 584
|
| Revised Master Risk Assessment Document | 585
|
| Source Code and Executables | 585
|
| User Performance and Support Elements | 586
|
| Testing Elements | 587
|
| Summary | 591
|
| Review | 592
|
| Case Study 9 Developing RMS | 593
|
| Product Management Report | 593
|
| Program Management Report | 595
|
| User Education Report | 596
|
| Logistics Management Report | 597
|
| Development Report | 597
|
| Testing Report | 599
|
| Problem Solving | 602
|
| Regression Testing | 604
|
| Scope Complete Milestone | 607
|
| Part 4 Shipping the Product |
|
| CHAPTER 13 Product Stabilization | 617
|
| Overview of Stabilization | 618
|
| Stabilization Process | 619
|
| Who Does What During Stabilization? | 619
|
| Interim Milestones | 620
|
| Milestone #1: Interim Releases as Bugs Converge | 620
|
| Milestone #2: Zero-Bug Release | 621
|
| Milestone #3: Release Candidates | 621
|
| Milestone #4: Final Product Release | 621
|
| Ongoing Risk Management Process | 621
|
| Release Milestone and Its Deliverables | 623
|
| Release Notes | 623
|
| User and Support Performance Artifacts | 623
|
| Testing Results | 625
|
| Project Archives | 625
|
| Product Deployment | 625
|
| Planning the Product Deployment | 626
|
| Deployment Timeline | 628
|
| Software, Data Setup, and Conversion | 629
|
| Interim Product Release Deployment | 630
|
| Deployment Methods | 631
|
| Production Support | 634
|
| Data Migration and Coexistence Issues | 634
|
| Summary | 635
|
| Review | 636
|
| CHAPTER 14 Project Review | 637
|
| Case for Project Review | 638
|
| Capability Maturity Models | 640
|
| Project Review Considerations | 642
|
| Preparation for a Project Review Meeting | 644
|
| Organizing a Project Review Team | 645
|
| Capturing Feedback | 647
|
| Accountability | 647
|
| Summary | 647
|
| Review | 648
|
| Case Study 10 Shipping RMS | 649
|
| Are We Ready for the Users? | 650
|
| A Fresh Look | 652
|
| User Feedback | 655
|
| Reviewing the Project | 657
|
| APPENDIX Review Questions and Answers | 661
|
| Glossary | 693
|
| Bibliography | 705
|
| Index | 707 |