Without hardware to run it, software is useless. Hardware influences software development, since the software must fit the hardware platform and take advantage of its strengths, abilities, and components. Network-on-Chip / System-on-Chip hardware is a relatively new platform enabling communications between network and system elements that exist on the chip at the molecular level. This is a fascinating area. Learning to target software development for the NoC / SoC platforms using DevOps approaches should prove equally enthralling.
The Top Three Keys to a DevOps Approach to Developing Software to an NoC / SoC Platform
According to Aaron Cois, Researcher, the Software Engineering Institute, Carnegie Mellon University, the top three keys to a DevOps approach to software development for NoCs and SoCs are as follows. First, nurture a collaborative culture where collaboration between the parties involved in the software development process can flourish. Second, leverage Infrastructure as Code (e.g. simulation of hardware, EDA or ECAD applications, and programmable environmental configurations). Third, use automated creation / testing components for both hardware and software to create a fully automated DevOps pipeline.
The enterprise must foster equal collaboration and engagement among the necessary participants. “Getting technical staff with specific areas of expertise (Dev, Ops, Security) fully engaged in the project from the beginning ensures that their respective areas of expertise are first-class concerns in all system design and implementation decisions,” says Cois. This is correlates with Conway’s Law, which states that “two software modules A and B cannot interface correctly with each other unless the designer and implementer of A communicates with the designer and implementer of B. Thus the interface structure of a software system necessarily shows congruence with the social structure of the organization that produced it” (http://www.melconway.com/Home/Conways_Law.html).
Therefore, says Cois, a team of software developers will design a system primarily to meet software development concerns (features, performance). A team that also contains IT Ops professionals will design a system that also meets operational needs (deployment, maintenance). A team that also has Information Security professionals will produce a system designed to address security concerns. “All team members have to be equally tasked, engaged, and accountable for the project, however, for this effect to work,” says Cois; “this is where organizations commonly fail.” In real-world scenarios, tasking is unequal such as when IT operations attends a few meetings to consult, but the primary project team is made up entirely of developers. Or, in another example, InfoSec does a system audit before release and identifies issues that development should fix, but because InfoSec wasn’t strongly involved in the system inception and design, development may never complete the fixes.
The enterprise must focus simulation techniques on the development process. “Simulation and mocking are integral in situations where you are developing custom hardware as part of the overall process. This is the case with SoC/NoC systems,” says Cois. By simulating the chip hardware, developers can script/automate a number of things:
1) Testing hardware configurations
2) Testing hardware interfaces to software systems
3) Testing software/firmware deployment onto hardware
4) Security concerns
5) Possible networking scenarios on NoC chips
6) Other quality attributes such as response time and load testing
“Simulating the hardware platforms enables the development team to perform the same automated/continuous deployment techniques that are common to DevOps in general on SoC/NoC development projects as well,” says Cois. This gives developers advantages such as the ability to automatically deploy the system multiple times per day, which builds confidence in deployment success (through repetition). As with all automated deployment scenarios, the parity between the internal deployment platform (the hardware simulation) and the production deployment platform (real hardware) defines how much confidence development gains from repetitive deployment (e.g., if the simulation isn’t accurate, you won’t be very certain deployment will work on real hardware).
Challenges & Solutions
There are challenges to developing SoC/NoC software the DevOps way. First, the organizational culture needs to change so that communication and collaboration between various areas of expertise can dramatically increase. This is difficult. According to Cois, the solution is to hire generalists who are T-shaped professionals with a wide T. “They will have their specialty (Dev, Ops, Sec) and an understanding of other project needs. This understanding leads to empathy and effective collaboration–to the benefit of the project,” says Cois.
The second challenge lies in adopting automation, which is a significant technical shift, especially on legacy systems. It requires planning and technical expertise. “Knowing your goals before you start is key–a lot of organizations may jump into implementing automation without knowing the benefits they expect to see–or how to measure them,” says Cois.