November 2007 - Posts - From the software development trenches

November 2007 - Posts

Izindaba #20
30 November 07 05:48 AM | cjlotz | with no comments

image912[3]Time for another weekly round-up of developer news that focuses on .NET, agile and general development content.  (Izindaba = Zulu for News).

.NET

  1. .NET Web Product Roadmap (ASP.NET, Silverlight, IIS 7) - Scott Guthrie announces the upcoming initiatives and releases for .NET web development for the months ahead.  Silverlight 2.0 Beta with Go-live license Q1 2008! smile_shades  So glad they decided to rename to 2.0 and not stick with 1.1.
  2. Advanced C# - Free chapter from the C# 3.0 in a Nutshell book published by O'Reilly.
  3. LINQ Quiz - Think you know LINQ? Take the quiz!
  4. Dynamically building LINQ Query Expressions - Joseph Albahari shows how to create And/Or extension methods to use in your LINQ queries.
  5. LINQBridge - Joseph Albahari provides a library that allows you to write LINQ-to-Objects queries in VS 2008 that targets the .NET 2.0 Framework.
  6. VS 2008 Compatibility with older VS 2005 Add-in packages - Scott Guthrie warns about older VS 2005 that may cause VS 2008 to not work.
  7. Parallel Extensions to the .NET FX CTP - Somasegar announces the availability of an early preview of the Parallel Extensions to the .NET Framework.

Design

  1. Keep your Code Structure Clean - Patrick Smacchia shows the power of NDepend and CQL rules to prevent design/architecture erosion.
  2. InfoQ Minibook: Composite Software Construction - Free e-book on new and emerging approaches to creating solutions by assembling existing services.
  3. Resources from DevTeach Talks - Jeremy Miller links to some great content on Agile Design, creating a Maintainable Ecosystem and Patterns for Maintainable WinForms.

SQL Server

  1. New SQL Server Data Type: HierarchyId - InfoQ reports on the new HierarchyId data type that has been added to SQL Server 2008 to help with treating hierarchies as first-class concepts.

Software

  1. NUnit 2.4.5 - Bug fix release.
  2. TestDriven .NET 2.1 - Release to fix and issue with VS 2008 and some other bug fixes.
  3. Silverlight 1.1 Tools Alpha for VS 2008 - News from Scott Guthrie on the update for VS 2008.
  4. .NET Framework 2.0 SP1 and .NET Framework 3.0 SP1

Misc

  1. ReSharper Club - Are you in? - I'm an addict. thumbs_up  Also see the official word from the ReSharper product manager on the support for VS 2008.

Happy reading smile_regular

Dilbert Agile Development Humour
27 November 07 08:18 PM | cjlotz | with no comments

Some of you may have seen the recent Dilbert Cartoon on Agile Programming.  I picked up these additional, hilarious Dilbert cartoons on Agile Development from a thread on the AltNetConf group.  Enjoy smile_teeth

Filed under:
Further Thoughts on Adopting .NET Framework 3.5 and VS 2008
27 November 07 04:07 PM | cjlotz | 7 comment(s)

In my current role as .NET technology consultant I am trying to do all the pre-work required to get the .NET Framework 3.5 and VS 2008 adopted as the .NET development standard for our company going forward.  Here are some useful resources that I have come across that I would like to share with other teams that need to do the same thing in their corporate environments.

Coding Standards

Our existing coding standards is based on C# 2.0 and Visual Studio 2005.  I have now updated it to include support for C# 3.0 and Visual Studio 2008.  I used the following resources:

  1. IDesign C# Coding Standard: Guidelines and Best Practices Version 2.32 - The IDesign folks have updated their coding standard to support the new C# 3.0 language features.  If you have no coding standard at all smile_cry, this is an excellent document to use as reference.  Also be sure to check out their WCF Coding Standards.
  2. Extension Methods Best Practices - Even though we only use C#, I came across this excellent post by The VBTeam that nicely summarizes extension method best practices.

My changes included adding some formatting standards for Lambda expressions and LINQ queries; a recommendation for the use of automatic properties for simple properties and a section on the best practices for making use of extension methods.

VS 2008

There has been a lot of improvements to the Visual Studio 2008 IDE.  One of my favourite features is the new multi-targeting support that allows teams to use VS 2008 but still target the .NET Framework 2.0 as deployment platform. 

Moving onto VS 2008 gives a team all the benefits like improved compile times, better performance analysis, improved code metrics and code analysis etc.  It also positions a team better to take future advantage of the new C# Language and .NET Framework improvements.  As the VS 2008 project file format is backwards compatible with VS 2005, it leaves a team with a fallback position should anything drastically go wrong with VS 2008.

However, when making the move, please take the following into account:

  1. The VS 2008 .sln file format is not compatible with the VS 2005 .sln file. You will therefore have to create a separate .sln file to support VS 2005 development.  This is typically a 5-minute exercise.
  2. If you are only targeting .NET 2.0, install only VS 2005 on your build server to catch out the scenarios where somebody has inadvertently started using some of the new language features. A concern I have here is that installing VS 2008 will also install .NET 2.0 SP1. You may therefore run into scenarios where things work in your local VS 2008 developer sandbox but not on the build server.  Highly unlikely, but still something to consider.  I haven't checked, but do you have to install .NET 3.5 on the server just to get NET 2.0 SP1 or is it available as a separate download? I don't like the idea of making .NET 3.5 a pre-requisite just to get .NET 2.0 SP1 installed.
  3. Ensure that all your existing add-ins and control libraries have been upgraded to run in VS 2008.  See the tips for using ReSharper.
  4. If you are using Visual SourceSafe 2005 together with Visual Studio 2008, there seems to be a minor glitch that can be corrected by following the steps detailed in this blog post. The problem does not seem to apply to Visual SourceSafe 6.0d as it works fine against VS 2008.

Hope you find the information useful! smile_regular

Filed under: ,
FxCop
23 November 07 10:20 AM | cjlotz | with no comments

image In previous posts about Code Metrics and Code Reviews, I explored some metrics and techniques that I felt should form part of any good software quality control process.  One of the tools that I mentioned is FxCop. 

In this post I take a closer look at FxCop.  I start by looking at how FxCop works and how you can fit it into your development process.  I then consider the different rule sets to use and look at how you can utilise FxCop to guide your VS 2003/2005/2008 development efforts.  I finish off the article by linking to articles that show you how to develop your own custom FxCop rules.

Introduction

FxCop analyses .NET assemblies for potential code compliance problems and forms part of static code analysis. With static code analysis the compiled code is checked for compliance to identify possible defects before executing the code as illustrated in the following diagram.

 image

FxCop employs assembly analysis of generated assemblies using an introspection engine. Since the analysis is performed on the generated intermediate language (MSIL) code, FxCop is not dependent on any particular .NET implementation language.  However, it is important to remember that assembly analysis cannot analyse certain aspects of the original source code, such as code comments, since these are not carried over in the compilation process.   You may also run into a scenarios where there are differences between the FxCop violations in Debug and Release configurations due to the compiler optimisations being applied in Release mode.

FxCop ships with a large rule set analysing library design, globalization, interoperability, maintainability, mobility, naming, performance, portability, reliability, security and usage aspects of the assembly. The rule set can be extended to include new custom rules and existing rules can be switched off if necessary.

Process

FxCop will typically be used by the following people:

  • Developers use FxCop continuously during development, because it helps with familiarising themselves with the .NET coding best practices. As they progress they should find that they break fewer rules and can consequently rely on the tool less often. However, they should still continue to evaluate their code at predefined intervals in the SDLC. By actively using this tool, developers raise the standard of code going into code review sessions. I advocate for using the tool before every commit.
  • Code reviewers use the tool to verify that developers are indeed complying with the best practices as defined in the rule set. They should also check that they agree with any "excluded" defects. Use of FxCop should rapidly improve both the speed and breadth of code review sessions by instantly highlighting the most obvious problems.

I strongly recommend using FxCop together with a refactoring tool like ReSharper which makes fixing the rule violations a lot easier and less error prone.

FxCop Backlogs

The following articles present some ideas on how to introduce FxCop into your SDLC:

  1. FxCop and the big-bad-backlog
  2. FxCop backlogs: Some rules for rule activation

Rule sets

The rule sets provided with FxCop are quite extensive.  Some rule sets (i.e Globalization/Mobility rule set) also includes rules that only apply to applications that target certain platforms/cultures/languages etc. Microsoft itself uses a sub-set of the complete FxCop rules to guide their own internal development efforts. From experience, I have created two rule sets to guide my own development efforts.

Base Rule Set

The Base Rule Set is the rule set that I use for all new .NET development efforts. This rule set excludes the following rules:

  • Globalization Rules: CA1300: Specify MessageBoxOptions
  • Globalization Rules: CA1301: Avoid duplicate accelerators
  • Globalization Rules: CA1302: Do not hardcode locale specific strings
  • Globalization Rules+: CA1303: Do not pass literals as localized parameters
  • Naming Rules: CA1701: Resource string compound words should be cased correctly
  • Naming Rules: CA1702: Compound words should be cased correctly
  • Naming Rules: CA1703: Resource strings should be spelled correctly
  • Naming Rules: CA1704: Identifiers should be spelled correctly
  • Naming Rules: CA1726: Use preferred terms
  • Usage Rules: CA2204+: Literals should be spelled correctly
  • Usage Rules: CA2243: Attribute string literals should parse correctly

+ Not available in VS 2008

This rule set can be downloaded and is available as either a FxCop Standalone Template or VS 2005/2008 Project File Exclusions file.

Minimum Rule Set

The Minimum Rule Set is the rule set that I use for all existing .NET development efforts. The idea is that these projects will most likely hit more rule violations on their existing code base and I therefore want to exclude some rules that add a lot of noise without providing IMO a lot of benefit. This rule set adds the following additional exclusions to those already excluded within the Base Rule Set:

  • Design Rules: CA1002: Do not expose generic lists
  • Design Rules: CA1003: Use generic event handler instances
  • Design Rules: CA1004: Generic method should provide type parameter
  • Design Rules: CA1005: Avoid excessive parameters on generic types
  • Design Rules: CA1007: Use generics where appropriate
  • Design Rules: CA1010: Collections should implement generic interface
  • Design Rules: CA1020: Use properties where appropriate
  • Design Rules: CA1024: Avoid namespaces with few types
  • Design Rules: CA1031: Do not catch general exception types
  • Design Rules: CA1064: Exceptions should be public
  • Globalization Rules: CA1304: Specify CultureInfo
  • Globalization Rules: CA1305: Specify IFormatProvider
  • Globalization Rules: CA1306: Set locale for data types
  • Naming Rules: CA1705+: Long acronyms should be pascal-cased
  • Naming Rules: CA1706+: Short acronyms should be uppercase
  • Naming Rules: CA1707: Identifiers should not contain underscores
  • Naming Rules: CA1713: Events should not have before or after prefix
  • Naming Rules: CA1714: Flags enums should have plural names
  • Naming Rules: CA1717: Only FlagsAttribute enums should have plural names
  • Mobility Rules: CA1600: Do not use idle process priority
  • Mobility Rules: CA1601: Do not use timers that prevent power state changes
  • Performance Rules: CA1800: Do not cast unnecessary
  • Performance Rules: CA1802: Use literals where appropriate
  • Performance Rules: CA1805: Do not initialize unnecessary
  • Performance Rules: CA1822: Mark members as static
  • Usage Rules: CA2201: Do not raise reserved exception types
  • Usage Rules: CA2205: Use managed equivalent of win32 api
  • Usage Rules: CA2225: Operator overloads have named alternates
  • Usage Rules: CA2242: Test for NaN correctly

+ Not available in VS 2008

The rule set can also be downloaded and is available either as a FxCop Standalone Template or VS 2005/VS 2008 Project File Exclusions file.

Implementation

There are differences between using FxCop for Visual Studio 2003 and Visual Studio 2005/2008 development. For projects that have been upgraded from VS 2003 to VS 2005, read the following article for tips on how to migrate your existing VS 2003 FxCop exclusions file over to VS 2005 FxCop code exclusions.

VS 2003

Obtain FxCop from here. Analyses can be performed from either using the FxCop GUI directly or from the FxCop command-line utility which allows you to integrate into a continuous integration process.

VS 2005

VS 2005 adds static code analysis through integrating FxCop directly into the IDE. A developer can select to include static code analysis as part of the compilation process which will fire off FxCop and produce a list of errors/warnings in the Error list pane that prevents the code from compiling successfully. Code Analysis Policy for VS Team System can also be created that makes this code analysis process a compulsory step within the compilation process. This will prevent developers from skipping the static code analysis process.

VS 2008

VS 2008 expands and improves on the code analysis provided in the VS 2005 IDE. Some of the improvements made are:

Also be sure to check out the custom FxCop rule to support the multi-targeting feature of VS 2008.

Continuous Integration

FxCop can easily be integrated into a continuous integration process by using the standalone FxCop command-line utility for VS 2003 or by using VS 2005/2008 Code Analysis as documented here.  As already mentioned, development teams using Visual Studio Team System can include Code Analysis Policy to enforce the continuous use of FxCop in their development environments.

Custom rule development

It is possible to write your own rules to integrate with FxCop running standalone or integrated into the VS IDE. Here are some articles on the topic:

Further reading

Izindaba #19
23 November 07 05:06 AM | cjlotz | with no comments

image9[1]Time for another weekly round-up of developer news that focuses on .NET, agile and general development content.  (Izindaba = Zulu for News).

.NET

  1. Visual Studio 2008 and .NET Framework 3.5 shipped! - Just in case you missed the announcement smile_wink  Any idea on how long we will have to wait for our MSDN Subscriber DVD's?
  2. Hidden Gems in Visual Basic 2008 - The top 10 new features according to the Visual Basic Team.
  3. Nov 17th Links: ASP.NET AJAX, ASP.NET MVC, VS 2008, .NET 3.5, IIS7, Silverlight - Scott Guthrie continues with the latest from his link-listing series.
  4. Maintainability Index Range and Meaning - The Code Analysis Team explains how to interpret the new code metric provided by VS 2008.
  5. Introducing .NET Framework 3.5 White Papers on .NET 3.5, WCF 1 + WCF 2 and WF - Sam Gentile links to a great set of white papers that provide a good overview of all the new technologies being offered by .NET 3.5.  Especially great to use as references for getting .NET 3.5 adopted smile_shades
  6. Mocking LINQ Queries, Extension methods and Anonymous Types - Roy Osherove shows how to do this using TypeMock.NET.

Design

  1. Test Driven Development or Test Driven Requirements? - InfoQ asks how people approach TDD - bottom-up or top-down?
  2. Reducing Server Load and Network Traffic in REST/Ajax Architectures - InfoQ reports on a technique to use the HTTP 304 status code to reduce network traffic in Ajax architectures.

SQL Server

  1. Powershell Scripting Added to SQL Server 2008 - Available in the next CTP.

SDLC

  1. Pair Programming vs Code Reviews - Jeff Atwood argues the merits of using the one technique above the other.  Also see the article I wrote a while back on the different styles of reviews and the tooling available to support them.
  2. Iterative, Automated and Continuous Performance - InfoQ article that discusses how to approach continuous performance testing.  As one commenter observed, perhaps the problem is that we need an attitude of performance engineering in stead of performance testing.  Also see the article I recently wrote on a possible approach for doing continuous performance testing in our work environment.
  3. Waterscrum vs Scrummerfall - What you get if you combine Scrum and Waterfall.

Software

  1. VisualSVN Server - The folks of the excellent VisualSVN add-in for Visual Studio has released a free server installation package that contains everything you need to install, configure and manage a Subversion server for your team on a Windows platform.

Misc

  1. How would you spend $100 on MSBuild - The MSBuild team wants to know what items to prioritise for their next version.
  2. Implementing an Internal DSL - Chapter from Martin Fowler's up and coming book about DSL's.

Happy reading smile_regular

Izindaba #18
16 November 07 05:06 AM | cjlotz | with no comments

imageTime for another weekly round-up of developer news that focuses on .NET, agile and general development content.  (Izindaba = Zulu for News).

.NET

  1. ASP.NET MVC Framework (Part 1) - Scott Guthrie builds an e-commerce store application to illustrate how to use the cool new ASP.NET MVC Framework smile_shades  
  2. So Many Tools - So Little Time! - Jesse Liberty tries to summarize when to use what tools for doing Silverlight 1.0 and 1.1 development.
  3. Code Metrics as Check-in Policy - The Code Analysis Team shows how to prevent check-in in TFS based on the violation of some code metrics.
  4. Visual C++ Libraries update - Somasegar unveils some post Orcas Visual C++ plans.
  5. Official Release of FastCGI Extension for IIS6 - News from TechEd IT Forum in Barcelona on the official support from Microsoft for FastCGI that allows high-performance hosting for PHP and other CGI-based applications on production Windows servers with full support from Microsoft.

Design

  1. Performance Frame v2 - J.D Meier provides a framework for thinking about and organizing the performance knowledge of your application.
  2. What is the MVC noise all about? Part 1, 2 and 3 - A series of posts by Ian Cooper on the MVC pattern and how to utilize the pattern when doing .NET development.
  3. Naming Standards for Unit Tests - Roy Osherove provides some guidance on how to name your unit tests.

SQL Server

  1. New Compression Features in SQL Server 2008 - InfoQ reports on the new compression features that have been added to SQL Server 2008.

SDLC

  1. You Don't Know What You Don't Know Until You Take the Next Step - "Feedback is good. Rapid feedback is better. Seek it whenever you can. Learn what you don’t know, make corrections, and proceed."
  2. How Long Should Retrospectives Last? - InfoQ looks at how frequently and for how long retrospectives should be held.

Software

  1. Snippet Editor for VS 2005/2008 - Bill McCarthy has updated his Snippet Editor to support VS 2008.
  2. ScrewTurn Wiki 2.0.20 - Update to my favourite ASP.NET Wiki includes a new Statistics plugin.

KB Articles

  1. FIX: Visual Studio 2005 stops responding or performance is slow when you use the IntelliSense feature
  2. FIX: All the developers must use the same Web server settings when you develop Web applications in a team environment that uses the source control features in Visual Studio 2005

Misc

  1. Don't Forget To Lock Your Computer - Can't wait to let Clippy loose on somebody smile_wink
  2. What's going on with NHibernate 2.0? - Ayende Rahien reports on the change log for the release of NHibernate 2.0.

Happy reading smile_regular

Izindaba #17
09 November 07 05:11 AM | cjlotz | with no comments

Time for another weekly round-up of developer news that focuses on .NET, agile and general development content.

.NET

  1. Top 10 things to know about VS 2008 and .NET Framework 3.5 - Excellent post from Daniel Moth that brings together all the links to the yummy goodness that is .NET 3.5 and VS 2008 smile_shades
  2. Debugger Visualisers for MethodInfo, DynamicMethod and MethodBase - Roy Osherove provides some cool debugger visualizers to view the IL generated for run-time DynamicMethods.
  3. How are value types implemented in the 32-bit CLR?  What has been done to improve their performance? - Some news on performance improvements that are planned for value types in vNext of the CLR.
  4. .NET Framework 3.5 Namespace poster
  5. Who Wrote This Crap - Jeff Atwood writes on the cool new source control integration in VS 2008 that shows the code side-by-side with the person who last changed the code.
  6. Microsoft's Oslo: What is the fuss about? - Some explanations from Christian Weyer.

Design

  1. Active Record vs Objects - Some thoughts from Uncle Bob on the use of ActiveRecord as data persistence pattern.

SQL Server

  1. Optimizing SQL Server Query Performance - Nice TechNet article looking at query optimization.
  2. SQL Server 2008 Performance and Scaleability Technologies - TechNet Webcast on the topic.

SDLC

  1. Technical Debt - Steve McConnell explores the topic and presents strategies for managing it.

Software Updates

  1. Expression Design SP1 - Service Pack that improves the XAML export functionality.
  2. MonoDevelop 1.0 Beta2 (0.17) - MonoDevelop team is marching right on to the release of MonoDevelop 1.0 before the end of the year.
  3. Windows Live Writer: Out of Beta - Windows Live Writer 2008 is now available and can be downloaded from here.  Be aware of the usability issues with the installation though.

KB Articles

  1. FIX: Visual Studio 2005 may stop responding when you run a unit test application, or Visual Studio 2005 may use 85 percent or more of the CPU resources when you build a unit test application
  2. How to use Assembly Version and Assembly File Version

Misc

  1. Microsoft Commits to November Release Date for VS 2008 and .NET Framework 3.5 - It's official!  Somasegar announced it during the keynote address at TechEd Barcelona 2007.
  2. Announcing Search Server 2008 - Microsoft announces a new enterprise search solution.

Happy reading smile_regular

Continuous Performance Management
08 November 07 04:06 PM | cjlotz | 1 comment(s)

image Performance is a very critical non-functional requirement for the SmartClient application that we are building. The application runs on PC's that do not necessarily have the latest spec hardware.  Our application also indirectly "competes" with other company packages that are installed on the same machine. The last thing we want is for our company to loose business due to people complaining that the application is too slow to use.  We therefore generate performance metrics as part of our development process every now and then to ensure that the functionality being added has not degraded the performance of the application down to an unacceptable level.

Process

Our current process of gathering the metrics is however very laborious and also a bit subjective as different individuals measure the timings using a good old fashioned stopwatch approach.  If bottlenecks are identified, we run a profiler against the specific areas to get a detailed level run-down of the code to identify why the application is running slower.  We also profile the application every now and then to try and further optimise certain hotspots.  As most decent profilers allow you to compare snapshots you are able to pinpoint what code is causing the system to slow down.

I've been doing some thinking around this whole performance management (PM) process to see how we can improve the process.  To my mind the ideal PM process should:

  1. Require no manual interaction.
  2. Generate metrics on the build server as part of our Continuous Integration (CI) Process.
  3. Eliminate subjective measuring factors like different operators and doing the measurement using different hardware.
  4. Allow performance trends to be spotted easily to allow the team to quickly respond.
  5. Cover the complete application.

Improved Process

We've recently expanded our Continuous Integration (CI) Process to automate the Mercury QuickTest Professional (QTP) regression test pack run.  The nice thing about the QTP run is that the application is put through all its paces as the tests are all driven from the UI.  As we already have QTP integrated into our CI process, I'm thinking of using the regression test run to also generate the performance metrics.  The process would involve:

  1. Adding performance logging to the application code base.  The log statements will write timing details to a file in XML format.  The logging can be switched on/off using a setting in a configuration file OR one might consider using AOP to inject a performance logging advice OR alternatively have the logs being produced only in DEBUG mode.
  2. Use the existing automated QTP runs to create the performance logs. 
  3. Write an xsl stylesheet to consolidate the performance logs into a nicely formatted html performance log report.
  4. Integrate the performance log as part of the CruiseControl.NET web dashboard for the team to view. 
  5. Use the CC.NET Statistics Publisher to generate statistics and some nice looking graphs based on the consolidated metrics.

If we look at my ideal PM process, this seems to cover all of the requirements smile_shades  The process is completely automated via CC.NET.  The metrics are available for every build.  The metrics are generated without user interaction on the same machine.  Lastly, by using the CC.NET statistics publisher, the team will be able to spot the performance trends quickly and easily.

Feedback

I'd like to know what other people are doing in their environments surrounding performance management?  Is it mostly still a manual process?  Have you tried automating it?  What tools are you using?  What do you feel I should do to further improve the process?  Any thoughts would be much appreciated.

Filed under:
Izindaba #16 Reloaded
01 November 07 09:42 PM | cjlotz | with no comments

Time for another weekly round-up of developer news that focuses on .NET, agile and general development content.  As Windows Live Writer has kindly overwritten Izindaba #15 with the new Izindaba #16, I am re-posting the Izindaba #16 content.

.NET

  1. Optimizing the Silverlight Install Experience - Scott Guthrie shows how to include the Silverlight install directly from your own site.
  2. Use the ASP.NET MVC Framework to Write Web Apps without Viewstate or Postbacks - Article by Jeffrey Palermo (code samples included) that show the future ASP.NET MVC Framework in action.
  3. Reference Implementation for the Web Client Software Factory - News from Brad Abrams on the Reference Implementation for the Web Client Software Factory that was released by the Patterns & Practices group.
  4. Dispose Pattern and Object Lifetime - In-depth article from the BCL Team on the correct use of the Dispose pattern.
  5. A new phase for the Acropolis project - The Acropolis team reveals the road going forward.  Be sure to follow the link to Glenn Block's post titled "WPF Composite Client, it's coming!".
  6. Change in System.ServiceProcess is coming in 3.5 RTM - News from the BCL Team on the change in shutdown behaviour for services.

Design

  1. The Difference between MVC and the different flavors of MVP - Jeremy Miller sets out to draw the lines between MVC and MVP.
  2. Be not afraid of the Visitor, the big, bad Composite or their little friend Double Dispatch - Jeremy Miller shows the value of using these three patterns.
  3. How Big Should a Function Be - Some thoughts from Uncle Bob.
  4. Quality Code...Specification or Testing? - Peter Waldschmidt of NCover writes on the pros and cons of verifying quality using specification or testing.

SDLC

  1. Evidence Based Scheduling - Joel Spolsky on getter better estimates based on historical data and the tool support for it within FogBugz 6.0
  2. Advantages of User Stories For Requirements - Mike Cohn looks at the benefits of using User Stories for requirements elicitation.

Software Updates

  1. Rhino Mocks 3.3 - News from Ayende Rahien on the new release.
  2. Sandcastle October 2007 CTP - New release from the Sandcastle team.

Misc

  1. Oslo: Microsoft SOA Vision and Roadmap - InfoQ reports on "Oslo", the code name for Microsoft's newly unveiled SOA vision and roadmap.
  2. Microsoft Releases JavaScript Compatibility Study for IE, Firefox, Opera and Safari - Some more news from InfoQ.
  3. Mono Versioning - Miguel de Icaza runs through possible Mono versioning options and asks for further feedback.

Happy reading smile_regular