Technical Sessions (Abstracts Coming)

Acceptance Testing: How To Decide if Software is Ready for You and Your Customers- Grigori Melnik & Michael Puleio

In this talk, we will outline our heuristic models for thinking about accepting software. These will include activities for managing readiness assessment and acceptance testing. We will discuss the Gating Model, the Decision Making Model, and the Doneness Model and show how to apply them in various project contexts. This guidance will apply to both agile and non-agile teams, and will be of interest to anyone builds or commissions software.

Agile Development Case Study using Best Practices - Gabe Brown & Adam Meltzer

How would your team double code quality, reduce defects by 80%, reduce our estimation error by 25% (and actually know what it was) and reliability ship working software with only a small increase in development time? Come discover how our team did exactly that by leveraging Microsoft?s Engineering Excellence best practices. We will discuss the best practices used, the pros and cons of each and the empirical data on how they contributed to our product overall.

Agile Security - Bryan Sullivan

The Security Development Lifecycle (SDL) has been instrumental in reducing the number and severities of security vulnerabilities in Microsoft products, but historically, the SDL has been difficult to implement in Agile development environments. This session will detail the process changes that the SDL team has made to improve the applicability of the SDL to Agile and other Rapid Application Development methodologies. We will begin with some background material on the SDL; no previous experience with the SDL is necessary.

Application Architecture 2.0 - The Evolution - J.D. Meier & Javed Sikander

Application Architecture Guidance 2.0 is the definitve guide to the Microsoft custom application development platform, designed to help architects choose the right architecture and technology for their applications. The guide uses application types such as Mobile Apps, Rich Internet Apps, Rich Client, Services and Web Applications to illustrate common patterns, architecture and ?ilities? be considered. This session presents the key concepts from the guide with examples, key principles, practices, patterns and anti-patterns.

Architecture: Simple or Hard? - Rocky Lhotka

I?ve heard it said that there are only 2-3 valid architectures. I?ve also heard it said that every application requires a unique architecture. If there are only 2-3, how can this be so hard? If each one is unique, how is it even possible? We all know architecting software is challenging, but I believe it is true that there are a limited number of valid architectural patterns. In this session I?ll discuss those patterns, and how they should be tailored to meet the unique demands of each application.

Architecture without Big Design Up Front - Peter Provost

Microsoft Visual Studio Team System (VSTS), code-name "Rosario" Architecture Edition, introduces new UML designers, use cases, activity diagrams, sequence diagrams that can visualize existing code, layering to enforce dependency rules, and physical designers to visualize, analyze, and refactor your software. See how VSTS extends UML logical views into physical views of your code. Learn how to create relationships from these views to work items and project metrics, how to extend these designers, and how to programmatically transform models into patterns for other domains and disciplines.

Building Manageable Applications - Alex Homer

Modern automobiles have become so complex that they require more computing power than that of the average desktop computer from of a few years ago. So what happens when it goes wrong? Usually, an engine-shaped red light is all the "user" sees. This basically means: "drive to your nearest dealer and let them fix whatever has failed." The dealer plugs the car into another computer, which prints out reams of data about the system events, performance, and status. They immediately know that they just need to fit a replacement knurdle widget and it will all work fine again. Do your applications behave like this? When they go seriously wrong, does the user just see an error message saying "Sorry, something failed, please contact your system administrator"? That's fine, but what does the system administrator do next? Do you provide them with the facility to extract useful information that will help them to locate the fault and fix it? Or do they have to run the application themselves and try to figure it out from experience? Or maybe they simply phone the development team and say "It's broken again..."?

Studies show that the most significant costs for modern distributed applications occur during the operational phase. On average, implementation and installation account for only around 20 percent of the total lifetime cost. The remaining 80 percent is the cost of deploying, maintaining, and managing a complex application. Architects and system designers can use the Team System Management Model Designer Power Tool (TSMMD) to generate a model of an application that contributes to a minimized TCO. The TSMMD also assists developers to implement the required instrumentation and create management packs for monitoring systems, such as Microsoft System Center Operations Manager 2007. OK, so it sounds boring, but it could change the way you think about designing and implementing exception handlers, and it even writes the code for you!

Composition & Presentation Patterns - David Hill & Bob Brumfield

Are you composing inside-out? Outside-in? When should you apply the patty-cake pattern? During the development Prism, Prism 2.0, and other UI frameworks a number of approaches to UI composition and applications of separated presentation patterns have been explored. This session will cover the approaches for composing your user interfaces and discuss the various separated presentation patterns and their applications.

Lessons in Data-driven Silverlight Applications - Ward Bell

It?s early days for Silverlight 2.0 but we that hasn?t stopped us from besigning and building Line-of-Business (LOB) applications! Ward demonstrates an example and talks about challenges encountered and overcome such as how to cope with asynchronous persistence operations, work in some of the early Composite Application Guidance from PnP, and use some Domain Driven Design artifacts.

Data Access Guidance - Don Smith

The necessity to access data is common across all meaningful software solutions. There are so many types of applications and often their data interaction requirements are quite different. Couple this with the many different technology options to choose from and the task of choosing the right one and using it correctly for your scenarios can seem like a daunting task. In this session we'll weigh different data access technology options (ADO.NET Entity Framework and LINQ to SQL) against a common frame to see how they compare on various technical and organizational factors. The assessment frame is being developed as part of a new Data Access Guidance project in patterns & practices.

Distritbuted Agile & Microsoft p&p- Ade Miller

Distributed development is a fact of life for many agile teams. Unfortunately most agile methodologies or approaches tend to assume that the team is co-located in a single team room. They give little guidance as to how to address team distribution although best practices are starting to emerge within the community.

Microsoft?s patterns & practices group has been following an agile, distributed development approach for several years. During that time teams within this group have experimented extensively with different approaches to best address the challenges of distributed agile development. This talk outlines the challenges faced by distributed agile teams and details some of the best practices to address these issues and build successful distributed teams.

Drowning in Complexity: What You Can Do About It - Billy Hollis

What?s the biggest problem facing architects and developers today? Billy Hollis believes that it?s the extreme and ever-increasing complexity of the technologies we use as platforms. In this session, Billy will look at the signs that complexity in software development is getting out of hand, and how existing practices are not up to the task of dealing with that challenge. He doesn?t pull punches; some sacred cows come in for rather severe criticism. Then he?ll venture some ideas on dealing with complexity today and what changes in the industry are needed long term to counter the problem.

Dynamic Rules-Driven Architecture - Billy Hollis

Many of today?s software systems are no longer vertical silos in a single organization. As we evolve our architectures to cope, we simultaneously must meet the challenges of increasingly complex data and a faster pace of software innovation. One way to address the challenges is to rearchitect our systems to make them more rules driven, using dynamic, declarative rules that are only loaded at runtime. In some fields, such as Software-as-a-Service and healthcare, such dynamic rules are essential just to get an acceptable base level of capability. This session will cover some of the approaches to rules-driven architectures, and drill down on an approach that the presenter has used in several healthcare applications.

Enterprise Library: 4.1 and Beyond - Chris Tavares & Grigori Melnik

Enterprise Library has become an essential part of many businesses systems. In this talk we?ll look at the recently released Enterprise Library 4.1, and discuss the new features and recent enhancements. Then we?ll move forward and talk about where Entlib is going, focusing on proposed architectural changes that will make Entlib more composable, easier to consume, and easier to use in conjunction with other libraries and frameworks.

ESB Guidance - Dmitri Ossipov

The purpose of this session to present plans and results of ongoing work for ESB Guidance v2.0 for Microsoft BizTalk Server 2009. ESB Guidance 2.0 delivers updated prescriptive guidance for applying ESB usage patterns, improved itinerary processing, itinerary modeling using a visual Domain Specific Language (DSL) tools approach, a pluggable resolver-adapter pack, and an enhanced ESB management portal. The session will include demonstration of new features and expose future plans.

Evolutionary Design- Jim Newkirk

How much of the design of a system changes during implementation? When these inevitable changes occur the design must evolve to meet the new requirements. If it is truly inevitable then an interesting question can be posed ? Instead of spending a large amount of time upfront on the design can you put in place a series of practices to enable the design to evolve during the implementation? This session highlights the various practices of Evolutionary Design (i.e. Test-Driven Development, Refactoring, Simple Design, and Continuous Integration) and how these practices work together.

Fundamentalist Functional Programming - Erik Meijer

In 1984, John Hughes wrote a seminal paper "Why Functional Programming Matters" in which he eloquently explained the value of pure and lazy functional programming. Due the increasing importance of the Web and the introduction of many-core machines, in the quarter century since the appearance of the paper the problems associated with effectful imperative languages have reached a point where we hit a brick wall. We argue that fundamentalist functional programming, that is radically eliminating all side-effects from our programming languages, including strict evaluation, is what it takes to conquer the concurrency and parallelism dragon. We must embrace pure lazy functional programming "all the way," with all effects apparent in the type system of the host language using monads. Only a radical paradigm shift can save us, but does that mean that we will lose all current programmers along the way? Fortunately not! By design, LINQ is based on monadic principles. The success of LINQ proves that the world does not fear the monads.

How We Use TFS at Microsoft - Stephanie Saad

MVC & Dynamic Data - Brad Wilson

The ASP.NET MVC framework is an exciting alternative to ASP.NET WebForms. The strength of MVC is that it gives you a clear separation of concerns, with fine-grained control over the HTML and Javascript that makes writing Web 2.0 applications much more streamlined. The ASP.NET Dynamic Data framework enables you to quickly build applications that are driven by data and business logic. In this session, Brad will preview both the ASP.NET MVC framework and the Dynamic Data implementation that's currently being developed especially to run on top of ASP.NET MVC.

Open up your Applications with Managed Extensibility Framework - Glenn Block

Today, it is difficult for applications and frameworks to meet an open-ended set of needs. Building in extensibility allows third-party customization, however there are many challenges in doing so. The Managed Extensibility Framework (MEF) is a new extensibility model in the .NET framework that addresses many of these problems. It provides as simple declarative model for application developers and extenders. Come to this session and get an overview on what it is and what it will do for you.

p&p - Looking Ahead - John DeVadoss, David Hill, & Ajoy Krishnamoorthy

Presentation Layer Anti-Patterns (How they smell and how to avoid them) - Erwin van der Valk

Crafting a great presentation layer is really, really hard. Even if you come in, packed with a lot of knowledge on object oriented principles, design patterns and years of development experience, you can still end up with a UI layer that?s hard to maintain, strewn with tightly coupled or duplicated code. So what happened? This presentation zooms in on why presentation layer design is so difficult and why certain patterns or designs might seem like a great idea at first but can later end up causing a lot of trouble.

Porting CSLA .NET to Silverlight - Rocky Lhotka

Silverlight may well become the primary development target over the next several years. But there are many issues involved in taking .NET code and getting it to run in the Silverlight environment. CSLA .NET is one of the most widely used development frameworks for .NET, and there is now a version for Silverlight. Join Rocky in a discussion about the issues, challenges and techniques involved in porting CSLA .NET into the Silverlight environment.

Pumping Iron: Dynamic Languages on .NET - Harry Pierson

As you may know, Microsoft is developing IronPython and IronRuby, .NET implementations of the popular open-source programming languages Python and Ruby. While it?s clear that Microsoft wants to attract existing Python and Ruby developers to .NET, the role of IronPython and IronRuby for existing .NET developers is less clear. What value is there for a .NET developer in learning IronPython? What are the tradeoffs between IronRuby and a more traditional .NET language like C# or VB? Harry Pierson, new PM for IronPython, will discuss where dynamic . languages fit in the.NET developers toolbox.

Sharepoint Guidance - Francis Cheung & Blaine Wastell

With the growing presence of SharePoint 2007, more and more developers are looking to use SharePoint as an application development platform. Available guidance is provided by many sources and can often seem contradictory. We provide architects and developers with some help getting started with deployment, unit testing, and versioning. We also help with many common architectural decisions such as SharePoint list versus database.

Web Apps at Large: Distributed Caching - Drew Miller

Distributed caches are increasingly being used by high-traffic websites in efforts to improve performance and scalability. Using a distributed cache on Unix-type operating systems is now well-understood, but very few Windows- and ASP.NET-based websites currently use a distributed cache. Microsoft?s Velocity, an upcoming distributed caching system, intends to change this. In this session, I?ll provide an introduction to distributed caching, demonstrate Velocity, and present the patterns and practices of how (and how not) to integrate a distributed cache into your website.