Representatives from industry, administration and academia present various topics for software engineering projects that are relevant in a practical or research context. They provide necessary information about the application domain, inform about special requirements or constraints for the expected project outcome and outline the desired project goals.
Participants organize themselves into teams and work on a project as a team. Following the usual meetings in software development projects, you report regularly on the progress of the project as well as any problems that arise.
Projects
Web and cloud native development
Introduction
Together with the students, we, Appsfactory GmbH, would like to develop an employee skills analysis tool based on data from Personio[1].
Skills management is important for software development companies, such as Appsfactory GmbH, for analyzing the employees' skills and for staffing software projects for the best outcome. Usually, skills management is related to HR software. There are established HR software solutions available on the market, such as SaaS-solutions[2] like BambooHR[3], Cornerstone HR[4], Personio[5], Sage HR[6], and more. However, there are also providers of SaaS solutions that are specifically used for skills management, such as Skills Base[7].
Appsfactory GmbH currently uses Personio as its HR software and was using Skills Base for skills management as well. Due to the lack of integration between Personio and Skills Base, Appsfactory GmbH decided to use Personio only from summer 2022 and shut down Skills Base. All collected skill information was integrated as employee parameters into Personio. This way, all information about skills can be seen and adjusted for each employee. However, in contrast to Skills Base, Personio lacks extensive querying regarding skills and other parameters. For example, looking for engineers with more than 3 years of experience, a professional level greater than L3[8] with AWS and Firebase knowledge, as well as a SCRUM certification, is not possible out of the box.
This project, the Employee Skills Analysis Tool, will overcome this issue. Based on the data from the Personio API, the Employee Skills Analysis Tool provides a user interface for showing, analyzing, and comparing employee skills. This tool will be used for staffing the right people on the right project and will help Appsfactory GmbH and its employees drive success and employee satisfaction even more.
Goal
As a result, the Employee Skills Analysis Tool provides a responsive web-based cloud native application that, in turn, provide skills analysis functionality based on the following Personio parameters:
- Platform, i.e. the department and employee is working in, such as Design, Android, iOS, Flutter, Fullstack .NET, Fullstack Java, Fullstack Java Script and Quality Assurance
- Years of experience, i.e. years of professional experience in the field an employee is working currently
- Professional Level, i.e. between L1 for junior level and L5 for senior level
- English or German Language Qualifications, i.e. between A1 and C2 (cf. CEFR levels[9])
- Skills like Design, Engineering and Quality Assurance Skills
- Certificates, such as ISTQB, SCRUM, Microsoft Certified Azure Developer, and more
- and possibly more
Analysis means querying parameters, filtering results, and comparing skill parameters. Results can be shown as lists, tables, matrices, or charts. Before implementation, there will be requirements, concept, and design workshops that result in backlog user stories and design prototypes.
The application is based on Personio data. The application gathers data from the Personio API[10] periodically and caches them for performance purposes. Furthermore, the application should provide login with role-based access where different responsible persons, such as C-Level, Head of Business Unit, Product Team Lead, Tech Leads, HR staff, and more, have customized views of relevant data only.
The entire product development process from conception to delivery is mapped. We organize the project with SCRUM. For this purpose, planning and review meetings, as well as retrospectives with the students, are scheduled. The students also have the opportunity to meet daily to vote on a daily basis. We provide appropriate video conferencing software (Google Meet) and instant messaging (Slack) for this.
Prerequisites and Requirements
The students should have an affinity for web and cloud technology and a affinity for data-driven web analysis interfaces. Knowledge of the programming languages JavaScript, CSS, and HTML5 is a prerequisite for development. Basic knowledge of web frameworks such as Angular, React, or VueJS would be an advantage. Additionally, basic knowledge of software design patterns is useful for better understanding the frameworks themselves. Basic knowledge of programming languages such as C#, Python, or TypeScript is advantageous. Moreover, basic knowledge of cloud technologies such as Amazon Web Service (AWS), Microsoft Azure, or Google Cloud Platform (GCP), as well as serverless computing and cloud storage, are beneficial but not a prerequisite. An interest in enterprise DevOps processes, including pipelines, source code version control, static code analysis, and checkmarks, should be present, but knowledge of these is not a prerequisite. Lastly, students should be interested in the challenges of a software company with over 300 employees, such as Appsfactory GmbH, when it comes to HR software and the analysis of employee skill data.
Technologies
The project includes various web and cloud-native technologies. The programming technology for web-frontend is HTML/JavaScript/CSS based on VueJS. Further, students can choose between .NET 6 and TypeScript for backend logic in negotiation with Fullstack JavaScript Tech Leads from Appsfactory GmbH. The application will be hosted on Microsoft Azure. Data is provided via API from Personio API.
Name | Module | Description |
VueJS | Web interface | Vue.js is a client-side JavaScript web framework for building web applications according to the MVVM pattern. |
Vuetify | Web interface | Vuetify is a Vue UI Library with Material Design Components. |
.NET 6 or TypeScript | Business Logic | Programming language to choose in consultation with Fullstack JavaScript Tech Leads for business logic for gathering data, caching/storage and providing data to web-frontend |
Microsoft Azure | Cloud technology | Cloud provider for hosting the application |
Azure Dev Ops
| Continuous Integration
| Azure DevOps provides version control, pipelines, automated builds, testing and release management capabilities. |
Personio | Data API | SaaS-Solution for HR purposes |
We will work according to the agile method "SCRUM". This means that we plan so-called sprints with different tasks in regular appointments and then look together to see how well or badly the implementation went. The duration of a sprint is negotiable, but 2 weeks are recommended. Our contacts support you in adhering to the SCRUM guidelines.
The following SCRUM components are used in the project:
Component | Description |
Sprint
| Fixed period in which a certain selection of tasks is implemented. |
Backlog Refinement | Refinements of requirements for product backlog. |
Sprint Planning | Requirements and tasks are discussed, estimated and planned for sprint backlog. |
Daily | Daily meeting for students for progress, open questions or problems. |
Sprint Review | Joint appointment to present the completed tasks. |
Retrospective | Review of past sprints and a joint appointment to improve implementation and organization. |
The requirements are discussed and planned in refinements and joint planning meetings. The students organize themselves during a sprint, e.g. through regular coordination meetings (daily). In a task and planning software like Atlassian Jira, the progress of the tasks is documented and evaluated. Atlassian Confluence supports for documentation and meeting protocol purposes
The version management Git helps the students to develop together on the project. With the help of code reviews (pull requests), the students independently ensure high code quality and learn from each other at the same time.
In Azure Dev Ops (Continuous Integration Cloud Solution), the software versions are automatically checked for quality (linting), tested and built. Developers themselves have to ensure that the software is always executable. A deliverable software status should be achieved at the end of each sprint.
Step | Description |
Backlog | Unplanned task that has to be discussed and scheduled in the planning appointment |
Open | Planned and estimated tasks in the active sprint |
In progress | Tasks that are currently being implemented |
Review | Completed tasks that need to be checked again |
Finished | Fully completed and reviewed tasks |
Project milestones
The following milestones should be planned and implemented with the students:
- Concept and design of the user interface
- Requirements backlog in terms of EPICs and User Stories
- Customization of HR-Software Personio for relevant parameters
- Generate sample data via Personio API
- Feature development
- Querying employees regarding skill parameters
- Filtering and sorting employees regarding skill parameters
- Analyzing employees skills, via chart, as a matrix or table
- Compare employee skills over Business Units via matrix view
- Identity and role-based access management
- Settings and admin interface
The exact requirements are worked out together with the students.
Location / Where to work
Our office is located in downtown Leipzig. The project itself can be carried out completely remotely. We offer software such as Google Meet and Slack for communication free of charge. For mutual coordination Appsfactory GmbH will be happy to provide the appropriate premises for sprint planning, backlog refinement or sprint review appointments.
Contact Person
For the entire duration of the project, we provide the following contact persons for both students and lecturers:
Product owner (PO) and project manager: Dr. Rolf Kluge, CTO (rolf.kluge(at)appsfactory.de) and Isabel Divivier, Head of Talent and Culture (isabel.divivier(at)appsfactory.de)
Our developers will be happy to answer any technical questions you may have about implementation: Denis Moroz (denis.moroz(at)appsfactory.de) and/or Waldemar Barbe (waldemar.barbe(at)appsfactory.de)
For coordination of remote and on-site appointments Anja Zech-Bohm (anja.zech-bohm(at)appsfactory.de) support.
Misc
- Work equipment like notebooks can be provided on site or can be borrowed. However, it is assumed that students may use their own notebook. If there is proper equipment needed, Appsfactory GmbH will take care.
- Work equipment in terms of software and cloud tools, i.e Personio SaaS-Solutions, Microsoft Azure, Azure DevOps, Atlassian, Google Meet, Slack and more, is provided by Appsfactory GmbH.
- Remote work is guaranteed via online access to all tools needed.
- Rooms in our office can be used with prior registration.
- The project is not subject to confidentiality.
- In terms of copyright, the source code written by the students as part of the project remains with Appsfactory GmbH.
Resources
[1] https://developer.personio.de/reference/introduction
[2] Software as a Service https://en.wikipedia.org/wiki/Software_as_a_service
[4] https://www.cornerstoneondemand.com/
[6] https://www.sage.com/de-de/hr-software/
[7] https://www.skills-base.com/
[8] where L1 can be considered as junior level and L5 as senior level
Implementation of a VSCode Plugin for the deployment of Eclipse Velocitas-based Automotive Apps
Introduction
A modern car contains more than 200 million lines of code, and this number keeps rising steadily. In more and more vehicles, this code runs on powerful vehicle computers instead of many distributed embedded control units. With this shift to more computational power, in addition to increased connectivity and faster innovation cycles, value creation for a vehicle more and more moves towards software. Today, these systems are, in many cases, still developed in silos by each car manufacturer or its suppliers in-house. However, maintaining and integrating hundreds of millions of lines of code in separate silos for separate product lines and domains is neither time- nor cost-effective.
To address this topic, the Eclipse Software Defined Vehicle Working Group (SDV WG) was formed. Its mission is to provide a forum for individuals and organizations to build and promote open-source software, specifications, and open collaboration models needed to create a scalable, modular, extensible, industry-ready open-source licensed vehicle software platform to support in-vehicle and around the vehicle applications development and deployment.
One project of the SDV WG is the project Eclipse Velocitas™ [1], which provides an end-to-end, scalable, and modular development toolchain to create containerized in-vehicle applications (Vehicle Apps) that offer a comfortable, fast, and efficient development experience to increase the velocity of a development team.
A Vehicle App realizes software-based functionality on the car. Examples could be driver monitoring, which uses vehicle data to assess whether the driver is still focusing on the control of the vehicle and giving feedback if this is not the case. Another example is a driver seat adjuster, which is a nice example already published on the Eclipse Velocitas project page [3]. This app collects the seat configuration and stores it in the cloud for shared use in different vehicles.
Together with the students, the project team of Eclipse Velocitas would like to provide a deployment plugin in VSCode to ease the step of bringing Velocitas-based automotive apps to a hardware platform (e.g., NVIDIA Jetson Nano or Raspberry Pi in possible conjunction with Eclipse Kuksa Canopi).
The work will happen on the actual Open Source Project Eclipse Velocitas and organized as an agile team effort on the students' side who interact with the open-source projects via public pull requests and issue tracker.
We plan to map the entire product development process from conception to delivery and expect that a student team organizes its work by using the SCRUM framework. The Eclipse SDV WG team provides a member who will act as the Product Owner with whom the student team interacts regularly. For this purpose, the student team organizes the planning and review meetings, as well as retrospectives. The students also can decide whether to meet in a "Daily" to report on impediments and the tasks ahead.
The Eclipse Velocitas project provides infrastructure for development and building. The code is hosted on the GitHub organization of the Eclipse Foundation [1], video conferencing solutions for project meetings can be provided.
Goal
Goal of the project is an implementation of a VSCode plugin for deploying Velocitas-based automotive apps to hardware platforms. To demonstrate the functionality the NVIDIA Jetson Nano appears to be a good platform, which can be provided during the course of the project.
NVIDIA Jetson Nano [2]
Prerequisites and Requirements
The envisioned next-gen automotive apps are container-based. Thus, a basic understanding of Linux and container technology should be available.
The already existing code base of Eclipse Velocitas can be checked on GitHub. To setup, run and configure Velocitas an understanding of the VSCode IDE, the development container concept and Kubernetes is beneficial too.
Technologies
The dominant programming language for VSCode plugins is TypeScript. However, some examples of Velocitas Apps are programmed in Python so at least the possibility of reading this programming language is beneficial. The whole stack required can be checked out on the project page of Eclipse Velocitas.
Name | Link | Description |
Eclipse Velocitas | Toolchain for creating containerized in-vehicle applications | |
containerd | Container Runtime | |
Kubernetes | Framework for Container Orchestration | |
GitHub | Hosting Platform for Git repositories. Depending on interest we could make use of further GitHub features like GitHub Actions. | |
VSCode | IDE and target platform | |
VSCode Plugins | Plugin Concept of VSCode | |
NVIDIA® Jetson™ Linux | Target OS for demo deployments; required to get container runtime running | |
Eclipse Kanto | Edge Container Management Platform |
Project organization
The project should use SCRUM as agile framework and adjust it to the concrete circumstances of the task and project team at hand.
Project milestones
The following milestones should be planned and implemented with the students:
- Setup test environment for Eclipse Velocitas
- Setup manual deployment to hardware platform
- Setup VSCode plugin skeleton
- Implement deployment functionality in VSCode plugin
- Conceptualize and implement Demo for deployment functionality
The exact requirements are worked out together with the students.
Location / Where to work
IInherent to an Open Source project is its distributed nature. So, the project itself is carried out remotely. The team can decide on communication channels. If required, the project contact person can arrange a video conferencing solution for the meetings. The student team and contact person may also arrange face-to-face meetings if it is needed. The contact person is located in Berlin. If the meetings are in Leipzig, appropriate rooms at Leipzig University need to be organized. Otherwise, the contact person can arrange a meeting space in Berlin.
Misc
- The students are required to provide their own development equipment
- The project is not subject to confidentiality
- Code hosting and CI environment is provided via Eclipse Foundation
- It is assumed that the code developed by the students will be published as open source in the Eclipse Kuksa project which is under the terms of the Eclipse Public License 2.0. To contribute to any Eclipse project, developers need to register at eclipse.org and fill out and ECA (Eclipse Contributor Agreement).
Resources
[1] https://projects.eclipse.org/projects/automotive.velocitas
[2] https://www.waveshare.com/jetracer-ai-kit.htm
[3] websites.eclipseprojects.io/velocitas/docs/about/use_cases/seat_adjuster/
OpenAPI Scanner Plugin for jQAssistant
About BUSCHMAIS GbR
BUSCHMAIS – we are an IT consulting company located in Dresden/Germany. Our home is the world of Java including its rich eco-system and we enjoy working with modern and proven technologies (e.g. Java, Spring Boot, React, Python, Neo4j, etc.). From the very beginning until today we have been strongly engaged in research cooperations with universities and communities like Java User Group Saxony (JUG Saxony).
Our focus lies on strategic, goal-oriented and sustainable development of business applications with a focus on quality assurance. We are the heads behind the Open Source software analytics tool jQAssistant and beside its development we provide services around it like workshops, consulting and trainings.
A selection of our customers includes organizations from the public sector like ITZBund or Sächsische Aufbaubank-Förderbank as well as international companies like ASML, GlobalFoundries, Thyssenkrupp Steel, Deutsche Telekom and COOP Schweiz.
Introduction
jQAssistant is a highly flexible and scalable Open Source tool for software analysis, validation and documentation. It allows importing structural information from Java-based software systems and related technologies into a graph database (Neo4j). The data is imported by scanners provided by plugins and can be used for various scenarios, e.g. automated validation of system architecture, continuous visualization of code structures or metrics to identify critical parts (hotspots) or performing analysis to estimate efforts and risks for planned refactorings.
With the increasing popularity of Microservices it becomes more and more important to not only analyze the structure of single, isolated services but of whole landscapes of distributed services including their interactions over communication channels, e.g. REST interfaces. The latter are usually specified using OpenAPI contracts between clients and servers. Such a contract is represented by one or more YAML-files and defines endpoints, operations, request and response data structures as well as additional information like supported authentication mechanisms.
Therefore to enable the analysis of Microsercives and their interactions a plugin for jQAssistant shall be developed which allows scanning YAML files containing OpenAPI contracts. This involves:
- Analysis of the required information to be imported from OpenAPI contracts
- Modelling OpenAPI data structures as a queryable graph representation
- Evaluation of frameworka or libraries to import contract files in a robust and evolvable way
- Implementation of a scanner and packaging as jQAssistant plugin
- Automated testing as part of continuous integration
- Manual qualification using an example Microservices landscape
The plugin shall be published under an Open Source license (GPLv3).
Prerequisites and Requirements
The students should be interested in getting touch with the challenges of software development and quality assurance: technology, tools, processes and effective team work. For a better understanding of the problem domain, some practical experience with object-oriented languages (preferably Java) and/or data analytics is considered helpful.
Technologies
The project is based on the following technologies:
- Programming language:
- Java 11
- Database:
- Neo4j (Graph Database)
- Development Environment:
- IntelliJ, Visual Studio Code or Eclipse
- GitHub (Version Control, Issues, Wiki)
- Apache Maven
- Jenkins CI
Project organization
The project will be executed using a Kanban-style methodology with a fixed weekly meeting for planning, knowledge transfer and retrospectives. The latter shall enable the students to improve their skills in collaboration and continuously improving their way of working throughout the project. We will assign an contact person with experience in the problem domain who will act as Product Owner (PO) and provide guidance to the team regarding setting up and „living“ the software development process.
Location / Where to work
As the BUSCHMAIS office is located in Dresden the collaboration between the team and us will mainly be carried out remotely. The required infrastructure will be provided by us (e.g. ticket system, planning boards, version control system, video conference system, etc.). In addition on-premise workshops in Dresden can be organized, we propose to do this especially in the early phase of he project, e.g. to provide necessary technical introduction, clarify requirements and align on the way of working.
Contact Person
For the entire duration of the project, we provide the following contact person for both students and lecturers:
- Product Owner (PO): Dirk Mahler (dirk.mahler(at)buschmais.com)
Resources
- jQAssistant: jqassistant.org
- OpenAPI: www.openapis.org
- Tutorial on implementing a jQAssistant scanner plugin: 101.jqassistant.org/implementation-of-a-scanner-plugin/
Introduction
EWERK group is a full IT service provider company located in Leipzig (for more information, please visit our website: https://www.ewerk.com/ueber-uns).
For us, the human resources are the most important asset. Our people are not only serving the client, but also creating values for both the company and our clients. Thus, we would like to maintain, manage, and develop our people more efficiently. For doing so, one step is to define the set of skills that our developers have and evaluate them continuously for further development and allocating our people into proper projects.
Recently, we usually categorize a skill/technology of a developer into three levels: junior, intermediate, and senior. However, this measurement is not always precise, because we cannot differentiate, for example, a three-year experience senior developer from the one with more than ten years of experience for the same technology. Therefore, we would like to add more indicators (such as number of projects, certification, training, time working with the technology, feedback of teams, etc.) for better evaluating the expertise levels of a developer. In this regard, we hope that we can propose better development programs for our people and suggest proper resources for our projects with the clients more efficiently.
Thus, we would like to develop a project which can help us improve our IT skill management and categorization.
Goal
This software development project aims to address this challenge by creating an application for IT skill categorization and management. The application will provide an efficient and centralized platform to categorize and manage IT skills, allowing the company to easily track and assess the capabilities of its workforce.
The goal of the project for the students is to go through a life circle of a software development project together with the company including (1) need identification, (2) requirement collection & analysis, (3) solution design, (4) application development and implementation, (5) testing, and (6) deployment and maintenance.
Project organization
Working method | Group working |
Group size | 3 - 4 students |
Working materials | Inputs and requirements will be given/discussed with the company manager. |
Support from the company | EWERK will provide a product owner and a Scrum master + technical infrastructure & support. |
Working equipment | The participants of the module need a suitable working device (laptop is recommended). Working equipment will not be provided. |
Skills required | Basic knowledge of programming language & statistics is recommended, but not compulsory. Knowledge of database system would be a plus. The low code based and open-source platform (e.g., Budibase.com) is recommended for implementation of the application. |
Communication | Collaboration with the company takes place via MS Teams and in person meetings. |
Confidentiality | The project is not subject to confidentiality. |
Rights | The source code written by the students as part of the project remains the copyright of the company. |
Mode of working | The students work in an agile setup. The way of working is practiced together with a supervisor of the company. |
Students could regularly consult with a contact person at the company.
Project milestones
The project includes three main steps:
Step | Description | Note |
Step1: definition of a skill evaluation model | Need definition: students will talk in detail with a manager of EWERK for defining the specific use case. Requirement analysis: specific requirements and ideas will be provided/discussed with students for clarification (e.g., skills, measurement, weighting, evaluation, etc.) | (Bi)weekly meeting with the respondent manager of EWERK will be set up for the first phase of the project. |
Step 2: solution design for the application | Students propose/describe a webpage application/tool that can be used for data entry/storing, connection and display. | Students can consult with our managers at EWERK |
Step 3: Implementation of the software | Students will build the application based on their decision of the programing languages. Testing & deployment of the application. | Utilization of a low- code-based platform (e.g., Budibase.com) might be an option. A technical expert of EWERK is supporting, if necessary. |
Location
Our office is in Leipzig. The project can be done completely remotely. We offer software such as Microsoft Teams for communication free of charge. EWERK is happy to provide appropriate facilities for joint coordination and planning meetings.
Contact person
- Dr. Toan Nguyen (Sourcing manager of EWERK) - Project coordinator
- Email: t.nguyen(at)ewerk.com
Finatix
We are a young team with approximately 60 people. Together we develop customized software in various areas such as FinTech, automotive or logistics. We practice holistic software development according to agile principles. With us you will find an open tone and a familiar atmosphere. Modern technologies are the A&O of our work, therefore we offer many learning and training opportunities in our company.
Currently we are working on around 10 different projects in teams of 3-8 people. Usually we use Java (Spring), TypeScript (Angular) and services like AWS.
The Project
The goal is to develop an application for the creation and execution of live polls. It will be a green field project which also includes the conception of the application.
The Topic
A live voting tool is to be developed as part of this software engineering project at the University of Leipzig.
The entire product development process from conception to delivery is mapped. We organize the project with SCRUM. For this purpose, the planning & review meetings as well as retrospectives with the students are scheduled. The students also have the opportunity to meet in the "Daily" to vote on a daily basis. We provide appropriate video conference software (Microsoft Teams) for this.
The Requirements
The students should have an affinity for web technologies. Basic knowledge of frontend and / or backend development is a prerequisite for development. Furthermore, basic knowledge of software design patterns is useful to better understand the frameworks themselves.
The Location / Where to work
Our office is located in downtown of Leipzig, in Barfußgäßchen 12, 04109 Leipzig. The project itself can be carried out completely remotely. We offer free software like Microsoft Teams for communicating with each other. For mutual coordination, Sample GmbH will be happy to provide the appropriate premises and schedule appointments for us.
Goal
The result of the project should be a usable application.
User Stories
As a presenter I want to create polls, which can be answered live from the audience to include them in the presentation. As a presenter I want to phrase a question for the poll and provide multiple possible answers to get an atmospheric picture from the audience. As a presenter I want to share my poll via QR Code to get easy access for poll participation.
As a viewer I want to choose one of the possible answers to participate in the poll. As a viewer I want to access the poll via browser, so that I can choose between participating via laptop or smartphone.
As a viewer / presenter I want to visualise the poll results to track the current state of the poll.
Project Milestones
The MVP (minimal viable product) should be planned and implemented by the students:
- Create polls
- Run polls
- See results of the poll in real-time on a dashboard
Afterward there are options to implement additional features:
- Integration into different tools (Miro, Teams, Concept board, ...)
- Different poll types (multiple choice, text input answers, ...)
- Different visualizations of the results (pie chart, bar chart, tag cloud, ...)
The exact requirements are worked out with the students.
Technologies
Students can independently choose suitable technologies after the design phase. The following technologies are also used in our company and are therefore possible:
- Backend: Java, Spring Boot
- Frontend: TypeScript, JavaScript, Angular, React, Vue.JS
- Design: Figma, Prototyping
- App Development: Flutter, Ionic
- Ops: Docker, Kubernetes
Misc
- Technology and work equipment such as test equipment, software or laptops are provided on site or can be borrowed.
- The project is not subject to confidentiality.
- Remote work is guaranteed via OpenVPN.
- Rooms in our office can be used with prior registration.
- In terms of copyright, the source code written by the students as part of the project remains with Sample GmbH.
Implementation
We work in the project according to the agile method "SCRUM". This means that we plan so-called sprints with different tasks in regular appointments and then look together to see how well or badly the implementation went. The duration of a sprint is decided with the students and can be between 1 and 4 weeks. Our contacts support you in adhering to the SCRUM guidelines.
The following SCRUM components are used in the project:
Component | Description |
Sprint | Fixed period in which a certain selection of tasks is implemented |
Planning | Tasks and requirements are discussed, estimated and planned in sprints |
Daily | Daily voting meeting among the students for progress, open questions or problems |
Sprint Review | Joint appointment to present the completed tasks |
Retrospective | Review of past sprints and a joint appointment to improve implementation and organization |
The requirements are discussed and planned in joint planning meetings. The students organize themselves during a sprint, e.g. through regular coordination meetings (daily). In a task and planning software like Trello, the progress of the tasks is documented and evaluated.
The version management "Git" helps the students to develop together on the project. With the help of code reviews (pull requests), the students independently ensure high code quality and learn from each other at the same time.
Each task in the sprint goes through the following intermediate steps:
Step | Description |
Backlog | Unplanned task that has to be discussed and scheduled in the planning appointment |
Open | Planned and estimated tasks in the active sprint |
In progress | Tasks that are currently being implemented |
Review | Completed tasks that need to be checked again |
Finished | Fully completed and reviewed tasks |
Responsive Enterprise Web Application
About Us
itemis was founded in 2003 with the aim of significantly simplifying product and software development. In 2019, we put our innovation capabilities to the test against 99 other companies in the TOP 100 Innovation Competition. The first place and the associated Innovator of the Year award confirms our conviction: Innovation is created in a team, through trust and a high degree of personal freedom. In such an environment, there is enough room to get creative and try out new ways. Today, we develop software and products with a focus on the Internet of Things. This is where our expertise in model-driven software development, in embedded, enterprise, cloud, web, and mobile development unfolds its full potential.
Introduction
As a learning organization itemis invests a lot into the knowledge development of its employees so that it can support its customers with the most up-to-date technologies at any time. The internal itemis Academy supports the professional and personal development of any itemis employee with a set of tools, processes, learning paths and own or external training courses and content. To improve the availability, the accessibility, the management and the traceability of the portfolio, a management system shall be developed.
In 2022 a group of students developed a first version of the itemis Academy Management System (V1) from scratch. The solution has a multitier infrastructure with a central backend and responsive frontend designed to be usable on Desktop or mobile devices for at least 10 concurrent and up to 500 total internal users. The main functionality is to enter, manage and provide meta information about either internal or external available training content (like internal or third-party MOOCs, training videos, classroom trainings, available certifications, etc.) and this is already implemented. But this was only a part of the requirements and further features need to be implemented as learning paths, planned trainings, gathering of training results and training feedback.
The students will form a Scrum team, which may be expanded by itemis employees or working students. The product owner will be an employee from itemis Leipzig office. We provide the tooling and infrastructure (Google Meet, Gitlab CI or Jenkins, test and staging environment).
Goal
The result of the project should be a completion of the now open functionalities being fully functional and deployed for company internal users
Prerequisites and Requirements
The students should have an affinity for enterprise level applications and modern web technologies. Basic knowledge of the programming language Java, JavaScript, CSS, HTML5 and the usage of Git is a prerequisite for development. Basic knowledge of Typescript, responsive web design, Docker, the frameworks Spring Boot and React and the concept of Continuous Integration concepts would be an advantage.
Technologies
The solution will be built, using todays standard backend and frontend technologies. The programming languages will be Kotlin or Java on backend side and TypeScript/JavaScript on frontend
Name | Module | Description |
TypeScript/JavaScript | Frontend | Programming languages on client side |
React | Frontend | Frontend application framework |
Spring Boot | Backend | Server-side framework for backend business logic and persistence |
Java | Backend | Programming languages of spring frameworks, Kotlin preferred |
MongoDB | Backend / Data Storage | Database holding application data |
OAuth2 | User authentication / authorization | All users may use their Google accounts for SSO. |
Jest | Testing | Test framework for VueJS |
Selenium | Testing | End-to-end test framework |
Gitlab CI / Jenkins CI | Build | Continuous integration software |
Docker / Docker Compose | Application container | Runtime environment, hosted internally |
As mentioned above, we use the agile method Scrum as framework for development projects. The students will form the Scrum team, which may be expanded by itemis employees or working students. The Scrum Product Owner will be an itemis employee from our Leipzig office. One of the students may take on the role of a Scrum Master, if feasible. Otherwise itemis will name an internal employee for this role. The development will be organized in so called Sprints, each sprint starts with a planning and ends with a review meeting online or offline at the itemis Leipzig office. The development team is encouraged and will be supported by the Scrum Master to schedule Daily Scrum, Refinement and Sprint Retrospective meetings as needed
Scrum Events | Description |
Sprint | The heartbeat of Scrum. Each sprint should bring the product closer to the product goal and is a month or less in length. |
Sprint Planning | The entire Scrum team establishes the sprint goal, what can be done, and how the chosen work will be completed. Maximum of 8 hours for a month-long Sprint. Shorter timebox for shorter sprints. |
Daily Scrum | The Developers inspect the progress toward the sprint goal and adapt the sprint backlog as necessary, adjusting the upcoming planned work. May include Product Owner or Scrum Master if they are actively working on items in the sprint backlog. Maximum of 15 minutes each day. |
Sprint Review | The entire Scrum team inspects the sprint's outcome with stakeholders and determines future adaptations. Stakeholders are invited to provide feedback on the increment. |
Sprint Retrospective | The Scrum team inspects how the last sprint went regarding individuals, interactions, processes, tools, and definition of done. The Team identifies improvements to make the next sprint more effective and enjoyable. This is the conclusion of the sprint. Maximum of 3 hours for a month-long sprint, shorter timebox for shorter sprints. |
The team is encouraged and will be supported actively by itemis to follow the Test-driven Development (TDD) approach to improve and maintain high development and code quality standards and will give the developers more confidence. Pair programming and peer reviews are well suited techniques to learn, support and improve each another within the team.
Project milestones
The following milestones should be planned and implemented with the students:
1. Establish development environment and fix “is admin” and “database docker” issues.
- Development environment is set up and functional.
- AMS application backend including database is running.
- Continuous Integration setup working.
- Default admin state from database is used and administrator features are working (again).
- mongoDB data is never lost after mongoDB Docker image rebuilt.
2. Implement yearly internal training curriculum feature.
- Administrators need to create and edit a training course curriculum.
- The courses may be picked from the catalogue of training content.
- Outdated (previous) curriculae may be archived, but are still accessible.
- All users are able to browse the current and past curriculae.
- All users may enroll to any of the offered courses and get confirmation emails.
- All users may cancel their own enrollment.
- Administrators get notification emails about any enrollment or cancellation.
- Administrators are able to see enrollment lists for all courses.
3. Implement feedback forms and reports.
- Any users may provide feedback to any catalogue content item.
- Administrators may review, edit or even delete feedback.
- Administrators want a usage/feedback statistics report.
4. Implement learning paths and training result.
- Administrators can create, edit and delete multiple learning paths.
- User may choose one or more predefined learning paths.
- Users, which have completed trainings, may fill out the form to provide feedback.
- Administrators need to review feedback and create usage/result reports.
5. Implement catalogue proposals.
- Allow users to make proposal for other third-party content not in the catalogue.
- Allow Administrators to accept, refuse or edit user proposals.
- Send notification emails to users and administrators on any change.
Location / Where to work
Our office is located in the Industriepalast (Dohnanyistraße 11) in Leipzig, near the Central Station. The project itself can be carried out completely remotely. We offer software such as Google Meet for communication free of charge. itemis AG is happy to provide meeting rooms for the first familiarization and for mutual coordination, provided this is possible with regard to the COVID-19 pandemic and the applicable hygiene regulations.
Contact Persons
For the entire duration of the project, we provide two contact persons for both students and lecturers. The contact information will be given, at the start of the project.
For general Information : leipzig(at)itemis.de
Misc
- You can bring/use your own device for development. If any hardware equipment (hardware or software) is necessary, don’t hesitate to ask for support in advance. Remote work is possible.
- The project is not subject to confidentiality.
- Rooms in our office can be used with prior registration (hygiene regulations must be followed).
- In terms of copyright, the source code written by the students as part of the project remains with itemis AG.
- If the final solution fulfills enterprise requirements and standards, itemis AG may compensate the efforts of the students with an appropriate thank-you gift.
INTRODUCTION
We want to promote the development of an open-source exchange app for school places. It is meant for parents. For now, the focus is on users in Leipzig. We offer guidance and support for this software project. During last year’s Software Engineering Project at Leipzig University, we began with the implementation and established the name Samy. This year, we will follow up on the results.
PROJECT MOTIVATION
Concerning the application for a school on behalf of their child, parents in Saxony are restricted to an inefficient application process with deteriorating influence on both individuals and society. Between the ever-increasing demand for schools in crowded cities and the inability of the authorities to solve the problem of distribution, it can be challenging to get into a school near home. This as a cause for thousands of kilometers travelled needlessly, daily, and often driven by fossil fuel.
GOAL
The goal of this project is to help solving the problem of distributing school places with an exchange app. We could increase life quality for many while decreasing inner-city traffic. To this goal, an open- source app with a backend service in the cloud would be the first step.
JAMBIT LOCATION & ROLE
Jambit will send a representative to play the role of both customer and architect in this fictive scenario. The representative will provide guidance and support when needed. For the introduction workshop and the weekly or bi-weekly meetings, Jambit GmbH will be happy to provide appropriate premises. Our office is in Leipzig city center, Klostergasse 3.
PREREQUISITES AND TECHNOLOGY
Last year, the students implemented a Flutter app and established communications to the REST API of a cloud-hosted node.js backend service. All results were published on GitHub. We propose to start from here.
Flutter is a prominent framework for cross-platform app development. It is feature-rich, open-source and supported by a broad community. It should be a good basis to develop an app which can later be delivered to arbitrary platforms.
Dart, the programming language for the app, is developed by Google. It is object-oriented and has a reasonable resemblance to Java. It is also quite easy to learn
INNOVATION PARTNER SOFTWARE & SOLUTION DEVELOPER COFFEE LOVER
Node.js is an open-source runtime environment for servers in JavaScript. It is light, simple, cross- platform and extremely popular. It provides one of the fastest ways to design and maintain REST APIs – one of which is the REST API framework express.js.
Functional Programming is the main programming paradigm used for the project. For now, it means immutable data structures and the reduction of side effects in favor of direct effects. We strive to eliminate whole classes of errors for a robust and scalable application. The app architecture is message-based to support this effort.
ORGANIZATION
The students will organize themselves during the entire process. We encourage weekly or bi-weekly planning meetings (which the jambit representative will attend) and daily development meetings. With the help of pull requests and code reviews in GitHub, the students ensure code quality and learn from each other at the same time
WHY SHOULD I PARTICIPATE?
- Help protect the environment and improve living conditions with a non-profit software project
- Gather experience in Software Engineering and Architecture
- Work with the widely used frameworks and languages Flutter, Dart, node.js, JavaScript
- Learn version control with Git
- Get to know the Functional Programming paradigm
PROJECT MILESTONES
The following core use cases should be supported by the web application:
- Create user account
- Login
- Logout
- Browse registered facilities
- Create exchange offer
- E-mail notification on new exchange proposal
- Browse calculated exchange proposals
- Contact users who issued a proposed exchange
CONTACT PERSON
Jambit provides the following representative for both students and lecturers: Georg Mühlenberg (georg.muehlenberg(at)jambit.com)
LEGAL
The project is not subject to confidentiality or non-disclosure. In terms of copyright, the source code written by the students as part of the project will be published under the open-source Apache Commons License (ACL) 2.0.