Technical Sessions

Agile Is More Than Monkey-See-Monkey-Do - Peter Provost

In the six years since the Agile Manifesto was signed we have seen an upswelling of interest in agile techniques. Scrum Masters are everywhere and everyone wants to talk about TDD and other agile practices. But it seems that the pragmatic essence of agile development is being lost. A vast majority of talks, tutorials, and speeches at conferences over the past year or two seem to have lost that same essence and have instead focused on practices instead of principles. The goal for this presentation is to explain why it is the essence of agility that is so critical, so important to the success of any project trying to succeed. ?People over Process, Collaboration over Contracts, Working software over Written Words, and Planning over Plans? are not hollow words to an experienced agilist ? they are the lifeblood of what they believe and color how they act.

Agile Security - David LeBlanc

The Security Development Lifecycle (SDL) as practiced at Microsoft assumes a level of process and structure that one would expect from very large scale efforts such as Windows Vista, Microsoft Office, and other large Microsoft products. For many organizations, various Agile development processes produce better results for their development teams and products, but it can be difficult to incorporate security into Agile processes. Just as Agile development processes stress lightweight, just-in-time design, a lightweight approach to security will improve application security without burdening the overall experience.

Architecting a Scalable Platform - Chris Brown

At one time, scalability meant buying a bigger database. Today, architecting a planetary scale service means juggling consistency, availability, and performance in the face of network partition, and sometimes total datacenter failure. Yesterday?s ?ACID? transactions and two-phase commit are giving way to distributed, consensus-based, eventual agreement and sometimes just apology in the face of failure. In this session, we?ll look at recent techniques in content caching, peer-to-peer delivery, traffic management, and distributed messaging with real-world examples. We?ll also discuss the monitoring, metrics and testing useful in planning and operating these services.

Build Your Own Software Factory - Wojtek Kozaczynski, Bob Brumfield, Ade Miller

This session exposes the lessons learned from building the latest versions of the patterns & practices factories, and how to apply these lessons to either customizing those factories for your own requirements or building your own factories. We will cover how to build a model-driven factory, utilize inter-connected models, separate models from technology specific information (deferring the application of specific technologies), manage complex code-generation utilizing DSL Extensions, and utilize a custom validation framework.

Building Services with the Service Factory: Modeling Edition - Bob Brumfield & Ade Miller

There are clear advantages of using a modeling environment when building services. The development team has more flexibility when the modeling environment includes logical models that don?t force platform and language decisions too early in the project. When this environment has a great deal of extensibility, the capabilities are only limited by imagination. The Web Service Software Factory: Modeling Edition provides this type of modeling environment. Attend this session to see how the Service Factory can be used and extended by your service development team.

Dependency Injection Frameworks - Brad Wilson & Scott Densmore

Dependency injection is a way to achieve loose coupling. The technique results in highly testable objects, particularly when applying test-driven development. In this session, we'll examine the reasons behind dependency injection, and preview the changes coming in ObjectBuilder 2.0. We'll show two sample containers, including one that behaves like Castle Windsor. Finally, we'll examine the new method interception system that allows a limited form of Aspect-Oriented Programming when using ObjectBuilder 2.0.

Designing for Rich UI Platforms - Kathy Kam

Rich Internet Applications (RIA) are more and more prevalent on the internet. This session explores the tradeoffs involved in RIA and illustrates how to take advantage of the managed platform exposed to Microsoft .NET to build next generation applications.

Designing for Workflow - Ted Neward

Windows Workflow represents a completely different style of coding, one which utilizes a different style of programming than what we?ve seen before. Known in some circles as continuations, Workflow essentially provides the ability to serialize an executing thread, store it for a period of time, then restore the thread in a different environment or time for further execution. In this presentation, we?ll examine how Workflow does this (with your help), and how it can be used to solve some interesting design scenarios.

Domain-Specific Development with Visual Studio DSL Tools - Gareth Jones

Domain-Specific Language Models are a powerful technique for embodying in a tool the abstractions specific to the software your business is building and guidance on how to use them with your own frameworks. In this session we?ll examine the domain-specific development pattern, see how to build a simple graphical language from scratch, how to make it domain-specific and finally how to add architectural guidance directly to the tool.

Empirical Evidence of Agile Methods - Grigori Melnik

Agile methods have come of age. Recent surveys indicate that agile methods (including Scrum, eXtreme programming, Lean development, MSF Agile, DSDM, FDD, ASD) are being adopted or seriously considered for adoption by many organizations. Practitioners want to know which individual agile practices work and do not work, and under which conditions. Existing data on agile methods and practices analyzing their claimed merits will be presented. This empirical evidence can also be used by leaders who need to evaluate agile methods and motivate their adoption. It may help implement changes in your organization with more confidence.

Enterprise Library 3.0 Applied - Lars Laakes

ADP Canada is leveraging the Enterprise Library 3.0 as part of its core application platform for all future ADP Canada applications. This session will describe how ADP Canada used and customized EntLib for a real world solution.

Enterprise Library Devolved - Scott Densmore

The patterns & practices Enterprise Library is a library of application blocks designed to assist developers with common enterprise development challenges. As a set of guidance for meeting these challenges, this will cover changes made in the EntLib Refactored project on CodePlex.com. It focuses mainly on simplifying the code and changes based on 3 versions of learning and feedback.

Enterprise Service Bus (ESB) Guidance - Marty Wasznicky

This session describes Microsoft's platform value to customers evaluating ESB vendor offerings and the capabilities offered by the Application Platform and the Microsoft ESB Guidance for BizTalk Server. In addition it introduces architects and developers to the ESB architectural concepts as addressed by the guidance, describes the implementation of the components and frameworks within it, and explains the functionality of the guidance through a set of use cases.

Evolving Client Architecture - Billy Hollis

We are past the point as architects that we can assume that one user interface technology will be used in our applications throughout the application?s lifetime. Some applications needs multiple types of user interfaces today. Others will need to grow to accommodate the world of Rich Internet Applications in the next few years. This session discusses the architectural challenges in creating applications that are capable of supporting multiple UI technologies, and in creating rich client applications with more capability and logic than typical HTML-based user interfaces of today. We?ll look at the necessary patterns, such as Channel Adapter, Command, Observer, and Model-View-Presenter to see how each can be applied to rich Internet-based applications to create applications that are loosely connected and agnostic about data sources and data transports. We?ll look at layering the client systems when using technologies such as WPF and Silverlight, and how to properly take advantage of state on the client. And we?ll discuss some of the attributes of .NET that make it cost-effective to create applications that simultaneously support multiple user interface technology stacks.

Fresh Cracked CAB - Ward Bell

Smart Client line-of-business applications are known for their enormous number of screens. Every screen is crowded with UI controls, elbowing for pixel room on a panel or tab. Along come the proponents of Model-View-Presenter telling us to break those screens into multiple sub-views of at least four class files each ("model", view, view interface, and presenter). Then we need page controllers to compose and manage them. There's an explosion of moving parts. Why is this a good thing?

The Future of Model-Based Design - David Trowbridge

Models are an effective way to manage the complexities of application evolution and design. Future versions of Visual Studio Team System will include is building out an integrated set of designers which help allow you to visualize and evolve your existing code towards a target architecture using a best practice based approach. Integration between designers and Team Foundation Server TFS enable you to flow information between models, code and team members involved in the SDLC. Cutting edge code and metadata visualizations let aide you in comparing compare your actual code with the intended design to guide your application evolution. Team factories, based on specific application types, can be plugged in to guide you through the construction process and jump start your development efforts. This session will provide you with an overview of some of the efforts going on inside Microsoft to empower the code based developer and architect with next generation tools.

The Future of Design Patterns (panel) - Dragos Manolescu, Wojtek Kozaczynski, Ade Miller

Future of patterns & practices - Rick Maquire

Grid Security - Jason Hogg

This session will provide an overview of a security declarative, logic-based security policy language called SecPAL which is being developed by the Advanced Technology Incubation team and Microsoft Research Cambridge. SecPAL has been designed to address challenges relating to access control including: establishment of trust, fine grained delegation, compliance and support for different policy authoring models. The presentation will include an overview of SecPAL, plus a walkthrough of its application and demonstrations based on the .NET research release that is available from http://research.microsoft.com/projects/secpal.

Introducing the Aikido Project - Andres Aguilar

Aikido is a new ASP.NET control framework that builds on top of ASP.NET AJAX, providing XHTML compliance and CSS friendly designability.

Aikido is designed to simplify new control development. We will describe the Aikido architecture and show how to build new controls that take advantage of it.

Lessons Learned in Unit Testing - Jim Newkirk

It has been over 5 years since the first release of NUnit 2.0. In that time there have been literally millions of tests that have been authored. Some of these tests have become invaluable resources for their teams. Others have not been maintained and were viewed as failures. This session will describe some of the patterns that improve the usefulness of your tests as well as highlight key anti-patterns.

Make It Your Own - Scott Densmore

The deliverables from patterns & practices provide guidance for developing Enterprise Applications on the Microsoft platform. When adopting this in your organization, sometimes you would like to make changes to meet the specific needs of your organization. This talk will cover ways to make changes to the code deliverables to help make them you own.

Soon we notice the structural uniformity from screen to screen. There has to be; we can't afford to turn each screen into a work of art and users would be confused if we did. Perhaps we can harness that uniformity, slow the file bloat, and still build loosely coupled, testable applications that exploit patterns such as MVP. This session introduces architecture and techniques for building pages dynamically with reusable views, presenters, and controllers. It draws upon recent experience with CAB-based development that is starting to appear in some commercial applications.

Patterns of Software Factories - Wojtek Kozaczynski

Examining implementation of design patterns can give you tremendous insight into how to apply them in the solution you are building. The patterns & practices factories are a rich source of examples of implementations of many software patterns. This session will explore their evolution of some of the most common and useful patterns including dependency injection, chain-of-responsibility, MVP, container hierarchy, proxy, and more.

Moving Beyond Industrial Software - Harry Pierson

Computers have been instrumental in ushering in the post-industrial age. Yet, most enterprises today are run with an industrial mindset and the IT department is organized like a factory. This creates a tension between the forces of industrialization that define the organization and the forces of post-industrialization that define today?s marketplace. For example, our post-industrial world is becoming more decentralized by the day. Yet many organizations believe the key to a successful service oriented architecture ? a very decentralized system design ? is to have a central service repository.

In this session, Harry Pierson will examine this tension, get you thinking outside the industrial mindset and help you think about software development in a post-industrial way

The Right Tools for the Right Job - Rocky Lhotka

It seems like building applications keeps getting harder, not easier. The technology options to choose from keep multiplying, and each of them is billed as the answer to everything. Should you use object-oriented concepts, service-oriented concepts or maybe workflow? Or do you go with SOA or n-tier client/server, and is there even a difference? The reality is that you may need to use any or even all of these technologies. Each one is designed to solve a specific problem space, and is a weak solution for other problem spaces. Join Rockford Lhotka in a pragmatic discussion about when to use all the technology options at your disposal.

A Software Patterns Study: Where Do You Stand? - Dragos Manolescu

Recently Microsoft's patterns & practices group conducted a survey that indicates a significant gap between the patterns expert community and the software practitioners attempting to use patterns and leverage pattern thinking in their daily work. As this gap widens it will lead to an irreversible divide between the two communities, and patterns will fail to deliver their potential. In the light of our experience of using patterns to package development guidance as well as input from practitioners using patterns, we analyze the key causes behind this gap and recommend a set of actions aimed at the patterns expert community. Bridging this gap will have a dramatic effect on practitioners? understanding of patterns and their ability to leverage them as the patterns expert community envisions..

Using Team Factories - David Trowbridge

First generation factories provided a wizard-based, guided design experience for an individual developer. The factory concept has now evolved to include the entire team and the use of models to manage the complexities of application design. In this session you will besee an overview of the capabilities of a team factory, which include code generation, work item generation, test creation and Domain Specific Languages (DSLs).

Web Client Guidance: Building Rich Internet Applications with ASP.NET AJAX and the Web Client Software Factory - Michael Puleio, Chris Tavares, & Blaine Wastell

Rich Internet Applications (RIA) are here! With their arrival comes a whole new set of standards for web user interface experience. In the RIA world, the traditional server-centric continual post-back model no longer keep users happy. In the new world, it?s all about the browser experience and providing richer, more responsive and fluid applications that look and feel more like a traditional smart-client. Within Microsoft a number of technologies have emerged including ASP.NET AJAX, Silverlight and SharePoint to address these concerns. For Enterprise Line-Of-Business application developers using the Web Client Software Factory, they may be asking themselves ?Is there anything in this for me?? and ?Can I create composable, RIAs with WCSF??. The answer is ?yes!? Come to this session to hear about the exciting work we?ve been doing on the client team that leverages ASP.NET AJAX to provide that next generation experience. We?ll talk about things like AJAX views, Contextual Auto complete, Client-side validation, DI on user controls, and our new style of deliverables.

What?s New in "Rosario" Process Templates?  - Alan Ridlehoover

Process is a means to an end. Without enough process, you can stray off course. With too much process, you?ll never get anything done. Team Foundation Rosario will contain significant changes to the familiar Agile and CMMI process templates. In this session, Alan will demonstrate the latest bits and explain the thinking as they were created.

"Yet Another Agile Talk on Agility" - Peter Provost & Brad Wilson

One of the best ways to learn about agile software development is by doing it. This talk will be facilitated using an agile project management approach to prioritize and answer questions from the audience by a panel of agile experts. Come experience agile first hand and get your questions answered at the same time.