<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michel Billard &#187; PFE</title>
	<atom:link href="http://www.mbillard.com/tag/pfe/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mbillard.com</link>
	<description>News and information about me, Michel Billard. I'm a Web developer with a formation in software engineering.</description>
	<lastBuildDate>Tue, 23 Mar 2010 01:40:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>My undergraduate thesis (PFE)</title>
		<link>http://www.mbillard.com/80/my-undergraduate-thesis-pfe/</link>
		<comments>http://www.mbillard.com/80/my-undergraduate-thesis-pfe/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 19:02:33 +0000</pubDate>
		<dc:creator>Michel Billard</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[PFE]]></category>
		<category><![CDATA[Polytechnique]]></category>

		<guid isPermaLink="false">http://www.mbillard.com/?p=80</guid>
		<description><![CDATA[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&#8217;ll get a [...]]]></description>
			<content:encoded><![CDATA[<p>During the final year of the software engineering degree at the <a title="Polytechnique de Montréal" href="http://www.polymtl.ca/" target="_blank">Polytechnique</a>, 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&#8217;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.</p>
<p>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).</p>
<h3>The project</h3>
<h4>Description and Goals</h4>
<p>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 <a title="phpMyAdmin" href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">phpMyAdmin</a> 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&#8217;t need everything. I also wanted to add some &#8220;on-the-spot&#8221; editing of the values in the tables as is possible with desktop applications like <a title="SQL Server Management Studio Express" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&amp;displaylang=en" target="_blank">SQL Server Management Studio</a>.</p>
<p>So I started working on my Ajax-powered online database management system (DBMS).</p>
<h4>Requirements and Specifications</h4>
<p>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.</p>
<p>The requirements were:</p>
<ul>
<li>Object-oriented design</li>
<li>Ajax (no postbacks)</li>
<li>User-friendly</li>
</ul>
<p>And the tools were:</p>
<ul>
<li>PHP 5+ for its OO support</li>
<li>JavaScript</li>
<li>CSS for the styling</li>
<li><a title="xampp for windows" href="http://www.apachefriends.org/en/xampp-windows.html" target="_blank">XAMPP Lite</a> for testing</li>
</ul>
<h4>Features</h4>
<p>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.</p>
<p>Here&#8217;s a list of the features that made the cut for the first iteration:</p>
<ul>
<li>Creation and deletion of databases</li>
<li>Creation, modification and deletion of tables within a database
<ul>
<li>Addition, modification and deletion of fields for the table (field name, type, default value, auto increment, &#8230;)</li>
</ul>
</li>
<li>Insertion, edition and deletion of rows in the tables</li>
<li>Query editor to execute written queries on the data</li>
<li>User-friendly navigation</li>
</ul>
<h4>Implementation</h4>
<p>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.</p>
<h4>Conclusion</h4>
<p>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.</p>
<p>Indeed, the way I designed my classes and objects was very similar to the way <a title="Domain-driven design" href="http://en.wikipedia.org/wiki/Domain-driven_design" target="_blank">Domain-driven design</a> (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&#8217;t know that my approach to OO design was so different, but since I&#8217;ve started working at Hint, I&#8217;ve seen the similarities between my approach and the Domain-driven design philosophy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mbillard.com/80/my-undergraduate-thesis-pfe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
