lesson 3 Flashcards

(100 cards)

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
ESB
Enterprise Service Bus
26
ISB
Internet Service Bus
27
Based on message bus designs, an ___ uses services for communication between the bus and components attached to the bus.
Enterprise Service Bus (ESB)
28
This is similar to an enterprise service bus, but with applications hosted in the cloud instead of on an enterprise network.
Internet Service Bus (ISB).
29
Benefits of the message-bus style
• Extensibility. • Low complexity. • Flexibility • Loose coupling. • Scalability. • Application simplicity
30
The ___ describes distributed systems that involve a separate client and server system, and a connecting network.
Client/Server Architectural Style
31
The simplest form of client/server system involves a server application that is accessed directly by multiple clients, referred to as a ___.
2-Tier architectural style
32
Variations on the client/server style 3
Client-Queue-Client systems Peer-to-Peer (P2P) applications Application servers
33
This approach allows clients to communicate with other clients through a server-based queue.
Client-Queue-Client systems.
34
Developed from the Client-Queue￾Client 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.
Peer-to-Peer (P2P) applications
35
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.
Application servers
36
Benefits of the client/server architectural style
• 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.
37
All data is stored on the server, which generally offers a greater control of security than client machines.
Higher security
38
Because data is stored only on the server, access and updates to the data are far easier to administer than in other architectural styles.
Centralized data access
39
Roles and responsibilities of a computing system are distributed among several servers that are known to each other through a network.
Ease of maintenance
40
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.
N-tier and 3-tier Architectural Style
41
Benefits of N-tier/3-tier architectural style 4
• 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
Because each tier is independent of the other tiers, updates or changes can be carried out without affecting the application as a whole.
Maintainability
43
Because tiers are based on the deployment of layers, scaling out an application is reasonably straightforward.
Scalability
44
Because each tier can be managed or scaled independently, ___ is increased.
Flexibility
45
Applications can exploit the modular architecture of enabling systems using easily scalable components, which increases __.
Availability
46
is an object-oriented approach to designing software based on the business domain, its elements and behaviors, and the relationships between them.
Domain Driven Design (DDD)
47
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.
Domain Driven Design (DDD)
48
DDD
Domain Driven Design (DDD)
49
The ___ can be viewed as a framework from which solutions can then be rationalized
domain model
50
Benefits of Domain Driven Design style
• 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
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.
Communication
52
The domain model is often modular and flexible, making it easy to update and extend as conditions and requirements change.
Extensible
53
The domain model objects are loosely coupled and cohesive, allowing them to be more easily tested.
Testable
54
describes a software engineering approach to system design and development.
Component-based architecture
55
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.
Component-based architecture
56
Principles of the component-based style 6
• 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
Components are usually designed to be reused in different scenarios in different applications.
Reusable
58
Components may be readily substituted with other similar components.
Replaceable
59
Components are designed to operate in different environments and contexts.
Not context specific
60
A component can be extended from existing components to provide new behavior.
Extensible
61
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.
Encapsulated
62
Components are designed to have minimal dependencies on other components.
Independent
63
Benefits of component-based style 5
• 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
As new compatible versions become available, you can replace existing versions with no impact on the other components or the system as a whole.
Ease of deployment
65
The use of third-party components allows you to spread the cost of development and maintenance.
Reduced cost
66
Components implement well-known interfaces to provide defined functionality, allowing development without impacting other parts of the system.
Ease of development
67
The use of reusable components means that they can be used to spread the development and maintenance cost across several applications or systems.
Reusable
68
Components mitigate complexity through the use of a component container and its services
Mitigation of technical complexity
69
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.
Object-oriented architecture
70
An ___ views a system as a series of cooperating objects, instead of a set of routines or procedural instructions.
object- oriented design
71
Principles of the object-oriented architectural style 6
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
This allows you to reduce a complex operation into a generalization that retains the base characteristics of the operation.
Abstraction
73
Objects can be assembled from other objects, and can choose to hide these internal objects from other classes or expose them as simple interfaces.
Composition
74
Objects can inherit from other objects, and use functionality in the base object or override it to implement new behavior
Inheritance
75
Objects expose functionality only through methods, properties, and events, and hide the internal details such as state and variables from other objects.
Encapsulation
76
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.
Polymorphism
77
Objects can be decoupled from the consumer by defining an abstract interface that the object implements and the consumer can understand.
Decoupling
78
Benefits of object-oriented architectural style 5
• 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
It maps the application more closely to the real world objects, making it more understandable.
Understandable
80
It provides for reusability through polymorphism and abstraction.
Reusable
81
It provides for improved testability through encapsulation.
Testable
82
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.
Extensible
83
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.
Highly Cohesive
84
focuses on the grouping of related functionality within an application into distinct layers that are stacked vertically on top of each other.
Layered architecture
85
Functionality within each layer is related by a common role or responsibility. Communication between layers is explicit and loosely coupled.
Layered architecture
86
Layering your application appropriately helps to support a strong separation of concerns that, in turn, supports flexibility and maintainability
Layered architecture
87
Principles for designs that use the layered architectural style
• 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
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.
Abstraction.
89
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.
Encapsulation
90
The separation between functionality in each layer is clear.
Clearly defined functional layers
91
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.
High cohesion
92
Lower layers have no dependencies on higher layers, potentially allowing them to be reusable in other scenarios.
Reusable
93
Communication between layers is based on abstraction and events to provide loose coupling between layers.
Loose coupling
94
Benefits of layered architectural style
• 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
Layers allow changes to be made at the abstract level.
Abstraction
96
Allows you to isolate technology upgrades to individual layers in order to reduce risk and minimize impact on the overall system.
Isolation
97
Separation of core concerns helps to identify dependencies, and organizes the code into more manageable sections.
Manageability
98
Distributing the layers over multiple physical tiers can improve scalability, fault tolerance, and performance.
Performance
99
Roles promote reusability
Reusability
100
Increased testability arises from having well-defined layer interfaces, as well as the ability to switch between different implementations of the layer interfaces.
Testability