Continuous Delivery 2019-10-18T17:26:33+00:00

Continuous Delivery.

Continuous Delivery is about being able to make minor changes and having the confidence and ability to deliver those changes, incrementally. By identifying and automating the tasks from build to test, we want to make delivering a common and natural task.

A Factory Production Line for Software Delivery

Our goal is to make software delivery as streamlined and automated as possible. Our vision is that software development and delivery will work like a factory production line; develop quality code, let automation kick in, admire the output.

Below are the areas that we assess and improve upon on our journey to continuous delivery.

Version Control

The first thing to do to become compliant in open source licensing is to identify which components are used in your project. The project can include internal proprietary components as well as open source components. Both cases must be taken into the consideration to have full knowledge of the components used and to create the bill of materials or BOM, which is by definitions the structure of the project.

The natural place to do software composition analysis, or package scan is in the build process, which on the other hand means that it makes sense to have it integrated into the continuous integration pipeline. This means that for every build we get an updated bill of materials. This is very important to keep track all the time what is our project’s composition and this way we can also make possible changes to the structure already during the development by only seeing the one document. So, it is not necessary to go through source files to have knowledge of this, which is a big help for project managers as well as for developers.

Software Build

Lots can be done to improve software builds. Modern build systems provide much better dependency management and high-level abstractions to help integrate a variety of different tasks. Furthermore, how can you truly trust your build until you can guarantee that it works in an isolated immutable environment? We want to create build systems that can be trusted, always repeatable and optimized for performance.

Quality and Security Assurance

The clearing process or component clearing means the process in which we identify the license under which the software component is licensed. This can be done using some license scanner, which scan the source code using different pattern matching algorithms to recognize the license text or parts of it.

Finding license related test from the source code is not so simple task, because of several reasons: there can be only parts of the full license text, license text can be slightly modified or there can be only a reference to see URL or some file. Also, when scanning a whole software project, it is obvious that there will be several different open source licenses in it, so it must also be taken into the consideration that the licenses are mutually compatible. The component clearing is not so straight forward process, so that is why there should be own team to do it.

It should also be distinguished that component clearing and license clearing are two different things. License clearing means the process where license text is read, and the granted rights, obligations and restrictions are evaluated for each license. License clearing is done at least with the help from legal and often by legal only.

Artifact Management

Managing build artifacts is like managing source code. Creating build artifacts daily that can be used for testing and having a well-defined promotion strategy are key to enabling Continuous Delivery. After all, it is not the source code that we want to ship but the output of the build. Additionally, we typically want to create different flavours of the build; a debug build for the bulk of testing and optimized release builds for non-functional testing.

Automated Testing

Manual testing is no longer an option if you want to stay competitive. We can help implement automated functional, performance and system security testing to give you the confidence to deliver, continuously, and increase your competitive advantage. Digitalization of requirements and tests is a necessary step, enabling you to understand the impact of change and trace test results to ensure software does not regress.

A Factory Production Line for Software Delivery

Our goal is to make software delivery as streamlined and automated as possible. Our vision is that software development and delivery will work like a factory production line; develop quality code, let automation kick in, admire the output.

Below are the areas that we assess and improve upon on our journey to continuous delivery.

Version Control

Software Build

Lots can be done to improve software builds. Modern build systems provide much better dependency management and high-level abstractions to help integrate a variety of different tasks. Furthermore, how can you truly trust your build until you can guarantee that it works in an isolated immutable environment? We want to create build systems that can be trusted, always repeatable and optimized for performance.

Quality and Security Assurance

Building quality and security into software requires building quality and security into the development process. Our vast knowledge of testing techniques and tools can enable your team to truly deliver to the highest possible quality, whilst building awareness and knowledge along the way. By applying quality gateways in the development process, we ensure this quality is integrated right from the start.

Artifact Management

Managing build artifacts is like managing source code. Creating build artifacts daily that can be used for testing and having a well-defined promotion strategy are key to enabling Continuous Delivery. After all, it is not the source code that we want to ship but the output of the build. Additionally, we typically want to create different flavours of the build; a debug build for the bulk of testing and optimized release builds for non-functional testing.

Automated Testing

Manual testing is no longer an option if you want to stay competitive. We can help implement automated functional, performance and system security testing to give you the confidence to deliver, continuously, and increase your competitive advantage. Digitalization of requirements and tests is a necessary step, enabling you to understand the impact of change and trace test results to ensure software does not regress.