Imagine um software que você engenheiro desenvolveu, falhar em um sistema crítico, algo como uma usina de energia nuclear, uma máquina de raio x ou a explosão de um foguete. Vou citar exemplos reais para ficar bem mais claro. Estivemos próximos de uma terceira guerra mundial quando um erro de software no sistema de alerta da União Soviética, indicou que 5 mísseis balísticos tinham sido lançados pelos Estados Unidos, isso em 1983 em pleno a Guerra Fria. legal, né ? E o que falar sobre o software mau desenhado que foi responsável, em 1996, da explosão do foguete lançador europeu Ariane-5, quando a 40 segundos após a iniciação da sequência de vôo, o foguete se desviou de sua rota, partiu e explodiu. É como brincadeira de criança... Existem vários outros desastres causados por erros em software, mas não vem ao caso.
Eu ainda não sou um expert em Engenharia de Software, mas fuçando alguns materiais e falando com algumas pessoas entendidas, vou apresentar 3 recursos de linguagem de programação que exercem um efeito significativo sobre a confiabilidade de programas. "Lanlico, com esses 3 recursos eu evito a explosão de um foguete ?" Calma aí, mano. Existem muitos recursos e pessoas especializadas para isso, o que pretendo é apenas passar uma idéia.
Pois bem, quando falamos que um programa é confiável queremos dizer que ele se comporta de acordo com suas especificações sob todas as condições. Diante essa pequena definição apresento-lhes os 3 recursos:
Verificação de tipos: simplesmente testamos se existem erros de tipo em determinado programa, ou pelo compilador ou durante a execução do programa. É um fator muito importante na confiabilidade da linguagem. Um exemplo de como a falta de verificação de tipos, em tempo de compilação ou em tempo de execução levam a erros de programa é o uso de funções na linguagem C original. O tipo de um argumento em uma chamada a função não é verificado para determinar se ele coincide com o do parâmetro formal (passar um inteiro onde era para receber um real), e nem o compilador, nem o sistema em tempo de execução detectarão a incoerência. Os sistemas Unix tratam isso com um programa utilitário chamado lint.
Manipulação de Exceções: O programa intercepta erros em tempo de execução ou outras condições incomuns detectadas, eles colocam em prática medidas corretivas e, depois, prosseguem. Dessa forma conseguimos um grande auxílio para a confiabilidade. Linguagens como Ada, C++ e Java incluem grandes capacidades de manipular exceções.
Legibilidade e Capacidade de Escrita: Um programa escrito em uma linguagem que não suporta maneiras naturais de expressar os algoritmos exigidos usará, necessariamente, métodos não-naturais. Portanto, quanto mais fácil é escrever um programa, mais probabilidade ele tem de ser correto. Programas de difícil leitura complicam também sua escrita e sua modificação.
Não podemos errar, teste, teste, teste, teste, teste, teste, teste. Vale lembrar que as falhas de sistemas não-críticos também podem ser caras, um comércio ou ações judiciais, tudo com problemas por conta de um erro em um sofware.
Pois bem, quando falamos que um programa é confiável queremos dizer que ele se comporta de acordo com suas especificações sob todas as condições. Diante essa pequena definição apresento-lhes os 3 recursos:
Verificação de tipos: simplesmente testamos se existem erros de tipo em determinado programa, ou pelo compilador ou durante a execução do programa. É um fator muito importante na confiabilidade da linguagem. Um exemplo de como a falta de verificação de tipos, em tempo de compilação ou em tempo de execução levam a erros de programa é o uso de funções na linguagem C original. O tipo de um argumento em uma chamada a função não é verificado para determinar se ele coincide com o do parâmetro formal (passar um inteiro onde era para receber um real), e nem o compilador, nem o sistema em tempo de execução detectarão a incoerência. Os sistemas Unix tratam isso com um programa utilitário chamado lint.
Manipulação de Exceções: O programa intercepta erros em tempo de execução ou outras condições incomuns detectadas, eles colocam em prática medidas corretivas e, depois, prosseguem. Dessa forma conseguimos um grande auxílio para a confiabilidade. Linguagens como Ada, C++ e Java incluem grandes capacidades de manipular exceções.
Legibilidade e Capacidade de Escrita: Um programa escrito em uma linguagem que não suporta maneiras naturais de expressar os algoritmos exigidos usará, necessariamente, métodos não-naturais. Portanto, quanto mais fácil é escrever um programa, mais probabilidade ele tem de ser correto. Programas de difícil leitura complicam também sua escrita e sua modificação.
Não podemos errar, teste, teste, teste, teste, teste, teste, teste. Vale lembrar que as falhas de sistemas não-críticos também podem ser caras, um comércio ou ações judiciais, tudo com problemas por conta de um erro em um sofware.
5 comentários:
doido vei
Isso vale principalmente para as provas da faculdade, pena que não podemos consultar as escrituras e/ou consultar os compatriotas na maioria dos exames.
Aliás era uma ideia de as monitorias criarem um blog desses aqui para postar as dúvidas das matérias, tanto de matemática quanto as de programação, seria bom que aprenderíamos com as dúvidas dos outros e não erraríamos no futuro, que é o tema do tópico
Anônimo 2,
acho que esse assunto é muito importante, a forma que é medido o conhecimento, com provas, testes e coisas do genero é bem complicado. Eu diria que nada na vida é baseado em provas, todo e qualquer engenheiro formado terá uma bibliografia para consultar, ele não precisa saber tudo na ponta da língua, mas é necessário que ele tenha passado por várias experiências e saber o local onde vai encontrar a resposta.
Realmente, na "vida real" sua "lojinha" ou sua "escola" não pode estar com pau no cadastramento de produtos, como acontece... hum... acontece por aí né... lol
olha o blgo do alan bombando!!
kkk
Postar um comentário
Gostou da esbórnia de hoje ? Comentem.