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.

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto Orientado a Objetos
Advertisements

Metodologia de testes Nome: Gustavo G. Quintão
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Engenharia de Software
APSOO Aula 05.
Tecnologia de Banco de Dados Grupo 3: Diógenes LíbanoElton S. Vianna Euglen AssisLisa Hayashida Marcelo da Cruz SalvadorRicardo Takemura Gerenciador de.
Técnicas de Teste de Software
Teste de Software.
Identificando requisitos
Engenharia de Software
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Tópicos Motivação para teste Por que algumas empresas não testam
Rational Unified Process(RUP)
Processos no Unix e Linux
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Linguagens de programação
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
Engenharia Reversa É o processo de derivar as especificações lógicas dos componentes do sistema a partir de sua descrição física com auxílio de ferramentas.
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Introdução Visão Geral do Método.
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Como Desenvolver Sistemas de Informação
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Classes e objetos P. O. O. Prof. Grace.
Professor Fernando Luís
Gerência de Configuração de Software
Paradigmas de programação
Introdução ao Teste Unitário com JUnit
Programação Avançada Prof. Natalia Castro Fernandes
Introdução a Computação Trabalho Final PUC Minas – São gabriel
Análise e Projeto de Sistemas
Análise e Projeto de Sistemas
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
Abertura.
Linguagem de Programação JAVA
Análise e Projeto de Sistemas
Arquitetura do Software
Fabíola Guerra Nakamura Vitor Alcântara Batista
SISTEMAS OPERACIONAIS
Professor: Márcio Amador
Orientação a Objetos Parte I
O Processo Unificado (UP)
ANÁLISE ESTRUTURADA DE SISTEMAS
Engenharia de Software
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Gestão de defeitos.
Introdução a Banco de Dados Aula 04
Automação de Testes de Software
Técnicas e Projeto de Sistemas
PHP – Aula01 Ferramentas -Web.
Técnicas e Projeto de Sistemas
WDM Web Data Modeling UCB – Universidade Católica de Brasília
Integração de Ferramentas CASE
Engenharia de Software
Testes de SW Aula 24.
Linguagem técnica de programação I Java
Clínica Veterinária Animax
Prof. Carlos Augusto da Costa Carvalho
Gerenciamento de Configuração de Software
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Erton W. Vieira Metodologias Ágeis, Qualidade de Software e Design Centrado no usuário: Pontos de Interação Erton W. Vieira.
O Modelo GOMS Fornece um modelo de Engenharia para a performance humana, capaz de produzir predições a priori ou em um estágio anterior ao desenvolvimento.
Sistema Almirante Gabriel Junji Ito Giuliano Diego Barbarra.
TÉCNICAS DE ESTIMATIVAS
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Transcrição da apresentação:

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

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/).

Análise de qualidade sobre o código original

Análise de qualidade O código original não era satisfatório em: Extensibilidade; Reusabilidade; Decomponibilidade; Componibilidade; Compreensibilidade; Continuidade.

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;

Modelagem do projeto

Diagrama de Classes Original Nossa proposta

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;

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;

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

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

Qualidade do Sistema Fatores externos

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;

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);

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);

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;

Qualidade do Sistema Fatores internos

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;

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;

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);

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;

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;

Trabalho Final – Técnicas de Construção de Programas Guilherme Bender Jonas Calvi Meinerz Prof. Érika Cota Universidade Federal do Rio Grande do Sul