Methodology, with respect to software, refers to the procedures by which complex software solutions are created. Methodology is all encompassing – it defines how to build an application from the ground up, from defining the problem all the way through post-implementation support.
Although several proprietary methodologies abound for developing various types of software, they all follow a general pattern: Analysis, Design, and Implementation.
The first stage in creating an application is to define the problem you wish to solve. To begin, the developer must take into account several preliminary questions: How effective is our current system? What does it lack? If we were to create a software solution to this problem, what functions must it carry out? These fundamental questions boil down to the three major aspects of the Analysis phase – Defining the context of the problem, identifying the problem, and defining the answer.
Inexperienced programmers, who would rather simply begin to write code, often consider this initial stage unnecessary. This couldn’t be further from the truth.; The Analysis stage is the most crucial of all – because problems later on in development almost always occur from an oversight in the general planning of the way the software should be created.
Once the problem and solution have been identified, the next step is to determine whether a software solution to this problem is actually feasible, and if so, the manner in which the actual code will be written and organized. To borrow from the EROOS (Entity Relationship Object Oriented Specification) methodology system, the Design can be broken up into Solution Design, Software Analysis, and Software Design.
The first step in the Design phase is to determine the solution’s feasibility. This means that upon taking into account the extensiveness of the solution, deciding whether the solution is worth the cost in materials and manpower. There are many factors affecting feasibility, including budget and time constraints, as well as availability of manpower skilled enough to complete the task.
It is only after feasibility has been determined that we finally begin to put things into the context of actual code. Now the developers must think about such issues such as what type of interface the program is to have with the user, which protocols the program will communicate with, etc. Another very important activity in this stage is defining classes, or categories under which your objects will be organized. Classes are key in separating different types of objects by attributes and behavior, which in turn allows the programmer to save time and effort redefining object attributes. Classes also help the programmer determine the restraints of the application, or if you will, how broadly the program can attack the problem.
The final step of the process is sitting down and actually writing some code. Of course, before the developer can start that, he/she must first decide which language to use. Although it all ends up 1’s and 0’s, the language in which a program is written has a lot to do with how effective the program is, how quickly it runs, and how easy (or difficult) it is to code.
By this time there should be little guesswork left as to how to enter the code. The developer has in front of him/her all of the specifications, outlines, functions, variables, and classes to use, the whole program has been planned out. It is now simply a matter of translating that into code the computer can understand. Therein, then, lies the real reason to why all of this preparation is necessary before writing the first line: When authors write books, they cannot simply open up a manuscript and begin typing the first page – they must already have planned out the elements of the story, plot and characters. In the same way, a programmer approaching a complex problem will find it impossible to simply sit down at a desk, and then begin hammering away at the code. Just as with any complex or involved task, the most important part is the solution, not just the actual code.