You are not logged in. Click here to log in.

codebeamer Application Lifecycle Management (ALM)

Search In Project

Search inClear

Tags:  not added yet

codebeamer Architecture

Introduction

This document describes the architecture and major components of codebeamer ALM.

Overview

Architecture details

codebeamer: Architecture and Components

codebeamer ALM is a layered web application that is built using several industry-proven technologies. The platform uses several open source frameworks. codebeamer consists of the following main layers and components:

  • A web container: Apache Tomcat
  • Security Layer: authentication and authorization
  • codebeamer core services:
    • Searching and Reporting
    • Workflow engine
    • Wiki engine
    • Event engine
    • SCM Management
    • Document Management

A web container: Apache Tomcat

Since it is a web application, users working with codebeamer ALM are using their web browsers. codebeamer uses an Apache Tomcat web server as the container to process web request from users.

Web requests are handled by the web controllers using the Spring Model-View-Controller framework. For more complex scenarios, Spring WebFlow is used. These controllers are combined with the industry-standard JSP pages. When the content is independent from web requests, Apache Velocity is used to serve the HTML content or for example to render wiki plugins or emails.

The components of the application are managed by the most popular open source framework: Spring.

The web container also features functionality for accessing data managed by codebeamer ALM remotely, using an open REST API. This can be used to build custom applications to extend codebeamer ALM with, or to build custom integrations with other systems or external components.

Security Layer

Security is a very important factor of enterprise applications such as codebeamer ALM. Security features are critical to control who can access what information in the system, and to control what operations are allowed for each user.

Therefore, security is handled through the application starting from a top level Security layer. This layer handles Authentication (e.g. answers the question Who are you?), and the Authorization of each user (What are you allowed to do?). This is the first line of the defense over the web controller layer. Combined with the various security and permission checks implemented throughout the core of codebeamer ALM, this gives perfect confidence over security and access control.

Security is configured throughout the application on various levels: system administrators can configure global security Groups for users which can be detailed granularly (down to projects by Project Managers using Roles). Various permission tokens can be granted to these entities (Groups/Roles/Users). By checking the existence of such tokens, the system can decide if the user is permitted to view certain pieces of information, or to execute certain actions. For more details see: Basics: Projects, Roles, Groups, Members and Users.

codebeamer ALM Core

codebeamer's core is built as a traditional layered architecture, where the top level is a set of manager services covering the various functional areas of the application (such as a manager service for Tracker operations, or a manager service for Test Management). Each manager service is communicating with various DAO layers and is storing data in SQL databases.

Data is modelled through traditional DTOs, which are mapped to SQL database tables models using custom SQL statements. These SQL/DAO layers are carefully crafted for optimal performance. These are combined with efficient caching, lazy and paged fetching of data. Managers and DAOs are taking care of the security/permissions aspects of the application on several layers.

History, Auditing and complete Traceability

codebeamer ALM is designed to keep track of each item's history of changes, both in terms of content and meta data (e.g. information about when and who made the change). Therefore, users can see what happened to all work items in the past and can compare versions or even go back to certain steps in the artifact's history. This helps keep track of changes and verify the most valuable data in the system. Relying on this feature, compliance audits can simply verify what is and has been happening to the requirements, test cases, and all other work items.

Traceability on the other hand provides an overview of the impact of any desired change by tracing the dependencies between all entities in the system.

User Management and LDAP/Active Directory

codebeamer ALM contains a User Management module which is used as a central component for security. The system's users are fully managed within codebeamer ALM, where the concepts of Groups, Roles, and Permissions enable to control what actions individual users can perform.

For many enterprises there is a need for central User Management, which is also supported by codebeamer ALM via synchronizing LDAP/Active Directory services.

Searching and Reporting

codebeamer ALM implements several techniques to allow users to efficiently find any information they need. These are:

  • Full text search which is using Lucene technology combined with the background indexing of all documents, wiki pages, SCM information, Work item data, and more. All this makes efficient searching possible.
  • A Report engine which helps customers build detailed reports.
  • A special query language and query build called cbQL. cBQL makes it possible to build queries to quickly find any data in the low-level SQL backend.

Workflow engine

codebeamer ALM's core contains a custom-built workflow engine. This engine allows users to add and customize Workflows for requirements or other work items. The standard workflows that come with codebeamer ALM out of the box are highly customizable. This workflow engine is automatically triggered when a work item's status is changed, and enables users to automate various processes.

Wiki engine with Wiki plugins

In order to make sure the developed product is of high quality and fits user specifications, the requirements descriptions also need to be complex and rich. Wikis provide an easy way/markup/syntax to write complex pages quickly. codebeamer ALM includes a powerful Wiki engine based on a fork of JSPWiki. The rich Wiki Content can be displayed in a versatile way within codebeamer ALM. The Wiki engine will render and transform the contents of any wiki page to real HTML pages so that they may be simply viewed in browsers.

The Wikis are used for example to:

Event engine

Any changes in work items, wiki pages, or other artifacts within codebeamer ALM (whether due to user actions or system automation events) triggers internal events in codebeamer's core. These events may then be used by the system to send notification emails to the affected user(s), to update the affected artifact's history, or to enable communication between system components.

The Event engine may be customized, so in case custom automation processes or synchronization with external systems are necessary, Custom event listeners can simply be written. The content of standard notification emails sent by codeBeamer ALM can also be simply customized.

Background jobs

As with any complex and large system, sometimes codebeamer ALM must perform periodical cleanups, scheduled jobs, or other time-consuming background processes. These are performed by the built-in Scheduler/Job engine. Some examples are:

SCM Management: Managed Repositories and SCMLoop

codebeamer's Managed Repository technology provides an easy-to-use, consistent, provider-independent repository management tool with project-, group- and role-based administration capabilities, across multiple repositories.

Managed Repository features:

  • Role-based repository access (read/write) configuration on the project and directory level (directory level is currently available only with Subversion)
  • Change management, issue and change association for process enforcement
  • Associations between commits and tracker items
  • Repository user/password maintenance and authentication
  • Source code browsing with history and diff information
  • Commit browsing (who modified what and when)
  • Email notifications on commits
  • Commit statistics with trends

It is also possible to integrate codebeamer ALM with external repositories which are not managed directly by the system. This requires that the external repository is instrumented by SCMLoop, a special hook software.

SQL databases

codebeamer ALM uses an SQL database for storing most of its model data. Currently PostgreSQL, MySQL and Oracle databases are supported.

The codebeamer core automatically manages the various database aspects like schema installation and upgrades, indexing, query optimization, caching, and transactions. The platform's built-in cbQL domain-specific language can be used to query SQL data easily. This engine translates simple cbQL queries to native SQL queries to ensure security. codebeamer ALM uses database transactions for data consistency in the repository. Using Oracle database systems all work items, attachments, documents, and wiki content can be archived in the database (default setting).

For the best performance, the database system and codebeamer ALM should be configured to use the same high-speed network with low latency times. For optimal performance, advanced fetching techniques like paging and data caching is used on various levels throughout the application.

File system

codebeamer may use disk storage for non-transactional data or large files. An example is Document Management, where big files can be more efficiently stored/retrieved on the native file-system than in SQL databases.

SCM tools use their native format (a Git repository is stored on the filesystem), but their information is automatically synchronized with the SQL database by using the appropriate event hooks or change listeners (such as SCMLoop).

Another native disk storage is the Lucene search engine, which uses its proprietary indexing technology to perform free-text searches more efficiently. Lucene indexes are automatically and periodically updated when changes happen in codebeamer ALM. This process is controlled by the Event engine and other mechanisms throughout the system.

Performance Test Results

codeBeamer ALM's Official Scalability Performance Test Report 2019