Article Preview
TopResearch Background
Software architecture of a computing system is the structure or structures of the system, which comprises software elements, the externally visible properties of those elements and the relationships among them (Bass et al., 2003). Like any other complex structure, software must be built on solid foundation. Failing to consider key scenarios, failing to design for common problems, or failing to appreciate the long-term consequences of key decisions can put your application at risk. Modern tools and platform helps you to simplify the task of building applications but they do not replace the need to design your application carefully, based on your specific scenario and requirements. The risks exposed by poor architecture include software that is unstable, is unable to support existing and future business requirements or is difficult to deploy and manage in the production environment (Chaudhary, 2009).
Layer can be defined as one of the two or more rows, levels or ranks arranged one above another, hence the definition for Multi-Layer being any number of levels arranged above another, each serving distinct and separate tasks (Ruzinoor, 2011). From the beginning of computer science, the industry has been practicing a simple form of client/server computing, since the inception of the mainframe with a configuration that had directly connected to the host an unintelligent terminal constituting the one-layer or monolithic system (Christian, 2010). The simplest client/server model involves only two layers interacting with each other called the 2-Layer architecture, varying from low scalability architectures with fat clients, handling transformations on data retrieved from a simple file or database server, to solutions with fat servers offering lightweight client modules in exchange for increased complexity on server-side. The successors of 2-Layer architectures, the 3-Layer architectures imply the insertion of an additional layer called the middle layer, morphing the other two entities from the 2-Layer architecture into the front end and backend. Front end mostly contains logic responsible for presentation, delivered as client side code, whereas the backend deals with access to dedicated services such as a database server to the middle layer. The philosophy is that direct access for the front end to the back-end without the middle layer acting as an intermediate is not permitted. Following the pattern, 3-Layer architectures can be extended with additional layers ending up obtaining the generalized structure of the multi-layer architecture.