Parasoft Logo

See Parasoft C/C++test in action!

Take a self-guided product tour.

Get Started

WEBINAR

Must-Haves in CI/CD Software Development for Embedded

A collaborative culture within organizations has been proven to streamline the product development process. It places value on effective communication, integration, and cross-functional teamwork to enable continuous and rapid delivery of reliable products that are also safe and secure.

This session explores how embedded software development teams can adopt modern, automated workflows for continuous integration, testing, delivery, and monitoring. It highlights the value of Agile, DevOps, and CI/CD pipelines, showcasing a practical demo of Parasoft integrated with GitLab.

Key Takeaways

  • The significant value of adopting a modern development workflow.
  • The importance of continuous testing, including static analysis, unit testing, and code coverage.
  • Best practices for implementing test automation.

Agile Development and Collaboration

Agile development, born from a meeting in 2001, emphasizes collaboration and responding to change. Its core values, outlined in the Agile Manifesto, focus on individuals and interactions, working software, customer collaboration, and adapting to change. These principles are the foundation for methodologies like Scrum and Kanban, which aim to break down team silos and improve communication.

Scrum, a popular project management methodology, brings cross-functional teams together with shared goals. It uses iterative sprints, regular meetings to review progress, and defined roles to ensure predictable delivery and foster a smarter way of working. Kanban, on the other hand, focuses heavily on teamwork and human interaction, often visualized with post-it notes on walls during planning sessions.

DevOps and the CI/CD Pipeline

DevOps builds upon Agile principles by incorporating tools and automation to streamline the software development process. It mechanizes manual tasks, breaks down team silos, and boosts productivity. The core of DevOps is the CI/CD pipeline, often represented by an infinity symbol illustrating a continuous and iterative approach.

Stages of the DevOps Workflow

  1. Planning: Identifying requirements and defining deliverables for each iteration. Tools like Jira are commonly used for Agile project management.
  2. Coding: Developers work on separate branches to avoid disrupting the main development line. Tools like Git for configuration management and IDEs like VS Code or Eclipse are essential. Parasoft’s C/C++test can integrate into IDEs for early code analysis.
  3. Build: Triggered by code commits, this stage compiles and builds the code. Automation is key, with tools like CMake and compilers like GCC playing a role. Containerization with Docker is also common.
  4. Test: Upon a successful build, automated testing is invoked. This includes static analysis, unit testing, regression testing, and code coverage. Parasoft’s C/C++test integrates into CI pipelines for these tasks.
  5. Release: If testing is successful with no bugs, the code is merged into the main branch, ensuring its stability.
  6. Deploy: In embedded development, especially for safety-critical applications, this stage often involves an approval process and compliance checks before deployment. While enterprise IT might deploy directly, embedded systems require more rigorous validation.
  7. Operate: The application is live and in use by customers. The organization monitors its performance.
  8. Monitor: Feedback from the field and customers is collected. Inefficiencies in the pipeline or workflow are identified and addressed, and feedback is incorporated into future planning, restarting the cycle.

Bridging Agile with Functional Safety Standards

Agile methodologies align well with industry functional safety standards like ISO 26262 for automotive, IEC 62304 for medical, and DO-178 for avionics. These standards often use a V-model diagram to illustrate the required software development phases and their corresponding verification and validation activities. The V-model outlines phases like requirements analysis, design, implementation, and then verification stages such as static analysis, unit testing, integration testing, system testing, and acceptance testing. While these standards dictate what needs to be done for safety, they leave the how—the specific methodology like Waterfall or DevOps—up to the organization.

Demo: Parasoft C/C++test with GitLab CI/CD

The demonstration showcased how Parasoft C/C++test integrates with GitLab CI/CD pipelines. It covered setting up a pipeline with static analysis, accessing results within GitLab’s interface, and using a VS Code extension to download and remediate issues directly in the IDE. This integration streamlines workflows, reduces compliance costs, and improves developer productivity by allowing code analysis and issue fixing within the development environment.

Benefits of Adopting CI/CD

Customers adopting CI/CD practices report several key benefits. They experience improved predictability in software delivery, better accommodation of requirement and design changes, and a more organized and quicker development process. A significant outcome is a reduction in QA problem reports and customer tickets, which translates to lower testing and development costs. Ultimately, this leads to higher quality products and a faster time to market.