• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Research Seminar "Software Engineering: Development Management"-1

2021/2022
Academic Year
ENG
Instruction in English
5
ECTS credits
Course type:
Compulsory course
When:
1 year, 1-4 module

Instructors


Иванин Никита Ильич

Course Syllabus

Abstract

Modules 1 and 2 of the research seminar "Software Engineering: Development Management" are aimed at studying the features of software development automation practices and culture. While mastering the course program, students will gain understanding of the basic industrial development tools and basic devops practices. In addition to theoretical knowledge, students will receive practical tasks that will help to form the skills of applying and implementing a modern technology stack. During the course, we will get acquainted with the culture of DevOps, rehearsing each stage of software development and automation by mastering the practices and used tools. Modules 3 and 4 are focused on getting to know the area of process mining through the lens of discussing research papers. Modern information systems accumulate significant amounts of event data, which include, for instance, transaction logs, message logs and different records of user activity. These data are commonly referred to as event logs consisting of ordered event sequences called traces. Event logs are used in process mining to discover models of real processes. The expected behavior of an information system is usually specified at the beginning stages of the life cycle. Discovering the real behavior of processes from event logs is an important problem, since manually created models do not reflect changes made during the operation period of an information system. A wide range of algorithms for the automated discovery of process models have been proposed over recent years. The behavior of processes can be represented in various notations, including different classes of Petri nets, heuristic and causal nets, or Business Process Model and Notation (BPMN). The quality of process discovery algorithms is determined by the quality of discovered process models. Conformance checking is another important part of process mining. Conformance checking offers quality dimensions, which measure the correspondents between an event log (observed behavior) and a process model as well as the complexity of discovered models. Data acquired during conformance checking form the basis for the further enhancement and the reliability improvement of processes, occurring in information systems. Students will familiarize themselves with the fundamental principles and key application areas of process discovery, conformance checking and process enhancement by presenting and reviewing reports based on conference and journal papers.
Learning Objectives

Learning Objectives

  • To understand the main principles of DevOps
  • To learn the fundamental principles of process mining and its main components: process discovery, conformance checking and enhancement
  • To study process mining algorithms and approaches
  • To gain practical experience in the critical discussion of scientific papers
Expected Learning Outcomes

Expected Learning Outcomes

  • To gain the experience of making reports covering the main contributions of research articles.
  • To gain the experience of reviewing and analyzing reports made by others.
  • To know the basic principles of process discovery, conformance checking and process mining constituting the area process mining.
  • To know the most wide-spread algorithms, which support the automated process discovery.
  • To learn how to configure container-based clusters
  • To learn how to configure continuous integration pipeline
  • To learn how to configure development environment for employees in project
  • To learn how to configure infrastructure using cloud providers from source code
  • To learn how to create and maintain project workflow with the help of CMS
  • To learn how to virtualize and distribute programs via containerization
  • To learn the most wide-spread algorithms, which support the automated check of the conformance between a discovered process model and an event log.
  • To understand how to reduce time to mitigate software engineering failures
  • To understand how to release software product
Course Contents

Course Contents

  • DevOps principles. DevOps vs devops. Three ways of devops. CAMS model.
  • Version Control Systems. Git vs SVN: brief explanation. Creating Git repositories. Git commits, branches, HEAD. Commands for git branching. Merge options in Git. Git rebase and squashing. Git Workflows.
  • Bash. Common bash commands. .bashrc, .bash_history. Input/output redirection. Executing commands in the background. Man. Bash scripts.
  • Development Environments as prerequisites for development. Advantages of configuration for Development Environment.
  • Configuration Management Systems: usage with Vagrant. Use cases for CMS. Main concepts of CMS. Push/pull types of CMS. Popular examples of CMS with categorization.
  • Docker. Images and containers. Common docker commands. Dockerfiles. Networking in docker.
  • Docker-compose. Multiple docker containers orchestration.
  • Continuous integration vs continuous delivery vs continuous deployment. Principles of continuous integration
  • Monitoring: principle and strategy. Monitoring functionalities. Popular monitoring tools and their functionalities. Metrics: definitions, ways to get, categories in monitoring systems. Prometheus vs Graphite. Selenium as a tool for scraping metrics.
  • Provisioning tools: differences with CMS. Popular combinations of provisioning tools and CMS: pros and cons. Terraform as a provisioning tool: main concepts, instance creation, network configurations.
  • Testing: goals, psychology and seven principles. Testing pyramide: unit testing, integration testing, system testing and acceptance testing - goals, basis, objects and typical defects.
  • Testing: verification vs validation. Test Driven Development. Static vs dynamic testing: tools and principles.
  • Kubernetes: minikube, pods, deployments, services
  • Continuous Deployment Pipelines: Concourse vs Jenkins vs Gitlab CI
  • MLOps: differences from original development pipelines. Stages of ML pipelines.
  • Process Mining: Essentials
  • Process Mining in Software Engineering
Assessment Elements

Assessment Elements

  • non-blocking Assignment_1
    Reproduce Git Workflow. Solve problems with invalid project flow. After Seminar 2
  • non-blocking Assignment_2
    Create bash scripts for data and OS analysis. After seminar 3
  • non-blocking Assignment_3
    Create development environment with multiple servers. After seminar 5.
  • non-blocking Assignment_4
    Migrate legacy project to docker-compose. After seminar 7
  • non-blocking Assignment_5
    Configure CI and deployment for cloud infrastructure. After seminar 10
  • non-blocking Assignment_6
    Build simple pipeline with Kubernetes. After seminar 13
  • non-blocking Exam
    Written exam based on seminar materials
  • non-blocking O_report
  • non-blocking O_review
Interim Assessment

Interim Assessment

  • 2021/2022 2nd module
    Grade = MIN(ROUND(assignments + 0.3 * exam + bonus), 10), where: ● assignments - sum of grades for all assignments (from 0 to 6; every assignment is evaluate from 0 to 1 points) ● exam - grade for written exam (from 0 to 10) ● bonus - grade for additional tasks and activity in classes (from 0 to 10)
  • 2021/2022 4th module
    The final mark for the research seminar Ofinal is evaluated by the following formula: Ofinal = 0,5 * Oterm1 + 0,5 * Oterm2, where Oterm1 is the mark for the first part of the research seminar, and Oterm2 = Katt * (0,6 * Oreport + 0,4 * Oreport + Oextra), where (1) Oreport and Oreview evaluate presentations and reviews during the seminars; (2) Oextra assesses the amount of extra work as a speaker/reviewer; additional experiments with software tools; analysis of the practical application, further works on the topic; active participation in the discussion (especially, without being a «compulsory» reviewer), and (3) Katt depends on the number of attended classes, i.e., Katt = MIN(# of attended classes / # of all classes - 2; 1). At most, two classes can be skipped without influencing the mark Oterm2.
Bibliography

Bibliography

Recommended Core Bibliography

  • Aalst, W. van der. (2016). Process Mining : Data Science in Action (Vol. Second edition). Heidelberg: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1203872
  • Chacon, S., & Straub, B. (2014). Pro Git: Vol. Second edition. Apress.
  • Gene Kim, Jez Humble, Patrick Debois, & John Willis. (2016). The DevOps Handbook : How to Create World-Class Agility, Reliability, and Security in Technology Organizations. IT Revolution Press.
  • Gigi Sayfan. (2017). Mastering Kubernetes. Packt Publishing.
  • Humble, J., & Farley, D. (2011). Continuous Delivery : Reliable Software Releases Through Build, Test, and Deployment Automation. Upper Saddle River, NJ: Addison-Wesley Professional. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1599336
  • Josep Carmona, Boudewijn van Dongen, Andreas Solti, & Matthias Weidlich. (2018). Conformance Checking : Relating Processes and Models (Vol. 1st ed. 2018). Springer.
  • Yevgeniy Brikman. (2019). Terraform: Up & Running : Writing Infrastructure As Code: Vol. Second edition. O’Reilly Media.

Recommended Additional Bibliography

  • Gene Kim, Kevin Behr, & George Spafford. (2018). The Phoenix Project : A Novel About IT, DevOps, and Helping Your Business Win. IT Revolution Press.
  • Hochstein, L., & Moser, R. (2017). Ansible: Up and Running : Automating Configuration Management and Deployment the Easy Way: Vol. 2nd ed. Reilly - O’Reilly Media.
  • Newham, C., & Rosenblatt, B. (2005). Learning the Bash Shell : Unix Shell Programming: Vol. 3rd ed. O’Reilly Media.