System Architecture

ICT2621 - Structured Systems Analysis and Design · System Design Principles

System Architecture

System architecture refers to the fundamental structure of a system, defined by its components and their relationships. It serves as a blueprint for both the system and the project developing it. In this section, we will explore the different types of system architectures, their components, and how to design them effectively.

Types of System Architectures

There are several common types of system architectures. Understanding these can help you choose the right architecture for your project.

  • Monolithic Architecture: In this architecture, the entire system is built as a single unit. All components are interconnected and interdependent. This can lead to challenges in scalability and maintenance.
  • Layered Architecture: This architecture divides the system into layers, each with specific responsibilities. Common layers include presentation, business logic, and data access layers. This separation helps in managing complexity.
  • Microservices Architecture: In a microservices architecture, the system is composed of small, independent services that communicate over a network. Each service can be developed, deployed, and scaled independently, which enhances flexibility and scalability.
  • Event-Driven Architecture: This architecture focuses on the production, detection, and reaction to events. It is useful for systems that require real-time processing and responsiveness.

Components of System Architecture

The components of a system architecture can be broadly categorised into the following:

  • Hardware: This includes the physical devices such as servers, computers, and networking equipment.
  • Software: This encompasses the applications, operating systems, and middleware that run on the hardware.
  • Data: This refers to the information that the system processes, stores, and retrieves.
  • People: This includes users, system administrators, and other stakeholders who interact with the system.
  • Processes: These are the workflows and procedures that define how the system operates.

Designing System Architecture

Designing a system architecture involves several steps:

1. Identify Requirements

Begin by gathering and analysing user requirements. This involves understanding what the users need from the system. You can use techniques such as interviews, surveys, and observation to collect this information.

Example: Suppose you are designing a library management system. Users may require features such as book search, borrowing, and returning functionalities.

2. Define System Components

Based on the requirements, define the system components. Identify the necessary hardware, software, data, and processes that will meet the user needs.

Example: For the library management system, you might identify components like a database for storing book information, a web application for user interaction, and a server for hosting the application.

3. Choose an Architecture Type

Select the most suitable architecture type based on the requirements and components. Consider factors such as scalability, maintainability, and performance.

Example: If the library management system is expected to handle a large number of users, a microservices architecture may be appropriate to ensure scalability.

4. Create a High-Level Design

Develop a high-level design that outlines how the components will interact. This design should include diagrams that represent the system architecture, such as component diagrams or deployment diagrams.

Example: You can create a component diagram showing the relationships between the web application, database, and user interface.

5. Validate the Design

Review the design with stakeholders to ensure it meets their needs. Make adjustments based on their feedback.

Example: Present the high-level design to library staff and gather their input on usability and functionality.

Common Mistakes in System Architecture Design

Watch out: One common mistake is not involving stakeholders in the design process. Their input is crucial for identifying requirements and validating the design.

Documenting System Architecture

Proper documentation of the system architecture is essential. Documentation should include:

  • Architectural Diagrams: Visual representations of the system components and their relationships.
  • Design Specifications: Detailed descriptions of each component, including its purpose and functionality.
  • Implementation Guidelines: Instructions for developers on how to implement the architecture.

Example of System Architecture Design

Let us consider an example of designing a simple online shopping system.

Step 1: Identify Requirements

Users require the following features:

  • Product browsing
  • Shopping cart functionality
  • Checkout process
  • User account management

Step 2: Define System Components

Components for the online shopping system might include:

  • Web server for hosting the application
  • Database for storing product and user information
  • Payment gateway for processing transactions

Step 3: Choose an Architecture Type

A microservices architecture could be chosen for this system to allow independent scaling of the shopping cart and payment services.

Step 4: Create a High-Level Design

The high-level design could include a component diagram showing the web server, database, shopping cart service, and payment service.

Step 5: Validate the Design

Present the design to a group of potential users and gather feedback to ensure it meets their needs.

Summary

  • System architecture is the structure of a system defined by its components and their relationships.
  • Common types of system architectures include monolithic, layered, microservices, and event-driven architectures.
  • Key components of system architecture are hardware, software, data, people, and processes.
  • The design process includes identifying requirements, defining components, choosing an architecture type, creating a high-level design, and validating the design.
  • Proper documentation is crucial for successful implementation.

Check your understanding

  1. What are the four common types of system architectures?
  2. List the key components of system architecture.
  3. What is the first step in designing a system architecture?
  4. Why is stakeholder involvement important in the design process?