Outsourcing Industrial Embedded System Development Guide
10 Considerations before you have an embedded design company develop your industrial embedded monitoring or control system for you.
Consideration – How do I get a warm fuzzy that the EDC can solve my specific problem?
This is the most straightforward for you when the EDC has done your exact application in your industry. However, given that the EDC is in the world of custom development, generally your design will be at least somewhat unique (if it’s not, it’s worth thinking about how you’re addressing a problem differently than someone that’s already in the market).
Why you should care
To get that warm fuzzy feeling that you’re after with the belief that the EDC will not only perform as needed, but that they’ve got your back and will actually challenge you on some of your thoughts on how to proceed.
Recommendation
- Project stats – find out roughly how many industrial embedded projects they’ve done.
- Case studies – look for them. Think beyond your specific application or industry, and ask yourself what similarities you see from level of complexity, mission criticality, and monitoring & control functionality standpoint. For example, it’s a pretty different thing to locally control a single manufacturing machine at fast loop rates than it is to remotely monitor multiple deployments of some industrial equipment.
- Capabilities bullets – look for them. It’s a pretty different level of capability to design a digital level shifting interface circuit than it is to be able to design a low noise 24-bit A/D multi-channel analog input circuit.
- Ask them what aspects of the project they feel least comfortable with. This will give you a feel for what they’re most concerned about, even if they feel comfortable with your project overall. This gives you thoughts on areas that you should pay close attention to during project execution.
Consideration – What language(s) will the EDC be coding in?
There are dozens of languages out there to write software applications. Many of them are not appropriate for embedded systems. Several are. Some of the more popular languages will include C/C++ for sequential processors and VHDL/Verilog for FPGAs.
Why you should care
Supportability – If you need to be able to make tweaks on your own post-delivery then you’ll need the IDE software to do so.
Portability – If you need to switch EDCs or switch tool chains you’ll need to find an EDC that supports the selected language(s).
Recommendation
- Do a sanity check search on the web to get a feel for how common the languages are that your EDC is proposing. Don’t be afraid to ask the EDC why they prefer the language that they do. This can give you some good insight.
- Make sure you understand what files will be provided to you, and set them as deliverables. At a minimum, you’ll want to request all software/firmware source code files (e.g., .c, .vhd, etc.). It can also be helpful to understand what versions of which IDEs are being used.
Consideration – What circuit board design files will you be provided by the EDC?
Chances are you won’t be able to modify the hardware design yourself, and it’s unlikely that you’ll convince a new EDC to take the design files, import them, and modify that design (there are just too many variables (e.g. libraries) in the setup of the design to trust that everything will just work). However, it’s very helpful to have the schematic, layout, and BOM (Bill Of Materials) files to serve as breadcrumbs in reverse engineering much of the design intent in order to create a new version of that design. Chances are that, even with the right files, they won’t be able to import the design and start from there. They’ll have to start the schematic/artwork from scratch.
Why you should care
Supportability – if you need to create a new version of the design and you want to use a different EDC, having the right files will provide some breadcrumbs for them to assist in understanding design intent.
Recommendation
Make sure you understand what files will be provided to you, and set them as deliverables. You’ll want to ask for:
- Schematic capture files
- Artwork files
- Fabrication & assembly files (Gerbers)
- BOM (Bill Of Materials)
Consideration – What hardware platform does the EDC use as their core building block?
There are lots of options out there for hardware platforms. Depending on your application, you may be considering the likes of PC-104 stacks or similar, RasPi, Arduino, NI RIO, Avnet PicoZed, a fully custom board, or maybe even a PLC. Be careful here, performance, ruggedness and reliability will vary greatly. Choose cautiously.
Why you should care
You’re naturally going to care about the performance and environmental specifications of the hardware, so we won’t even get into that.
Lifecycle maintenance & obsolescence – while not the most fun aspect of the design cycle to deal with, this is an inevitable part. The last thing you want is to be in a successful mature production phase only to find out that critical components are going obsolete and you have no path forward.
Future upgrades – if you’ll need to upgrade your design in the future, maybe with an expanded, limited, or just different, feature set.
Recommendation
- Find out why the EDC thinks the selected hardware stack is a good choice for your scenario.
- For lifecycle maintenance, find out about the manufacturers product lifecycle plans. Ask the EDC about how they handle and support life cycle management. In other words, who watches out for parts going obsolete? Who recommends last time buys?
- If you care about future expansion possibilities, ask about: Processor headroom, Spare I/O, Controller variants.
- Check out this white paper for details on finding a good spot for you on the COTS-custom spectrum. There are off-the-shelf options out there. You generally only want to do as much custom design as needed, given your performance requirements, projected volumes, and time-to-market constraints.
Consideration – What IP is the EDC bringing to the table?
Since you’re developing a custom system, there will likely be many custom aspects to the controller that need to be developed from scratch. However, often times, companies develop their own IP (both hardware and software) for use across multiple projects as building blocks.
Why you should care
There may be limitations associated with the utilization of the EDC’s IP. Maybe you pay royalties on units sold. Maybe you retain rights to use the code as-is, but not to modify.
Generally speaking, the more IP the EDC has, the less NRE you’ll spend. Granted, the EDC is going to want to recoup some of their development costs, but chances are, pre-developed IP will save you in development costs.
Recommendation
Ask for the EDCs IP licensing agreement and learn what the terms are.
Consideration – What IP will be developed as part of this project?
How much do you care about protecting your IP? Maybe you’ve developed a pretty cool algorithm that you’d like to retain ownership of. Maybe you’re not doing anything horribly unique at the controller level, and maybe the EDC would like ownership of that IP for other future projects.
Why you should care
This can limit your use, or use by the EDC.
It also can affect pricing for the project and subsequent sales. If the EDC finds the IP valuable for them, they may be willing to drop the price on the development work.
Recommendation
- Articulate IP rights and ownership as part of the contract.
- Consider a patent for a truly novel idea.
Consideration – How deep is the EDC’s bench?
You’re buying a capability. The end product doesn’t exist yet. Your needs relating to flexibility, responsiveness, risk reduction, and price sensitivity will drive what you care about here.
Why you should care
You want your project to be completed, and you want support when you have questions.
Recommendation
You generally are going to trade risk for price here. You have to decide what balance you’re comfortable with.
Consideration – How will the EDC support me once units are fielded?
Depending on our scenario this could mean different things:
- Like it or not, you’re likely going to be dealing with bugs and/or warranty returns in the field at some point.
- You may have situations where different customers want different features.
Why you should care
When you’ve got fielded units, you don’t want to end up stranded, because you’ll end up with unhappy customers quickly.
Recommendation
- Define the level of support desired up front before development begins. Do you want a certain level of support at a fixed price? Are you happy with T&M support on an as-needed basis?
- If different features are likely desired by different customers, and those features are understood ahead of time, the embedded controller can be architected differently, so have this discussion before development begins.
Consideration – How important does my project seem to the EDC during the sales process?
Do you feel the love, or are you feeling more like a bother? If you’re feeling like you’re bothering the EDC before they win your business, how do you think things are going to go after they get your business? Of course, not everyone can be top priority, otherwise there would be no top priority, but you don’t want to be at the bottom of the barrel either. Somewhere in the middle may be just fine depending on your scenario.
Why you should care
This can be a good indicator of how they will treat you during project execution.
Recommendation
Sniff out where you fit in the priority of all their other projects. Unfortunately, there’s no easy mechanism here. You can ask them, but you may not get the most honest answer. Some subtle indicators to look for to help see where you fit:
- Tone of voice during conversations.
- How often are you being asked to re-schedule because something else came up after you locked in a meeting time? This can happen unavoidably, but generally shouldn’t happen more than once during the sales phase of the project.
- How long does it take for them to respond to your emails? Generally, initial emails should be answered within ~24 hours. Further down, when the depth of technical detail is significant, it may require a handful of days for a detailed response.
- Try to get references from prior clients, just be aware that the EDC might not be able to give them due to NDAs.
Consideration – Am I willing to invest time and energy into requirements development?
Requirements are the mechanism for communicating what the embedded controller needs to do. This step is often seen as not being value add, because you already know what you need (at least at a high level) in your head. You’ll want to use the requirements to create an acceptance test plan.
Why you should care
At the end of the day, you want your controller to work in a particular way. The way to validate and verify it is by testing it. In order to test, you need testable requirements.
Recommendation
Check out this industrial embedded requirements and spec template. You don’t need to necessarily capture everything on the first iteration. Take two hours to capture what you know as well as TBDs, then engage the embedded design house in a conversation and iterate from there.
As companies hone in on the core value they bring to the market, outsourcing various components and subsystems becomes a popular option. If you’re considering outsourcing the development of your industrial embedded monitoring or control system, it’s likely that either your internal resources are overloaded or perhaps your company doesn’t have the capability in-house.
If you’re considering us, you can learn some of the basics about us here. If you’d like to see what we’d propose to solve your industrial embedded problem, reach out here to chat: