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:
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.
Monthly Plan
| Month | Task | System | Milestone / Deliverable |
|---|---|---|---|
| November | Complete Technical Writing Component | Taskstream | TWA Paper |
| November - December | Design and create database tables | MySQL | Operational SQL Database |
| December | JDBC connection between Java files and database | Java/MySQL | Java Logic Files – built using JDBC API |
| January | Program Logic | Java | Java Files |
| January - February | GUI | Java Swing | GUI |
| February | User Guide | Google Docs | User Guide |
| March | Capstone Writing | Taskstream | Final Paper |
Weekly Plan
| Week | Task | Deliverable |
|---|---|---|
| Oct 30 - Nov 12 | Install and configure MySQL | MySQL installation - client/server architecture |
| Nov 13 - Nov 19 | Design SQL tables - outline | Define database tables, relationships, and primary/foreign keys |
| Appendix 2 - Table Relationship Diagram | Nov 15 | Submit Technical Writing paper for grading |
| Technical Writing Paper | Nov 19 - Dec 10 | Design SQL tables |
| Operational MySQL Database | Dec 11 - Dec 24 | JDBC connectivity and initialization |
| JDBC interface between Java instance and MySQL database | Dec 25 - Dec 31 | Holidays - not much will be done |
| Jan 1 - Jan 11 | Creation Logic | Java controls for creating new recipe objects and necessary related objects (ingredients, instructions, etc) in the database |
| Jan 12 - Jan 21 | Modification Logic | Java controls for updating and deleting recipe objects and necessary related objects (ingredients, instructions, etc) in the database |
| Jan 22 - Jan 28 | Validation Logic | Java controls for updating validation lists |
| Jan 29 - Feb 11 | GUI | Structured Graphical User Interface |
| Feb 12 - Feb 18 | GUI | GUI controls connected to Java logic pieces |
| Feb 19 – Mar 3 | Write User Guide | A fully-illustrated users guide for how to operate the Chef Helper program |
| Mar 4 - Mar 24 | Capstone writing | Capstone Writing Project |
| Mar 25 - Mar 31 | Submit 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:
| Days | Task | Deliverable |
|---|---|---|
| Jan 1 - Jan 31 | Install and configure MySQL | MySQL installation - client/server architecture |
| Feb - Feb 29 | Design SQL tables - outline Define database tables, relationships, and primary/foreign keys | Appendix 2 - Table Relationship Diagram |
| Feb 1 - Feb 29 | Design SQL tables | Operational MySQL Database |
| Mar 1 - Mar 28 | Create basic GUI layout | Non-functional GUI |
| Mar 29 - Apr 7 | Create Java classes for Ingredients, Recipes, Meal Plans, and Daily Plans Each class should export to GUI-ready formats | Java classes for Objects |
Apr 8 - Apr 14 | Finalize GUI and connectors | Complete GUI |
| Apr 15 - Apr 23 | Database Conference in Ft Lauderdale - no work will be done | |
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 |
Apr 24 - Apr 31 | Integrate all pieces Create main classes to load program components | Completed, usable program |
May 1 - May 5 | Write User Guide | A fully-illustrated users guide for how to operate the Chef Helper program |
May 5 - May 10 | Capstone writing | Capstone Writing Project |
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