Desenvolvendo habilidades da engenharia de software nas séries iniciais dos cursos de computação

A maioria das universidades e faculdades da área de computação preocupam-se, no primeiro ano do curso, em ensinar técnicas de programação para os seus alunos, esquecendo das questões relacionadas à qualidade do processo que envolve este tipo de atividade. No primeiro ano, a atividade de programação é vista de forma isolada, muitas vezes os professores se esquecem que tal atividade está conectada, diretamente, com outras: projeto do programa (algoritmo no português estruturado ou no fluxograma) e teste formal. Com base nesta informação é possível afirmar que o aluno, ao ter contato com o desenvolvimento de um programa em uma determinada linguagem, executa, no mínimo, quatro atividades do processo de produção de software (vide Tabela 1).

Ao analisar a Tabela, é possível verificar que a abordagem proposta nas disciplinas de Programação é diferenciada. O aluno, ao implementar um programa, não tem mais contato apenas com um enunciado de uma determinada lista de exercício, ambos: ele e o professor encaram o antigo enunciado como um requisito ou uma funcionalidade do software.

Outro ponto pode ser destacado, o aluno não parte direto para programação, ele é obrigado a desenvolver um fluxograma do algoritmo, que irá atender ao requisito funcional para um determinado cliente, neste caso o professor da disciplina.

Na atividade de implementação, o professor da disciplina salienta a importância de se utilizar um padrão de codificação (o padrão adotado pelo professor é baseado no Código de Convenção JAVA). Além de utilizar o padrão de código, o aluno desenvolve o controle de versão do programa utilizando o CVS.

A atividade de teste é dividida em:

  • Teste interno: O professor divide a sala em grupos, geralmente cada grupo possui 4 alunos. Cada grupo recebe um conjunto de funcionalidades para testar, respeitando a seguinte restrição: O grupo NÃO pode testar uma funcionalidade desenvolvida por um de seus integrantes. Na execução da atividade de teste interno, a célula de teste deve definir: 1) Os casos de teste – quais os atributos que devem ser testados para aquela funcionalidade – para a definição dos casos de teste o aluno respeita este checklist. 2) O dado de entrada (em nosso caso a célula de teste pretende entrar com X para o campo sexo). 3) As saídas: esperadas e obtidas – salienta-se que a célula de teste é responsável por verificar se a redação do programa respeitou a convenção de código estabelecida.
  • Teste de aceitação: O teste de aceitação diferencia-se do teste de interno em apenas um aspecto: O teste é efetuado pelo cliente (o professor) na presença do desenvolvedor (o aluno).

Caso o programa não obtenha sucesso durante a atividade de teste, o mesmo deve ser corrigido pelo aluno – configurando assim o retrabalho.

Além de executar todas as atividades do processo, o aluno deve desenvolver a atividade de planejamento do projeto. Nela, ele estabelece um tempo para execução de cada atividade. Durante a execução do processo, tal cronograma sofre alterações e no final o aluno compara o tempo orçado com o realizado.

Por fim, noções de rastreabilidade de requisitos, também são implementadas na disciplina, lembre-se que a implementação de um programa depende de um enunciado em uma lista de exercício (em nosso caso uma funcionalidade), de um projeto de algoritmo apresentado em fluxograma (ou portugol) e, por fim, o programa será melhorado, constantemente, até chegar a um produto que agrade ao cliente. Tudo isto está interligado e pode ser rastreado.

José Augusto Fabri – fabri@utfpr.edu.br

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: