When setting up a Ruby/Rails development environment utilizing Ubuntu 12.04 LTS you may find yourself running into issues with setting your RVM default Gemset.
rvm use 1.9.3-p286@rails3 --rvmrc
When setting up a Ruby/Rails development environment utilizing Ubuntu 12.04 LTS you may find yourself running into issues with setting your RVM default Gemset.
rvm use 1.9.3-p286@rails3 --rvmrc
So the question has been asked “What are the weaknesses of using data flow diagrams as a modeling tool?” and my response to that question is an avalanche of probing questions.
I find questions of weakness extremely interesting because the definition of weakness is always tied to the perspective of the one pointing out the supposed weaknesses. In addition, the perspective of that individual is always affected by whether or not they actually understand the intended use of the item they are calling weak. Even if the individual has a full understanding of the item and its use, have they actually stopped to consider whether or not the item and its associated use are even appropriate for the situation in which they are trying to use it?
Most of the time when I find myself defining something as weak it is because I either, do not understand fully its intended use, I am trying to use it for an unintended use, or I have not stopped to consider if I am even using the right tool for the job at hand. Rarely do we find a truly multipurpose tool in our belt, we usually need a toolbox to get the job done. We get the job done by using each tool as it was intended.
This brings us to data flow diagrams and their intended use. Simply put they are designed to allow us to visually represent all of the data inputs and data outputs of the various processes within our systems and at various levels of granularity (processes, sub-processes, etc…). Thats it, that’s all they are designed to do and when looking at them from their intended use (that perspective) I really cannot identify any weaknesses nor any real need for a replacement.
Now if I looked at them as though they were the only diagrams I was allowed to create for my new systems, from a perspective that they were the one defining system document, can I find some weaknesses? You bet! They are as follows.
DFDs do not provide:
In programming we have a mantra which every good developer instinctively follows “Each method must do one thing and do that one thing well and thats all it should do.” The beauty of this statement is that it applies to pretty much everything in life, including analysis and design.
Data flow diagrams do the job of identifying the data input and data outputs of our system’s processes and they do it well, as they should. In that light each of the “weaknesses” identified above has its own modeling/diagramming methodology which effectively captures and records the information needed within its context.
In systems design we cannot rely on a single modeling approach to capture everything a system is or will be. This is because our systems are complex, layered, and partitioned into various complex pieces each of which belong to different disciplines guided by different methodologies.
What makes things difficult is the fact that all the pieces of our systems overlap and intertwine which, of course, causes the modeling methodologies to mix. As analysts I have found we attempt to force a single methodology to be the one glove fits all solution for modeling these extremely complex systems. This simply will not do.
I do not design my code utilizing the same modeling paradigms as a data modeler designs a database nor does the UX designer design her user interfaces using the same modeling paradigms as I. But through our joint efforts and the combination of our modeling methodologies, we build complex, amazing systems.
1. Kendall, K.E. (2011). Systems Analysis and Design.
Pearson Education, Inc., publishing as Prentice Hall
Data flow diagrams can be quite useful when utilized within the systems development lifecycle because they assist the analyst in gaining comprehensive views of a system’s processes, inputs, outputs, data stores, and external entities at varying elevations.
Data flow diagrams are put together through a top-down method starting from a bird’s-eye-view, then gradually decreasing the altitude, thus narrowing our view of the system. By narrowing our view we are in effect slowly moving from a macro view of the system to an ever increasing micro view of the system’s process and subprocesses. It is through this process that an analyst can eventually document and describe a system down to its most primitive processes, creating a very specific set of instructions which can eventually be translated into a working system.
As with most every man-made creation it is paramount we start at a logical level, a level at which we can focus on the design of our creation rather than the actual physical manifestation. Once our creation has been completely conceptualized we can then focus on how we intend to physically create it.
For this reason data flow diagrams are separated into two types, the logical or conceptual and the physical.
As hinted at above, the logical data flow diagram is kept at what is called the conceptual level or a level at which we are only considering the concepts making up our system, not its physical embodiment. By remaining at a conceptual level we are better able to focus on entities, processes, data, and data stores in an attempt to identify them all and verify they are documented as accurately as possible.
The reason this is important is that once the physical aspect of something is introduced we tend to give it more focus and attention. This is because we are physical beings and we like dealing with what is real; we can see it, touch it, and work with it with our bare hands. At the moment the physical is introduced we are no longer concerned with the design, or not as much as we should be.
While are are in the conceptual space our diagrams will focus more on the following important aspects of design:
The conceptual space also provides us with specific advantages:
Once we have great grasp on the concept of a new system we are better prepared to decide on its physical implementation. With this knowledge we can create what is called the physical data flow diagram.
In this diagram our focus changes from the conceptual to the actual way in which we will develop the system. With this change in focus we begin to consider the items we will need such as the hardware, software, files, and resources.
When at the physical level we need to focus on the following items:
The physical level also provides us with several advantages:
These two types of data flow diagrams are extremely useful alone or in combination with one another. This efficacy is greatly enhanced when they are utilized within a very specific sequence as outlined below.
In the above order, each data flow diagram helps to enhance each subsequent one. When used together the resulting system will provide a much better solution to the business needs.
1. Kendall, K.E. (2011). Systems Analysis and Design.
Pearson Education, Inc., publishing as Prentice Hall
Mandatory Skills of a JAD Facilitator