Category Archives: software development

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.

Loading

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
Economical

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

Politics

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

Technology

  • 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?

Systems

  • 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?

Environment

  • 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?

Loading

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.

Loading

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

Loading

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.

Loading