Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Design and Architecture

Similar presentations


Presentation on theme: "Software Design and Architecture"— Presentation transcript:

1 Software Design and Architecture
Architectural Styles and Patterns Muhammad Nasir

2 Goals Give an introduction to the world of architectural styles and patterns. Show you some of the most common styles and patterns. Show how different styles affect the non-functional attributes of a system.

3 Architectural Styles and Patterns
An architectural style, sometimes called an architectural pattern, is a set of principles—a coarse grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems. You can think of architecture styles and patterns as sets of principles that shape an application.

4 Benefits of Architecture Styles/Patterns
A pattern addresses a recurring design problem Patterns… Document existing, well-proven design experience Identify and specify abstractions Provide a common vocabulary and understanding for design principles Are a means of documenting software architectures Support the construction of software with defined properties Help you build complex and heterogeneous software architectures Help you manage software complexity

5 What is an architectural style?
A Pattern for software architecture. Imposes a set of rules on a software architecture. Typical architectural styles are: Client Server Pipes and filters Layers Centralized vs. Distributed And many more…

6 Client Server Problem: Solution: Client Server Architecture
Users on different machines Do not want to distribute business logic Solution: Client Server Architecture The client/server architectural style describes distributed systems that involve a separate client and server system, and a connecting network.

7 Client Server

8 Client Server The simplest form of client/server system involves a server application that is accessed directly by multiple clients. Today, some examples of the client/server architectural style include Web browser—based programs running on the Internet or an intranet, e.g.,

9 Client Server However, the traditional 2-Tier client/server architectural style has numerous disadvantages. Including the tendency for application data and business logic to be closely combined on the server. Negatively impact system’s extensibility and scalability. Its dependence on a central server, which can negatively impact system reliability. Extensibility : In software engineering, extensibility is a system design principle where the implementation takes into consideration future growth Scalability: In software engineering, scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner Reliability: The ability of a system or component to perform its required functions under stated conditions for a specified period of time

10 Layered Software Architecture
Problem: Application consists of several subtasks that operate on different abstraction levels. Solution: A layered system is organized hierarchically, each layer providing service to the layer above it and serving as a client to the layer below.

11 Layered Software Architecture
Layered approach offers increasing level of abstraction. This allows implementers to partition a complex problem into a sequence of incremental steps It supports re-usability It supports Enhancement

12 Layered Software Architecture

13 Layered Software Architecture
Open Systems Interconnection model

14 Layered Software Architecture

15 Layered Software Architecture
Good maintainability Low coupling between layers. Low reliability If a layer crashes, more might follow. Good security Easy to add a security layer. No User Interaction in lower layers

16 Pipes and Filters Problem: Solution: Pipe and Filter
Need to process a stream of data Several processing steps Solution: Pipe and Filter A very simple, yet powerful architecture. It consists of any number of components (filters) that transform or filter data, before passing it on via connectors (pipes) to other components.

17 Pipes and Filters

18 Pipes and Filters

19 Pipe and Filter Vs Layered
Pipe and Filter was a great improvement over the Layered Model Pipe and Filter Model allowed user interaction at each Filter level Besides that Pipe and Filter doesn’t contain any Hierarchy of Abstraction layers

20 Pipes and Filters The filter transforms or filters the data it receives via the pipes with which it is connected. A filter can have any number of input pipes and any number of output pipes. The pipe is the connector that passes data from one filter to the next.

21 Pipes and Filters It is a directional stream of data, that is usually implemented by a data buffer to store all data, until the next filter has time to process it. The pump or producer is the data source. It can be a static text file, or a keyboard input device, continuously creating new data. The sink or consumer is the data target. It can be a another file, a database, or a computer screen.

22 Pipes and Filters The filters are all working at the same time.
The architecture is often used as a simple sequence, but it may also be used for very complex structures. Example Compilers. The consecutive filters perform lexical analysis, parsing, semantic analysis, and code generation Online Transaction Processing

23 Pipes and Filters Good maintainability Low reliability. Good security.
…but only if changes are local to one filter. Supports Reusability. Low reliability. If one filter fails, all filters fail. Good security. Security filters are easy to add.

24 The End Thanks for listening Questions would be appreciated.
Book Path: \\ \FacultyMaterial\Nasir-SE\Software Design and Architecture


Download ppt "Software Design and Architecture"

Similar presentations


Ads by Google