April 2003 - September 2003

Foundation Service Project

The purpose of this project was to introduce a service oriented architecture to an incentive company. Starting with my understanding of the business requirements, I proposed an architecture for future software development that met those requirements.

There were two key elements in this architecture. First, it maintained compatibility with current database implementation, so that services and applications could be introduced into the current software systems. Second, it accommodated customer specific extensions to the base architecture. In addition, the architecture was designed to meet the more commonly requested attributes of reducing development time and cost, and increasing scalability.

I presented and sold this architecture to management. After gaining their support, I created a plan to introduce this architecture over a series of projects. The software to be delivered in this first project was an order entry application and the services to support it. We were also establishing basic services and standards to be used in future phases of the project.

I led the design and implementation of this project with two other developers. We followed an incremental and iterative software development process based on elements from the Rational Unified Process with aspects of the various Agile methodologies. The implementation used SOAP based web services written in Delphi 7 and windows form client applications in C#. Our Delphi 7 web service methods accepted and returned XML documents. In C#, we used XML serialization to work with these XML documents as objects. We used XML data binding in Delphi for a similar purpose. Technical highlights included:

  • Strategy and implementation to accommodate customer specific business logic in both .NET and Delphi. This involved the use of well defined interfaces and dynamic loading of code, similar to a plug-in architecture. The presentations section contains user group presentations I did showing these techniques
  • Creation of C# business object classes to support data binding and other requirements.
  • Creation of a custom application like XSD.exe that reads an XML schema and creates a class based on that schema. The code generated used the custom business object classes.
  • Created a customized version of WSDL.exe based on the ServiceDescription class that modified the standard proxy code generated using code DOM. The modifications included the creation of an interface corresponding to the WSDL definition and the inclusion of error handling in the proxy methods.
  • Created custom tools for Visual Studio.NET to incorporate the XSD and WSDL tools into the IDE.
  • Created console application to register components in Visual Studio.NET IDE.

Technology

Delphi C#, .NET (1.1) XML, XSD
Web Services, SOAP, WSDL Microsoft SQL 2000 dBASE
UML    

Tools

Visual Studio .NET 2003Delphi 7XML Spy
Enterprise ArchitectVisual BuildInfragistics Components
NUnitDUnitDoc-O-Matic