Questions: Chapter 2 Flashcards
Explain 5 client-server development tools
GUI-based development:
A Graphical User Interface (GUI) is the visual part of a software application that allows users to interact with it. GUI-based development tools allow developers to build these interfaces without having to manually write all the code for each button, window, or control. Examples of GUI-based tools are Visual Studio or Qt Creator.
A GUI Builder that supports multiple interfaces:
A GUI Builder helps developers design interfaces visually, such as drag-and-drop features. It supports creating applications that can run on multiple platforms (like Windows, macOS, and Linux) using the same interface. Tools like JBuilder (Java) or Microsoft’s Visual Basic help in building GUI applications with support for various platforms.
Object-Oriented Development with a central repository for data and applications:
In Object-Oriented Development (OOD), developers organize software into classes and objects. A central repository stores all the data and application objects that different clients (user devices) can access. CORBA (Common Object Request Broker Architecture) and Java RMI (Remote Method Invocation) are examples where data and applications are centralized, allowing multiple clients to use the same resources.
Support for multiple databases:
Many client-server systems need to connect to databases like MySQL, Oracle, or SQL Server. Development tools that support multiple databases allow you to easily switch between or connect to these different database types without much extra coding. Tools like Hibernate (Java) or ADO.NET (Microsoft) support this feature.
Data access regardless of the data model:
This refers to accessing data stored in various formats, such as relational databases or non-relational (NoSQL) databases, using the same tools. Developers use frameworks like ODBC (Open Database Connectivity) or JDBC (Java Database Connectivity) to ensure that clients can retrieve data from different types of data models seamlessly.
Support for different CASE tools:
CASE (Computer-Aided Software Engineering) tools help automate parts of the software development process. Some tools support client-server development by helping developers design, model, and maintain their systems. Examples include Rational Rose and Enterprise Architect.
Explain single system image
A Single System Image (SSI) is a concept where a distributed system (multiple computers) appears to the user as if it’s a single machine. This simplifies the user experience because they don’t have to worry about which server is processing their request; everything seems to happen on one “unified” system.
Explain downsizing and client-server computing.
Downsizing: This refers to reducing the size or complexity of a system, often by moving from large mainframe systems to smaller, more manageable client-server setups. It allows businesses to use more cost-effective technology.
Client/Server Computing: In this model, tasks are divided between clients (user devices) and servers (where the data and applications are stored). Clients request services from servers, making the system more flexible and efficient.
What is the client/Server System Development Methodology?
The Client/Server System Development Methodology focuses on developing systems where clients request services from servers
Explain the Performance Evaluation and Reliability/Serviceability in Client/Server Systems
a) Performance Evaluation:
This involves testing how well the client-server application works under different conditions. You evaluate aspects like speed, response time, and resource usage to ensure the system can handle the number of users and data it’s expected to manage.
(b) Reliability and Serviceability:
Reliability: Refers to how consistently the client-server system performs without failure.
Serviceability: Refers to how easy it is to fix or maintain the system. A good system is both reliable and serviceable, ensuring minimal downtime and quick recovery in case of failures.
What are the ways to Improve Performance in Client/Server Applications?
To improve performance, you can:
Optimize queries: Make database requests more efficient.
Load balancing: Distribute tasks evenly across multiple servers.
Caching: Store frequently accessed data temporarily to reduce server load.
Compression: Reduce the size of data being transferred over the network.
Use efficient protocols: For example, using HTTP/2 instead of HTTP/1.1 to reduce latency.
What is the Software Distribution in the Client/Server Model?
In the client-server model, software is distributed across two main parts:
Client-side: This includes the software that the user interacts with (like a browser or app).
Server-side: This includes the software that handles requests from clients, often managing databases and business logic.
What are the ways to reduce Network Traffic in Client/Server Computing
Data compression: Reduces the size of data being sent over the network.
Caching: Stores data locally on the client to prevent repeated requests to the server.
Efficient data formats: Use formats like JSON instead of XML for smaller data payloads.
Use of protocols like HTTP/2: It can handle multiple requests in one connection, reducing overhead.