In: Computer Science
In your own word write 500–600 words that respond to the following questions on Architectural design patterns, and complete the following:
SOFTWARE ARCHITECTURE PATTERNS (610 words)
Software Architecture Patterns are a reusable solution templates to a commonly occurring software engineering problems like computer hardware performance limitations, high availability and minimization of a business risk. Software Architecture Patterns are similar to Software Design Pattern (solution templates for commonly occurring problem within the context in software design) in their general structure and design but not in functionality and scope (have larger scope). The commonly available Software Architecture Patterns include:
Layered pattern: Used to design the software as a series layers of abstractions
1. Client-server pattern: Used to structure the system as two main applications – a server and a set of clients. The server provides services to multiple client on request.
2. Master-slave pattern: Used to structure the system as two components – a master and a set of slaves. The master distributes the work among slaves and computes a final result from the results which the slaves return.
3. Pipe-filter pattern: Used to structure the system that consists of any number of components (filters) that transform or filter the provided data, before passing it on using connections (pipes) to other components.
4. Broker pattern: Used to structure the system as a distributed software structure with independent components that can communicate with each other by remote service invocations.
5. Peer-to-peer pattern: Used to structure the system as a set of individual components called known as peers that all have equal capabilities and can function both as a client, requesting services from other peers, and as a server, providing services to other peers
6. Event-bus pattern: Used to structure the system as a set of events and a set of 4 components; event source, event listener, channel and event bus. Sources publish messages to channels on an event bus. Listeners subscribe to particular channels and are notified of the published messages in the subscribed channel.
7. Model-view-controller pattern: Used to structure the system as a set of different views of the same data to its users by separating application’s data model, presentation layer, and control aspects.
8. Blackboard pattern: Used to structure a system for which no deterministic solution strategies are known. Here the system will be structured as a set of three main components – blackboard, knowledge source and control component that work together to form the pattern
The selection of an appropriate software architecture depends on the nature of the problem and the other architectural parameters like
· Scalability
· Adaptability
· Security,
· Robustness,
· Reliability,
· Fault-tolerance
· Manageability
· Efficiency,
· Performance,
· Throughput,
· Bandwidth requirements,
· Space utilization
· Extensibility,
· Evolvability,
· Maintainability
· Modularity,
· Independence,
· Re-usability,
· Openness,
· Composability,
· Portability
· Completeness and correctness
· Ease-of-construction
· Ease-of-use
Scalability: The scalability depends on the parameters extensibility, modularity, composability, ease-of-construction, ease-of-use, space utilization, re-usability, openness, maintainability, etc. In terms of scalability, the peer-to-peer patterns are best. These patterns are highly scalable regarding resources and computing power. Scalability is a problem for event-bus and client-server patterns.
Adaptability: A poorly selected software design pattern could increases the total cost and duration of development cycle as the proposed software product has to be adapted to the selected pattern.
Security: Security becomes a pressing issue as the system is more distributed and the components are more independent. For example, master-slave or client-server patterns are more centralized and it is easier to implement the required security aspects as compare to distributed peer-to-peer patterns.
Dependability: Dependability can be measured in terms of reliability, robustness, fault-tolerance. The architecture patterns that are more centralized (master-slave or client-server patterns) less dependable as in the event of failure of master or server, the whole system will be down. Distributes systems like peer-to-peer patterns are more dependable as work of a pattern that is currently down can be distributed to other peers.