Sei sulla pagina 1di 5

Assignment Two

Client /server Engineering is a necessity in software development. Discuss (25


marks)

Definitions
Software development is the process by which a company, team, or individual
devises and implements an overall plan to create a new software program. This
process can also be applied to an established program to create a new version of
that software. Numerous steps are involved in this process, beginning with
understanding what is needed from software, developing a plan for creating it, writing
the code, and bug testing prior to launch. Software development can be a process
that involves anything from a single programmer to dozens or hundreds of
individuals.
The process of software development usually begins with research or a general
understanding of what type of software is needed in the marketplace. This may be
an entirely new program that addresses an unfulfilled need or a new piece of
software in an existing market. As software development begins, this research
establishes the purpose of the software being developed and the overall goals of the
development.

Client/server engineering is a concept for describing communications between


computing processes that are classified as service consumers and service providers.
Client/server engineering provides the fundamental framework that allows many
technologies to plug in for the applications of this present day and beyond. The basic
features of a Clint/Server model are outline below.

Client /Server features

Client/server Diagram

With reference to the above diagram:


Clients and servers are functional modules with well defined interfaces (i.e., they
hide internal information). The functions performed by a client and a server can be
implemented by a set of software modules, hardware components, or a combination
thereof. Clients and/or servers may run on dedicated machines, if needed.

Each client/server relationship is established between two functional modules when


one module (client) initiates a service request and the other (server) chooses to
respond to the service request.

Information exchange between clients and servers is strictly through messages (i.e.,
no information is exchanged through global variables). The service request and
additional information is placed into a message that is sent to the server. The
server's response is similarly another message that is sent back to the client. This is
an extremely crucial feature of C/S model.

Advantages of Client/Server engineering

Messages exchanged are typically interactive. In other words, C/S model


does not support an off-line process. There are a few exceptions. For
example, message queuing systems allow clients to store messages on a
queue to be picked up asynchronously by the servers at a later stage.

Clients and servers typically reside on separate machines connected through


a network. Conceptually, clients and servers may run on the same machine or
on separate machines. This allows developers and users to test the software
separately.

Client/Server engineering allows application processes at different sites to


interactively exchange messages and is thus a significant improvement over
the file transfer model. Implementation is simplified.

Client - server engineering allows physically distributed users access to a


centralised resource. It simplifies program designing as well as
implementation and maintenance since all the users access the same server

The engineering architecture's advantages include flexibility, expandability


and reduced communications costs in comparison to other systems.

Higher security. All data is stored on the server, which generally offers a
greater control of security than client machines.

Centralized data access which makes it easier to apply updates (evolution) to


the data and to administer than in other architectural styles.

Ease of maintenance. Roles and responsibilities of a computing system are


distributed among several servers that are known to each other through a
network. This ensures that a client remains unaware and unaffected by a
server repair, upgrade, or relocation.

Disadvantages of client/server engineering


Dependability
One of the biggest disadvantages of a client server application is dependability, such
that when the server goes down operations cease.

Scalability
Other disadvantages include; lack of scalability, higher than anticipated costs and
the causation of network congestion.

Physical Requirements
A centrally based server is a specific type of computer and it requires specialized
hardware and large power supply. When the server does encounter a problem, it
must be able to recover gracefully, without causing the system to crash. The
hardware that makes this possible is expensive. Since the server is running without
shutting down, the electricity costs also add to the overall expense of running a
server.

Safety and Security


The centralization of information and data must be protected from malicious hackers,
power outages, vandals or any number of potential threats. An unprotected server is
a central point of failure.

Network Congestion
When traffic to the server increases, the client server model reveals a weakness.
The server or group of servers must be able to negotiate heavy traffic quickly and
efficiently. Different kinds of traffic may clog the network, such as spam or hacking
attempts. A server must also be able to differential between the legitimate traffic and
the wasteful traffic.

Support Personnel
Sustaining an operational business class server is a full-time job and can require the
attention of many specialized professionals. Systems engineers create programs
and patch operating systems as changes in design take place. Security
professionals work to create a safe environment for clients and the servers to
operate in. In addition to the high cost of the physical components of running a
server, the labor required only increases the cost.

Conclusion
While client/server technology offers many benefits, moving to it can be expensive.
Each engineering paradigm has a distinct purpose for communicating a specific
understanding in software development. A software developer has the responsibility
to understand the different types of engineering concepts and employ them by
representing the information that has been gathered.
Having looked at both the advantages and disadvantages, it can be seen that the
advantages seem to outweigh the disadvantages hence the necessity to have
client/server engineering in software development.

References

http://www.ehow.com/list_7442450_disadvantages-clientserver.html#ixzz2f3d9bLG2

http://www.ehow.com/list_7442450_disadvantages-clientserver.html#ixzz2f3cwr3aa

Chapter 3: Architectural Patterns and Styles Layered Versus Client-Server" at


http://msdn.microsoft.com/en-us/library/bb421529.aspx.

By J. W. Rider J. W. Rider Consulting http://www.jwrider.com/ November


2004

Potrebbero piacerti anche