���������A����BC��D�EF�����D������BF����C�B�������E�D����F��DFEB�F��B�D�����F��BF�E
���BC������DF��C��������E����B���� !" �
#�F$��EFB%��E��C�&��F���'�������"
���������A��BCD�E ����EE����(��)�#�& ��%EFD��B�
�F����C��B����C� �EEFEB��B�����EE���B�#*�+F$��EFD�� +����B���
�F���C�C��������� ,�-B���D�����%������./�+0�(��)#�F$��D������ +����B���
�F�����C�D���D ����EE����(��)#�F$��EFB%�D��1���F���2�34�1 5���F��B���
�F���C�C���������� ����EE����(��)#�&� �F���B���
�F�������� �A�!!C�� �����'��� *6�F���B���
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
:
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
;
B��"��#���$���CA��C��
<
��B���E����CF��E
4�B��A���E�D
/�B�������E�E�EB��E
B��"��#���$���CA��C��B�"���E�
=
%F&�'C��C��������������"����"C��
>
����������A
�BC��A
DEF�����C�����C����������F
?
������D��
@
*C�������E
8�����F�FB�
�FEB�F��BF�
�����FE�
/�B������FB�+��F��F�FB�
#E��F�FB�
"!
��EF�����D������BF���
C�B�������E�D����F��DFEB�F��B�D�����F��BF�E�A�
""
8�B��������CFB��B���
�����F��E�EB��E
"
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
":
��!�"������A�C��A����
";
“Abstractly, software architecture
involves the description of elements
from which systems are built,
interactions among those elements,
patterns that guide their composition,
and constraints on these patterns.”�
,��8C�����D����'�����."@@=0
"<
���CFB��B������E��F�BF��1�������E
���CFB��B�����8B���E
��EF�����BB���E
"=
(C���C'�������!�"������A�C��A����
B"
���"
B
���
B:
���:
B;
���;
B" B B:
8C���D������
1E���������D CF�CB��������D�.���������E�EB��E0
(F�����D
">
����������A����������
�������BF��A�C�� ���' ���' ���)��
����
*�F��B����CF��.������0
8��$������CF��.������0
"?
�������BF��A�C�� ���' ���' ���)��
����
*�F��B����CF��.������0
8��$������CF��.������0
����������A����������
"@
�������BF��A�C�� ���' ���' ���)��
����
*�F��B����CF��.������0
8��$������CF��.������0
E��D�������AB
��FB
����������A����������
!
�������BF��A�C�� ���' ���' ���)��
����
*�F��B����CF��.������0
8��$������CF��.������0
E��D�������AB
��FB
3�$A�����
����������A����������
"
�������BF��A�C�� ���' ���' ���)��
����
*�F��B����CF��.������0
8��$������CF��.������0
E��D�������AB
��FB
3�$A�����
D�����
��B���
����������A����������
�������BF��A�C�� ���' ���' ���)��
����
*�F��B����CF��.������0
8��$������CF��.������0
E��D�������AB
��FB
3�$A�����
D�����
��B���
E��D��E��B
��B���
����������A����������
:
3�B�������D�E��F�BF�
��FE�$����A
C���E�������
����������A����������
;
��D���&84&8
4F��6'4�B8�$�
D,16+�*�8�46+�*
��D�FD�3�*
����������A����������
<
�����������
=
�*�+$
��F��B
3�1�EB��
��F��B����CF��
��E��EB
�F��B
3�1�EA���B�
E��$������CF��
��F��B�+�E��EB���A��.�+�0
>
����!�A��(�!CC�C����D��D�
1 module HelloWorldIDL
2 {
3 interface HelloWorld
4 {
5 string sayHello();
6 };
7 };
*GG��$��.@?0
����F��
?
�*�+$
3�1
��+��G�C�+��
3�������B�BF��D����D��B
@
�*�+$
H5��DF$�������
*���������CFB��B���
9��EF�F��
8����FB�
:!
� �,
/CC�
+�E����E����B�F�
+�E�����FE�F�����BF�
"���E�����I�"�������3�
:"
� �,�������C��
*�F��B68��$��
8B�B���EE
*��C�����
1�����D�E�EB��
*D����D����D
#�F����F�B������
:
� �,�$���CA��C�
::
� �,
��B����E�D
�48��/�C/5�8
4�B���E�������
:;
���)CA��*�C�����$�A�C��A����
“Services are self-describing,
platform-agnostic computational
elements that support rapid, low-cost
composition of distributed
application.”�
,������J���
:<
�*$������A�C�
���FEB��
E��$F��D�E��F�BF�
��F��B E��$���F�DF��
DFE�$��� ����F��BF�
:=
�*$���CAC�����
1E���������D
1���FJ�BF��B���E��������
:>
�*$
3�B������E�.D,1����$����0
3�������B�BF��D����D��B����FEB�F�E�.#��3���8'F���0
4�B���E�������
:?
/��B�D�����FBC�D����FE�AA
:@
$������C��C���!�"���
�5$��BF�
���E��F�
*C�����F��BC����$F�����B
;!
�����F���D��B�BF�
;"
��������CD��E�����
/B�E�B�����F�EB����BF����D���D�B�
8BF�����E�F��E�E������BE
;
�����D���CD���D��D��
�����F���F�AF��
3�DF���BF�� �D������FBF���
;:
(E��CA�����CD�C��
1 void *handle;
2 int *iptr, (*fptr)(int);
3
4 handle = dlopen(“ /usr/home/me/my_lib.so”, ...);
5
6 *(void **)(&fptr) = dlsym(handle, “ my_function”);
7 iptr = (int *)dlsym(handle, “ my_data”);
8
9 *(*fptr)(*iptr);
10
11 dlclose(handle);
;;
(E��CA�����CD�C��
4�$��F�F��BF�
4�E���
�����F����F�B��E
;<
(E��CA�����CD�C�-$.$
1 ClassLoader loader;
2 [..]
3 Class klass = loader.loadClass(name);
4 Object obj = type.newInstance();
;=
(E��CA�����CD�C�-$.$
#���DF��
9��EF�F��
*��EE��BC�C���
;>
���CFB��B������D��B�BF�
;?
“A software component is a unit of
composition with contractually
specified interfaces and explicit
context dependencies only. A software
component can be deployed
independently and is subject to
composition by third parties.”�
*��8J����EAF
;@
$�A�C��A��������A�!CD����C�
*�����B
�F�DF��
�
�
*
�
�
*
�����F����BF�
<!
,F�F���������B���D�E��$F��
<"
��E��$F���FE���$FD�D�����BF���FB�
���)CA��*�C������������
��E��$F���FE��C����B��FJ�D��������B���B
*�����BE�F�������B�����B���B
<
���)CA��*�C������������
CC��E��$F��6�F��B�D�F�B����BF����BB����FE��E�D�B���E�$�D�D����D����
*��EFBF�E�����D�E��F��D�F��B���E�����B���BE
*�B���BE�����BC����EFE����E��EBFB�B��F�FB�
<:
*�/C
���D����E�EB���7�D����F��E��$F������B���������$��
,D���
�8
�9,
1F���*����
8��$F�����D��E
<;
C�*-*
����
C��D���
C��D���
C��D���
��B�F��� ��E�F��D�E��$F���C��D���
���� ����
C��D���
C��D���
����
C��D���
��$FD�D�E��$F���C��D���
<<
B���C�)���+�����
8�$���������BE�
4�DFE�$�������BF$��DFE�$������D���EEF$��DFE�$���
�F������B���$��E���B���E�������
<=
���D���C�
<>
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
<?
/��B���E��BC��D�EF�����D������BF����
C�B�������E�D����F��DFEB�F��B�D�����F��BF�E�A�
<@
���!�"����!����"��#�
=!
“A framework is a reusable design of
an application or subsystem
represented as a set of abstract
classes and the way their instances
collaborate. [… ]”�
�E��C�H��KD��
="
CC��+8��&������A
=
&���CAC����
8�����BF����������E
&���F�F�FB�
8F���F�FB�
�F$��EFB�
C���E�����B�DFEB�F��BF�
��B��BF�
�����CF��E�����F�FB�
=:
����F��BF�E�������E�D���E��$F����F��B�D�������B��D��E
��A����
�����F��F���B���D�����B���E��$F��E�����DF���B���E���F�F��BF�
5��C����B��E��$F���C�E����F���B�����D�E��F�BF�
=;
������
0����
+8��������A
����F��BF�
=<
������
DFE�$���
D����F�����������BF�
�
�F�DF��
D����D��������
==
0����
D����F����D�F�B�����BF�
���EFBF�
���D�F�B
=>
,����������C���C'��C�
��D�F�B
�
����
*�F��B 8��$��
�
=?
�������D��D�
=@
������
>!
0����
>"
0�����
1 {
2 machine : {
3 id : “server1”,
4 host : “localhost”,
5 connections : [
6 { out : {
7 service_filter : “(objectClass=toto.contract.HelloWorld)”,
8 properties : { “tag” : [ “example”, “helloworld”] }
9 }
10 }]
11 }
>
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
>:
����������C�
�8'F
F����
+8�
>;
����� ������
+8�,��CF��
3���B��8��$F�� 5���B��8��$F��
���� 5�D�F�B
���������)CA�
D�E��F�BF�
�E�
��B���B
����B�E
*�/C���)CA�
D�����B�EF�������BE
><
������A�C�
CC����DF�B����B�����BC���������A�������BE�
*�B�F�E�BC��D�E��F�BF�������C�F���B�D���D�����B�D�E��$F��E�
+��F�E���BC���8'F�E��$F������FEB��
>=
���������1� 0������
CC�����B�F�E�BC�B�����B�E����F�E���D���D�F�BE
�������B������������F��BF����B��
,�����������F�����
>>
(��A�C��C�
+����E��BE������B��E��$F��
3���B�����D�B��BC�B�E��$�E��E�BC����EFE����DFE�$���
��E�B��������BF�E
>?
(��A�C��C�
�����B� ��E��F�BF� ��BF���
����C�FC� CC��5�D�F�B�FD
��A�C�FC� CC��,��CF���3D
���)CA�FA����A� *�B���B�����
���)CA�FA����A�F)���C� *�B���B�$��EF� �
���)CA�FC� 3D���BC���EE�F�B�D�E��$F�� �
����C�F��� CC�����B��E��$F�����D�F�B��DD��EE �
����C�FA�!CD ��B�������
>@
(C�A�)��E
�FE�$���D���D�����FEC�D���E��F�BF�
��BF���
����������B�����DFE�$������B��
?!
���A�C��
+8�,��CF��
(��A�C��C�
3�*����BF� ��B*����BF�3���B��8��$F�� 5���B��8��$F��
���)CA�
B���A B���A
�E�
�BF��
?"
���A�C��
DDL��E��F�BF��FE�$���� ��L+E�,��CF�� F�L3�*����BF� FEL3���B��8��$F�� ��L����
��B+��B���E��F�BF�.D�E�0
��D�F�B�DD�D.D�E�0
F���B8��$F��.D�E�����0
MM����B�NN
?
0�����
1 {
2 machine : {
3 id : “id”,
4 host : “localhost”,
5 connections : [
6 { in : {
7 endpoint_filter : “(endpoint.config=ws)”,
8 importer_filter : “(instance.name=RoSe_importer.cxf)”,
9 protocols : [ “ws” ] }
10 }]
11 }
?:
�'������(��
1 Machine machine = machine(context, “id”).host(“localhost”).create();
2 machine.start();
3
4 machine.in(“(endpoint.config=ws)”)
5 .withImporter(“(instance.name=RoSe_importer.cxf)”)
6 .protocols([“ws”])
7 .add();
?;
���������������A���
��B�� 8B��� 1F����� 3���B 5���B
-�*B���� +�* F��E����� � �
2������ +�* ����C��D,16+�* � �
-$2��� +58C ����������E�� �
-$2�3� H8 ����C��*D& � �
?<
���������������A���
��B�� ���F� ���� �FE��
4�� ���$�EF$� .�0 �
(�3� ���$�EF$� � �
(���� ���$�EF$� � �
���'�� ���$�EF$���F�D�EB�F�� �
������� BC� � �
5��#����� BC���F�������������� � �
��'��'��''�' BC������� � �
?=
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
?>
$��C����������C��
??
�����6
?@
�C���!�����������!CD����C�
&������A 1�* 1�*��F��
-�)� !
-�)� ! "
���� ! "<
@!
�����%
@"
�C���!�����������!CD����C�
&������A 1�* 1�*��F��
-�)� <= !
-�)� "> ;:
���� ! :;
@
���!����A�
@:
���!����A�
@;
���!����A�
&������A ,��������.��0 *�#��$��.O0 *�#������.O0
-�)� 78F69 <;�<: @@
-�)� <?�<> 9%F:6 @@
���� :>� ; <=�<> @@
&������A �$��BF���.E0 ,�DF���BF���.E0
-�)� ;F66< !�=<<
-�)� "!� "@ !�="=
���� "!�>;@ 8F=&&
@<
>��0C'C�C�E�������C��
"��1�8��$F�����D�B�
�����6+8�����B�����D�B�
:���DD�����B������BF��B�����B�BC��CD1FEB������E������6E��$F���
;��*C��������F����BF���F���
@=
>��0C'C�C�E�������C��
@>
>��0C'C�C�E�������C��
&������A �$��BF���.E0 ,�DF���BF���.E0
�����?6@ 68F&=: 8F=&&
�����?%@ = !�<;
@?
4����!�����
@@
"!!
$������CA��C������!���
"!"
��B�F��
*�B��B�7�*C�������E
8B�B����BC����B
+8��
*����BF����D�3�������B�BF���$��$F��
9��FD�BF��7�5$����BF�
*����EF�
"!
��A���C�
8�����BF����������E
&���F�F�FB�
8F���F�FB�
�F$��EFB�
C���E�����B�DFEB�F��BF�
��B��BF�
�����CF��E�����F�FB�
"!:
������A�C)��
C���DE������B��F��DFEB�F��BF�����������B
������+8���������A����BC�����
C���DE�����DFE�$������B��E
"!;
CC��AEP
"!<
������
3A��� �4���
/�C�
��!��A�C)��*�+�
���)��C)���C����"���
�E�C� !!@
"@@>
!!
-CC
*�/C !!!
���
��'C/� !!>
C�*-*