Os usuários de computador provavelmente estão mais familiarizados com o software executado em seus sistemas operacionais. No entanto, muitos deles não têm tanta experiência com o software que regula a operação de certos componentes sofisticados de hardware. Esses componentes são programados por profissionais chamados engenheiros de software embarcados.
Os componentes de hardware que executam funções específicas e especializadas são chamados de sistemas embarcados. Eles agem como computadores dentro de computadores, com seus próprios processadores e memória. Os sistemas incorporados coletam dados de componentes de hardware específicos, executam sua programação e depois transmitem dados para outras peças de hardware na máquina. A função de um sistema incorporado pode ser tão complexa quanto a conversão de dados de antenas internas para um formato de dados que o restante do dispositivo pode usar ou tão simples quanto transmitir sinais específicos quando ativados por um botão. Um engenheiro de software incorporado cria os programas que executam esses dispositivos.
O trabalho de um engenheiro de software incorporado é semelhante aos engenheiros de software que criam programas para computadores desktop. O código fonte para a conversão de dados em um formato para outro é o mesmo em um computador pessoal e em um sistema incorporado. Onde o trabalho do engenheiro de software incorporado difere é adicionar código adicional para que o programa seja executado na peça de hardware especializada que atua como o sistema incorporado.
Os sistemas operacionais nos quais os aplicativos de desktop são executados incluem uma variedade de software de driver. Isso é apropriado para esses sistemas devido à variedade de hardware que pode estar no computador e ao software que um usuário pode executar. Os sistemas incorporados são independentes e executam apenas um único programa. Por esse motivo, o programador precisa carregar apenas um número limitado de drivers e o próprio programa na memória limitada do dispositivo. O trabalho do engenheiro de software incorporado geralmente inclui a determinação do menor número de drivers que o programa precisará para operar o dispositivo incorporado.
Depois que um engenheiro de software incorporado termina a programação de um dispositivo, seu trabalho deve ser documentado. Os sistemas embarcados nunca são usados sozinhos, mas como parte de um projeto maior. Para fazer uso do dispositivo, outros engenheiros precisam conhecer informações como:
quais dados o sistema incorporado está esperando
que formato de dados sua programação está esperando
como o dispositivo reagirá a diferentes entradas
o formato dos dados que o dispositivo emitirá
Essas informações são incluídas na documentação técnica que os engenheiros de software embarcados produzem por si mesmos, geralmente na forma de um manual. Às vezes, escritores técnicos, e não os engenheiros de verdade, criam esses manuais, a partir das anotações fornecidas pelos engenheiros de software. Ter documentação para se referir é inestimável para os usuários.