Skip to main content

Framework, Architecture, vs. Solution

I always struggle to figure out whether to use the word framework, architecture, or solution while trying describe what we developed/designed. Here's the difference among those terms based on several sources:
  1. Underlying set of ideas: a set of ideas, principles, agreements, or rules that provides the basis or outline for something intended to be more fully developed at a later stage - Encarta World English Dictionary
  2. Context: the general background to, or context for, a particular action or event, e.g., legal framework - Encarta World English Dictionary
  3. System of interconnecting bars: a structure of connected horizontal and vertical bars with spaces between them, especially one that forms the skeleton of another structure - Encarta World English Dictionary
  4. A set of theories widely accepted enough to serve as the guiding principles of research within a particular discipline - Wikipedia
  1. Building design: the art and science of designing and constructing buildings - Encarta World English Dictionary
  2. building style: a style or fashion of building, especially one that is typical of a period of history or of a particular place - Encarta World English Dictionary
  3. Structure of computer system: the design, structure, and behavior of a computer system, microprocessor, or system program, including the characteristics of individual components and how they interact, e.g., network architecture - Encarta World English Dictionary
  4. Both the process and product of planning, designing and construction - Wikipedia
Solution (source Encarta World English Dictionary)
  1. Answer to puzzle: the answer to a puzzle or question
  2. Ending of something: the act of ending, breaking, or separating something
Thus, it seems framework is concerned with defining the underlying ideas and framing the work (defining boundaries). For example, a software framework defines a set of classes and how they are interrelated. They may also define methods/functions without specifying how to implement them. According to 3rd definition, framework is also used to refer to underlying solution that can be used to build other things on top of it, e.g., .NET framework or OMNet++ simulation framework. Therefore, a framework is generic enough or extensible to be applicable under different scenarios.
Whereas an architecture is concerned with both the design and how to execute them. For example, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modeling of those systems (source - Wikipedia).
Solution is the ultimate outcome when a framework is translated into an architecture, and when that architecture becomes a reality.
Therefore, if we are referring to something conceptual (e.g., block diagram) we can consider it to be a framework. If we further extend the block diagram and talk about specific details of each block (e.g., what algorithms to use) and how to integrate them, then it's an architecture. If we go further and develop it, it becomes a specific solution. Framework is generic while solution is specific.

Still confused - you are not the only one, e.g., see Define “Framework”


Marschal Babin said…
Thanks! This was a very helpful and clear delineation between the three concepts.

Popular posts from this blog

1. Building P2P Simulators with OverSim - Where to Begin

This could be a series of blog posts about extending or developing your own OverSim applications & overlay networks. OverSim has a minimal tutorial on writing your own application & overlay network; however, it doesn't show the big picture. So, I'm wasting lots of time playing with code & trying to understand the rest. Good thing is, I like it more & more as I understand. You need to change/develop only a few things, but finding out which ones is a hell of a task. I hope this will not only make my life easy but also will be useful to new comers. Here's what you need to do: You need some background on OMNeT++ OverSim extend OMNeT++. But sometime it has its own way of doing things (to make your task even simple) so understand the differences.Develop several OMNeT++ simulators. TicToc is a good one to start with. Extend it as you imagine.Read Towards a Common API for Structured Peer-to-Peer Overlays, which is the basis for OvseSim's API. Here'…

Python Code to Calculate Gini index/coefficient, Robin Hood index, & Lorenz curve

Following Python code can be used to calculate Gini index, Gini coefficient, Robin Hood index, and points of Lorenz curve. Lorenz curve can be also plot if matplotlib is installed.
It's based on the steps given by Peter Rosenmai.


Other online tools:

Describing Experimental/Simulation Setup

Sometimes the results of a performance analysis may depend on the computers used and/or specific features of software/libraries. In such cases it is extremely important to describe the experimental/simulation set up in details. It enables others to repeat those experiments as well as check whether the results are rigorous, statistically sound, and unbiased. Unfortunately, "Simulation Setup" is the shortest section in many research papers where authors try to save space by cutting down as much as details. Here are some tips on what to include (in addition to describing the experimental/simulation setup) based on my experiences:
Type of Simulation Are the results based on Experimentation, Emulation, or Simulation? If simulations also mention further details like whether it is Discrete Event, Montacarlo, Stochastic, or Deterministic simulation. Are the results for Steady, Dynamic, Starting/ramp-up, or Terminating state(s)?Number of Experiments/Simulations No of sampl…