Appearance
Client-Server Architecture
Once you gathered all the (software) requirements, you must decide on the general architecture of your software application.
Software Architecture
A high-level abstraction of software consists of computational components that make up the software and the interaction between these components.
Software architecture could be a course in its own right! We don't cover it in OOSE! However, I take this opportunity to introduce you to one commonly used architecture in the design and development of apps.
Client-Server Architecture
The client-server is a popular software design architecture that, at an abstract level, breaks down software into two parts: client-side and server-side.
The client-side (or simply, the client) is the application that runs on the end-user computer; it provides a user interface (UI) that handles what the application feels and looks like and interacts with the end user. It may employ and consume resources on the user's machine (computing device), such as local storage. Among web developers, the term "front-end" is often used to describe the client side.
The server-side (or simply, the server) is the application that receives requests from the clients and contains the logic to send the appropriate data (resource) back to the client. Instead of a user interface, the server usually has an application programming interface (API). Moreover, the server often includes a database, which will persistently store all of the application data. Among web developers, the term "back-end" is often used to describe the server side.
As long as your software application adheres to the client-server architecture, you are free to build whatever user interface you want on whatever platform you want.
This separation is advantageous as modern software applications are expected to be available across multiple platforms and provide a consistent experience across devices.
TIP
It is encouraged that you employ client-server architecture for building your OOSE project.
Example: TinyURL
The TinyURL app certainly adheres to client-server architecture:
- The client is the web application that you visit through your internet browser.
- The server is the application that performs the URL shortening. It also stores the URLs (and their alias) in a database.
Here is a sequence diagram that summarizes the TinyURL client-server interaction:
The client provides a user interface for you to enter a (long) URL. Once you click on "shorten," it sends the long URL to the server. The server will create a short alias and returns the alias to the client which will show you the shorten (alias) URL.