lesson 3 Flashcards

1
Q

is a set of characteristics
and features that make a building or other
structure notable or historically identifiable.

A

architectural style

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

architectural style is a set of characteristics
and _____ that make a building or other
structure notable or historically identifiable.

A

features

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

A ____ may include such elements as form,
method of construction, building materials, and
regional character.

A

style

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

Category

A

Architecture styles

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

Communication

A

Service-Oriented Architecture (SOA),
Message Bus

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

Deployment

A

Client/Server,N-Tier, 3-Tier

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

Domain

A

Domain Driven Design

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

Structure

A

Component-Based, Object-Oriented, Layered
Architecture

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

is an architectural style that
supports service orientation.

A

Service-oriented architecture (SOA)

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

It refers to applications that expose
and consume functionality as a service using contracts and
messages.

A

Service-oriented architecture (SOA)

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

By consequence, it is as well applied in the field of software
design where services are provided to the other components
by application components through a communication protocol
over a network.

A

Service-oriented architecture (SOA)

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

(SOA)

A

Service-oriented architecture (SOA)

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

A ___ is a discrete unit of functionality that can be accessed
remotely and acted upon and updated independently, such as
retrieving a credit card statement online.

A

service

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

is also intended to be independent of vendors, products and
technologies.

A

SOA

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

Key principles of the SOA architectural style 5

A

• Services are autonomous
• Services are distributable.
• Services are loosely coupled
• Services share schema and contract, not class.
• Compatibility is based on policy.

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

Reuse of common services with standard
interfaces increases business and technology opportunities and
reduces cost.

A

Domain alignment

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

Services are autonomous and accessed through a
formal contract, which provides loose coupling and abstraction.

A

Abstraction

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

Services can expose descriptions that allow other
applications and services to locate them and automatically
determine the interface.

A

Discoverability

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

Because the protocols and data formats are based
on industry standards, the provider and consumer of the service can
be built and deployed on different platforms.

A

Interoperability

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

Services can be granular in order to provide specific
functionality, rather than duplicating the functionality in number of
applications, which removes duplication.

A

Rationalization

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

describes the principle
of using a software system that can receive and
send messages using one or more
communication channels, so that applications
can interact without needing to know specific
details about each other.

A

Message bus architecture

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

A message bus provides the ability to handle: 4

A

• Message-oriented communications.
• Complex processing logic.
• Modifications to processing logic.
• Integration with different environments.

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

Main benefits of SOA architectural style

A

Domain alignment. Reuse of common services with standard
interfaces increases business and technology opportunities and
reduces cost.

Abstraction. Services are autonomous and accessed through a
formal contract, which provides loose coupling and abstraction.

Discoverability. Services can expose descriptions that allow other
applications and services to locate them and automatically
determine the interface.

Interoperability. Because the protocols and data formats are based
on industry standards, the provider and consumer of the service can
be built and deployed on different platforms.

Rationalization. Services can be granular in order to provide specific
functionality, rather than duplicating the functionality in number of
applications, which removes duplication.

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

Variations on the message bus style :

A

Enterprise Service Bus (ESB).
Internet Service Bus (ISB)

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

ESB

A

Enterprise Service Bus

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

ISB

A

Internet Service Bus

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

Based on message
bus designs, an ___ uses services for
communication between the bus and
components attached to the bus.

A

Enterprise Service Bus (ESB)

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

This is similar to an
enterprise service bus, but with applications
hosted in the cloud instead of on an enterprise
network.

A

Internet Service Bus (ISB).

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

Benefits of the message-bus style

A

• Extensibility.
• Low complexity.
• Flexibility
• Loose coupling.
• Scalability.
• Application simplicity

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

The ___ describes
distributed systems that involve a separate client
and server system, and a connecting network.

A

Client/Server Architectural Style

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

The simplest form of client/server system involves
a server application that is accessed directly by
multiple clients, referred to as a ___.

A

2-Tier
architectural style

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

Variations on the client/server style 3

A

Client-Queue-Client systems
Peer-to-Peer (P2P) applications
Application servers

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

This approach allows clients to
communicate with other clients through a server-based queue.

A

Client-Queue-Client systems.

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

Developed from the Client-QueueClient style, the P2P style allows the client and server to swap their
roles in order to distribute and synchronize files and information
across multiple clients.

A

Peer-to-Peer (P2P) applications

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

A specialized architectural style where the
server hosts and executes applications and services that a thin
client accesses through a browser or specialized client installed
software.

A

Application servers

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

Benefits of the client/server architectural style

A

• Higher security. All data is stored on the server, which
generally offers a greater control of security than client
machines.
• Centralized data access. Because data is stored only
on the server, access and updates to the data are far
easier to administer than in other architectural styles.
• Ease of maintenance. Roles and responsibilities of a
computing system are distributed among several
servers that are known to each other through a
network.

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

All data is stored on the server, which
generally offers a greater control of security than client
machines.

A

Higher security

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

Because data is stored only
on the server, access and updates to the data are far
easier to administer than in other architectural styles.

A

Centralized data access

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

Roles and responsibilities of a
computing system are distributed among several
servers that are known to each other through a
network.

A

Ease of maintenance

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

are architectural deployment
styles that describe the separation of functionality
into segments in much the same way as the
layered style, but with each segment being a tier
that can be located on a physically separate
computer.

A

N-tier and 3-tier Architectural Style

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

Benefits of N-tier/3-tier architectural style 4

A

• Maintainability. Because each tier is independent of
the other tiers, updates or changes can be carried out
without affecting the application as a whole.
• Scalability. Because tiers are based on the
deployment of layers, scaling out an application is
reasonably straightforward.
• Flexibility. Because each tier can be managed or
scaled independently, flexibility is increased.
• Availability. Applications can exploit the modular
architecture of enabling systems using easily scalable
components, which increases availability.

42
Q

Because each tier is independent of
the other tiers, updates or changes can be carried out
without affecting the application as a whole.

A

Maintainability

43
Q

Because tiers are based on the
deployment of layers, scaling out an application is
reasonably straightforward.

A

Scalability

44
Q

Because each tier can be managed or
scaled independently, ___ is increased.

A

Flexibility

45
Q

Applications can exploit the modular
architecture of enabling systems using easily scalable
components, which increases __.

A

Availability

46
Q

is an object-oriented
approach to designing software based on the
business domain, its elements and behaviors, and the
relationships between them.

A

Domain Driven Design (DDD)

47
Q

It aims to enable software systems that are a
realization of the underlying business domain by
defining a domain model expressed in the language
of business domain experts.

A

Domain Driven Design (DDD)

48
Q

DDD

A

Domain Driven Design (DDD)

49
Q

The ___ can be viewed as a framework
from which solutions can then be rationalized

A

domain model

50
Q

Benefits of Domain Driven Design style

A

• Communication. All parties within a development
team can use the domain model and the entities it
defines to communicate business knowledge and
requirements using a common business domain
language, without requiring technical jargon.
• Extensible. The domain model is often modular and
flexible, making it easy to update and extend as
conditions and requirements change.
• Testable. The domain model objects are loosely
coupled and cohesive, allowing them to be more
easily tested.

51
Q

All parties within a development
team can use the domain model and the entities it
defines to communicate business knowledge and
requirements using a common business domain
language, without requiring technical jargon.

A

Communication

52
Q

The domain model is often modular and
flexible, making it easy to update and extend as
conditions and requirements change.

A

Extensible

53
Q

The domain model objects are loosely
coupled and cohesive, allowing them to be more
easily tested.

A

Testable

54
Q

describes a
software engineering approach to system design
and development.

A

Component-based architecture

55
Q

It focuses on the decomposition of the design into
individual functional or logical components that
expose well-defined communication interfaces
containing methods, events, and properties.

A

Component-based architecture

56
Q

Principles of the component-based style 6

A

• Reusable. Components are usually designed to be reused in
different scenarios in different applications.
• Replaceable. Components may be readily substituted with other
similar components.
• Not context specific. Components are designed to operate in
different environments and contexts.
• Extensible. A component can be extended from existing
components to provide new behavior.
• Encapsulated. Components expose interfaces that allow the
caller to use its functionality, and do not reveal details of the
internal processes or any internal variables or state.
• Independent. Components are designed to have minimal
dependencies on other components.

57
Q

Components are usually designed to be reused in
different scenarios in different applications.

A

Reusable

58
Q

Components may be readily substituted with other
similar components.

A

Replaceable

59
Q

Components are designed to operate in
different environments and contexts.

A

Not context specific

60
Q

A component can be extended from existing
components to provide new behavior.

A

Extensible

61
Q

Components expose interfaces that allow the
caller to use its functionality, and do not reveal details of the
internal processes or any internal variables or state.

A

Encapsulated

62
Q

Components are designed to have minimal
dependencies on other components.

A

Independent

63
Q

Benefits of component-based style 5

A

• Ease of deployment. As new compatible versions become
available, you can replace existing versions with no impact on
the other components or the system as a whole.
• Reduced cost. The use of third-party components allows you to
spread the cost of development and maintenance.
• Ease of development. Components implement well-known
interfaces to provide defined functionality, allowing
development without impacting other parts of the system.
• Reusable. The use of reusable components means that they can
be used to spread the development and maintenance cost
across several applications or systems.
• Mitigation of technical complexity. Components mitigate
complexity through the use of a component container and its
services

64
Q

As new compatible versions become
available, you can replace existing versions with no impact on
the other components or the system as a whole.

A

Ease of deployment

65
Q

The use of third-party components allows you to
spread the cost of development and maintenance.

A

Reduced cost

66
Q

Components implement well-known
interfaces to provide defined functionality, allowing
development without impacting other parts of the system.

A

Ease of development

67
Q

The use of reusable components means that they can
be used to spread the development and maintenance cost
across several applications or systems.

A

Reusable

68
Q

Components mitigate
complexity through the use of a component container and its
services

A

Mitigation of technical complexity

69
Q

is a design
paradigm based on the division of responsibilities
for an application or system into individual
reusable and self-sufficient objects, each
containing the data and the behavior relevant to
the object.

A

Object-oriented architecture

70
Q

An ___ views a system as a
series of cooperating objects, instead of a set of
routines or procedural instructions.

A

object- oriented design

71
Q

Principles of the object-oriented architectural style 6

A

Abstraction. This allows you to reduce a complex operation into a
generalization that retains the base characteristics of the operation.

Composition. Objects can be assembled from other objects, and can choose
to hide these internal objects from other classes or expose them as simple
interfaces.

Inheritance. Objects can inherit from other objects, and use functionality in the
base object or override it to implement new behavior

Encapsulation. Objects expose functionality only through methods, properties,
and events, and hide the internal details such as state and variables from
other objects.

Polymorphism. This allows you to override the behavior of a base type that
supports operations in your application by implementing new types that are
interchangeable with the existing object.

Decoupling. Objects can be decoupled from the consumer by defining an
abstract interface that the object implements and the consumer can
understand.

72
Q

This allows you to reduce a complex operation into a
generalization that retains the base characteristics of the operation.

A

Abstraction

73
Q

Objects can be assembled from other objects, and can choose
to hide these internal objects from other classes or expose them as simple
interfaces.

A

Composition

74
Q

Objects can inherit from other objects, and use functionality in the
base object or override it to implement new behavior

A

Inheritance

75
Q

Objects expose functionality only through methods, properties,
and events, and hide the internal details such as state and variables from
other objects.

A

Encapsulation

76
Q

This allows you to override the behavior of a base type that
supports operations in your application by implementing new types that are
interchangeable with the existing object.

A

Polymorphism

77
Q

Objects can be decoupled from the consumer by defining an
abstract interface that the object implements and the consumer can
understand.

A

Decoupling

78
Q

Benefits of object-oriented architectural style 5

A

• Understandable. It maps the application more closely to the real
world objects, making it more understandable.
• Reusable. It provides for reusability through polymorphism and
abstraction.
• Testable. It provides for improved testability through encapsulation.
• Extensible. Encapsulation, polymorphism, and abstraction ensure
that a change in the representation of data does not affect the
interfaces that the object exposes, which would limit the capability
to communicate and interact with other objects.
• Highly Cohesive. By locating only related methods and features in
an object, and using different objects for different sets of features,
you can achieve a high level of cohesion.

79
Q

It maps the application more closely to the real
world objects, making it more understandable.

A

Understandable

80
Q

It provides for reusability through polymorphism and
abstraction.

A

Reusable

81
Q

It provides for improved testability through encapsulation.

A

Testable

82
Q

Encapsulation, polymorphism, and abstraction ensure
that a change in the representation of data does not affect the
interfaces that the object exposes, which would limit the capability
to communicate and interact with other objects.

A

Extensible

83
Q

By locating only related methods and features in
an object, and using different objects for different sets of features,
you can achieve a high level of cohesion.

A

Highly Cohesive

84
Q

focuses on the grouping of related
functionality within an application into distinct layers that
are stacked vertically on top of each other.

A

Layered architecture

85
Q

Functionality within each layer is related by a common
role or responsibility.
Communication between layers is explicit and loosely
coupled.

A

Layered architecture

86
Q

Layering your application appropriately helps to support
a strong separation of concerns that, in turn, supports
flexibility and maintainability

A

Layered architecture

87
Q

Principles for designs that use the layered architectural style

A

• Abstraction. Layered architecture abstracts the view of the system as whole
while providing enough detail to understand the roles and responsibilities of
individual layers and the relationship between them.
• Encapsulation. No assumptions need to be made about data types,
methods and properties, or implementation during design, as these
features are not exposed at layer boundaries.
• Clearly defined functional layers. The separation between functionality in
each layer is clear.
• High cohesion. Well-defined responsibility boundaries for each layer, and
ensuring that each layer contains functionality directly related to the tasks
of that layer, will help to maximize cohesion within the layer.
• Reusable. Lower layers have no dependencies on higher layers, potentially
allowing them to be reusable in other scenarios.
• Loose coupling. Communication between layers is based on abstraction
and events to provide loose coupling between layers.

88
Q

Layered architecture abstracts the view of the system as whole
while providing enough detail to understand the roles and responsibilities of
individual layers and the relationship between them.

A

Abstraction.

89
Q

No assumptions need to be made about data types,
methods and properties, or implementation during design, as these
features are not exposed at layer boundaries.

A

Encapsulation

90
Q

The separation between functionality in
each layer is clear.

A

Clearly defined functional layers

91
Q

Well-defined responsibility boundaries for each layer, and
ensuring that each layer contains functionality directly related to the tasks
of that layer, will help to maximize cohesion within the layer.

A

High cohesion

92
Q

Lower layers have no dependencies on higher layers, potentially
allowing them to be reusable in other scenarios.

A

Reusable

93
Q

Communication between layers is based on abstraction
and events to provide loose coupling between layers.

A

Loose coupling

94
Q

Benefits of layered architectural style

A

• Abstraction. Layers allow changes to be made at the abstract
level.
• Isolation. Allows you to isolate technology upgrades to individual
layers in order to reduce risk and minimize impact on the overall
system.
• Manageability. Separation of core concerns helps to identify
dependencies, and organizes the code into more manageable
sections.
• Performance. Distributing the layers over multiple physical tiers can
improve scalability, fault tolerance, and performance.
• Reusability. Roles promote reusability.
• Testability. Increased testability arises from having well-defined
layer interfaces, as well as the ability to switch between different
implementations of the layer interfaces.

95
Q

Layers allow changes to be made at the abstract
level.

A

Abstraction

96
Q

Allows you to isolate technology upgrades to individual
layers in order to reduce risk and minimize impact on the overall
system.

A

Isolation

97
Q

Separation of core concerns helps to identify
dependencies, and organizes the code into more manageable
sections.

A

Manageability

98
Q

Distributing the layers over multiple physical tiers can
improve scalability, fault tolerance, and performance.

A

Performance

99
Q

Roles promote reusability

A

Reusability

100
Q

Increased testability arises from having well-defined
layer interfaces, as well as the ability to switch between different
implementations of the layer interfaces.

A

Testability