|Author : DAOUDI Samir | Context : MSc Software Engineering – Object Oriented Analysis|
The software development as a field has significantly increased in term of technologies and possibilities. We are now seeing some software solutions that were impossible or considered science fiction a couple of years ago. Not only the improvement in technics and tools but also the constraints are being harder, customers are more aware of what they want and they are more exigent. But quality constraint is not the real issue for software developers, if given plenty of time, I am sure that developers can provide fantastic solutions. So the issue in this case is really the time constraint. Developers are under heavy pressure of delivering efficient, reliable, robust, secure, simple …etc. software solutions in a short laps of time.
Fortunately, developers have been working in this issue since long time. They have noticed that many programs share a lot of functionalities and it might be better in term of time and quality to reuse the previously written and tested code rather than rewriting everything from scratch. This idea was concretized with the OOP where object were reusable and could integrated in different projects. The coupling issue here was high, objects were developed for specific projects which means that they satisfied some contextual specific constraints; hence, sometimes it was difficult to fully reuse objects written in another project without specific adaptation and customization. But, it was better than writing objects from scratch (Daniel, 2010).
The major advance in the software development field after the object-oriented programming is the Service Oriented Architecture (SOA) where software are designed and developed as a combination and integration of different services. The SOA is not a language or a technic, it is instead a programming approach or software design architecture; it is simply a way of thinking.
As defined by (Cibraro et.al, 2010), “SOA or service-oriented architecture is a style of programming, an architectural approach in software development, where an application is organized in functional units of code with a given behavior called services.”
Services are a set of methods sharing the same functional goals and which other parts that need to run that logic can call. Services have a clear defined public signature, which should be published, so that other services or actors can use it to interact with them.
Services are written in general as independent entities that receives (or not) requests and might (or not) reply. In general, they are used as end points for business applications where external applications, customers or any actors might request information, start action or interact with the system throw these services (Krafzig.et.al, 2005).
In SOA, whatever we are developing (creating a new service, or integrating services in an application) some specific rules and constraints should be followed. Services interaction is mostly based on messages and contracts. It is the most important and success factor to build the appropriate service but also to determine some of the communication characteristics as protocol, address, binding, security, method (one way, request-reply, duplex…etc.)…etc. When respected, this communication contracts allow applications to be quickly built and more important that the time factor here is the quality. Using services that were written in the past, and reviewed many times by experts will certainly end with better quality, less bugs and enhanced features than a new one.
– Pablo Cibraro, Kurt Claeys, Fabio Cozzolino and Johan Grabnet (2010). Professional WCF 4 (Windows Communication Foundation with .net 4). ISBN: 978-0-470-56314-4.
– Dirk. Krafzig, Karl. Banke, Dirk. Slama (2005). Enterprise SOA: Service-Oriented Architecture Best Practices. ISBN: 0-13-146575-9.
– Liebhart, Daniel (2010). Service-oriented architecture an integration blueprint : a real-world SOA strategy for the integration of heterogeneous Enterprise systems : successfully implement your own enterprise integration architecture using the Trivadis Integration Architecture Blueprint. ISBN: 9781849681049