{"id":15922,"date":"2023-03-09T11:19:34","date_gmt":"2023-03-09T10:19:34","guid":{"rendered":"https:\/\/raf.edu.rs\/en\/?p=15922"},"modified":"2023-06-05T20:06:37","modified_gmt":"2023-06-05T19:06:37","slug":"systems-programming","status":"publish","type":"post","link":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/","title":{"rendered":"Systems Programming"},"content":{"rendered":"\n<p>Objectives and outcomes<br>Students acquire a basic theoretical knowledge, they master techniques and tools for large-scale systems. Upon completion of the course, students can identify and use software patterns for the development of complex software applications. They can choose and apply the most suitable platform for a specific task, model the architecture and decompose the system. They can implement parts in the form of software components. Furthermore, if necessary, they apply service-oriented and microservice architecture.<br><\/p>\n\n\n\n<p>Lectures<br>Categories and catalogs of software patterns and anti-patterns. Separating specification from implementation. Adherence to SOLID principles and application of design patterns in component-based development. Standards of modular system development<br>for the Java platform &#8211; OSGi and Jigsaw. Software licenses and versions. Service-oriented architecture and web services. Technologies and standards for the implementation of web services &#8211; SOAP and REST. Conceptual service design: defining service domains, determining atomic services, creating composite services. The development of logical services. Converting design to specifications: operation specification, service contract specification, message specification. The use of microservices. Development of applications based on the 12-factor app methodology. Comparison of microservices, service-oriented architectures and monolithic application<br>architectures. Different implementations of microservices &#8211; data-driven architectures, event-driven programming. A distributed database management system. Log aggregation in microservices and understanding them. The security of microservices-<br>based applications. The use of microservices in IoT applications. <\/p>\n\n\n\n<p>Practical classes <br>Patterns and anti-patterns in programming large-scale systems. An example of a software component that uses other components and its extension with additional functionality. Using build tools for Java &#8211; Apache Ant, Apache Maven and Gradle. Creating a component with a separate specification. HTTP protocol and REST architecture. The implementation of a microservice application using Spring Boot technology. Working with relational and non-relational databases in microservice architecture. The use of Hiberante ORM tool for data persistence in relational database. Communication between microservices and using the messaging system. Isolating applications into Docker containers (writing Dockerfile, Docker image registry), container orchestration, microservice application scaling.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objectives and outcomesStudents acquire a basic theoretical knowledge, they master techniques and tools for large-scale systems. Upon completion of the course, students can identify and use software patterns for the development of complex software applications. &#8230; <a title=\"Systems Programming\" class=\"read-more\" href=\"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/\" aria-label=\"More on Systems Programming\">Read more<\/a><\/p>\n <a href=\"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/\" class=\"more-link\" title=\"Read more\">Read more<\/a>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[199],"tags":[],"class_list":["post-15922","post","type-post","status-publish","format-standard","hentry","category-subjects"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Systems Programming - School of Computing<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Systems Programming - School of Computing\" \/>\n<meta property=\"og:description\" content=\"Objectives and outcomesStudents acquire a basic theoretical knowledge, they master techniques and tools for large-scale systems. Upon completion of the course, students can identify and use software patterns for the development of complex software applications. ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/\" \/>\n<meta property=\"og:site_name\" content=\"School of Computing\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-09T10:19:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-05T19:06:37+00:00\" \/>\n<meta name=\"author\" content=\"RAF Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"RAF Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/\"},\"author\":{\"name\":\"RAF Admin\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/person\\\/4e2166c781f2802c67414a1578c66a43\"},\"headline\":\"Systems Programming\",\"datePublished\":\"2023-03-09T10:19:34+00:00\",\"dateModified\":\"2023-06-05T19:06:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/\"},\"wordCount\":319,\"publisher\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#organization\"},\"articleSection\":[\"Subjects\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/\",\"name\":\"Systems Programming - School of Computing\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#website\"},\"datePublished\":\"2023-03-09T10:19:34+00:00\",\"dateModified\":\"2023-06-05T19:06:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/systems-programming\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Homepage\",\"item\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Subjects\",\"item\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Systems Programming\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/\",\"name\":\"School of Computing\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#organization\",\"name\":\"School of Computing\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/cropped-raf-engleski.png\",\"contentUrl\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/cropped-raf-engleski.png\",\"width\":400,\"height\":66,\"caption\":\"School of Computing\"},\"image\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/person\\\/4e2166c781f2802c67414a1578c66a43\",\"name\":\"RAF Admin\",\"sameAs\":[\"https:\\\/\\\/raf.app\"],\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/author\\\/rafadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Systems Programming - School of Computing","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/","og_locale":"en_US","og_type":"article","og_title":"Systems Programming - School of Computing","og_description":"Objectives and outcomesStudents acquire a basic theoretical knowledge, they master techniques and tools for large-scale systems. Upon completion of the course, students can identify and use software patterns for the development of complex software applications. ... Read more","og_url":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/","og_site_name":"School of Computing","article_published_time":"2023-03-09T10:19:34+00:00","article_modified_time":"2023-06-05T19:06:37+00:00","author":"RAF Admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"RAF Admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/#article","isPartOf":{"@id":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/"},"author":{"name":"RAF Admin","@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/person\/4e2166c781f2802c67414a1578c66a43"},"headline":"Systems Programming","datePublished":"2023-03-09T10:19:34+00:00","dateModified":"2023-06-05T19:06:37+00:00","mainEntityOfPage":{"@id":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/"},"wordCount":319,"publisher":{"@id":"https:\/\/raf.edu.rs\/en\/#organization"},"articleSection":["Subjects"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/","url":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/","name":"Systems Programming - School of Computing","isPartOf":{"@id":"https:\/\/raf.edu.rs\/en\/#website"},"datePublished":"2023-03-09T10:19:34+00:00","dateModified":"2023-06-05T19:06:37+00:00","breadcrumb":{"@id":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/raf.edu.rs\/en\/subjects\/systems-programming\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Homepage","item":"https:\/\/raf.edu.rs\/en\/"},{"@type":"ListItem","position":2,"name":"Subjects","item":"https:\/\/raf.edu.rs\/en\/subjects\/"},{"@type":"ListItem","position":3,"name":"Systems Programming"}]},{"@type":"WebSite","@id":"https:\/\/raf.edu.rs\/en\/#website","url":"https:\/\/raf.edu.rs\/en\/","name":"School of Computing","description":"","publisher":{"@id":"https:\/\/raf.edu.rs\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/raf.edu.rs\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/raf.edu.rs\/en\/#organization","name":"School of Computing","url":"https:\/\/raf.edu.rs\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/logo\/image\/","url":"https:\/\/raf.edu.rs\/en\/wp-content\/uploads\/2023\/02\/cropped-raf-engleski.png","contentUrl":"https:\/\/raf.edu.rs\/en\/wp-content\/uploads\/2023\/02\/cropped-raf-engleski.png","width":400,"height":66,"caption":"School of Computing"},"image":{"@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/person\/4e2166c781f2802c67414a1578c66a43","name":"RAF Admin","sameAs":["https:\/\/raf.app"],"url":"https:\/\/raf.edu.rs\/en\/author\/rafadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts\/15922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/comments?post=15922"}],"version-history":[{"count":2,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts\/15922\/revisions"}],"predecessor-version":[{"id":17165,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts\/15922\/revisions\/17165"}],"wp:attachment":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/media?parent=15922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/categories?post=15922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/tags?post=15922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}