Ever wonder what it takes to consistently deliver quality and reliability in our software releases? Here’s a brief overview of the systems and disciplines we use to ensure that our users receive timely, trouble-free updates of Endurica software.
Automation:
Throughout the life of our software, changes are made to our source code for a variety of reasons. Most commonly, we are adding new features and capabilities to our software. We also make updates to the code to improve performance and to squash the inevitable bugs that occasionally occur.
With each change committed to the code repository, the software needs to be built, tested, and released. Endurica’s workflow automates these steps so that any change to the source repository triggers a clean build of the software. A successful build is automatically followed by a testing phase where our suite of benchmarks is executed and compared to known results. Finally, the build is automatically packaged and stored so that it is ready to be delivered. At each step along the way, a build error or failed test will cancel the workflow and send an alert warning that the release has been rejected, so that the issue can be addressed, and the workflow restarted.
Reliability:
The automated testing phase that every release goes through helps ensure the reliability of our software. For example, every Endurica CL release must pass all 70 benchmarks. Each benchmark is a separate Endurica CL analysis made up of different materials, histories, and output requests. Results from a new build are compared to known results from the previous successful build. If results do not agree, or if there are any errors, the benchmark does not pass and the build is rejected.
The testing phase prevents “would-be” bugs from making it into a release and makes sure that any issues get resolved.
Repeatability:
The automated nature of our development workflow naturally helps with repeatability in our releases. Each build flows through the same pipeline, creating consistent releases every time. There is less worry, for example, that a component will be forgotten to be included. It also allows us to recreate previous versions if comparisons need to be made.
Traceability:
Our version control system enables us to easily pinpoint where and when prior changes were introduced into the software. Each release is tied to a commit in the repository. This allows any future issues to be easily traced back and isolated to a small set of changes in the source for quick resolution.
Responsiveness:
Automating the build and release pipelines greatly increases our responsiveness. If an issue is discovered in a release, the problem can be resolved, and a fully corrected and tested release can be made available the same day. We can also quickly respond to user feedback and suggestions by making small and frequent updates.
The systems and disciplines we use in our development process make us very efficient, and they protect against many errors. This means we can spend more of our time on what matters: delivering and improving software that meets high standards and helps you to get durability right.