This page presents the main topics I have worked on during my last projects. Since I've been mostly focused on technical aspects, this page probably reflects that bias. However, you'll notice that the first and most important topic isn't technical at all.




 

"The quality of a product is what the customer says it is". Although most engineers (including myself) will argue that some aspects that the customer isn't (and shouldn't be) aware of also contribute to quality, this statement is mostly true. So my top priority in any project is to meet the customers requirements. The absolute key success factor is early and continuous user involvment, through an iterative and incremental development approach.


Figure 1. Example of an iterative life-cycle

Beyond the approach above which has worked pretty well for me so far, I am currently experimenting the 'extremely' iterative extreme programming* approach on a small project.


Distributed systems are now the rule rather than the exception. Like any construction activity, the first prerequisite is to understand the tools. Although 'client' and 'server' are very relative concepts in an n-tier architecture, we can consider the following tool classification.

server-side tools handle your data, mainly RDBMSs, and more often than not involve legacy software which has to be integrated ('encapsulation' or 'wrapping').

middleware tools ensure communication between your systems components, not only between client and server, but also among server components or even among clients.

client-side tools handle the user interface, and may become an endangered species if Web browsers and Java mature further.

When glueing all these together, the most important thing is common sense, and keeping in mind some basic principles like server redundancy (for both high availability and load balancing) without compromising consistency and performance. You might not expect it, but tool expertise is the easy part compared to the other one, the framework, which is covered in the next section.

 





 

I like to apply object technology through the entire life-cycle of a project, from specification to implementation, from business-level models (frameworks) to low-level library programming. Since object oriented design and programming are now widely accepted, I'll only insist on the higher level.



Figure 2. Framework principle

A framework is a model of your business, which really reflects your activity. Designing this is a heavy task which usually requires a commitee of domain experts, but it's worth the effort. Once a framework defined, all your software systems can be seamlessly integrated by "mapping" them to the common model. The combination of a framework and a standard middleware thus serves the purpose of a universal interface between applications, also called integration platform.


During the past 4 years, I have designed a dozen intranet sites, which often interact with databases. The first one was a CGI demonstration site for Synlog in early 1995, which may still be online*. Although you probably wouldn't expect it browsing this very grey site, I have designed some more flashy stuff too. I'll do my best to include some samples here.

 






 

I have started working about 12 years ago, before most of the current cool tools existed. The main challenges back then were designing relational databases, then first generation client-server systems and GUIs. I am happy to have been around then, since it gave me a solid background in database design, as well the modeling as the implementation aspects, both of which remain important today.


Back to main page   Back to resume   Check my plans for the future