Knowledge

Architectural pattern

Source đź“ť

169:
Some treat architectural patterns and architectural styles as the same, some treat styles as specializations of patterns. What they have in common is both patterns and styles are idioms for architects to use, they "provide a common language" or "vocabulary" with which to describe classes of systems.
1054:
Even though an architectural pattern conveys an image of a system, it is not an architecture as such. An architectural pattern is rather a concept that solves and delineates some essential cohesive elements of a software architecture. Countless different architectures may implement the same pattern
142:
Even though an architectural pattern conveys an image of a system, it is not an architecture. An architectural pattern is a concept that solves and delineates some essential cohesive elements of a software architecture. Countless different architectures may implement the same pattern and share the
164:
An architectural style is a named collection of architectural design decisions that (1) are applicable in a given development context, (2) constrain architectural design decisions that are specific to a particular system within that context, and (3) elicit beneficial qualities in each resulting
127:, marking the onset of complex software systems "eating the world" and the corresponding need to codify the rapidly sprawling world of software development at the deepest possible level, while remaining flexible and adaptive. 181:
Software is managed by its problem space into which solutions may be applied. The table below shows how software is considered across various problem spaces, defined by a sub-domain and addressed with corresponding
1026:
Furthermore, patterns are often defined as something "strictly described and commonly available". For example, layered architecture is a call-and-return style, when it defines an overall style to interact.
891: 159:
An architectural style defines: a family of systems in terms of a pattern of structural organization; a vocabulary of components and connectors, with constraints on how they can be combined.
190:. Sub-domains can be incorporated into the analysis of other sub-domains, for example, solving an Artificial Intelligence problem is first approached as a Data Architecture problem. 1866: 876: 173:
The main difference is that a pattern can be seen as a solution to a problem, while a style is more general and does not require a problem to solve for its appearance.
864: 771: 1233: 1007:"An Experience of Applying Pattern-based Software Framework to Improve the Quality of Software Development: 4. The Design and Implementation of OS2F" 1055:
and thereby share the related characteristics. Furthermore, patterns are often defined as something "strictly described and commonly available".
1006: 1758: 958: 324: 277: 116: 1871: 1783: 1202: 1179: 1156: 1110: 1079: 925: 750: 1556: 760: 881: 1731: 1355: 1539: 1449: 766: 745: 1579: 854: 618: 1549: 1544: 781: 776: 1226: 839: 388: 372: 217: 834: 1038: 1824: 1662: 813: 786: 709: 659: 76:
The use of the word "pattern" in the software industry was influenced by similar concepts as expressed in traditional
1439: 670: 1647: 1642: 1469: 719: 268: 1687: 1652: 1619: 1269: 1219: 844: 224: 1484: 704: 1589: 1561: 1499: 1464: 1400: 1242: 983: 886: 798: 793: 641: 183: 131: 978: 1566: 1494: 1444: 1279: 1142: 849: 823: 803: 727: 562: 399: 394: 328: 285: 66: 31: 1748: 1594: 1574: 732: 466: 433: 307: 187: 81: 70: 42: 1657: 1614: 1609: 1599: 1509: 613: 534: 46: 1147: 143:
related characteristics. Patterns are often defined as "strictly described and commonly available".
1697: 1682: 1677: 1534: 1419: 1365: 740: 591: 233: 1819: 1798: 1707: 1604: 1454: 1347: 1299: 1261: 651: 86: 62: 1014: 1013:. the Third Taiwan Conference on Software Engineering (TCSE07). pp. 185–194. Archived from 1139:
10th European Conference on Pattern Languages of Programs (EuroPlop 2005), Irsee, Germany, July
1489: 1332: 1322: 1317: 1289: 1284: 1198: 1175: 1152: 1106: 1075: 954: 921: 381: 347: 337: 54: 50: 1788: 1529: 1474: 1395: 1385: 1375: 1370: 1192: 1169: 1005:
Chang, Chih-Hung; Lu, Chih-Wei; Lin, Chih-Hao; Yang, Ming-Feng; Tsai, Ching-Fu (June 2008).
915: 342: 213: 91: 94:, prompting the practitioners of computer science to contemplate their own design lexicon. 1778: 1724: 1702: 1479: 1434: 1405: 1380: 1360: 1307: 1274: 1250: 974: 263: 155:
is a specific method of construction, characterized by the features that make it notable.
103: 1131: 1098: 123:—now commonly known as the "Gang of Four"—coincident with the early years of the public 1763: 1624: 1327: 1312: 859: 714: 414: 296: 258: 253: 244: 120: 101:
within the software engineering profession became commonplace after the publication of
1860: 1584: 1429: 1390: 1337: 818: 755: 606: 58: 17: 1840: 1803: 1692: 1667: 1459: 829: 112: 77: 1793: 1768: 1753: 1672: 1504: 516: 108: 45:
within a given context. The architectural patterns address various issues in
1773: 1042: 456: 409: 291: 1211: 404: 124: 98: 27:
Term in software engineering for a reusable solution to a common problem
41:
is a general, reusable resolution to a commonly occurring problem in
1168:
Buschmann F.; Meunier R.; Rohnert H.; Sommerlad P.; Stal M. (1996).
30:
For the use of the word "pattern" in the field of architecture, see
1072:
Software architecture : perspectives on an emerging discipline
438: 1215: 90:(1977) which discussed the practice in terms of establishing a 951:
Fundamentals of Software Architecture: An Engineering Approach
1171:
Pattern-Oriented Software Architecture: A System of Patterns
892:
Common layers in an information system logical architecture
65:. There are two main categories of architectural patterns: 61:. Some architectural patterns have been implemented within 917:
Software architecture: Foundations, Theory and Practice
1011:
Journal of Software Engineering Studies, Vol. 2, No. 6
1132:"Architectural patterns revisited:a pattern language" 914:
Taylor, R.N.; Medvidović, N.; Dashofy, E.M. (2009).
1833: 1812: 1741: 1716: 1633: 1518: 1418: 1346: 1298: 1260: 1249: 877:List of software architecture styles and patterns 1041:. AAHN INFOTECH (INDIA) PVT. LTD. Archived from 225:ETL (data extraction transformation and loading) 1105:(2nd ed.). Microsoft Press. October 2009. 162: 157: 151:Following traditional building architecture, a 1227: 8: 1257: 1234: 1220: 1212: 1141:. UVK Verlagsgesellschaft. pp. 1–39. 1099:"Ch. 3: Architectural Patterns and Styles" 1146: 700:Some examples of architectural patterns: 1867:Architectural pattern (computer science) 1191:Bass L.; Clements P.; Kazman R. (2003). 1103:Microsoft Application Architecture Guide 192: 903: 1093: 1091: 130:Architectural patterns are similar to 909: 907: 7: 1065: 1063: 1039:"Architectural Patterns: Definition" 945: 943: 941: 939: 937: 1130:Avgeriou, Paris; Zdun, Uwe (2005). 501:Transactional reporting data access 491:Data science and advanced analytics 979:"Why Software Is Eating The World" 865:Hierarchical model–view–controller 25: 1194:Software Architecture in Practice 513:Operational dashboard data access 504:Operational reporting data access 882:Process Driven Messaging Service 772:Presentation–abstraction–control 510:Analytical dashboard data access 507:Analytical reporting data access 1732:Enterprise Integration Patterns 269:Slowly changing dimensions load 426:Packaged application databases 1: 1070:Shaw, M.; Garlan, D. (1996). 840:Service-oriented architecture 423:Custom applications databases 835:Pipe and filter architecture 359:Synchronous request/response 153:software architectural style 1825:Portland Pattern Repository 814:Object-oriented programming 660:Natural language generation 582:Master data synchronization 1888: 671:Robotic process automation 134:but have a broader scope. 29: 855:Publish–subscribe pattern 720:Event-driven architecture 614:Dimensional data modeling 348:Message exchange patterns 212: 202:Software design patterns 53:performance limitations, 1872:Software design patterns 1450:Event-based asynchronous 1243:Software design patterns 953:. O'Reilly Media. 2020. 845:Space-based architecture 675:Image and video analysis 664:Classic machine learning 184:software design patterns 132:software design patterns 1356:Chain of responsibility 984:The Wall Street Journal 887:Enterprise architecture 799:Entity-control-boundary 794:Entity component system 761:Action–domain–responder 705:Cell based architecture 642:Artificial intelligence 576:Master data replication 473:Transactional reporting 389:Transaction data stores 1495:Scheduled-task pattern 1445:Double-checked locking 850:Distributed hash table 824:Operational data store 804:Multitier architecture 751:Hexagonal architecture 656:Text analytics and NLP 563:Master data management 552:Operational data store 485:Prescriptive analytics 400:Operational data store 286:Operational data store 167: 161: 57:and minimization of a 32:Pattern (architecture) 1846:Architectural pattern 1749:Christopher Alexander 806:(often three-tier or 767:Model–view–controller 476:Operational analytics 467:business intelligence 434:Clustered File System 199:Architecture pattern 82:Christopher Alexander 43:software architecture 39:architectural pattern 1658:Dependency injection 1615:Inversion of control 1610:Data transfer object 1510:Thread-local storage 782:Model–view–viewmodel 777:Model–view–presenter 579:Master data services 535:Predictive analytics 531:Statistical analysis 525:Real-time dashboards 482:Predictive analytics 47:software engineering 18:Architecture pattern 1663:Intercepting filter 741:Implicit invocation 733:Distributed pattern 648:Decision management 592:Change data capture 528:In-memory analytics 488:Streaming analytics 234:Change data capture 147:Architectural style 63:software frameworks 1820:The Hillside Group 1605:Data access object 1455:Guarded suspension 1440:Binding properties 1197:. Addison-Wesley. 977:(20 August 2011). 787:Model–view–adapter 728:Monolithic pattern 652:Speech recognition 630:Naming conventions 627:Modeling standards 479:Business analytics 238:Near real-time ETL 205:Solution patterns 87:A Pattern Language 1854: 1853: 1648:Business delegate 1580:Publish–subscribe 1414: 1413: 1074:. Prentice Hall. 737:Modular monolith 710:Blackboard system 693: 692: 619:E-R data modeling 395:Master data store 382:Data architecture 338:Publish/subscribe 208:Related patterns 188:solution patterns 55:high availability 51:computer hardware 16:(Redirected from 1879: 1653:Composite entity 1530:Front controller 1270:Abstract factory 1258: 1236: 1229: 1222: 1213: 1208: 1185: 1162: 1150: 1136: 1117: 1116: 1095: 1086: 1085: 1067: 1058: 1057: 1051: 1050: 1035: 1029: 1028: 1023: 1022: 1002: 996: 995: 993: 991: 975:Andreessen, Marc 971: 965: 964: 947: 932: 931: 911: 214:Data integration 196:Sub-domain area 193: 21: 1887: 1886: 1882: 1881: 1880: 1878: 1877: 1876: 1857: 1856: 1855: 1850: 1829: 1808: 1799:Douglas Schmidt 1779:Ward Cunningham 1737: 1725:Design Patterns 1712: 1703:Method chaining 1635: 1629: 1590:Service locator 1521: 1514: 1485:Read–write lock 1421: 1410: 1401:Template method 1342: 1294: 1252: 1245: 1240: 1205: 1190: 1182: 1167: 1159: 1148:10.1.1.141.7444 1134: 1129: 1126: 1121: 1120: 1113: 1097: 1096: 1089: 1082: 1069: 1068: 1061: 1048: 1046: 1037: 1036: 1032: 1020: 1018: 1004: 1003: 999: 989: 987: 973: 972: 968: 961: 949: 948: 935: 928: 913: 912: 905: 900: 873: 809: 698: 569:Master data hub 465:Analytics and 282:Master data hub 264:Data validation 179: 149: 140: 104:Design Patterns 92:pattern lexicon 35: 28: 23: 22: 15: 12: 11: 5: 1885: 1883: 1875: 1874: 1869: 1859: 1858: 1852: 1851: 1849: 1848: 1843: 1837: 1835: 1831: 1830: 1828: 1827: 1822: 1816: 1814: 1810: 1809: 1807: 1806: 1801: 1796: 1791: 1786: 1781: 1776: 1771: 1766: 1764:John Vlissides 1761: 1756: 1751: 1745: 1743: 1739: 1738: 1736: 1735: 1728: 1720: 1718: 1714: 1713: 1711: 1710: 1705: 1700: 1695: 1690: 1685: 1680: 1675: 1670: 1665: 1660: 1655: 1650: 1645: 1639: 1637: 1631: 1630: 1628: 1627: 1622: 1617: 1612: 1607: 1602: 1597: 1592: 1587: 1582: 1577: 1572: 1564: 1559: 1554: 1553: 1552: 1547: 1537: 1532: 1526: 1524: 1516: 1515: 1513: 1512: 1507: 1502: 1497: 1492: 1487: 1482: 1477: 1472: 1467: 1462: 1457: 1452: 1447: 1442: 1437: 1432: 1426: 1424: 1416: 1415: 1412: 1411: 1409: 1408: 1403: 1398: 1393: 1388: 1383: 1378: 1373: 1368: 1363: 1358: 1352: 1350: 1344: 1343: 1341: 1340: 1335: 1330: 1325: 1320: 1315: 1310: 1304: 1302: 1296: 1295: 1293: 1292: 1287: 1282: 1280:Factory method 1277: 1272: 1266: 1264: 1255: 1247: 1246: 1241: 1239: 1238: 1231: 1224: 1216: 1210: 1209: 1203: 1187: 1186: 1180: 1164: 1163: 1157: 1125: 1122: 1119: 1118: 1111: 1087: 1080: 1059: 1030: 997: 966: 960:978-1492043454 959: 933: 926: 902: 901: 899: 896: 895: 894: 889: 884: 879: 872: 869: 868: 867: 862: 860:Message broker 857: 852: 847: 842: 837: 832: 827: 821: 816: 811: 807: 801: 796: 791: 790: 789: 784: 779: 774: 769: 758: 753: 748: 743: 738: 735: 730: 725: 722: 717: 715:Broker pattern 712: 707: 697: 694: 691: 690: 688: 686: 685: 684: 682: 678: 677: 676: 673: 668: 665: 662: 657: 654: 649: 644: 638: 637: 635: 633: 632: 631: 628: 623: 622: 621: 616: 609: 603: 602: 601: 600: 597: 594: 587: 585: 584: 583: 580: 577: 572: 571: 570: 565: 559: 558: 557: 556: 553: 550: 547: 544: 539: 538: 537: 532: 529: 526: 521: 520: 519: 514: 511: 508: 505: 502: 497: 496: 495: 492: 489: 486: 483: 480: 477: 474: 469: 462: 461: 460: 459: 454: 451: 448: 443: 442: 441: 439:NoSQL Database 436: 429: 428: 427: 424: 419: 418: 417: 415:Data warehouse 412: 407: 402: 397: 392: 384: 378: 377: 376: 375: 368: 367: 366: 363: 362:Basic callback 360: 357: 352: 351: 350: 345: 340: 333: 332: 331: 319: 318: 316: 314: 312: 311: 310: 302: 301: 300: 299: 297:Data warehouse 294: 289: 283: 280: 273: 272: 271: 266: 261: 259:Job scheduling 256: 254:Error handling 249: 248: 247: 245:Data discovery 242: 239: 236: 229: 228: 227: 220: 210: 209: 206: 203: 200: 197: 178: 175: 148: 145: 139: 136: 121:John Vlissides 97:Usage of this 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 1884: 1873: 1870: 1868: 1865: 1864: 1862: 1847: 1844: 1842: 1839: 1838: 1836: 1832: 1826: 1823: 1821: 1818: 1817: 1815: 1811: 1805: 1802: 1800: 1797: 1795: 1792: 1790: 1789:Robert Martin 1787: 1785: 1784:Martin Fowler 1782: 1780: 1777: 1775: 1772: 1770: 1767: 1765: 1762: 1760: 1759:Ralph Johnson 1757: 1755: 1752: 1750: 1747: 1746: 1744: 1740: 1734: 1733: 1729: 1727: 1726: 1722: 1721: 1719: 1715: 1709: 1706: 1704: 1701: 1699: 1696: 1694: 1691: 1689: 1686: 1684: 1681: 1679: 1676: 1674: 1671: 1669: 1666: 1664: 1661: 1659: 1656: 1654: 1651: 1649: 1646: 1644: 1641: 1640: 1638: 1632: 1626: 1623: 1621: 1618: 1616: 1613: 1611: 1608: 1606: 1603: 1601: 1598: 1596: 1595:Active record 1593: 1591: 1588: 1586: 1585:Naked objects 1583: 1581: 1578: 1576: 1575:Specification 1573: 1571: 1569: 1565: 1563: 1560: 1558: 1555: 1551: 1548: 1546: 1543: 1542: 1541: 1538: 1536: 1533: 1531: 1528: 1527: 1525: 1523: 1520:Architectural 1517: 1511: 1508: 1506: 1503: 1501: 1498: 1496: 1493: 1491: 1488: 1486: 1483: 1481: 1478: 1476: 1473: 1471: 1468: 1466: 1463: 1461: 1458: 1456: 1453: 1451: 1448: 1446: 1443: 1441: 1438: 1436: 1433: 1431: 1430:Active object 1428: 1427: 1425: 1423: 1417: 1407: 1404: 1402: 1399: 1397: 1394: 1392: 1389: 1387: 1384: 1382: 1379: 1377: 1374: 1372: 1369: 1367: 1364: 1362: 1359: 1357: 1354: 1353: 1351: 1349: 1345: 1339: 1336: 1334: 1331: 1329: 1326: 1324: 1321: 1319: 1316: 1314: 1311: 1309: 1306: 1305: 1303: 1301: 1297: 1291: 1288: 1286: 1283: 1281: 1278: 1276: 1273: 1271: 1268: 1267: 1265: 1263: 1259: 1256: 1254: 1248: 1244: 1237: 1232: 1230: 1225: 1223: 1218: 1217: 1214: 1206: 1204:9780321154958 1200: 1196: 1195: 1189: 1188: 1183: 1181:9781118725269 1177: 1173: 1172: 1166: 1165: 1160: 1158:9783879408054 1154: 1149: 1144: 1140: 1133: 1128: 1127: 1123: 1114: 1112:9780735627109 1108: 1104: 1100: 1094: 1092: 1088: 1083: 1081:9780131829572 1077: 1073: 1066: 1064: 1060: 1056: 1045:on 2012-06-23 1044: 1040: 1034: 1031: 1027: 1017:on 2011-09-22 1016: 1012: 1008: 1001: 998: 986: 985: 980: 976: 970: 967: 962: 956: 952: 946: 944: 942: 940: 938: 934: 929: 927:9780470167748 923: 919: 918: 910: 908: 904: 897: 893: 890: 888: 885: 883: 880: 878: 875: 874: 870: 866: 863: 861: 858: 856: 853: 851: 848: 846: 843: 841: 838: 836: 833: 831: 828: 825: 822: 820: 819:Naked objects 817: 815: 812: 805: 802: 800: 797: 795: 792: 788: 785: 783: 780: 778: 775: 773: 770: 768: 765: 764: 762: 759: 757: 756:Microservices 754: 752: 749: 747: 744: 742: 739: 736: 734: 731: 729: 726: 724:Saga pattern 723: 721: 718: 716: 713: 711: 708: 706: 703: 702: 701: 695: 689: 687: 683: 681: 680: 679: 674: 672: 669: 667:Deep learning 666: 663: 661: 658: 655: 653: 650: 647: 646: 645: 643: 640: 639: 636: 634: 629: 626: 625: 624: 620: 617: 615: 612: 611: 610: 608: 607:Data modeling 605: 604: 598: 595: 593: 590: 589: 588: 586: 581: 578: 575: 574: 573: 568: 567: 566: 564: 561: 560: 554: 551: 548: 545: 542: 541: 540: 536: 533: 530: 527: 524: 523: 522: 518: 515: 512: 509: 506: 503: 500: 499: 498: 493: 490: 487: 484: 481: 478: 475: 472: 471: 470: 468: 464: 463: 458: 455: 452: 449: 446: 445: 444: 440: 437: 435: 432: 431: 430: 425: 422: 421: 420: 416: 413: 411: 408: 406: 403: 401: 398: 396: 393: 390: 387: 386: 385: 383: 380: 379: 374: 371: 370: 369: 364: 361: 358: 355: 354: 353: 349: 346: 344: 343:Request/reply 341: 339: 336: 335: 334: 330: 326: 323: 322: 321: 320: 317: 315: 313: 309: 306: 305: 304: 303: 298: 295: 293: 290: 287: 284: 281: 279: 276: 275: 274: 270: 267: 265: 262: 260: 257: 255: 252: 251: 250: 246: 243: 240: 237: 235: 232: 231: 230: 226: 223: 222: 221: 219: 215: 211: 207: 204: 201: 198: 195: 194: 191: 189: 185: 176: 174: 171: 166: 160: 156: 154: 146: 144: 137: 135: 133: 128: 126: 122: 118: 117:Ralph Johnson 114: 110: 106: 105: 100: 95: 93: 89: 88: 83: 79: 74: 72: 68: 64: 60: 59:business risk 56: 52: 48: 44: 40: 33: 19: 1845: 1841:Anti-pattern 1804:Linda Rising 1730: 1723: 1668:Lazy loading 1600:Identity map 1567: 1519: 1251:Gang of Four 1193: 1170: 1138: 1124:Bibliography 1102: 1071: 1053: 1047:. Retrieved 1043:the original 1033: 1025: 1019:. Retrieved 1015:the original 1010: 1000: 988:. Retrieved 982: 969: 950: 916: 830:Peer-to-peer 699: 180: 172: 168: 163: 158: 152: 150: 141: 129: 113:Richard Helm 102: 96: 85: 78:architecture 75: 38: 36: 1813:Communities 1794:Jim Coplien 1769:Grady Booch 1754:Erich Gamma 1698:Type tunnel 1683:Object pool 1678:Null object 1673:Mock object 1535:Interceptor 1505:Thread pool 1420:Concurrency 1366:Interpreter 517:Data mining 365:Claim check 109:Erich Gamma 71:distributed 1861:Categories 1708:Delegation 1643:Blackboard 1348:Behavioral 1300:Structural 1262:Creational 1049:2012-05-16 1021:2012-05-16 898:References 391:(TDS/OLTP) 138:Definition 107:(1994) by 80:, such as 67:monolithic 49:, such as 1774:Kent Beck 1500:Semaphore 1490:Scheduler 1333:Flyweight 1323:Decorator 1318:Composite 1290:Singleton 1285:Prototype 1174:. Wiley. 1143:CiteSeerX 920:. Wiley. 555:Data mart 457:MapReduce 410:Data mart 292:Data mart 241:Batch ETL 1834:See also 1636:patterns 1522:patterns 1475:Proactor 1422:patterns 1396:Strategy 1386:Observer 1376:Mediator 1371:Iterator 1253:patterns 990:25 April 871:See also 696:Examples 405:Big data 177:Analysis 125:Internet 99:metaphor 1688:Servant 1620:Model 2 1480:Reactor 1470:Monitor 1435:Balking 1406:Visitor 1381:Memento 1361:Command 1308:Adapter 1275:Builder 356:One-way 165:system. 1742:People 1625:Broker 1328:Facade 1313:Bridge 1201:  1178:  1155:  1145:  1109:  1078:  957:  924:  810:-tier) 746:Layers 119:, and 1717:Books 1634:Other 1570:-tier 1391:State 1338:Proxy 1135:(PDF) 826:(ODS) 288:(ODS) 1693:Twin 1550:MVVM 1465:Lock 1460:Join 1199:ISBN 1176:ISBN 1153:ISBN 1107:ISBN 1076:ISBN 992:2020 955:ISBN 922:ISBN 186:and 69:and 1562:ECS 1557:ADR 1545:MVP 1540:MVC 599:STD 596:EAI 549:TDS 546:EAI 543:ETL 494:NLP 453:SOA 450:EAI 447:ETL 373:SOA 329:ESB 325:EAI 308:MFT 278:EAI 218:SOA 84:'s 37:An 1863:: 1151:. 1137:. 1101:. 1090:^ 1062:^ 1052:. 1024:. 1009:. 981:. 936:^ 906:^ 763:, 115:, 111:, 73:. 1568:n 1235:e 1228:t 1221:v 1207:. 1184:. 1161:. 1115:. 1084:. 994:. 963:. 930:. 808:n 327:/ 216:/ 34:. 20:)

Index

Architecture pattern
Pattern (architecture)
software architecture
software engineering
computer hardware
high availability
business risk
software frameworks
monolithic
distributed
architecture
Christopher Alexander
A Pattern Language
pattern lexicon
metaphor
Design Patterns
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
Internet
software design patterns
software design patterns
solution patterns
Data integration
SOA
ETL (data extraction transformation and loading)
Change data capture
Data discovery
Error handling

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑