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
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.
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.
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.
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.