Tag Archives: programming

Why Steal Software When There is Free Software?

Recently, one of the leading commercial software companies in the world has hired one of the leading advocates in town to crackdown individuals and organisations that are using software which is not licensed. That is people engaged in theft of software products — an act that is often called software piracy. In the past, there has been a feeling that most of the software companies are not local and therefore do not have local presence to detect and followup individuals using their products illegally. However, as of today, perhaps with the help of the credit crunch, even the largest companies are determined not to loose any revenue on products that represent their livelihood. Considering the price of these products and current economic downturn,   it may not be possible to pay for them and yet it is not possible to do without.

Actually, there is a better and smarter workaround. There are free software alternatives for all your needs ranging from simple document editing to advanced professional systems. Besides when you pay for the commercial products, you do not really own it, for instance it would be illegal to lend it to your friend or wife. Commercial software products are like buying a car that you cannot even give a driver to drive you or your spouse to pick your daughter from school.

Free software precisely means free of charge, that is software you can get at zero price. Moreover, free software gives the user freedom to use, to study and change it, and to redistribute it with or without changes. That is, you have the liberty to copy and redistribute in modified or unmodified form either without restriction, or with minimal restrictions to ensure that further recipients can also do similar things. Therefore those interested and with the technical know how can modify the software, add value or remove those unwanted features. Think about how often, you wanted to do something with a system, but it could not.

Let me first answer the question that might be developing in your mind – who owns the software if any, and how do they benefit? Precisely, a group of software engineers come together to build systems of interest. The answer is simple, the users do not directly pay for the software, but advertisers pay. In fact, to most commercial products there is a corresponding free software product. If your software needs are typing documents, spreadsheets, then OpenOffice is the answer to your needs. OpenOffice is free, powerful and provides an exceptional user experience. Of course you need an Operating System to start with. An Operating System controls and coordinates the activities of your hardware and other software on it. For free excellent Operating Systems, there are many choices from Linux based variants. My favorite is Ubuntu — “linux for humans”, spearheaded from South Africa. With Ubuntu, you do not worry about computer virus and comes with a collection of other software for all common activities. Be it music players, games, Internet software, e-mail software, they are all available on Ubuntu free of charge.

There is this old adage that free things are usually expensive. Free software is perhaps the first product am aware of to defy this adage, it is given completely free of change and performs better than the counterpart commercial software products. Take a case of Ubuntu, no virus is yet known to attack it. Indeed, the open source community has shown the way for many years: open peer review has proved to be an extremely effective way to detect design flaws, inefficiencies, and security holes.

Today, there are tens of millions of people around the world that use free software. Some free software products such as Apache Web Server command up to seventy five percent of the market. The question I have posed today, is then, why steal software when there is free software? Perhaps, one of the answers is that you are not aware of these free and excellent products. Maybe the one who exposed you to computing literacy had the same problem. There is always the first time, moreover, the free products provide similar or sometime better user experience because they are reviewed by many people. You have the freedom to lend or duplicate and use in anyway. Most important, if you have the competence, it is possible to personalise the software by removing or adding functionality to fit any taste.

1,762 total views, no views today

Turning ‘software’ into a ‘software service’

This article looks at how to turn an  existing software that is not service oriented into a service that can be used in a service oriented architecture. We need to know  exactly-  what  is a service?  We are assuming the resulting service will provide  identical functionality. So the  only difference between a software service and other software components is at the interfaces. The interfaces define how the service can be used individually or as part of a larger system. In summary a service needs to achieve the following properties :-

  • is self contained, highly modular, and can be independently deployed. A service can do something useful in its own right.
  • is distributed component, accessible over the network or locator other than the absolute network address.
  • has a published interface, so users only need to see the interface and need not to know the internal details of the implementation.
  • is discoverable, meaning users can look it up in a special directory service where all the services are registered. Services designed for public use require to be discoverable, otherwise potential users may never learn about the service.
  • stresses inter-operability such that users and providers use different implementation languages and platforms. That is any software can be turned on a service for use with other services regardless of the languages in which they are implemented.
  • is dynamically bound, which signifies that the service is located and bound at runtime. Therefore service users do not need to have the service implementation at build time.

Therefore, turning  a software system into  a service consists of encapsulating the software such that it is  exposed  to the web via well defined and  flexible network accessible application programming interface (API).  This can only happen using a set of inter-related technologies. Currently web services provide a technology suite that can provide the above listed characteristics.

Our next article will relate the technologies in web service to   the properties of a service.

2,431 total views, 3 views today

Problem solving -Define the problem

“Until the problem is well defined and articulated it is impossible to arrive at a solution”

The first step to solving any software engineering problem is to define the problem. Articulate the problem and eliminate all unnecessary terminologies and jargons. Start by reading the problem completely at least twice. Read and establish the context of each key word. If time allows, research about the problem.

Ensure that there is agreement on the problem to be solved. Try to restate the problem in you own understanding.  Find out from the person who posed the problem whether the restated problem is the same as the original problem. Identify instances of the problem and see it is possible to solve an instance or example problem A solution to the example problem may lead to insights about how to solve the general problem or bring about any remaining misunderstanding.

Look at the problem from multiple perspectives. Each perspective may reveal additional information about the problem. The problem should be distinguished from its symptoms such that the root cause properly identified and stated.

The output of this step is a well-defined and articulated problem that focuses on what is required for its solution.

1,606 total views, 2 views today

Software programming and problem solving

Programming is the process of planning a sequence of steps called instructions for the computer to follow. The fact that you are reading this post you already know that computers lack common sense and cannot make any judgment. So the computer will do as instructed by the programmer through the computer program. Programming is more about problem solving than coding.

A problem is the difference between things as perceived and things as desired. A solution will move the situation from the things as perceived to the things as desired.

Programmers are problem solvers and need to improve the art and science of problem solving. On one hand problem solving involves an element of art in that experience, judgment and common sense can help deliver smart solutions. On the other hand problems solving is a science involving scientific means of arriving at solutions. Overall, there are several steps to be taken to solve problems

  • Define the problem
  • Analyse the problem
  • List/Identify  alternative solutions
  • Select the best solution
  • List instructions that lead to the solution using the selected solution
  • Evaluate the solution

in the next post, more details on each step shall be discussed

1,433 total views, no views today