Hakan's profileHåkan Forss BloggPhotosBlogLists Tools Help

Håkan Forss Blogg

Hakan Forss

Occupation
Location
Interests
I’m a system architect and developer with project and team leader experience. I have long experience of developing applications on a number of different platforms. I am innovative and can work independently. I always try to express my opinions and ideas, though never afraid of being proven wrong. I like being part of the project cycle from idée, thru sales, design, development and all the way to a finished project.

TechEd 2009 summary

All in all it has been a good TechEd, not great but good. The content this year was a bit of a repeat from last year but I went to different kind of sessions this year. More architecture and less concrete technical sessions. I tried to broaden my knowledge instead of sharpening it.

Having my colleague Tobias to discuss architecture with on a more general level was great. We had some great discussion about how we could improve our work as architects at Concordia Bus Nordic.

It was satisfying to get my architectural recommendations validated by lots of different speakers, thought leaders and people at Microsoft. The main parts in these recommendations are:

  • Maintainability is the greatest -ility of the all
  • Don't do big design up front but do it iteratively
  • Build on a layered architecture
  • Use some kind of Dependency Injection/Inversion of Control framework to handle dependencies, at least between layers
  • Use Interfaces to define dependencies and don't reference the concrete implementations, at least between layers
  • Use Services as the building blocks of your application but they should be focused for the application in question. If another application will later use the same service, good but don't try to make general services without a concrete user of the service
  • SOA is not about reuse, SOA is about isolation and flexibility

The best of TechEd for me:

  1. The Juval Löwy sessions
  2. The LAAAM session by Jeromy Carriere
  3. The nice company and great discussion with my room mate Tobias about architecture at Concordia Bus Nordic

The worst of TechEd for me:

  1. Not having the family with me
  2. The lack of new content in the development track compared to last year
  3. The Agile Development with Team System 2010 session because there are some great new features and the speaker butchered it in the session

My biggest takeaways:

  1. Even with lack of new content TechEd is a great conference to learn and meet people that have build the stuff.
  2. Architecture is a very important part of successful projects. If the architecture is done wrong you will loose money and potentially lots of money.
  3. I really need to learn PowerShell
  4. SOA should be applied as Service Oriented Applications on the grand scale but you should apply Service Orientation to every layer and subsystem of your architecture.

There are some many new influences that I need to think a little more about. I also realized that I need to learn more in some specific areas. Learning never stops and I like it. Hope to go to TechEd next year as well. See you then!

Session summary for Friday at TechEd09

WUX317 Easing ASP.NET Web Deployment with Microsoft Visual Studio 2010 and MSDeploy

This session showed Visual Studio 2010 and MSDeploy in action. The session was good. Some of the highlights where:

Web configuration transformation are a way to make changes to configuration files for different targets like test, staging and production. You define different transformation files for your configuration file and then depending on the build configuration the right transformation is used.

You can change whole sections not just attributes and specific elements.

MSDeply support database deployment. How ever there is no 100% integration with VSTS DB for adding db changes to the MSDeploy script. It looked like you could have both update and rollback scripts defined but I'm not sure.

WUX307 Death of a Web Server: Crisis in Caching

Good session about how to diagnose a website failing under load.  When trying to solve a performance problem you should test, test and the do some more tests to confirm where the real performance problem really are.  Performance monitor is one of the best tool and Richard recommender to begin looking at the following performance counters:
• #bytes in all heaps
• Requests queued
• Requests per second
• % processor time

On codeplex there is a tool, Performance Analysis of Logs (PAL) Tool, that help you with interpret the results.

When writing code for reading and adding to a cache you should follow the following pattern.
Check if not in cache
    Lock access to cache
        Check if not in cache
            Fetch from database
            Add
This is to prevent multiple threads to do the fetch from the database at the same time.

ARC301 An Introduction to the Application Architecture Guide 2.0

This was a meta session. A session about the application architecture guide and not about architecture guidance. But the guidance provided was:

  • Common Architectural principals
    • Separation of concerns
    • Single responsibility
    • Principle of least knowledge
    • Build to change instead of build to last
  • Common architecture patterns
    • Layered Architecture
    • Client-Server, N-Tier architecture
    • Service oriented and Message Bus Architectures
    • OO & Component-based Design Architectures
  • Development approach
    • Avoid "Big Design Upfront"
    • Iterative approach
      • Indentify key sceneries, spike, repeat
    • Reduce risk, increase confidence

SOA206 Every Class As a Service: WCF As the New Microsoft .NET

Technorati-taggar: ,,

Another great session by Juval Löwy. Juvals proposal is that all the added functionally you get from transforming every class into a WCF Service way overweighs the performance degradation. We showed some historical data that showed that every time you go to an higher level of abstraction and better tooling you get a performance degradation but the performance hit is nothing compared to the productivity boost you get with the new abstraction.

Juval said: Ideally, all classes should be WCF services. He also realize this is not very practical.

When combining his recommendations in session ARC315 Zen of Architecture and this session you get the suggested architecture:

  • At least every layer should be a WCF service
  • Always use a factory(WCF uses factories) or Dependency Injection framework to instantiate a layer-boundary implementation
    • This should also be used internally in layers to promote decoupling and maintainability
  • Only pass primitives between layers
  • Logic in data contracts should not cross layers

This is basically the architecture we use in one of our applications except that we currently use ASMX web services that don't give you all the ilities that WCF do.

It really feels good when you get parts of your architecture validated by some one like Juval.

Session summary for Thursday at TechEd 09

DPR302 Test Driven Development Techniques

This was a good session but did not contain anything new to me. I think it was more a 200 level session than a 300 level. Main take-away was:

Maintainability is "ility" #1!
- Jeremy D. Miller, “The Shade Tree Developer”

Studies show TDD improves maintainability:

  • 40-90% fewer defects
  • “Test first” a major positive factor

SOA302 Building RESTful Services Using WCF

A very good session that was very useful for me. I'm not that into the RESTful architecture but this session showed me that adding RESTful functionality to a WCF based service layer is very easy so I see no reason why not provide RESTful and SOAP based services.

DTL304 Agile Development with Team System 2010

The low point of the day. Interesting content but poorly performed. The demos failed or was sooooooo slooooooooow. Nothing really new was presented that has not been showed before.

The improved Excel integration, hierarchical work items, example use of reports and the refactoring to generate stub classes and methods are improved support for agile. Also the updated agile template could be useful.

SOA319 Interconnect and Orchestrate Services and Applications with Microsoft .NET Services

Very interesting session about the upcoming .Net Services in the Azure platform. The .NET Services provides a routing and queue service in the cloud that would make P2P communication between systems behind NATs and firewalls easier.

This could be one of the most interesting parts of Azure if you don't want to put your data and application logic in the cloud. Will have to investigate more.

Session summary for Wensday at TechEd09

ARC204 An Overview of the Azure Services Platform

This session was interesting but hade some overlap with another session from yesterday. The session contained an overview of the architectural aspects of the Azure Service platform. It was nothing really new for me that I had not read before. All in all an interesting session but nothing special.

ARC305 Architecture Refactoring: Improving the Design of Existing Application Architectures

The content of this session was interesting but poorly communicated. A disappointment for me because I expected more. The use of Dependency Injection and Aspect Oriented Programming is really a good way to refactor your architecture in an existing application.

WUX306 Building Scalable and Available Web Applications with the Microsoft Code Name "Velocity"

Good session. It was more about using caching to scale out than on Velocity it self.

Velocity do not replicate data it just do partitioning with the option to use HA that creates at least one secondary copy of the data. My basic comparison of Velocity to Ncache that we use today Velocity have fewer features but are performing the basic caching that we need.

With ASP.NET 4.0 output caching will be opened up for other providers.

DAT306 Building a High Availability Strategy for Your Enterprise Using Microsoft SQL Server 2008

Again an excellent session for me to expand my lacking knowledge in the SQL area.

 

Today I also had some time to go to the vendors expo and talked to some vendors about continuous deployment and tools for job scheduling.

The most promising right now are ActiveBatch and RepliWeb. The big question is if you really need these tools if you have SCCM

ARC315 Zen of Architecture

Juval Löwy was good as usual. This time he talked about his method of producing an architecture for a system.

Here are some of the main parts of Juvals method

  • Simple and effective analysis and design technique
    • Mechanizes design decisions
    • Focuses on the required run-time behavior
  • In 3-5 days
    • System architecture comprising 40-60 diagrams
    • Design validation
    • Vertical slice implementation and demonstration
    • Stress testing
  • Removing design and technology as a risk

 

  • Time crunch essential for prioritizing, focus and avoiding gold-plating
  • Sharing and capturing across the team
    • Thought process
    • Tradeoffs an insights
    • Use cases analysis
    • Operational assumption
    • Design decisions
  • Design and architecture survival
  • Communicate between architects

Some of the design rules Juval talkes about

One of the most important part of the architecture is to isolate the areas of change and make the areas of change decoupled from the rest of system

Systems are typically designed in layers, even simple systems

Layers are used to layer encapsulation

All cross-layer entities should be WCF services

You only pass the following between layers:

  • Primitives
  • Arrays of primitives
  • Data contracts
  • Array of data contracts

Logic in data contracts should not cross layers

A layer should always authenticate the caller. There is no need to pass the authentication thru layers.

I agree in the most parts with Juval but I think a more domain driven design approach is more useful.

Session summary for Tuesday at TechEd09

Technorati-taggar: ,,

ARC308 Patterns for Moving to the Cloud

Very good session that makes it clear that if you want to be prepared for scalability and flexibility you should really look at building your applications based on message passing thru some kind of queue interface. There is also a very good reason to decouple your application logic from the data storage to make it easier to move in to a cloud when needed.

Simon Guest presented 5 patterns for moving to the cloud:

  • Pattern 1 - Transference: moving existing applications to the cloud. The driver are Economy, consolidation and prototyping
  • Pattern 2 - Scale and Multi-Tenancy: adding scale when needed with low initial capital cost. The drivers are prototyping and risk mitigation
  • Pattern 3 - Burst Compute: adding computing capacity for short timespans. The drivers are avoiding over capacity
  • Pattern 4 - Elastic storage: adding storage as needed. The drivers are avoiding over capacity
  • Pattern 5: Inter-Org Communications: enabling communication between organizations. The drivers are Infrastructure Management

ARC314 Using LAAAM to Make Good Architectural Decisions, Fast!

Very good session with a very good method of reaching well based decisions on different subjects such as choose of architecture style, selection of vendor, technical implications and so on.

LAAM is a simple and flexible process with the following basic parts:

  1. Build a quality tree
  2. Rank at each node
  3. Figure out your alternatives
  4. Assess each alternative/scenario
  5. Let the tool do the some math
  6. Think hard about the result

Read more about it at Jeromy Carriere's WebLog

This has been the best session so far.

BIN204 Introducing Microsoft SQL Server Analysis Services

This was good session that helped me fill in some of my knowledge gaps.

ARC205 The Microsoft Application Platform: A Perspective

This session was thought worthy. But it did not really answer, at least my, question about what the platform really is. The option that SOA, in the term of Service oriented architecture, is not succeeding and the SOA, in terms of Service Oriented Applications, is succeeding and has a great future I strongly agree.

David Chappells points about business strategy and application platforms:

  • Business strategy means being different from the competition
  • Being different relies on strategic IT investments to support that differentiation
  • Strategic IT investments are most often custom applications
  • Custom applications depend on an application platform

and how to choose an Application Platform:

  • An application platform needs to work well in both the strategic and utility phases
  • The strategic phase requires:
    • Support for rapid development
    • With available developers
    • Current technologies
  • The utility phase requires:
    • Low cost
    • Long-term supportability

And his conclusions:

  • Application platforms are a fundamental choice for an organization
    • They’re the foundation for business strategy
  • Some observations:
    • The J2EE world is fragmentin
    • Team development tools finally address the right problem: optimizing the end-to-end flow
    • SOA isn’t succeeding in most organization
  • The notion of “application platform” is broadening
    • It now includes the cloud

My conclution: SOA is dead long live SOA!

WSV322 Web Application Deployment, Packaging, and Migration

This was a session I has been looking forward to. We are currently looking at solutions for doing continues deployment from our TFS build machine and MSDeploy really looks promising.

The session was really informative and answered most of my questions. For instance:

  • The deployment service do not need IIS to work
  • You can run as a specific user on the target machine
  • In the next version a command line provider will be added to allow for running scripts on the target

I think MSDeploy is the way to go for us. We will probably need to build some custom providers but that's ok because that means that I have to write some code :-)

Session summary for Monday TechEd09

Keynote

Total focus on IT Pro stuff. Some interesting things were:

  • APP-V - Application viriualization
  • App locker
  • Bit locker to go - using group policy to require external medias to only accept encrypted data
  • PowerShell support - if it is a server tool it should have PowerShell support
  • File classification system - you are able to classify files and then act upon the classification like not alowing to forward an confidential document to an non trusted user, delete files that has not been touched in a year and so on.

The biggest revelation for me was that you can't work with windows in the future without learning PowerShell. This leads me to believe you should always build your own apps to have PowerShell support.

BIN203 Democratizing Business Intelligence: delivering BI to the masses

This was an interesting session even if it was mostly a sales demo. Sharepoint and Excel are Microsofts UI technology for BI.

Visual Studio Team System 2010 Architecture Edition is targeted to reduce complexety in code, requierments and more. It attacks the problems of shared understanding, understanding existing systems and maintaning control of evolving systems.

ARC201 A lap around Team System 2010 Architecture Edition

What will Visual Studio Team System 2010 Architecture Edition aim at solving:

  • Understand the domain
    • UML
    • Modeling Projects & Explorer
  • Understand the code
    • Architecture Explorer
    • Sequence diagram Generation
    • DGML Graphs and "standard" Graphs
  • Maintain control
    • Layer Diagram & Custom MSBuild tasks
    • Work Item Integration
  • Extensibility

The current version is not supporting roundtrip engineering.

It is possible to add .Net specific metadata to the logical class diagrams

DGML is the way VS2010 are visualizing some of the diagrams, if not all. It is easy to add your own diagrams thru the extensibility.

The session was good. I would have liked to see some more stuff but it almost seamed like they had scaled back the feature set from the version I did see last year.

DTL301 Microsoft .NET-Connected Application Deployment

This session was the disappointment of the day. Too much focus on .Net Framework deployment and detection and almost nothing on how to deploy your actual apps. Very thin on MSDeploy and how to do deployment when working with a build server.

PRC07 A Day of WCF + WF + Dublin

Technorati-taggar: ,,,,

Today it has been a day about WCF, WF and Dublin as the titles said. Michele Leroux Bustamante has a better speaker and presenter than Zoiner Tejada. The day was average to good. The demos was a little to simple.

The tag line of the day was "The new middle tier" but my tag line would have been "The workflow middle tier" because most of the new stuff is in the workflow space.

On the WCF side it looks like it is mostly deployment, management and monitoring enhancements for the 4.0 version. Routing based on content and some of functionality from the REST Starter Kit is also new WCF 4.0.

Workflow Foundation 4.0 is really an totally new version. An updated sequential workflow type and the new flow chart type is the basic building blocks. No built in State Machine as of now. On the activity side WCF integration is the big thing and it looks good. Activities will even be generated from service endpoints for ease of use of services.

The programming model has also changed concerning how variables and input/output arguments are handled. It now makes sense how you pass information around in WF.

New is Declarative Workflows that really makes activities reusable between implementations.

The new WF designer is built in WPF and it looks better but still the property window development model is not very user friendly. Please give us a more code based UI or something that does show more than 10 chars at the time!

Lots of new features in persistence, tracking and monitoring.

"Dublin" is an improved IIS hosting model for WF based services. Lots of good stuff for the IT Pros and the infrastructure.

MSDeploy will be the deployment story and PowerShell the API for management with a GUI on top.

Interesting day but my expectations was higher.

Off we go to Tech Ed US 2009

Technorati-taggar:

Tomorrow I'm off to Tech Ed US 2009. I will try to post my notes on the sessions I will attend here as I did last year. I will also post updates on my twitter account @hakanforss.

My way to see the light about Lean

Technorati-taggar: ,,

Two to three years ago I started my knowledge journey in the area of Lean. I had at that time been into Agile in general and Scrum in particular for some time and was wondering what all this talk about Lean was and how it was related to Agile. In this post I will not try to explain my opinion about this but I will give you the main outline how I started my journey thru a list of books that I recommend.

My Lean booklist in my reading order:

  1. Implementing Lean Software Development: From Concept to Cash by Mary Poppendieck , Tom Poppendieck
  2. The Toyota Way by Jeffrey Liker
  3. Lean Thinking: Banish Waste and Create Wealth in Your Corporation by James P. Womack and Daniel T. Jones
  4. Lean Solutions: How Companies and Customers Can Create Value and Wealth Together by James P. Womack and Daniel T. Jones
  5. Going Lean: How the Best Companies Apply Lean Manufacturing Principles by Stephen A. Ruffa
  6. Scaling Lean & Agile Development: Thinking and Organizational Tools for Large-Scale Scrum by Craig Larman, Bas Vodde

If you havn't read these yet my recommended order is: 2, 6, 1, 3 5. Lean Solutions is optional in my opinion.

I have three more books that I'm about to read in the comming month:

  1. Extreme Toyota: Radical Contradictions That Drive Success at the World's Best Manufacturer by Emi Osono, Norihiko Shimizu, Hirotaka Takeuchi
  2. Beyond the Goal: Theory of Constraints by Eliyahu M. Goldratt

Note:The reason why The Goal: A Process of Ongoing Improvement by Eliyahu M. Goldratt and Jeff Cox is not up there is because it is not for sale thru Audible.com in Sweden, DRM stuff stinks. I will try to get it on audio and if not possible dead trees will too.

Anything you like to add?

How to build ClickOnce applications with TeamBuild for multiple environments

 

In ths post I will show how to build ClickOnce applications with TeamBuild for multiple environments in Team Foundation Server.

I have been trying to build ClickOnce applications in our TeamBuild for some time now and only after long ours of googling and trial and error was I successful. The most useful information I found on this blog:

Publish ClickOnce project with Team Build?

Made some modifications and refactoring and here are the code we currenlty use:

This is how you call the ClickOnce build from you TeamBuild project file (line breaks added for readability):

    <Msbuild
          Projects="$(SolutionRoot)\ConfigFiles\BuildClickOnce.targets"
          Targets="BuildClickOnce"
          Properties="SourceDir=$(SourceDir);PublishDir=$(PublishDir);
ClickOnceAppName=$(ClickOnceAppName);ClickOnceExeFile=$(ClickOnceExeFile);
ClickOnceProduct=$(ClickOnceProduct);Company=$(Company);
ClickOnceDescription=$(ClickOnceDescription);ClickOnceUrl=$(ClickOnceUrl);
VersionNumber=$(VersionNumber);SigningCert=$(SigningCert);
SigningCertPassword=$(SigningCertPassword)
" />

For every environment or configuration change you want you use this. Below you find the BuildClickOnce.targets file (line breaks added for readability):

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\SDC\Microsoft.Sdc.Common.tasks"/>

  
    <Target Name="BuildClickOnce" DependsOnTargets="">
    
        <PropertyGroup>      
            <ClickOnceApplicationUrl>$(ClickOnceUrl)$(ClickOnceAppName).application</ClickOnceApplicationUrl>
            <AppPublishDir>$(PublishDir)</AppPublishDir>
            <SdkPath>C:\Program Files\Microsoft SDKs\Windows\v6.0A</SdkPath>
        </PropertyGroup>

        <BuildStep
          TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
          BuildUri="$(BuildUri)"
          Message="Buildning $(ClickOnceAppName) ClickOnce version: $(VersionNumber)">
            <Output TaskParameter="Id" PropertyName="StepId" />
        </BuildStep>


    <CallTarget Targets="UpdateWebPage" />

        <!--
  ************************************************
  Generate application manifest
  ************************************************
  -->
        <Exec
        Command="mage.exe -New Application -TrustLevel FullTrust 
-ToFile &
quot;$(AppPublishDir)\$(ClickOnceExeFile).manifest&quot;
-Name &quot;$(ClickOnceAppName)&quot; -Version &quot;$(VersionNumber)&quot;
-FromDirectory &quot;$(AppPublishDir)&quot;" WorkingDirectory="$(SdkPath)\Bin"/> <!-- ************************************************ Signing application manifest ************************************************ --> <Exec Condition="'$(SigningCertPassword)'==''" Command="mage.exe -Sign &quot;$(AppPublishDir)\$(ClickOnceExeFile).manifest&quot;
-CertFile &quot;$(SigningCert)&quot;" WorkingDirectory="$(SdkPath)\Bin" /> <Exec Condition="'$(SigningCertPassword)'!=''" Command="mage.exe -Sign &quot;$(AppPublishDir)\$(ClickOnceExeFile).manifest&quot;
-CertFile &quot;$(SigningCert)&quot; -Password &quot;$(SigningCertPassword)&quot;" WorkingDirectory="$(SdkPath)\Bin"/> <!-- ************************************************ Renaming source files to .deploy ************************************************ --> <ItemGroup> <SourceFilesToRename Include="$(AppPublishDir)\**\*.*"
Exclude="$(AppPublishDir)\*.manifest;$(AppPublishDir)\*.htm"/> <SourceFilesToDelete Include="$(AppPublishDir)\**\*.*"
Exclude="$(AppPublishDir)\*.application;$(AppPublishDir)\*.manifest;$(AppPublishDir)\*.htm"/> </ItemGroup> <Copy SourceFiles="@(SourceFilesToRename)" DestinationFiles="@(SourceFilesToRename->'$(AppPublishDir)\%(RecursiveDir)%(Filename)%(Extension).deploy')" /> <Delete Files="@(SourceFilesToDelete)"/> <!-- ************************************************ Generating deployment manifest ************************************************ --> <GenerateDeploymentManifest MapFileExtensions="true" AssemblyName="$(ClickOnceAppName).application" AssemblyVersion="$(VersionNumber)" MinimumRequiredVersion="$(VersionNumber)" DeploymentUrl="$(ClickOnceApplicationUrl)" Description="$(ClickOnceDescription)" Product="$(ClickOnceProduct)" Publisher="$(Company)" SupportUrl="$(SupportUrl)" EntryPoint="$(AppPublishDir)\$(ClickOnceExeFile).manifest" Install="true" UpdateEnabled="true" UpdateMode="Foreground" OutputManifest="$(PublishDir)\$(ClickOnceAppName).application"/> <!-- ************************************************ Signing application manifest ************************************************ --> <Exec Condition="'$(SigningCertPassword)'==''" Command="mage.exe -Sign &quot;$(PublishDir)\$(ClickOnceAppName).application&quot;
-CertFile &quot;$(SigningCert)&quot;" WorkingDirectory="$(SdkPath)\bin"/> <Exec Condition="'$(SigningCertPassword)'!=''" Command="mage.exe -Sign &quot;$(PublishDir)\$(ClickOnceAppName).application&quot;
-CertFile &quot;$(SigningCert)&quot; -Password &quot;$(SigningCertPassword)&quot;" WorkingDirectory="$(SdkPath)\bin"/> <!-- ************************************************ Generating Bootstrapper ************************************************ --> <ItemGroup> <BootstrapperFile Include="Microsoft.Net.Framework.2.0"> <ProductName>Microsoft .NET Framework 2.0</ProductName> </BootstrapperFile> </ItemGroup> <GenerateBootstrapper ApplicationFile="$(ClickOnceAppName).application" ApplicationName="$(ClickOnceAppName)" ApplicationUrl="$(ClickOnceUrl)" BootstrapperItems="@(BootstrapperFile)" Culture="en" FallbackCulture="en-US" CopyComponents="true" Validate="false" Path="$(SdkPath)\Bootstrapper" OutputPath="$(PublishDir)"/> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(StepId)" Status="Succeeded"/> <OnError ExecuteTargets="MarkBuildStepAsFailed" /> </Target> <!-- ************************************************ Marks a buildstep as failed ************************************************ --> <Target Name="MarkBuildStepAsFailed"> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(StepId)" Status="Failed"/> </Target> <!-- ************************************************ Updating web page ************************************************ --> <Target Name="UpdateWebPage"> <ItemGroup> <WebPage Include="$(PublishDir)\publish.htm" /> </ItemGroup> <RegEx Condition="Exists(@(WebPage))" Path="@(WebPage)" RegularExpression="#VERSION#" NewValue="$(VersionNumber)" Force="true"/> </Target> </Project>

Presentation: Korta releasecykeln med smart .NET arkitektur och Scrum

Idag höll jag en presention på Valtech Days med följande beskrivning:

Korta releasecykeln med smart .NET arkitektur och Scrum

Med agila arbetssätt som automatiserade tester, kontinuerligt integration och en löst kopplad systemarkitektur så har SwebusExpress minskat sin release cykel från 8 till 2 veckor.Scrum var metoden, Lean värdegrunden och Visual Studio Team System systemstödet.

Som vanligt så har jag svårt att hålla mig kort så det blev lite ont om tid på slutet men det känndes ganska bra. Hade hoppats på att jag skulle hinna med att visa lite kod också samt automatiska byggen i Team Foundation Server men det han jag inte med.

Du kan ladda ner presentationen här

Scrum for Team System version 2.2 är släppt

Idagarna har Conchango släppt Scrum for Team System version 2.2. Releasen innehåller bland annat:

  • Support för fler teknika miljöer
  • Nya rapporter
  • Ny funktion som heter "Report Slide Show" som visar rapporter i en slideshow på lämpliga rapporter för ett teamrum eller liknande
  • Buggfixar

Läs mer om releasen på Scrum for Team System Forum

 
Photo 1 of 140
Mina bokrekomendationer
Mina favorit PodCasts och bloggar
Diverse länkar som jag ville spara