Nos dias de hoje, as empresas de software tentando captar o maior número de clientes, lançam para o mercado uma vasta gama de produtos. Metas temporais têm que ser cumpridas pela empresa aquando do desenvolvimento de um novo produto, de forma a evitar que empresas concorrentes cheguem primeiro ao mercado com um produto de especificações semelhantes.
Todavia, o desenvolvimento de um produto em tempo reduzido pode levar a imperfeições no mesmo. E para atenuar este problema, as empresas são obrigadas a adotar novos processos que reduzam o time-to-market sem afetar a qualidade do produto. Evitando assim, que o produto entre no mercado com problemas que poderiam resultar em prejuízos, como: muitos recursos humanos alocados à manutenção pós venda do produto, perdas de clientes ou até indemnizações aos clientes lesados.
Normalmente os produtos desenvolvidos por uma empresa pertencem à mesma família de produtos, onde a base dos diversos produtos é a mesma, só variando algumas partes dos mesmos, para adaptar os produtos aos diferentes níveis de exigência dos clientes. Desta forma, partes de um produto que já se encontra desenvolvido, testado e a ser comercializado podem ser reutilizadas para o desenvolvimento de novos produtos, acelerando assim o processo de desenvolvimento.
Um bom exemplo de família de produtos onde se verifica o padrão apresentado anteriormente são as redes de sensores sem fios ( WSNs ). Estes tipos de redes são hoje em dia amplamente utilizadas em diversas aplicações, tais como: domésticas, industriais, engenharia civil, militares, monitorização ambiental e saúde. Sendo a base da rede semelhante às várias aplicações, e só variam algumas configurações especificas, tipos de sensores e tipos de actuadores atribuídos aos nós da rede ( edge devices ).
Para acelerar o processo do desenvolvimento de aplicações que utilizem WSNs, é proposto nesta dissertação a elaboração de uma framework generativa, que permita obter um bom compromisso entre a gestão de variabilidade e o desempenho dos edge devices. Na fase de design da framework serão utilizadas técnicas de Software Product Lines ( SPL ) para identificar o grau de variabilidade das funcionalidades dos edge devices. E na fase de implementação será utilizado template metaprogramming em C++ para gerir essa variabilidade.