-
Notifications
You must be signed in to change notification settings - Fork 6
/
index.html
94 lines (94 loc) · 7.76 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<html>
<head>
<title>Eiffel | Sepia Implementation Architecture</title>
<link rel="apple-touch-icon" sizes="180x180" href="./images/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="./images/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="./images/favicon/favicon-16x16.png">
<link rel="manifest" href="./manifest.json">
<link rel="mask-icon" href="./images/favicon/safari-pinned-tab.svg" color="#5bbad5">
<link rel='stylesheet' href='./css/index.css'>
<meta name="theme-color" content="#ffffff">
<script src="./js/csi.min.js"></script>
</head>
<body class="container">
<div data-include="./includes/header.html"></div>
<section>
<h1 class="section-heading">Sepia Eiffel Protocol Implementation Architecture</h1>
<p class="section-paragraph">The Sepia project forms part of the larger Eiffel Community,
where it provides guidance both to contributors and users of the Eiffel protocol and its
implementations. While there is an infinite number of possible solutions to the problem of
implementing the Eiffel protocol, Sepia represents one such solution, recommended and
supported by the community.</p>
<p class="section-paragraph">Below you will find an overview image of the architecture.
Each item in the overview is a <b>clickable link</b> that will take you to its description,
example implementations and API specifications. Each Pipeline Actor role is presented along
with the event types of which it holds authorship, with further details provided in the
description of the Pipeline Actor role.</p>
</section>
<section>
<object class="figure" type="image/svg+xml" data="svg/overview.svg"></object>
</section>
<section>
<div class="row">
<div class="col">
<div class="card">
<h2 class="section-heading">Event Services</h2>
<p class="section-paragraph">An Event Service is a service that does not act in the pipeline, but exists to facilitate the handling of Eiffel events. This may be services for authoring (Command) or for consuming (Query) of such events. Event Services are typically not the provenance of Eiffel event data, but serve the Pipeline Actors and/or users by storing, analyzing, transporting and analyzing the event data.</p>
<ul style="list-style-type:none">
<li><a href="event-analysis.html">Event Analysis</a></li>
<li><a href="event-persistence.html">Event Persistence</a></li>
<li><a href="event-presentation.html">Event Presentation</a></li>
<li><a href="event-publishing.html">Event Publishing</a></li>
<li><a href="rabbitmq-message-broker.html">RabbitMQ Message Broker</a></li>
</ul>
</div>
</div>
<div class="col">
<div class="card">
<h2 class="section-heading">Modes of Access</h2>
<p class="section-paragraph">A Mode of Access captures a form of interaction with Eiffel events. It does not represent any physical entity, but merely describes a type of behavior.</p>
<ul style="list-style-type:none">
<li><a href="aggregated-event-analysis.html">Aggregated Event Analysis</a></li>
<li><a href="assisted-publishing.html">Assisted Publishing</a></li>
<li><a href="historical-event-lookup.html">Historical Event Lookup</a></li>
<li><a href="direct-publishing.html">Direct Publishing</a></li>
<li><a href="real-time-event-parsing.html">Real Time Event Parsing</a></li>
</ul>
</div>
</div>
<div class="col">
<div class="card">
<h2 class="section-heading">Pipeline Actors</h2>
<p class="section-paragraph">Pipeline Actors are the entities that act upon the software in the pipeline. Among the usual suspects are tools that manage, store, test, package and build software. These are authors of Eiffel event data, but may also consume data from other Pipeline Actors in order to inform and configure their behavior.</p>
<ul style="list-style-type:none">
<li><a href="activity-execution.html">Activity Execution</a></li>
<li><a href="activity-orchestration.html">Activity Orchestration</a></li>
<li><a href="announcement-publishing.html">Announcement Publishing</a></li>
<li><a href="artifact-creation.html">Artifact Creation</a></li>
<li><a href="artifact-publishing.html">Artifact Publishing</a></li>
<li><a href="composition-definition.html">Composition Definition</a></li>
<li><a href="confidence-level-arbitration.html">Confidence Level Arbitration</a></li>
<li><a href="environment-provisioning.html">Environment Provisioning</a></li>
<li><a href="flow-context-management.html">Flow Context Management</a></li>
<li><a href="source-management.html">Source Management</a></li>
<li><a href="test-case-execution.html">Test Case Execution</a></li>
<li><a href="test-orchestration.html">Test Orchestration</a></li>
<li><a href="test-outcome-analysis.html">Test Outcome Analysis</a></li>
<li><a href="test-execution-recipe-creation.html">Test Execution Recipe Creation</a></li>
</ul>
</div>
</div>
</div>
</section>
<section>
<div>
<h1 class="section-heading">About Sepia</h1>
<p class="section-paragraph">Sepia always reflects a specific edition of the Eiffel protocol. You are currently looking at the <a href="https://github.com/eiffel-community/eiffel/tree/edition-arica">Arica edition</a>.</p>
<p class="section-paragraph">Like any <a href="http://www.iso-architecture.org/ieee-1471/ads/">architectural description</a>, Sepia makes certain choices with regards to what to express, and what not to express. Sepia is different from most software architecture descriptions in that it does not express a single identified system, but rather a template of a system. Consequently it does not identify implementations directly, but roles for implementations to fill along with the responsibilities and constraints of those roles. Beyond those responsibilities and constraints, different implementations may have different features or side effects. In particular, Sepia defines which Pipeline Actors are responsible for authoring event types, but not which event types they may consume. This is intentional, as it preserves a high degree of freedom in implementing Eiffel to suit the individual case. To exemplify, it is perfectly legal for implementations of the <a href="activity-orchestration.html">Activity Orchestration</a> role to only publish relevant events, but it may also be implemented to consume and trigger based on any Eiffel event type.</p>
<p class="section-paragraph">Furthermore, Sepia does not define direct dependencies or interactions between Pipeline Actors. To continue with the example above, the <a href="activity-orchestration.html">Activity Orchestration</a> actor may instruct an <a href="activity-execution.html">Activity Execution</a> actor directly via API calls, or the <a href="activity-execution.html">Activity Execution</a> actor may listen to events emitted by the <a href="activity-orchestration.html">Activity Orchestration</a> actor, or both roles may be filled by the same implementation, turning all communication between the two roles into intra-process calls. This is why the Sepia overview contains no dependency connections. The only connections in the overview are those between Even Services and Modes of Access, representing the data transportation paths to and from the <a href="rabbitmq-message-broker.html">RabbitMQ Message Broker</a>.
</div>
</section>
<div data-include="includes/footer.html"></div>
</body>
</html>