Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Architecture

Similar presentations


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

1 Software Architecture
Chris “Big horn” Horne, Nolan “N-thug” kelly, Nairn “BAker” Tsang, dave “chocolate milk” ryan, sean “whacky hat” boyd, Mark “The whopper” D’Adamo

2 Table of Contents Introduction Message Bus Architecture
Client Server Architecture Object Oriented Architecture N-Tier Architecture Component Based Architecture Layered Architecture

3 What is Software Architecture?
High level structures of a software system. Also denotes the set of practices used to select, define or design a software architecture. WOW

4 Message Bus Architecture

5 Message Bus Architecture – The Problem
Maintaining point to point links between an increasing number of nodes Complex Expensive Decentralized

6 Message Bus Architecture – The Solution
Message Oriented Middleware Extra component to handle inter-nodal communication Publish and Subscribe List Based Message bus filters subscribers Broadcast Based Subscribers filter messages

7 Message Bus Architecture - Advantages
Reduced Application Complexity Communication complexity localized in bus Modules need only follow protocol Improved Modifiability Adding messages or components is simple Improved Performance Removal of intermediaries Improved Scalability New components have no impact on older ones

8 Message Bus Architecture – Disadvantages
Increased Complexity All connected parties must follow bus conventions Lowered Modifiability when breaking bus interface Changing the bus interface requires changes to every component that uses it Lowered Security Broadcast based pub / sub sends messages indiscriminately Low Tolerance for downtime The bus becomes a single point of failure

9 Message Bus Example – D-BUS
Open source IPC system for Unix Also offers communication channel between user sessions and hardware Communication through sockets Implements pub/sub

10 Client Server Architecture

11 Overview Prevailing model in network programming Two roles
Client Server Clients and servers are physically located on different machines Require remote access to communicate

12 Server Manage a set of resources Ideally active at all times
Service many clients at a time

13 Client Single user host system Initiate contact with the server
Clients never communicate directly with other clients

14 Types of Client-Server Architecture
2-Tier Presentation logic on client side Data services on server side Business logic location varies 3-Tier Middleware introduced that handles business logic N-Tier More detailed divisions of logic

15 Fat/Thin Clients Fat Client Thin Client
Client performs majority of data and processing operations Client can perform many functions without connection to server Thin Client Client does as little processing as possible Relies on accessing server very often

16 Pros/Cons Pros Cons Centralization of data Congestion Security Cost
Not Robust

17 Example – Microsoft SQL Server
Database application Servers are large computers stored at a centralized location Many applications can connect to server and make requests for data

18 Object Oriented Architecture

19 Overview System as a group of interacting objects
Objects are defined by: Class Attributes (Data Fields) Behaviour (Methods) Objects interact with each other by passing messages

20 Fundamental Features Data hiding (Encapsulation) Inheritance
Abstraction Polymorphism

21 Pros/Cons Pros Cons Closer to how we view real world problems
Requires planning Reusable code Not appropriate in all situations Extensibility Maintainability

22 Example – Cocoa Apple’s native API Objective C (OOP language)
Model-View-Controller

23 N-Tier Architecture

24 3-Tier, The Most Common

25 Benefits Maintainability Scalability Flexibility Availability

26 Weaknesses Bloat Inflexibility

27 Examples 3-Tier Architecture suits e-commerce extremely well

28 Component Based Architecture
By: prof. Dr. Franz j. bilkingtonrobinowitzfredrickshaven

29 Overviews Focuses on decomposing software into logical components
Components are loosely coupled Higher level of abstraction than OOP for example. Does not focus on communication protocols and shared state “Hand Crafting” vs. “Mass Production” So what are components? FUCK

30 I’m Glad You Asked! Any software package/module that encapsulates a related set of functions/data Want to encapsulate the component to where no knowledge of it’s internal workings is needed. Low Coupling Provides functionality with a provided interface (specifies what a component can provide to other components in the system) Example: A Button! Provides event-on-mouse-click, event-on-mouse- hover, etc. Without knowing how the button works! Because buttons! How do they work?

31 Hand Crafted vs. Mass Produced
Time consuming. Each line of code is lovingly typed by the finest code-smiths for the singular purpose of the current project. If you make a mistake(ex. wrong requirements, 471 amirite?!)… …your project can be done for good (WWI guns) …your project is going to be expensive to fix. (Lamborghini expensive) Not time consuming. Each line of code may have been coded a long time ago but it still works as it needs to today. Easy to fix… Because of the low coupling of your modules, and the fact that they communicate via interfaces, a bad module can be substituted for a good one. Saves time and money. Think Lego…

32 A Note About the Last Slide
The most important thing to take away from this is quality. Hand crafting does not always yield a higher quality product You can hand-craft a mess just as easily as you could mass-produce genius. Quality will be determined… BY THE IRON TRIANGLE CBA helps with the Schedule and Resources aspects

33 Exquisite Qualities And Abhorrent Attributes
Pros Cons Ease of Deployment Reduced Cost Ease of Development Reusable Mitigation of technical complexity Message Handling Reliance on Third Parties Testing can be messy Second System Syndrome

34 VIDEO GAMES - Then Games were comparatively simple back in the day
Name Dropping: Games were comparatively simple back in the day Programmed in an Inheritance based programming style Good for smaller, more simple games Adds tons of complexity as game content increases. (Multiple Inheritance)

35 VIDEO GAMES - Now Games today are massive and extremely complex.
More Name Dropping: Games today are massive and extremely complex. Bigger focus on open world games where you can do whatever you want Gamers always want more This want creates the need for something better than IBP Observe…

36 Inheritance Based Programming
Take this generic container for example: Say we want to make it a chest… But let’s say gamers demand that said chest become a witty sidekick that follows you around everywhere and makes sarcastic remarks as well… Boom… Multiple inheritance! OH NOES

37 VIDEO GAMES - Now CBA to the rescue!
Instead of creating a generic game object class with limited functionality and adding to it via class specialization… Just make a generic game object class with the ability to add features as needed to reduce the complexity of the system. Yay progress!!

38 Layered Architecture

39 What is it?

40 Advantages Abstraction Encapsulation High cohesion Reusable
Loose coupling Design Pattern Support

41 Disadvantages Doesn’t work for all systems Start to lose advantages
Can end up with low cohesion and high coupling

42 Now go away or I shall taunt you a second time
FIN. Now go away or I shall taunt you a second time


Download ppt "Software Architecture"

Similar presentations


Ads by Google