Introduction |
|
xxi | |
Hardware Requirements |
|
xxi | |
Software Requirements |
|
xxi | |
Using the CD and DVD |
|
xxiii | |
How to Install the Practice Tests |
|
xxiii | |
How to Use the Practice Tests |
|
xxiii | |
How to Uninstall the Practice Tests |
|
xxv | |
Microsoft Certified Professional Program |
|
xxv | |
Technical Support |
|
xxv | |
Evaluation Edition Software Support |
|
xxvi | |
|
Evaluating the Technical Feasibility of an Application |
|
|
1 | (38) |
|
|
2 | (1) |
|
Lesson 1: Evaluating Requirements and Proposing a Design |
|
|
3 | (19) |
|
What Makes a Good Set of Application Requirements? |
|
|
4 | (3) |
|
Evaluating the Requirements for the Application |
|
|
7 | (1) |
|
Recommending Best Technologies |
|
|
8 | (7) |
|
Investigating Existing Solutions for Similar Business Problems |
|
|
15 | (1) |
|
Creating a High-Level Application Design |
|
|
16 | (2) |
|
Lab: Evaluating Requirements and Recommending Technology |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
20 | (2) |
|
Lesson 2: Creating a Proof-of-Concept Prototype to Refine an Application's Design |
|
|
22 | (11) |
|
What Constitutes a Good Prototype? |
|
|
23 | (1) |
|
Mockups and Proof-of-Concept Prototypes |
|
|
23 | (1) |
|
Creating a Prototype to Evaluate Key Design Decisions |
|
|
24 | (5) |
|
Demonstrating the Feasibility of the Design |
|
|
29 | (1) |
|
Lab: Creating a Proof-of-Concept Prototype |
|
|
30 | (1) |
|
|
31 | (1) |
|
|
31 | (2) |
|
|
33 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
|
34 | (2) |
|
Case Scenario: Evaluate Requirements and Propose an Application Design |
|
|
34 | (2) |
|
|
36 | (1) |
|
Evaluating Requirements and Proposing a Design |
|
|
36 | (1) |
|
Creating a Proof-of-Concept Prototype to Refine an Application's Design |
|
|
37 | (1) |
|
|
37 | (2) |
|
Creating Specifications for Developers |
|
|
39 | (46) |
|
|
39 | (2) |
|
Lesson 1: Create a Logical Model |
|
|
41 | (12) |
|
|
41 | (1) |
|
|
42 | (5) |
|
Driving ORM Diagrams from Requirements and Use Cases |
|
|
47 | (1) |
|
Using ORM Diagrams to Identify Objects, Properties, Methods, Entities, and Fields |
|
|
48 | (1) |
|
Lab: Create a Logical Model |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
51 | (2) |
|
Lesson 2: Define Application Layers |
|
|
53 | (8) |
|
Define the Layers of Your Application |
|
|
53 | (4) |
|
Define Communication Between Layers |
|
|
57 | (1) |
|
Lab: Define Logical Application Layers |
|
|
58 | (1) |
|
|
59 | (1) |
|
|
59 | (2) |
|
Lesson 3: Create Physical Models for Developers |
|
|
61 | (18) |
|
Create a Component Diagram |
|
|
62 | (2) |
|
|
64 | (3) |
|
Create a Sequence Diagram |
|
|
67 | (2) |
|
Create an Activity Diagram |
|
|
69 | (1) |
|
Create an Entity-Relationship Diagram |
|
|
70 | (3) |
|
|
73 | (1) |
|
Lab: Create Physical Models |
|
|
73 | (4) |
|
|
77 | (1) |
|
|
77 | (2) |
|
|
79 | (1) |
|
|
79 | (1) |
|
|
80 | (1) |
|
|
80 | (2) |
|
Case Scenario: Evaluate User Inputs and Create Physical Models |
|
|
80 | (2) |
|
|
82 | (1) |
|
Define Objects and their Relationships (Create a Logical Model) |
|
|
82 | (1) |
|
Create a Logical Architecture |
|
|
83 | (1) |
|
Create Physical Models for Developers |
|
|
83 | (1) |
|
|
83 | (2) |
|
|
85 | (16) |
|
|
86 | (1) |
|
Lesson 1: Evaluating the Logical Design |
|
|
87 | (6) |
|
Evaluation of the Logical Design |
|
|
87 | (5) |
|
|
92 | (1) |
|
|
92 | (1) |
|
Lesson 2: Evaluating the Physical Design |
|
|
93 | (5) |
|
Evaluation of the Physical Design |
|
|
93 | (3) |
|
|
96 | (1) |
|
|
96 | (2) |
|
|
98 | (1) |
|
|
98 | (1) |
|
|
98 | (1) |
|
|
98 | (1) |
|
Case Scenario 1: Review the Logical Design of an Enterprise Application |
|
|
98 | (1) |
|
Case Scenario 2: Review the Physical Design of an Enterprise Application |
|
|
99 | (1) |
|
|
99 | (1) |
|
Evaluate an Existing Logical Design |
|
|
99 | (1) |
|
Evaluate an Existing Physical Design |
|
|
100 | (1) |
|
|
100 | (1) |
|
|
101 | (42) |
|
|
102 | (1) |
|
Lesson 1: Database Design |
|
|
103 | (17) |
|
|
103 | (1) |
|
|
104 | (2) |
|
|
106 | (3) |
|
|
109 | (2) |
|
|
111 | (4) |
|
|
115 | (2) |
|
Lab: Defining Entity Relationships |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (2) |
|
Lesson 2: Designing a Component |
|
|
120 | (13) |
|
Component Characteristics |
|
|
120 | (3) |
|
|
123 | (7) |
|
Lab: Design a Database Logging Component |
|
|
130 | (1) |
|
|
131 | (1) |
|
|
131 | (2) |
|
Lesson 3: Component Features |
|
|
133 | (6) |
|
|
133 | (4) |
|
Lab: Determine Component Features |
|
|
137 | (1) |
|
|
138 | (1) |
|
|
138 | (1) |
|
|
139 | (1) |
|
|
139 | (1) |
|
|
139 | (1) |
|
|
140 | (1) |
|
Case Scenario 1: Design an Employee Component |
|
|
140 | (1) |
|
Case Scenario 2: Design a Database for the Company Library |
|
|
140 | (1) |
|
|
141 | (1) |
|
|
141 | (1) |
|
|
141 | (1) |
|
|
142 | (1) |
|
|
143 | (32) |
|
|
144 | (1) |
|
Lesson 1: Implementing Component Features |
|
|
145 | (11) |
|
Extend, Compose, or Implement? |
|
|
145 | (1) |
|
Building Class Hierarchies |
|
|
146 | (1) |
|
|
147 | (1) |
|
|
148 | (1) |
|
Handling Unmanaged Resources |
|
|
149 | (1) |
|
Lab: Add Handling of Unmanaged Resources |
|
|
150 | (4) |
|
|
154 | (1) |
|
|
154 | (2) |
|
Lesson 2: Data Access in Components |
|
|
156 | (8) |
|
|
156 | (5) |
|
|
161 | (1) |
|
Lab: Choosing a Data Access Methodology |
|
|
161 | (1) |
|
|
162 | (1) |
|
|
162 | (2) |
|
Lesson 3: Component Infrastructure |
|
|
164 | (8) |
|
|
164 | (3) |
|
|
167 | (1) |
|
Lab: Propagating an Exception with Context |
|
|
168 | (2) |
|
|
170 | (1) |
|
|
170 | (2) |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
172 | (1) |
|
Case Scenario 1: Choose a Data Access Methodology |
|
|
173 | (1) |
|
Case Scenario 2: Search for Resource Leaks |
|
|
173 | (1) |
|
|
173 | (1) |
|
Consume an Unmanaged Resource |
|
|
174 | (1) |
|
Create a Data Access Component |
|
|
174 | (1) |
|
|
174 | (1) |
|
Multimedia in Distributed Applications |
|
|
175 | (26) |
|
|
175 | (1) |
|
Lesson 1: How to Choose a Delivery Mechanism |
|
|
176 | (17) |
|
|
176 | (6) |
|
|
182 | (5) |
|
Lab: Using MTOM to Deliver Multimedia |
|
|
187 | (4) |
|
|
191 | (1) |
|
|
191 | (2) |
|
Lesson 2: Challenges in Multimedia Delivery |
|
|
193 | (5) |
|
|
193 | (1) |
|
|
194 | (1) |
|
|
195 | (1) |
|
Digital Rights Management |
|
|
196 | (1) |
|
|
196 | (1) |
|
|
197 | (1) |
|
|
198 | (1) |
|
|
198 | (1) |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
199 | (1) |
|
Create a Web Service That Delivers Dynamic Graphics |
|
|
200 | (1) |
|
|
200 | (1) |
|
Reusable Software Components |
|
|
201 | (34) |
|
|
202 | (1) |
|
Lesson 1: Consuming Reusable Software Components |
|
|
203 | (28) |
|
Identifying Reusable Components |
|
|
203 | (2) |
|
Extending and Restricting Reusable Components |
|
|
205 | (15) |
|
Lab: Consume a Reusable Software Component |
|
|
220 | (7) |
|
|
227 | (1) |
|
|
228 | (3) |
|
|
231 | (1) |
|
|
231 | (1) |
|
|
231 | (1) |
|
|
232 | (1) |
|
Case Scenario 1: Extending a Reusable Component |
|
|
232 | (1) |
|
Case Scenario 2: Restricting a Reusable Component |
|
|
232 | (1) |
|
Case Scenario 3: Restricting a Reusable Component |
|
|
232 | (1) |
|
|
233 | (1) |
|
Consume a Reusable Software Component |
|
|
233 | (1) |
|
|
234 | (1) |
|
Design Logic Implementation |
|
|
235 | (38) |
|
|
236 | (1) |
|
Lesson 1: Implementation Approach Philosophies |
|
|
237 | (3) |
|
|
237 | (1) |
|
|
238 | (1) |
|
|
239 | (1) |
|
|
239 | (1) |
|
Lesson 2: Program Flow Control |
|
|
240 | (1) |
|
|
240 | (6) |
|
|
240 | (1) |
|
|
240 | (4) |
|
Lab: Designing Application Flow Control |
|
|
244 | (1) |
|
|
245 | (1) |
|
|
245 | (1) |
|
Lesson 3: Data Structure Designs |
|
|
246 | (11) |
|
Choosing a Data Storage Mechanism |
|
|
246 | (5) |
|
|
251 | (4) |
|
|
255 | (1) |
|
|
255 | (2) |
|
Lesson 4: State Management Design |
|
|
257 | (4) |
|
|
257 | (1) |
|
|
258 | (1) |
|
|
259 | (1) |
|
|
259 | (1) |
|
|
259 | (1) |
|
|
259 | (2) |
|
Lesson 5: Components versus Services |
|
|
261 | (3) |
|
|
261 | (1) |
|
|
262 | (1) |
|
|
262 | (1) |
|
|
263 | (1) |
|
|
263 | (1) |
|
Lesson 6: Security Implementation |
|
|
264 | (5) |
|
|
264 | (1) |
|
|
264 | (4) |
|
|
268 | (1) |
|
|
268 | (1) |
|
|
269 | (1) |
|
|
269 | (1) |
|
|
269 | (1) |
|
|
270 | (1) |
|
Case Scenario 1: Scaling Out |
|
|
270 | (1) |
|
Case Scenario 2: Services |
|
|
270 | (1) |
|
|
271 | (1) |
|
Designing Application Logic |
|
|
271 | (1) |
|
|
271 | (2) |
|
|
273 | (37) |
|
|
274 | (1) |
|
Lesson 1: Logging in Distributed Applications |
|
|
275 | (16) |
|
|
275 | (1) |
|
|
276 | (5) |
|
|
281 | (5) |
|
|
286 | (1) |
|
Lab: Common Logging Issues |
|
|
287 | (2) |
|
|
289 | (1) |
|
|
290 | (1) |
|
Lesson 2: Monitoring Distributed Applications |
|
|
291 | (15) |
|
|
291 | (1) |
|
|
292 | (5) |
|
|
297 | (3) |
|
Lab: Monitoring Applications |
|
|
300 | (5) |
|
|
305 | (1) |
|
|
305 | (1) |
|
|
306 | (1) |
|
|
306 | (1) |
|
|
306 | (1) |
|
|
307 | (1) |
|
Case Scenario 1: Instrumenting a Distributed Application |
|
|
307 | (1) |
|
|
307 | (1) |
|
Logging Application Events |
|
|
307 | (1) |
|
Monitoring the Application |
|
|
308 | (1) |
|
|
308 | (2) |
|
|
310 | (40) |
|
|
310 | (2) |
|
Lesson 1: Creating a Unit Test Framework |
|
|
312 | (13) |
|
What Makes a Good Framework? |
|
|
312 | (3) |
|
The Properties of a Good Unit Test |
|
|
315 | (2) |
|
|
317 | (3) |
|
|
320 | (3) |
|
|
323 | (1) |
|
|
324 | (1) |
|
Lesson 2: System-Level Testing |
|
|
325 | (14) |
|
|
325 | (3) |
|
|
328 | (4) |
|
|
332 | (2) |
|
Lab: System-Level Testing |
|
|
334 | (3) |
|
|
337 | (1) |
|
|
337 | (2) |
|
Lesson 3: The Testing Environment |
|
|
339 | (7) |
|
|
339 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
Random Generation Techniques |
|
|
341 | (3) |
|
|
344 | (1) |
|
|
344 | (2) |
|
|
346 | (1) |
|
|
346 | (1) |
|
|
346 | (1) |
|
|
347 | (1) |
|
Case Scenario 1: Choosing the Tests |
|
|
347 | (1) |
|
Case Scenario 2: Choosing the Tests |
|
|
347 | (1) |
|
|
347 | (1) |
|
Evaluate the Testing Strategy |
|
|
347 | (1) |
|
|
348 | (2) |
|
Unit Testing: The First Line of Defense |
|
|
350 | (33) |
|
|
350 | (2) |
|
Lesson 1: Identifying Testing Scenarios |
|
|
352 | (13) |
|
Anatomy of a Unit Test Suite |
|
|
352 | (2) |
|
|
354 | (2) |
|
Test Scenarios and Use Cases |
|
|
356 | (4) |
|
Lab: Identifying Test Scenarios |
|
|
360 | (3) |
|
|
363 | (1) |
|
|
363 | (2) |
|
Lesson 2: Testing the Component Thoroughly |
|
|
365 | (14) |
|
|
365 | (2) |
|
|
367 | (4) |
|
|
371 | (3) |
|
Lab: Testing with Mock Objects |
|
|
374 | (3) |
|
|
377 | (1) |
|
|
377 | (2) |
|
|
379 | (1) |
|
|
379 | (1) |
|
|
379 | (1) |
|
|
380 | (1) |
|
|
380 | (1) |
|
|
381 | (2) |
|
Stabilizing the Application |
|
|
383 | (26) |
|
|
383 | (2) |
|
Lesson 1: The Code Review Process |
|
|
385 | (11) |
|
|
385 | (4) |
|
|
389 | (1) |
|
What Should a Review Look For? |
|
|
390 | (4) |
|
|
394 | (1) |
|
|
394 | (2) |
|
Lesson 2: Integration Testing |
|
|
396 | (10) |
|
Integration Testing Defined |
|
|
396 | (1) |
|
Steps in Integration Testing |
|
|
397 | (2) |
|
|
399 | (2) |
|
Lab: Identifying Dependent Assemblies |
|
|
401 | (3) |
|
|
404 | (1) |
|
|
404 | (2) |
|
|
406 | (1) |
|
|
406 | (1) |
|
|
406 | (1) |
|
|
407 | (1) |
|
Case Scenario 1: Determine the Code Review Requirements |
|
|
407 | (1) |
|
Case Scenario 2: Integration Testing for a Web Application |
|
|
407 | (1) |
|
|
408 | (1) |
|
|
408 | (1) |
|
Perform Integration Testing |
|
|
408 | (1) |
|
|
408 | (1) |
|
Evaluating Application Performance |
|
|
409 | (56) |
|
|
410 | (1) |
|
Lesson 1: Evaluating Application Performance |
|
|
411 | (7) |
|
Why Track Application Performance? |
|
|
411 | (4) |
|
Lab 1: Documenting Application Performance Metrics |
|
|
415 | (1) |
|
|
416 | (1) |
|
|
416 | (2) |
|
Lesson 2: Analyzing Monitoring Data |
|
|
418 | (25) |
|
|
418 | (12) |
|
|
430 | (6) |
|
Lab 2: Monitoring and Instrumentation |
|
|
436 | (5) |
|
|
441 | (1) |
|
|
441 | (2) |
|
Lesson 3: Evaluating the Deployment Plan |
|
|
443 | (10) |
|
What Is a Deployment Plan? |
|
|
443 | (3) |
|
Identifying Component Dependencies |
|
|
446 | (1) |
|
Identifying Scripting Requirements |
|
|
447 | (2) |
|
Lab 3: Creating a Setup Project |
|
|
449 | (2) |
|
|
451 | (1) |
|
|
451 | (2) |
|
Lesson 4: Understanding an Application Flow-Logic Diagram |
|
|
453 | (5) |
|
|
453 | (1) |
|
Application Flow-Logic Diagrams |
|
|
454 | (1) |
|
Identifying Component Complexity |
|
|
455 | (1) |
|
|
456 | (1) |
|
|
456 | (2) |
|
Lesson 5: Validating the Production Configuration Environment |
|
|
458 | (4) |
|
Validate a Deployed Application |
|
|
458 | (2) |
|
|
460 | (1) |
|
|
460 | (1) |
|
|
460 | (2) |
|
|
462 | (1) |
|
|
462 | (1) |
|
|
463 | (1) |
|
|
463 | (1) |
|
|
464 | (1) |
|
Deploy and Monitor an Application |
|
|
464 | (1) |
|
|
464 | (1) |
Answers |
|
465 | (36) |
Glossary |
|
501 | (6) |
Index |
|
507 | |