Welcome to MSDN Blogs Sign in | Join | Help

Architect and Develop Search-Enabled Enterprise Applications

I have to admit that I fell in love with Enterprise Search... Finding stuff within an Enterprise is a very challenging task that differs in many ways from searching html or pdf on the web. Some of the questions I started to ask myself were:

  • What is the impact of Enterprise Search for a Solution Architect?
  • What does it take for an application to become searchable?
  • Or even more interestingly, how can I add search capabilities to my application?

If your interesting in these topics, my paper on "Architect and Develop Search-Enabled Enterprise Applications" might be an interesting reading for you ;-)

BTW, this will also be the topic for my TechEd.session in Barcelona.

Posted by beatsch | 1 Comments
Filed under: ,

The Iron Architect is back...

Simon just announced this year’s Iron Architect problem! I’m already looking forward to see some inspiring solutions…

Posted by beatsch | 1 Comments
Filed under: ,

We just got a superstitious rebate

Last week, I was speaking at the Developer Summit in Stockholm. It was after the speaker dinner when we (Erik, Dan, Patrick, Niclas and others) were heading to a bar for a couple of drinks. Patrick was in the process of paying when he suddenly started to laugh out loud. It was then when he realized that we just got a superstitious rebate;-)

 

Swedish to English translation: (“Vidskeplig \n\r öppen rab.kr” = “Superstitious \n\r Open rebate.sek”)

 Superstitous Rebate

 

Posted by beatsch | 1 Comments

TechEd Europe, I'm coming...

 

After Tech·Ed Israel and Tech·Ed US, Europe will be my third TechEd this year and I'm really looking forward to it! Being part of the content team, I'm especially proud about the great speaker line-up and the quality content. Everyone involved in events like this knows how much energy and passion is required to compile a great track. And so was it for Emmanuel and myself: Over the last 5 months, we put a lot of effort into our two tracks, the ARC and the CTS track. (If you wonder why there is no session with a CTS prefix, here is the answer: "We decided to reduce the amount of tracks to 5 (ARC, DEV, MBS, OFF, SQL). Therefore the CTS track is now embedded within the DEV track. However all CTS sessions are part of the BPI (Business Process Integration) virtual track.").
As you can imagine, we're really looking forward to see the result of our work...

If you can't go to Barcelona check out the amazing Virtualside. This is just a great idea, I love it...

If you're lucky and will go to Barcelona here are a couple of things you shouldn't miss:

  • The ARC booth
    Whether you have a specific question or just want to have a chat with another Architect, this is the place where Architects meet! BTW, this is also the place where you find more information about the great p&p stuff such as the Enterprise Library or the Service Factory. Come and visit us...
  • Participate in the Iron Architect Contest
    Who comes up with the best/most elegant/most innovative/smartest/... solution for the given problem and wants to win an amazing price? Come to the ARC booth and pick up the 'ingredients' for the Iron Architect showdown. The showdown will be live on Friday Fri Nov 10 15:15 (ARCWD06 Iron Architect Finals).
  • Don Smith's and my session "Proven Practices for Implementing Services"
    DEV308 Thu Nov 9 10:45 - 12:00 Room 113

    This session will take a closer look at some of the issues developers and architects encounter while implementing services using ASMX and Windows Foundation Classes (WFC). We'll discuss common challenges around contracts and messages and elaborate on how to decouple the service internals from its service interfaces without adding too much complexity to the overall service design. At the end of this session, we're going to demonstrate how to implement such services by leveraging the ASMX and WCF Service Factory from the patterns and practices team.
  • My session "Abstract Concepts: Architecting Applications for a Service-Oriented World"
    ARC 206 Fri Nov 10 13:30 - 14:45 Room 112
    Many people still believe that service-oriented systems are just a Web of applications connected through Web services, where as the real power of service-orientation lies in the definition of a conceptual service model that defines the contract and interaction of the services. Given the fact that few projects count as 'grass root' projects, this session covers how to build new applications and also about architectural re-factoring to move an existing application into the service-oriented space.
  • Iron Architect Finals
    ARCWD06 Fri Nov 10 15:15 - 16:30 Room 130
    Come and be a member of the audience and help decide the winner of the first annual Iron Architect showdown. Contestants have been given their ingredients, now it's time to see them perform in front of a live audience. All members of the audience will participate in voting for the winner. Come and be part of history and make your vote count!

Last but not least, don't forget your swimsuit as there are rumors that it it's still possible to take a swim in the Mediterranean...

Posted by beatsch | 1 Comments

My Tuesday at JAOO

What a day it was. I was surfing on a great wave while attending sessions about DSL, AJAX and Agile Development. I started the day with Markus excellent session on DSL best practices. Beside many other things, he emphasized on building your own metamodel, which represents the formal definition of the domain being described. Hey and I couldn’t agree more with his advice to never ever modify generated code (that’s exactly why I love partial classes ;-).

After lunch, I decided to interrupt my flow on DSLs and I attended Nikhil’s session on ASP.NET Ajax (aka Atlas). I liked his definition of Ajax: “It’s not about scripting or XML over Http but about providing a smarter experience for the user”. How right he is! An important building block for ASP.NET Ajax applications are server side controls. They provide a very nice programming model to abstract many of the client side scripting and therefore simplify the creation of consumer pleasing websites. In addition to that, it also provides a nice separation between content and site functionality.

A short break, and it was time to learn more about the intention of “Intentional Software”. They have a very ambitious goal of changing the way software is written: Today, the gap between the domain knowledge and the actual implementation in code is too big. Therefore it’s extremely difficult to provide traceability and consistency between these two representations. In contrast to the classical DSL approach, “Intentional Software” developed a “domain workbench” which allows them to mix the representations of different domains within a unified view. I certainly stay tuned on that…

Now back to web and Ajax: I attend Bruce’s great session on the “Google Web Toolkit (GWT)”. In a nutshell, it’s a toolkit that allows developers to build “Ajaxy” websites by leveraging the Java programming model. Its architectural foundation is around a Java compiler that finally produces JavaScript. It comes together with a Java class library to build the actual sites. Bruce really emphasized the fact that they put a lot of effort to make building Ajax applications as easy as possible and to give the user a very rich user experience. For example, this includes support for history, bookmarking and keystroke enabled tree controls.

 

Last but (certainly) not least, I attended Alistair’s session with the arcane title “If I was going to Glasgow, I wouldn’t start from here”. If you haven’t been there, you truly missed something. I don’t even try to summarize this 45 minutes but I want to say “thank you Alistair“: “I really enjoyed it and I wished it didn’t end after 45 minutes…”.

Posted by beatsch | 1 Comments

http://tempuri.org needs to be updated soon...

I'm really looking forward to see the following lines on http://tempuri.org:   

[ServiceContract(Namespace = http://microsoft.com/webservices/")]
public interface IMyWebService{
}

Posted by beatsch | 2 Comments
Filed under: ,

Speaker Idol - Are you the Next Speaker Star?

I’m super excited about the “Tech·Ed Europe: DevelopersSpeaker Idol contest. I believe this is a great opportunity to become an invited speaker at Europe’s largest IT event! If you’re a great presenter as well as a subject matter expert, you should definitely consider to participate in our “Speaker Idol” contest. I thoroughly  believe this is a great platform and I hope to discover some new super stars! We're looking for you...

Don’t wait; go for it!

 

 

Posted by beatsch | 0 Comments
Filed under: ,

Service-Oriented Modeling for Connected Systems – Part 1

Due my intense travel I completely forgot to blog that the first part of Arvindra and my paper on “Service-Oriented Modeling” got published on the Architecture Journal

In this paper we introduce a three part model that helps you to map business capabilities to service oriented implementation artifacts by using a so called service model.

The more I work with this model the more I realize how important this separation of concerns really is. Especially defining the conceptional service model allows you to decouple contracts from technology restrictions. If you’re interested in that topic and plan to attend TechEd Israel or TechEd US, my session “Architecting for a Service-Oriented World” might be of interest for you.

Posted by beatsch | 0 Comments

From Batman to Service BAT

I’m really happy to announce that the Service BAT workspace went public yesterday! What started as project Batman resulted into a full blown effort called Service BAT! Edward Bakker wrote a great blog entry about this new guidance and tooling experience for the service development domain!

 

Thank you guys @ p&p! I really like that stuff…

It’s not about the Feature, it’s about the Scenario!

I just came back from South Africa where Arvindra, Ingo and myself delivered the Architect Forum on Software Factories in Johannesburg, Durban and Cape Town. Since the Cape Town event was on Friday, we stayed over the weekend to explore the great landscape of the Capes.

While Ingo and I were visiting the area of “Cape Point” and “Cape of Good Hope” I got attracted by the following historical actuality:

 

As we all know, sailing along the coast of South Africa was a big challenge in the early days of our global economy. A lot of ships crashed on riffs which surround the capes. In the mid of the 19 century, the plan emerged to build a lighthouse that helps ships to navigate around the cliffs of “Cape of Good Hope” and “Cape Point”. The big question was where to place the lighthouse:

  • On Cape of Good Hope, the most south-western point of the African continent
  • On Dias Point, close to the actual riffs
  • On Cape Point, 249 meter high peak between Cape of Good Hope and Dias Point

They decided to build it on Cape Point because it can be seen from far away. The lighthouse was built in 1860 and the white flashing light of 2000 candlepower could be seen by ships 67 kilometers out of sea! From an engineering perspective, this was great work. But in reality, the lighthouse proved to be ineffective as it was often covered by cloud and mist. At this point one important question arises. The scenario that makes a lighthouse most valuable is navigating in bad weather and poor visibility. By solely focusing on the candlepower and the ability to be seen as far as possible, the decision to build the lighthouse on the highest point sounded brilliant. In reality, it was very ineffective as it didn’t support the most important scenario: navigating in bad conditions! After the wreck of the Portuguese liner “Lusitania” in 1911, it was decided to erect a new lighthouse on Dias Point, 87m above sea level.

 

I think this is a great example why scenario driven design approaches makes so much sense and can prevent our systems from great but useless features!

Posted by beatsch | 1 Comments
Filed under: ,

Why Restaurants aren’t run by the Software Industry (part 2)

In my last post, I discussed some assets that restaurants enable to deliver high quality dishes on budget and on time. I truly believe that in the software industry we have to step up to the next level of predictability, quality and efficiency. Software Factories are a long term vision to improve productivity and predictability across the software life cycle. Let’s have a look at the four “pillars” of Software Factories and how they address some of our pain points in our industry:

 

Software Product Lines

Product lines help to avoid expensive and error-prone one-of developments. In our restaurant example, once the core dishes are defined, a customer may still choose his preferred type of meat (configuring) or he might even be able to convince the kitchen to use tofu instead of one of the meats on offer (customization). But most of the processes, the ingredients and the used tools are still the same and therefore well planned.

 

In Software Factories, Software Product Lines are described as following:

  • Build new solutions by assembling partial solutions and/or configuring general ones
  • Specify only the unique features of each solution and assume the common ones
  • Variations in requirements map predictably to variations in artifacts and processes
  • Reduce custom development by 40% to 80% for the typical solution

 

Software Factory Schemas

The Software Factories Schema describes how the different assets (tools, patterns, guidance…) are aligned with the supported viewpoints for the whole software lifecycle. In our restaurant example, the waiter presents you with a menu. Every item on that menu has a clear relationship to a dish preparation process. Every stage of this process lists recipes, ingredients, essential preparation steps (such as heating a plate) and the transition between these stages.

 

In Software Factories, Software Factory Schemas are described as following:

  • Define viewpoints that identify and separate key stakeholder concerns
  • Organize tools, process and content by viewpoint
  • Relate and integrate life cycle phases, system components, and levels of abstraction

 

Model Driven Development

Models are used to formally express the artifacts of a certain domain. The menu is a formal way the restaurant presents its customers the available dishes. It usually consists of a name, a price and optionally a number and/or description. Sometimes it also lists available variations such as the different meat. In most cases, menus are easy to understand and are the preferred way of communicating the available dishes to the customer. Different type of restaurant may require different type of menus to ensure they speak the language of the customer (pizzeria vs. gourmet restaurant).

 

In Software Factories, Model Driven Development is described as following:

  • Create highly focused custom languages for specific problems, platforms or tasks
  • Develop custom tools to support them
  • Use metadata captured by models for automation

 

Guidance in Context

Context-less guidance is not very useful because different project types require different decisions. Guidance in Software Factories is valid in a certain context and is optionally supported by automation. Having well described recipes in place allows the restaurant to distribute some of the work to less experienced stuff. The chef just has to ensure that the recipes are not too generic but explicitly tight to the menu he is going to prepare.

 

In Software Factories, Guidance in Context is described as following:

  • Provide guidance that helps practitioners know what to do and that helps them do it
  • Build installable packages containing organized sets of configurable guidance assets for common use cases
  • Attach guidance to steps in the process and parts of the architecture
  • Scope process steps with pre and post conditions to let project work flow vary subject to constraints

 

Resources

If you’re interested in learning more about Software Factories, here’s a list of resources:

Posted by beatsch | 3 Comments
Filed under: ,

Why Restaurants aren’t run by the Software Industry

Last week, I attended a great cooking class as part of my Architect Bootcamp delivery in Denmark. It is really impressive to see how this industry understands the streamlining of the creation of a meal but still is able to ensure the highest level of quality. While we were preparing parts of our own meal, I started to think what would happen if our industry would run a restaurant:

 

Let’s imagine the experience of a dinner in a restaurant that is run by the methods and principles of software development:

You entered the restaurant and the waiter guides you to your table. After you’ve been seated for already 15 minutes you start to wonder when he is going to present you with the menu. At this stage you can’t know that many waiters also act as cooks and the reason for this delay is based on fact that he currently was cooking a dish for table #5. After another 15 minutes the waiter finally made his appearance and asked you what you want for dinner. Since this is not your first time in a restaurant, you wonder why he is not presenting you with a menu. Based on experience there exists only one possible reason for that: They don’t offer an “a la carte” menu and there is no need for you to specify your choice. You just order the multi course gourmet menu, that’s it. But wait a minute; this restaurant is run by the software industry: You can order whatever you want! You only have to ensure that the waiter understands what you mean by “medium” or “well-done”.  After a lengthy discussion about the different type of meat you decided to order a lamb shoulder on herbs and served with a red wine sauce. As a side dish you wanted something that another restaurant called “potatoes a la Provencal”. Regrettably, you’re unable to explain this dish in a way the waiter understood so he suggested you should go with rice. The waiter disappears in his kitchen and starts to cook your meal: First, he’s looking for appropriate cooking books containing a suitable recipe. After a couple of minutes he found something: It was a recipe for a beef roast with a delicious red wine sauce. If it works for beef why shouldn’t it work for lamb? When he was trying to organize a lamb shoulder he realizes that this is going to be more expensive than expected so he decided to replace the lamb trough pork. But the real trouble started as soon as he wanted to create that delicious red wine sauce. He suddenly realized that the sauce is based on a stock that itself is a reduction of 110 liter of water together with 10 kilograms of beef bones. Making such a stock takes ages because it will be cooked until only approximately 8 liters of intense and concentrated beef stock is left.  That was the point where he decided to replace the red wine sauce with the leftover of the previous meal: a sweet curry sauce… All in all more than an hour later, the waiter also known as the cook serves your dish: “A nicely roasted pork shoulder on a sweet curry sauce served with rice”. This is for sure a nice dish but just not what you ordered. As if this wouldn’t be enough, the dish was even more expensive than agreed. The restaurant argued that everything was especially created for you and therefore they couldn’t accurately predict the cost… as if you would care…

 

While analyzing their approach I came up with some interesting points that may help our industry to better understand how we can become more efficient

  • To deliver on the highest level of quality, you need to be specialized. Not only are most restaurants categorized (Thai, seafood) but the smaller the menu, the more likely the ingredients are fresh (freshness increases the quality).
  • To create a dish fast and on the highest level of quality you are required to focus on a small number of dishes. This allows you to think about the streamlining of the preparation and you’re able to prepare the different “building blocks” in advance.
  • To avoid misinterpretation provide your guests with a menu. Also be aware that they might be unknowledgeable of the domain specific expressions such as “Pommes Dauphine”.
  • To deliver on time, planning and preparation is essential. When the chef is planning a new dish, he is not only thinking about the recipe but also about the way he can streamline its creation. What are the “building blocks” that need to be prepared upfront (such as the stock), what is the stuff that will be prepared before the restaurant opens (such as cutting onions or herbs), what are the required tools (e.g. steamer)… For a restaurant, a successful dish doesn’t only require a great recipe but also clear descriptions of the requirements, different building blocks, tools and a process that describes how to cook a meal on a consistent level of quality.
  • Prices are based on a transparent calculation based on the cost for ingredients and the time needed to prepare that dish.

 

It’s very promising to see that these points are addressed by the four “pillars” of Software Factories, so stay tuned for the second part of that post…

Posted by beatsch | 7 Comments
Filed under: ,

Great articles about the tools for architects

Just in case you haven’t already seen it: Bill Gibson published a series of great articles about the tools for architects in Visual Studio 2005 Team System. You find his technotes here.
Thanks Bill!
Posted by beatsch | 1 Comments

We're looking for a new colleague

We (Arvindra, Kevin & I) are looking for a bright new colleague in the role of a Solution Architect Evangelist working for Microsoft EMEA HQ. If you’re an experienced architect who's passionate about technology as well as the business and you don’t mind traveling, just have a look here.
Posted by beatsch | 0 Comments
Filed under:
More Posts Next page »
 
Page view tracker