Wednesday 3 September 2014

Learning Software Engineering - through analogies

In this installment of the ITIP, we will look at the technique of learning through analogy in greater detail by understanding how Software is built.

Civil Engineering and Software Engineering

Software engineering is a few decades old, while civil engineering is a far older discipline, thousands of years old. Software engineers have borrowed ideas from other disciplines of engineering to help the rapid development of the field! Interestingly civil engineering has been a very important contributor to Software engineering and you will find a lot in common.

The analogy is, you are building a house in the real world and building Software in the virtual world. We will try to understand how Software is built by drawing a parallel with building a house.

How the story unfolds in the real and virtual worlds...


Let say we are planning to build a house in the real world...what is the first thing that you would need? The answer is: Land! We would need a plot of land to build a house. So, we buy a piece of land and build a fence around it to mark the boundary of the land. In a very similar way we start a project (an endeavor with an objective to build Software) and scope it! Scope is the boundary. Building a Software or starting a project without scoping it is a recipe for disaster (or at least a lot of misunderstanding!)

Once you have the title and the papers to your piece of land, the next step is to approach an architect who would be willing to design your dream home. The architect would initially call you and your family over for a discussion (an interview of sorts) to understand what you are looking for. Based on his/her understanding of what you are looking for (your requirements) s/he is going to develop a design (the drawing board design). In a similar way, once a Software project is scoped, you go to a Software architect. The architect will ask you a number of questions (an interview of sorts) to understand your Software requirements. After several rounds of discussions the Software Architect comes up with a Software Design.

All disciplines of engineering are characterized by drawings, Software engineering is no exception. Software engineers, call them diagrams! So, Software architects develop designs in the form of diagrams. These diagrams and the notations that are used in them have been standardized. One such standard is called the UML - Unified Modeling Language.


Once the Architect has a design ready, you approach a mason (or contractor) to construct the house based on the design. In a very similar way, once the Software Design is ready you approach a coder (also called a programmer/developer,etc) to write the code. This act is called construction or coding!
While the house was being built there were a number of checks being done at various point in time to make sure things are going right. These checks are also performed when a Software is being developed. This checking is called Software Testing (also referred to as Quality Assurance). Testing is done at various points in time and is given different names like Unit testing, Integration testing, System testing and User Acceptance Testing (UAT) - not shown in the picture below.

Once your dream home is build you start living in it. Like wise, once a Software is built, the you start using it. As you start using your Software you encounter problems, similar to issues faced once you move in to your dream home! This stage of the Software project is called, Maintenance.
The keywords during Software maintenance are change requests and bugs!

Thanks, for reading and see you with the next installment of the ITIP. Have a nice week!

Monday 25 August 2014

Learning through analogy

Introduction

In this weeks' installment of the ITIP we are going to look at the idea of Software. Along the way we will explore the concept of learning through analogy.

The Stored Program Concept

(To get an idea as to how the Stored Program Concept came into being click here)

The Virtual world came into existence with the Stored Program Concept - all computers big and small are built on this concept. We will call the memory the workbench of the computer. The processor is the one doing all the work! The processor will work only on "those things" that are on its workbench.
There are ways to put things on to the workbench and take things off the workbench. Things are put on to the workbench through input devices (called input) and removed from the memory through output devices (called output). So, this model, based on which computers work can be summarized as input-process-output model. The memory is an important part of this model - also called the workbench!

Note: "things" in the above paragraph is Software and all other parts of a computer are considered hardware.

What is Software?

Software is "any-thing(s)" that can reside in the memory of a computer - which are essentially Data and Programs. So, we say Software is nothing but data and programs and the circus of building Software is all about building Data and Programs.

So, how do we build Data and Programs (Software)?



Learning Through Analogy

The best way to understand Information Technology in general and Software in particular is, by  "learning through analogy".  I would like you to recall the dual world model which was explained in an earlier post (The Origin - the dual world view ).

Imagine, you are the Executive in a organisation (in the real world) - all "work" that you do comes to your desk. You are like the processor, your desk is the workbench. Somebody needs to manage your time (schedule), keep your desk clean, bring "files" on to it take "files" off it (input/output), organize and manage all the files (remember all those filing cabinets that only secretary knows about!). This is typically done by a secretary or personal assistant..

In a computers scenario (in the virtual world) there is one such person! That person is called an Operating System (like a secretary to the processor!). An operating system manages the processor and the memory (workbench ). In fact, some of the functions of an Operating system technically speaking are:
* Memory Management, *Process Scheduling, * Input/Output Management and * File Management.

So, most virtual world ideas can be mapped to the real world. Though, you cannot apply something in the real world mutatis mutandis to the virtual world there exists a lot of commonality which is what the ITIP employs to provide a customized and personalized learning experience.

Hope, you understand the concept of Learning through Analogy. You will be seeing more of it as the ITIP unfolds. Thanks for reading and have a nice week!

Monday 18 August 2014

The Artifacts - Hardware and Software



The previous post defined the word "Abstraction" and the two worlds Real and Virtual.


The Virtual world (also called cyberspace)...

There are two kinds of resources in the virtual world - they are Hardware and Software.


Hardware and Software always co-exist in the Virtual world. If Software envelopes hardware we call it a "computer system". If hardware envelopes Software we call it an "embedded system". Software can be found in computer systems and embedded systems. Further, all Software can be categorized as Data and Programs. It is the interplay of data and programs that make Software so interesting.

During the ITIP we will explore Software (data and programs)



What is the Virtual world made up of? The answer is - artifacts.  An artifact is anything made by human hand. Everything in the Virtual world is made by humans. Hence, everything is an artifact!







The ITIP is based on 4 fundamental concepts - Information, Instruction, Interface and Interactions - called the 4I model. 

Any aspect of Software can be understood using the 4I Model.  No, we will NOT be talking about the 4I model in the next post!  We look at how Software is built...and in the process answer the question "what is Software?". Thanks for reading! See you next week...







Monday 11 August 2014

The Origin - the Dual World View

The Information Technology Induction Program - the ITIP is a top-down, outside-in approach to learning Information Technology (IT)...

Okay, I guess there is a lot of explaining required.

There is so much to learn, do and appreciate that I don't know where to start, what to start with, how to start, when to or even why start! Having revealed how confused I am, in this awkward position, I would like you to just read on....I think the basis of all IT is this word, "Abstraction". In this post I would like us to understand this fundamental concept which forms the cornerstone of the ITIP.

Background

I came across the word abstraction when I was learning Software design using the Object Oriented Analysis and Design (OOAD) approach.  There were 4 words (concepts) that came to the top: Abstraction, Encapsulation, Modularity and Hierarchy.  Later on I had to teach (learn with others) the concepts of OOAD and UML (Unified Modelling Language)

The Illustration

A treeIf I asked you, what is it that you see in the picture on your right?
You would perhaps say it is a tree...you are right! I was also wanting to convey the same thing.
Now, if you think about it a little further, this not a tree. It is a representation of a tree. It is an abstraction!

Abstraction is the representation of "anything", that helps us understand it better. I would like you to go with definition of abstraction throughout this program.

The tree could also be represented as shown below.
Any form of modelling is an abstraction of "something" (in other words a representation).

So, thanks to this idea of abstraction we can model anything. The important point being, there is likelihood for ambiguity when our representations don't match. So, as long as the same "thing" is abstracted by all parties involved and the same abstraction is communicated and agreed upon, it aids understanding. Otherwise, it can become a barrier to understanding.


If you are comfortable with this idea of abstraction I invite you to join me to explore, discover and apply Information Technology in your daily life by engaging with the ITIP.

Your comments/suggestions are welcome all the time...!!!

The Dual World View

I am going to introduce the first model of the ITIP and check your comfort level (that will be it for this post). There are two worlds - one I will call Real and the other Virtual. These two worlds are represented by rectangles as shown in the figure below. (I can do that thanks to abstraction!)



When two people call each other it goes through the Virtual world. The people and the telephone instruments are in the Real world.

You go to an ATM and draw cash, the cash is in Real world all the processing that is going on behind the ATM's interface is in the Virtual world.




In order to be sure that we are on the same page, I would like you to do a very quick exercise. Think of 5 things in the Real and Virtual worlds.



Note: Your dreams and thoughts are not part of the Virtual world...the Virtual World by definition is created by Information and Communication Technology (ICT).

The scope of The ITIP is the Virtual world - we are going to be exploring various aspects of the Virtual world.


As the ITIP unfolds I would like you to keep this model (the dual world view) in mind. In the next post we will be starting our exploration of the Virtual world. Catch you over the next post...