Welcome to MSDN Blogs Sign in | Join | Help

Test Management

Testing and Test Management (TM) is crucial for successfully delivering projects. Therefore I wrote a white paper on Test Management which can be found attached to this entry. It looks at TM from a Project Management perspective rather than from a Development perspective and the content originates in the eperience gained in several projects over the last years.

Furthermore I had a lot of discussions about TM and Architecture. It led to a new buzzword: Design for Testing. How to test a solution should be considered already when it is designed!

Windows Workflow Foundation (WF) and BPEL

Once more I was asked in a Session about WF why we do use XAML and not BPEL to describe Workflows as markup. The short and simple answer from my personal point of view is: Reading the definition of BPEL, there is stated: [...] is serialized in XML, and aims to enable programming in the large. The concepts of programming in the large and programming in the small distinguish between two aspects of writing the type of long-running asynchronous processes that one typically sees in business processes. [...] AND [...] Programming in the large generally refers to the high-level state transition interactions of a process—BPEL refers to this concept as an Abstract Process [...].
XAML as used with WF focuses on specific, transformable, implementable Workflows from a developer perspective. BPEL focuses on the business perspective so it is aome abstraction levels higher than XAML. As WF will be used by future versions of BizTalk which can handle BPEL, everything can be found on the appropriate layers.

Posted by anderl | 2 Comments

Calling a Windows Communication Foundation (WCF) - Service from a Workflow

When using WinFX Feb CTP and building workflows based on it after a while the question arises: How to integrate Windows Communication Foundation (WCF) based services with Windows Workflow Foundation (WF)?

Looking at the available activities coming with WF there is one which seems to be a good candidate: InvokeWebService.

So I built a WCF Service with a data contract (separated from the service implementation in an own assembly named OrderContract, defining two classes: Order and OrderItem which is used by Order) and hosted the service on IIS. This should work well with the InvokeWebService-activity from WF. The service provides one method submitOrder(OrderContract.Order).

Next step was to implement a simple sequential workflow containing one activity to invoke my WCF service.
I added a private member of type OrderContract.Order to the workflow cause I want to link that member with the parameter needed
by the WCF service method submitOrder(OrderContract.Order).

Adding the InvokeWebService-activity to the WF starts a wizard which tells me to specify the URL of the service. I specify the URL and choose a name for the Web Reference. Done this I specify the method of the service to invoke by the activity and its properties (two for the result and one for the parameter of type OrderContract.Order).

Surprise: The property window doesn't allow me to assign my private member of type OrderContract.Order to the parameter-property of the service's method.
Reason: The wizard generated a proxy (including the data contract information) for the service in a namespace with the name of
the Web Reference. So for the WF activity the private member and the property are of different type cause they reside in different namespaces.
Solution: Renamed the Web Reference so that it has the same name as the assembly containing the data contract (OrderContract).

That results in identical namespaces and I can assign the private member to the property.

The better approach is to generate a proxy client for the WCF service using the svcutil-utility because it enforces the WCF paradigm of separating business logic and transport. The proxy client can be used in a WF code activity. The service configuration information for the client has to be added to configuration file of the application hosting the WF.

Attached you can find the two solutions I used for the scenario with the InvokeWebService-activity.

Posted by anderl | 2 Comments

Attachment(s): WFWCFIntegration.zip

What is Software Architecture?

There is a bunch of definitions circulating around the net. Is it dedicated to the role definition of the Software Architect? If yes - what is the duty of the Solution/Enterprise Architect and what the duty of the Infrastructure Architect? Is building a solution comparable to building a house?

A good overview about the topic can be found at the Carnegie Mellon Software Engineering Institute.

Posted by anderl | 0 Comments

Visual Studio and ITIL

We have a lot of discussions with customers on the topic 'How does VSTS support ITIL?'.
First some definitions:

  1. ITIL covers Service Delivery and Service Support but not Development. It mentions Development but does not take care how it is done e.g. from a Process perspective.
  2. Microsofts Operational Framework (MOF) is based on ITIL.
  3. The IT-Lifecycle (Plan, Build, Deploy, Operate) is covered by MOF and MSF. MSF focuses on Plan and Build, MOF on Deploy and Operate (MOF itself defines 4 quadrants {Change, Operate, Support, Optimize} but I want to keep it simple by matching it on the ISO Lifecycle). Of course MSF and MOF overlap on their borders.
  4. MSF as a Development Framework is included in Visual Studio Team System (VSTS).

So how does VSTS support MOF and how are MOF and MSF working together?

Be aware that the term 'Configuration' has a quite different meaning within ITIL than within Development. In ITIL, a configuration is a tested and agreed package in a Production environment, not some code etc under development or test.

Let's look where ITIL interacts with Development from a Dev's perspective:

Service Planning

  1. ITIL looks at Services from a business and operational view. Maybe the most important artifact is a Service Level Agreement (SLA). From the Users and Dev's point of view the Service Level Expectation (SLE) is the bridge to the SLA. The user has an expectation, the development has to satisfy it and the operation has to enable it. In the next edition of the Architect Journal, Arvindra Sehmi and Beat Schwegler will address those topics in deep.
  2. Security is a major tenet influencing all players at all levels. As it is part of ITIL also, it shows the necessity of an Enterprise wide Security concept implemented and managed at the different levels as appropriate.
  3. Capacity planning influences especially the requirements on scalability.

Problem Management

An incident can be transferred to a problem. It can be kept as it is by flagging it as a 'Known Error' which is held in a special repository used by the Help Desk / Incident Management or it can become a Dev Change Request which will be transferred to the Change Management.

Change Management

  1. The central instance for ITIL is the Change Advisory Board (CAB). Members of the CAB review Change Requests (CR), analyze their impacts and approve/decline them. Referred to MSF at least the Project and Product Manager should participate in the CAB where appropriate.
  2. The Project Manager has to define new Dev Tasks for a submitted change (either Dev or Operation originated). That leads to two CR tickets: One in the ITIL environment (a CR) and one at Dev level (e.g. a MSF task).
  3. A new release is built by development, tested and if agreed deployed.

Release Management

  1. Within ITIL, the Release management is responsible for deploying a configuration from a Definitive Software Library (DSL) to the intended location. The Development is responsible to provide all necessary artifacts (tested and approved) in the DSL.
  2. Microsoft's Dynamic System Initiative (DSI) introduces System Definition Models (SDM) which are supported by the VSTS Distributed System Designers. These SDMs include all necessary informations about environments and their requirements at the different layers (Application, Hosting, Network, ...).
  3. In particular, the Deployment Diagram enables the generation of XML and HTML Deployment Reports which can be used to feed a self written, custom Deployment tool (Future Versions of SMS will bridge today's gap in automating deployment).

Conclusio: VSTS in combination with Team Foundatiuon Server (TFS) supports ITIL. There is some effort necessary to align the customer's development and delivery/support/management process. With the bunch of Web Service Interfaces of TFS and the abilities of VS2005 including the extensibility points I would state: Visual Studio is ITIL enabled.

Posted by anderl | 1 Comments

Migrating Apps from WinFX Jan CTP to WinFX Feb CTP

Migration of Applications developed for WinFX Jan CTP to WinFX Feb CTP is sometimes a little bit tricky. A good summary of necessary actions can be found here.
Posted by anderl | 0 Comments

Epilog: 15th Architect Forum, Vienna, Austria

Yesterday the 15th Architects Forum took place at the Microsoft Office in Vienna. Mario and I discussed the Windows Communication Foundation (WCF), Windows Workflow Communication (WF) and Office 2007 and how they integrate into each other. Although the intended audience are Architects, we showed a lot of coding. I personally think that Architects should have an understanding of the possibilities new technologies offer to developers. They should know about the efforts in implementation to support the Project Managers with scheduling and resource decisions. Implementation details of upcoming technologies espacially related to integration issues (i.e. WCF and WF) can have major influence on architectural decisions, whereas the knowledge of some details of established (i.e. well known and often deployed technologies) is up to developers.
Posted by anderl | 0 Comments

Process Template Editor for Visual Studio Team System

Imaginet is creating a free Process Template Editor.

Incredible great stuff! After working a lot with Process Templates by editing the XML-Files this tool is marvellous.

Some things to mention:

  1. You need to have installed Visual Studio Team Explorer
  2. Working in online mode requires the template to be opened locally. It just enables better validation of the template by using TFS infrastructure.

The minimal set of entries which is needed in a template consists of ‘Area’ and ‘Iteration’. Anyway dropping things like Work Items from SW Development Processes and not only disables powerful reporting abilities of TFS. Assuming that Software Development should produce results :) especially (Project) Management is interested in item tracking. Therefore customization of templates should be done carefully. Read more about Software Development Processes on the MSF Homepage.

Posted by anderl | 0 Comments
 
Page view tracker