- Year not given · 4+5 marks
Architecture before specification; client-server
Short answer
Architectural design first structures a large system into sub-systems, so specifications can be written per sub-system, requirements allocated, and parallel development started; it also fixes interfaces and makes non-functional requirements realistic. Client-server architecture separates servers that provide services from clients that request them over a network, e.g. three-tier internet banking with browser, web server and database server.
Why architectural design is necessary before specifications are written? Explain client server architecture with example.
Why architectural design comes before detailed specification
In practice requirements engineering and architectural design overlap. A high-level architecture is usually proposed before the detailed system specification is written, for these reasons:
- To structure the specification – a large system cannot be specified as one block. The architecture breaks it into sub-systems, and the detailed specification is then written sub-system by sub-system.
- To allocate requirements – each requirement can be assigned to the sub-system that will satisfy it, which helps traceability and shows gaps or overlaps.
- Parallel work – once sub-systems and their interfaces are known, separate teams can specify and develop them in parallel. Sub-contracts are also based on sub-systems.
- Non-functional requirements depend on structure – performance, security, safety, availability and maintainability are largely decided by the architecture, so the designer must know the structure to write realistic, testable non-functional requirements.
- Interface definition – interfaces between sub-systems (and with other systems) must be fixed early; they become part of the specification.
- Feasibility and cost – an early architecture lets the team judge whether the requirements are achievable and estimate cost before committing to a detailed specification.
- Reuse decisions – deciding early to reuse an existing architecture, product line or COTS sub-system changes what needs to be specified.
Client-server architecture
A client-server architecture is a distributed system model in which the system is organised as a set of servers that provide services and a set of clients that use those services, connected by a network.
Main components:
- Servers – provide specific services, e.g. file server, print server, database server, web server.
- Clients – request services from servers; there may be many clients running at the same time.
- Network – lets clients reach servers, usually using request–reply protocols (e.g. HTTP over TCP/IP).
Clients must know the names of the servers and their services, but servers do not need to know the clients.
The application is usually divided into three logical layers: presentation, application processing and data management.
- Two-tier, thin client – the client handles only presentation; processing and data are on the server.
- Two-tier, fat client – the client also does application processing; the server manages data.
- Three-tier – presentation, processing and data run on separate machines, which scales better.
Example: internet banking system (three-tier)
Tier 1 Tier 2 Tier 3
(presentation) (processing) (data)
+----------+
| Browser |--+
+----------+ | +-------------+ +------------+
+----------+ +-->| Web server |--->| Database |
| Browser |----->| (login, | | server |
+----------+ +-->| balance, |<---| (accounts, |
+----------+ | | transfers) | | transac.) |
|Mobile app|--+ +-------------+ +------------+
+----------+
requests go right, replies come back left
A customer logs in from a browser (tier 1). The web server (tier 2) checks the login, calculates balances and handles transfers. The database server (tier 3) stores customer and transaction data. More web servers can be added when the number of users grows.
| Advantages | Disadvantages |
|---|---|
| Data and services are distributed simply over a network | Each server is a possible single point of failure |
| Easy to add new servers or upgrade existing ones | Performance depends on the network |
| Cheap hardware can be used | Data exchange between servers may be inefficient |
| Central data management and security | Management and naming of servers needed |
✓ Answer checked by Claude Sonnet 5.5
Related questions
- Client-server versus distributed object architecture · Software Engineering, chapter 3
- Multiprocessor versus client-server architecture · Software Engineering, chapter 3
- Architectural design and multiprocessor architecture · Software Engineering, chapter 3
- Server before client; TCP reliability · Computer Networks and Security, chapter 5 · asked 2×
- Client/server architecture and FTP operation · Internet and Intranet, chapter 3
- Features of client/server architecture · Computer Networks and Security, chapter 1
- Short note: Client-Server and Master-Slave · Big Data Technologies, chapter 1