técnicas de construção de programas trabalho final: sistema de votação para o colegiado do...

25
Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática. Guilherme Bender e Jonas Meinerz

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Técnicas de Construção de

ProgramasTrabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática.

Guilherme Bender e Jonas Meinerz

Page 2: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Trabalho Final

Trabalho desenvolvido por Guilherme Bender e Jonas Meinerz para a disciplina de Técnicas de Construção de Programas no semestre 2012/2 pela Universidade Federal do Rio Grande do Sul sob tutela da Prof. Erika Cota.

Os diagramas apresentados neste trabalho foram feitos utilizando a ferramenta open source StarUML (staruml.sourceforge.net/).

Os testes caixa-preta foram feitos utilizando o framework gratuito JUnit (junit.org/).

A programação foi realizada com o auxílio da IDE gratuita NetBeans (netbeans.org/).

Page 3: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Análise de qualidade sobre o código original

Page 4: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Análise de qualidade

O código original não era satisfatório em: Extensibilidade;

Reusabilidade;

Decomponibilidade;

Componibilidade;

Compreensibilidade;

Continuidade.

Page 5: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Análise de qualidade Mudanças propostas:

Adicionar ambiente gráfico;

Padronizar código;

Refatorar código repetido;

Documentar o código;

Salvar o estado atual do sistema;

Refatorar classes que não atendem aos princípios de OO;

Refatorar Switch-Cases muito extensos;

Refatorar classes com métodos sem código;

Programar utilizando a técnica TDD;

Tratar exceções;

Mudar o mecanismo de votação;

Page 6: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Modelagem do projeto

Page 7: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Diagrama de Classes

Original Nossa proposta

Page 8: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Diagrama de classes

As diferenças entre o diagrama considerado ideal pelos integrantes desse grupo e o diagrama apresentado no trabalho original eram demasiadas;

Refatorar o código original seria mais custoso e complexo do que construir um sistema completamente novo;

Decidimos que iniciariamos um novo sistema baseado no nosso diagrama de classes;

Page 9: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Diferenças entre o diagrama de classes e a implementação

Na implementação existe uma classe chamada “VotingSystem” que atua como gerenciador das votações e é a única classe com a qual a interface do sistema se comunica;

Modelamos no diagrama “Chief” e “Secretary” como classes derivadas de “FacultyMember”. Na implementação, porém, a única coisa que os distingue é o campo “role”;

Page 10: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Diagrama de Sequência Definimos a implementação do sistema de votações baseada no

seguinte diagrama de sequência:

Page 11: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Diagrama de Sequência O login de usuário, por sua vez, foi implementado seguindo a

seguinte modelagem:

Page 12: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do SistemaFatores externos

Page 13: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do sistema:Fatores Externos

Buscamos tornar fácil a interação do sistema com o usuário, produzindo uma interface intuitiva (implica em melhor facilidade de uso);

Nenhum processo executado pelo sistema é demorado ou requer qualquer tipo de espera do usuários (implica em melhor velocidade);

Adicionamos o salvamento do estado atual do programa, fazendo com que ele seja útil;

A partir da configuração atual do sistema, seria descomplicado fazê-lo rodar em um servidor web ou sincronizar as informações salvas pelo programa, para que usuários possam votar ao mesmo tempo;

Page 14: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do sistema:Fatores Externos

Buscamos assegurar a corretude do programa com testes (automatizados ou não) e de fato o programa realiza as funções definidas em sua especificação;

Para aumentar a robusteza do sistema, tratamos as possíveis exceções e casos de “entradas indevidas”;

O sistema é extensível já que os módulos fazem verificações quanto à consistência dos parâmetros (embora às vezes isso seja redundante) e para adicionar novas funcionalidades basta extender o “gerenciador” (classe VotingSystem);

Page 15: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do sistema:Fatores Externos

Não fizemos métodos realmente genéricos porque utilizamos todos os tipos de métodos genéricos cabíveis para montar o nosso sistema. A sua reusabilidade é questionável, visto que poucas coisas poderiam ser generalizadas. Todavia, os métodos que compõem este sistema são métodos reutilizados de bibliotecas confiáveis;

Os pacotes e classes do sistema são facilmente compatíveis com outros métodos pois são relativamente consistentes por si só (“relativamente” pois foram testados por testes de unidade);

Page 16: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do sistema:Fatores Externos

Não existe nenhum procedimento que demande muito processamento e todos os procedimentos do sistema são executados em tempo real, portanto, é um sistema eficiente;

O sistema é portável para qualquer ambiente de execução, visto que roda sobre uma máquina virtual;

Page 17: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do SistemaFatores internos

Page 18: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do Sistema:Fatores Internos Padronizamos a nomenclatura das variáveis, classes e métodos do

código, utilizando somente a lingua inglesa e a mesma estrutura de nomenclatura;

Documentamos os métodos simples por si só, mantendo claro o seu procedimento de execução;

Documentamos os métodos um pouco mais complexos com comentários;

Descrevemos as intenções dos métodos seja por seu nome e explicamos as possibilidades de retorno com um cabeçalho. No cabeçalho, se necessário, é dada uma introdução de como aquele método opera;

Page 19: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Qualidade do Sistema:Fatores Internos Foram executadas refatorações usando o método original como

oráculo;

As funções possuem somente um ponto de retorno;

As cláusulas de fim de laços são bastante claras;

Utilizadas enumerações sempre que adequado;

Page 20: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Testes

Page 21: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Testes

Desenvolvemos vários testes antes mesmo da implementação (para as classes Voting e FacultyMember, por exemplo);

Utilizamos o framework “JUnit”;

O programa interpreta as entradas de I/O como strings, logo, não há problemas de incompatibilidade de tipo a serem testados (e se o programador tentar utilizar um tipo diferente, ocorrerá um erro de compilação);

Page 22: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Testes

Encontramos vários erros nos nossos códigos e também nos equivocamos em certas refatorações, porém a bateria de testes definida tornou fácil a constatação dos mesmos;

Na bateria de testes atual, o programa teve sucesso;

Todavia, execução é comprometida em alguns casos de falha de gravação e leitura de arquivos;

Page 23: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Conclusão

Page 24: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Conclusão

Foi possível implementar tudo que especificamos na etapa 1 do trabalho;

Houveram divergências entre a modelagem (etapas 2 e 3) e a implementação (etapa 4), o que nos fez ver que não é interessante que a modelagem pode nunca ter um formato “final” e que as etapas de modelagem e implementação são mais bem feitas se feitas simultâneamente;

A abordagem orientada a objetos facilitou o desenvolvimento do projeto, embora no início da implementação muitas vezes fazíamos trechos de códigos “estruturados”;

Page 25: Técnicas de Construção de Programas Trabalho Final: Sistema de Votação para o Colegiado do Depto. de Informática Aplicada do Instituto de Informática

Trabalho Final – Técnicas de Construção de Programas

Guilherme Bender

Jonas Calvi Meinerz

Prof. Érika Cota

Universidade Federal do Rio Grande do Sul