Tuesday, 18 October 2011

Research Methodology

The way in which I will progress through this problem is by breaking the task as a whole into smaller and smaller individual problems, much the way that functions and classes break down structured code.  Initially, I wont think in terms of code, but as a multitude of small, generic problems.

Once these problems have been broken down into components parts, I can begin looking for solutions.  Many of these tasks will not require research as they are simple enough or well known enough in implementation.  For those tasks that require research, I will document everything that I come across.  Even pages that I read that may not be completely relevant will be documented as I progress through the literature.  My search will mainly take place using articles, journals and books; both electronic and physical, with some lesser reputable sources being used for less important or complex issues in order to remain efficient.

I will be adopting a slow but optimal research methodology, instead of simply finding a correct or proven answer and then leaving the topic and writing up what has transpired, I will continue researching the topic until I believe I have found a suitable number of candidates.  This is the stage where evaluation will take place, each candidate solution will be evaluated for efficiency and accuracy.  I want this project to be as realistic as possible but there is a limit to the amount of efficiency that can be dropped before the project becomes slow and grinding.  My ideal set would consist of a complete solution that works very efficiently and ensures a smooth operation at run time.  Big O notation is a good way of me getting a feel for these solutions initially, personal testing will then refine the result.

When creating a unique solution to a problem, I will bear in mind several things in order to smooth the research process in addition to the problem decomposition mentioned above.  These are merely a rough outline of the technique, more in depth detail as to how they are used will be provided as they are utilised through the process.

Problem Solving Methodologies:
Output Analysis: 
As this project is mostly a physics problem, I am able to backtrack from the expected output, through the processing and come up with a list of inputs that need to be provided in addition to potentially correlating inputs/outputs to arrive at a heuristic for solving the processing.

Existing Solution:
This project is similar in structure to many other computing problems, as such there are probably many existing solutions for problems that I may encounter and need to solve.  While I am not suggesting plagiarism, it makes perfect sense to examine existing solutions, evaluate them based on your specific requirements and then create your own version of those solutions in order to match the unique criteria.  Many problems can be solved using the previously mentioned technique; however, simply because there does not exist a computing solution, does not mean there is not a solution elsewhere.  The bicycle simulator is perfect example and lends itself rather well to this method.  Just as I will need to solve mechanical and physics based issues within the engine, these issues have already been solved with the production of real bicycles.

Automating a Manual Process:
Similar to deconstructing a problem, deconstructing a process to its component parts and then looking at how these steps work could be an invaluable way to solve these problems.  By being able to do a single task manually, virtually or in reality; gives us a building block to work with in order to automate the process ready for continuous simulation.

Feasibility:
This is quite a large issue with projects of this sort as we must weight up options and select not necessarily the best, but the best fit.  Each problem solution will be a constant balancing between efficiency and accuracy.  My goal is to create a solid solution to the overall problem and deliver a quality piece of work.  This work may not do everything possible, but what it does will fit the brief and do it well.  Enhancements and extensions will be considered once the project is completed to my satisfaction, those that are uncompleted due to time constraints will be fully documented within the final report so that others looking at the project in the future, or even myself, can then use the ideas and build on them in order to improve an already quality product.  Just as I apply this thinking to project in general, as I will with individual components and researched items.  I will endeavor to provide the best solution for each problem through vigorous research, but there will be a limit to the amount of time I can spend not only researching, but also  implementing.  If a perfect solution exists but an adequate one also exists that will not detrimentally affect other components then I must err on the side of caution.

The next post will concern individual research topics that I will need to cover initially.

No comments:

Post a Comment