| Foreword |
|
iii | |
| About the Contributors |
|
ix | |
| Acknowledgments |
|
xi | |
| Preface |
|
xxvii | |
| Introduction |
|
xxxix | |
|
Microsoft Solution Frmaework---An Overview |
|
|
1 | (42) |
|
Identifying the Business Pressures on IT |
|
|
2 | (17) |
|
What Is the Microsoft Solution Framework? |
|
|
3 | (16) |
|
Identifying Key Areas Where IT and Business Are Changing Together |
|
|
19 | (5) |
|
Key Principles and Methods for the IT Life Cycle |
|
|
20 | (2) |
|
Addressing the Growing Demand for Flexible Business Solutions |
|
|
22 | (2) |
|
Identifying Problems That IT Must Overcome to Drive Business |
|
|
24 | (3) |
|
Technology Infrastructure |
|
|
25 | (1) |
|
|
|
26 | (1) |
|
Analyzing the Scope of a Project |
|
|
27 | (8) |
|
Assessing Existing Applications |
|
|
28 | (1) |
|
Anticipating Changes in the Business Environment |
|
|
29 | (2) |
|
Estimating the Expected Lifetime of the Solution |
|
|
31 | (1) |
|
Assessing Time, Cost, Budget, and Benefit Tradeoffs |
|
|
32 | (3) |
|
|
|
35 | (2) |
|
|
|
37 | (2) |
|
|
|
38 | (1) |
|
|
|
39 | (4) |
|
Using the Team, Process, and Application Models for Development Projects |
|
|
43 | (38) |
|
Understanding Microsoft's Team Model |
|
|
44 | (10) |
|
Creating Small Interdisciplinary Teams |
|
|
44 | (1) |
|
Fundamental Roles in a Project Team |
|
|
45 | (3) |
|
Key Goals for a Project Team |
|
|
48 | (2) |
|
The Relationship Between Project Team Roles and Key Goals |
|
|
50 | (1) |
|
|
|
51 | (1) |
|
|
|
52 | (2) |
|
Understanding Microsoft's Development Process |
|
|
54 | (8) |
|
The Four Externally Visible Development Milestones |
|
|
56 | (2) |
|
Making Project Tradeoffs: Setting Priorities with a Customer |
|
|
58 | (3) |
|
Multiple-Versioned Releases for Large Projects |
|
|
61 | (1) |
|
Identifying Common Service Needs Across Development Projects |
|
|
62 | (5) |
|
Defining the Application Model |
|
|
63 | (1) |
|
Services-Based Architecture |
|
|
64 | (3) |
|
Completing Different Phases of a Project in Parallel |
|
|
67 | (4) |
|
Sharing Assets, Resources, and Skills |
|
|
68 | (1) |
|
Achieving Parallelism During the Development Process |
|
|
69 | (2) |
|
|
|
71 | (1) |
|
|
|
71 | (3) |
|
|
|
73 | (1) |
|
|
|
73 | (1) |
|
|
|
73 | (1) |
|
|
|
74 | (7) |
|
|
|
81 | (44) |
|
|
|
82 | (15) |
|
Risk Management Principles |
|
|
83 | (2) |
|
|
|
85 | (9) |
|
Risk Management Approaches |
|
|
94 | (3) |
|
The Components of a Risk Statement |
|
|
97 | (10) |
|
Risk Identification and Analysis |
|
|
97 | (9) |
|
|
|
106 | (1) |
|
The Risk Management Process |
|
|
107 | (11) |
|
|
|
109 | (5) |
|
Risk Tracking and Control |
|
|
114 | (4) |
|
|
|
118 | (1) |
|
|
|
119 | (2) |
|
|
|
120 | (1) |
|
|
|
120 | (1) |
|
|
|
121 | (4) |
|
Software Development Track Milestones |
|
|
125 | (54) |
|
|
|
126 | (1) |
|
The Vision/Scope Approved Milestone |
|
|
127 | (17) |
|
Achieving Shared Vision for a Project Team |
|
|
128 | (3) |
|
Defining the Vision/Scope Approved Milestone |
|
|
131 | (2) |
|
Identifying the Interdependent Roles and Shared Responsibilities of Project Team Members |
|
|
133 | (1) |
|
Describing the Deliverables to Be Produced During the Envisioning Phase |
|
|
133 | (3) |
|
Defining the Tasks Leading to Vision/Scope Approval |
|
|
136 | (2) |
|
Writing the Vision/Scope Document |
|
|
138 | (4) |
|
Determining the Project Structure |
|
|
142 | (2) |
|
The Project Plan Approved Milestone |
|
|
144 | (10) |
|
Defining the Project Plan Approved Milestone |
|
|
145 | (3) |
|
The Importance of a Functional Specification |
|
|
148 | (1) |
|
The Interdependent Roles and Shared Responsibilities of Project Team Members |
|
|
148 | (1) |
|
Defining the Deliverables for the Planning Phase |
|
|
149 | (1) |
|
Developing a Functional Specification |
|
|
150 | (2) |
|
Developing a Project Plan |
|
|
152 | (1) |
|
Developing a Project Schedule |
|
|
152 | (2) |
|
The Scope Complete/First Use Milestone |
|
|
154 | (7) |
|
Defining the Scope Complete/First Use Milestone |
|
|
155 | (4) |
|
Defining the Deliverables for Scope Complete/First Use |
|
|
159 | (2) |
|
|
|
161 | (9) |
|
Defining the Release Milestone |
|
|
162 | (3) |
|
Effective Usability Testing |
|
|
165 | (1) |
|
Defining the Deliverables for Release |
|
|
166 | (4) |
|
|
|
170 | (1) |
|
|
|
171 | (5) |
|
|
|
174 | (1) |
|
|
|
174 | (1) |
|
|
|
174 | (1) |
|
|
|
175 | (1) |
|
|
|
175 | (1) |
|
|
|
176 | (3) |
|
Infrastructure Deployment Track Milestones |
|
|
179 | (32) |
|
Enterprise Architecture Overview |
|
|
180 | (1) |
|
The Elements of the Enterprise Architecture |
|
|
181 | (1) |
|
Infrastructure: Overview and Drill Down |
|
|
181 | (2) |
|
Infrastructure: Deployment and the MSF Process Model |
|
|
183 | (2) |
|
The Vision/Scope Approved Milestone |
|
|
185 | (5) |
|
Achieving a Shared Vision for the Infrastructure Deployment Project Team |
|
|
185 | (1) |
|
The Vision/Scope Approved Milestone Envisioning Phase |
|
|
186 | (1) |
|
Tasks That Occur During the Envisioning Phase |
|
|
187 | (1) |
|
Roles and Responsibilities of Infrastructure Deployment Team Members That Lead to Vision/Scope Approval |
|
|
188 | (1) |
|
Deliverables Produced During the Envisioning Phase |
|
|
188 | (1) |
|
Writing the Vision/Scope Document |
|
|
189 | (1) |
|
The Project Plan Approved Milestone |
|
|
190 | (6) |
|
Setting the Target for the Project Plan Approved Milestone |
|
|
191 | (1) |
|
Roles and Responsibilities That Lead to the Project Plan Approved Milestone |
|
|
191 | (1) |
|
Deliverables to Be Produced at Project Plan Approved |
|
|
191 | (4) |
|
Defining the Focus and Deliverables of Each MSF Team and Their Role at Project Plan Approved |
|
|
195 | (1) |
|
The Scope Complete/First Use Milestone |
|
|
196 | (4) |
|
Tasks That Lead to the Scope Complete/First Use Milestone |
|
|
197 | (2) |
|
Defining the Focus and Deliverables of Each MSF Team and Their Role at Scope Complete/First Use |
|
|
199 | (1) |
|
Describing the Process for Driving to the Release Milestone |
|
|
200 | (1) |
|
|
|
200 | (5) |
|
Defining the Release Milestone |
|
|
201 | (1) |
|
Tasks That Lead to the Release Milestone |
|
|
201 | (1) |
|
Describing the Deliverables for the Release Milestone |
|
|
202 | (1) |
|
Describing the Focus for Each MSF Team Role at Release |
|
|
203 | (1) |
|
Identifying the Activities Leading to the Release Milestone and Laying the Foundation for Future Projects |
|
|
204 | (1) |
|
|
|
205 | (1) |
|
|
|
205 | (3) |
|
|
|
207 | (1) |
|
|
|
207 | (1) |
|
|
|
207 | (1) |
|
|
|
207 | (1) |
|
|
|
207 | (1) |
|
|
|
208 | (3) |
|
Designing Component Solutions---An Overview |
|
|
211 | (42) |
|
Success in Software Design |
|
|
212 | (3) |
|
Identifying Business Environment and Information Technology Challenges |
|
|
213 | (2) |
|
Achieving Good Design with MSF |
|
|
215 | (1) |
|
Identifying Typical Problems That Lead to Design Flaws or Failure |
|
|
215 | (6) |
|
Microsoft's Process for Designing Solutions |
|
|
221 | (11) |
|
|
|
221 | (3) |
|
How Milestones in the Process Model Map to Team Roles |
|
|
224 | (1) |
|
|
|
224 | (8) |
|
How Solution Design Relates to Enterprise Architecture |
|
|
232 | (13) |
|
Modular Design and the Solutions Design Model |
|
|
233 | (4) |
|
|
|
237 | (8) |
|
|
|
245 | (1) |
|
|
|
246 | (3) |
|
|
|
248 | (1) |
|
|
|
248 | (1) |
|
|
|
249 | (4) |
|
Analyzing Business Requirements |
|
|
253 | (36) |
|
The Total Cost of Ownership (TCO) Model |
|
|
254 | (12) |
|
Defining Total Cost of Ownership |
|
|
254 | (1) |
|
|
|
255 | (1) |
|
People, Process, and Technology |
|
|
256 | (1) |
|
|
|
256 | (3) |
|
Scope of the Total Cost of Ownership |
|
|
259 | (1) |
|
|
|
260 | (2) |
|
|
|
262 | (1) |
|
The Microsoft TCO Spreadsheet Tool |
|
|
262 | (4) |
|
Analyzing the Extent of a Business Requirement |
|
|
266 | (15) |
|
Establishing Business Requirements |
|
|
266 | (7) |
|
Establishing the Type of Problem to be Solved |
|
|
273 | (1) |
|
Establishing and Defining Customer Quality Requirements |
|
|
273 | (1) |
|
Minimizing the Total Cost of Ownership |
|
|
274 | (1) |
|
Increasing the Return on Investment (ROI) of the Solution |
|
|
275 | (1) |
|
Analyzing the Current Platform and Infrastructure |
|
|
275 | (1) |
|
Incorporating the Planned Platform and Infrastructure into the Solution |
|
|
276 | (1) |
|
Analyzing the Impact of Technology Migration |
|
|
277 | (1) |
|
Planning Physical Requirements for the Solution |
|
|
278 | (1) |
|
Identifying Organizational Constraints |
|
|
278 | (1) |
|
Establishing the Schedule for Implementation of the Solution |
|
|
279 | (1) |
|
Identifying the Audience for the Solution |
|
|
280 | (1) |
|
|
|
281 | (1) |
|
|
|
282 | (4) |
|
|
|
285 | (1) |
|
|
|
285 | (1) |
|
|
|
286 | (3) |
|
Narrowing Your Focus to Analyze Specific Business Requirements |
|
|
289 | (62) |
|
Analyzing Security Requirements |
|
|
290 | (14) |
|
|
|
291 | (4) |
|
Identifying the Impact of the Solution on the Existing Security Environment |
|
|
295 | (1) |
|
Establishing Fault Tolerance |
|
|
296 | (2) |
|
Planning for Effective Maintenance |
|
|
298 | (3) |
|
Planning the Distribution of a Security Database |
|
|
301 | (1) |
|
Establishing the Security Context |
|
|
302 | (1) |
|
|
|
303 | (1) |
|
Identifying Levels of Security Needed |
|
|
303 | (1) |
|
Analyzing Existing Mechanisms for Security Policies |
|
|
304 | (1) |
|
Analyzing Performance Requirements |
|
|
304 | (10) |
|
Transactions-per-Time-Slice Considerations |
|
|
306 | (1) |
|
|
|
306 | (3) |
|
|
|
309 | (1) |
|
Interoperability with Existing Standards |
|
|
309 | (1) |
|
Peak versus Average Requirements |
|
|
310 | (1) |
|
Response-Time Expectations |
|
|
311 | (1) |
|
Existing Response-Time Characteristics |
|
|
312 | (1) |
|
|
|
312 | (2) |
|
Analyzing Maintenance Requirements |
|
|
314 | (6) |
|
Breadth of Application Distribution |
|
|
316 | (1) |
|
|
|
317 | (1) |
|
|
|
318 | (1) |
|
Maintenance Staff Considerations |
|
|
319 | (1) |
|
Impact of Third-Party Maintenance Agreements |
|
|
320 | (1) |
|
Analyzing Extensibility Requirements |
|
|
320 | (1) |
|
Handling Functionality Growth Requirements |
|
|
321 | (1) |
|
Analyzing Availability Requirements |
|
|
321 | (4) |
|
Availability Requirements |
|
|
321 | (1) |
|
|
|
322 | (1) |
|
|
|
322 | (1) |
|
|
|
323 | (1) |
|
|
|
324 | (1) |
|
Analyzing Human Requirements |
|
|
325 | (4) |
|
|
|
325 | (1) |
|
|
|
325 | (1) |
|
|
|
326 | (1) |
|
|
|
326 | (1) |
|
|
|
326 | (1) |
|
|
|
327 | (1) |
|
Physical Environment Constraints |
|
|
327 | (1) |
|
Special-Needs Considerations |
|
|
328 | (1) |
|
Analyzing Requirements for Integrating a Solution with Existing Applications |
|
|
329 | (3) |
|
Requirements for Integrating Existing Applications |
|
|
329 | (1) |
|
|
|
330 | (1) |
|
Format and Location of Existing Data |
|
|
330 | (1) |
|
Connectivity to Existing Applications |
|
|
331 | (1) |
|
|
|
331 | (1) |
|
|
|
331 | (1) |
|
Analyzing Existing Business Methodologies and Limitations |
|
|
332 | (5) |
|
Methodologies and Limitations |
|
|
332 | (1) |
|
|
|
333 | (1) |
|
Current Business Practices |
|
|
334 | (1) |
|
|
|
334 | (1) |
|
|
|
334 | (1) |
|
Implementation and Training Methodologies |
|
|
335 | (1) |
|
Quality Control Requirements |
|
|
335 | (1) |
|
|
|
336 | (1) |
|
Analyzing Scalability Requirements |
|
|
337 | (3) |
|
|
|
338 | (1) |
|
|
|
338 | (1) |
|
|
|
338 | (1) |
|
|
|
338 | (1) |
|
|
|
339 | (1) |
|
|
|
340 | (2) |
|
|
|
342 | (4) |
|
|
|
345 | (1) |
|
|
|
345 | (1) |
|
|
|
346 | (5) |
|
|
|
351 | (80) |
|
Understanding the Purpose and Value of Conceptual Design |
|
|
352 | (4) |
|
Applying the Conceptual Design Process to a Business Solution |
|
|
356 | (1) |
|
Gathering User Requirements and Gaining User Perspective |
|
|
357 | (8) |
|
Gaining Business Perspective |
|
|
359 | (1) |
|
Techniques for Gathering User Input |
|
|
360 | (4) |
|
Synthesizing Business and User Perspectives |
|
|
364 | (1) |
|
Constructing Conceptual Designs Based on Scenarios |
|
|
365 | (6) |
|
The Workflow Process Model |
|
|
367 | (1) |
|
|
|
368 | (2) |
|
The Physical Environment Model |
|
|
370 | (1) |
|
Designing the Future Work State: Identifying Appropriate Types of Solutions |
|
|
371 | (4) |
|
|
|
371 | (1) |
|
|
|
372 | (2) |
|
|
|
374 | (1) |
|
Defining the Technical Architecture of a Solution |
|
|
375 | (44) |
|
Identifying Appropriate Technologies for Implementing Your Business Solution |
|
|
376 | (11) |
|
The Technology Environment of the Company |
|
|
387 | (3) |
|
Selecting Development Tools |
|
|
390 | (9) |
|
Determining the Type of Solution |
|
|
399 | (6) |
|
Choosing a Data Storage Architecture |
|
|
405 | (8) |
|
Testing the Feasibility of a Proposed Technical Architecture |
|
|
413 | (3) |
|
Developing an Appropriate Deployment Strategy |
|
|
416 | (3) |
|
Validating and Refining the Strategy: The Value of User Feedback |
|
|
419 | (1) |
|
|
|
420 | (1) |
|
|
|
421 | (4) |
|
|
|
424 | (1) |
|
|
|
424 | (1) |
|
|
|
425 | (6) |
|
|
|
431 | (38) |
|
|
|
432 | (4) |
|
The Value of Logical Design |
|
|
433 | (1) |
|
Organizing Logical Structures |
|
|
434 | (1) |
|
Importance of Core Principles |
|
|
435 | (1) |
|
Deriving a Logical Design from a Conceptual Design |
|
|
436 | (1) |
|
Deriving the Components and Services of the Logical Design for a Business Solution |
|
|
437 | (1) |
|
Distinguishing Between Objects, Services, and Components in a Logical Design |
|
|
438 | (5) |
|
|
|
439 | (1) |
|
|
|
440 | (1) |
|
|
|
441 | (1) |
|
Identifying Relationships |
|
|
442 | (1) |
|
Incorporating Business Rules into Object Design |
|
|
443 | (1) |
|
Articulating the Purpose of an Interface Contract |
|
|
444 | (1) |
|
Constructing an Interface Contract |
|
|
445 | (1) |
|
The Three Service Layers of the Application Model |
|
|
445 | (4) |
|
|
|
446 | (1) |
|
|
|
447 | (1) |
|
|
|
448 | (1) |
|
The Benefits of the Three-Tier/Three Service Layer Approach |
|
|
449 | (2) |
|
Using Paper Prototypes and Metaphors to Design User Services |
|
|
451 | (3) |
|
|
|
452 | (1) |
|
|
|
453 | (1) |
|
|
|
454 | (2) |
|
|
|
454 | (1) |
|
Coordination Requirements |
|
|
455 | (1) |
|
|
|
455 | (1) |
|
|
|
456 | (1) |
|
Assessing the Potential Impact of the Logical Design |
|
|
456 | (5) |
|
|
|
457 | (1) |
|
|
|
457 | (1) |
|
|
|
458 | (1) |
|
|
|
458 | (1) |
|
|
|
459 | (1) |
|
|
|
460 | (1) |
|
|
|
461 | (1) |
|
|
|
462 | (3) |
|
|
|
465 | (4) |
|
|
|
469 | (74) |
|
The Three Tracks of Solutions Design |
|
|
470 | (6) |
|
|
|
474 | (1) |
|
|
|
474 | (1) |
|
|
|
475 | (1) |
|
Designing a User Interface and User Services |
|
|
476 | (17) |
|
Identifying the Navigation for the User Interface |
|
|
477 | (6) |
|
Identifying Input Validation Procedures to Integrate into the User Interface |
|
|
483 | (2) |
|
Evaluating Methods of Providing Online User Assistance |
|
|
485 | (7) |
|
Establishing Appropriate Types of Output |
|
|
492 | (1) |
|
|
|
493 | (7) |
|
Constructing a Prototype Interface Based on Business Requirements, Interface Guidelines, and Organization Standards |
|
|
495 | (5) |
|
The Significance of Metaphors |
|
|
500 | (1) |
|
Developing Data Models: Database Design Activities |
|
|
501 | (19) |
|
Grouping Data into Entities by Applying Normalization Rules |
|
|
502 | (4) |
|
Choosing a Foreign Key to Enforce a Relationship Between Entities to Ensure Referential Integrity |
|
|
506 | (3) |
|
Specifying Relationships Between Entities |
|
|
509 | (2) |
|
Identifying Business Rules That Relate to Data Integrity |
|
|
511 | (3) |
|
Incorporating Business Rules and Constraints into the Data Model |
|
|
514 | (2) |
|
Identifying the Appropriate Level of Denormalization |
|
|
516 | (1) |
|
Defining the Attributes of a Data Entity |
|
|
517 | (1) |
|
Developing a Database That Uses General Database Development Standards and Guidelines |
|
|
518 | (2) |
|
Synchronizing and Coordinating the Three Tracks of Solutions Design |
|
|
520 | (6) |
|
Deriving the Physical Design |
|
|
526 | (7) |
|
Evaluating Whether Access to a Database Should Be Encapsulated in an Object |
|
|
529 | (1) |
|
Designing the Properties, Methods, and Events of Components |
|
|
530 | (3) |
|
|
|
533 | (1) |
|
|
|
534 | (4) |
|
|
|
535 | (1) |
|
|
|
536 | (1) |
|
|
|
537 | (1) |
|
|
|
537 | (1) |
|
|
|
538 | (5) |
| A Self Test Answers |
|
543 | (54) |
|
|
|
544 | (3) |
|
|
|
547 | (8) |
|
|
|
555 | (4) |
|
|
|
559 | (4) |
|
|
|
563 | (3) |
|
|
|
566 | (4) |
|
|
|
570 | (4) |
|
|
|
574 | (6) |
|
|
|
580 | (6) |
|
|
|
586 | (5) |
|
|
|
591 | (6) |
| B About the CD |
|
597 | (6) |
|
Installing the Personal Testing Center |
|
|
598 | (1) |
|
|
|
598 | (1) |
|
|
|
599 | (1) |
|
Chapter 1 Managing Windows |
|
|
599 | (1) |
|
Chapter 1 Saving Scores as Cookies |
|
|
599 | (1) |
|
Chapter 1 Using the Browser Buttons |
|
|
600 | (1) |
|
Chapter 1 JavaScript Errors |
|
|
600 | (1) |
|
|
|
600 | (1) |
|
|
|
600 | (1) |
|
|
|
601 | (2) |
| C About the Web Site |
|
603 | (2) |
|
|
|
604 | (1) |
|
Chapter 1 What You'll Find There |
|
|
604 | (1) |
| D Programming Conventions |
|
605 | (10) |
|
|
|
606 | (3) |
|
Object-Naming Conventions |
|
|
609 | (4) |
|
Variable-Naming Conventions |
|
|
613 | (2) |
| Glossary |
|
615 | (22) |
| Index |
|
637 | |