Welcome to MSDN Blogs Sign in | Join | Help

An inflection point decision

In any major product development effort there are 3 to 6 key decisions that I term as inflection points. The path one chooses at these junctures ultimately influences the “soul of the product”. The entire small business application suite of products has been developed from scratch so there were no boundaries or constraints predetermining any inflection point decision. The only guiding principle was to innovate using software so the small business eco system would benefit from the final solution. As I look back at the last five years, I can pin-point these inflection points for each component of the suite (BCM, SBA, POS, Payroll and our suite of online services).  Today I will share some of the background behind one of these crucial decisions that we had to make at the very beginning of the project. This decision was around the selection of the best technical architecture and framework to build Office Small Business Accounting i.e what tools and technologies should this new product be based on.

 

Selecting a technology foundation is not a simple matter of picking a programming language and kicking off development. While ease of programming and ability to create the best features for the customers is of primary importance, equally critical is the ability and flexibility the architecture will provide for scalability (growing with the needs of the user), maintainability, reliability, security, deployment and maintenance. Furthermore a key need in the accounting space is to enable ISVs to build extensions to the application so they can add industry specific functionality (from construction to farming). We began the selection process by first hiring some of the most talented engineers in the industry most of whom had built multiple software applications in the past, then we undertook one of the most extensive customer research studies to deeply understanding the needs of the customers, the CPAs & the ISV community and finally and probably the most crucial step was to identify all the choice available to build the application.

 

In late 2002 we created multiple teams to evaluate each technology choice by building a sample prototype on each option. Every member of each prototype team was someone who believed deeply in that choice. So the effort was more like a technical bakeoff or the computer science equivalent of the popular TV series survivor. We put together a set of selection criterion and started voting off the options that failed to meet the sum total of all our priorities. Each prototype effort actually helped us flesh out the information architecture that finally was the basis of SBA as these were not academic exercises but rather small representative steps of what we were trying to accomplish with SBA. After nearly six months of very deep technical due diligence the choice was very clear. The best and most efficient platform for developing a complex application that would span a desktop exe and several web services was our very own .NET framework.

 

The .NET framework is a development and execution environment that allows different programming languages and libraries to work together seamlessly to create Windows based applications.  The .NET framework consists of the common language runtime and framework class libraries, a consistent object oriented library of prepackaged functionality. SBA has been architected to run on top of the .NET framework and consists of a clean three layer application comprising

  • A presentation or the User Interface (UI) layer built using winforms
  • A business logic layer primarily built using  C#
  • A storage layer using a rich relational data base (MS SQL 2000 desktop edition); Data access is via ADO.NET

 

 

 

 

Using .NET was a phenomenal decision as it enabled us to rapidly develop and deploy a very complex application like SBA and yet abstract all the deep accounting logic with the simplest and cleanest interfaces in the industry. In addition, we could expose the application to both CPAs and ISVs for the deeper processes and integration each of these communities needed.

 

There is a great article on MSDN that articulates the benefits of .NET for ISVs. In many ways, SBA was an ISV building on .NET and on behalf of the entire R&D team, I can attest to the benefits we received during the development effort (and continue to receive as we work on the next version) :

1)      Speed of development as a result of quick ramp up of new developers on modern well factored tool set based on object oriented programming

2)      Language independent

3)      A solid and robust security layer,

4)      Focus on SBA business logic (.NET takes care of system interfaces for managing buffer overrun, memory mgt etc)

 

Another article on MSDN has a very nice background on what is .NET framework that is a very good starting point for new developers on the framework. Our small business effort is a testament to the true value that a company can gain by betting on the right underpinnings and foundational technology and architecture. Starting from scratch and releasing the most innovative products in eons old categories in just 2-3 years was primarily possible because of this important decision.

 

As a result of the clean architecture and .NET underpinnings, SBA is exposed at every layer of its architecture and the resulting software developers kit (SDK) gives ISVs a complete set of tools and supporting material to build solutions on top of the application. An ISV can develop several types of solutions with SBA:

1)      Build a standalone app that works alongside SBA and calls in to relevant business logic. BCM is actually an internal example of this type of integration

2)      SBA Application add-ins – ability to add menu items and tool bar buttons and connect to ISV managed add-in business logic; Also hook to events for pre and post save/delete (eg : notification to a sales person via IM when an invoice changes); Customizing field labels via XML template

3)      Build addl solutions in other office apps like access and excel using SBA data (eg reports, pivot tables etc)

 

The SBA SDK primarily consists of :

1)      .Net framework (CLR, framework class libraries and object oriented library of prepackaged functionality)

2)      SBA API which consists of four dynamic link libraries created in C# and can be included in the ISV dev environment

§         SBAAPI.dll – Guts of the business logic – Exposing the core business logic of SBA

§         SBAUI.dll – Enables ISV applications to call SBA forms and UI logic

§         SBAIAPI.dll – Public Interface for the SBAAPI.dll

§         SBAIUI.dll – Public interface for the SBAUI.dll

3)      Property field customization template

4)      Property fields customization uploader

5)      MSDE

6)      Code Samples

7)      SDK help files

 

All the benefits of .NET accrue to the users of the SBA SDK. In addition there are some important advantages over other development platforms in the domain :

1)      Applications linking or integrating to SBA get in-process access to SBA (SBA logic can accessed within the process of the ISV app i.e the SBA executable doesn’t have to be separately fired up)

2)      Full functionality of SBA is exposed to developers (all core business logic within SBA is exposed via its public API)

3)      Integrated platform security at a database level

4)      Access to data via a high performant relational database

5)      Multiple levels of customization

 

In April 2005, we announced the availability of the SDK and within a few weeks the SBA SDK became one of the most downloaded of all MSDN technologies. In upcoming posts I will profile and write about the great applications that our ISVs have built on top of SBA using its powerful SDK. A current list of all shipping ISV applications available for SBA is available at office.microsoft.com.

Published Sunday, March 19, 2006 7:14 PM by Rajat Taneja

Comments

Thursday, March 23, 2006 3:23 PM by blogx

# re: An inflection point decision

Thanks for the very interesting post.  Dyanmics CRM is also written in .NET.  It would be interesting to compare/contrast the architectures of each product to learn how design decisions (inflection points) in each product were made and to see what commonality exists.  
Friday, March 24, 2006 1:48 PM by Rajat Taneja

# re: An inflection point decision

That is a good point. Dynamics CRM has a very strong and robust implementation of .NET. One can compare Business Contact Manager with CRM as both are focused on front office functionality albeit for different segments of the market. BCM is a MAPI provider within Outlook. The MAPI store is implemented using a combination of C# and managed C++. In addition, BCM has a Com ad in DLL implemented in VB.NET. UI is based primarily on outlook forms with winform dialogs. MSDE is the back end db. MSCRM is a full client server implementation with both a rich outlook client and a browser based IE client. Local storage in the client is MSDE and the server in the back end is SQL. MSCRM has a very good SDK that allows for a lot of customization which would be needed in larger organziations using it. There area couple of nice blogs on Dynamics CRM that can be accessed via Satya's weblog at http://blogs.msdn.com/satyanadella/

Hope the response helped answer the questions around the arch differences between the two products both of which are based on .NET but for different deployment scenarios.
Tuesday, May 09, 2006 6:33 PM by Vik

# re: An inflection point decision

Thanks for posting this.  I noticed through Process Explorer that SBA launches CSC.EXE a couple of times during startup.  I think this is facinating.  Can you talk about what's being dynamically generated/compiled by SBA?
Wednesday, May 10, 2006 1:32 PM by SriniM

# re: An inflection point decision

We use an XML feed for the spotlight information in SBA.  CSC.EXE is automatically launched by CLR V1 to compile the XML feed file into a temporary dll during serialization.  The serialized spotlight objects are then processed by SBA to display content in the spotlight control.

SriniM - SBA Team
Saturday, May 27, 2006 11:43 AM by Gaylen Michael

# re: An inflection point decision

This is a nice overview discussion.

As an ISV we are looking to integrate our ASP based application w/ SBA for our small biz customers.  Given the nature of our webased solution, I was hoping to build a webservice on our end and then integrate the SBA application to use those webservices.  

Do you have any references on ISV's implementing such solutions?

Thx,
Gaylen
Friday, August 04, 2006 7:40 PM by Coding for Office Small Business Accounting

# Three years at Microsoft!!!

Yes, on August 4th, 2003 I went to the New Employee Orientation. I had just finished my bachelors degree...
Wednesday, November 07, 2007 2:05 PM by Coding for Office Small Business Accounting

# Three years at Microsoft!!!

Yes, on August 4th, 2003 I went to the New Employee Orientation. I had just finished my bachelors degree

Anonymous comments are disabled
 
Page view tracker