Establishing Application Requirements often seems to me to be a “which came first, the chicken or the egg?” scenario. Just where does one start when looking at a new application? What IS the “best” place to start? As an application developer, whether for a small business or a departmental application for a larger corporation, we are often asked to develop something from nothing. In my experience, what we are given to start with (if anything) is at best vague.
I would posit that the place to start that is most effective is with clearly defining the expectations for the output of the application. How is the output going to be used? Viewed? Printed? Web or client? Specifically, what are the data elements that are needed to form the output? What about output sequencing – what are the requirements? Any filtering of data required?
My starting point of choice is with the output, as I have found that once the expectations for output are clearly defined everything else around what data and how best to get it will fall into place.
My most recent experience with this phenomonon was in the form of a request something like “Can you add (various data pieces) to our program?” It has literally been years since I’d been into the program in question, yet I had a nagging feeling that the “pieces” of data in question should be available. The “real” question became “What do you want to do with these pieces of data if they are made available?”. The answer came in the form of a spreadsheet layout which would form the basis of about a half dozen reports — this was a very clear communication of the desired program output.
Once having this, further investigation indicated that there needed to be no changes to the existing database tables or various data entry screens controlling the data. What became clear was that bottom line this required output in a more useable format than currently available, and since this application was developed in the late 80’s newer technology could be used to access the data and format output as desired.
This is a case where the output requirements defined the input! Since the required input exists, it becomes strictly a reporting project, although a reasonably meaty one.