Network-Based Software Architectures

From Computing and Software Wiki

Revision as of 02:42, 3 April 2008 by Aws (Talk)
Jump to: navigation, search

Network-Based Software Architecture is a subfield of the area of Software Architectures that deals with the conceptual structure of software systems that primarily run on networks, e.g. Apache Web Server.

Software Architecture of a Network-based application

Contents


History and Introduction

As software increased in size, interaction, and sophistication, the need for a conceptual or a birds-eye-view of a software system became a central issue in software engineering research in the early 90s [4]. While the field has not reached the level of maturity that building architecture, for example, enjoys, it has started finding its way into mainstream software development, and "software architects" have become an important commodity for most software projects.

As the World Wide Web continues to infiltrate our every day life, our level of reliance on software keeps increasing significantly . This gave rise to a new specialty of software architecture; architecture of network-based software, initially introduced in Roy Fielding's PhD dissertation [2].

Parts of an Architecture

Classification

Software architectures have been categorized by observation. Seeing how successful software evolves, researchers were able to devise a number of categories that generally describe the most ubiquitous architectures, usually called "accidental" architectures. The name "accidental architectures" has been given since the the organization of these software systems did not follow any engineering guidelines and evolved with time until they took a permanent shape. [1, 3]

The following sections explain and illustrate some categories of network-based software architectures.

Client-Server

One of the most widespread styles in network-based applications. Consists of client based software and server based software where the server serves a number of clients concurrently. The client software is separated from the server software and the mode of communication between is defined.[1]

Client Server Architecture

Code On Demand (COD)

In COD, the clients request the code from the server as they need it. The code is received and is executed on the client's machine. This reduces the load on the server and gives a higher quality of service to the client. [2]

Event-based Integration

In Event-based Integration architectures, the components are laid out, but the interfaces between the components are not defined. The components communicate by broadcasting messages which will trigger action in other components that are accepting messages of that kind. This gives a flexibility to the system and great separation of concerns between components, but it makes it hard to predict how other components will react to a broadcasted message, i.e. its hard to predict the state of the system. [2, 4]

Replicated Repository

Software systems having a replicated repository architecture tend to have several processes providing the same set of services. Together these processes interact in order to give the user a feel that the service is centralized. While replication improves reliability, it has the disadvantage of having to keep the systems consistent. [2]

References

[1] Bass, Clements & Kazman, Software Architecture in Practice, Addison-Wesley 1998

[2] Fielding, Roy Thomas. Architectural Styles and the Design of Network-based Software Architectures. Doctoral dissertation, University of California, Irvine, 2000.

[3] Grady Booch. The Architecture of Web Applications. IBM Developer Works. 01 Jun 2001. IBM. Last Accessed on 13 March 2008. <http://www.ibm.com/developerworks/ibm/library/it-booch_web/>.

[4] D. Garlan and M. Shaw. An Introduction to software architecture. In Advances in Software Engineering and Knowledge Engineering, pages 1-39, Singapore, 1993. World Scientific Publishing Company.


See also

External links

--Aws 21:38, 2 April 2008 (EDT)

Personal tools