Class 2 - Software Architecture Flashcards

1
Q

Greenfield Engineering

A

Designing a system from scratch (top-down)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
1
Q

Brownfield Engineering

A

Designing a system using a bunch of pre-existing software (bottom-up)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the advantages of Brownfield Engineering?

A
  • Existing code can be reused
  • A starting point is provided
  • Incremental improvements
  • Already defined and documented processes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are the disadvantages of Brownfield Engineering?

A
  • Legacy code can bring problems
  • Detailed understanding of existing systems is required
  • Some pieces of existing systems may need a redesign
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the advantages of Greenfield Engineering?

A
  • Possible to use the best technologies available
  • No legacy constraints or dependencies
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the disadvantages of Greenfield Engineering?

A
  • Risk is higher due to the lack of clear direction
  • More time needed
  • Difficult to make critical decisions
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Not-Invented-Here Syndrome

A

Tendency to avoid using software you did not create yourself because you have too much pride

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are the common fundamental software patterns?

A
  • Big Ball of Mud
  • Unitary Architecture
  • Client/Server
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Big Ball of Mud

A

Absence of any visible architecture structure

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the problems associated with Big Ball of Mud?

A

The lack of structure makes change very difficult. Problems with:
- Maintainability
- Deployment
- Testability
- Scalability
- Performance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Unitary Architecture

A

Includes:
- Applications working on a single PC
- Mainframe systems
- Embedded systems
- Highly constrained environments

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the different types of client/server architectures?

A
  • Desktop + database server
  • Browser + web server
  • Three-tier
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Layered Architecture

A

Separates codebase into different layers which group together modules and components with similar functionalities. Each layer has a specific role within the application.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the 4 layers discussed in this course?

A
  • Presentation Layer
  • Business Layer
  • Persistence Layer
  • Database Layer
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is the benefit of closing layers in layered architecture?

A

Changes made in one layer don’t impact or affect components in other layers. This allows for better coupling.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Architecture Sinkhole

A

An anti-pattern that occurs when all layers in a codebase using layered architecture are closed. The result is that requests move from layer to layer as simple pass-through processing. There is no business logic performed within each layer (functions are made exclusively to pass data from layer to layer)

16
Q

REST Rules

A
  • Use HTTP methods explicitly (e.g. GET, POST, PUT, DELETE)
  • Return correct status codes
  • Be stateless
  • Have clear URIs
  • Support multiple data-exchange representations
17
Q

Status code 2xx

A

Request processed successfully

18
Q

Status code 3xx

A

Redirection (“Go away”)

19
Q

Status code 4xx

A

Client error (“You did something wrong”)

20
Q

Status code 5xx

A

Server error (“I did something wrong”)

21
Q

Stateless REST

A

Every HTTP request happens in complete isolation. When the client makes an HTTP request, it includes all information necessary for the server to fulfill that request. The server should not track the client’s state

22
Q

REST URI rules

A
  • Use 2 URIs per resource (e.g. /reports, /reports/4)
  • Use plural nouns
  • Don’t use verbs
  • Use lower case
  • Use hyphens, not underscores
  • Avoid file extensions
23
Q

GET Method

A

Requests a representation of a specified resource (retrieves data)

24
Q

POST Method

A

Submits an entity to the specified resource, often causing a change in state or side effects on the server

25
Q

PUT Method

A

Replaces all current representations of the target resource with the request payload

26
Q

DELETE Method

A

Deletes the specified resource

27
Q

PATCH Method

A

Applies partial modifications to a resource

28
Q

200 Status

A

OK

29
Q

201 Status

A

Created

30
Q

400 Status

A

Bad Request

31
Q

401 Status

A

Unauthorized

32
Q

404 Status

A

Not Found

33
Q

405 Status

A

Method Not Allowed

34
Q

304 Status

A

Not Modified

35
Q

500 Status

A

Internal Server Error