[en] RECOVERY ORIENTED SOFTWARE - JOAO ALFREDO PINTO DE MAGALHAES (2010)
[pt] Software orientado à recuperação é construído com a perspective que falhas de hardware e software bem como erros de operação são fatos com os quais se deve conviver, pois são problemas que não podem ser resolvidos no desenvolvimento de aplicações reais e complexas. Consequentemente, qualquer software sempre terá uma chance diferente de zero de falhar. Algumas dessas falhas podem ser causadas por defeitos que podem ser removidos ou encapsulados. Uma questão chave é aumentar a detectabilidade de erros, ou em outras palavras, aumentar a auto-consciência comportamental de um software. Nesse trabalho, apresentamos os resultados da aplicação sistemática de técnicas conhecidas (design by contract, self-checking software, componentes de software, software depurável, design for testability, mock components e padrões) com o objetivo de criar software orientado à recuperação. Através da medição de cinco aplicações reais de tempo real, analisamos os efeitos da adoção dessas técnicas. Em particular, observamos o balanceamento do esforço gasto em diferentes estágios do desenvolvimento a exploramos o conceito de redundância de raciocínio que, além de prover uma maior detectabilidade de erros e depurabilidade, também leva ao aumento da qualidade por construção. Os resultados foram encorajadores por terem sido sistematicamente melhores do que aqueles reportados pela literatura e obtidos a um custo acessível.