<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>J.D. Meier's Blog : Performance</title><link>http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx</link><description>Tags: Performance</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Performance Hot Spots</title><link>http://blogs.msdn.com/jmeier/archive/2009/04/13/performance-hot-spots.aspx</link><pubDate>Mon, 13 Apr 2009 08:56:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9546725</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9546725.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9546725</wfw:commentRss><description>&lt;p&gt;I wrote a post about &lt;a href="http://shapingsoftware.com/2009/04/13/performance-hot-spots/" target="_blank"&gt;Performance Hot Spots&lt;/a&gt; on &lt;a href="http://shapingsoftware.com/" target="_blank"&gt;Shaping Software&lt;/a&gt;.&amp;#160; This is a follow up to my post on &lt;a href="http://shapingsoftware.com/2009/03/09/security-hot-spots/" target="_blank"&gt;Security Hot Spots&lt;/a&gt;.&amp;#160; Hot spots are a way to turn &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle" target="_blank"&gt;Pareto's principle&lt;/a&gt; (the 80/20 rule) into action.&amp;#160; By focusing on hot spots, you find the levers in the system that produce the greatest results.&amp;#160; You can also use the Performance Hot Spots to help you find and share principles, patterns, and practices for performance.&amp;#160; Read my post to find the what, why and how of &lt;a href="http://shapingsoftware.com/2009/04/13/performance-hot-spots/" target="_blank"&gt;Performance Hot Spots&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9546725" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category></item><item><title>patterns &amp; practices Performance Engineering Cheat Sheet</title><link>http://blogs.msdn.com/jmeier/archive/2008/11/20/patterns-practices-performance-engineering-cheat-sheet.aspx</link><pubDate>Thu, 20 Nov 2008 22:18:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9130074</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9130074.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9130074</wfw:commentRss><description>&lt;p&gt;We posted our &lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Cheat%20Sheet%20-%20patterns%20%26%20practices%20Performance%20Engineering&amp;amp;referringTitle=Home"&gt;patterns &amp;amp; practices Performance Engineering Cheat Sheet&lt;/a&gt; to our &lt;a href="http://www.codeplex.com/AppArch" target="_blank"&gt;Application Architecture Knowledge Base&lt;/a&gt; on CodePlex.&amp;#160;&amp;#160; It’s a bird’s-eye view of applying our performance techniques to the life cycle.&amp;#160; The techniques and approach shipped with VSTS/MSF Agile starting in 2005.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Performance Engineering Overlay&lt;/strong&gt;    &lt;br /&gt;Here’s a view that overlays our key performance techniques alongside common software engineering activities:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesPerformanceEngineeringC_9EFE/PerfEngineering.png"&gt;&lt;img title="PerfEngineering" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="297" alt="PerfEngineering" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesPerformanceEngineeringC_9EFE/PerfEngineering_thumb.png" width="385" border="0" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key Activities in the Life Cycle&lt;/strong&gt;    &lt;br /&gt;The core activities you should consider performing include the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Performance Objectives. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Budgeting.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Modeling. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Design Guidelines. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Design Inspections. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Code Inspections. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Testing. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Health Metrics. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Performance Deployment Inspections. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Capacity Planning.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can read more about these techniques and how to apply them to your software architecture and your software development life cycle on our &lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Cheat%20Sheet%20-%20patterns%20%26%20practices%20Performance%20Engineering&amp;amp;referringTitle=Home" target="_blank"&gt;Cheat Sheet – patterns &amp;amp; practices Performance Engineering&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Additional Resources&lt;/strong&gt;    &lt;br /&gt;You can find more information on performance engineering at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Performance_Engineering" target="_blank"&gt;Performance Engineering&lt;/a&gt; (GuidanceShare)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998537.aspx" target="_blank"&gt;patterns &amp;amp; practices Performance Modeling&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx" target="_blank"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/06/agile-architecture-method.aspx"&gt;Agile Architecture Method&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/18/new-release-patterns-practices-app-arch-guide-2-0-beta-2.aspx"&gt;New Release: patterns &amp;amp; practices App Arch Guide 2.0 Beta 2&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/20/microsoft-presentation-data-access-workflow-and-integration-technology-cheat-sheets.aspx"&gt;Microsoft Presentation, Data Access, Workflow and Integration Technology Cheat Sheets&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9130074" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/AppArch/default.aspx">AppArch</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Releases/default.aspx">Releases</category></item><item><title>patterns &amp; practices Performance Engineering</title><link>http://blogs.msdn.com/jmeier/archive/2008/09/16/patterns-practices-performance-engineering.aspx</link><pubDate>Tue, 16 Sep 2008 07:49:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8953464</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8953464.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8953464</wfw:commentRss><description>&lt;p&gt;As part of our &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/02/patterns-practices-app-arch-guide-2-0-project.aspx"&gt;patterns &amp;amp; practices App Arch Guide 2.0 project&lt;/a&gt;, we're consolidating our information on our patterns &amp;amp; practices Performance Engineering.&amp;#160; Our performance engineering approach is simply a collection of performance-focused techniques that we found to be effective for meeting your performance objectives.&amp;#160; One of the keys to the effectiveness is our performance frame.&amp;#160;&amp;#160; Our performance frame is a collection of &amp;quot;hot spots&amp;quot; that organize principles, patterns, and practices, as well as anti-patterns.&amp;#160; We use the frame to perform effective performance design and code inspections.&amp;#160; Here's a preview of our cheat sheet so far.&amp;#160; You'll notice a lot of similarity with our &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/09/patterns-practices-security-engineering.aspx"&gt;patterns &amp;amp; practices Security Engineering&lt;/a&gt;.&amp;#160; It's by design so that you can use a consistent approach for handling both security and performance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Performance Overlay&lt;/strong&gt;     &lt;br /&gt;This is our patterns &amp;amp; practices Performance Overlay:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesPerformanceEngineering_132C9/PerformanceEngineering_2.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="300" alt="PerformanceEngineering" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesPerformanceEngineering_132C9/PerformanceEngineering_thumb.gif" width="391" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key Activities in the Life Cycle&lt;/strong&gt;     &lt;br /&gt;This Performance Engineering approach extends these proven core activities to create performance specific activities.&amp;#160; These include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Performance Objectives&lt;/strong&gt;. Setting objectives helps you scope and prioritize your work by setting boundaries and constraints. Setting performance objectives helps you identify where to start, how to proceed, and when your application meets your performance goals. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Budgeting&lt;/strong&gt;. Budget represents your constraints and enables you to specify how much you can spend (resource-wise) and how you plan to spend it. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Modeling&lt;/strong&gt;. Performance modeling is an engineering technique that provides a structured and repeatable approach to meeting your performance objectives. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Design Guidelines&lt;/strong&gt;. Applying design guidelines, patterns and principles which enable you to engineer for performance from an early stage. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Design Inspections&lt;/strong&gt;. Performance design inspections are an effective way to identify problems in your application design. By using pattern-based categories and a question-driven approach, you simplify evaluating your design against root cause performance issues. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Code Inspections&lt;/strong&gt;. Many performance defects are found during code reviews. Analyzing code for performance defects includes knowing what to look for and how to look for it. Performance code inspections to identify inefficient coding practices that could lead to performance bottlenecks. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Testing&lt;/strong&gt;. Load and stress testing is used to generate metrics and to verify application behavior and performance under normal and peak load conditions. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Tuning&lt;/strong&gt;.&amp;#160; Performance tuning is an iterative process that you use to identify and eliminate bottlenecks until your application meets its performance objectives. You start by establishing a baseline. Then you collect data, analyze the results, and make configuration changes based on the analysis. After each set of changes, you retest and measure to verify that your application has moved closer to its performance objectives. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Health Metrics&lt;/strong&gt;.&amp;#160;&amp;#160; Identity the measures, measurements, and criteria for evaluating the health of your application from a performance perspective.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Performance Deployment Inspections&lt;/strong&gt;. During the deployment phase, you validate your model by using production metrics. You can validate workload estimates, resource utilization levels, response time, and throughput. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Capacity Planning&lt;/strong&gt;. You should continue to measure and monitor when your application is deployed in the production environment. Changes that may affect system performance include increased user loads, deployment of new applications on shared infrastructure, system software revisions, and updates to your application to provide enhanced or new functionality. Use your performance metrics to guide your capacity and scaling plans. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Performance Frames&lt;/strong&gt;     &lt;br /&gt;Performance Frames define a set of patterns-based categories that can organize repeatable problems and solutions. You can use these categories to divide your application architecture for further analysis and to help identify application performance issues. The categories within the frame represent the critical areas where mistakes are most often made.&lt;/p&gt;  &lt;table border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;Category&lt;/th&gt;        &lt;th&gt;Description&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Caching&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;What and where to cache? Caching refers to how your applications caches data. The main points to be considered are Per user, application-wide, data volatility.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Communication&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to communicate between layers? Communication refers to choices for transport mechanism, boundaries, remote interface design, round trips, serialization, and bandwidth.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Concurrency&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to handle concurrent user interactions? Concurrency refers to choices for Transaction, locks, threading, and queuing.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Coupling / Cohesion&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to structure your application? Coupling and Cohesion refers structuring choices leading to loose coupling, high cohesion among components and layers.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Data Access&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to access data? Data Access refers to choices and approaches for schema design, Paging, Hierarchies, Indexes, Amount of data, and Round trips.&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Data Structures / Algorithms&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to handle data? Data Structures and Algorithm refers to choice of algorithms; Arrays vs. collections.&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Exception Management&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to handle exceptions? Exceptions management refers to choices / approach for catching, throwing, exceptions.&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Resource Management&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to manage resources? Resource Management refers to approach for allocating, creating, destroying, and pooling of application resource&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;State Management&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;What and where to maintain state? State management refres to how your application maintains state. The main points to consider are Per user, application-wide, persistence, and location.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;Architecture and Design Issues&lt;/strong&gt;     &lt;br /&gt;Use the diagram below to help you think about performance-related architecture and design issues in your application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesPerformanceEngineering_132C9/PerformanceIssues_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="300" alt="PerformanceIssues" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/patternspracticesPerformanceEngineering_132C9/PerformanceIssues_thumb.png" width="452" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The key areas of concern for each application tier are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Browser&lt;/strong&gt;.&amp;#160; Blocked or unresponsive UI. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Web Server&lt;/strong&gt;.&amp;#160; Using state affinity.&amp;#160; Wrong data types.&amp;#160; Fetching per request instead of caching.&amp;#160; Poor resource management. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Application Server&lt;/strong&gt;.&amp;#160; Blocking operations.&amp;#160; Inappropriate choice of data structures and algorithms.&amp;#160; Not pooling database connections. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Database Server.&lt;/strong&gt;&amp;#160; Chatty instead of batch processing.&amp;#160; Contention, isolation levels, locking and deadlock. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Design Process Principles      &lt;br /&gt;&lt;/strong&gt;Consider the following principles to enhance your design process: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Set objective goals&lt;/strong&gt;. Avoid ambiguous or incomplete goals that cannot be measured such as &amp;quot;the application must run fast&amp;quot; or &amp;quot;the application must load quickly.&amp;quot; You need to know the performance and scalability goals of your application so that you can (a) design to meet them, and (b) plan your tests around them. Make sure that your goals are measurable and verifiable. Requirements to consider for your performance objectives include response times, throughput, resource utilization, and workload. For example, how long should a particular request take? How many users does your application need to support? What is the peak load the application must handle? How many transactions per second must it support? You must also consider resource utilization thresholds. How much CPU, memory, network I/O, and disk I/O is it acceptable for your application to consume? &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Validate your architecture and design early&lt;/strong&gt;. Identify, prototype, and validate your key design choices up front. Beginning with the end in mind, your goal is to evaluate whether your application architecture can support your performance goals. Some of the important decisions to validate up front include deployment topology, load balancing, network bandwidth, authentication and authorization strategies, exception management, instrumentation, database design, data access strategies, state management, and caching. Be prepared to cut features and functionality or rework areas that do not meet your performance goals. Know the cost of specific design choices and features. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Cut the deadwood&lt;/strong&gt;. Often the greatest gains come from finding whole sections of work that can be removed because they are unnecessary. This often occurs when (well-tuned) functions are composed to perform some greater operation. It is often the case that many interim results from the first function in your system do not end up getting used if they are destined for the second and subsequent functions. Elimination of these &amp;quot;waste&amp;quot; paths can yield tremendous end-to-end improvements. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Tune end-to-end performance&lt;/strong&gt;. Optimizing a single feature could take away resources from another feature and hinder overall performance. Likewise, a single bottleneck in a subsystem within your application can affect overall application performance regardless of how well the other subsystems are tuned. You obtain the most benefit from performance testing when you tune end-to-end, rather than spending considerable time and money on tuning one particular subsystem. Identify bottlenecks, and then tune specific parts of your application. Often performance work moves from one bottleneck to the next bottleneck. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Measure throughout the life cycle&lt;/strong&gt;. You need to know whether your application's performance is moving toward or away from your performance objectives. Performance tuning is an iterative process of continuous improvement with hopefully steady gains, punctuated by unplanned losses, until you meet your objectives. Measure your application's performance against your performance objectives throughout the development life cycle and make sure that performance is a core component of that life cycle. Unit test the performance of specific pieces of code and verify that the code meets the defined performance objectives before moving on to integrated performance testing.&amp;#160; When your application is in production, continue to measure its performance. Factors such as the number of users, usage patterns, and data volumes change over time. New applications may start to compete for shared resources. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Design Guidelines&lt;/strong&gt;     &lt;br /&gt;This table represents a set of secure design guidelines for application architects. Use this as a starting point for performance design and to improve performance design inspections.&lt;/p&gt;  &lt;table border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;Category&lt;/th&gt;        &lt;th&gt;Description&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Caching&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;Decide where to cache data. Decide what data to cache. Decide the expiration policy and scavenging mechanism. Decide how to load the cache data. Avoid distributed coherent caches.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Communication&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;Choose the appropriate remote communication mechanism. Design chunky interfaces. Consider how to pass data between layers. Minimize the amount of data sent across the wire. Batch work to reduce calls over the network. Reduce transitions across boundaries. Consider asynchronous communication. Consider message queuing. Consider a &amp;quot;fire and forget&amp;quot; invocation model.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Concurrency&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;Design for loose coupling. Design for high cohesion. Partition application functionality into logical layers. Use early binding where possible. Evaluate resource affinity.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Coupling / Cohesion&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to structure your application? Coupling and Cohesion refers structuring choices leading to loose coupling, high cohesion among components and layers.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Data Structures / Algorithms&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;Choose an appropriate data structure. Pre-assign size for large dynamic growth data types. Use value and reference types appropriately.&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Resource Management&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;Treat threads as a shared resource. Pool shared or scarce resources. Acquire late, release early. Consider efficient object creation and destruction. Consider resource throttling.&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;Resource Management&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;How to manage resources? Resource Management refers to approach for allocating, creating, destroying, and pooling of application resource&lt;/td&gt;     &lt;/tr&gt; &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;em&gt;State Management&lt;/em&gt;&lt;/td&gt;        &lt;td&gt;Evaluate stateful versus stateless design. Consider your state store options. Minimize session data. Free session resources as soon as possible. Avoid accessing session variables from business logic.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Additional Resources&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998541.aspx" target="_blank"&gt;Performance Design Guidelines&lt;/a&gt; (MSDN)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998537.aspx" target="_blank"&gt;Performance Modeling&lt;/a&gt; (MSDN)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998544.aspx" target="_blank"&gt;Performance Design Inspection&lt;/a&gt; (MSDN)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx" target="_blank"&gt;Performance Testing Guidance for Web Applications&lt;/a&gt; (MSDN)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/02/patterns-practices-app-arch-guide-2-0-project.aspx"&gt;patterns &amp;amp; practices App Arch Guide 2.0 Project&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/09/patterns-practices-security-engineering.aspx"&gt;patterns &amp;amp; practices Security Engineering&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/03/app-arch-meta-frame.aspx"&gt;App Arch Meta-Frame&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/06/layers-and-tiers.aspx"&gt;Layers and Tiers&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/07/layers-and-components.aspx"&gt;Layers and Components&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/07/services-layer.aspx"&gt;Services Layer&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/04/scenario-frames-for-presentation-business-data-and-services.aspx"&gt;Scenario Frames for Presentation, Business, Data and Services&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/08/the-architecture-journal.aspx"&gt;The Architecture Journal&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8953464" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/AppArch/default.aspx">AppArch</category></item><item><title>Performance Techniques, Building Codes, and Approach</title><link>http://blogs.msdn.com/jmeier/archive/2008/01/14/performance-techniques-building-codes-and-approach.aspx</link><pubDate>Mon, 14 Jan 2008 19:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7109085</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/7109085.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=7109085</wfw:commentRss><description>&lt;P&gt;When you improve the performance of a system, I find it's helpful to think in terms of the techniques you use, the "building codes" you follow, and the overall life cycle approach you use.&amp;nbsp; While there's a lot to know about performance engineering, here's the keys that I've found useful working with customers and experts over the years: 
&lt;P&gt;&lt;STRONG&gt;Key Techniques&lt;/STRONG&gt;&lt;BR&gt;Techniques are specific methods for producing a result:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.guidanceshare.com/wiki/Performance_Modeling" target=_blank mce_href="http://www.guidanceshare.com/wiki/Performance_Modeling"&gt;Performance Modeling&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.guidanceshare.com/wiki/Web_Application_Performance_Design_Inspection_Questions" target=_blank mce_href="http://www.guidanceshare.com/wiki/Web_Application_Performance_Design_Inspection_Questions"&gt;Performance Design Inspection&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.guidanceshare.com/wiki/Performance_Inspections" target=_blank mce_href="http://www.guidanceshare.com/wiki/Performance_Inspections"&gt;Performance code Inspection&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;Performance Testing&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Building Codes&lt;BR&gt;&lt;/STRONG&gt;Think of "building codes" as the principles, patterns, and checklists for the structure:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.guidanceshare.com/wiki/Performance_Guidelines" target=_blank mce_href="http://www.guidanceshare.com/wiki/Performance_Guidelines"&gt;Performance Guidelines&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.guidanceshare.com/wiki/Performance_Checklists" target=_blank mce_href="http://www.guidanceshare.com/wiki/Performance_Checklists"&gt;Performance Checklists&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Approach&lt;BR&gt;&lt;/STRONG&gt;The approach is the methodology you use to orchestrate your efforts:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.guidanceshare.com/wiki/Performance_Engineering" target=_blank mce_href="http://www.guidanceshare.com/wiki/Performance_Engineering"&gt;Performance Engineering&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Key MSDN References&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;While there's certainly more to know, if you use the techniques, building codes, and approach above, you can start improving the performance of your applications immediately.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7109085" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Using Guidance Explorer from Outlook</title><link>http://blogs.msdn.com/jmeier/archive/2008/01/08/using-guidance-explorer-from-outlook.aspx</link><pubDate>Tue, 08 Jan 2008 20:15:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7030222</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/7030222.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=7030222</wfw:commentRss><description>&lt;p&gt;It looks like Alik Levin has some helpful posts on using &lt;a href="http://www.codeplex.com/GuidanceExplorer" target="_blank"&gt;Guidance Explorer&lt;/a&gt; from Outlook: &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/01/07/customize-guidance-explorer-inside-outlook-2007-find-tech-gold-nuggets-instantly.aspx" target="_blank"&gt;Customize Guidance Explorer Inside Outlook 2007 – Find Tech Gold Nuggets Instantly&lt;/a&gt; - how to configure Outlook for easier searches using built-in functionality. &lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/01/03/consume-patterns-practices-guidance-explorer-via-rss-using-outlook-2007.aspx" target="_blank"&gt;Consume patterns&amp;amp;practices Guidance Explorer Via RSS Using Outlook 2007&lt;/a&gt; - how to set up RSS feeds inside Outlook to read GE’s content. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Alik is a long time patterns &amp;amp; practices user.&amp;nbsp; He's intimately familiar with our security and performance bodies of guidance (BOG).&amp;nbsp;&amp;nbsp; He always surprises me with his ability to find every nugget among our vast collection (after all - we have a few thousand pages of patterns &amp;amp; practices security and performance guidance on MSDN.) &lt;/p&gt; &lt;p&gt;As an experienced security and performance consultant, Alik was already very efficient and effective with his customer delivery.&amp;nbsp; I think he was the first person I saw start using Guidance Explorer to build customized guidance for customers.&amp;nbsp; Now that he's taken GE to the next level with his Outlook integration, he's a security and performance machine!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7030222" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Explorer/default.aspx">Guidance Explorer</category></item><item><title>Guidance Share Sweep</title><link>http://blogs.msdn.com/jmeier/archive/2008/01/02/guidance-share-sweep.aspx</link><pubDate>Wed, 02 Jan 2008 18:48:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6956141</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6956141.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6956141</wfw:commentRss><description>&lt;p&gt;One of the most important things I did while I was on vacation was sweeping &lt;a href="http://www.GuidanceShare.com" target="_blank"&gt;Guidance Share&lt;/a&gt;.&amp;nbsp; Guidance Share is where I consolidate my body of software engineering guidance and test user experiences.&amp;nbsp; I redesigned the home page for simpler browsing and findability.&amp;nbsp; It was more pain than pleasure for me, but if it helps the broader community, that's my payback.  &lt;p&gt;Here's a highlight of Guidance Share:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Browsable nuggets for software performance and security  &lt;li&gt;Durable, evolvable frames for security and performance (think of these as maps)  &lt;li&gt;How Tos, Guidelines, Checklists and more &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Guidance Share gives me a unique vantage point that I haven't been able to get any other way.&amp;nbsp; The act of building it and evolving it helps me make gain new insights.&amp;nbsp; It also forces me to find ways to be extremely efficient.&amp;nbsp; I then try to carry these lessons over to MSDN and to help shape patterns &amp;amp; practices information models.&amp;nbsp; I don't own the MSDN experience, but I can give input.&amp;nbsp; Guidance Share helps me solidify my recommendations with living proof.&amp;nbsp; It's also let's me quickly experiment with new user experiences.  &lt;p&gt;My biggest lesson learned is how difficult it is to integrate information and make it useful, even when you own it.&amp;nbsp; It's one thing to have a snapshot of information that's useful for a given point in time; it's another to create a stable backdrop with a firm foundation that can evolve over time.&amp;nbsp; The key is factoring volatile from stable information, and enabling them to play well together.&lt;/p&gt; &lt;p&gt;Note that Guidance Share is under construction and there are some obviously empty areas, but it's a work in progress.&amp;nbsp; It's a living knowledge base for software engineering that I periodically sweep to share the best that I've learned.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6956141" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Software+Engineering/default.aspx">Software Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category></item><item><title>Now on Amazon: Performance Testing Guidance for Web Applications</title><link>http://blogs.msdn.com/jmeier/archive/2007/12/01/now-on-amazon-performance-testing-guidance-for-web-applications.aspx</link><pubDate>Sat, 01 Dec 2007 03:15:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6621336</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6621336.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6621336</wfw:commentRss><description>&lt;p&gt;Our &lt;a href="http://www.amazon.com/Performance-Testing-Guidance-Web-Applications/dp/0735625700/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196463760&amp;amp;sr=11-1" target="_blank"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications book&lt;/a&gt; is now available on Amazon.  &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.amazon.com/Performance-Testing-Guidance-Web-Applications/dp/0735625700/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196463760&amp;amp;sr=11-1" target="_blank"&gt;Buy the Book on Amazon&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" target="_blank"&gt;Download the PDF&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target="_blank"&gt;Browse the HTML&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6621336" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category></item><item><title>Videos: Security, Performance Testing, and Visual Studio Team System</title><link>http://blogs.msdn.com/jmeier/archive/2007/11/22/videos-security-performance-testing-and-visual-studio-team-system.aspx</link><pubDate>Thu, 22 Nov 2007 12:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6467957</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6467957.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6467957</wfw:commentRss><description>&lt;P&gt;We posted our &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671353.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671353.aspx"&gt;ASP.NET 2.0 security videos&lt;/A&gt;, &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671346.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671346.aspx"&gt;performance testing videos&lt;/A&gt;, and &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671361.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671361.aspx"&gt;Visual Studio Team System videos&lt;/A&gt; to the MSDN library.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Video Index&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671366.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671366.aspx"&gt;Video Index&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;ASP.NET 2.0 Security Videos&lt;BR&gt;&lt;/STRONG&gt;&lt;A class="" href="http://www.pluralsight.com/blogs/keith/" target=_blank mce_href="http://www.pluralsight.com/blogs/keith/"&gt;Keith Brown&lt;/A&gt; explains the mechanics behind some common input and data validation&amp;nbsp;security issues and how to address them.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671347.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671347.aspx"&gt;Explained – Canonicalization&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671348.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671348.aspx"&gt;Explained – Cookies&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671349.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671349.aspx"&gt;Explained – Cross-Site Scripting&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671350.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671350.aspx"&gt;Explained – Regular Expressions&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671351.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671351.aspx"&gt;Explained – SQL Injection&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671352.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671352.aspx"&gt;Explained – Validation Controls&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Testing Videos&lt;BR&gt;&lt;/STRONG&gt;&lt;A class="" href="http://www.perftestplus.com/scott_blog.php" target=_blank mce_href="http://www.perftestplus.com/scott_blog.php"&gt;Scott Barber&lt;/A&gt; explains&amp;nbsp;the big picture for how&amp;nbsp;to&amp;nbsp;approach performance testing as well as how to do workload modeling and performance reporting.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671340.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671340.aspx"&gt;Explained – The Core Activities of Performance Testing&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671338.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671338.aspx"&gt;Explained – The Core Activities of Performance Testing in Agile Project&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671339.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671339.aspx"&gt;Explained – The Core Activities of Performance Testing in CMMI Projects&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671342.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671342.aspx"&gt;Explained – The Modeling Application Usage for Performance Testing&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671344.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671344.aspx"&gt;Explained – The Success Criteria for Performance Test Projects&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671341.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671341.aspx"&gt;Explained – The Distribution of Data for Performance Tests Results&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671343.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671343.aspx"&gt;Explained – The Reporting Fundamentals for Performance Test Data&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671345.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671345.aspx"&gt;Explained – The Summary Statistics for Performance Testing&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Visual Studio Team System Videos&lt;BR&gt;&lt;/STRONG&gt;Our team takes you through key source control concepts in Team Foundation Server.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671356.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671356.aspx"&gt;Explained – What's New in TFS Source Control&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671354.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671354.aspx"&gt;Explained – Branching&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671360.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671360.aspx"&gt;Explained – Workspace&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671355.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671355.aspx"&gt;Explained – Shelving&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671358.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671358.aspx"&gt;How To – Migrate from VSS to TFS Source Control&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671359.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671359.aspx"&gt;How To – Setup Your Source Tree in TFS&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb671360.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb671360.aspx"&gt;How To – Structure Your ASP.NET Projects for TFS&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I hope we&amp;nbsp;produce more&amp;nbsp;videos in the coming months.&amp;nbsp; I particularly like factoring "explained" videos from the&amp;nbsp;"how to" videos and keeping the videos short and focused.&amp;nbsp; I think we have more work to do here, but I think we've learned key lessons each time we've done a batch of videos.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6467957" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Videos/default.aspx">Videos</category></item><item><title>Now on MSDN: patterns &amp; practices Performance Testing Guidance for Web Applications </title><link>http://blogs.msdn.com/jmeier/archive/2007/10/27/now-on-msdn-patterns-practices-performance-testing-guidance-for-web-applications.aspx</link><pubDate>Sat, 27 Oct 2007 09:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5704789</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/5704789.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=5704789</wfw:commentRss><description>&lt;P&gt;You can now find our &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications on MSDN&lt;/A&gt; in HTML.&amp;nbsp; It's the same guidance we hosted on CodePlex.&amp;nbsp; CodePlex was our channel for agile release of the guidance.&amp;nbsp; Once we baked the guidance, we ported it to MSDN.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Contents at a Glance&lt;/STRONG&gt;&lt;BR&gt;Here's the &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;Landing Page&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924355.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924355.aspx"&gt;Foreword By Alberto Savoia&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924373.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924373.aspx"&gt;Foreword By Rico Mariani&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924376.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924376.aspx"&gt;Introduction&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Chapters&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924356.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924356.aspx"&gt;Chapter 1 – Fundamentals of Web Application Performance Testing&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924357.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924357.aspx"&gt;Chapter 2 – Types of Performance Testing&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924358.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924358.aspx"&gt;Chapter 3 – Risks Addressed Through Performance Testing&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924359.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924359.aspx"&gt;Chapter 4 – Web Application Performance Testing Core Activities&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924360.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924360.aspx"&gt;Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924361.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924361.aspx"&gt;Chapter 6 – Managing an Agile Performance Test Cycle&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924362.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924362.aspx"&gt;Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924363.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924363.aspx"&gt;Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924364.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924364.aspx"&gt;Chapter 9 – Determining Performance Testing Objectives&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924368.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924368.aspx"&gt;Chapter 10 – Quantifying End-User Response Time Goals&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924366.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924366.aspx"&gt;Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924367.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924367.aspx"&gt;Chapter 12 – Modeling Application Usage&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924368.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924368.aspx"&gt;Chapter 13 – Determining Individual User Data and Variances&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924369.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924369.aspx"&gt;Chapter 14 – Test Execution&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924370.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924370.aspx"&gt;Chapter 15 – Key Mathematic Principles for Performance Testers&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924371.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924371.aspx"&gt;Chapter 16 – Performance Test Reporting Fundamentals&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924372.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924372.aspx"&gt;Chapter 17 – Load-Testing Web Applications&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924374.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924374.aspx"&gt;Chapter 18 – Stress-Testing Web Applications&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Download&lt;BR&gt;&lt;/STRONG&gt;You can &lt;A class="" href="http://www.codeplex.com/PerfTestingGuide" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide"&gt;download the patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/A&gt; from CodePlex.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Guidance Explorer Scenario&lt;/STRONG&gt;&lt;BR&gt;If you want to tailor the guidance for your scenario, you can &lt;A class="" href="http://www.codeplex.com/GuidanceExplorer" target=_blank mce_href="http://www.codeplex.com/GuidanceExplorer"&gt;download Guidance Explorer&lt;/A&gt; from CodePlex.&amp;nbsp; Using Guidance Explorer, you can create custom views by dragging and dropping the relevant guidance and then tailoring it as you see fit.&amp;nbsp; You can then save your view or an item to Word or HTML&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5704789" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/patterns+and+practices/default.aspx">patterns and practices</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category></item><item><title>Performance Testing Videos Posted to CodePlex</title><link>http://blogs.msdn.com/jmeier/archive/2007/10/27/performance-testing-videos-posted-to-codeplex.aspx</link><pubDate>Sat, 27 Oct 2007 08:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5703520</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/5703520.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=5703520</wfw:commentRss><description>&lt;P&gt;Today we posted our &lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%20Index"&gt;Performance Testing Videos&lt;/A&gt; to CodePlex.&amp;nbsp; They're a companion set for our &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Video Index&lt;BR&gt;&lt;/STRONG&gt;Here's a list of the videos:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Core%20Activities%20of%20Performance%20Testing&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Core%20Activities%20of%20Performance%20Testing&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Core Activities of Performance Testing&lt;/A&gt; (Length: 4:32 - Size: 3.02 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Core%20Activities%20of%20Performance%20Testing%20in%20Agile%20Projects&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Core%20Activities%20of%20Performance%20Testing%20in%20Agile%20Projects&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Core Activities of Performance Testing in Agile Projects&lt;/A&gt; (Length: 3:02 - Size: 2.38 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Core%20Activities%20of%20Performance%20Testing%20in%20CMMI%20Projects&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Core%20Activities%20of%20Performance%20Testing%20in%20CMMI%20Projects&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Core Activities of Performance Testing in CMMI Projects&lt;/A&gt; (Length: 2:55 - Size: 2.15 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Distributions%20of%20Data%20for%20Performance%20Tests%20Results&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Distributions%20of%20Data%20for%20Performance%20Tests%20Results&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Distributions of Data for Performance Tests Results&lt;/A&gt; (Length: 3:32 - Size: 2.39 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Reporting%20Fundamentals%20for%20Performance%20Test%20Data&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Reporting%20Fundamentals%20for%20Performance%20Test%20Data&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Reporting Fundamentals for Performance Test Data&lt;/A&gt; (Length: 1:58 - Size: 1.45 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Success%20Criteria%20for%20Performance%20Test%20Projects&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Success%20Criteria%20for%20Performance%20Test%20Projects&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Success Criteria for Performance Test Projects&lt;/A&gt; (Length: 2:12 - Size: 1.49 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Mathematical%20and%20Statistical%20Principles%20for%20Performance%20Testing&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Mathematical%20and%20Statistical%20Principles%20for%20Performance%20Testing&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Mathematical and Statistical Principles for Performance Testing&lt;/A&gt; (Length: 2:47 - Size: 1.83 MB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Modeling%20Application%20Usage%20for%20Performance%20Testing&amp;amp;referringTitle=Video%20Index" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=Video%3a%20%20What%20Is%20-%20The%20Modeling%20Application%20Usage%20for%20Performance%20Testing&amp;amp;referringTitle=Video%20Index"&gt;Video: What Is - The Modeling Application Usage for Performance Testing&lt;/A&gt; (Length: 2:25 - Size: 1.70 MB) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Additional Resources&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting" target=_blank mce_href="http://www.codeplex.com/PerfTesting"&gt;patterns &amp;amp; practices Performance Testing Guidance&lt;/A&gt; (Online KB)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTestingGuide" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/A&gt; (Guide)&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5703520" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Videos/default.aspx">Videos</category></item><item><title>Scenarios in Practice</title><link>http://blogs.msdn.com/jmeier/archive/2007/10/15/why-scenario-driven-engineering.aspx</link><pubDate>Mon, 15 Oct 2007 05:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5456490</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/5456490.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=5456490</wfw:commentRss><description>&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx"&gt;Scenarios&lt;/A&gt; are a practical way to organize and focus your product design, development and release.&amp;nbsp;&amp;nbsp; (We use scenario-driven engineering in patterns &amp;amp; practices)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Benefits&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Business value&lt;/STRONG&gt;.&amp;nbsp; You can&amp;nbsp; use scenarios to evaluate business value.&amp;nbsp;&amp;nbsp; What pain does that scenario address? ...&amp;nbsp;What opportunity does it create? ... etc.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Chunking and prioritizing&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios to chunk up and prioritize your product.&amp;nbsp; You can think of versioning in terms of releasing incremental value&amp;nbsp;or scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Effective design.&lt;/STRONG&gt;&amp;nbsp; Walking through a set of customers scenarios and "what ifs" will help you figure out your product's most effective design.&amp;nbsp; It's not a silver-bullet, but it does help make requirements more concrete, or at least put them in perspective.&amp;nbsp; It also opens the door to more precise questions about user experience or engineering challenges.. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Focal point for perspectives&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios as a focal point for user experience, business and tech perspectives.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Requirements in context&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios to put requirements in context.&amp;nbsp; A requirement makes a lot more sense when you see it in action.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Architectural trade-offs&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios to evaluate and make architectural trade-offs.&amp;nbsp; You can't evaluate an architecture in a vacuum; you can evaluate against concrete scenarios.&amp;nbsp; There's several flavors of scenario-based evaluations you can leverage.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Customer value&lt;/STRONG&gt;.&amp;nbsp; Your customers can appreciate how well you did (or didn't) address their scenario.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tests for success&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios as tests for success.&amp;nbsp; By measuring customer effectiveness against specific scenarios, you have a way to focus your improvements.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Chunking Up a Project Using Scenarios&lt;/STRONG&gt;&lt;BR&gt;If you think of your product as helping a user accomplish a goal, it helps cut through the fog. You can think of your product in terms of a list of user goals, business goals and technical goals.&amp;nbsp; What's the minimum set of tasks your user needs to perform with your product?&amp;nbsp; That's your baseline release.&amp;nbsp; What's the incremental value from there?&amp;nbsp; That's how you start to shape your versions and releases.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;User Experience, Business and Technical Perspectives&lt;BR&gt;&lt;/STRONG&gt;Using scenarios is a good forcing function to bring together the user experience, business, and technical perspectives.&amp;nbsp; For the sake of example, let's say your scenario is "User views the product catalog."&amp;nbsp; From the user experience perspective, you're thinking in terms of "show me a relevant list" and "don't make me wait,"&amp;nbsp; From a business perspective, you're thinking in terms of "support a given number of orders per hour" and "lower the total cost of ownership."&amp;nbsp; From a technical standpoint, you're thinking in terms of "requests per second," "minimize resource utilization," ... etc.&amp;nbsp; Well, no wonder getting software right is tough!&amp;nbsp; Luckily, scenarios help you bring together and rationalize the perspectives against a common frame of reference.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Constraints Make More Sense In Context&lt;/STRONG&gt;&lt;BR&gt;Constraints are boundaries to operate within, or what the solution must or must not do.&amp;nbsp; In software,&amp;nbsp;I see a lot of generic constraints passed down as policies.&amp;nbsp; When policy meets scenario, you now have a way to evaluate the effectiveness of that constraint.&amp;nbsp; You can also measure whether that scenario is actually meeting the constraint.&amp;nbsp; You can perform scenario-based testing against a set of scenarios with specific constraints.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Walking the Scenarios&lt;BR&gt;&lt;/STRONG&gt;Have you ever been sold on a great set of features, only to fall flat when you try to actually do something useful?&amp;nbsp; Obviously, that's the extreme case, but it happens to me.&amp;nbsp; It happens less now because whenever I go to buy something, I walk my usage scenarios.&amp;nbsp; Doing a dry run against a scenario is very revealing.&amp;nbsp;&amp;nbsp; This approach works great on the engineering side too.&amp;nbsp; It's one thing to have generic technical requirements for security or performance.&amp;nbsp; It's another to evaluate a scenario and make appropriate and relevant trade-offs from a user, business and technical perspective.&amp;nbsp; Suddenly, generic technical requirements no longer seem as helpful, do they?&amp;nbsp; They still have their place, but when you're engineering your job is to make the right trade-offs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenarios and Solutions&lt;/STRONG&gt;&lt;BR&gt;Given part of my job is to improve customer effectiveness on our platform, I regularly use scenarios as a backdrop for evaluation.&amp;nbsp; As I've gotten more effective, I noticed&amp;nbsp;shifting from&amp;nbsp;features and components to scenarios and solutions is&amp;nbsp;the key.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;More Information&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://www.sei.cmu.edu/architecture/scenario_paper/" target=_blank mce_href="http://www.sei.cmu.edu/architecture/scenario_paper/"&gt;SEI - Scenario-Based Analysis of Software Architecture&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=How%20To%3a%20Consolidate%20Various%20Types%20of%20Performance%20Requirements%20and%20Testing%20Objectives&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=How%20To%3a%20Consolidate%20Various%20Types%20of%20Performance%20Requirements%20and%20Testing%20Objectives&amp;amp;referringTitle=Home"&gt;How To: Consolidate Various Types of Performance Acceptance Criteria&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx"&gt;What's a Scenario?&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx" mce_href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx"&gt;Scenario Frame Example&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5456490" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Innovation/default.aspx">Innovation</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Project+Management/default.aspx">Project Management</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Software+Engineering/default.aspx">Software Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Effectiveness/default.aspx">Effectiveness</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category></item><item><title>New Release:  patterns &amp; practices Performance Testing Guidance for Web Applications</title><link>http://blogs.msdn.com/jmeier/archive/2007/08/29/new-release-patterns-practices-performance-testing-guidance-for-web-applications.aspx</link><pubDate>Wed, 29 Aug 2007 22:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4633125</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/4633125.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=4633125</wfw:commentRss><description>&lt;P&gt;We released the final version of our&amp;nbsp;&lt;A class="" href="http://www.codeplex.com/PerfTestingGuide" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/A&gt;.&amp;nbsp; This guide&amp;nbsp;provides an end-to-end approach for implementing performance testing. Whether you're new to performance testing or looking for ways to improve your current performance-testing approach, you will gain insights that you can tailor to your specific scenarios.&amp;nbsp; The main purpose of the guide is to be&amp;nbsp;a relatively stable&amp;nbsp;backdrop to&amp;nbsp;capture, consolidate and share a methodology for performance testing.&amp;nbsp; Even though the topics addressed apply to other types of applications, we focused on explaining from a Web application perspective to maintain consistency and to be relevant to the majority of our anticipated readers.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690"&gt;Download the guide&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTestingGuide" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide"&gt;Read the guide online&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Key Changes Since Beta 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added forewords by &lt;A class="" href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Alberto%20Savoia&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Alberto%20Savoia&amp;amp;referringTitle=Home"&gt;Alberto Savoia&lt;/A&gt; and &lt;A class="" href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Rico%20Mariani&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Rico%20Mariani&amp;amp;referringTitle=Home"&gt;Rico Mariani&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Integrated more feedback and insights from customer reviews (particularly chapters 1-4, 9, 14, 18)&lt;/LI&gt;
&lt;LI&gt;Integrated learnings from our Engineering Excellence team.&lt;/LI&gt;
&lt;LI&gt;Refactored and revamped the performance testing types.&lt;/LI&gt;
&lt;LI&gt;Revamped and improved the test execution chapter.&lt;/LI&gt;
&lt;LI&gt;Revamped and improved the reporting chapter. &lt;/LI&gt;
&lt;LI&gt;Revamped the stress testing chapter.&lt;/LI&gt;
&lt;LI&gt;Released the guide in HTML pages on our CodePlex Wiki.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Highlights&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Learn the core activities of performance testing.&lt;/LI&gt;
&lt;LI&gt;Learn the values and benefits associated with each type of performance testing.&lt;/LI&gt;
&lt;LI&gt;Learn how to map performance testing to agile&lt;/LI&gt;
&lt;LI&gt;Learn how to map performance testing to CMMI&lt;/LI&gt;
&lt;LI&gt;Learn how to identify and capture performance requirements and testing objectives based on the perspectives of system users, business owners of the system, and the project team, in addition to compliance expectations and technological considerations.&lt;/LI&gt;
&lt;LI&gt;Learn how to apply principles of effective reporting to performance test data.&lt;/LI&gt;
&lt;LI&gt;Learn how to construct realistic workload models for Web applications based on expectations, documentation, observation, log files, and other data available prior to the release of the application to production.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Why We Wrote the Guide&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;To consolidate real-world lessons learned around performance testing.&lt;/LI&gt;
&lt;LI&gt;To present a roadmap for end-to-end performance testing.&lt;/LI&gt;
&lt;LI&gt;To narrow the gap between state of the art and state of the practice.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Scope&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Managing and conducting performance testing in both dynamic (e.g., Agile) and structured (e.g., CMMI) environments.&lt;/LI&gt;
&lt;LI&gt;Performance testing, including load testing, stress testing, and other types of performance related testing.&lt;/LI&gt;
&lt;LI&gt;Core activities of performance testing: identifying objectives, designing tests, executing tests, analyzing results, and reporting.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Features of the Guide&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Approach for performance testing.&amp;nbsp; The guide provides an approach that organizes performance testing into logical units to help you incrementally adopt performance testing throughout your application life cycle. &lt;/LI&gt;
&lt;LI&gt;Principles and practices.&amp;nbsp; These serve as the foundation for the guide and provide a stable basis for recommendations. They also reflect successful approaches used in the field. &lt;/LI&gt;
&lt;LI&gt;Processes and methodologies.&amp;nbsp; These provide steps for managing and conducting performance testing. For simplification and tangible results, they are broken down into activities with inputs, outputs, and steps. You can use the steps as a baseline or to help you evolve your own process. &lt;/LI&gt;
&lt;LI&gt;Life cycle approach.&amp;nbsp; The guide provides end-to-end guidance on managing performance testing throughout your application life cycle, to reduce risk and lower total cost of ownership (TCO).&lt;/LI&gt;
&lt;LI&gt;Modular.&amp;nbsp; Each chapter within the guide is designed to be read independently. You do not need to read the guide from beginning to end to benefit from it. Use the parts you need. &lt;/LI&gt;
&lt;LI&gt;Holistic.&amp;nbsp; The guide is designed with the end in mind. If you do read the guide from beginning to end, it is organized to fit together in a comprehensive way. The guide, in its entirety, is better than the sum of its parts. &lt;/LI&gt;
&lt;LI&gt;Subject matter expertise.&amp;nbsp; The guide exposes insight from various experts throughout Microsoft and from customers in the field. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Parts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Part 1, Introduction to Performance Testing&lt;/LI&gt;
&lt;LI&gt;Part II, Exemplar Performance Testing Approaches&lt;/LI&gt;
&lt;LI&gt;Part III, Identify the Test Environment&lt;/LI&gt;
&lt;LI&gt;Part IV, Identify Performance Acceptance Criteria&lt;/LI&gt;
&lt;LI&gt;Part V, Plan and Design Tests&lt;/LI&gt;
&lt;LI&gt;Part VI, Execute Tests&lt;/LI&gt;
&lt;LI&gt;Part VII, Analyze Results and Report&lt;/LI&gt;
&lt;LI&gt;Part VIII, Performance-Testing Techniques&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Chapters&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Chapter 1 – Fundamentals of Web Application Performance Testing&lt;/LI&gt;
&lt;LI&gt;Chapter 2 – Types of Performance Testing&lt;/LI&gt;
&lt;LI&gt;Chapter 3 – Risks Addressed Through Performance Testing&lt;/LI&gt;
&lt;LI&gt;Chapter 4 – Web Application Performance Testing Core Activities&lt;/LI&gt;
&lt;LI&gt;Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process&lt;/LI&gt;
&lt;LI&gt;Chapter 6 – Managing an Agile Performance Test Cycle&lt;/LI&gt;
&lt;LI&gt;Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment&lt;/LI&gt;
&lt;LI&gt;Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness&lt;/LI&gt;
&lt;LI&gt;Chapter 9 – Determining Performance Testing Objectives&lt;/LI&gt;
&lt;LI&gt;Chapter 10 – Quantifying End-User Response Time Goals&lt;/LI&gt;
&lt;LI&gt;Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria&lt;/LI&gt;
&lt;LI&gt;Chapter 12 – Modeling Application Usage&lt;/LI&gt;
&lt;LI&gt;Chapter 13 – Determining Individual User Data and Variances&lt;/LI&gt;
&lt;LI&gt;Chapter 14 – Test Execution&lt;/LI&gt;
&lt;LI&gt;Chapter 15 – Key Mathematic Principles for Performance Testers&lt;/LI&gt;
&lt;LI&gt;Chapter 16 – Performance Test Reporting Fundamentals&lt;/LI&gt;
&lt;LI&gt;Chapter 17 – Load-Testing Web Applications&lt;/LI&gt;
&lt;LI&gt;Chapter 18 – Stress-Testing Web Applications&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Our Team&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Carlos Farre&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://prashantbansode.blogspot.com/" target=_blank mce_href="http://prashantbansode.blogspot.com/"&gt;Prashant Bansode&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.perftestplus.com/scott_blog.php" target=_blank mce_href="http://www.perftestplus.com/scott_blog.php"&gt;Scott Barber&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Dennis Rea&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Contributors and Reviewers&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;External Contributors and Reviewers&lt;/STRONG&gt;: Alberto Savoia; Ben Simo; Cem Kaner; Chris Loosley; Corey Goldberg; Dawn Haynes; Derek Mead; Karen N. Johnson; Mike Bonar; Pradeep Soundararajan; Richard Leeke; Roland Stens; Ross Collard; Steven Woody&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Contributors / Reviewers&lt;/STRONG&gt;: Alan Ridlehoover; Clint Huffman; Edmund Wong; Ken Perilman; Larry Brader; Mark Tomlinson; Paul Williams; Pete Coupland; Rico Mariani&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2007/02/12/patterns-practices-performance-testing-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/12/patterns-practices-performance-testing-guidance.aspx"&gt;patterns and practices Performance Testing Guidance&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2007/05/25/performance-testing-guide-beta-1-is-available.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/05/25/performance-testing-guide-beta-1-is-available.aspx"&gt;Performance Testing Guide Beta 1 is Available&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4633125" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Performance Threats</title><link>http://blogs.msdn.com/jmeier/archive/2007/08/28/performance-threats.aspx</link><pubDate>Tue, 28 Aug 2007 11:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4607346</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/4607346.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=4607346</wfw:commentRss><description>&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/ricom" target=_blank mce_href="http://blogs.msdn.com/ricom"&gt;Rico&lt;/A&gt; and I have long talked about &lt;A class="" href="http://blogs.msdn.com/jmeier/pages/performance-frame-v2.aspx" mce_href="http://blogs.msdn.com/jmeier/pages/performance-frame-v2.aspx"&gt;performance threats&lt;/A&gt;.&amp;nbsp; I finally created a view that shows how you can think of performance issues in terms of vulnerabilities, threats and countermeasures.&amp;nbsp; See &lt;A class="" href="http://blogs.msdn.com/jmeier/pages/performance-frame-v2.aspx" mce_href="http://blogs.msdn.com/jmeier/pages/performance-frame-v2.aspx"&gt;Performance Frame v2&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In this case, the vulnerabilities, threats and countermeasures&amp;nbsp;are purely from a technical design standpoint.&amp;nbsp; To rationalize performance against other quality attributes and against goals and constraints, you can use &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms998537.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998537.aspx"&gt;performance modeling&lt;/A&gt; and &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms978516.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms978516.aspx"&gt;threat modeling&lt;/A&gt;.&amp;nbsp; To put it another way, evaluate your design trade-offs against the acceptance criteria for your usage scenarios, considering your user, system, and business goals and constraints.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4607346" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Performance Inspections</title><link>http://blogs.msdn.com/jmeier/archive/2007/07/08/performance-inspections.aspx</link><pubDate>Sun, 08 Jul 2007 07:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3756847</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/3756847.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=3756847</wfw:commentRss><description>&lt;P&gt;In this post, I'll focus on design, code, and deployment inspections for performance.&amp;nbsp; Inspections are a white-box technique to proactively check against specific criteria.&amp;nbsp; You can integrate inspections at key stages in your life cycle, such as design, implementation and deployment. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Keys to Effective Inspections&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Know what you're looking for.&lt;/LI&gt;
&lt;LI&gt;Use scenarios to illustrate a problem.&lt;/LI&gt;
&lt;LI&gt;Bound the acceptance criteria with goals and constraints.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Frame&lt;BR&gt;&lt;/STRONG&gt;The &lt;A class="" href="http://blogs.msdn.com/jmeier/pages/performance-frame.aspx" mce_href="http://blogs.msdn.com/jmeier/pages/performance-frame.aspx"&gt;Performance Frame&lt;/A&gt; is a set of categories that helps you organize and focus on performance issues.&amp;nbsp;&amp;nbsp; You can use the frame to organize principles, practices, patterns and anti-patterns.&amp;nbsp; The categories are also effective for organizing sets of questions to use during inspections.&amp;nbsp; By using the categories in the frame, you can chunk up your inspections.&amp;nbsp;&amp;nbsp; The frame is also good for finding low-hanging fruit.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Design Inspections&lt;/STRONG&gt;&lt;BR&gt;Performance design inspections focus on the key engineering decisions and strategies.&amp;nbsp; Basically, these are the decisions that have cascading impact and that you don't want to make up on the fly.&amp;nbsp; For example, your candidate strategies for caching per user and application-wide data, paging records, and exception management would be good to inspect.&amp;nbsp; Effective performance design inspections include analyzing the deployment and infrastructure, walking the performance frame, and doing a layer-by-layer analysis.&amp;nbsp; Question-driven inspections are good because they help surface key risks and they encourage curiosity.&lt;/P&gt;
&lt;P&gt;While there are underlying principles and patterns that you can consider, you need to temper your choices with prototypes, tests and feedback.&amp;nbsp; Performance decisions are usually trade-offs with other quality attributes, such as security, extensibility, or maintainability.&amp;nbsp; Performance Modeling helps you make trade-off decisions by focusing on scenarios, goals and constraints.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For more information, see &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms998544.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998544.aspx"&gt;Architecture and Design Review of a .NET Application for Performance and Scalability&lt;/A&gt; and &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms998537.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998537.aspx"&gt;Performance Modeling&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Code Inspections&lt;/STRONG&gt;&lt;BR&gt;Performance code inspections focus on evaluating coding techniques and design choices. The goal is to identify potential performance and scalability issues before the code is in production.&amp;nbsp; The key to effective performance code inspections is to use a profiler to localize and find the hot spots.&amp;nbsp; The anti-pattern is blindly trying to optimize the code.&amp;nbsp; Again, a question-driven technique used in conjunction with measuring is key. &lt;/P&gt;
&lt;P&gt;For more information, see &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms998574.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998574.aspx"&gt;Performance Code Inspection&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performance Deployment Inspections&lt;BR&gt;&lt;/STRONG&gt;Performance deployment inspections focus on tuning the configuration for your deployment scenario.&amp;nbsp; To do this, you need to have measurements and runtime data to know where to look.&amp;nbsp; This includes simulating your deployment environment and workload.&amp;nbsp; You also need to know the knobs and switches that influence the runtime behavior.&amp;nbsp; You also need to be bounded by your quality of service requirements so you know when you're done.&amp;nbsp; Scenarios help you prioritize.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2007/07/02/inspections.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/07/02/inspections.aspx"&gt;Inspections&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2007/05/05/baking-performance-into-the-life-cycle.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/05/05/baking-performance-into-the-life-cycle.aspx"&gt;Baking Performance Into the Life Cycle&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3756847" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Inspections</title><link>http://blogs.msdn.com/jmeier/archive/2007/07/02/inspections.aspx</link><pubDate>Mon, 02 Jul 2007 19:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3661482</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/3661482.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=3661482</wfw:commentRss><description>&lt;P&gt;Inspections are a white-box technique to proactively check against specific criteria.&amp;nbsp; You can integrate inspections as part of your testing process at key stages, such as design, implementation and deployment.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Design Inspections&lt;/STRONG&gt;&lt;BR&gt;In a design inspection, you evaluate the key engineering decisions.&amp;nbsp;&amp;nbsp;&amp;nbsp;This helps avoid&amp;nbsp;expensive do-overs.&amp;nbsp; Think of inspections as a dry-run of the design assumptions.&amp;nbsp;&amp;nbsp; Here’s some practices I’ve found to be effective for design inspections:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use inspections to checkpoint your strategies before going too far down the implementation path.&lt;/LI&gt;
&lt;LI&gt;Use inspections to expose the key engineering risks.&lt;/LI&gt;
&lt;LI&gt;Use scenarios to keep the inspections grounded.&amp;nbsp; You can’t evaluate the merits of a design or architecture in a vacuum.&lt;/LI&gt;
&lt;LI&gt;Use a whiteboard when you can.&amp;nbsp; It’s easy to drill into issues, as well as step back as needed.&lt;/LI&gt;
&lt;LI&gt;Tease out the relevant end-to-end test cases based on risks you identify.&lt;/LI&gt;
&lt;LI&gt;Build pools of strategies (i.e. design patterns) you can share.&amp;nbsp; It’s likely that for your product line or context, you’ll see recurring issues.&lt;/LI&gt;
&lt;LI&gt;Balance user goals, business goals, and technical goals.&amp;nbsp; The pitfall is to do a purely technical evaluation.&amp;nbsp; Designs are always trade-offs.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Code Inspections&lt;BR&gt;&lt;/STRONG&gt;In a code inspection, you focus on the implementation.&amp;nbsp; Code inspections are particularly effective for finding lower-level issues, as well as balancing trade-offs.&amp;nbsp; For example, a lot of security issues are implementation level, and they require trade-off decisions.&amp;nbsp; Here’s some practices I’ve found to be effective for code inspections:&amp;nbsp; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use checklists to share the “building codes.”&amp;nbsp; For example, the .NET Design Guidelines are one set of building codes.&amp;nbsp; There's also building codes for security, performance ... etc.&lt;/LI&gt;
&lt;LI&gt;Use scenarios and objectives to bound and test.&amp;nbsp; This helps you avoid arbitrary optimization or blindly applying recommendations.&lt;/LI&gt;
&lt;LI&gt;Focus the inspection.&amp;nbsp; I’ve found it’s better to do multiple, short-burst, focused inspections than a large, general inspection.&lt;/LI&gt;
&lt;LI&gt;Pair with an expert in the area you’re inspecting.&lt;/LI&gt;
&lt;LI&gt;Build and draw from a pool of idioms (i.e. patterns/anti-patterns)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Deployment Inspections&lt;/STRONG&gt;&lt;BR&gt;Deployment is where application meets infrastructure.&amp;nbsp; Deployment inspections are particularly helpful for quality attributes such as performance, security, reliability and manageability concerns.&amp;nbsp; Here’s some practices I’ve found to be effective for deployment inspections:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use scenarios to help you prioritize.&lt;/LI&gt;
&lt;LI&gt;Know the knobs and switches that influence runtime behavior.&lt;/LI&gt;
&lt;LI&gt;Use checklists to help build and share expertise.&amp;nbsp; Knowledge of knobs and switches tends to be low-level and art-like.&lt;/LI&gt;
&lt;LI&gt;Focus your inspections.&amp;nbsp; I’ve found it more productive and effective to do focused inspections.&amp;nbsp; Think of it as divide and conquer.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Additional Considerations&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Set objectives.&amp;nbsp; Without objectives, it's easy to go all over the board.&lt;/LI&gt;
&lt;LI&gt;Keep a repository.&amp;nbsp; In practice, one of the most effective approaches is to have a common share that all teams can use as a starting point.&amp;nbsp; Each team then tailors for their specific project.&lt;/LI&gt;
&lt;LI&gt;Integrate inspections with your quality assurance efforts for continuous improvement.&lt;/LI&gt;
&lt;LI&gt;Identify skill sets you'll need for further drill downs (e.g. detail design, coding, troubleshooting, maintenance.)&amp;nbsp; If you don't involve the right people, you won't produce effective results.&lt;/LI&gt;
&lt;LI&gt;Use inspections as part of your acceptance testing for security and performance.&lt;/LI&gt;
&lt;LI&gt;Use checklists as starting points.&amp;nbsp; Refine and tailor them for your context and specific deliverables.&lt;/LI&gt;
&lt;LI&gt;Leverage tools to automate the low-hanging fruit.&amp;nbsp; Focus manual inspections on more context-sensitive or more complex issues, where you need to make trade-offs.&lt;/LI&gt;
&lt;LI&gt;Tailor your checklists for application types (Web application, Web Service,&amp;nbsp;desktop application, component)&amp;nbsp;and for verticals (manufacturing, financial ... etc.)&amp;nbsp;or project context (Internet-facing, high security, ... etc.)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In the future, I'll post some more specific techniques for security and performance.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3661482" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Software+Engineering/default.aspx">Software Engineering</category></item></channel></rss>