« Expanding your IT vocabulary | Main | Using conceptual models to illustrate software »


Perspective is everything

As we continue to focus on the wonders of software, here's another sort of thinking post, about how we must mutually understand the proper context, or perspective, before we can meaningful analyze and discuss the inner workings of systems. This is very much a review of the ideas we talked about in class last week - about using various conceptual techniques to visualize software.

High and low level views

We've talked recently about the difference between high-level and low-level information.  It's not hard to think of examples of other real world systems that can be better understood with this line of thinking.  Ant_breakdownAt a high level, nature, for example, is still one of the most compelling and complex "systems" we can study.  It's not easy to make many definitive statements about the natural world in all its mystery.  At a low level, on the other hand, atoms and molecules comprise all matter in nature.  We can begin to say something definitive about these basic units.   Take this ant, on the right, for example.  We intuitively see and recognize a creepy little insect.  That can tell us a lot about the creature.  But when we break it down into its sub-components we can really start to get specific about what defines the thing. Thinking in these differing perspectives forces us to look at the broad and sophisticated effect of a system, it forces us to look at the micro, individual components that define it, and, it forces us to consider the interrelationship between these high and low level perspectives.    Interestingly, just as when we looked closer at an atom we discovered subatomic particles, anytime we take a closer look at a low level process, we discover it too can be broken down into even smaller parts, even lower levels, giving us more details and even more precise information.  These lessons can add to our understanding of information technology. When thinking about systems, perspective is everything.  In order to discuss their inner workings we have to make sure we all understand the perspective, or view, that applies in any given case. 

Layers

Still with me? Ok, Well, we can extend this thinking to start to imagine a series of classes between high and low level concepts.  These classes constitute layers which each provide a distinct view of a system at work.    Try to imagine a system, a computer system or a system you encounter everyday, in layers.  You might be surprised to know that you already break down problems and complex systems in this way.  Sometimes it happens so automatically that you don't even notice.

Another way of putting this is to refer to our discussion on modularity.  Let's take a modular system like an automobile for example.  Though for many of us all we care about is that when we put gas in it and turn it on and put it in drive...it goes...it's also pretty easy to see that a car is not at all a monolithic system....rather it is comprised of a series of subsystems (body, chasis, suspension, exhaust, electrical, etc...).  AND, these sub-systems in turn are themselves made up of component parts.  Many of these parts, and even whole systems, can be interchanged with other vehicles and at least in theory reused.   This is modularity in action.   Now, when you're thinking about modular systems don't forget to specify where in the system you are focusing.  Are you looking at the broader composite system? Or are you "drilling down" aka focusing on a subsystem, component, or part.   It's really all a matter of perspective....but in the virtual world -so vast and intangible- it is important to narrow the context in which we are speaking so as to avoid confusion.   After all when we are designing or debugging a software solution we have to understand the context!  We have to visualize the environment.

Car_systems

More? Read: Thinking about systems in layers

Posted by Mark Hemphill on November 3, 2006 | Permalink

Comments

It is the absolute truth when people say that everything can be broken down into smaller and smaller components. This can be a very useful tactic if you are trying to learn more about something, however, I believe it is even more useful when there is a problem. You are able to look at every detail and try and find the route of the problem. Without this detailed inspection, you would not be able to find the initial cause. This allows room for improvement and the ability to innovate new ideas.. or approaches to solve a problem.

Posted by: Kristen Landry | Nov 11, 2006 3:45:11 PM

This post really helped me understand the modularity concept of this course with the comparisons, it made the concept much easier to relate to.

Posted by: Mikaela Ellis | Nov 20, 2006 12:42:25 PM

I agree with Mikaela, this post definitely aided in understanding the modularity concept... relating concepts to material on the outside really helps to identify its important aspects.

Posted by: Kristen Landry | Nov 26, 2006 7:59:44 PM

It is important to understand the concept of using different perspectives to study technologies. For example, it is generally easier for someone to understand how a hardrive runs a desktop if they look at each separate part inside. Knowing what each part does is like building a lego-model (modularity) where it leads to the production or definition of something bigger. Using low-level views or breaking a machine into layers will provide for a better understanding of, say, a Timex watch...

Posted by: Bradley | Nov 28, 2006 10:02:11 PM

Post a comment