
Essência de solução de problemas
Compreenda o problema. Algumas vezes é difícil de admitir, porém, a maioria de nós é arrogante
quando nos é apresentado um problema. Ouvimos por alguns segundos e então pensamos:
"Ah, sim, estou entendendo, vamos começar a resolver este problema". Infelizmente, compreender
nem sempre é assim tão fácil. Vale a pena despender um pouco de tempo respondendo a algumas
questões simples:
• Quem tem interesse na solução do problema? Ou seja, quem são os interessados?
• Quais são as incógnitas? Que dados, funções e recursos são necessários para resolver
apropriadamente o problema?
• O problema pode ser compartimentalizado? É possível representá-lo em problemas menores
que talvez sejam mais fáceis de ser compreendidos?
• O problema pode ser representado graficamente? É possível criar um modelo analítico?
Planeje a solução. Agora você entende o problema (ou assim pensa) e não vê a hora de começar
a codificar. Antes de fazer isso, relaxe um pouco e faça um pequeno projeto:
• Você já viu problemas similares anteriormente? Existem padrões que são reconhecíveis
em uma potencial solução? Existe algum software que implemente os dados, as funções
e características necessárias?
• Algum problema similar já foi resolvido? Em caso positivo, existem elementos da solução
que podem ser reutilizados?
• É possível definir subproblemas? Em caso positivo, existem soluções aparentes e imediatas para
eles?
• É possível representar uma solução de maneira que conduza a uma implementação efetiva?
É possível criar um modelo de projeto?
Execute/leve adiante o plano. O projeto elaborado que criamos serve como um mapa para
o sistema que se quer construir. Podem surgir desvios inesperados e é possível que se descubra
um caminho ainda melhor à medida que se prossiga, porém, o "planejamento" nos permitirá
que continuemos sem nos perder.
• A solução se adéqua ao plano? O código-fonte pode ser atribuído ao modelo de projeto?
• Cada uma das partes componentes da solução está provavelmente correta? O projeto
e o código foram revistos, ou, melhor ainda, provas da correção foram aplicadas ao
algoritmo?
Examine o resultado. Não se pode ter certeza de que uma solução seja perfeita, porém,
pode-se assegurar que um número de testes suficiente tenha sido realizado para revelar o maior
número de erros possível.
• É possível testar cada parte componente da solução? Foi implementada uma estratégia de
testes razoável?
• A solução produz resultados que se adéquam aos dados, às funções e características necessários?
O software foi validado em relação a todas as solicitações dos interessados?
