What About Sub-standard Software Systems

Like any incurable disease it (software) attracts more quarks, magicians and fortune tellers – -E.W. Dijkstra

In the past five years, I have come to think that it is valuable for the general public to know the distinction between a good computer system and a bad one, especially that the consequences affect even the innocent. Perhaps you have been to the bank and a teller casually announces that you can not withdraw or deposit money because the system is ‘down’, or you can not access your academic transcript because the system is ‘unavailable’. Maybe you have ever missed salary because of the computer system! Failure to withdraw your money may mean the landlord evicts you from the house or your son misses school. Failure to get the transcript may mean a missed life-time opportunity.

Such systems lead to wastage of millions of money, put lives at stake and businesses on the mercy of quarks. For government, the security of nation can be put at stake. The more computer systems fail, the more it becomes incurable because the general public has come to believe that it normal for systems to usually fail

A comparison with civil works

A comparison between the engineering of computer systems and civil engineering is informative. Unlike civil works, where the effects of a rudimentary engineering or lack of it are there to see through collapsing buildings, eroded fences and roadworks that are often fatal and lead to deaths, the effects of a rudimentary computer system are not readily visible. Mechanical engineers can get away with approximations for unknown or incalculable effects, substandard materials, and other surprises by building in safety margins. However, in software systems a single bit error can have disastrous consequences. Despite the the invisible nature of immeidate impacts of ill designed computer systems, the consequences  go beyond what most can predict and can be as fatal as a collapsing building with occupants.

Unlike civil works that may be faced with fake construction materials (such as cemment in Uganda), the key players in the construction of software systems are the programmers and those that buy the software. So the quality of the software is enitely in the hands of programmers.

Now warrant not guarantee -“as is”

 Interestingly, computer scientists mastered in advance, the art of hiding their incompetencies. They use fancy terms such as bugs to describe what ordinary means a malfunction. That is, a system that can not correctly do what it was intended to do. They do not even want to take responsibility of their own actions. Most software systems provide no guarantee or warrant for even the very mission the system is supposed to achieve.

The public has also accepted this situation and with not regret, it is not is common to hear  with a smile  that the computer system is not working, or the computer system is unavailable. Such lame explanations that have made system failure synonymous with the computing discipline are hurting. Such systems should not be casually accepted and need to be questioned for evidence of rigorous software engineering in the design and construction.

Good software is supposed to be reliable

Like any tool, a good software system is supposed to be reliable, that is safe to use by virtue of the fact that, when used, it acts as intended, or, more precisely, it reacts upon our inputs as intended. Even before subjecting a software system to a rigorous check for suitability of purpose, some indicator of incomplete and poor workmanship are usually there for even the computer illiterate to see. The first systems to be dismissed with contempt are those that fail due to any user inputs or limit existing good manual practices. That is, start by entering any data and good system should continue to behave normally. Bad systems will fail. Such systems are a clear manifestation of inept software engineering where the system is erected prematurely.

The buyer  at fault 

Executives, procurement officers should be aware that any programmer of some intelligence can cook up a computer system, the properties of which are utterly unattractive and unrelated to anything else. They need to be aware that the construction of computer systems is not a chaotic process with out systematic means to evaluate and sort them.

The executive managers with no formal training in software engineering approve these systems on the basis of their computer literacy normally in typing skills and email forwarding. Simple clicks and intelligent animations are usually enough to   append their signatures on products that are an art of ingenious and intelligent computer quarks.

Software production is a systematic process and quality can be assured

The most important aspect of a software-based system lie in the modeling and analysis of its interactions with external factors and overall mission assurance. Before purchasing or accepting to use a software system, it must be checked for for system-level information assurance issues. It must be checked for Possible fail-stop mechanisms and procedures, fallback, contingency solutions for both direct and secondary effects of failure modes. And Usage scenarios are frequently not a priori limited.

The regular failure and unavailability of computer systems has convinced the general public that it is normal for computer systems to fail. The proliferation of poor systems is a making of buyers who are easilty decieved by self made computer experts. As Edgar Dijkstra put it, Like any incurable disease it (software) attracts more quarks, magicians and fortune tellers

 4,289 total views,  1 views today

Feed Yourself With News Anytime Anywhere via Internet Feeds

Let the news, latest music, videos and whatever you like follow you to your mobile phone, laptop, or to the desktop of your office/home computer. Gone are the days where you had to check the Internet for the latest updates about scholarships or scores of your favorite football club. Perhaps I should also point out that most Internet users settle for a set of favorite sites that they check regularly. Without the Feeds, typically you would regularly have to check the different sites for new content and news.

RSS, also known as Feeds, is a short form for Really Simple Syndication and provides a technology where you choose the news you want to receive. You can filter the news by category and the frequency to be updated. Some Feeds deliver the entire content to you while others deliver teaser text. A teaser text is a summary of the news to entice you to read the full article. Feeds not only provide you with a smart way of surfing the Internet, but also keep you updated while saving a lot of time. That is, instead of looking for the same information on a regular basis, the information actually looks for you.

Although not yet widely adopted, all modern sites support Feeds where you can subscribe. Take a simple example of news website such as BBC, CNN or SOCCERNET, whenever the news are updated, a summarized version of the news, called a teaser is sent to you. Similarly, when you subscribe to facebook, or Photo sharing site, the new photos are downloaded to you. Unlike other technologies, you have the news delivered to you.

But the greatest advantage of Feeds comes from the ability to choose and combine news from multiple sources. This capability is called aggregation and there are specialized tools called Aggregators. Aggregators allow users to combine and let content follow them anytime anywhere. This is opposed to checking 50 or 100 sites every day. Feeds provide an effective way to filter and organize the vast amount of information from the Internet. With Aggregators, you can set parameters such as how often they should be updated. Once you have aggregated your Feeds, you simply check the Aggregator or Reader for your customized news.

Feeds have rich applications in other areas such as distance education. Imagine a situation where students are notified on their phones whenever new content is posted. This form of interaction improves the e-learning experience. The Feed technology can also be extended to agriculture

The experience with Feeds is that you do not miss your favorite updates and are able to save time, generally keeping you informed anytime anywhere. Moreover, Feed technologies are cheaper compared to Short Messages Services, where you subscribe to a certain short code number and your are charged for each content.

*This article  first appeared in the newvision, the  Ugandan government owned newspaper  on may 26  2009 titled “Feed yourself with news anytime”*

 3,357 total views,  2 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.

 5,456 total views,  1 views today

A short answer to a Bank Manager about Software as a Service and SOA

Recently, I met an executive of a top bank who was trying to roll his head around the notion of software as a service and service oriented architecture. He intimated to me that these two terms are the only things he hears from software development vendors and the internal Information Technology team. I offered an explanation that went as follows.

Software as a service represents a shift in the way software is developed and used. In traditional software development, the software executable or program  code is installed on the users computer. This requires a copy of the same software for each user creating challenges in updating, maintenance and licensing.

SaaS allows software to be installed and used over the Internet or Intranet. It allows a single copy of the same software to be used by different users from a single location through the network, which may be  intranet or internet. Even when multiple copies are deployed, they provide redundancy rather than a copy for each user. Under SaaS, access to the software is strictly through external Application Programming Interfaces (API). To encourage loose coupling, the mode of communication is usually message passing. Because the software is used through an external interface and most often owned by a different party,  this is sometimes referred to as consuming a service.

An architecture that is based on consumption of different capabilities of software programs by way of external interfaces is called a Service Oriented Architecture (SOA). With SOA, solutions can be built faster because we rely on existing SaaS functionality and add only what is missing. Incase of failure of one SaaS provider, it is possible to switch to other providers. Moreover,   most SaaS vendors allow consumers to pay for only what they consume.

He appeared to understand and promised to get back to me, and will give feedback as soon as I hear from the manager.

 4,264 total views,  1 views today

Problem Solving – Analyse/Understand the Problem

The goal of problem analysis is to gain better understanding of the problem being solved before development begins. It is import to know why the problem is occurring, when and how often. Try to understand the first cause of the problem. Root cause analysis is a systematic way of uncovering the root, or underlying first cause of an identified problem or a symptom to the problem. Tools such as fishbone diagram or pareto chart can help visualize the problem.

Identify stakeholders – understand needs of users or other stakeholders. A stakeholder is anybody affected by the implementation of a new system or application. Probing questions include

    • who are the users of the system?
    •  who is the customer?
    • who else will be affected by the system?

Define a solution boundary- the solution boundary divides the world into two parts, your system and the rest of the things that interact with your system. The system boundary defines the border between the solution and the real world that surrounds the solution. A boundary is an interface between the system and the environment or other system. All interactions with the system occur via interfaces between the system and the external world.

Understand what is involved in solving the problem. This is involves a identifying what is information is needed and what information is available.

Identify constraints to be imposed on the system – a constraint is a restriction to the degrees of freedom we have in providing a solution. Constraints may be political, economical, environmental, technological, materials and resources as described below

  • What financial or budgetary constraints apply?
  • Are there costs of goods sold or any product pricing considerations?
  • Are there any licensing issues?


  • Do internal or external political issues affect potential solutions?
  • Are there any interdepartmental problems or issues?


  • Are we restricted in our choice of technologies?
  • Are we constrained to work within existing platforms or technologies?
  • Are we prohibited from using any new technologies?
  • Are we expected to use any purchased software packages?


  • Is the solution to be built on our existing systems?
  • Must we maintain compatibility with existing solutions?
  • What operating systems and environments must be supported?


  • Are there environmental or regulatory constraints?
  • Are there legal constraints?
  • What are the security requirements?
  • What other standards might restrict us?

Schedule and Resources

  • Is the schedule defined?
  • Are we restricted to existing resources?
  • Can we use outside labor?
  • Can we expand resources? Temporarily? Permanently?

 5,418 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.

 2,812 total views,  1 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

 2,475 total views

10 indicators why your Information Technology Strategy Needs alignment

Ask any executive A, dealing in fast moving products the total sales, or purchases of any consumables and the answer will be either to make a phone call to the IT department, secretary or a guessed number. Worse still s/he will give you historical data. Just ask another executive B, on any aspect say total collections, or the current stage of some critical ongoing processes and chances are that the response will not be different from executive A. I have had these encounters with private business executives as well as executives of top government agencies. This challenge that is sometime called ‘information blindness’ is not lack of information, but the inability to see it when it is silently passing by within the computers and network without anybody taking notice.

This blindness is a serious hindrance in today’s organizations that are required to live in the fast lane. Static monthly,or weekly or daily reports no longer suffice for todays modern executives and managers. They need full-time, minute-by-minute up-to-date, complete, accurate, and visually interactive information for efficient business combat in order to outsmart their business adversaries and optimally benefit from partners. Information blindness leads to missed opportunities and risks or catastrophic situations that could have been avoided. In almost all cases there will be sufficient information within the organization to detect an opportunity just-in-time. Similarly there will be sufficient information to avert pending crisis because an opportunity or a crisis is most often preceded by a sequence of events that get captured by the different information systems and computers albeit as independent and meaningless pieces of data where no meaningful inference can be made.

Partial information blindness in organizations is where out-of-time monthly, weekly or daily reports where risks can no-longer be averted or opportunities nipped in the bud is considered state-of-the art. Any organization’s have a life – a life defined by a complex combination of past experience, current and external circumstances in the environment where they operate. This combination is a cumulative occurrence of the important events in time-space that happen in the history of the company. Complete automation should capture this experience, present it meaningfully for decision making. Computers, networking the computers and different information systems are the foundation of this automation. This foundation should be followed by ensuring that information is available to all those concerned in real-time. Computerization seeks to improve processes, and create a basis for accurate decision making. However if despite investment in information communication technologies (ICT) and an entity still has some of the following symptoms, then your ICT setup needs ‘information surgery’ to arrest the information blindness. These symptoms include:-

1. Top executives are fed with static reports. By static we mean a report where you cannot directly interact with data to explore from different dimensions including representations. Lingering questions that relate to how, when and who should not be a reason to summon the author of the report for explanation, but should be self answered by zooming the data and drill down – what experts call root-cause-analysis.

2. Partial process are not transparent. All processes that are in progress should be visible to all those concerned. Processes that have partially progressed are factual steps towards an eventual desired or undesired result. Visibility to all concerned ensures immediate action or just-in-time interventions where possible and can save resources both human and financial.

3. Company meetings still ask for various updates from departmental heads. If this information supplied by head of department is necessary to the membership of the meeting, then it should have been automatically relayed incrementally as it happened for immediate action.

4. Have a team of staff to generate regular reports. I can tell you that what these folks do can be efficiently automated, because every body should be directly connected to the information grid. Generation of reports should be as easy as drag-drop, and click. Regular reports for archiving should be auto-generated. I am sure smart IT techies in these positions have already automated the regular reports. No wonder this position traditionally has high staff turnover.

5. Top managers still refer back reports for answers on why it happened and when it happened: When you are connected on the information, full automation should give you the power to zoom in, zoom out of aggregated figures, graphs and charts to see the actual data that is is responsible for those figures.

6. Events outside your organization are not captured: No organization lives in isolation, its operations are affected by other events outside its boundaries. For instance does a bank effectively capture an ‘event’ of opening of school term to prepare cashiers and banking needs just-in-time? Such events that happen outside your organization should be integrated into your process to reflect accurate information as per prevailing circumstances inside and outside the company.

7. The company has no memory. Duplication of tasks across departments, or repeating tasks done in the past is an indicator of acute information blindness. Whether repeated by different staff several years later, or same staff redoing anew a previous process cannot be explained other that information blindness.

8. Cannot playback your data to study the past: Just like a good movie can be watched over and over again, analytical executives want to study the past. Executives should be equipped with the ability to replay and recombine different scenarios to understand the past and improve the future. The automation should support executive tools for top managers to dissect, merge, enrich the data in game like manner. Replays can allow identification of winning strategies, critical seasons, and means to efficiently predict the future.

9. You still stock products, consumables in large quantities for just-in-case: One of the reasons people store products in excess is because they have not have any idea on what they can consume in a specific period. Over stocking creates challenges of theft, expiry, locking of capital and others. But if you have been consuming these products since the existence of the entity why would you not correctly determine what you need at any point in time? Better still if your automation is complete why wouldn’t the procurement process be kick started at the right moment? The answer is to replace inventory with information.

10. Top Managers have no direct access to the current data – at least up to last-minute detail of key information: As a manager you need accurate and real data. Lack of a minute-by-minute information on the key critical indicators anytime is like driving a car without a dashboard. You are driving in total blindness without a fuel gauge, a speedometer, a temperature gauge, side-mirrors – just the entire dashboard. Executives have to call the ‘mechanic’ – the IT staff to know how much fuel, how much mileage, and what speed the the company is running at. By the time the mechanic has returned the result, the car is has moved several miles and same blindness prevails again.

To say the least, relying on IT staff to send monthly,weekly or daily reports whose data you cannot interact with to answer the how, why and when by twisting and turning the data directly is like looking a static picture where you need a 3D movie with a touch screen. Fast moving and dynamic companies need to quickly eliminate information blindness. It is common knowledge that the fast you move the more risks you are exposed to and susceptible to fatal accidents. The more the information you can gather the higher the chances of avoiding these accidents without missing any opportunities.

 1,723 total views

Benefits And Advantages of Webservices

To begin with there has been considerable attention to web services  in the last couple of years since early 2000. For starters  web service are no more that applications that are designed to be used across the web. Web services provide a program-to-program programming model where one service invokes another using web standards including the well known HTTP and XML. Here I outline the main benefits, some technical others business.

  1. Interoperability – when faced with a challenge varying systems architectures, legacy  systems, a cocktail of programming languages that make up systems that make up systems which need to be integrated then web services come in handy. Perhaps the most important benefit of web services they provide a non proprietary means of interactions. Web services only need to speak the same message protocol for them to inter-operate. So far a common set of standards-based communications method that include HTTP, WSDL, SOAP have been developed. These make it possible for web services to be platform-independent.
  2. Usability – web services are designed to be used over the web, that is just in the same way a page is fetched, one can fetch web services capability over the web. The capability of a web services varies from simple information lookup to complex algorithmic computations. Therefore when a service is used to expose a business logic, then it can easily used.
  3. Re-usability – Web Services are designed to be combined to deliver more added value services. Web services serve as building blocks and this makes it easy to reuse Web Service components as appropriate in other services. Also legacy applications can be wrapped into web services for use by others
  4. Deploy ability – Web Services are deployed over standard Internet technologies. For instance using Apache, Axis2 to provide HTTP, WSDL driven services. This makes it simple to deploy
  5. Agility – this looks at ability to change. When a an enterprise IT infrastructure is streamlined into services, new functionality to address new business demands is a matter of assembling existing services. Of course a few more services may need to build, but overall it is easier that re-building a new system from scratch.
  6. Quality – Related to reuse, because web service development approaches allows services to be built by assembling existing existing services, it logical to expect that such services are already tested with known performance characteristics. Therefore new systems will be less buggy.
  7. Cost – The cost of developing new systems reduces significantly since such systems are assembled from ready made web services. Such cost reductions translate into profits on may be passed on the customers. The customers stand to win from cost cuts and efficiency brought in by web service

Overall, an enterprise that streamlines its operations into web services stands to benefit in many aspects.

 5,925 total views,  4 views today