1 00:00:00,250 --> 00:00:02,350 And let's start with software components. A 2 00:00:02,350 --> 00:00:06,700 software component is an architectural entity that encapsulates 3 00:00:06,700 --> 00:00:09,940 a subset of the system's functionality and or 4 00:00:09,940 --> 00:00:13,180 the system's data. So basically components typically provide 5 00:00:13,180 --> 00:00:16,100 application specific services. In addition to that, a 6 00:00:16,100 --> 00:00:19,650 software component also restricts access to that subset 7 00:00:19,650 --> 00:00:23,570 via an explicitly defined interface. And, in addition, 8 00:00:23,570 --> 00:00:25,610 which I'm not showing here, a component 9 00:00:25,610 --> 00:00:28,010 can also have explicitly defined dependencies 10 00:00:28,010 --> 00:00:30,990 on its required execution environment. In complex 11 00:00:30,990 --> 00:00:33,680 systems, interactions might become more important and 12 00:00:33,680 --> 00:00:36,220 challenging than functionality. And this is why 13 00:00:36,220 --> 00:00:40,000 connectors are very important architectural elements. A 14 00:00:40,000 --> 00:00:42,935 software connector is an architectural building block 15 00:00:42,935 --> 00:00:46,990 tasked with effecting and regulating interactions among 16 00:00:46,990 --> 00:00:50,980 components. So basically, connectors typically provide application 17 00:00:50,980 --> 00:00:54,610 independent interaction facilities. And it's worth noting here 18 00:00:54,610 --> 00:00:57,530 that in many software systems, connectors might simply be 19 00:00:57,530 --> 00:01:01,140 procedure calls or shared data accesses. So all constants 20 00:01:01,140 --> 00:01:03,589 that we're familiar with. But consider that much more 21 00:01:03,589 --> 00:01:06,690 sophisticated and complex connectors are also possible. And 22 00:01:06,690 --> 00:01:10,310 components and connectors are composed in a specific way 23 00:01:10,310 --> 00:01:13,510 in a given system architecture to accomplish that system's 24 00:01:13,510 --> 00:01:17,400 objective And this is expressed through an architectural configuration. 25 00:01:17,400 --> 00:01:21,070 More precisely, an architectural configuration, or topology, is a 26 00:01:21,070 --> 00:01:25,630 set of specific associations between the components and connectors 27 00:01:25,630 --> 00:01:28,380 of a software system's architecture. So now, let's look 28 00:01:28,380 --> 00:01:30,880 at an example that brings all of this together.