<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Erudition</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/erudition/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/erudition/feed.xml</link>
    <description>Known facts, ideas, and skill that have been imparted</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:05:51 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>My article on Pex at MSDN</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/my-article-on-pex-at-msdn</link>
      <pubDate>Tue, 01 Dec 2009 20:57:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/12/01/my-article-on-pex-at-msdn/</guid>
      <description><![CDATA[My article on Pex is now online at MSDN, it provides you with an overview of Pex and how to use it...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: #1f497d; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"><FONT size=3><FONT face=Calibri>My article on Pex is now online at MSDN, it provides you with an overview of Pex and how to use it on legacy code.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: #1f497d; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"><A href="https://msdn.microsoft.com/en-us/magazine/ee819140.aspx"><SPAN style="COLOR: black; mso-style-textfill-fill-color: black; mso-style-textfill-fill-alpha: 100.0%"><SPAN style="COLOR: black; mso-style-textfill-fill-color: black; mso-style-textfill-fill-alpha: 100.0%"><FONT size=3 face=Calibri>https://msdn.microsoft.com/en-us/magazine/ee819140.aspx</FONT></SPAN></SPAN></A><o:p></o:p></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>SQL server collation setting for TFS 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/sql-server-collation-setting-for-tfs-2010</link>
      <pubDate>Tue, 24 Nov 2009 23:21:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/24/sql-server-collation-setting-for-tfs-2010/</guid>
      <description><![CDATA[To work with Visual Studio Team System Team Foundation Server, the collation settings for SQL Server...]]></description>
      <content:encoded><![CDATA[<P>To work with Visual Studio Team System Team Foundation Server, the collation settings for SQL Server (2005 / 2008)&nbsp;must be:</P>
<P>1. case insensitive (clear the <SPAN class=ui>Case - sensitive</SPAN> check box),&nbsp;</P>
<P>2. accent sensitive, </P>
<P>3. and not binary. </P>
<P>To avoid problems with double-width or hiragana/katakana-equivalent characters, you should select the check boxes to enable Kana and width sensitivity when you install SQL Server. </P>]]></content:encoded>
    </item>
    <item>
      <title>Unit testing SharePoint solutions using Pex</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/unit-testing-sharepoint-solutions-using-pex</link>
      <pubDate>Tue, 10 Nov 2009 02:20:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/10/unit-testing-sharepoint-solutions-using-pex/</guid>
      <description><![CDATA[Peli provides a good overview on how you can use Pex Moles to unit test SharePoint applications by...]]></description>
      <content:encoded><![CDATA[<P>Peli provides a good overview on how you can use Pex Moles to unit test SharePoint applications by mocking away the SharePoint API calls.</P>
<P><A href="https://research.microsoft.com/en-us/projects/pex/pexsharepoint.pdf">https://research.microsoft.com/en-us/projects/pex/pexsharepoint.pdf</A></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Moles - Pex detour Framework</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/moles-pex-detour-framework</link>
      <pubDate>Tue, 10 Nov 2009 02:14:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/10/moles-pex-detour-framework/</guid>
      <description><![CDATA[Moles is a lightweight mocking framework that provides a&nbsp; mechanism to stub non-virtual...]]></description>
      <content:encoded><![CDATA[<UL>
<LI>Moles is a lightweight mocking framework that provides a&nbsp; mechanism to stub non-virtual methods</LI>
<UL>
<LI>Static methods, methods in sealed types, constructors</LI></UL>
<LI>Moles is Delegate based, it provides hooks for the developer to provide their own mock implementation for any dependencies. </LI>
<LI>No code refactoring required! </LI>
<LI>Moles works in similar fashion as TypeMock, DIF.</LI>
<LI>Moles is optimized for Pex. You get the Power of Automated unit tests plus mocking framework.</LI></UL>
<P>See here for an example on how to use Moles: <A href="https://research.microsoft.com/en-us/projects/stubs/moles.aspx">https://research.microsoft.com/en-us/projects/stubs/moles.aspx</A></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Unit Test v/s PUT</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/unit-test-vs-put</link>
      <pubDate>Tue, 10 Nov 2009 02:13:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/10/unit-test-vs-put/</guid>
      <description><![CDATA[A unit test is a method without parameters that represents a test case and typically executes a...]]></description>
      <content:encoded><![CDATA[<P><BR>A unit test is a method without parameters that represents a test case and typically executes a method of a class-under-test with fixed inputs and verifies that it returns the expected result.</P>
<P><BR>A parameterized unit test (PUT) is simply a method that takes parameters, calls the code under test, and states assertions.</P>
<P>Parameterized unit tests separate two concerns: </P>
<P>1) They specify the external behavior of the involved methods for all test arguments. </P>
<P>2) Test cases can be re-obtained as traditional closed unit tests by instantiating the parameterized unit tests.<BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Dowload Microsoft Pex from here!</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/dowload-microsoft-pex-from-here</link>
      <pubDate>Tue, 10 Nov 2009 02:08:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/10/dowload-microsoft-pex-from-here/</guid>
      <description><![CDATA[You can download the latest version of Pex from...]]></description>
      <content:encoded><![CDATA[<P mce_keep="true">You can download the latest version of Pex from here:</P>
<P><A href="https://research.microsoft.com/en-us/projects/pex/downloads.aspx">https://research.microsoft.com/en-us/projects/pex/downloads.aspx</A></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Pex</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/microsoft-pex</link>
      <pubDate>Tue, 10 Nov 2009 01:32:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/10/microsoft-pex/</guid>
      <description><![CDATA[Pex goal is to automatically and systematically produce the minimal set of actual parameters...]]></description>
      <content:encoded><![CDATA[<TABLE dir=ltr border=1 cellSpacing=0 cellPadding=7 width=453>
<TBODY>
<TR>
<TD height=324 vAlign=top><FONT size=3>
<P>Pex goal is to automatically and systematically produce the minimal set of actual parameters needed to execute a finite number of finite paths. It automatically produces a small test suite with high code and assertion coverage. It has been leveraged by the .NET team at Microsoft for Unit Testing core .NET components </P>
<P>HOW IT WORKS? </P>
<P></FONT><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri>Pex </B></FONT></FONT><FONT size=3>finds interesting input-output values of your methods, which you can save as a small test suite with high code coverage. Pex performs a systematic analysis, hunting for boundary conditions, exceptions and assertion failures, which you can debug right away. Pex enables Parameterized Unit Testing, an extension of Unit Testing that reduces test maintenance costs. </FONT></P>
<P><FONT size=3>HOW IS PEX DIFFERENT? </FONT></P>
<P><FONT size=3>With VS 2008 Unit Tests Framework and other unit test tools such as NUnit, the user has to provide all test inputs: individual values, ranges, a spreadsheet, or a database of some sort. Improper choice of inputs would lead to missed corner cases or a hugely redundant test suite, or both. With Pex, things change for the better, the user does not have to provide any input to the parameterized unit tests. By analyzing the program behavior at runtime Pex can generate inputs that matter, i.e. </FONT><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri>inputs that will increase the coverage of the test suite and expose bugs. </FONT></FONT></B></P>
<P><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri></B></FONT></FONT><FONT size=3>WHAT DOES PEX HAS IN IT FOR DEVELOPERS? </P>
<P> Pex Framework Libraries. </P>
<P> Seamless Integration with Visual Studio 2008 </P>
<P> Suggestions and code snippets </P>
<P> Stubs and detour framework</P>
<P> Command Line support. </P>
<P> Pex Extension Points for popular Unit Testing Frameworks. </P></FONT></TD></TR></TBODY></TABLE>]]></content:encoded>
    </item>
    <item>
      <title>Benefits of Unit Testing</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/benefits-of-unit-testing</link>
      <pubDate>Tue, 10 Nov 2009 01:31:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/11/10/benefits-of-unit-testing/</guid>
      <description><![CDATA[Some of the key benefits of Unit Testing include: 
 Trusted Code: Unit Testing is the...]]></description>
      <content:encoded><![CDATA[<P>
<TABLE dir=ltr border=1 cellSpacing=0 cellPadding=7 width=636>
<TBODY>
<TR>
<TD height=138 vAlign=top><FONT size=3>
<P>Some of the key benefits of Unit Testing include: </P>
<P> </FONT><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri>Trusted Code</B></FONT></FONT><FONT size=3>: Unit Testing is the best mechanism that a developer can use to make its code rock solid, by creating unit tests for all possible paths in a method the developer can ensure that it will not break for any valid inputs and will handle all invalid inputs gracefully. </P>
<P> </FONT><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri>Design and Specification</B></FONT></FONT><FONT size=3>: Developers can translate their understanding of the specifications into unit test. TDD approach. </P>
<P> </FONT><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri>Code Coverage and regression testing</B></FONT></FONT><FONT size=3>: They enable us to unambiguously pinpoint the occurrence of a bug, as well as point out inefficient lines of program code at the level of separate modules </P>
<P> </FONT><B><FONT size=3 face=Calibri,Calibri><FONT size=3 face=Calibri,Calibri>Documentation</B></FONT></FONT><FONT size=3>: they can be considered as the documentation for correct program behavior. </P></FONT></TD></TR></TBODY></TABLE></P>]]></content:encoded>
    </item>
    <item>
      <title>Design principles for a better life!</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/design-principles-for-a-better-life</link>
      <pubDate>Sun, 04 Jan 2009 21:46:00 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/01/04/design-principles-for-a-better-life/</guid>
      <description><![CDATA[No this is not an “art of living” post where I talk about how you can improve your life with doing...]]></description>
      <content:encoded><![CDATA[<p>No this is not an “art of living” post where I talk about how you can improve your life with doing more yoga and taking less stress :). I rather wanted to focus on how to reduce the impact of changes in the software system and elaborate the design principles that help reduce the re-work and clutter that usually happens in the later stages of the development cycle .. so a better life for the system and thus for the developer as well ;)</p>  <p>Some of the &quot;must have - must follow&quot; design principles</p>  <ol>   <li>Encapsulate what varies = Strategy pattern.</li>    <li>Favor Composition over inheritance = Strategy pattern.</li>    <li>Program to interfaces not implementations = Strategy pattern.</li>    <li>Strive for loosely coupled designs between objects that interact = Observer Pattern.</li>    <li>The Open Closed Principle: Classes should be open for extension and closed for modification = Decorator pattern.</li>    <li>Depend on abstracts, do not depend on concrete classes = Factory Pattern.</li>    <li>Only talk to your friends = The Facade Pattern</li>    <li>Always let the higher layers call the lower layer and not vice versa = Template Pattern</li>    <li>The Single responsibility principle – A class should have only one reason to change.</li> </ol>  <p><font size="1">*Inspired from the Head First Design Patterns book</font></p>]]></content:encoded>
    </item>
    <item>
      <title>The PnP architecture meta-frame</title>
      <link>https://docs.microsoft.com/archive/blogs/erudition/the-pnp-architecture-meta-frame</link>
      <pubDate>Sun, 04 Jan 2009 07:55:06 GMT</pubDate>
      <dc:creator><![CDATA[erudition]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/erudition/2009/01/04/the-pnp-architecture-meta-frame/</guid>
      <description><![CDATA[The Application Architecture Guide 2.0 by PnP introduces the concept of “an architecture frame”. It...]]></description>
      <content:encoded><![CDATA[<p>The Application Architecture Guide 2.0 by PnP introduces the concept of “an architecture frame”. It provides guidance on where to start and what key aspects to look for when designing the architecture of a system.</p>  <p>At the minimum a good architecture should:</p>  <ol>   <li>Determine the type of application to be built. </li>    <li>The architecture styles to be used and </li>    <li>how the cross cutting concerns will be handled </li> </ol>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/erudition/WindowsLiveWriter/WhatisApplicationArchitecture_CEEE/image_2.png" original-url="https://blogs.msdn.com/blogfiles/erudition/WindowsLiveWriter/WhatisApplicationArchitecture_CEEE/image_2.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="330" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/erudition/WindowsLiveWriter/WhatisApplicationArchitecture_CEEE/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/erudition/WindowsLiveWriter/WhatisApplicationArchitecture_CEEE/image_thumb.png" width="529" border="0" /></a> </p>  <p>A typical approach to defining your architecture should be:</p>  <blockquote>   <p><strong>Understand the Business Goals and objectives – why are we building the application.</strong></p>    <p><strong>Understand the Organizational constraints: </strong>These might range from budget, hardware resources, human resources etc. </p>    <p><strong>Decide on the Application Type</strong>: Understand the client requirements carefully to decide on what type of application will be the best fit for the end-user. The Application types might range from Rich client application to Mobile applications (see App Types in the figure above). The key here again is to think from a Business prospective and then from an organizational constraint prospective.&#160; </p>    <p>Some of the guidelines to follow while deciding and recommending an application to be client might be (these are just the bare minimum a lot of other quality attributes need to be taken into account before recommending an application type):</p>    <ol>     <li>Rich Client: Suggest this when you want to leverage client resources and support disconnected scenarios. Microsoft Word is an example. </li>      <li>RIA (Rich Internet Application): Support for advanced graphics and streaming media in a web deployment scenario. </li>      <li>Web Application: Application UI over the web for various geographical clients. Minimum or no traces on the client machine. </li>      <li>Service: You want to expose a loosely coupled interface to remove clients without a UI. You want to provide autonomous plug and play components that can be leveraged by a variety of clients. E.G.. . a Credit Card Verification service. </li>      <li>Mobile: Support for mobile devices over the web / on the mobile device. </li>   </ol> </blockquote>  <blockquote>   <p>More on these in later posts …</p>    <p><strong>Choose an Architectural Style: </strong>It is a set of principles. Each style defines a set of rules that specify:</p>    <ul>     <li>the kind of components you can use to assemble the system. </li>      <li>the kinds of relationships used in their assembly </li>      <li>the constraints on the way they are assembled and </li>      <li>any assumptions about how you put them together. </li>   </ul>    <p>Architectural style range from Client / Server, to Layered architecture to MVC, SOA depending on the kind of the application you are building. </p>    <p>Loads on these in later posts :)</p> </blockquote>  <blockquote>   <p><strong>Choose the right technology: </strong>Once you have decided on the Application Type and the architecture style to use, choosing the right technology can become simpler. Make sure the technology adheres to any organizational constraints and is stable to be delivered in a production environment.</p>    <p><strong>Quality Attributes:</strong> These include – security, performance, maintainability etc.</p>    <p>Deciding on what quality attributes to apply for the system depends on the kind of application, priorities&#160; of the quality attribute will differ from application to application or maybe component to component so it is necessary to evaluate the need to each quality attribute before recommending it. E.G.. if security is not a big concern for the organization then it can take a back seat and we can focus on other aspects such as performance etc. Having said that some of these attributes might be globally applicable to all or any kind of application. </p>    <p>This is a very interesting area since these attributes might not be visible functionally to the end-user but can still be essential for the system now or in the long run, making the business user understand the importance of Quality attributed is very essential.</p>    <p><strong>Cross Cutting Concerns</strong></p>    <p>These are the salt and pepper of the software, they represent key areas of your software design that might not be related to a specific layer. Some of these include:</p>    <ul>     <li>Authentication </li>      <li>Authorization </li>      <li>Caching </li>      <li>Communication </li>      <li>Exception Management </li>      <li>Instrumentation and Logging </li>   </ul></blockquote>]]></content:encoded>
    </item>
  </channel>
</rss>