Wednesday, March 28, 2012

Chef Helper Begins



After many years of hard work, I have finally arrived at the very last class for my Bachelor's degree, the Capstone Project.  For my project, I have chosen to finally try to plan out and create the recipe program and randomizer that I have always dreamed of writing.

This crazy blog will chronicle the programming process and hopefully aid in the creation of documentation at the conclusion of this project. So without further adieu, let's dive in!

I'd like to introduce a new computer program, titled Chef Helper.  Chef Helper is (or will be) an electronic cookbook, providing storage capabilities for all your favorite recipes.  More than that, Chef Helper is a menu planner, capable of creating and storing meal plans for days, weeks, or even longer.  Built into the program is a shopping list generator which will extract a printable shopping list for any recipe or meal plan.

The program itself is being built using a three-tier architecture.  I am using MySQL for the data store and Java 7 for the application logic and graphical user interface.

I am currently about halfway through the programming process and am running into many matters of insufficient knowledge. Through my degree work, I have learned how to write simple bits of programs in a few different languages and I have been able to prove that I understood the nuances of the language.

Unfortunately this presents two problems at present:
  • First, note the use of the past tense. When prepared for an exam, I knew the nuances inside and out. But I've moved on through countless new projects and tasks and really can't remember a lot of what I studied for so long.
  • Second, I barely wrote any code in preparing for the exams and I definitely never wrote a full working program so I'm going into this with no real design or coding experience.
As I said, I'm about halfway through the coding process, so I'm going to have to start this blog with a recap of where I started and where I've gone from there.

Let's start with timeline changes.  My initial project proposal has to be submitted and approved as part of my Technical Writing course.  Since then, I've had one class that taught me Perl (and helped me lose Java clarity while improving some design structure knowledge).  In my proposal I had written the following timeline:

Monthly Plan

MonthTaskSystemMilestone / Deliverable
NovemberComplete Technical Writing ComponentTaskstreamTWA Paper
November - DecemberDesign and create database tablesMySQLOperational SQL Database
DecemberJDBC connection between Java files and databaseJava/MySQLJava Logic Files – built using JDBC API
JanuaryProgram LogicJavaJava Files
January - FebruaryGUIJava SwingGUI
FebruaryUser GuideGoogle DocsUser Guide
MarchCapstone WritingTaskstreamFinal Paper

Weekly Plan

WeekTaskDeliverable
Oct 30 - Nov 12Install and configure MySQLMySQL installation - client/server architecture
Nov 13 - Nov 19Design SQL tables - outlineDefine database tables, relationships, and primary/foreign keys
Appendix 2 - Table Relationship DiagramNov 15Submit Technical Writing paper for grading
Technical Writing PaperNov 19 - Dec 10Design SQL tables
Operational MySQL DatabaseDec 11 - Dec 24JDBC connectivity and initialization
JDBC interface between Java instance and MySQL databaseDec 25 - Dec 31Holidays - not much will be done
Jan 1 - Jan 11Creation LogicJava controls for creating new recipe objects and necessary related objects (ingredients, instructions, etc) in the database
Jan 12 - Jan 21Modification LogicJava controls for updating and deleting recipe objects and necessary related objects (ingredients, instructions, etc) in the database
Jan 22 - Jan 28Validation LogicJava controls for updating validation lists
Jan 29 - Feb 11GUIStructured Graphical User Interface
Feb 12 - Feb 18GUIGUI controls connected to Java logic pieces
Feb 19 – Mar 3Write User GuideA fully-illustrated users guide for how to operate the Chef Helper program
Mar 4 - Mar 24Capstone writingCapstone Writing Project
Mar 25 - Mar 31Submit capstone deliverables for grading

Note that it is currently March and I am not finished. So, like many real-world programming tasks, Chef Helper is behind schedule. I did get off to a good start while working on my Technical Writing project, which I submitted a little later than anticipated, I believe at the end of November.

At my mentor's advice, I actually shifted gears after that to complete my Perl programming course.  This took a couple of months so I didn't really get re-started on my capstone until sometime into February.  

In addition to changes to the dates in my timeline, as I've undertaken each task and come to better understand it, I've totally changed my approach to writing it.  Initially I was pretty set on doing the database, connectivity, logic, then GUI, in that order.  Having learned more about the JDBC package and the various GUI offerings in Java, I've discovered that I need to work harder on the end pieces (database and GUI), then create the logic to connect the two. I'm splitting the logic and the connectivity into two different entities, so the logic part works with the GUI (or other User Interface should one be needed), the connectivity works with the database, and the two work together to bridge the gap.

Since my original timeline is pretty much hosed, here's my new timeline:
DaysTaskDeliverable
Jan 1 - Jan 31Install and configure MySQLMySQL installation - client/server architecture
Feb - Feb 29Design SQL tables - outline
Define database tables, relationships, and primary/foreign keys
Appendix 2 - Table Relationship Diagram
Feb 1 - Feb 29Design SQL tablesOperational MySQL Database
Mar 1 - Mar 28Create basic GUI layoutNon-functional GUI
Mar 29 - Apr 7Create Java classes for Ingredients, Recipes, Meal Plans, and Daily Plans
Each class should export to GUI-ready formats
Java classes for Objects
Apr 24 - Apr 30
Apr 8 - Apr 14
Finalize GUI and connectorsComplete GUI
Apr 15 - Apr 23Database Conference in Ft Lauderdale - no work will be done
May 1 - May 15
Apr 15 - Apr 23
Create Java classes for database connections.
Classes should have methods for each needed SQL interaction and should output Objects
Java classes for Database interactions
May 15 - May 23
Apr 24 - Apr 31
Integrate all pieces
Create main classes to load program components
Completed, usable program
May 24 - May 31
May 1 - May 5
Write User GuideA fully-illustrated users guide for how to operate the Chef Helper program
Jun 1 - Jun 15
May 5 - May 10
Capstone writingCapstone Writing Project
Jun 15 - Jun 20
May 11
Submit capstone deliverables for grading


I will get into the details of my current progress and all further development in future posts. For now, consider this the jumping off point for completing Chef Helper and finally earning my Bachelor's Degree.

No comments:

Post a Comment