Design patterns elements of reusable object-oriented software-1998
Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly...
Transcript of Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly...
![Page 1: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/1.jpg)
Software ArchitectureThursday, November 15
1
![Page 2: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/2.jpg)
Design Patterns
A general, reusable solution to a commonly occurring problem in a given context
Often have best practices associated with them
2
![Page 3: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/3.jpg)
Architectural Patterns
Architectural Patterns are the fundamental structural organization for software systems.
3
![Page 4: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/4.jpg)
What is Software Architecture?
4
Architecture: shows pieces of a system & their relationships
Component: self-contained piece of a system, with clearly-defined interfaces and structure
Connector: a linkage between components via an interface
![Page 5: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/5.jpg)
Ideal vs. Real Architecture
5
![Page 6: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/6.jpg)
6
4+1 Architectural View
![Page 7: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/7.jpg)
Logical View: concerned with the functionality the system provides to end users.
Process View: Focuses on the runtime behavior of the system. This includes the processes, and their communication
Development View: This is the system from the perspective of the developer. It has to deal with the management of the project, maintenance etc;
Physical View: How the system is deployed on actual physical hardware
6
4+1 Architectural View
![Page 8: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/8.jpg)
Architectural Styles
7
![Page 9: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/9.jpg)
Architectural Styles in Software
An architectural style defines a family of systems in terms of a pattern of structural organization. More
specifically, an architectural style defines a vocabulary of components and connector types, and
a set of constraints on how they can be combined. — Shaw and Garlan
Thesis template vs.
Book chapter vs.
Novel vs. …
8
![Page 10: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/10.jpg)
Architectural StylesThe Monolith
Client and Server
Micro-services
REST
MVC
Layered
Event-driven
Pipe and Filter
9
![Page 11: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/11.jpg)
The Monolith
A single-tier software application.
All components are combined into a single application.
Many projects begin this way.
10
![Page 12: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/12.jpg)
Advantages & Disadvantages
11
![Page 13: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/13.jpg)
Advantages:
Easy to deploy and test
Easy to develop
Disadvantages:
Reliability
Scalability
Maintenance
Advantages & Disadvantages
11
![Page 14: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/14.jpg)
Client-server Architecture
12
![Page 15: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/15.jpg)
Client-server ArchitectureA client-server architecture distributes functionality of the system into services.
12
![Page 16: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/16.jpg)
Client-server ArchitectureA client-server architecture distributes functionality of the system into services.
Each service potentially delivered from a separate server.
12
![Page 17: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/17.jpg)
Client-server ArchitectureA client-server architecture distributes functionality of the system into services.
Each service potentially delivered from a separate server.
Clients use these service and access the server through the Internet.
12
![Page 18: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/18.jpg)
Client-server ArchitectureA client-server architecture distributes functionality of the system into services.
Each service potentially delivered from a separate server.
Clients use these service and access the server through the Internet.
Static structure and not the run-time organization.
12
![Page 19: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/19.jpg)
Film and picture library
13
![Page 20: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/20.jpg)
Client-server Architecture
14
Advantages
Servers distributed across a network
Makes effective use of networked systems. May require cheaper hardware
Easy to add new servers or upgrade existing servers
Disadvantages
Each service/server is single point of failure (susceptible to DOS attacks)
Performance depends on the network as well as the system
May require a central registry of names and services — it may be hard to find out what servers and services are available
Data interchange may be inefficient
![Page 21: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/21.jpg)
For Amazon
How would the client server architecture look like?
What components would reside in the client? In the server?
15
![Page 22: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/22.jpg)
Micro-service architectureThe extreme generalization of Client-Server
Instead of monolithic systems one has many concise services
A micro-service is a “loosely coupled, reusable software component, which can be distributed.”
Services use message based communication
Service discovery becomes a challenge
16
![Page 23: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/23.jpg)
Advantages & Disadvantages
Advantages:
Good reliability
High scalability
Disadvantages:
Difficult testing
Deployment is harder
More difficult maintenance (across service boundaries)
17
![Page 24: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/24.jpg)
RESTful ArchitectureInspired from the architecture of the largest distributed application ever: The Web
Stateless requests
Every resource has an individual URI
Uniform interface for all resources (GET, POST, PUT, DELETE)
The structure of a response is not specified
18https://restfulapi.net/
![Page 25: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/25.jpg)
3-tier architecture
A client server architecture, where the functional process logic (business logic), data persistence (data access, storage management) and user interfaces are developed a 3 separate modules.
19
![Page 26: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/26.jpg)
Presentation Layer: sends content to the browser/user. You might use HTML/CSS, React, Angular etc.
Application Layer: process the business logic of the application; You might use Java, C#, Python etc.
Data Access Layer: a database management system that provides access to the data: MySQL, Postgres, MongoDB, etc.
20
![Page 27: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/27.jpg)
Advantages & Disadvantages
Advantages:
Good Scalability
Good Flexibility
High Maintainability
Disadvantages:
More complicated deployment
The business logic is still a monolith.
21
![Page 28: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/28.jpg)
Layered ArchitectureOrganizes a system into a subtasks, where each group of subtasks is at a particular layer of abstraction
Each layer provides a set of services to the layer “above.”
Normally layers are constrained so elements only see
Other elements in the same layer, or
Elements of the layer below
22
![Page 29: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/29.jpg)
Generic Layered Architecture
23
![Page 30: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/30.jpg)
Online Library System
24
![Page 31: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/31.jpg)
OSI reference model
25
![Page 32: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/32.jpg)
Android Architecture
26
![Page 33: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/33.jpg)
AdvantagesLayers can be developed independently (and incrementally)
Makes reuse easier
Makes individual layers interchangeable (as long as interface is same)
Layer interactions clearly defined (through interfaces)
When layer interface change, only adjacent layers affected
27
![Page 34: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/34.jpg)
Disadvantages
It’s hard to achieve a clean separation
Layers sometimes introduce unnecessary work
Performance can be impacted since each layer needs to interpret the service request
28
![Page 35: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/35.jpg)
Event Driven ArchitectureIn an event-driven architecture components perform services in reaction to external events generated by other components
In broadcast models an event is broadcast to all sub-systems. Any sub-system which can handle the event may do so.
In interrupt-driven models real-time interrupts are detected by an interrupt handler and passed to some other component for processing
29
![Page 36: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/36.jpg)
Event Driven Architecture
30
![Page 37: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/37.jpg)
Advantages
Loose coupling
More responsive
Increased reliability
Asynchrony built in
Events distributed leads to timeliness
31
![Page 38: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/38.jpg)
Disadvantages
Difficult debugging
Maintenance overhead (fewer build time validations)
Different understanding of events can lead to problems
32
![Page 39: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/39.jpg)
Pipe and FilterDepicts Run-time organization of the system. Provides a structure for systems where each processing component is discrete and carries out one type of data transformation. Each step (filter) transforms the data and passes is on to the next step.
Can be sequential or parallel; single item or batch process
33
![Page 40: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/40.jpg)
Pipe and Filter
34
![Page 41: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/41.jpg)
Invoice processing
35
![Page 42: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/42.jpg)
Advantages
Easy to understand and matches business processes
Filters can be reused/ replaced
Ease of debugging
Can be sequential or concurrent
36
![Page 43: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/43.jpg)
Disadvantages
Format of data transfer has to be agreed a-priori
Each transformation must parse and serialize in the agreed form
Cannot reuse functional transformations that use incompatible data structures
Cannot (directly) share state between filters
37
![Page 44: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/44.jpg)
Model-View-ControllerSeparates information, presentation, and user interactions
38
![Page 45: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/45.jpg)
Model
Manages the system data and associated operations on that data
Contains the Business logic. (application logic and structure)
39
![Page 46: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/46.jpg)
View
Defines and manages how the data is presented to the user
Renders the model
Allows interaction with the user
Passes input to the controller
40
![Page 47: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/47.jpg)
Controller
Manages user interaction and passes these to the view and the model
Receives input
Makes appropriate calls to the model
Updates the view
41
![Page 48: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/48.jpg)
Model-View-Controller
Use when -
there are multiple ways to view and interact with the data
when future requirements for interaction and presentation of data are unknown
42
![Page 49: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/49.jpg)
Advantages
43
![Page 50: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/50.jpg)
Advantages
Clear separation of concerns
Allows data to change independently of its representation and vice versa
Multiple presentations to the same model
Single change to model updates all representations
43
![Page 51: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/51.jpg)
Disadvantages
44
![Page 52: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/52.jpg)
Disadvantages
Increased complexity, communication
Views & controllers are tightly bound
44
![Page 53: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/53.jpg)
Common MVC frameworksRuby on Rails
Spring Framework for Java
Django for Python
Google Web Toolkit for Java
AngularJS for Javascript
CodeIgniter for php
45
![Page 54: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/54.jpg)
MVC – student record viewer
46
![Page 55: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/55.jpg)
MVC – student record viewer
46
![Page 56: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/56.jpg)
Interaction in a (generic) web-based system
47
![Page 57: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/57.jpg)
Bare Bones Facebook = BeaverBook
User profile (name, picture, status)
Wall that contains posts from your friends
Posts have poster’s information, text, and comments
Comments have commenter’s information, text
48
![Page 58: Software Architecture - GitHub Pages · Design Patterns A general, reusable solution to a commonly occurring ... Often have best practices associated with them 2. Architectural Patterns](https://reader030.fdocuments.us/reader030/viewer/2022041017/5ec98b6ab83f5f77ec2d4a31/html5/thumbnails/58.jpg)
MVC for BeaverBook
49