Grigori Melnik: Thoughts on Agile Software Engineering and Beyond

  • Webcasts demos

    The demo from the Enterprise Library 4.0 webcast we did yesterday is posted on Codeplex.

    Later, you'll be able to find the demos from the upcoming webcasts on Unity there as well.

  • Do you have testing problems?

    In our quest to produce actionable acceptance testing guidance, we are looking for hard-to-test scenarios from real world projects so that we could test our guide against them. We would appreciate if you shared your testing problems with us.

    For example, you may find testing the logics that generates binary data (like image generation, voice synthesis) hard.

    Also, feel free to tell us how you solved them if you did.

    Link to survey.

     

  • Webcasts on EntLib4 and Unity

    We are planning three webcasts on EntLib4 and Unity. Pencil in the tentative dates:

    §  Taking advantage of Microsoft Enterprise Library 4.0 for Visual Studio 2008 (Level 200 – Intro)

    July 10, 13:00-14:30pm Pacific

    Register

    §  Introduction to dependency injection with Unity (Level 200 – Intro)

    July 11, 12:00-13:00 Pacific

    Register

    §  Extending the Unity dependency injection container (Level 400 – Advanced)

    July 24, 13:00-14:30 Pacific

    Register

     

    We’ll be doing lots of demos of the goodness in EntLib and Unity. I’ll post the links to the registration site as soon as they become available on MS Events.

     

    Cheers,

    Grigori

  • Upcoming conferences - where I'll be (May - Oct 2008)

    • Tech-Ed 2008 Developers, June 2-6, Orlando, FL. I’ll be giving a talk on the Enterprise Library (DVP02-TLC). I’ll be also hanging out in the exhibition areas (mainly, Process & Project Management (DVP- VSTS 2008)).
    • CAST 2008 , July 14-17, Toronto, ON. I look forward to good interaction with testing experts and thought leaders from around the world.
    • Microsoft Product Fair, July 22-23, Redmond, WA.
    • TechReady7, July 28-Aug 1, Seattle, WA. I’ll do a couple of talks on the Enterprise Library and agility.
    • Agile 2008, Aug 4-8, Toronto, ON – the major world conference on agile software engineering. Mary Poppendieck and I are program-charing the conference.
    • STARWest 2008, Sep 29- Oct 3, Anaheim, CA. Jon Bach and I will give a talk on Acceptable Acceptance Testing, telling the tale of our team producing the guide on acceptance testing and dogfooding our own recommendations.
    • PNSQC2008, Oct 13-15, Portland, OR. We have a paper "Acceptance Testing: a love story in two acts". No Shakesperian-level drama, but some exciting stuff for sure.
    • PDC 2008, Oct 26-30, Los Angeles, CA. Together with Mary Poppendieck and other colleagues from p&p, we’ll be presenting the Agile Perspectives pre-conference event.

    If you are planning on attending any of these conferences, please come by and say hello. I would love to hear your stories of using or reasons for not using the Enterprise Library, Unity, other p&p assets. I would also be glad to chat with you about our upcoming guidance on Acceptance Test Engineering and hear your experiences, lessons learnt, and suggestions.

    Also, I talk to user groups regularly. If you are from the city I am visiting (or nearby) and would like me to give a talk to your user group (agile, .NET, software testing), feel free to ping me.

  • What does "done" mean to you?

    We have posted a short survey on the practices of acceptance testing that I would like to invite you to answer. Your thoughtful responses will help us focus the guide on issues that matter to you. Your input is critical.

    If you feel particularly strongly about any topic/practice/issue in acceptance testing and would like to share a story, technique, pain points, please provide your contact address so that we could talk to you. Otherwise, the survey is anonymous.

    Feel free to forward this invite to others.

  • Where did the Application Block Software Factory go?

    As I mentioned in the announcement of the Enterprise Library 4, two pieces were removed from the release: Application Block Software Factory and Strong-Naming Guidance Package. These are made available as a separate download on EntLibContrib. Here’s the direct link. Both require GAX.

  • Unity refresh (v1.1)

    In addition to the release of the Enterprise Library 4.0, the patterns & practices team is happy to announce the release of the Unity dependency injection container v1.1.

    Quick Links:

                     MSDN site: http://msdn.microsoft.com/unity

                     Community Forum: http://codeplex.com/unity

                     Community Extensions: http://codeplex.com/unitycontributions

     

    What’s New in Unity 1.1?

                     Remove all obsolete ObjectBuilder code;

                     Fix the bug: lifetime managers with open generic types;

                     Fix the bug: RegisterType was overriding RegisterInstance;

                     Performance improvement when resolving singletons;

                     Made some internal classes public to make it easier to write certain type of extensions (the ones that need to customize how the dependencies are resolved;

                     Improved error messages when value resolution fails.

    What’s NOT in Unity yet?

                     Interception mechanism is not implemented yet; it is on top of our Unity backlog though;

                     Policy Injection Application Block can still be used if AOP functionality is needed;

                     No tool support for DI configuration.

     As always, your feedback is invited. Please post your stories, questions, screams on Codeplex. We are listening!

    Cheers,
    Grigori

     

  • Enterprise Library 4.0 for Visual Studio 2008 released!

    Friends, I am extremely excited to announce the release of the Enterprise Library 4.0 for Visual Studio 2008. Congratulations to the team!

    Quick Links:

                     MSDN site: http://msdn.microsoft.com/entlib

                     Community Forum: http://go.microsoft.com/fwlink/?LinkID=119312

                     Community Extensions: http://codeplex.com/entlibcontrib

     

    What is Enterprise Library?

    Enterprise Library is a collection of reusable software components (application blocks) designed to assist software developers with common enterprise development challenges (such as logging, validation, caching, exception handling, and many others). Application blocks are a type of guidance encapsulating Microsoft recommended development practices; they are provided as source code plus documentation that can be used "as is," extended, or modified by developers to use on complex, enterprise-level line-of-business development projects.

    Goals for Enterprise Library

    Enterprise Library is a collection of application blocks intended for use by developers who build complex, enterprise-level applications. Enterprise Library is used when building applications that are typically to be deployed widely and to interoperate with other applications and systems. In addition, they generally have strict security, reliability, and performance requirements. The goals of Enterprise Library are the following:

    Consistency. All Enterprise Library application blocks feature consistent design patterns and implementation approaches.

    Extensibility. All application blocks include defined extensibility points that allow developers to customize the behavior of the application blocks by adding their own code.

    Ease of use. Enterprise Library offers numerous usability improvements, including a graphical configuration tool, a simpler installation procedure, and clearer and more complete documentation and samples.

    Integration. Enterprise Library application blocks are designed to work well together or individually.

    What’s New in v4.0?

    This release of Enterprise Library includes the following:

                     Integration with the Unity Application Block

                     Windows Management Instrumentation (WMI) 2.0 support and improved instrumentation

                     Performance improvements (particularly, in the Logging Application Block)

                     Pluggable Cache Managers

                     Visual Studio 2008 support

                     Bug fixes

    Note: existing public APIs (v3.1) are still supported.

    The Application Block Software Factory and the Strong Naming Guidance Package are not included in this release but are available as a separate download. Thus, there is no longer a dependency on Guidance Automation Extensions (GAX).

    For the detailed list of all changes, see About This Release of Enterprise Library.

    Enterprise Library by Numbers:

    2003

    Year when the first application block was released

    2005

    Year when v1 of Enterprise library was released.

    1,290,000

    Total number of downloads of Enterprise Library since the first release.

    »470,000

    Total number of visits to the community site (since Dec 2006 when the Codeplex site was launched)

    »1,600

    Number of discussion threads on the community site

    54%

    NPS (Net Promoter Score)

    6

    Number of Enterprise Library releases (v1.0, v1.1, v2.0, v3.0, v3.1, v4.0)

    9

    Number of Application blocks in Enterprise Library 4.0

    19

    Number of weekly iterations to build Enterprise Library 4.0

    401

    Number of interim builds of Enterprise Library 4.0

    »900

    Number of pages of documentation in V4.0

    »8,000

    Number of automated tests cases in V4.0

    »100,000

    Number of executable lines of code in V4.0

     

    Getting Started

    If you are new to the Enterprise Library:

           read the Introduction to the Enterprise Library;

           download, compile and run the QuickStart samples—study the code;

           read through the related QuickStart Walkthroughs and “Key Scenarios” sections of the documentation;

           practice the Hands-On Labs;

           join the webcast in June 2008 (the exact date will be announced on the Enterprise Library landing page).

     

    If you already know and love the Enterprise Library:

           check out the change log for this release;

           upgrade to V4.0—no code change is required—simply update the references to the corresponding application block assemblies and to the common assemblies;

           download the updated QuickStarts and run through the Unity-integrated examples to get the flavor of new dependency injection style of using the Enterprise Library;

           join the webcast in June 2008 (I’ll announce the exact date later).

     

    Happy Coding!

    Information on Microsoft patterns & practices

     

         Visit us at http://msdn.microsoft.com/practices/ to see the full line of existing patterns & practices.

     

     

  • Empirical Evidence of Agile Methods: ce que nous savons, ce que nous pensons savoir et ce que nous voulons savoir

    I gave two versions of my talk on the Empirical Evidence of Agile Methods : What We Know, What We Think We Know, and What We Would Like to Know at the patterns & practices summit in Québec City, Canada and the Agile Québec user group last week. Here’re the materials of the talk I promised to post.

    As a side note: I’ve noticed that the Quebec audience mainly interacts with their eyes. They are so polite that they don’t interrupt the speaker, they even turn off their cell phones.

  • Acceptance Test Engineering Guidance - project kick-off

    Traditionally, p&p primary audience included developers and architects. Even though we have some coverage of the testing discpline (in particularly Testing .NET Application Blocks - Version 1.0 guide and Performance Testing Guidance for Web Applications), it is a small portion of the p&p assets [link to catalog]. In our interactions with customers, we hear requests for good guidance on testing – all kinds of testing.

    So, back in the fall 2007, I’ve put a number of projects related to test engineering and test automation on the patterns & practices backlog. Several other important projects took precedence (GAT/GAX, Unity, Enterprise Library). And now, after we have shipped GAT/GAX 1.4 and Unity 1.0, I am happy to be able to kick off this project with the focus on acceptance test engineering.  

    The core team consists of Michael Puleio, Jon Bach and I, Grigori Melnik. Michael is not a tester but a great developer with passion for testing, test automation and test tools. Jon is a professional tester, he is the manager of corporate intellect at Quardev Labs and a co-inventor of session-based test management for managing and measuring exploratory testing. I have devoted a number of years researching executable acceptance test-driven development (with FIT) and the relationships between software requirements and acceptance tests (see this article with my stance on this).

    The topics we plan to focus on in this project include:

    -        test objectives and strategy,

    -        product readiness/acceptance,

    -        defining and reconciling good-enough criteria in various industrial contexts,

    -        working with customers and customer-proxies,

    -        supporting stories/requirements with acceptance tests.

    We intend to support our guidance with case studies and exercises from the real world.

    We are running this project as an agile project, with weekly iterations, standups, collocated team, etc. This deserves a separate blog post, which I’ll probably do later this month.

    In the meantime, feel free to post your comments and thoughts on any specific (painful) aspects of acceptance testing that you would like help with. Also, if you have an interesting experience with acceptance testing that you'd like to share and perhaps be profiled in our guide as a case study, we'd like to hear about it.

  • Unity DI container 1.0 shipped!

    Microsoft patterns & practices is excited to announce the release of Unity 1.0.

    As many of you already know, Unity is a lightweight, extensible dependency injection (DI) container. It facilitates building loosely coupled applications and provides .NET developers with the following advantages:

    • Simplified object creation, especially for hierarchical object structures and dependencies;
    • Abstraction of requirements; this allows developers to specify dependencies at run time or in configuration and simplify management of crosscutting concerns;
    • Increased flexibility by deferring component configuration to the container;
    • Service location capability; this allows clients to store or cache the container.

    You can download Unity (binaries, source code, unit tests, documentation, and quickstarts) from:

    http://msdn.microsoft.com/unity

    The Unity team thanks our Industry Advisory Board and all members of the community who provided meaningful feedback in the past 3 months. We encourage you to continue doing so and engage on http://codeplex.com/unity

  • Unity container: resolving non-public objects

    If you care, please read the following thread posted on Codeplex: http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=25123 and comment on the path we are taking to address the issue with injecting and resolving non-public types in partial trust scenarios.

    Thanks!

     

  • Enterprise Library 4.0 March 2008 CTP released

    We are pleased to announce the release of the EntLib 4.0 March 2008 CTP and invite your feedback.

    This release has been adapted to work with WMI version 2.0 and version 3.5 of the .NET Framework.

    Enterprise Library 4.0 has the Allow Partially-Trusted Caller attribute (APTCA) on all assemblies. This means that you can call the methods of Enterprise Library and the application blocks from an application running in a partial trust environment. You can do this with the signed assemblies provided with Enterprise Library. There is no longer any requirement, as there was in version 3.x, to recompile the source code then either use the unsigned binaries or strong-name them yourself.

    The Caching Application Block has been refactored to allow developers to replace the CacheManager class with other implementations, including the ones offered by the distributed cache solution providers. This does not affect the API of the application block.

    There are also additions in functionality to the Logging Application Block, the Validation Application Block, the Exception Handling Application Block. For details see the change log on the release page.

    Note: This community preview does not include the integration with Unity or the integrated Visual Studio 2008 config tool. These features are plannned for the final release.

    EntLib4.0 March 2008 CTP download site

    We look forward to your feedback!

    -- Grigori

    Posted