Here's the current version of my proposal, just wondering what people's thoughts
are.
Thanks everyone
Aaron Maturen
Revamping phpMyAdmin to utilize MVC architecture
Name:
Aaron Maturen
Location:
Saginaw, Michigan, United States of America ( GMT -5 )
Education:
Pursuing BS in Computer Science & BA in French
Email :
atmature(a)svsu.edu
Website:
http://www.aaronmaturen.com
Synopsis:
My proposal is to rewrite the architecture of phpMyAdmin with the
model-view-controller(MVC) design pattern. With this pattern we will be able to separate
all the code into three parts:
The Model. This is where the business logic goes. All the code to connect to the database
resides here. If we code the adapter pattern here we could potentially give PMA the
ability to work with other RDBMS with simple plugins.
The View. This is where the template system goes. Implementing a complete template system
and recreating themes for PMA is beyond the scope of the
The Controller. Links the Model(all the data) with the View(what the user sees)
Additional Design Patterns that could be implemented:
Singleton:
For handling sessions. makes sure that there is only ever one instance.
Strategy:
For handling languages. allows different languages/themes to be easily interchanged.
Prototype:
For handling the presentation system. Consists of concrete forms of presenting data for
example; html, csv, pdf, svg, etc.
We can easily add an AJAX library into this to allow the MVC framework to utilize AJAX and
be able to transfer data between the classes without a page refresh. Although it would be
useful to have an AJAX library in the code, utilizing it for most things would be out of
the scope of this proposal.
Benefits to the users: The MVC architecture will better support scalability and ease
modification and maintenance(due to the separation of tasks). Also with the template
system and business logic located in separate files comes the separation of the front and
back end of the website; resulting in a more robust website.
The separation of the design and applications layers allow for increased levels of
interactivity without compromising security. By using MVC Architecture and working in an
Object oriented format, the website becomes increasingly modular where users can easily
add new modules without disturbing the rest of the application.
Project Details:
A more detailed description.
Deliverables:
What will be the final output from your project?
Project Schedule:
Week I (and before) - Start Breaking down phpMyAdmin into logical groups and design
patterns. Publish my goals to PMA listserv and get feedback on my plans.
Week II - Continue to break current code down in design patterns. Implement the MVC
skeleton and start to implement user system.
Week III - Language system. Implement strategy pattern to allow for localization. Since
this is done before any text gets typed to be displayed we won't have to go back and
re-implement it.
Week IV - Database Connection/Manipulation. Start to implement talking to the database
using the adapter and porting the existing code
Week V - Continue Database porting.
Week VI (MIDPOINT) - Implement template system.
Week VII - Have MVC completed with all current functionality restored.
Week VIII - Work on the presentation data to allow for different presentation modes: ie)
web, print
Week IX - Test current version. Finish any part needed for soft finish that ran behind.
Week X - Soft Finish. Leave last 2 weeks for tweaking the application and fixing bugs.
Week XI - Tweak App, Fix Bugs.
Week XII (END) - Finish.
Time:
My only commitment this summer is my job at Audio Central Alarm in Saginaw, Michigan where
I work as a dispatcher. Normally this entails sitting in front of a computer for 8 hours
on third shift getting paid to do my homework. This summer I am not planning on taking any
spring/summer courses so I am able to devote 50+ hours a week to this project.
Bio:
I started programming HTML in 2001 when I was in 7th grade, my friend got me interested
in it. From there I kept trying different things; in 8th grade I vaguely remember dabbling
with Java. When I got into high school in 2002 I joined the FIRST Robotics team and that
first year I was on the animation team. After that year the only student who knew how to
program was graduating so I sat down over the summer and learnt pBasic, a version of Basic
for the Parallax BASIC stamp microcontroller. But, I never got a chance to use it. Soon as
the next season started up they announced that they had switched controllers to
Microchip’s PIC controllers, which were programmed in C instead of being programmed in
pBasic. I continued to spend the remaining three years on the FIRST Robotics team
programming in C. During this time I was also part of the Lemelson-MIT InvenTeam from my
school where I programmed a vector-based autonomous field striper, and created a
Socio-economic model for robots to follow which took 4th place at the Intel International
Science and Engineering fair for team Projects.
But, even though I spent a lot of concentration on those projects thats through High
School it was around this time that I started diving deeper into web programming with
MySQL, PHP, and CSS. And I’ve been playing with it since then.
Experiences:
Recently I have been working on my own website using MVC architecture. It started out as a
bet from my friend that I couldn’t make a site similar to facebook in a week. I did that
but he argued that even though I had classes in my design that it wasn’t
object-orientated. This inspired me to evolve the site to the next level with MVC
architecture and design patterns. While its still and progress the site can be viewed at
http://www.zoebabin.com and the source code for it can be found at
http://www.aaronmaturen.com/mvc.zip. I have been using PHP and MySQL for 6 years now and
I’m always trying to expand my knowledge on them. Currently I am studying for my MySQL 5.0
DBA certification which I am hoping to have by May. Also during this last semester I
helped run a study group on design patterns where we went through the Gang of Four book
and the Headfirst into Design patterns and went over 3 of the design patterns every week.
Also I am currently working on a research project with biology professor, Dr. Gary Lange
and a fellow student at Saginaw Valley State University where we are designing a program
to record events in controlled lab experiments. We’re using Java to program it in order to
ensure that the program will be able to be ported easily to several different operating
systems.
In regards to programs I have done for class; my favorite one was coding Dijksta’s
shortest path algorithm into a flight management system. It was with this program that I
was able to become the most comfortable with the standard template library in C++.
Open source:
In preparing for Google Summer of Code for 2010 I started looking at projects that have
been part of it in the past; mainly XBMC. I got as far as using svn to copy the trunk and
install all of the dependancies for it to be compiled, but unfortunately before I was able
to complete any pre-qualification tasks the projects were announced and XBMC isn’t one of
them.