During the final year of the software engineering degree at the Polytechnique, students have to undertake a major project which counts for one or two classes (3 to 6 credits). That project can be done alone, with someone else or in a small team. By choosing to work with a small team, you’ll get a good real-work experience by working closely with a company to do one of their research-and-development projects. If you do it alone or with a friend, you get to do any project you want, as long as your supervisor approves it.

I had an idea for a project that would allow me to learn quite a few things, so I decided to do the project alone (there was not enough in it for more than one person).

The project

Description and Goals

I decided to build a Web application to improve my Web development skills. Mostly, I wanted to learn how to use Ajax and to use the object-oriented design philosophy in a Web development project. I was also using phpMyAdmin regularly for my projects at the time and I always felt it had too many features and options. I was only using a tiny portion of the tool and felt a simplified tool could be useful for users like me who didn’t need everything. I also wanted to add some “on-the-spot” editing of the values in the tables as is possible with desktop applications like SQL Server Management Studio.

So I started working on my Ajax-powered online database management system (DBMS).

Requirements and Specifications

The first step was to determine what were the requirements (which I was fixing myself) and which tools at my disposal would help me fulfill those requirements.

The requirements were:

  • Object-oriented design
  • Ajax (no postbacks)
  • User-friendly

And the tools were:

  • PHP 5+ for its OO support
  • JavaScript
  • CSS for the styling
  • XAMPP Lite for testing

Features

I then determined what features I would put in my first iteration of the application. My goal was not to have a full-featured product ready by the time the project ended, it was more of a proof-of-concept to show that it was feasible to create a simple online DBMS.

Here’s a list of the features that made the cut for the first iteration:

  • Creation and deletion of databases
  • Creation, modification and deletion of tables within a database
    • Addition, modification and deletion of fields for the table (field name, type, default value, auto increment, …)
  • Insertion, edition and deletion of rows in the tables
  • Query editor to execute written queries on the data
  • User-friendly navigation

Implementation

I will leave the details of the implementation for a future post, but I managed to implement most of the features while respecting my requirements and specifications. The only missing feature from the list above was the table modification feature.

Conclusion

To me, this project was a tremendous success, I managed to do almost everything I had planned and at the end I had a mostly usable online DBMS. It had a few bugs and was missing some critical features, but I learned so much from it. It also helped me get my current job at Hint Innovation since the development philosophy I used for this project was really similar to the way we work at Hint.

Indeed, the way I designed my classes and objects was very similar to the way Domain-driven design (DDD) approaches design. At Hint Innovation, we embrace the DDD philosophy and I only have good words for it. While doing my undergraduate thesis I didn’t know that my approach to OO design was so different, but since I’ve started working at Hint, I’ve seen the similarities between my approach and the Domain-driven design philosophy.