Functional Analysis

Some people exchange the term functional with business in functional analysis activities. There is a difference between business and functional analysis. In my opinion, business analysis is the process of analyzing the business process(es) and producing a model of the business for the purpose of improving it or optimizing it. This is because it's much easier to work with models. On the other hand, functional analysis, in an application context, is the process of analysing the sum of functionalities that produce the logic of how things function and work gets done.

Before analyzing a business context, let's say that Information Technology as a tool to support human activities might not "support" all processes. This is becasue some processes cannot be digitalized and, hence, need to be carried out by people. For example, when ordering a product from internet, the process of bringing the product to your home is done by people. Maybe this will change in the future, like in the Star Trek series, allowing an object to be transported to its destination in a beam and then the object is rematerialized. But, until then, there's a need to properly analyze all processes that make up a business scenario and determined which ones can be digitalized, and which ones cannot, and design the whole process scheme with methods that facilitate technology implementation.

Hence, we need to start somewhere. Knowing nothing about the business context, the best way to start is to organize a series of interviews with the people that run the business and have knowledge of all activities and processes. This investigation can be conducted in different ways, for example:

(i) individual interviews, 
(ii) workshop involving more people.

Any of these two case will do, just be aware on how much time is given to capture this information and on the availability of the person being interviewed. The time required for this type of analysis is proportional to the level of complexity of the process to be analyzed. What is important here is to use a serious and structured approach in order to have the opportunity to capture all steps involved in each process of the business. Each process has to have a purpose, entry criteria that triggers it, input(s), tasks (a list of actions bringing the results), output(s), work aids (there might be functionalities to support the process), and a criteria for exiting the process. This can be structured in the form of a template to facilitate the analyst.

An applications may consists of one or more fucntionalities. There's also a need to identify other important aspects of an application, that is, those characteristics that enables a user to have a set of capabilities. Let's call these characteristics features. For example, on a a cell phone, text messaging is possible thanks to the gsm technology. So, if the cell phone is represented by the application and text messaging is one of its functionalities, then gsm is a feature of this applicaction (because a user is capable of sending a text message). Hence, as part of the analysis, a list of features can be captured and described.

The next step is to analyze the way a user interacts with the application. Again, this shall be done by organizing a series of interviews and/or workshops with users/subject matter experts that are already interacting with computers and have knowledge of all functionalites from user's perspecitve and, perhaps, desire to have a new application.

The analysis work is accomplished by describing the way users interact with the application to get the job done (this includes all steps and the logic of business rules). Activity diagrams, which are similar to flow charts, can further support the application by describing the the flow and logic of the activities (use cases, business rules,...). 

After having analyzed the process and captured a few use cases and other elements such as the number of reports, the number of screens (user interfaces), algorithms and data needed for a specific application (or at least have a good feeling of most elements), it's possible to make an estimation on its size and determine how much effort is needed to build the application.