Architectural Design

Introduction to Architectural Design

  • Architectural design is an abstraction of system which defines the system elements and how they interact.
  • It is a structure of the system which describes software elements, properties of those elements and relationships between them.
  • It provides a design plan to manage the complexity of a system and also a communication medium between stakeholders.
  • An architectural design is used as a blueprint during the development process.
  • Architectural design decisions have considerable impact on the quality, performance, maintainability and overall success of the application.

Importance of Architectural Design

importance of architectural design

1. Performance
  • The right architecture covers the way for system success and the wrong architecture usually causes some form of disaster.
  • Performance depends on raw processing power of its hardware and is important to make the system successful.
  • It helps to validate software architectural design choices with respect to performance indices.
2. Scalability
  • Scalability of the system is related to performance.
  • It considers how quickly the system performs its current workload.
  • It focuses on the predictability of the system's performance as the workload increases.
3. Reliability
  • Reliability is the probability of failure free software architecture design.
  • It is an important factor affecting on system reliability.
4. Security
  • Security provides method to deal with requirements.
  • It helps to manage the risk which may be arises in architectural design.
5. Modifiability
  • It is possible to make minor changes in the architectural design.
6. Reusability
  • Reusability makes easy to reuse the code in a new system.

Architecture Views

  • Architectural views are representations of the overall architecture.
  • Architectural views are meaningful to one or more stakeholders in the system.
  • It is based on the use of multiple, concurrent views.

4+1 View Model

  • 4+1 view model is used for describing the architecture of software intensive system.
  • This model is based on the use of multiple concurrent views.
  • These views are used to describe the system from the viewpoint of different stakeholders, such as end-users, developers and project managers.
There are four views of the model,

1. Logical View
2. Process View
3. Development View
4. Physical View

Why is it called 4 + 1 instead of just 5?
  • Use cases are used to illustrate the architecture serving as the + 1 view. Hence, the model contains 4 + 1 views.
  • When all the views are finished, use cases are effectively redundant.
  • This model gives the detail of high requirements of the system.

4+1 view architecture

1. Logical View
  • Logical view contains the information about the various parts of the system.
  • It is concerned with the functionality that the system provides to end-users.
  • UML diagrams are used to represent logical view, including class diagram, communication diagram, sequence diagram.
2. Development View
  • Development view is also known as the Implementation view.
  • It illustrates a system from a programmer's perspective.
  • It is concerned with the software management.
  • It focuses on software modules and subsystems.
  • UML diagrams are used to represent development view, including package diagram, component diagram.
3. Process View
  • Process view deals with the dynamic aspects of the system.
  • It explains the system process, how they communicate and focuses on the runtime behavior of the system.
  • It describes the concurrent process within the system.
  • UML diagrams are used to represent process view, included in the activity diagram.
4. Physical View
  • Physical view is also known as the Deployment view.
  • It describes the physical deployment of the system.
  • It depicts the system from a system engineer's point of view.
  • UML diagrams are used to represent physical view, included in the deployment diagram.
5. Use Case View
  • Use case view describes the functionality of the system from the perspective of the outside world.
  • It contains the diagram describing what the system is supposed to do from a black-box perspective.
  • It contains use case diagrams.
  • This view can guide all other views.

Client-Server Architecture

  • Client-Server Architecture is a network in which the server hosts, delivers and manages most of the resources and services to be consumed by the client.
  • Client-Server Architecture has one or more client/user computers connected to a central server over a network.
  • In this architecture, the server acts as the producer and the client as a consumer.

two tier client server architecture

The above figure shows two tier client-server architecture, where it works when the client computer sends a request to the server over the network / Internet connection and then delivered to the client.

Server manages several clients simultaneously, whereas one client can be connected to several servers at a time and each server providing different set of services.
  • Internet is based on client-server architecture where the web server serves many simultaneous clients or users with web page or website data.
  • This architecture describes the relationship between a client and one or more servers, where the client initiates one or more requests, waits for replies and processes the replies.
  • Server authorizes the client or user and then send responses to communicate information to the client.
Following are the variations of client-server architecture include,

1. Client-Queue-Client Systems
2. Peer-to-Peer (P2P) Applications
3. Application Servers

1. Client-Queue-Client Systems
  • Client-Queue-Client system allows client to communicate with other clients through a server-based queue.
  • It allows client to distribute and synchronize files and information.
2. Peer-to-Peer (P2P) Applications
  • Peer-to-Peer application allows client and server to swap their roles in order to distribute and synchronize the files and information across multiple clients.
  • This approach extends the client/server style through multiple responses to requests, shared data, resource discovery.
3. Application Servers
  • In this approach, client executing an application which runs on the server through a framework such as Terminal services.
Client-Server Architecture Models

There are two models of Client-Server Architecture,

1. Thin Model
2. Thick Model

1. Thin Model
  • Thin model is used when legacy systems are migrated to client-server architecture where legacy system acts as a server and implemented on a client with a graphical interface.
  • It includes all the application processing and data management is carried by the server.
  • This model has major disadvantage is that it places heavy processing load on both the server and the network.
2. Thick Model
  • Thick model is also known as Fat Client Model.
  • This model is good for new client-server systems.
  • Thick model is more complex than a thin model.
Advantages of Client-Server Architecture
  • Client-Server architecture provides higher security. All the data is stored on the server so the control of security is greater than client machines.
  • It accesses centralized data because the data is stored only on the server.
  • It ensures the ease of maintenance where a client remains and unaffected by a server repair, upgrade or relocation.
  • Client-Server architecture simplifies the design and the development of distributed applications.
Disadvantages of Client-Server Architecture
  • Client-Server architecture has traffic congestion problem when a large number of clients send requests to the same server.
  • If server fails then user will not be able to request to the network until the server is fixed or replaced. It has lack of robustness because of centralized server.

Multi-Tier/N-Tier Architecture

  • Multi-Tier architecture is also known as 3 tier or N-tier architecture.
  • It is a client-server architecture developed and distributed between more than one layer.
  • This architecture provides a model by which developers can create flexible and reusable applications.
  • This architecture is composed of a Presentation tier, an Application tier and a Data Storage tier.

multi tier architecture

1. Presentation Tier
  • Presentation tier is the top-most level of the application.
  • This tier displays the information related to such services as browsing, purchasing, shopping cart contents.
  • Presentation tier communicates with other tiers which display the results to the client tier.
  • This tier translates the task and makes the result to something the user can understand.
2. Application Tier
  • Application tier is also known as Business Logic, Logic Tier and Middle Tier.
  • Application tier is pulled out from the Presentation Tier.
  • This architecture controls an application's functionality by performing detailed processing.
  • Business tier coordinates the application, processes commands, makes logical decisions and performs calculations.
3. Database Tier
  • Database tier includes database servers, file shares etc.
  • This tier provides an API to the Application Tier.
  • In this tier, the information is stored and retrieved from a database or file system then the information is passed back to the logic tier for processing and eventually back to the user.
Advantages of Multi-Tier Architecture
  • Multi-Tier architecture is simple to manage and gives better performance than a Thin client.
  • This architecture enhances the reusability and scalability.
  • It reduces network traffic.
  • It provides multithreading support, maintainability and flexibility.
Disadvantages of Multi-Tier Architecture
  • Multi-Tier architecture has critical server reliability and availability.
  • Testing cannot be performed well due to lack of testing tools.