What is a software architecture?

Software architectures are the blueprint of a software system. They consist of all components involved in a system, relations between various components, the environment of operation, and the principle used in designing the software. In other words, software architecture shows the organization of different software structures and helps understand their behavior. 

Software architectures are designed to meet specific requirements. For the best results, these requirements need to be fulfilled. Good software architecture can also help identify and solve various problems within the software.

Importance of software architecture

Most organizations skip the process of creating a software system architecture before beginning a project. However, this could result in defective or non-efficient software. Hence, it is vital to design a software architecture. Below are some other reasons why software architecture is important.

  • Software architectures depict the behavior and characteristics of the components involved in the process. This helps in understanding the strengths and weaknesses of the components.
  • It aids in determining whether the software meets the business objectives or not.
  • The quality and efficiency of the software can be understood using the software architecture pattern.
  • Future modifications become effortless.
  • Future problems can be determined and solved easily when the architecture design is handy.
  • The project scope gets clearer. As a result, the productivity rate also increases.
  • Developing and understanding high-level or complex systems becomes easier.

Properties of different software architectures

Good software architecture should have an understandable design and fulfill business and stakeholders’ requirements. Following are the properties of different software architectures:

  • The architectural pattern should address how to fulfill the requirements of different stakeholders involved in the system.
  • Different stakeholders have different requirements and are involved in different parts of the system. So, the software architect needs to address the concerns of each stakeholder separately during the documentation.
  • The software needs to meet the non-functional, functional, behavioral, and quality attribute requirements. The architecture should determine the fault-tolerance, compatibility, reliability, security, usability, maintainability of the system.
  • The architecture should entirely depict what the system will do and how it will do it.

Types of software architecture pattern

Various types of software architectures have been recognized and widely used by organizations. Some of the most popular ones are as follows:

Layered architecture

Layered architecture or multi-layered architectures are architectures that divide the components into groups (layers). The layers are interconnected, but each layer functions independently. So the changes made in one layer will not affect the other layers.

All the layers have a specific role. For instance, a business layer deals with the execution of specific business rules requested by the user. In brief, the components of one layer deal only with the logic that applies to that layer.

Figure 1: Representation of three-layered architecture
CC BY-PD | Image Credits: https://commons.wikimedia.org | Foofy

Usage

  • In applications that need to be built quickly.
  • When the team does not have much knowledge of software architectures.
  • When the application needs to follow strict maintainability and testing standards.

Client-server architecture

Client-server architecture is an application that consists of two components - client and server. The client and server generally reside within the same system but communicate with each other over a network.

In this model, the client requests the server. The server processes the request and appropriately responds to the client. This model is highly flexible since a single client can use multiple servers, and a single server can process multiple client requests.

Figure 2: Representation of client-server architecture
CC BY-GNUPL | Image Credits: https://commons.wikimedia.org | David Vignoniderivative

Usage

  • In applications like email, online banking, gaming apps, and file-sharing applications.
  • Applications that offer real-time services.
  • Applications that provide multiple services to a large number of clients.

Peer-to-peer architecture

In peer-to-peer architecture, the tasks are distributed between peers. Every peer is treated equally, and each peer can be a client or server. Unlike client-server architecture, the peers can supply and consume resources directly. That means they do not need a server to manage the coordination between two or more peers.

Figure 3: Representation of peer-to-peer architecture
CC BY-GNU LGPL | Image Credits: https://commons.wikimedia.org | Mauro Bieg

Usage

  • It is used in digital cryptocurrencies like Bitcoin, Ether.
  • It is used in peer-to-peer content delivery networks.
  • It is used in web torrent sites.

Microkernel (plug-in) architecture

The Microkernel model is an architectural structure that has a core system and plug-ins. The model is used when there is a need to develop a system that should be frequently updated as per the business requirements. The core function is separated from the extended functionality. It serves as a socket to plug in extra functionalities. It is mostly used in product-based applications.

Figure 4: Representation of Microkernel architecture
CC BY-SA 4.0 | Image Credits: https://commons.wikimedia.org | Laczkó Dávid

Usage

  • It is used in workflow applications.
  • It is used in applications that take data from multiple resources, process them, and write them to various destinations.
  • In applications that have a fixed set of core tasks and other tasks are dynamic.
  • In graphic software like Photoshop.

Space-based architecture

Space-based architectures are used in systems to achieve linear scalability and solve concurrency problems. They consist of a processing unit (PU) and a virtualized middleware. The application components are stored in the processing unit. Smaller applications use a single processing unit, whereas larger ones use multiple processing units. The middleware handles elements that deal with request processing and data synchronization.

The space-based architectures are mainly built to maintain proper functionality even when the load is high. It handles high load by splitting the process and storage amongst multiple servers.

Figure 5: Representation of space-based architecture
CC BY-SA 2.5 | Image Credits: https://commons.wikimedia.org | Mark Richards; Neal Ford

Usage

  • In companies like Google and Amazon.
  • In applications or software that have a large number of users.
  • In social networking sites.

Other types of software architecture

In addition to the software architecture mentioned above, there are other types of software architectures such as:

  • Microservices architecture
  • Data-centric architecture
  • Blackboard
  • Event-driven architectural pattern
  • Monolithic
  • Component-based architecture
  • Pipe and filters
  • Rule-based architecture
  • Shared nothing architectural pattern
  • Service-oriented architecture

Context and Applications

The concept of software architecture is studied under various courses such as:

  • Bachelors in Computer Science
  • Masters in Computer Science
  • Bachelors in Computer Application
  • Masters in Computer Application

Practice Problems

  1. What makes a good architecture?
  1. The architecture must have a large trade-off and run-time principles.
  2. The architecture should show that the software meets all functional, non-functional, business, and technical requirements.
  3. The industrial architecture is not well-documented.
  4. All of the above

Answer: Option b

Explanation: One of the characteristics of good software architecture is that it depicts that the software fulfills all the system requirements, including business, technical, functional, non-functional requirements.

2. Which of the following is not a type of software architecture?

  1. Client-server
  2. Peer-to-peer
  3. Space-based
  4. Time-triggered system

Answer: Option d

Explanation: Client-Server, peer-to-peer, space-based, event-driven, microkernel, microservice, etc., are all types of software architecture in software engineering. However, the time-triggered system is not a type of software architecture.

3. In which type of software architecture, the elements are grouped to perform specific tasks?

  1. Layered architecture
  2. Kazman modularity framework
  3. Client-server architecture
  4. Microkernel architecture

Answer: Option a

Explanation: In a layered architecture, the architectural elements (components) are grouped. Each group performs a specific task. They are independent and interconnected.

4. Which type of software architecture is used in banking and email applications?

  1. Residential architects
  2. Space-based architecture
  3. Client-server architecture
  4. Microservice architecture 

Answer: Option c

Explanation: Client-server architecture is used in applications that have a server and client. Email and banking applications contain a server that takes requests from the clients and then sends the requests to the appropriate resources. So, they use the client-server architectural model.

5. Which of the following is an application of space-based architecture?

  1. In social networking sites
  2. To develop applications quickly
  3. Software architecture description
  4. None of the above

Answer: Option a

Explanation: Space-based architecture is used in systems that need to handle a large user base. Social networking sites handle a large number of users every time. So, they use this architecture.

Common Mistakes

Software architecture and software design are two commonly interchanged terms. However, they do not have the same meaning. Software architecture defines the structure of a software system without getting into the implementation details. Software design focuses more on the implementation of the system. It is not concerned about how the components will communicate with each other.

  • Dependency injection
  • Software design
  • Quality factor
  • Service-oriented architecture
  • System software tools
  • Software matrices
  • System architecture

Want more help with your computer science homework?

We've got you covered with step-by-step solutions to millions of textbook problems, subject matter experts on standby 24/7 when you're stumped, and more.
Check out a sample computer science Q&A solution here!

*Response times may vary by subject and question complexity. Median response time is 34 minutes for paid subscribers and may be longer for promotional offers.

Search. Solve. Succeed!

Study smarter access to millions of step-by step textbook solutions, our Q&A library, and AI powered Math Solver. Plus, you get 30 questions to ask an expert each month.

Tagged in
EngineeringComputer Science

Computer Organisation and Architecture

Fundamentals of computer architectures

Properties of Different Architectures

Search. Solve. Succeed!

Study smarter access to millions of step-by step textbook solutions, our Q&A library, and AI powered Math Solver. Plus, you get 30 questions to ask an expert each month.

Tagged in
EngineeringComputer Science

Computer Organisation and Architecture

Fundamentals of computer architectures

Properties of Different Architectures