Software Design & Architecture
Software Design
Gives enough detail to implement software

Software Architecture
Gives enough detail to produce a software design
Constrains implementation to achieve functionality, consistency, reliability and security.
Constrains designs to achieve an organization's business and technology strategy.
Source: https://simplicable.com/new/software-design-vs-software-architecture
Software Design Process
Source: https://secweb.cs.odu.edu/~zeil/cs330/live/website/Slides/uprocess/page/uprocess.html

Microservices Architecture
Source: https://dzone.com/articles/what-are-microservices-actually

AWS IoT Architecture
Source: https://aws.amazon.com/blogs/big-data/build-a-visualization-and-monitoring-dashboard-for-iot-data-with-amazon-kinesis-analytics-and-amazon-quicksight/

Block Diagram
A game of chess
Source: http://www.c-sharpcorner.com/article/a-chess-program-using-C-Sharp/

Exercise #1: Block Diagram

Tetris Block Diagram

Key Principles
- Separation of concerns
- Single Responsibility principle
- Principle of Least Knowledge
- Don't Repeat Yourself (DRY)
- Minimize upfront design

Source: https://msdn.microsoft.com/en-us/library/ee658124.aspx
Sequence Diagram
Calling from a landline
Source: http://www.upedu.org/process/activity/ac_ucdes.htm

Exercise #2: Sequence Diagram

Score Update

Single User Comment

Multi-user Comment

State Diagram

Calling from a landline
Source: http://www.en.pms.ifi.lmu.de/publications/diplomarbeiten/Sacha.Berger/THESIS/HTML-view/part2.html#2.1.2.2.3.
Exercise #3: State Diagram

Video Player

Source: https://developers.google.com/cast/images/receiver_state_machine.png
Architectural Styles (1)

Source: https://msdn.microsoft.com/en-us/library/ee658117.aspx
Architectural Styles (2)

Source: David Budgen (2013). Software Design. Second Edition. Table 6.1, pg. 113.
Unified Modeling Language(UML 2.5)

Source: http://www.omg.org/spec/UML/2.5/PDF, Figure A.5, pg. 683.
Design Patterns
Creational

Structural
Behavioral
Source: http://www.dasunhegoda.com/wp-content/uploads/2013/10/the23.gif
Software Design & Architecture
By Arvind Padmanabhan
Software Design & Architecture
- 1,886