460-2075/01 – Software Project Management (SSP)
Gurantor department | Department of Computer Science | Credits | 3 |
Subject guarantor | Ing. Jan Kožusznik, Ph.D. | Subject version guarantor | Ing. Jan Kožusznik, Ph.D. |
Study level | undergraduate or graduate | Requirement | Optional |
Year | 2 | Semester | summer |
| | Study language | Czech |
Year of introduction | 2021/2022 | Year of cancellation | |
Intended for the faculties | FEI | Intended for study types | Bachelor |
Subject aims expressed by acquired skills and competences
The aim of this course is to acquaint students with the basic techniques and technologies used in the field of "Configuration Management". Students will gain knowledge of basic concepts and techniques used for source code management. Furthermore, students will get acquainted with techniques for build, build management, environment configuration, change management and documentation.
Within the course, they will practically encounter tools that are used for the mentioned areas of configuration management such as Git, Maven, Jenkins, Docker, Gitlab, Github or Vagrant.
After completing the course, students will be able to share code with other developers using the Git repository, create changes in independent branches, project changes to the main development branch and resolve simple conflicts. Students will be able to build software in a unified way using the Maven tool and ensure easy software deployment using the Jenkins tool. They will also be able to run the software in a unified environment through the Docker container. Students will also be able to use Github / Gitlat tools for project management needs. Skills will also include the ability to create project documentation using the Markdown markup language and then create its HTML representation.
Teaching methods
Lectures
Individual consultations
Tutorials
Project work
Other activities
Teaching by an expert (lecture or tutorial)
Summary
Tento předmět představuje úvod do problematiky konfiguračního managementu, který je důležitý při správě softwarových projektů. Obsah předmětu se především zaměřuje na správu zdrojového kódu, tvorbu sestavení (build), správu vydání (release), konfigurace, prostředí, řízení změn a dokumentaci projektu. V závěru se studenti seznámí s principy DevOps. Tato sada praktik umožňuje řízení a zkrácení vývojového cyklu s návazností na provoz výsledného softwarového produktu.
Compulsory literature:
Recommended literature:
Way of continuous check of knowledge in the course of semester
E-learning
Other requirements
Complete the following tasks:
Required:
Credit tests focused on:
• source code management;
• CI, project management using Gitlab / Github, documentation using Markdown language;
• Environment management - Docker, Vagrant.
Optional:
• Homework.
Prerequisities
Subject has no prerequisities.
Co-requisities
Subject has no co-requisities.
Subject syllabus:
Contents of lectures:
• Basics of source code management and working with Git.
• Build engineering and use of the Maven tool.
• CI using Jenkins / Gitlab,
• Project management using Github / Gitlab.
• Markdown language Markdown and creation of HTML documentation.
• Manage your environment with Docker and Vagrant.
• DevOps principles.
Exercises are based on the main topics of the subject in the computer room: trying out the various principles and technologies. The goal is to acquire the following student skills: version the source code, compile, deploy, create a unified runtime environment, etc.
Exercise content:
The aim of the exercise is to demonstrate on practical examples the issues presented in lectures, the student will try the various principles and technologies, creating a Git repository and downloading it, creating a branch, projecting changes to the repository, publishing a repository, building, creating a runtime environment.
Exercise schedule:
• Introduction to source code versioning. Working with Git - Creating, downloading and publishing a Git repository. Writing changes to the repository - commit, switching between commits, push, pull, .gitignore. Upload your changes to a remote repository and update from the server.
• Independent branches - creation, switching, publishing, synchronization with a remote server. Merge, rebase, conflict resolution. File recovery from repository - checkout, reset.
• Build software, dependency management.
• Continuous Integration (CI) - Jenkins tool.
• Use of Gitlab / Github: work with repositories, SW project management, work with tickets,
• Work with integration requirements (Merge request / Pull request) and CI in Gitlab.
• Creating documentation using the Markdown language. Tools for creating HTML from Markdown documents. Pages using Gitlab / Github.
• Securing the runtime with Docker: Launching containers and managing them - list, stop, start, run.
• Mapping of external dependencies to the Docker container - directories, files, TCP / IP ports.
• Parameterization of virtualization using Vagrant and VirtualBox of the virtualization environment.
Conditions for subject completion
Occurrence in study plans
Occurrence in special blocks
Assessment of instruction