{"id":362165,"date":"2024-05-21T01:29:02","date_gmt":"2024-05-21T01:29:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=362165"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=362165","title":{"rendered":"<span>\u041d\u043e\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u04214 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0431 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0445\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>C4,<\/p>\n<\/li>\n<li>\n<p>ArchiMate,<\/p>\n<\/li>\n<li>\n<p>SysML,<\/p>\n<\/li>\n<li>\n<p>4+1,<\/p>\n<\/li>\n<li>\n<p>AADL.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b C4<\/strong>. \u041c\u043e\u044f \u0446\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u043e\u0440\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b.\u00a0<\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0442\u0435\u0445, \u043a\u0442\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fa2\/64f\/023\/fa264f023ff5ad0e836ad65b7b09699e.png\" width=\"1967\" height=\"991\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fa2\/64f\/023\/fa264f023ff5ad0e836ad65b7b09699e.png\"\/><\/figure>\n<h2>\u0422\u0435\u043e\u0440\u0438\u044f \u043f\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4<\/h2>\n<p>\u041d\u043e\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f C4 \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0421\u0430\u0439\u043c\u043e\u043d\u043e\u043c \u0411\u0440\u0430\u0443\u043d\u043e\u043c. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<p>C4 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c. \u0421\u0430\u0439\u043c\u043e\u043d \u0411\u0440\u0430\u0443\u043d \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2010-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d.<\/p>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 &#171;C4&#187; \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<ul>\n<li>\n<p><strong>C<\/strong>ontext &#8212; \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442,\u00a0<\/p>\n<\/li>\n<li>\n<p><strong>C<\/strong>ontainers &#8212; \u041a\u043e\u043d\u0435\u0439\u043d\u0435\u0440\u044b,<\/p>\n<\/li>\n<li>\n<p><strong>C<\/strong>omponents &#8212; \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b,<\/p>\n<\/li>\n<li>\n<p><strong>C<\/strong>ode &#8212; \u041a\u043e\u0434.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 &#171;C&#187; \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<h2>\u0423\u0440\u043e\u0432\u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445<\/h2>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u0442\u0430: <a href=\"https:\/\/miro.com\/app\/board\/uXjVMrOehiU=\/\" rel=\"noopener noreferrer nofollow\"><u>\u0441\u0445\u0435\u043c\u0430 C4 \u0432 Miro c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/u><\/a><\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0434\u0435\u043b\u0430\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0434\u0430 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 <a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\">https:\/\/www.structurizr.com\/dsl<\/a>.<\/p>\n<h2>? Context<\/h2>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 (\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438). \u0421\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: <br \/>&#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u044b, <br \/>&#8212; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, <br \/>&#8212; \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <br \/>\u0421\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 <\/em><a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"><em>GetDelivery<\/em><\/a><em> \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>Context &#8212; \u043a\u043e\u0434 \u0434\u043b\u044f https:\/\/www.structurizr.com\/dsl <\/summary>\n<div class=\"spoiler__content\">\n<pre><code> workspace {  model {     user = person \"\u041a\u043b\u0438\u0435\u043d\u0442\" \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 GetDelivery.\"     admin = person \"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\" \"\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c GetDelivery.\"      GetDelivery = softwareSystem \"GetDelivery\" \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\" {         webApp = container \"Web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Web Application\"         mobileAppiOS = container \"Mobile App iOS\" \"iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"iOS\"         mobileAppAndroid = container \"Mobile App Android\" \"Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Android\"         adminWebApp = container \"Web App Admin\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.\" \"Web Application\"         backend = container \"Backend\" \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443.\" \"Server-side Application\"         database = container \"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445\" \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0445, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0445 \u0438 \u0442.\u0434.\" \"Database\"         userDatabase = container \"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\" \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\" \"Database\"         reportStorage = container \"\u0424\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043e\u0442\u0447\u0435\u0442\u043e\u0432\" \"\u0425\u0440\u0430\u043d\u0438\u0442 PDF \u043e\u0442\u0447\u0435\u0442\u044b.\" \"File Storage\"         logicService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438\" \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\" \"Server-side Application\"         deliveryIntegrationService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438\" \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0421\u0414\u042d\u041a, \u0412\u043e\u0437\u043e\u0432\u043e\u0437, \u0414\u0435\u043b\u043e\u0432\u044b\u0435 \u041b\u0438\u043d\u0438\u0438.\" \"Server-side Application\"         authService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\" \"\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439.\" \"Server-side Application\"         reportService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0442\u0447\u0435\u0442\u043e\u0432\" \"\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 PDF \u043e\u0442\u0447\u0435\u0442\u044b.\" \"Server-side Application\"     }      cdek = softwareSystem \"\u0421\u0414\u042d\u041a\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"     vozovoz = softwareSystem \"\u0412\u043e\u0437\u043e\u0432\u043e\u0437\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"     delovieLinii = softwareSystem \"\u0414\u0435\u043b\u043e\u0432\u044b\u0435 \u041b\u0438\u043d\u0438\u0438\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"      user -> webApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     user -> mobileAppiOS \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     user -> mobileAppAndroid \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     admin -> adminWebApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     webApp -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     mobileAppiOS -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     mobileAppAndroid -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     adminWebApp -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     backend -> database \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> userDatabase \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> logicService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> deliveryIntegrationService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> authService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> reportService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     logicService -> reportStorage \"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0442\u0447\u0435\u0442\u044b\"     reportService -> reportStorage \"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0442\u0447\u0435\u0442\u044b\"     deliveryIntegrationService -> cdek \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\"     deliveryIntegrationService -> vozovoz \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\"     deliveryIntegrationService -> delovieLinii \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\" }  views {     systemContext GetDelivery {         include *         autolayout lr     }      theme default } }<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\">\u0441\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0433\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 GetDelivery<\/a>.<\/p>\n<\/div>\n<\/details>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4bd\/723\/c98\/4bd723c987a7e2c66c12cf9d43a8c8b9.png\" width=\"1386\" height=\"1148\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4bd\/723\/c98\/4bd723c987a7e2c66c12cf9d43a8c8b9.png\"\/><\/figure>\n<h3>? Container<\/h3>\n<p>\u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0437\u043e\u043d \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: <br \/>&#8212; \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445), <br \/>&#8212; \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438, <br \/>&#8212; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u0421\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 <\/em><a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"><em>GetDelivery<\/em><\/a><em> \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>Container &#8212; \u043a\u043e\u0434 \u0434\u043b\u044f https:\/\/www.structurizr.com\/dsl <\/summary>\n<div class=\"spoiler__content\">\n<pre><code>workspace {      model {         user = person \"\u041a\u043b\u0438\u0435\u043d\u0442\" \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 GetDelivery.\"         admin = person \"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\" \"\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c GetDelivery.\"          GetDelivery = softwareSystem \"GetDelivery\" \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\" {             webApp = container \"Web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Web Application\"             mobileAppiOS = container \"Mobile App iOS\" \"iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"iOS\"             mobileAppAndroid = container \"Mobile App Android\" \"Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Android\"             adminWebApp = container \"Web App Admin\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.\" \"Web Application\"             backend = container \"Backend\" \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.\" \"Server-side Application\"         }          cdek = softwareSystem \"\u0421\u0414\u042d\u041a\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"          vozovoz = softwareSystem \"\u0412\u043e\u0437\u043e\u0432\u043e\u0437\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"         delovieLinii = softwareSystem \"\u0414\u0435\u043b\u043e\u0432\u044b\u0435 \u041b\u0438\u043d\u0438\u0438\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"          user -> webApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         user -> mobileAppiOS \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         user -> mobileAppAndroid \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         admin -> adminWebApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         webApp -> backend \"API\"         mobileAppiOS -> backend \"API\"         mobileAppAndroid -> backend \"API\"         adminWebApp -> backend \"API\"         backend -> cdek \"HTTPS\/JSON\"         backend -> vozovoz \"HTTPS\/JSON\"         backend -> delovieLinii \"HTTPS\/JSON\"     }      views {         container GetDelivery {             include *             autolayout lr         }          theme default     } } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/993\/2a1\/1e5\/9932a11e58bf72132a83f66c2b7df4dc.png\" width=\"3050\" height=\"2611\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/993\/2a1\/1e5\/9932a11e58bf72132a83f66c2b7df4dc.png\"\/><\/figure>\n<h2>? Component<\/h2>\n<p>\u0414\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442.\u0435. \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p><strong>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b:<\/strong> <br \/>&#8212; \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, <br \/>&#8212; \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438,<br \/>&#8212; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438,<br \/>&#8212; \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u0421\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 <\/em><a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"><em>GetDelivery<\/em><\/a><em> \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c.<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/be7\/c60\/c50\/be7c60c50cdc351a09d36d3b17af6b04.png\" alt=\"\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 Draw.io\" title=\"\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 Draw.io\" width=\"1922\" height=\"924\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be7\/c60\/c50\/be7c60c50cdc351a09d36d3b17af6b04.png\"\/><\/p>\n<div><figcaption>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 Draw.io<\/figcaption><\/div>\n<\/figure>\n<h4>\u041f\u0440\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Structurizr<\/h4>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0445\u043e\u0447\u0443 \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438, \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0439\u043d\u043e \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0432\u0441\u0451 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043a\u043e\u0434\u043e\u043c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b. <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b Component \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/*  * This is a combined version of the following workspaces, with automatic layout enabled:  *  * - \"Big Bank plc - System Landscape\" (https:\/\/structurizr.com\/share\/28201\/)  * - \"Big Bank plc - Internet Banking System\" (https:\/\/structurizr.com\/share\/36141\/) *\/ workspace \"Big Bank plc\" \"This is an example workspace to illustrate the key features of Structurizr, via the DSL, based around a fictional online banking system.\" {      model {         customer = person \"Personal Banking Customer\" \"A customer of the bank, with personal bank accounts.\" \"Customer\"          group \"Big Bank plc\" {             supportStaff = person \"Customer Service Staff\" \"Customer service staff within the bank.\" \"Bank Staff\"             backoffice = person \"Back Office Staff\" \"Administration and support staff within the bank.\" \"Bank Staff\"              mainframe = softwaresystem \"Mainframe Banking System\" \"Stores all of the core banking information about customers, accounts, transactions, etc.\" \"Existing System\"             email = softwaresystem \"E-mail System\" \"The internal Microsoft Exchange e-mail system.\" \"Existing System\"             atm = softwaresystem \"ATM\" \"Allows customers to withdraw cash.\" \"Existing System\"              internetBankingSystem = softwaresystem \"Internet Banking System\" \"Allows customers to view information about their bank accounts, and make payments.\" {                 singlePageApplication = container \"Single-Page Application\" \"Provides all of the Internet banking functionality to customers via their web browser.\" \"JavaScript and Angular\" \"Web Browser\"                 mobileApp = container \"Mobile App\" \"Provides a limited subset of the Internet banking functionality to customers via their mobile device.\" \"Xamarin\" \"Mobile App\"                 webApplication = container \"Web Application\" \"Delivers the static content and the Internet banking single page application.\" \"Java and Spring MVC\"                 apiApplication = container \"API Application\" \"Provides Internet banking functionality via a JSON\/HTTPS API.\" \"Java and Spring MVC\" {                     signinController = component \"Sign In Controller\" \"Allows users to sign in to the Internet Banking System.\" \"Spring MVC Rest Controller\"                     accountsSummaryController = component \"Accounts Summary Controller\" \"Provides customers with a summary of their bank accounts.\" \"Spring MVC Rest Controller\"                     resetPasswordController = component \"Reset Password Controller\" \"Allows users to reset their passwords with a single use URL.\" \"Spring MVC Rest Controller\"                     securityComponent = component \"Security Component\" \"Provides functionality related to signing in, changing passwords, etc.\" \"Spring Bean\"                     mainframeBankingSystemFacade = component \"Mainframe Banking System Facade\" \"A facade onto the mainframe banking system.\" \"Spring Bean\"                     emailComponent = component \"E-mail Component\" \"Sends e-mails to users.\" \"Spring Bean\"                 }                 database = container \"Database\" \"Stores user registration information, hashed authentication credentials, access logs, etc.\" \"Oracle Database Schema\" \"Database\"             }         }          # relationships between people and software systems         customer -> internetBankingSystem \"Views account balances, and makes payments using\"         internetBankingSystem -> mainframe \"Gets account information from, and makes payments using\"         internetBankingSystem -> email \"Sends e-mail using\"         email -> customer \"Sends e-mails to\"         customer -> supportStaff \"Asks questions to\" \"Telephone\"         supportStaff -> mainframe \"Uses\"         customer -> atm \"Withdraws cash using\"         atm -> mainframe \"Uses\"         backoffice -> mainframe \"Uses\"          # relationships to\/from containers         customer -> webApplication \"Visits bigbank.com\/ib using\" \"HTTPS\"         customer -> singlePageApplication \"Views account balances, and makes payments using\"         customer -> mobileApp \"Views account balances, and makes payments using\"         webApplication -> singlePageApplication \"Delivers to the customer's web browser\"          # relationships to\/from components         singlePageApplication -> signinController \"Makes API calls to\" \"JSON\/HTTPS\"         singlePageApplication -> accountsSummaryController \"Makes API calls to\" \"JSON\/HTTPS\"         singlePageApplication -> resetPasswordController \"Makes API calls to\" \"JSON\/HTTPS\"         mobileApp -> signinController \"Makes API calls to\" \"JSON\/HTTPS\"         mobileApp -> accountsSummaryController \"Makes API calls to\" \"JSON\/HTTPS\"         mobileApp -> resetPasswordController \"Makes API calls to\" \"JSON\/HTTPS\"         signinController -> securityComponent \"Uses\"         accountsSummaryController -> mainframeBankingSystemFacade \"Uses\"         resetPasswordController -> securityComponent \"Uses\"         resetPasswordController -> emailComponent \"Uses\"         securityComponent -> database \"Reads from and writes to\" \"SQL\/TCP\"         mainframeBankingSystemFacade -> mainframe \"Makes API calls to\" \"XML\/HTTPS\"         emailComponent -> email \"Sends e-mail using\"          deploymentEnvironment \"Development\" {             deploymentNode \"Developer Laptop\" \"\" \"Microsoft Windows 10 or Apple macOS\" {                 deploymentNode \"Web Browser\" \"\" \"Chrome, Firefox, Safari, or Edge\" {                     developerSinglePageApplicationInstance = containerInstance singlePageApplication                 }                 deploymentNode \"Docker Container - Web Server\" \"\" \"Docker\" {                     deploymentNode \"Apache Tomcat\" \"\" \"Apache Tomcat 8.x\" {                         developerWebApplicationInstance = containerInstance webApplication                         developerApiApplicationInstance = containerInstance apiApplication                     }                 }                 deploymentNode \"Docker Container - Database Server\" \"\" \"Docker\" {                     deploymentNode \"Database Server\" \"\" \"Oracle 12c\" {                         developerDatabaseInstance = containerInstance database                     }                 }             }             deploymentNode \"Big Bank plc\" \"\" \"Big Bank plc data center\" \"\" {                 deploymentNode \"bigbank-dev001\" \"\" \"\" \"\" {                     softwareSystemInstance mainframe                 }             }          }          deploymentEnvironment \"Live\" {             deploymentNode \"Customer's mobile device\" \"\" \"Apple iOS or Android\" {                 liveMobileAppInstance = containerInstance mobileApp             }             deploymentNode \"Customer's computer\" \"\" \"Microsoft Windows or Apple macOS\" {                 deploymentNode \"Web Browser\" \"\" \"Chrome, Firefox, Safari, or Edge\" {                     liveSinglePageApplicationInstance = containerInstance singlePageApplication                 }             }              deploymentNode \"Big Bank plc\" \"\" \"Big Bank plc data center\" {                 deploymentNode \"bigbank-web***\" \"\" \"Ubuntu 16.04 LTS\" \"\" 4 {                     deploymentNode \"Apache Tomcat\" \"\" \"Apache Tomcat 8.x\" {                         liveWebApplicationInstance = containerInstance webApplication                     }                 }                 deploymentNode \"bigbank-api***\" \"\" \"Ubuntu 16.04 LTS\" \"\" 8 {                     deploymentNode \"Apache Tomcat\" \"\" \"Apache Tomcat 8.x\" {                         liveApiApplicationInstance = containerInstance apiApplication                     }                 }                  deploymentNode \"bigbank-db01\" \"\" \"Ubuntu 16.04 LTS\" {                     primaryDatabaseServer = deploymentNode \"Oracle - Primary\" \"\" \"Oracle 12c\" {                         livePrimaryDatabaseInstance = containerInstance database                     }                 }                 deploymentNode \"bigbank-db02\" \"\" \"Ubuntu 16.04 LTS\" \"Failover\" {                     secondaryDatabaseServer = deploymentNode \"Oracle - Secondary\" \"\" \"Oracle 12c\" \"Failover\" {                         liveSecondaryDatabaseInstance = containerInstance database \"Failover\"                     }                 }                 deploymentNode \"bigbank-prod001\" \"\" \"\" \"\" {                     softwareSystemInstance mainframe                 }             }              primaryDatabaseServer -> secondaryDatabaseServer \"Replicates data to\"         }     }      views {         systemlandscape \"SystemLandscape\" {             include *             autoLayout         }          systemcontext internetBankingSystem \"SystemContext\" {             include *             animation {                 internetBankingSystem                 customer                 mainframe                 email             }             autoLayout             description \"The system context diagram for the Internet Banking System.\"             properties {                 structurizr.groups false             }         }          container internetBankingSystem \"Containers\" {             include *             animation {                 customer mainframe email                 webApplication                 singlePageApplication                 mobileApp                 apiApplication                 database             }             autoLayout             description \"The container diagram for the Internet Banking System.\"         }          component apiApplication \"Components\" {             include *             animation {                 singlePageApplication mobileApp database email mainframe                 signinController securityComponent                 accountsSummaryController mainframeBankingSystemFacade                 resetPasswordController emailComponent             }             autoLayout             description \"The component diagram for the API Application.\"         }          image mainframeBankingSystemFacade \"MainframeBankingSystemFacade\" {             image https:\/\/raw.githubusercontent.com\/structurizr\/examples\/main\/dsl\/big-bank-plc\/internet-banking-system\/mainframe-banking-system-facade.png             title \"[Code] Mainframe Banking System Facade\"         }          dynamic apiApplication \"SignIn\" \"Summarises how the sign in feature works in the single-page application.\" {             singlePageApplication -> signinController \"Submits credentials to\"             signinController -> securityComponent \"Validates credentials using\"             securityComponent -> database \"select * from users where username = ?\"             database -> securityComponent \"Returns user data to\"             securityComponent -> signinController \"Returns true if the hashed password matches\"             signinController -> singlePageApplication \"Sends back an authentication token to\"             autoLayout             description \"Summarises how the sign in feature works in the single-page application.\"         }          deployment internetBankingSystem \"Development\" \"DevelopmentDeployment\" {             include *             animation {                 developerSinglePageApplicationInstance                 developerWebApplicationInstance developerApiApplicationInstance                 developerDatabaseInstance             }             autoLayout             description \"An example development deployment scenario for the Internet Banking System.\"         }          deployment internetBankingSystem \"Live\" \"LiveDeployment\" {             include *             animation {                 liveSinglePageApplicationInstance                 liveMobileAppInstance                 liveWebApplicationInstance liveApiApplicationInstance                 livePrimaryDatabaseInstance                 liveSecondaryDatabaseInstance             }             autoLayout             description \"An example live deployment scenario for the Internet Banking System.\"         }          styles {             element \"Person\" {                 color #ffffff                 fontSize 22                 shape Person             }             element \"Customer\" {                 background #08427b             }             element \"Bank Staff\" {                 background #999999             }             element \"Software System\" {                 background #1168bd                 color #ffffff             }             element \"Existing System\" {                 background #999999                 color #ffffff             }             element \"Container\" {                 background #438dd5                 color #ffffff             }             element \"Web Browser\" {                 shape WebBrowser             }             element \"Mobile App\" {                 shape MobileDeviceLandscape             }             element \"Database\" {                 shape Cylinder             }             element \"Component\" {                 background #85bbf0                 color #000000             }             element \"Failover\" {                 opacity 25             }         }     } }<\/code><\/pre>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/github.com\/structurizr\/examples\/tree\/main\/dsl\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/structurizr\/examples\/tree\/main\/dsl<\/a> (big-bank-pic)<\/p>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0435 \u043a\u043e\u0434 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0432 <a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\">https:\/\/www.structurizr.com\/dsl<\/a>, \u0442\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65718572962d8d30c14a029c\" data-style=\"\" id=\"65718572962d8d30c14a029c\" width=\"\"><\/div>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1d4\/dea\/40e\/1d4dea40e63e81885798ba7deecca823.png\" width=\"2390\" height=\"2500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d4\/dea\/40e\/1d4dea40e63e81885798ba7deecca823.png\"\/><\/figure>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u0440\u043e\u0432\u043d\u044f Component \u0438\u0437 <a href=\"https:\/\/miro.com\/app\/board\/uXjVMrOehiU=\/\" rel=\"noopener noreferrer nofollow\">Miro \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0417\u043e\u043e\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430:<\/a><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5b8\/9cc\/032\/5b89cc0327a46d6e59d50f8ead53237a.png\" width=\"1416\" height=\"1316\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b8\/9cc\/032\/5b89cc0327a46d6e59d50f8ead53237a.png\"\/><\/figure>\n<h3>? Code<\/h3>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u0434\u0430. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0442.\u043a. \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e. <strong>\u042d\u0442\u043e \u043a\u0430\u043a \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 UML: \u0432\u0440\u043e\u0434\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0430 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.<\/strong><\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: <br \/>&#8212; \u043a\u043b\u0430\u0441\u0441\u044b, <br \/>&#8212; \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, <br \/>&#8212; \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/c4model.com\/#CodeDiagram\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u043d\u043e\u0442\u0430\u0446\u0438\u0438<\/a> &#8212; \u0421\u0430\u0439\u043c\u043e\u043d\u0430 \u0411\u0440\u0430\u0443\u043d\u0430 \u043f\u043e \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443.<\/p>\n<\/p>\n<h2>\u0413\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u044b C4 &#8212; \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h2>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0445\u0435\u043c \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b,<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434 (+ ChatGPT).<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c C4 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 &#8212; <a href=\"https:\/\/chat.openai.com\/\" rel=\"noopener noreferrer nofollow\">ChatGPT<\/a> \u0438\u043b\u0438 \u0430\u043d\u0430\u043b\u043e\u0433.<\/p>\n<h3>1. Draw.io \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/h3>\n<p><a href=\"https:\/\/app.diagrams.net\" rel=\"noopener noreferrer nofollow\"><strong><u>Draw.io <\/u><\/strong><\/a><strong>(<\/strong><a href=\"http:\/\/diagrams.net\" rel=\"noopener noreferrer nofollow\"><strong>diagrams.net<\/strong><\/a><strong>) <\/strong>\u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043e\u043d\u043b\u0430\u0439\u043d-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f C4. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c. <\/p>\n<p>\u0415\u0441\u0442\u044c \u043c\u0438\u043d\u0443\u0441\u044b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432: \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0448\u044c \u043d\u0435 \u0442\u043e \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b, \u0438\u043b\u0438 \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b. <\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong><br \/>+ \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439;<br \/>+ \u0415\u0441\u0442\u044c \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c;<br \/>+ \u0415\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Confluence, Google Drive \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<\/strong><br \/>&#8212; \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u042d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u0441\u0435\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p><strong>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435:<\/strong><br \/>\u0415\u0441\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4 \u0447\u0435\u0440\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0442\u043e \u044f \u0431\u0443\u0434\u0443 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 Draw.io. \u0412 GetAnalyst \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c C4 \u0432 Draw.io<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f2d\/fb4\/d7e\/f2dfb4d7ec32c24165403eb80638ca3c.png\" alt=\"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u04214 \u0432 Draw.io\" title=\"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u04214 \u0432 Draw.io\" width=\"2564\" height=\"1256\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f2d\/fb4\/d7e\/f2dfb4d7ec32c24165403eb80638ca3c.png\"\/><\/p>\n<div><figcaption>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u04214 \u0432 Draw.io<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/183\/62c\/30d\/18362c30d2dbe9b817aa71b02048b39f.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 C4 \u0432 Draw.io\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 C4 \u0432 Draw.io\" width=\"2104\" height=\"1420\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/183\/62c\/30d\/18362c30d2dbe9b817aa71b02048b39f.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 C4 \u0432 Draw.io<\/figcaption><\/div>\n<\/figure>\n<h3>2. Miro \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/h3>\n<p><a href=\"https:\/\/miro.com\" rel=\"noopener noreferrer nofollow\"><strong><u>Miro <\/u><\/strong><\/a>\u2014 \u044d\u0442\u043e \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0434\u043e\u0441\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f C4 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c. <\/p>\n<p>\u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Miro \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0445\u0435\u043c\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u0430\u043c \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/miro.com\/app\/board\/uXjVMrOehiU=\/\" rel=\"noopener noreferrer nofollow\"><u>\u043c\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Miro \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 C4 <\/u><\/a>\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043d\u0435\u0433\u043e.<\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong><br \/>+ \u0415\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Confluence, Google Drive \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.<br \/>+ \u041f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442, \u0447\u0435\u043c Draw.io.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<br \/><\/strong>&#8212; \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0434\u043e\u0441\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u043b\u0430\u0442\u043d\u044b\u0439.<br \/>&#8212; \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. <br \/>&#8212; \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b C4 \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0434\u043b\u044f Miro, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<p><strong>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435:<\/strong><br \/>\u041f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Miro \u0438 <a href=\"http:\/\/Draw.io\" rel=\"noopener noreferrer nofollow\">Draw.io<\/a>, \u044f \u043e\u0441\u0442\u0430\u044e\u0441\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a\u043e\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e <a href=\"https:\/\/app.diagrams.net\" rel=\"noopener noreferrer nofollow\"><strong><u>Draw.io<\/u><\/strong><\/a><strong><u>,<\/u><\/strong> \u0442\u0430\u043a \u043a\u0430\u043a <strong>\u0434\u043b\u044f Miro \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 C4 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u0447\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0444\u0438\u0447\u0430.<\/strong><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0a9\/ee1\/458\/0a9ee145824e20fb056903f6f8e0ec20.png\" alt=\"\u0428\u0430\u0431\u043b\u043e\u043d Miro \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 C4\" title=\"\u0428\u0430\u0431\u043b\u043e\u043d Miro \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 C4\" width=\"2856\" height=\"1396\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0a9\/ee1\/458\/0a9ee145824e20fb056903f6f8e0ec20.png\"\/><\/p>\n<div><figcaption><a href=\"https:\/\/miro.com\/app\/board\/uXjVMrOehiU=\/\" rel=\"noopener noreferrer nofollow\">\u0428\u0430\u0431\u043b\u043e\u043d Miro <\/a>\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 C4<\/figcaption><\/div>\n<\/figure>\n<h3>3. Microsoft Visio \u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/h3>\n<p><strong>Microsoft Visio<\/strong> \u043e\u0442 Microsoft \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/app.diagrams.net\" rel=\"noopener noreferrer nofollow\"><strong><u>Draw.io<\/u><\/strong><\/a>, \u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 C4 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u0432 Miro.<\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong><br \/>+ \u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d \u0432 IT-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<br \/><\/strong>&#8212; \u041f\u043b\u0430\u0442\u043d\u044b\u0439.<br \/>&#8212; \u0420\u0430\u0431\u043e\u0442\u0430 \u0432 \u043e\u0444\u0444\u043b\u0430\u0439\u043d, \u0445\u043e\u0442\u044f \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u043f\u043b\u044e\u0441\u043e\u043c.<br \/>&#8212; \u041d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f C4.<\/p>\n<p><strong>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435:<\/strong><br \/>\u042f \u0432\u044b\u0431\u0435\u0440\u0443 draw.io, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0430 Visio \u0438 \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u043d\u0435 Windows.<strong><br \/><\/strong><\/p>\n<h3>4. Structurizr \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434<\/h3>\n<p><a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\"><strong><u>Structurizr<\/u><\/strong><\/a> \u2014 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c C4. Structurizr \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434, \u0447\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p><strong>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<u> <\/u><\/strong><a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\"><strong><u>Structurizr<\/u><\/strong><\/a><strong> \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4:<\/strong><\/p>\n<ol>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c DSL: <a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\">https:\/\/www.structurizr.com\/dsl<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Structurizr.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Render&#187; \u0441\u043f\u0440\u0430\u0432\u0430 \u0441\u0432\u0435\u0440\u0445\u0443, \u043d\u0430\u0434 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0441 \u043a\u043e\u0434\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0430\u0448\u0443 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443.<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong><br \/>+ \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439.<br \/>+ \u0423\u0434\u043e\u0431\u043d\u044b\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438.<br \/>+ \u041f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c &#171;\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c&#187;.<br \/>+ \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043a\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 (ChatGPT).<br \/>+ \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439.<br \/>+ \u0427\u0438\u0441\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 &#8212; \u043d\u0435\u0442 \u043c\u0443\u0441\u043e\u0440\u043d\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u044b.<br \/>+ \u041c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Java \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<br \/>+ \u041f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0430\u044f <a href=\"https:\/\/docs.structurizr.com\/dsl\/expressions\" rel=\"noopener noreferrer nofollow\">\u0431\u0430\u0437\u0430 \u0437\u043d\u0430\u043d\u0438\u0439 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/a>.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441\u044b:<br \/><\/strong>&#8212; \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p><strong>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435:<\/strong><br \/>\u0411\u0440\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/edd\/305\/64e\/edd30564e828d310f3785bcf823da102.png\" width=\"2398\" height=\"946\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/edd\/305\/64e\/edd30564e828d310f3785bcf823da102.png\"\/><\/figure>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f Structurizr &#8212; Context<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b <strong>\u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 Context:<\/strong><\/p>\n<pre><code>workspace {      model {         user = person \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\" \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\"         bankingSystem = softwareSystem \"\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\" \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\"          user -> bankingSystem \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\" \"HTTPS\"     }      views {         systemContext bankingSystem {             include *             autoLayout lr         }          theme default     } } <\/code><\/pre>\n<p><strong>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/strong> \u0441 \u0434\u0432\u0443\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438:<\/p>\n<ol>\n<li>\n<p>&#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&#187; (\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>Person<\/code> \u0432 PlantUML), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>&#171;\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430&#187; (\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>System<\/code>), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0437\u044c \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c &#171;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442&#187; \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c &#171;HTTPS&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/85b\/853\/ffc\/85b853ffc42bcde31420a60732f04ee2.png\" width=\"2400\" height=\"950\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/85b\/853\/ffc\/85b853ffc42bcde31420a60732f04ee2.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f Structurizr &#8212; Container<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u044f<strong> Container:<\/strong><\/p>\n<pre><code>workspace {      model {         user = person \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\" \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\"          bankingSystem = softwareSystem \"\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\" {             webApp = container \"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\" \"\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 \u043e\u043d\u043b\u0430\u0439\u043d.\" \"Java\"             db = container \"\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445\" \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u0447\u0435\u0442\u0430\u0445 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0445.\" \"MySQL\"             api = container \"API\" \"\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c.\" \"RESTful\"         }          user -> webApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\" \"HTTPS\"         webApp -> db \"\u0427\u0438\u0442\u0430\u0435\u0442\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\" \"JDBC\"         api -> db \"\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\" \"JDBC\"     }      views {         container bankingSystem {             include *             autoLayout lr         }          theme default     } } <\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b &#171;\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430&#187;. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c:<\/p>\n<ol>\n<li>\n<p><strong>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0412 <strong>\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0421\u0438\u0441\u0442\u0435\u043c\u0435<\/strong> \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<ul>\n<li>\n<p><strong>\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/strong>: \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Java.<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445<\/strong>: MySQL \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0445\u0440\u0430\u043d\u044f\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p><strong>API<\/strong>: RESTful API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0431\u0430\u0437\u044b.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/18b\/fd0\/617\/18bfd0617ad59d1a4f12ee7856d2da23.png\" width=\"2386\" height=\"1144\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18b\/fd0\/617\/18bfd0617ad59d1a4f12ee7856d2da23.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f Structurizr &#8212; Component<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0414\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 &#171;\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435&#187; \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 &#171;\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f&#187;:<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435  \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a &#171;API&#187; \u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f &#171;\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445&#187;.<\/p>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u044f<strong> Component:<\/strong><\/p>\n<pre><code>workspace {      model {         user = person \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\" \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\"                           bankingSystem = softwareSystem \"\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\" {         webApp = container \"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\" {             ui = component \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\" \"Angular, \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\"             server = component \"\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u041b\u043e\u0433\u0438\u043a\u0430\" \"Spring Boot, \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\"             databaseComponent = component \"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\" \"JPA\/Hibernate, \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c.\"         }          api = container \"API\" \"RESTful, \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c.\"         db = container \"\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445\" \"MySQL, \u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u0447\u0435\u0442\u0430\u0445 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0445.\"          user -> ui \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\" \"HTTPS\"         ui -> server \"\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\" \"JSON\/HTTP\"         server -> databaseComponent \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\" \"JDBC\"         server -> api \"\u0414\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b\" \"JSON\/HTTP\"         databaseComponent -> db \"\u0427\u0438\u0442\u0430\u0435\u0442\/\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\" \"JDBC\"         }     }      views {         component webApp {             include *             autoLayout lr         }          theme default     } } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h3>5. PlantUML \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434<\/h3>\n<p><a href=\"http:\/\/www.plantuml.com\" rel=\"noopener noreferrer nofollow\"><strong><u>PlantUML<\/u><\/strong><\/a> \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c UML-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f. \u041e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c C4, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u0435\u0440\u0435\u0431\u043e\u044f\u043c\u0438 &#8212; \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u044e\u0431\u0432\u0438 \u043a PlantUML. <\/p>\n<p><strong>\u041f\u043b\u044e\u0441\u044b:<\/strong><br \/>+ \u041c\u043e\u0436\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434.<\/p>\n<p>\u041c\u0438\u043d\u0443\u0441\u044b:<br \/>&#8212; \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e.<\/p>\n<p><strong>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435:<br \/><\/strong><a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\"><u>Structurizr<\/u><\/a> \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f C4-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434.<\/p>\n<p><strong>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PlantUML \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4:<\/strong><\/p>\n<ol>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 PlantUML, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a PlantText \u0438\u043b\u0438 \u043e\u043d\u043b\u0430\u0439\u043d-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 PlantUML \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/habr.com\/ru\/article\/edit\/778726\/plantuml.com\" rel=\"noopener noreferrer nofollow\">plantuml.com<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 PlantUML.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f. \u041b\u0438\u0431\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 &#171;Submit&#187;.<\/p>\n<\/li>\n<\/ol>\n<p><em>*\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 URL <\/em><a href=\"https:\/\/raw.githubusercontent.com\/plantuml-stdlib\/C4-PlantUML\/master\/C4_Context.puml\" rel=\"noopener noreferrer nofollow\"><em>https:\/\/raw.githubusercontent.com\/plantuml-stdlib\/C4-PlantUML\/master\/C4_Context.puml<\/em><\/a><em> \u0432\u043d\u0443\u0442\u0440\u0438 PlantUML \u0441\u043c\u0435\u043d\u0438\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043c\u0435\u0436\u0434\u0443 \u0434\u043d\u0435\u0432\u043d\u044b\u043c \u0438 \u043d\u043e\u0447\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 (\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 &#171;Submit&#187;).<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3be\/00c\/b38\/3be00cb38deccbb3597fd32b7af8e0f5.png\" width=\"2172\" height=\"1390\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3be\/00c\/b38\/3be00cb38deccbb3597fd32b7af8e0f5.png\"\/><\/figure>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f PlantUML<\/summary>\n<div class=\"spoiler__content\">\n<p><strong><u>Context<\/u><\/strong><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u043d\u0430 PlantUML \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b <strong>\u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 Context:<\/strong><\/p>\n<pre><code>@startuml C4_Example !include https:\/\/raw.githubusercontent.com\/plantuml-stdlib\/C4-PlantUML\/master\/C4_Context.puml  LAYOUT_WITH_LEGEND()  Person(user, \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\", \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\") System(bankingSystem, \"\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\", \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\")  Rel(user, bankingSystem, \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\", \"HTTPS\") @enduml<\/code><\/pre>\n<p><em>*\u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u0441\u0440\u0430\u0437\u0443, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u0432 \u0442\u0435\u043c\u043d\u0443\u044e\/\u0441\u0432\u0435\u0442\u043b\u0443\u044e \u0442\u0435\u043c\u0443 \u0438\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0411\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f.<\/em><\/p>\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48b\/b78\/e32\/48bb78e32cc9431d09186c4d002a6224.png\" alt=\"\u041a\u0443\u0447\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0432\u043e\u043a\u0440\u0443\u0433 \u043f\u0435\u0447\u0430\u043b\u0438\u0442.\" title=\"\u041a\u0443\u0447\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0432\u043e\u043a\u0440\u0443\u0433 \u043f\u0435\u0447\u0430\u043b\u0438\u0442.\" width=\"2834\" height=\"1302\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/48b\/b78\/e32\/48bb78e32cc9431d09186c4d002a6224.png\"\/><\/p>\n<div><figcaption>\u041a\u0443\u0447\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0432\u043e\u043a\u0440\u0443\u0433 \u043f\u0435\u0447\u0430\u043b\u0438\u0442.<\/figcaption><\/div>\n<\/figure>\n<\/p>\n<p><strong><u>Container<\/u><\/strong><\/p>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u044f<strong> Container:<\/strong><\/p>\n<pre><code>@startuml C4_Containers !include https:\/\/raw.githubusercontent.com\/plantuml-stdlib\/C4-PlantUML\/master\/C4_Container.puml  LAYOUT_WITH_LEGEND()  Person(user, \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\", \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\")  System_Boundary(bankingSys, \"\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\") {     Container(webApp, \"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\", \"Java\", \"\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 \u043e\u043d\u043b\u0430\u0439\u043d.\")     Container(db, \"\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445\", \"MySQL\", \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u0447\u0435\u0442\u0430\u0445 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0445.\")     Container(api, \"API\", \"RESTful\", \"\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c.\") }  Rel(user, webApp, \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\", \"HTTPS\") Rel(webApp, db, \"\u0427\u0438\u0442\u0430\u0435\u0442\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\", \"JDBC\") Rel(api, db, \"\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\", \"JDBC\") @enduml<\/code><\/pre>\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/986\/18c\/942\/98618c942841db351d688faa79b9113d.png\" width=\"2854\" height=\"1400\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/986\/18c\/942\/98618c942841db351d688faa79b9113d.png\"\/><\/figure>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0ef\/db6\/c58\/0efdb6c58d490616e23e9d23bacee2ed.png\" width=\"454\" height=\"740\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0ef\/db6\/c58\/0efdb6c58d490616e23e9d23bacee2ed.png\"\/><\/figure>\n<\/p>\n<p><strong><u>Component<\/u><\/strong><\/p>\n<p>\u0414\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c &#171;\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435&#187; \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041a\u043e\u0434 \u0434\u043b\u044f <strong>\u0443\u0440\u043e\u0432\u043d\u044f Component:<\/strong><\/p>\n<pre><code>@startuml !include https:\/\/raw.githubusercontent.com\/plantuml-stdlib\/C4-PlantUML\/master\/C4_Component.puml  LAYOUT_WITH_LEGEND()  Container_Boundary(webApp, \"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\") {     Component(ui, \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\", \"Angular\", \"\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\")     Component(server, \"\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u041b\u043e\u0433\u0438\u043a\u0430\", \"Spring Boot\", \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\")     Component(database, \"\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445\", \"JPA\/Hibernate\", \"\u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c.\") }  Container(api, \"API\", \"RESTful\", \"\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c.\") Container(db, \"\u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445\", \"MySQL\", \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u0447\u0435\u0442\u0430\u0445 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0445.\")  Person(user, \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\", \"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\") Rel(user, ui, \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\", \"HTTPS\")  Rel(ui, server, \"\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\", \"JSON\/HTTP\") Rel(server, database, \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\", \"JDBC\") Rel(server, api, \"\u0414\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b\", \"JSON\/HTTP\") Rel(database, db, \"\u0427\u0438\u0442\u0430\u0435\u0442\/\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\", \"JDBC\") @enduml<\/code><\/pre>\n<\/p>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/159\/483\/d8d\/159483d8d5f0a157f6f8a140171f6cfb.png\" width=\"477\" height=\"1174\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/159\/483\/d8d\/159483d8d5f0a157f6f8a140171f6cfb.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p><strong>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u0430 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/strong> \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b C4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Draw.io \u0438 Structurizr.<\/strong><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u042f \u0441\u0447\u0438\u0442\u0430\u044e C4 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0414\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. <\/p>\n<p>\u0421\u0430\u043c\u0430 \u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a, \u044f \u0442\u0430\u043a\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0431\u0430\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 C4, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435. \u041d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 C4 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439 \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435, \u0434\u0430 \u0438 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0442\u043e\u0436\u0435.<\/p>\n<p><strong>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438:<\/strong><\/p>\n<ul>\n<li>\n<p><strong><em>Context<\/em><\/strong> \u2014 \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 &#8212; \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p><strong><em>Container<\/em><\/strong> \u2014 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u043d\u0443\u0442\u0440\u0438, \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u0432\u0435\u0431-, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435, \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p><strong><em>Component<\/em><\/strong> \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b Backend, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043a\u043e\u0434\u0430 <\/em><strong><em>Code<\/em><\/strong><em> \u0441\u0447\u0438\u0442\u0430\u044e \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0439 \u0442\u0440\u0430\u0442\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/em> \u0412 \u0440\u043e\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u0434\u0430 \u044f \u043d\u0435 \u043a\u0430\u0441\u0430\u044e\u0441\u044c, \u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0432 C4 \u0438\u043b\u0438 \u0432 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 UML \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0443 \u043c\u0435\u043d\u044f \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u0431\u044e\u0440\u043e\u043a\u0440\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0448\u043e\u043a\u0430, \u0447\u0435\u043c \u0432\u043e\u0441\u0445\u0438\u0449\u0435\u043d\u0438\u0435. \u041b\u0443\u0447\u0448\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0445\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c<a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"> \u0432 \u043c\u043e\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0435 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435, <\/a>\u0438 \u0441\u0432\u0435\u0440\u0445\u0443-\u0441\u043d\u0438\u0437\u0443 \u043e\u0442 \u043d\u0435\u0433\u043e. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0442\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u044f C4 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043d\u0435\u0451 (\u0430 \u0437\u0430\u0442\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438). <\/p>\n<p><strong>\u041d\u043e\u0442\u0430\u0446\u0438\u044f C4 \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u044f\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c.<\/strong> \u042d\u0442\u0430 \u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430\u043c \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u043e \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0441 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c\u0438.<\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/h2>\n<p><strong>\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/strong><\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/c4model.com\/\" rel=\"noopener noreferrer nofollow\">The C4 model for visualising software architecture<\/a><br \/>The C4 model and this website were created by <a href=\"https:\/\/twitter.com\/simonbrown\" rel=\"noopener noreferrer nofollow\">Simon Brown<\/a><br \/>\u041f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441 \u0442\u0435\u043e\u0440\u0438\u0435\u0439 \u043f\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u0438, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b &#171;\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e&#8230;&#187;.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/t.me\/getanalysts\/934\" rel=\"noopener noreferrer nofollow\">\u0417\u043e\u043e-\u043c\u0430\u0433\u0430\u0437\u0438\u043d \u043e\u043d\u043b\u0430\u0439\u043d<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/getanalysts\/1232\" rel=\"noopener noreferrer nofollow\">\u041b\u043e\u0433\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441: \u043e\u0442 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 \u0434\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/a><\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 Habr \u0441 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438 \u0442\u0435\u043e\u0440\u0438\u0435\u0439.<br \/><a href=\"https:\/\/habr.com\/ru\/companies\/nspk\/articles\/679426\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u04214<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/strong><\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/miro.com\/app\/board\/uXjVMrOehiU=\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0445\u0435\u043c\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Miro<\/a> &#8212; \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0437\u043e\u043e\u043c\u0430\u0433\u0430\u0437\u0438\u043d<br \/>\u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0430 \u0410\u043d\u0430\u043d\u044c\u0435\u0432\u0430<br \/>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0445\u0435\u043c\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u04214, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Miro.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/medium.com\/software-architecture-foundations\/software-architecture-modeling-with-c4-model-e9e61d952121\" rel=\"noopener noreferrer nofollow\">C4 Model with PlantUML<\/a> (\u0430\u043d\u0433\u043b)<br \/>Huseyin Kutluca<br \/>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f PlantUML \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4. \u0412 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/structurizr\/examples\/tree\/main\/dsl\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/structurizr\/examples\/tree\/main\/dsl<\/a> <br \/>\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 <a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\">structurizr<\/a>, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b C4 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434.<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/778726\/\"> https:\/\/habr.com\/ru\/articles\/778726\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0431 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0445\u0435\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>C4,<\/p>\n<\/li>\n<li>\n<p>ArchiMate,<\/p>\n<\/li>\n<li>\n<p>SysML,<\/p>\n<\/li>\n<li>\n<p>4+1,<\/p>\n<\/li>\n<li>\n<p>AADL.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b C4<\/strong>. \u041c\u043e\u044f \u0446\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u043e\u0440\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b.\u00a0<\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0442\u0435\u0445, \u043a\u0442\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u0422\u0435\u043e\u0440\u0438\u044f \u043f\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4<\/h2>\n<p>\u041d\u043e\u0442\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f C4 \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0421\u0430\u0439\u043c\u043e\u043d\u043e\u043c \u0411\u0440\u0430\u0443\u043d\u043e\u043c. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<p>C4 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c. \u0421\u0430\u0439\u043c\u043e\u043d \u0411\u0440\u0430\u0443\u043d \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 2010-\u0445 \u0433\u043e\u0434\u043e\u0432 \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d.<\/p>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 &#171;C4&#187; \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<ul>\n<li>\n<p><strong>C<\/strong>ontext &#8212; \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442,\u00a0<\/p>\n<\/li>\n<li>\n<p><strong>C<\/strong>ontainers &#8212; \u041a\u043e\u043d\u0435\u0439\u043d\u0435\u0440\u044b,<\/p>\n<\/li>\n<li>\n<p><strong>C<\/strong>omponents &#8212; \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b,<\/p>\n<\/li>\n<li>\n<p><strong>C<\/strong>ode &#8212; \u041a\u043e\u0434.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 &#171;C&#187; \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<h2>\u0423\u0440\u043e\u0432\u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 C4 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445<\/h2>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u0442\u0430: <a href=\"https:\/\/miro.com\/app\/board\/uXjVMrOehiU=\/\" rel=\"noopener noreferrer nofollow\"><u>\u0441\u0445\u0435\u043c\u0430 C4 \u0432 Miro c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/u><\/a><\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0434\u0435\u043b\u0430\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0434\u0430 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 <a href=\"https:\/\/www.structurizr.com\/dsl\" rel=\"noopener noreferrer nofollow\">https:\/\/www.structurizr.com\/dsl<\/a>.<\/p>\n<h2>? Context<\/h2>\n<p>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 (\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438). \u0421\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: <br \/>&#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u044b, <br \/>&#8212; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, <br \/>&#8212; \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <br \/>\u0421\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 <\/em><a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"><em>GetDelivery<\/em><\/a><em> \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>Context &#8212; \u043a\u043e\u0434 \u0434\u043b\u044f https:\/\/www.structurizr.com\/dsl <\/summary>\n<div class=\"spoiler__content\">\n<pre><code> workspace {  model {     user = person \"\u041a\u043b\u0438\u0435\u043d\u0442\" \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 GetDelivery.\"     admin = person \"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\" \"\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c GetDelivery.\"      GetDelivery = softwareSystem \"GetDelivery\" \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\" {         webApp = container \"Web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Web Application\"         mobileAppiOS = container \"Mobile App iOS\" \"iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"iOS\"         mobileAppAndroid = container \"Mobile App Android\" \"Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Android\"         adminWebApp = container \"Web App Admin\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.\" \"Web Application\"         backend = container \"Backend\" \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443.\" \"Server-side Application\"         database = container \"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445\" \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0445, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0445 \u0438 \u0442.\u0434.\" \"Database\"         userDatabase = container \"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\" \"\u0425\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\" \"Database\"         reportStorage = container \"\u0424\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043e\u0442\u0447\u0435\u0442\u043e\u0432\" \"\u0425\u0440\u0430\u043d\u0438\u0442 PDF \u043e\u0442\u0447\u0435\u0442\u044b.\" \"File Storage\"         logicService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438\" \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\" \"Server-side Application\"         deliveryIntegrationService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438\" \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0421\u0414\u042d\u041a, \u0412\u043e\u0437\u043e\u0432\u043e\u0437, \u0414\u0435\u043b\u043e\u0432\u044b\u0435 \u041b\u0438\u043d\u0438\u0438.\" \"Server-side Application\"         authService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\" \"\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439.\" \"Server-side Application\"         reportService = container \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0442\u0447\u0435\u0442\u043e\u0432\" \"\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 PDF \u043e\u0442\u0447\u0435\u0442\u044b.\" \"Server-side Application\"     }      cdek = softwareSystem \"\u0421\u0414\u042d\u041a\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"     vozovoz = softwareSystem \"\u0412\u043e\u0437\u043e\u0432\u043e\u0437\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"     delovieLinii = softwareSystem \"\u0414\u0435\u043b\u043e\u0432\u044b\u0435 \u041b\u0438\u043d\u0438\u0438\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"      user -> webApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     user -> mobileAppiOS \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     user -> mobileAppAndroid \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     admin -> adminWebApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     webApp -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     mobileAppiOS -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     mobileAppAndroid -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     adminWebApp -> backend \"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\"     backend -> database \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> userDatabase \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> logicService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> deliveryIntegrationService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> authService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     backend -> reportService \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"     logicService -> reportStorage \"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0442\u0447\u0435\u0442\u044b\"     reportService -> reportStorage \"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0442\u0447\u0435\u0442\u044b\"     deliveryIntegrationService -> cdek \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\"     deliveryIntegrationService -> vozovoz \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\"     deliveryIntegrationService -> delovieLinii \"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\" }  views {     systemContext GetDelivery {         include *         autolayout lr     }      theme default } }<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\">\u0441\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0433\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 GetDelivery<\/a>.<\/p>\n<\/div>\n<\/details>\n<figure class=\"full-width\"><\/figure>\n<h3>? Container<\/h3>\n<p>\u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u0445\u043d\u0435\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0437\u043e\u043d \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: <br \/>&#8212; \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445), <br \/>&#8212; \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438, <br \/>&#8212; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u0421\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 <\/em><a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"><em>GetDelivery<\/em><\/a><em> \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c.<\/em><\/p>\n<details class=\"spoiler\">\n<summary>Container &#8212; \u043a\u043e\u0434 \u0434\u043b\u044f https:\/\/www.structurizr.com\/dsl <\/summary>\n<div class=\"spoiler__content\">\n<pre><code>workspace {      model {         user = person \"\u041a\u043b\u0438\u0435\u043d\u0442\" \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 GetDelivery.\"         admin = person \"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\" \"\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c GetDelivery.\"          GetDelivery = softwareSystem \"GetDelivery\" \"\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\" {             webApp = container \"Web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Web Application\"             mobileAppiOS = container \"Mobile App iOS\" \"iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"iOS\"             mobileAppAndroid = container \"Mobile App Android\" \"Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \"Android\"             adminWebApp = container \"Web App Admin\" \"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.\" \"Web Application\"             backend = container \"Backend\" \"\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.\" \"Server-side Application\"         }          cdek = softwareSystem \"\u0421\u0414\u042d\u041a\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"          vozovoz = softwareSystem \"\u0412\u043e\u0437\u043e\u0432\u043e\u0437\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"         delovieLinii = softwareSystem \"\u0414\u0435\u043b\u043e\u0432\u044b\u0435 \u041b\u0438\u043d\u0438\u0438\" \"\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438.\"          user -> webApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         user -> mobileAppiOS \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         user -> mobileAppAndroid \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         admin -> adminWebApp \"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\"         webApp -> backend \"API\"         mobileAppiOS -> backend \"API\"         mobileAppAndroid -> backend \"API\"         adminWebApp -> backend \"API\"         backend -> cdek \"HTTPS\/JSON\"         backend -> vozovoz \"HTTPS\/JSON\"         backend -> delovieLinii \"HTTPS\/JSON\"     }      views {         container GetDelivery {             include *             autolayout lr         }          theme default     } } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<figure class=\"full-width\"><\/figure>\n<h2>? Component<\/h2>\n<p>\u0414\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442.\u0435. \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p><strong>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b:<\/strong> <br \/>&#8212; \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, <br \/>&#8212; \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438,<br \/>&#8212; \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438,<br \/>&#8212; \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u0421\u0435\u0440\u0432\u0438\u0441-\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 <\/em><a href=\"https:\/\/t.me\/getanalysts\/1240\" rel=\"noopener noreferrer nofollow\"><em>GetDelivery<\/em><\/a><em> \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c.<\/em><\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 Draw.io<\/figcaption><\/div>\n<\/figure>\n<h4>\u041f\u0440\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Structurizr<\/h4>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0445\u043e\u0447\u0443 \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438, \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0439\u043d\u043e \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0432\u0441\u0451 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043a\u043e\u0434\u043e\u043c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b. <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b Component \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\/*  * This is a combined version of the following workspaces, with automatic layout enabled:  *  * - \"Big Bank plc - System Landscape\" (https:\/\/structurizr.com\/share\/28201\/)  * - \"Big Bank plc - Internet Banking System\" (https:\/\/structurizr.com\/share\/36141\/) *\/ workspace \"Big Bank plc\" \"This is an example workspace to illustrate the key features of Structurizr, via the DSL, based around a fictional online banking system.\" {      model {         customer = person \"Personal Banking Customer\" \"A customer of the bank, with personal bank accounts.\" \"Customer\"          group \"Big Bank plc\" {             supportStaff = person \"Customer Service Staff\" \"Customer service staff within the bank.\" \"Bank Staff\"             backoffice = person \"Back Office Staff\" \"Administration and support staff within the bank.\" \"Bank Staff\"              mainframe = softwaresystem \"Mainframe Banking System\" \"Stores all of the core banking information about customers, accounts, transactions, etc.\" \"Existing System\"             email = softwaresystem \"E-mail System\" \"The internal Microsoft Exchange e-mail system.\" \"Existing System\"             atm = softwaresystem \"ATM\" \"Allows customers to withdraw cash.\" \"Existing System\"              internetBankingSystem = softwaresystem \"Internet Banking System\" \"Allows customers to view information about their bank accounts, and make payments.\" {                 singlePageApplication = container \"Single-Page Application\" \"Provides all of the Internet banking functionality to customers via their web browser.\" \"JavaScript and Angular\" \"Web Browser\"                 mobileApp = container \"Mobile App\" \"Provides a limited subset of the Internet banking functionality to customers via their mobile device.\" \"Xamarin\" \"Mobile App\"                 webApplication = container \"Web Application\" \"Delivers the static content and the Internet banking single page application.\" \"Java and Spring MVC\"                 apiApplication = container \"API Application\" \"Provides Internet banking functionality via a JSON\/HTTPS API.\" \"Java and Spring MVC\" {                     signinController = component \"Sign In Controller\" \"Allows users to sign in to the Internet Banking System.\" \"Spring MVC Rest Controller\"                     accountsSummaryController = component<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-362165","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/362165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=362165"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/362165\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=362165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=362165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=362165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}