Anato - HUB

Relatório Parcial

Resumo da Proposta

  • Sistema informatizado que facilite o processo de obtenção, armazenamento e acompanhamento do status de laudos.

  • Análise estática e dinâmica, BDD (Behavior Driven Development), Testes funcionas, e por fim o TDD

Dificuldades Encontradas

  • Dificuldade no uso do framework Django
  • Dados dos usuários em banco de dados remoto.
  • Configuração do ambiente de desenvolvimento.

Acompanhamento do Cronograma

Três atividades principais:

  1. Elaboração de um protótipo não funcional do software.
  2. Implementação um sistema de autenticação.
  3. Implementação de cadastro/exclusão/edição/consulta de pedido de exame

 

  • Desenvolvimento não acompanhou o cronograma previsto.
  • Cronograma reavaliado

Aplicação de V&V

Prototipagem

Prototipagem

  • Oferece uma avaliação prévia do sistema tanto pelo cliente, como pelo desenvolvedor.
  • Protótipos podem ser classificados quanto sua fidelidade.
  • Foram apresentados dois protótipos na reunião realizada no dia 29/09/2014 na Unidade de Anatomia Patológica do HUB.

Balsamiq Mockups

  • Permite a criação de modelos de sistemas web, mobile ou desktop.
  • Oferece um meio termo entre protótipos de baixa e de alta fidelidade
  • Elaborar as telas de forma rápida e funcional

WebNode

  • Possibilidade de criar páginas reais na internet de forma gratuita.
  • Com apenas alguns cliques, vários elementos interativos podem ser adicionados e posicionados na tela.
  • Cliente consigue visualizar algo mais próximo da realidade.

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Protótipos Desenvolvidos

Aplicação de V&V

BDD

Behavior Driven Development

  • Técnica de desenvolvimento ágil guiado pelo comportamento do negócio.
  • Combinação de linguagem nativa e ubíqua.
  • A escrita de um comportamento funcional do sistema é composta por duas partes.

Funcionalidade

Funcionalidade : [Nome]
Para [Valor ao negócio]
Eu, como [Papel]
Desejo poder realizar [Funcionalidade]

Cenários

Cenário: [Nome]
Dado que [Estado inicial do sistema]
Quando [Ação a ser realizada no sistema]
Então [Coisas que o sistema deve fazer após a ação do Quando]

Exemplo: Autenticação

Funcionalidade: Eu, como usuario,
Desejo efetuar login no sistema
Para poder utiliza-lo

    Cenario: Usuario digita apenas o nome de usuario
        Dado que o usuario acessa o sistema
        E aparece a tela de login
        Quando o usuario digita seu nome
        Então o sistema nao permite que o botao entrar seja clicado

    Cenario: Usuario digita apenas a senha
        Dado que o usuario acessa o sistema
        E aparece a tela de login
        Quando digita a sua senha
        Então o sistema nao permite que o botao entrar seja clicado

    Cenário: Usuario se autentica no sistema com sucesso
        Dado que o usuario acessa o sistema
        E aparece a tela de login
        Quando o usuario digita seu nome
        E digita a sua senha
        Então autentica o usuario com sucesso

Exemplo: Autenticação

@given(u'que o usuario acessa o sistema')
def accessing_the_system(context):
    context.driver = webdriver.Firefox()
    context.driver.get('http://localhost:8080/login/entrar/')

@given(u'aparece a tela de login')
def showing_login(context):
    context.driver.title | should | equal_to('Login | Anato HUB')

@when(u'o usuario digita seu nome')
def insert_username(context):
    username_input = context.driver.find_element_by_id('username')
    username_input.send_keys('test_user')

@when(u'digita a sua senha')
def insert_password(context):
    username_input = context.driver.find_element_by_id('password')
    username_input.send_keys('123456')

@then(u'o sistema nao permite que o botao entrar seja clicado')
def enter_button_deactivated(context):
    enter_button = context.driver.find_element_by_id('enter-button')
    disabled_attribute = enter_button.get_attribute('disabled')
    disabled_attribute | should | equal_to('true')
    context.driver.close()

Aplicação de V&V

Revisão em Pares

Revisão em Pares

  • Duas pessoas implementam código juntas.
  • Uma pessoa programa enquanto a outra revisa o código que está sendo construído.
  • Reduz a incidência de bugs em um sistema.
  • Falhas e erros de lógica são detectados (e corrigidos) mais cedo.
  • Código mais simples de sofrer manutenção.
  • Quantidade de tempo gasto na busca por defeitos diminui.

Dificuldades

  • Exige um maior envolvimento das pessoas.
  • Desenvolvedores devem entender que o código produzido é coletivo.
  • Produz um aumento no custo do projeto.
  • Dificuldade cultural de compartilhar conhecimento entre as pessoas.

Quadro de Pareamento

Obrigado

Anato - Relatorio Parcial

By Matheus Fernandes

Anato - Relatorio Parcial

  • 429