Mario Cardinal
Mario Cardinal
Software Architect
The real voyage of discovery consists, not in seeking new landscapes, but in having new eyes









Read my blog
Network of independent expert consultants specializing in Microsoft .NET technologies
MVP status is awarded to credible technology experts who are among the very best community members willing to share their experience to helping others realize their potential
Lead the architecture user group at the Montreal .Net Community
Member of the Microsoft Visual Studio Team System Customer Advisory Council
Certification demonstrating in-depth knowledge and expertise with Team Foundation Server
The Agile Alliance is a non-profit organization that supports individuals and organizations who use agile approaches to develop software

Blog posts

Isn't the modular architecture, a little well-worn subject?

At first look, that can seem well-worn. Since software exists the theorists praise us the merits of the modularity. The real voyage of discovery consists, not in seeking new landscapes, but in having new eyes. What misses cruelly nowadays it is a demonstration of the practice. We only have to consult the literature on the subject to be convinced. For example, version 2.0 of the “Application Architecture Guide” published by the Pattern & Practices group at Microsoft explains in detail the need for partitioning into layers to produce quality architecture. However, anywhere, it is explained how to design and code the visible interface of each layers. In the same way, anywhere, they explain the practice to reduce the coupling between the modules; practices which ensures to be able to test in an autonomous way (in a test bed) each layer without having to assemble the whole system. Yes, the modular architecture seems a well-worn subject but, but still today, the training in regard with modular design is defective and this one remains a challenge for a great number of organizations.

 

Montreal CodeCamp 2009 is now history

What a nice day! 24 sessions. About 280 people showing up. 45 prices to raffle. Everybody was smiling and happy to be there even if it was a Saturday.

The Montreal CodeCamp 2009 happened yesterday and it was a blast!

I was presenting a session on the best practices for software construction ==> How to create self-documenting code.  For those interested, you can download my powerpoint here.

 

Becoming an Architect Entrepreneur

Last Tuesday, I was participating as a panelist in a webcast about "Becoming an Architect Entrepreneur". Overall we had almost 300 live viewers for the webcasts and had a near 90% average for the satisfaction with the event. I’ve included the links to the registration pages for the various webcasts that are part of the "Ignite Your Career" series if you’d like to share them with colleagues or other parties:

 

Tech∙Talk at Tech∙Ed North America

Here is a Tech-Talk that I have recorded last week in Los Angeles while I was speaking at Tech∙Ed North America.

Enjoy!

 

New dates announced for my Modular Architecture workshop

There is two upcoming Modular Architecture workshop this summer.

See you there!

 

Appication Architecture Guide 2.0

Lately, I have read the Application Architecture Guide 2.0 and I was surprise that almost nothing is written about best practices to correctly design the visible interface of a layer.

Here are three things which I like about the guide :

  1. It seeks to show all the options: The architects build models. They create structures to reduce complexity and to simplify the problem to be solved. This guide does not present only the heuristics necessary to achieve this work but also the most common examples of predefined models (applications archetypes).
  2. It seeks to explain the design process: The guide explains in what the business needs and the deployment constraints are stakes paramount which must be analyzed early in the process of design.
  3. It confirms that the layer is the unit of modularity of the application architect: The programmers took nearly fifty years to recognize that the unit of modularity par excellence is the object (the class). From the omnipresent place of the layer in this guide, it clearly demonstrate that the layer is the module to be privileged by the architects to create a simple structure to partitions the concerns of the application.

Here are three things which I would like to improve?

  1. Add a better separation of the concerns: The Architecture Frame seems to me a hold-all. There would be place for a better classification. It is the same for the architectural styles; the guide try to compare apples and oranges. For example, I do not believe that layered architecture and N-Tier deployment are comparable architectural styles. The first one concentrates on the logical internal structure while the second is concerned with considerations of deployment.
  2. Improve the design process: The greatest leverage in architecting is at the interfaces. Partitioning the concerns of the application requires layers with a unique role and a well defined contract. It is important to put the emphasis on the need to express not only the specifications but the dynamic behavior of the interfaces between the layers. It seems to me that it is paramount to add this in the design process.
  3. Explain clearly what composes an interface: The interface of a layer is a list of the allowed operations with an explicit description of the expected dynamic behaviors. For example, one should find for each operation the pre and post conditions as well as the invariants. Once we have explained what an interface is, we should start discussing implementation practices such as the “Abstract Interface” and the “Concrete Façade” (Common Design Type). However, it seems important to me NOT to present “Dependency Inversion” and the “Message based Interface” as implementation practices. They are rather practices for procedures invocation.

 

Congratulations! You have received the Microsoft MVP Award

This week, I got the message from Microsoft that my MVP-title has been "renewed" for the fifth year in a row. Here is an excerpt from the notification email:

Congratulations! We are pleased to present you with the 2009 Microsoft® MVP Award! The MVP Award is our way to say thank you for promoting the spirit of community and improving people’s lives and the industry’s success every day. We appreciate your extraordinary efforts in Team System technical communities during the past year.

MVP status is awarded to credible technology experts who are among the very best community members willing to share their experience to helping others realize their potential. Being an MVP has opened many doors for me as a software architect and (sometimes rather pushy) Microsoft customer and the relationships I've been able to develop have added a great richness to my life. Thanks Microsoft ;-)

 

Speaking at DevTeach 2009

Since 2003, I spoke at Devteach conference. Again, this year, June 8-12, I will join the best speakers in North America and meet DevTeach attendees in Vancouver, Canada. I will do a talk about Modular Architecture and a second talk about Cloud Computing.

In difficult times the best thing you can do is to upgrade your skills. This is why DevTeach came up with the idea of an Education stimulus package. You can get a free registration when your company registers two attendees. So register 2 attendees and get one free! This promotion is applicable on the early bird price and will run until June 8th. You can take advantage of this deal even if you are using a rebate code.

See you there.

 

Speaking in Paris at Université du SI

For a second year in a row, I have been selected to speak at "Université du SI". This is a french conference in Paris. This year the conference is held July 1-2.  Here is video with my friend Guy Barrette about our talks (in french). Here is another video presenting the speakers.

I will do a talk about Modular Architecture. See you there.

 

Speaking at Microsoft Tech·Ed North America 2009

For a second year in a row, I have been selected to speak at Microsoft TechEd North America. This is a huge conference with more than 10 000 attendees. This year the conference is held in Los Angeles, May 11-15.

I will do a talk about Architectural Strategies for Increased Testability and Modularity. See you there.

 

Modular Architecture Workshop

There is already over 15 persons registered for my modular architecture workshop.

To learn more and register

Use this special code to save $100 on your registration: G0005GUVSM

See you there!

 

Agile Montreal

I will do my talk about Modular Architecture February 12th at Agile Montreal user Group.

To learn more and register

See you there!

 

Modular Architecture Mindmap

For those who attend my talks lately about Modular Architecture.  Here is the MindManager mindmap.

http://www.mariocardinal.com/download/modular-architecture.zip

If you do not have MindManager, here is where you can download a viewer.

 

MVP Insider - Q & A with Mario Cardinal

If you could ask Steve Ballmer one question about Microsoft, what would it be? What do you think the best software ever written was? What does success mean to you?

Here are some of the questions I answer for the MVP Insider Canada.

http://blogs.msdn.com/cdndevs/archive/2008/09/21/mvp-insider-q-a-with-mario-cardinal.aspx

 

Microsoft Canada Tech Days ‘08

Coming to a city near you this October to December, its the Microsoft Tech Days 08! And the Montreal .Net Community leader want you to come out and learn, interact, get free stuff ... in french OSTIE!

Ok, so seriously though…Microsoft is going to be coming through Canada between October and December bringing Microsoft Tech Days ‘08.

This is *NOT* a marketing tour! It’s a one to two day conference (depending on your city) that focusses on learning and using Microsoft technologies. Think of it as a Microsoft focussed code camp of sorts.

  • Toronto: Oct 29th and 30th
  • Montreal: Nov 6th and 7th
  • Vancouver: Jan 21st and 22nd
  • Calgary Dec 10th and 11th
  • Ottawa: Nov 27th
  • Winnipeg: Dec 4th
  • Halifax: Dec 17th

This is *NOT* a free event.

  • Early Bird Price: $ 249.99 (By Oct 15th)
  • Regular Price: $ 499.99 (After Oct 15th)

You really want to get the swag kit …

  • 6-month TechNet Plus Subscription
  • Visual Studio 2008 Professional – Full Package Product
  • Expression Web – Full Package Product
  • Visual Studio 2008 Team Suite – Evaluation Software
  • Expression Studio – Evaluation Software
  • Virtualization Resource Kit
  • 30% off certification voucher – Applicable to All MS Certification Exams
  • TechEd 2008 DVD Set
  • $100 Discount Coupon for DevTeach/SQLTeach

I CANNOT STRESS ENOUGH how the cost of attending this is infinitely recouped by getting the TechEd 2008 DVD Set and $100 rebate for DevTeach/SQLTeach conference! I spoke at TechEd and let me tell you…CRAZY amount of content and information on those DVD’s. You normally would have to attend Tech Ed to get that, so that’s worth the price of admission right there.

Where Do I Sign Up?!

http://www.microsoft.com/canada/msdn/techdays/default.aspx

Hope to see you out!

TAGS:

 

Team System for DB Pro

Anybody who must manage and promote database schema should go this wednesday see Christian Coté talk about "Team System for DB Pro". This presentation is in french.

Lors du développement d'une application, la maintenance de la base de données comporte souvent certains défis d'intégration et de déploiement. Cette session fera la démonstration de comment "Visual Studio Team System for Database Professionnal (VSTS4DBP)" facilite le déploiement de la base de données tout en maintenant son intégration dans le gestionnaire de code source. Les tests unitaires sur la base de données ainsi que la génération de données génériques pour le développement seront également démontrés et discutés.

Christian Côté est un consultant en informatique depuis maintenant un peu plus d'une douzaine d'années. Il est certifié Microsoft Certified Technical Specialist Business Intelligence (MCTS-BI). Depuis plus de neuf ans, il est principalent impliqué dans des projets ETL (extraction-transformation-chargement de données) avec SQL Server et Oracle.

Pour en savoir plus

 

ARCast.TV - Mario Cardinal on Layer Module Injection

My ARCast episode has been published to the www.ARCast.tv site.  Arcast.TV provide Global Perspective and Architectural Insight… about software development.

ARCast.TV - Mario Cardinal on Layer Module Injection

Layer Module Injection is a new pattern to enforce separation of concerns between domain logic and infrastructure services. Mario Cardinal and Joe Shirey will explain why to use abstract classes and interfaces as a means to reduce dependency surface. Mario and Joe will discuss the techniques of dependency injection and inversion of control to reduce the coupling between classes. In the same way, they will discuss benefits to modularize and decouple with layers using namespaces. The goal is to explain a new approach to simplify managing dependencies between the modules which compose a program. At the end of this discussion you will understand why architects worry so much about coupling, cohesion and separation of concerns.

 

Link

http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Mario-Cardinal-on-Layer-Module-Injection/

 

 

 

Agile 2008 Conference
For those who attend my talk yesterday during Agile 2008 Conference, you can download my powerpoint here: separation-of-concerns-Agile2008.ppt

 

Tech•Ed Online interview
Last month, while I was speaking during Tech•Ed North America Developers conference, I have recorded with Joe Shirey a video interview about my talk "Separation of Concerns". Microsoft has posted this video to Tech•Ed Online. You can find it here: Layer Module Injection.

 

Design rules: The power of modularity

While flying from Montreal to Paris today, preparing for Université du SI where I will speak later this week, I start reading a fantastic book about modularity.

Design Rules, Volume 1: The Power of Modularity by Carliss Y. Baldwin and Kim B. Clark

Using the computer industry as an example, the authors develop a powerful theory of design and industrial evolution. You must read this book if you want to learn about the concept of modularity, building complex products from small subsystems that can be designed independently yet function together as a whole.

 

Devteach Toronto: Honored to be in the top 10 speakers for the event

Today, I received very good news from DevTeach. It was the final report on last week event in Toronto. The report that was issued had the top 10 speakers in each of the tracks and also overall. I feel honored to be in the top 10 speakers overall for the event.

No

Top 10 Speakers Overall

Avg Per Eval

Nb. Eval

Total

1.

Mario Cardinal

70

18

1251

2.

Kate Gregory

70

7

490

3.

Richard Campbell

69

20

1370

4.

Francois Tanguay

69

8

554

5.

Reza Alirezaei

68

15

1023

6.

Rick Heiges

68

11

743

7.

Markus Egger

67

46

3091

8.

Jean-Paul Boodhoo

67

39

2594

9.

Joe Webb

67

28

1888

10.

Paul Nielsen

67

27

1815

 

Congratulations! You have received the Microsoft MVP Award

This week, I got the message from Microsoft that my MVP-title has been "renewed" for the fourth year in a row. Here is an excerpt from the notification email:

Congratulations! We are pleased to present you with the 2008 Microsoft® MVP Award! The MVP Award is our way to say thank you for promoting the spirit of community and improving people’s lives and the industry’s success every day. We appreciate your extraordinary efforts in Team System technical communities during the past year.

MVP status is awarded to credible technology experts who are among the very best community members willing to share their experience to helping others realize their potential. Being an MVP has opened many doors for me as a software architect and (sometimes rather pushy) Microsoft customer and the relationships I've been able to develop have added a great richness to my life. Thanks Microsoft ;-)

 

MSDN Architecture Center - The Hidden Roles of Software Architects

My article about "The Hidden Roles of Software Architects" is now live in the following location on MSDN Architecture Center.

http://msdn2.microsoft.com/en-us/library/cc431351.aspx

Summary: This paper presents the full spectrum of roles that software architects must fulfill when building enterprise applications.

An enterprise application is a software application intended for use inside an organization; the application must work within an existing architecture and be capable of being deployed and supported by an internal IT staff. Enterprise applications exist only to support the organization and its activities, or to help change the way business is performed. Developing for the enterprise is a very different challenge than building standalone applications. We start down the enterprise path as soon as we have to share resources, such as a relational database, among a large number of users, typically over a computer network.

To identify the various roles that a software architect must perform daily, I will make use of my personal experience. I have designed large-scale information systems for almost 20 years. As a software architect, I am responsible for conceiving a technical solution to support, automate, or even totally change the business processes of my clients. At present, I am an independent senior consultant working for the largest institutional funds manager in Canada and also for one of Canada’s leading financial institutions.