ciência da computação
Transcrição
ciência da computação
PRÓ-REITORIA DE GRADUAÇÃO TRABALHO DE CONCLUSÃO DE CURSO CIÊNCIA DA COMPUTAÇÃO SISCUBE – SISTEMA TUTOR PARA CUBO MÁGICO Autores: Bruno Cavalcanti Freitas Carlos Alberto de Alcântara Júnior Rodrigo Maciel Galvão Orientador: Prof. Dsc. Fábio Bianchi Campos 2008 BRUNO CAVALCANTI FREITAS CARLOS ALBERTO DE ALCÂNTARA JÚNIOR RODRIGO MACIEL GALVÃO SISCUBE – SISTEMA TUTOR PARA CUBO MÁGICO Trabalho apresentado ao curso de graduação em Bacharelado em Ciência da Universidade Computação Católica de da Brasília, como requisito parcial para obtenção do Título de Bacharel em Ciência da Computação. Orientador: Prof. Dsc. Fábio Bianchi Campos Brasília 2008 Trabalho de autoria de Bruno Cavalcanti Freitas, Carlos Alberto de Alcântara Júnior e Rodrigo Maciel Galvão, intitulado SISCUBE – Sistema Tutor para Cubo Mágico, requisito parcial para obtenção do grau de Bacharel em Ciência da Computação, defendido e aprovado em 20/11/2008, pela banca examinadora constituída por: ______________________________________________ Prof. Dsc. Fábio Bianchi Campos _____________________________________________ Profª. Dra Maristela Terto de Holanda Brasília 2008 DEDICATÓRIA A todos que nos acompanharam, não somente neste projeto, como também em mais esta etapa de vida, tornando possível a conquista de mais um objetivo. AGRADECIMENTOS “Primeiramente, agradeço a DEUS, que me deu força, ânimo, coragem e condições de concluir esse projeto e pela grande quantidade de conhecimento adquirido ao longo desses quatro anos. Agradeço à minha mãe, pelas palavras de incentivo, e sempre confortantes, nas horas de dificuldades, ao meu pai, pelo apoio e empenho, me auxiliando nessa caminhada, aos meus irmãos por saberem entender minhas horas de nervosismo e falta de paciência, e à minha namorada, por suportar com paciência e extrema maturidade, meus momentos de ausência. Agradeço ao professor Fábio Bianchi Campos, que nos ajudou com paciência e entusiasmo, sempre acreditando e confiando no nosso trabalho, a finalizar esse projeto com sucesso e por nos ter passado tamanha quantidade de conhecimento. Finalmente, mas não menos importante, agradeço aos meus companheiros e amigos Carlos e Rodrigo, por termos passado esses dois semestres trabalhando nesse projeto, enfrentando dificuldades e adversidades de forma madura e consciente, sempre nos lembramos que acima de tudo, somos amigos...” Bruno Cavalcanti Freitas “Agradeço ao Orientador Prof. Bianchi pelo incentivo, simpatia e presteza no auxílio às atividades e discussões sobre o andamento deste projeto final. Aos colegas de projeto Bruno e Rodrigo pelo comprometimento e dedicação. Aos colegas de classe pela espontaneidade e alegria na troca de informações e materiais numa rara demonstração de amizade e solidariedade. A minha família pela paciência em tolerar a ausência e por todo o auxílio por ela me dado. E, finalmente, a Deus pela oportunidade e pelo privilégio que me foi dado em compartilhar tamanha experiência de aprendizado.” Carlos Alberto de Alcântara Júnior “Agradeço a todo corpo docente do curso de Ciência da Computação da Universidade Católica de Brasília pelo conhecimento transmitido ao longo destes quatro anos e em especial ao Prof. Dr. Fábio Bianchi Campos por ter-nos direcionado na aplicação deste conhecimento e nos incentivado a saber mais e a fazer o nosso melhor. Agradeço a todos que conheci durante esta jornada e em especial aos amigos Bruno e Carlos, por acreditarem em mim e no nosso projeto. Agradeço aos meus amigos, aos meus irmãos consangüíneos e carinhosamente à minha namorada pelo apoio e principalmente pelos momentos de união, alegria e confraternização que foram essenciais para que eu tivesse força para prosseguir. Agradeço, acima de tudo, aos meus pais, pelo amor, carinho, compreensão, educação, enfim, por tudo que me deram e ainda me proporcionam. E é claro, a Deus, por todas as oportunidades a mim dadas. Muito obrigado!” Rodrigo Maciel Galvão EPÍGRAFE “Dar menos que o seu melhor é sacrificar o dom que recebeu.” Steve Prefontaine RESUMO Este projeto apresenta o produto em desenvolvimento do trabalho de conclusão do curso de Ciência da Computação da UCB, que consiste na criação de um sistema tutor cuja finalidade é transmitir ao usuário a competência para resolver o cubo mágico. Inicialmente, na disciplina de Inteligência Artificial, foi desenvolvido um aplicativo capaz de resolver o cubo mágico a partir de qualquer configuração. Posteriormente, devido ao interesse das pessoas em aprender sobre sua resolução, incorporou-se a idéia de integrar um tutorial interativo ao sistema já existente. Basicamente, o tutorial funciona da seguinte maneira: o usuário seleciona a etapa que deseja aprender e o sistema retorna o cubo configurado conforme a opção escolhida. A partir daí, usuário e sistema interagem até que o aprendizado da etapa seja concluído. Este processo envolve algoritmos consideravelmente complexos, haja visto o número de possibilidades mapeadas, a análise para a decisão dos movimentos a serem realizados e as explicações correspondentes a serem apresentadas. Palavras-chave: Cubo Mágico. Sistema Tutor. ABSTRACT This project presents the product from the conclusion project of the of Computer Science graduation at the UCB, which is the creation of a mentor system whose purpose is to teach it’s user to solve the Rubik’s Cube. Initially, at the discipline of Artificial Intelligence, an application able to solve the Rubik’s Cube from any configuration was developed. Later, due to the interest of the people to learn about it solution, the idea of integrating an interactive tutorial to the existing system was incorporated. Basically, the tutorial works like: The user selects the stage which is willing to learn and the system returns the cube configured as the preferred option. From there, users and system interact until the learning stage is completed. This process involves considerably complex algorithms, concerning the number of possibilities for mapping, analyzing the decision of the rotation of the cube to be made and the corresponding explanations. Keywords: Rubik’s cube. Tutorial. LISTA DE ILUSTRAÇÕES Figura 1.1 Projeto de Inteligência Artificial em duas dimensões............................... 18 Figura 4.1 Tipo de Cubo Mágico .............................................................................. 27 Figura 4.2 Centros .................................................................................................... 28 Figura 4.3 Cantos ..................................................................................................... 28 Figura 4.4 Meios ....................................................................................................... 28 Figura 4.5 Estrutura interna do cubo mágico ............................................................ 28 Figura 4.6 Localização e orientação dos cantos....................................................... 29 Figura 4.7 Localização e orientação dos meios........................................................ 30 Figura 4.8 Localização e orientação dos centros ..................................................... 30 Figura 4.9 Aplicativo Rubik’s Cube ........................................................................... 31 Figura 4.10 Matriz tridimensional.............................................................................. 33 Figura 4.11 Rótulos de cada posição da matriz........................................................ 33 Figura 4.12 Resultado da execução do movimento R .............................................. 34 Figura 5.1 Representação do ciclo de vida do PU.................................................... 36 Figura 5.2 Logomarca Java ...................................................................................... 38 Figura 7.1 Modelo de Domínio ................................................................................. 52 Figura 7.2 Diagrama de Casos de Uso .................................................................... 53 Figura 7.3 Modelo de Arquitetura ............................................................................. 54 LISTA DE TELAS DO SISTEMA Tela 1 Efetuar Login .................................................................................................. 60 Tela 2 Tela Principal do Applet, acessada nos casos de uso AcessarTutorial3D, TreinarCuboVirtual e JogarCuboVirtual ..................................................................... 63 Tela 3 Tela de Níveis e Etapas, acessada nos casos de uso AcessarTutorial3D e TreinarCuboVirtual .................................................................................................... 64 Tela 4 Acessar Tutorial 3D ........................................................................................ 64 Tela 5 Treinar Cubo Virtual ....................................................................................... 67 Tela 6 Jogar Cubo Virtual.......................................................................................... 71 Tela 7 Cadastrar Usuário .......................................................................................... 77 Tela 8 Editar Cadastro .............................................................................................. 83 Tela 9 Enviar Mensagem Pessoal............................................................................. 88 LISTA DE TABELAS Tabela 5.1 Marcos e Pontos de Controle .................................................................. 40 Tabela 5.2 Riscos ..................................................................................................... 43 Tabela 5.3 Impactos ................................................................................................. 43 Tabela 5.4 Documentos do Projeto........................................................................... 43 Tabela 5.5 Recursos Humanos................................................................................. 44 Tabela 5.6 Recursos de Hardware ........................................................................... 44 Tabela 5.7 Recursos de Software ............................................................................. 44 Tabela 5.8 Cronograma ............................................................................................ 47 Tabela 5.9 Glossário ................................................................................................. 48 SUMÁRIO 1 1.1 1.2 1.3 1.4 INTRODUÇÃO .......................................................................................... 17 Motivação ................................................................................................ 17 Breve Histórico ....................................................................................... 17 Problemas Diagnosticados .................................................................... 19 Usuários do Sistema............................................................................... 19 2 2.1 2.2 OBJETIVOS ............................................................................................. 20 Objetivo Geral ......................................................................................... 20 Objetivo Específico ................................................................................. 20 3 3.1 3.2 3.3 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.5 PROPOSTA DO SISTEMA....................................................................... 21 Descrição do Sistema Proposto ............................................................ 21 Resultados Esperados ........................................................................... 21 Restrições do Sistema Proposto ........................................................... 22 Recursos Necessários para Execução ................................................. 23 Descrição do Hardware Ideal ................................................................. 23 Descrição do Hardware Mínimo............................................................. 23 Descrição do Software ........................................................................... 23 Configuração da Rede ............................................................................ 23 Fontes dos Softwares Necessários ....................................................... 23 Áreas Afetadas pelo Novo Sistema ....................................................... 23 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.7.1 4.7.2 CONTEXTUALIZAÇÃO DO TEMA PROPOSTO ..................................... 25 Cubo mágico – Histórico e Informações............................................... 25 Cenário do Speedcubing ........................................................................ 26 Cubos Mágicos mais conhecidos ......................................................... 26 Estrutura Física do Cubo Mágico .......................................................... 27 O Cubo Virtual ......................................................................................... 29 Interface entre Inteligência e Visão ....................................................... 32 Matriz, a parte Inteligente do Cubo ....................................................... 33 Representação ........................................................................................ 33 Execução de Movimentos ...................................................................... 34 5 5.1 5.1.1 5.1.2 5.1.3 5.1.4 5.2 5.2.1 5.2.2 PLANEJAMENTO DO PROJETO ............................................................ 35 Plano do Processo de Desenvolvimento .............................................. 35 Ciclo de Vida do Projeto ......................................................................... 35 Métodos de Desenvolvimento e Ferramentas CASE ........................... 36 Linguagens de Programação ................................................................. 37 Ambiente de Hardware para Desenvolvimento .................................... 38 Plano de Organização............................................................................. 39 Equipe de Gerência ................................................................................ 39 Equipe de Desenvolvimento .................................................................. 39 5.3 5.3.1 5.3.2 5.3.3 5.4 5.4.1 5.5 5.5.1 5.5.2 5.5.3 5.6 5.7 Plano de Acompanhamento ................................................................... 39 Marcos e Pontos de Controle ................................................................ 40 Métodos de Acompanhamento e Controle ........................................... 41 Análise e Gerência de Riscos ................................................................ 41 Plano de Documentação ........................................................................ 43 Documentos do Projeto.......................................................................... 43 Plano de Recursos e Produtos .............................................................. 44 Recursos Humanos ................................................................................ 44 Recursos de Hardware ........................................................................... 44 Recursos de Software ............................................................................ 44 Cronograma............................................................................................. 44 Glossário ................................................................................................. 47 6 6.1 6.2 6.3 6.4 6.5 6.6 ESPECIFICAÇÃO DOS REQUISITOS DO SISTEMA.............................. 49 Descrição do Problema .......................................................................... 49 Identificação dos Interessados .............................................................. 49 Descrição das necessidades dos interessados ................................... 49 Descrição das características do sistema ............................................ 49 Requisitos do software........................................................................... 50 Restrições................................................................................................ 51 7 7.1 7.2 7.3 7.4 DIAGRAMAS UML ................................................................................... 52 Modelo de Domínio ................................................................................. 52 Visão Geral dos Casos de Uso e Atores ............................................... 53 Modelo de Arquitetura ............................................................................ 54 Diagrama de Implantação....................................................................... 55 8 DIFICULDES ENCONTRADAS ................................................................ 56 9 CONCLUSÃO ........................................................................................... 57 10 BIBLIOGRAFIA ........................................................................................ 58 11 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.1.5 11.1.6 11.1.7 11.1.8 11.1.9 11.2 ANEXOS ................................................................................................... 59 Anexo I – Especificação dos Casos de Uso ......................................... 59 Efetuar Login ........................................................................................... 59 Acessar Tutorial 3D ................................................................................ 61 Treinar Cubo Virtual................................................................................ 65 Jogar Cubo Virtual .................................................................................. 67 Cadastrar Usuário ................................................................................... 71 Editar Cadastro ....................................................................................... 77 Pesquisar Usuário .................................................................................. 84 Enviar Mensagem Pessoal ..................................................................... 86 Entrar Contato Administradores ........................................................... 88 Anexo II – Realização dos Casos de Uso Críticos ............................... 90 11.2.1 11.2.1.1 11.2.1.2 11.2.1.3 11.2.2 11.2.2.1 11.2.2.2 11.2.2.3 11.2.3 11.2.3.1 11.2.3.2 11.2.3.3 11.3 11.4 11.5 Acessar Tutorial 3D ................................................................................ 90 Diagrama de Classes de Análise .............................................................. 90 Diagrama de Seqüência do Sistema ......................................................... 91 Diagrama de Seqüência............................................................................ 92 Treinar Cubo Virtual................................................................................ 93 Diagrama de Classes de Análise .............................................................. 93 Diagrama de Seqüência do Sistema ......................................................... 94 Diagrama de Seqüência............................................................................ 95 Jogar Cubo Virtual .................................................................................. 96 Diagrama de Classes de Análise .............................................................. 96 Diagrama de Seqüência do Sistema ......................................................... 97 Diagrama de Seqüência............................................................................ 98 Anexo III - Notação dos Movimentos..................................................... 99 Anexo IV - Apostila Nível Básico ......................................................... 104 Anexo V - Apostila Nível Intermediário ............................................... 109 17 1 1.1 INTRODUÇÃO Motivação Com o decorrer dos últimos meses, o nosso interesse fez com o que o cubo mágico se tornasse parte do nosso cotidiano e inúmeras vezes nos encontramos com pessoas que também se interessam em aprender e brincar com o cubo mágico. Todavia, devido à complexidade em resolvê-lo e ao fato de não existirem fontes tão didáticas e dinâmicas de aprendizado, muitos aprendizes acabam desistindo do desafio de concluir os passos necessários para sua resolução. Devido a estes problemas, o projeto propõe um tutorial dinâmico, onde o usuário poderá interagir com um cubo mágico virtual1 representado em três dimensões, manipulando-o da forma que quiser e recebendo dicas e orientações do sistema quanto às etapas de resolução2. Acreditamos que com essa ferramenta de aprendizado, mais pessoas se interessarão em conhecer um pouco mais sobre este quebra-cabeça sensacional e sobre os benefícios mentais que ele proporciona. 1.2 Breve Histórico O “passatempo” de resolver o cubo mágico já é praticado pelos integrantes do grupo há algum tempo, e durante a disciplina de Inteligência Artificial (IA), na Universidade Católica de Brasília surgiu a seguinte idéia: fazer com que o computador resolvesse o cubo mágico a partir de qualquer configuração. Para atingir o objetivo final deste projeto de disciplina uma primeira versão cujo foco era criar uma estrutura que possibilitasse a resolução e tradução do algoritmo básico de resolução3 foi desenvolvida. Esta estrutura tinha que resolver dois problemas: representar o cubo em memória e permitir a execução dos movimentos. Depois de criada a estrutura, foi obtido um programa que resolvia o cubo mágico a partir de qualquer configuração e realizava movimentos feitos pelo usuário, com uma interface em duas dimensões, conforme a figura a seguir: 1 2 3 Representação do cubo mágico em um computador. Normalmente, será referenciado apenas como cubo virtual. O método de resolução abordado no projeto é o método de resolução por camadas, que consiste na resolução de uma camada do cubo mágico por vez. A melhor forma de aprendêlo é dividindo o processo de aprendizado em partes, denominadas etapas de resolução. Mais detalhes podem ser vistos no Anexo III – Apostila Básica. É o algoritmo que apresenta os passos mais simples e compreensíveis para resolução do cubo mágico. Em contrapartida, normalmente são executados mais movimentos. 18 Figura 1.1 Projeto de Inteligência Artificial em duas dimensões Finalizada a primeira etapa, foi verificado que era difícil ver e compreender o que acontecia. Com isso, foi decidido migrar a interface existente para uma que fornecesse ao usuário maior interação e compreensão. Para desenvolvê-la, foi iniciada uma pesquisa para descobrir como criar interfaces em três dimensões. Numa dessas pesquisas, foi descoberto o aplicativo Rubik's Cube. O aplicativo Rubik's Cube foi desenvolvido pelo suíço Werner Randelshofer e se caracteriza como “software livre”, pois segue a filosofia GNU ou GPL (General Public License). Com isso, seu código estava disponível e as alterações necessárias puderam ser feitas. Em contrapartida, o SISCUBE deve obedecer às regras da licença, se caracterizando também como “software livre”. Internamente, o aplicativo de Werner possui métodos que possibilitam a realização de movimentos no cubo virtual. Com isso, restava ao grupo descobrir como mandar movimentos ao Rubik’s Cube a partir do projeto inicial que resolvia o cubo mágico. Depois de finalizada a parte de integração entre inteligência (solução do grupo) e interface (aplicativo 3D), a proposta para o projeto da disciplina de IA estava concluída. 19 1.3 Problemas Diagnosticados Conforme dito no tópico 1.2, o aplicativo obtido na disciplina de IA era constituído por duas partes: a inteligência e a interface em três dimensões, que se integravam muito bem e possibilitavam a percepção real dos movimentos que eram executados no cubo virtual. No entanto, apesar de possuir uma boa representação visual, a aplicação não permitia que o usuário aprendesse, efetivamente, a resolver o cubo mágico, pois seus movimentos eram executados de forma seqüencial, sem intervalos e sem explicações. Não havia divisão do processo de resolução em “partes”, dificultando o entendimento de um leigo do que era feito e do por que era feito. Resumindo, a aplicação apenas possibilitava que um usuário realizasse movimentos em um cubo virtual e visse que ele está sendo resolvido pelo sistema. 1.4 Usuários do Sistema Usuários representam as diferentes pessoas que usam o sistema ou produto. Definindo mais formalmente, são aqueles que se comunicam com o sistema e a ele são externos (PRESSMAN, 2006). No SISCUBE, os usuários do sistema são aqueles que possuem acesso à Internet e ao entrarem no sítio do projeto exploram pelo menos uma de suas funcionalidades. Dividem-se em usuários identificados e não identificados e administradores. Os usuários identificados são aqueles que se cadastraram no sistema e que através do nome de usuário e senha, definidos durante o cadastro, usufruem de todas as funcionalidades disponíveis no sítio do projeto. Já os usuários não identificados são aqueles que ainda não se cadastraram ou não se identificaram no sítio do projeto. Em conseqüência, não usufruem de muitas funcionalidades disponíveis. Por sua vez, os administradores são aqueles que podem, além de executar todas as funcionalidades de um usuário identificado, gerenciar o sistema (usuários, agenda de notícias, etc.). 20 2 2.1 OBJETIVOS Objetivo Geral Este projeto tem como objetivo principal transmitir ao usuário a competência para resolver o cubo mágico, dando a possibilidade do mesmo praticar os conhecimentos recém adquiridos, para que sejam fixados à mente de forma mais eficiente. 2.2 Objetivo Específico Para atingir o objetivo geral de maneira eficiente, uma série de objetivos específicos deve ser alcançada: • Desenvolver um tutorial dinâmico e interativo sobre a resolução do cubo mágico, que proporcione facilidades para o entendimento do usuário, como por exemplo: o Fazer com que uma peça seja visualmente destacada quando pertinente. o Ajustar os movimentos do cubo para que sejam mais bem compreendidos por um iniciante. o Adicionar explicações por escrito aos passos executados pelo cubo virtual. • Desenvolver um site para disponibilizar mais facilmente aos usuários o acesso às funcionalidades da aplicação. • Permitir no site que os usuários interajam entre si para trocar idéias, tirar dúvidas, etc. • Permitir ao usuário treinar no cubo virtual os conhecimentos adquiridos. • Oferecer funcionalidades adicionais como cronometragem para que o usuário acompanhe seu progresso. 21 3 3.1 PROPOSTA DO SISTEMA Descrição do Sistema Proposto O SISCUBE – Sistema Tutor para Cubo Mágico – é um sistema que visa ensinar passo a passo, de forma interativa e didática como funciona o Método de Resolução por Camadas do cubo mágico. Sua característica interativa é justificada por dois fatores: a forma bidirecional com que a comunicação entre o sistema e seus usuários ocorre e a disposição de informações de forma não seqüencial, que permite que os usuários estabeleçam o caminho a ser trilhado, “navegando” em etapas de diferentes níveis4. Já a característica didática se justifica no próprio significado da palavra: arte ou técnica de ensinar; elemento transformador da teoria na prática. Didaticamente, o sistema buscará traduzir fielmente os conhecimentos do especialista no Método de Resolução por Camadas. Seguindo-se estes princípios, o usuário irá se deparar com diferentes casos de resolução, que serão claramente explicados pelo sistema. Em relação ao projeto desenvolvido na disciplina de IA – Inteligência Artificial são notáveis os aspectos diferenciadores. Enquanto que no projeto inicial o cubo mágico simplesmente se resolvia a partir de qualquer estado, no novo sistema será possível aprender e compreender a resolução do cubo e de cada movimento executado. O usuário poderá também praticar os ensinamentos adquiridos a partir da etapa que desejar e medir a melhoria de seu desempenho através da marcação de tempos. 3.2 Resultados Esperados Os jogos de raciocínio lógico estão cada vez mais presentes na vida das pessoas e o motivo é simples: além de diverti-las, são úteis no desenvolvimento de suas habilidades mentais. Ao observar o cubo mágico em seu estado embaralhado e sabendo qual o objetivo de cada etapa, a visão do todo é obtida. E mais, ao observar a disposição das cores, inicia-se o desenvolvimento do raciocínio lógico, pois é necessário pensar 4 São os níveis de aprendizado disponíveis no sistema. Dividem-se em Iniciante e Intermediário e variam de acordo com o grau de complexidade dos algoritmos utilizados na resolução do cubo virtual. 22 em como colocar uma peça em determinado lugar, sem que com isso outras peças já arrumadas sejam bagunçadas. Com isso, o jogador estabelece metas e à medida que o jogo se desenvolve ele procura atingi-las. A partir daí – da visão do todo, do objetivo final e metas – são desenvolvidas ou melhoradas: a perspicácia, a paciência, a determinação, a competência, o planejamento e desenvolvimento de estratégias, a concentração e o foco, a visão espacial, a análise sistemática e matemática e a lógica de raciocínio. Os benefícios que o cubo mágico e outros jogos de lógica, como sudoku e xadrez trazem para o ser humano são: estímulo da atividade mental, melhoria da memória e da clareza mental e a manutenção do cérebro mais jovem, dentre outros. Através dos benefícios e do desenvolvimento ou melhoria das capacidades citados, jovens e crianças podem ter seu desempenho escolar melhorados. No entanto, os benefícios atingem também idades mais avançadas, ajudando, por exemplo, na prevenção de doenças mentais como o Mal de Alzheimer. Estudos comprovam que a prática deste tipo de jogo ativa os lóbulos frontais do cérebro, responsáveis pela capacidade de processamento, em particular a memória. O jogo pode ainda funcionar como terapia, uma vez que o estresse e energia acumulados ao longo do dia podem ser nele descarregados. Jogar com brinquedos ou jogos de raciocínio é ideal para estimular o pensamento criativo, bem como para melhorar o coeficiente intelectual e emocional, levando às pessoas uma vida melhor e mais saudável. 3.3 Restrições do Sistema Proposto Duas restrições foram identificadas no projeto: a dimensão do cubo e o método de resolução abordados. A primeira é caracterizada pelo foco ao cubo mágico de dimensão 3x3x3. Já a segunda, pela implementação de um único método de resolução: o Método de Resolução por Camadas. Apesar de fazerem parte do escopo do projeto, as demais dimensões e métodos de resolução não serão implementados no sistema. Detalhes sobre o assunto são abordados no capítulo 4. 23 3.4 Recursos Necessários para Execução 3.4.1 Descrição do Hardware Ideal Processador: Pentium D 1.66 GHz Memória RAM: 1GB 3.4.2 Descrição do Hardware Mínimo Processador: Pentium 4 1.3 GHz Memória RAM: 512MB 3.4.3 Descrição do Software Sistema Operacional: qualquer um que suporte a Máquina Virtual Java, como Linux, Windows e MacOS. Máquina Virtual Java 5.0 ou superior. Browser: Internet Explorer 6 ou superior, Mozilla Firefox 2.0 ou superior. 3.4.4 Configuração da Rede Placa de Rede Ethernet 10/100 ou superior. Acesso à Internet. 3.4.5 Fontes dos Softwares Necessários Máquina Virtual Java: www.java.com/pt_BR/ Internet Explorer: www.microsoft.com/brasil/windows/downloads/ie/getitnow.mspx Mozilla Firefox: http://pt-br.www.mozilla.com/pt-BR/firefox/ 3.5 Áreas Afetadas pelo Novo Sistema Como visto no tópico 3.2, o cubo mágico traz diversos benefícios mentais para quem o pratica. A conclusão desse projeto afetará todas as pessoas que têm interesse em resolver o cubo mágico, seja por curiosidade, por querer exercitar a mente ou mesmo por tentar concluir um desafio de infância. O projeto poderá ser utilizado como atividade extracurricular nos colégios, auxiliando no desenvolvimento 24 da capacidade das crianças e adolescentes e servindo também como evidenciação de alunos com potencial diferenciado. Além disso, o projeto afetará na área do Speedcubing5, pois ajudará a trazer novos atletas. A popularização do esporte fará com que os atletas tenham mais condições de competir e realizar competições, visto que terão mais chances de conseguir patrocínios para ajudar em viagens e acessórios. 5 Esporte em que os praticantes procuram resolver o cubo mágico no menor tempo possível. Mais detalhes serão vistos no capítulo 4. 25 4 4.1 CONTEXTUALIZAÇÃO DO TEMA PROPOSTO Cubo mágico – Histórico e Informações O cubo de Rubik (ou também chamado o cubo mágico) é um quebra-cabeça tridimensional, inventado pelo húngaro, Ernő Rubik em 1974 para ilustrar o conceito de simetria (precursor da Teoria de Grupos da matemática): Erno Rubik inspirou-se em quebra-cabeças já conhecidos para a criação do cubo mágico, como o Tangram. No início, a idéia de criar um mecanismo para sustentar os cubos parecia impossível, devido à grande quantidade de movimentos existentes, mas Rubik acabou encontrando a solução enquanto observava o curso do Rio Danubio. O primeiro cubo montado por Rubik foi feito em madeira e tinha os seis lados pintados com cores distintas, para que quando suas faces fossem giradas, uma melhor visualização dos movimentos realizados fosse obtida. Em 1978 o cubo começava a ser produzido sem incentivos. Mesmo sendo inicialmente rejeitado, um ano depois, atingira uma publicidade tal que se podia ver pessoas entretidas com seus cubos nos trens, restaurantes, etc. Originalmente foi chamado "o cubo mágico" pelo seu inventor, mas o nome foi alterado pela Ideal Toys para cubo de Rubik em 1980. Neste mesmo ano, ganhou o prêmio alemão do "Jogo do Ano" (Spiel des Jahres). [WIKIPÉDIA] Em 1985 os direitos autorais sobre o cubo foram comprados por Seven Towns, que o relançou no mercado, obtendo muito sucesso. Atualmente Erno Rubik e Seven Towns trabalham próximos. Rubik está engajado a descobrir novos quebracabeças e continua sendo o principal beneficiado com sua invenção. O cubo de Rubik é um cubo geralmente fabricado em plástico e possui várias versões, sendo a versão 3x3x3 a mais comum, composta por seis faces de seis cores diferentes com um total de 54 peças, com arestas de aproximadamente 5,5 cm. Outras versões menos conhecidas são a 2x2x2, e de 4x4x4 a 7x7x7. É considerado um dos brinquedos mais populares do mundo, atingindo um total de 300 milhões de unidades vendidas, bem como suas diferentes imitações. O desejo de ver as seis faces do cubo organizadas atingia todas as idades e profissões. Foram lançados mais de 60 livros para ajudar tais pessoas. Nenhum outro quebra-cabeça teve tantos adeptos, o que o torna um brinquedo genial. 26 O número de combinações possíveis que pode ser obtida com o cubo mágico é de 43.252.003.274.489.856.000 (43 quintilhões), o que demonstra como um simples brinquedo colorido pode ser tão complexo de ser resolvido. 4.2 Cenário do Speedcubing Quando lançado na década de 80, o cubo mágico era considerado um desafio praticamente impossível de ser concluído. Tinha-se a impressão de que apenas as mentes mais brilhantes conseguiriam desvendar o grande mistério que frustrou milhares de pessoas durante décadas. De lá para cá, com ajuda da internet, as pessoas puderam trocar conhecimentos adquiridos individualmente, que depois de combinados, discutidos e estudados, formaram as primeiras técnicas de resolução do brinquedo. Com o passar do tempo, mais pessoas se interessaram em aprender esses métodos e aos poucos as técnicas foram melhoradas, bem como novas foram desenvolvidas. Hoje em dia é considerado esporte, com várias modalidades: resolver com as duas mãos, com apenas uma, vendado e até mesmo com os pés. Ganha quem deixa apenas uma cor em cada lado do cubo em menos tempo. Aos poucos o cenário do speedcubing (como é conhecido) vem ganhando espaço na mídia e despertando interesse de patrocinadores. O vencedor do campeonato mundial de 2007, disputado na Hungria, levou para casa o prêmio de cinco mil euros. No Brasil, esse movimento está começando e vem mostrando um grande potencial de evolução. Já foram realizadas duas competições oficiais e há previsão de outras para um futuro próximo. Na televisão brasileira, algumas reportagens sobre o cubo, seus praticantes e competições têm sido exibidas. Já existem diversos sites em português contendo tutoriais, dicas e outras utilidades acerca do tema. E tudo isso tende a crescer exponencialmente. 4.3 Cubos Mágicos mais conhecidos Este projeto faz abordagem apenas do cubo mágico convencional, que possui dimensões 3x3x3. Além dele, existem dezenas de outros quebra-cabeças 27 tridimensionais, tanto em formato de cubo como de diversos outros. Os mais populares são os seguintes: a) 3x3x3 convencional b) 2x2x2 e) Megaminx h) Rubik’s Magic c) 4x4x4 f) Pyraminx i) Rubik’s Master Magic d) 5x5x5 g) Square-1 j) Rubik’s Clock Figura 4.1 Tipo de Cubo Mágico 4.4 Estrutura Física do Cubo Mágico Algumas pessoas passam a entender melhor o funcionamento do cubo quando o desmontam e vêem sua estrutura interna, o que faz quebrar a idéia que muitos têm de que cada cor se movimenta sozinha, e não três a três como no caso dos cantos, e duas a duas no caso dos meios. Isso quer dizer que você tem que fazer cada cor ao redor do respectivo centro. O cubo mágico possui uma estrutura interna que permite girar qualquer uma das faces infinitas vezes em qualquer sentido, pois as peças não são presas por elásticos ou similares. 28 Figura 4.2 Centros Figura 4.3 Cantos Figura 4.4 Meios Fonte: www.cubomagico.110mb.com Na figura 4.2, as peças coloridas são chamadas de Centros, são seis e são peças que não se movem entre si, o que se deve ao fato de serem fixas por parafusos ao núcleo, que é uma peça de borracha em forma de estrela de seis pontas. A figura 4.3 representa as quinas do cubo, peças comumente chamadas de Cantos e que possuem três cores cada. Estas peças são oito, logo podem ocupar oito posições diferentes e podem estar giradas de três formas em relação a seu próprio eixo. Por fim, na figura 4.4 as arestas que estão coloridas são chamadas de Meios e cada uma possui duas cores diferentes. Estas peças são doze, logo podem ocupar doze posições diferentes e pode estar giradas de duas formas em relação a seu próprio eixo. Os cantos não podem ocupar o lugar dos meios e vice-versa. Figura 4.5 Estrutura interna do cubo mágico Fonte: www.9spuzzles.com 29 Como pode ser observado na figura 4.5, as peças possuem encaixes nas pontas que servem tanto para segurá-las juntas ao cubo, quanto para formar uma esfera interna que permite o livre giro das camadas. 4.5 O Cubo Virtual Estudando com maior profundidade o aplicativo Rubik’s Cube, apresentado no tópico 1.2, alguns pontos importantes foram observados. Segundo Christoph [BANDELOW, Christoph. Einfuehrung in die Cubologie, Vieweg, 1981 apud RANDELSHOFER, Werner]: Localização e orientação dos cantos: inicialmente, cada canto do cubo possui um identificador “n”, que está presente na matriz “cantoLocalizacao[n]”, onde “n” varia de 0 à 7, representando as 8 peças de cantos existentes no cubo mágico. Quanto à orientação dos cantos, o identificador “n” está presente na matriz “cantoOrientacao[n]”, onde “n” varia entre os valores 0 (orientação inicial), 1 (canto girado no sentido anti-horário) e 2 (canto girado no sentido horário). A figura 4.6 representa a ilustração gráfica desta parte do modelo. Nos números em ponto flutuante, o valor antes do ponto indica a localização dos cantos (os valores da matriz) “cantoLocalizacao[n]” e os valor depois do ponto indicam a orientação deles (“cantoOrientacao[n]”). 6.0 4.0 5 6.1 0.2 0.0 0.1 4 7.2 2.0 2.2 2.1 0 1.1 1.2 1.0 4.2 4.1 1 3.1 3.0 3.2 6.2 3 5.1 5.2 7.1 2 7.0 5.0 Figura 4.6 Localização e orientação dos cantos Localização e orientação dos meios: inicialmente, cada meio do cubo possui um identificador “n”, que está presente na matriz “meioLocalizacao[n]”, onde o valor de “n” varia de 0 à 11, representando as 12 peças de meios existentes no cubo mágico. Quanto a orientação dos meios, o identificador “n” está presente na matriz “meioOrientacao[n]”, onde “n” varia entre os valores 0 (orientação inicial) e 1 (meio 30 movido). A figura 4.7 representa a ilustração gráfica desta parte do modelo. Nos números em ponto flutuante, o valor antes do ponto indica a localização dos meios (os valores da matriz) “meioLocalizacao[n]” e os valor depois do ponto indica a orientação deles (“meioOrientacao[n]”). 9.0 10.0 9.1 4 11.1 1.0 1.1 11.0 6.1 5 0.1 0.0 0 2.0 2.1 2 8.1 3.0 4.1 4.0 3.1 1 5.1 7.0 7.1 6.0 3 8.0 10.1 5.0 Figura 4.7 Localização e orientação dos meios Localização e orientação dos centros: inicialmente, cada centro do cubo possui um identificador “n” e está presente em uma matriz “centroLocalizacao[n]”, onde os valores de “n” variam de 0 à 5, representando os 6 centros existentes no cubo mágico e cada centro é usado como referência para a determinação de uma face. Quanto a orientação dos centros, o identificador “n” está presente em uma matriz “centroOrientacao[n]”, onde “n” varia entre os valores 0 (orientação inicial), 1 (face representada pelo centro movida para a esquerda), 2 (face representada pelo centro movimentada 180°) e 3 (face representada pelo centro movimentada para a direita). A figura 4.8 representa a ilustração gráfica desta parte do modelo. Nos números em ponto flutuante, o valor antes do ponto indica a localização dos centros (os valores da matriz) “centroLocalizacao[n]” e os valores depois do ponto indicam a orientação deles (“centroOrientacao[n]”). .0 .0 .1 4 .3 .2 .1 .2 .1 5 .3 .2 0 .0 .3 2 .1 .2 .3 .2 .3 1 .1 .0 .0 Figura 4.8 Localização e orientação dos centros .3 .0 3 .2 .1 31 As três propriedades do modelo citadas acima descrevem as configurações básicas sobre posicionamento das peças em relação a si mesmas e em relação às demais. Foi fundamental entendê-las para dar prosseguimento ao projeto. Resumindo o modelo, é possível dizer que ele se caracteriza por atribuir um valor a cada “peça” do cubo virtual e por considerar o posicionamento de cada peça em relação à posição inicial ocupada por elas. A partir desse modelo, são criadas outras três estruturas necessárias para a realização dos movimentos em um cubo, explicadas a seguir: - Indicação do eixo (X, Y, Z) em que o movimento será realizado. Por se tratar de um cubo mágico, as três dimensões devem ser consideradas, mesmo com o código baseado em bibliotecas para desenhos em duas dimensões. Desse modo, cada eixo possibilita a movimentação de três camadas do cubo, quem têm seu centro transpassado pelo eixo em questão. Para exemplificar, considere a Figura 4.18 e também que a face frontal é a face na cor azul, a superior na cor amarela e a direita na cor vermelha. Quando for necessária a realização de um movimento6 na face azul (F ou F'), esse movimento deve ser sobre o eixo Z, na face amarela (U ou U') o movimento deve ser no eixo Y e na face vermelha (R ou R') o movimento deve ser no eixo X. Figura 4.9 Aplicativo Rubik’s Cube - Possibilidade de escolher qual combinação de camadas em relação a um eixo deve ser movimentada. Por exemplo, considerando a Figura 4.9 e tendo como 6 Para melhor entendimento dos movimentos, vide Anexo III Notação dos Movimentos. 32 referência a face azul, podemos fazer desde um simples movimento F (que utiliza apenas uma camada), até um movimento Z (que utiliza todas as camas paralelas à face azul). - Possibilidade de escolher o sentido do movimento entre horário e antihorário. A partir das informações citadas acima, todas as operações com o cubo virtual são implementadas e disponibilizadas ao usuário em uma tela, construída sobre um componente JAVA, com o nome de Canvas, que faz parte do pacote 'java.awt'. Esse componente possibilita a construção de uma área na tela em que é possível a inserção e a renderização do cubo virtual, além das ações disponibilizadas ao usuário. 4.6 Interface entre Inteligência e Visão A integração da parte inteligente do Sistema Tutor com o cubo virtual (parte de interface) acontece de forma bem simples, sendo necessário conhecer as combinações de parâmetros necessárias para a realização dos movimentos. O método chamado para a efetivação do movimento no cubo virtual tem a seguinte assinatura: public void transform(int axis, int layerMask, int angle). Os parâmetros têm o seguinte significado: • axis: indica sobre qual eixo o movimento será executado (X, Y ou Z). Pode receber os valores 0(eixo X), 1(eixo Y) e 2(eixo Z). • layerMask: indica qual a combinação de camadas será movimentada. Recebe valores entre 1 e 7. • angle: indica o sentido e a quantidade de movimentos. Pode receber os valores 1 (volta de 90° no sentido horário), -1(volta de 90° no sentido antihorário), 2(volta de 180° no sentido horário) e -2(volta de 180° no antisentido horário). Através do conhecimento desta estrutura, foi possível a realização de diversos movimentos no cubo virtual. A classe que contém esse método é criada no momento da criação da Classe de interface com o jogador, viabilizando seu acesso. 33 4.7 Matriz, a parte Inteligente do Cubo O cubo mágico utilizado no projeto possui dimensão 3x3x3 e é composto por seis cores diferentes: azul, vermelho, verde, laranja, amarelo e branco – que representam as faces do cubo. As faces, por sua vez, são compostas por nove quadrados, que somados dão um total de 54. A fim de tornar possível a representação de todas as peças do cubo foi implementada uma matriz tridimensional. Sua primeira posição representa as faces, variando de zero a cinco. As outras duas posições representam a localização do quadrado na face, que é mais facilmente entendida quando feita uma analogia a um plano cartesiano com pontos (x,y), onde x seria a linha em que o quadrado se encontra e y a coluna. Com essa matriz foi possível representar os 54 quadrados do Cubo Mágico. 4.7.1 Representação A fim de se obter uma melhor visibilidade do que acontece com a matriz, foi desenvolvida uma interface de duas dimensões que respeita os modelos abaixo: Figura 4.10 Matriz tridimensional 27 30 33 28 31 34 29 32 35 36 39 42 0 3 6 45 48 51 37 40 43 1 4 7 46 49 52 38 41 44 2 5 8 47 50 53 9 12 15 10 13 16 11 14 17 18 21 24 Figura 4.11 Rótulos de cada posição da matriz 19 22 25 20 23 26 34 4.7.2 Execução de Movimentos Independente da origem (usuário ou sistema), cada movimento é enviado à matriz para que ela seja alterada. Supondo que o cubo esteja no estado resolvido, conforme pode ser observado na Figura 4.11 e que o movimento R, representado no Anexo Notação dos Movimentos seja executado, as seguintes permutações ocorrem entre os elementos da matriz: [0][0][2] ↔ [5][0][2]; [2][2][0] ↔ [4][0][2]; [0][1][2] ↔ [5][1][2]; [2][1][0] ↔ [4][1][2]; [0][2][2] ↔ [5][2][2]; [2][0][0] ↔ [4][2][2]; [5][0][2] ↔ [2][2][0]; [4][0][2] ↔ [0][0][2]; [5][1][2] ↔ [2][1][0]; [4][1][2] ↔ [0][1][2]; [5][2][2] ↔ [2][0][0]; [4][2][2] ↔ [0][2][2]; Resultado visual da matriz após o movimento: Figura 4.12 Resultado da execução do movimento R Com isso, sempre que o usuário exigir que o cubo seja resolvido, o Sistema verificará a matriz e de acordo com os algoritmos de resolução do cubo ordenará seus elementos. 35 5 5.1 PLANEJAMENTO DO PROJETO Plano do Processo de Desenvolvimento 5.1.1 Ciclo de Vida do Projeto O conjunto de fases do projeto é chamado de “ciclo de vida do projeto”. Os modelos que o descrevem surgiram devido à necessidade de estruturar o desenvolvimento do software e fornecer um roteiro razoavelmente efetivo para que as equipes desenvolvedoras atinjam seus objetivos (PRESSMAN, 2006, adaptado). Para o desenvolvimento de um software, existem modelos já estudados e definidos, como por exemplo: o cascata, os incrementais (Incremental e RAD), os evolucionários (Prototipagem, Espiral e de Desenvolvimento Concorrente) e o processo unificado. No entanto, cada um deve ser adaptado para que seja usado efetivamente em um projeto de software específico. Para o desenvolvimento do SISCUBE foi adotado o ciclo de vida descrito no modelo do Processo Unificado, com algumas adaptações. A seguir, seguem os motivos que levaram o grupo a utilizar este ciclo de vida: • Utiliza a UML – Unified Modeling Language – no preparo dos artefatos do sistema; • Orienta-se por casos de uso, o que permite que o processo de desenvolvimento siga um fluxo (análise, projeto, implementação e teste) derivado da descrição dos casos de uso; • Tem a arquitetura como elemento central, o que facilita na construção do projeto, pois a partir dela se obtém a estrutura que guia cada iteração. • É iterativo e incremental, o que permite a evolução do projeto com o decorrer do tempo. Assim como ocorre no ciclo de vida do PU, o projeto passará pelas seguintes fases: • Concepção: fase em que será dada ênfase à comunicação e ao planejamento. A comunicação ocorrerá entre os membros do grupo e entre o grupo e o orientador, com o objetivo de definir as necessidades daqueles que usarão o sistema e conseqüentemente suas características. Tratando-se de planejamento, serão desenvolvidos o documento visão e a especificação dos principais casos de uso, considerados os mais 36 críticos, Acessar Tutorial 3D, Treinar Cubo Virtual e Jogar Cubo Virtual. Detalhes sobre os casos de uso podem ser consultados no Anexo I – Especificação dos Casos de Uso. • Elaboração: será subdividida em duas subfases: (1) análise, em que será dada continuidade à comunicação, todavia com o objetivo diferente: refinar as necessidades e características levantadas na fase de concepção. Nela serão desenvolvidos os demais casos de uso. (2) Projeto, cujo objetivo será modelar os casos de uso críticos com foco na criação de modelos de análise e projeto com ênfase nas definições de classes e representações arquiteturais. • Construção: serão refinados e então traduzidos o modelo de projeto para componentes de software. • Transição: fase em que o sistema será testado e posteriormente colocado no site (www.cubomagicobrasil.com). • Produção: fase que terá como objetivo oferecer o monitoramento e suporte contínuo ao sistema. A seguir, na figura 5.1, pode ser observado a relação disciplina x fase ocorrente em muitos projetos que utilizam o ciclo de vida descrito no modelo do Processo Unificado: Figura 5.1 Representação do ciclo de vida do PU 5.1.2 Métodos de Desenvolvimento e Ferramentas CASE Para o desenvolvimento do projeto foi utilizada a técnica de Descrição do Documento Visão, técnica de Descrição de Caso de Uso e a Técnica do Larman de 37 Análise e Projeto Orientado a Objetos, com utilização de Design Patterns - DTO, DAO e Factory. As páginas WEB do projeto foram criadas seguindo o padrão XHTML de desenvolvimento. O código do projeto é baseado no padrão de arquitetura MVC (Model-viewcontroller), o que permite a fácil manutenção do código, uma vez que a manipulação de dados não é afetada com a alteração do layout e vice-versa. Neste modelo para o projeto são utilizadas seis camadas: visão, action, model, DAO, DTO e ch, que são explicadas no capítulo 7. Ferramentas CASE (Computer-Aided Software Engineering) são as ferramentas baseadas em computadores que auxiliam na engenharia de software, desde análise de requisitos e modelagem até programação e testes. As utilizadas no projeto foram: • Jude Community – software Jude para desenvolvimento UML. Utilizado na elaboração do modelo de domínio, diagrama de casos de uso e realização dos casos de uso (diagramas de seqüência e de classes). • MS Project – software da Microsoft para gestão de projetos. Esta ferramenta foi utilizada no planejamento cronológico das atividades que compõem o projeto. 5.1.3 Linguagens de Programação A linguagem utilizada no desenvolvimento do projeto foi Java e se encaixou perfeitamente nas necessidades existentes. Como o projeto é um incremento de uma aplicação existente, utilizar a mesma linguagem de programação para continuar o trabalho foi muito importante para evitar possíveis incompatibilidades, como, por exemplo, no caso de tentar fazer uma integração com programas de naturezas diferentes. A experiência acadêmica adquirida nas disciplinas de programação foi outro fator que contribuiu para a escolha desta linguagem. Java é uma linguagem de programação orientada a objetos inicialmente desenvolvida pela Sun Microsystems e lançada em 1995. A linguagem deriva grande parte da sua sintaxe de C / C + +, mas tem um modelo mais simples e menos objetos de baixo nível. Aplicações Java são normalmente compiladas para um 38 bytecode7 que pode ser executado em qualquer máquina virtual Java (Java Virtual Machine), independentemente da arquitetura do computador. A partir de maio de 2007, em conformidade com as especificações do Java Community Process, Sun passou a disponibilizar a maior parte de suas tecnologias Java como software livre sob a GNU General Public License (GPL). Figura 5.2 Logomarca Java 5.1.4 Ambiente de Hardware para Desenvolvimento O ambiente de hardware para desenvolvimento do projeto se refere à especificação da topologia de hardware (equipamentos e conexões) que fornece a plataforma que dá suporte às ferramentas (software) necessárias para produzir os produtos de trabalho. O ambiente utilizado no desenvolvimento do SISCUBE é composto pelos seguintes equipamentos: • Dois notebooks DELL Core 2 Duo 2.0 GHz, 4 GB de memória RAM, 120 GB de HD, Windows Vista Home Basic; • Hum notebook HP Pavilion AMD Sempron 3.400+, 2 GB de memória RAM, 120 GB de HD, Linux Ubuntu. 7 É o resultado de um processo semelhante ao dos compiladores de código-fonte que não é imediatamente executável. Em oposição, o bytecode é interpretado numa máquina virtual, que o executa. Desta forma, o bytecode é um estágio intermédio entre o código-fonte (escrito numa linguagem de programação específica) e a aplicação final, sendo a sua vantagem principal a dualidade entre a portabilidade — o bytecode produz o mesmo resultado em qualquer arquitetura — e a ausência da necessidade do pré-processamento típico dos compiladores — o bytecode é encarado como um produto final, cuja validação da sintaxe e tipos de dados (entre outras funções dos compiladores) é necessária. 39 5.2 Plano de Organização O plano de organização inclui um conjunto de práticas gerenciais e técnicas que permite à equipe de software (gerência e desenvolvimento) definir um roteiro enquanto ela se move em direção a sua meta estratégica e seus objetivos táticos. É nele, também, que se definem os papéis que cada um exerce na equipe. 5.2.1 Equipe de Gerência A equipe de desenvolvimento é formada por um Gerente de Projeto, que exerce o papel de líder do grupo. Cabe ao gerente: (1) motivar – encorajar a equipe de desenvolvimento a produzir no melhor de sua capacidade; (2) organizar – moldar ou inventar processos que viabilizem a meta estratégica e os objetivos táticos; (3) definir marcos, pontos de controle, planos e métodos de acompanhamento, além de verificar e mitigar eventuais riscos. Esta atividade será realizada pelo Bruno. 5.2.2 Equipe de Desenvolvimento A equipe de desenvolvimento é formada por desenvolvedores Java e analistas de requisitos. Ambas as funções são desempenhadas pelos três integrantes da equipe de projeto (Bruno, Carlos e Rodrigo). As atividades dos desenvolvedores são as seguintes: • Bruno: estudo do aplicativo Rubik’s Cube e do desenvolvimento de applets, bem como a implementação do tutorial com o cubo mágico virtual. • Carlos: estudo dos métodos de resolução do cubo mágico, bem como a implementação da funcionalidade na qual o usuário joga com o cubo mágico virtual. • Rodrigo: desenvolvimento das páginas web e seus respectivos casos de uso, bem como a implementação do treinamento com o cubo mágico virtual. 5.3 Plano de Acompanhamento Há muitos motivos que causam problemas em projetos de software, tais como a complexidade do que será desenvolvido e as significativas dificuldades em 40 coordenar membros da equipe. A incerteza é comum, e resulta em uma contínua corrente de modificações que perturba a equipe de software. Para lidar efetivamente com os problemas que surgem ao longo do processo de desenvolvimento de software, é necessário estabelecer métodos específicos para coordenar aqueles que o desenvolvem. Para tanto, mecanismos para comunicação formal e informal entre os membros da equipe de software devem ser planejados e executados – o plano de acompanhamento deve ser feito. 5.3.1 Marcos e Pontos de Controle O cronograma do projeto, baseado nas fases do ciclo de vida adotado, fornece o roteiro para a equipe de desenvolvimento. Nele, tarefas e marcos são definidos e devem ser acompanhados e controlados à medida que o projeto prossegue. A tabela a seguir apresenta as fases do ciclo de vida com seus respectivos marcos: Fases do Ciclo de Vida Marco Concepção Comunicação Validação do documento visão Planejamento Validação da especificação dos casos de uso críticos AcessarTutorial3D, TreinarCuboVirtual e JogarCuboVirtual Elaboração Análise Validação da especificação dos demais casos de uso e do modelo de domínio. Projeto Validação do modelo de análise e arquitetura dos casos de uso críticos AcessarTutorial3D, TreinarCuboVirtual e JogarCuboVirtual. Construção Validação da implementação do sistema. Transição Implantação dos casos de uso críticos no site www.cubomagicobrasil.com Tabela 5.1 Marcos e Pontos de Controle 41 5.3.2 Métodos de Acompanhamento e Controle Para acompanhamento do projeto, serão realizadas reuniões semanais com o professor orientador, com o intuito de verificar possíveis mudanças de requisitos, para que os mesmos possam ser corrigidos, para que o software seja desenvolvido de acordo com o prazo estabelecido e para que seja feito o controle de conformidade em relação ao planejamento de projeto e ao regimento do projeto final. Reuniões semanais entre os membros do grupo também ocorrerão e sua freqüência irá variar de acordo com as necessidades a andamento do projeto. 5.3.3 Análise e Gerência de Riscos Em um projeto de software, uma grande variedade de riscos pode ocorrer, uns com menos outros com mais freqüência, variando desde desentendimentos entre componentes da equipe até o não cumprimento de prazos. Os riscos identificados para o projeto SISCUBE foram: 1. Não obedecer aos prazos do cronograma: o projeto corre o risco de não cumprir os prazos do cronograma, pois envolve a utilização de Applet e de um componente livre (Rubik’s Cube) e a equipe de desenvolvimento deve pesquisar e entender ambos. Todos os integrantes da equipe desenvolvem outras atividades (curso e trabalho). 2. Desenvolvimento de uma interface não apropriada: o projeto corre o risco de não possuir uma interface intuitiva e de fácil entendimento, dificultando sua utilização. 3. Não conseguir implementar certas funcionalidades pela falta de conhecimento avançado das tecnologias utilizadas. 4. Incoerência com o planejamento do sistema: com o andamento do projeto e o desenvolvimento do sistema, algumas características (funcionalidades) podem ser alteradas, e a não alteração também nos documentos correspondentes (diagramas, descrições) pode gerar incoerência entre os documentos do projeto. Risco Prob. Imp. Prioridade Mitigação Contingência 1 50% Alta Estabelecer um Reestruturar o tempo maior para as cronograma e A 42 pesquisas verificar quais necessárias e funcionalidades reuniões para podem ser verificação e suprimidas para acompanhamento do que um projeto cronograma funcional possa ser entregue. 2 30% A Média Verificar com Verificar com possíveis usuários a usuários reais usabilidade da quais as aplicação dificuldades encontradas em manipular a aplicação e realizar as alterações necessárias 3 50% R Baixa Pesquisar sobre as Verificar se essa tecnologias funcionalidade necessárias pode ser suprimida. Em caso negativo, verificar quais funcionalidades podem ser suprimidas para que haja mais tempo para solução do problema. 4 20% R Média Manter sempre Corrigir as atualizados os incoerências. documentos e 43 verificá-los nas reuniões. Tabela 5.2 Riscos Custo excede ao planejado CA (Catastrófico) para a manutenção em 50% do custo planejado. O custo do risco excede ao CR (Crítico) planejado no intervalo de 10% a 50% do total planejado. Probabilidade menor que 10%. MA (Marginal) Tabela 5.3 Impactos 5.4 Plano de Documentação 5.4.1 Documentos do Projeto Durante as fases técnicas do Processo Unificado foram desenvolvidos diversos documento. Dentre eles podemos citar: Concepção Elaboração Construção - Documento Visão - Modelo de Domínio - Javadoc - Especificação dos casos de - Diagrama de Casos de uso críticos (AcessarTutorial3D, Uso TreinarCuboVirtual e - Diagrama de Seqüência JogarCuboVirtual) do Sistema dos casos de - Glossário inicial do projeto uso críticos - Plano de projeto - Contratos de Operação dos casos de uso críticos - Diagramas de Seqüência dos casos de uso críticos - Arquitetura Lógica - Diagrama de Pacotes Tabela 5.4 Documentos do Projeto 44 5.5 Plano de Recursos e Produtos 5.5.1 Recursos Humanos Nome Função Gerente de Projeto, Analista e Desenvolvedor Analista e Desenvolvedor Analista e Desenvolvedor Bruno Cavalcanti Freitas Carlos Alberto de Alcântara Júnior Rodrigo Maciel Galvão Telefone E-mail 8431-8125 [email protected] 9681-9457 [email protected] 9663-6034 [email protected] Tabela 5.5 Recursos Humanos 5.5.2 Recursos de Hardware Discriminação Notebook DELL Core 2 Duo 2.0GHz, 4GB de RAM, 120GB de HD, Windows Vista Home Basic Notebook HP Pavilion AMD Sempron 3.400+, 2GB de RAM, 120GB de HD, Linux Ubuntu TOTAL Quantidade Valor Unitário Valor Total 2 R$3.000,00 R$6.000,00 1 R$1.800,00 R$1.800,00 R$7.800,00 Tabela 5.6 Recursos de Hardware 5.5.3 Recursos de Software Discriminação Eclipse Europa Jude Community 5 MySQL Server 5.0 Apache Tomcat 5.0 Pacote JDK 5.0 – Java Development Kit Valor Unitário - Valor Total - - - Tabela 5.7 Recursos de Software 5.6 Cronograma Tarefa Responsável Início Fim Bruno, 18/02/08 23/02/08 25/02/08 08/03/08 Concepção Comunicação Levantar Requisitos Carlos, Rodrigo Definir documento visão Bruno, 45 Carlos, Rodrigo Planejamento Identificar casos de uso e atores Bruno, 10/03/08 13/03/08 13/03/08 22/03/08 24/03/08 03/04/08 03/04/08 12/04/08 18/02/08 12/04/08 14/04/08 17/04/08 17/04/08 24/04/08 Carlos, Rodrigo Descrever caso de uso crítico Acessar Bruno, Tutorial 3D Carlos, Rodrigo Descrever caso de uso crítico Treinar Cubo Bruno, Virtual Carlos, Rodrigo Descrever caso de uso crítico Jogar Cubo Bruno, Virtual Carlos, Rodrigo Elaborar glossário Bruno, Carlos, Rodrigo Elaboração Análise Refinar requisitos Bruno, Carlos, Rodrigo Refinar documento visão Bruno, Carlos, Rodrigo Elaborar modelo de domínio Bruno 24/04/08 30/04/08 Elaborar diagrama de casos de uso Bruno, 14/04/08 14/04/08 Bruno 24/04/08 30/04/08 Rodrigo 24/04/08 30/04/08 Carlos, Rodrigo Refinar caso de uso crítico Acessar Tutorial 3D Refinar caso de uso crítico Treinar Cubo 46 Virtual Refinar caso de uso crítico Jogar Cubo Carlos 24/04/08 30/04/08 Descrever caso de uso Cadastrar Usuário Rodrigo 30/04/08 10/05/08 Descrever caso de uso Efetuar Login Rodrigo 30/04/08 10/05/08 Descrever caso de uso Manter Cadastro Rodrigo 30/04/08 10/05/08 Descrever caso de uso Pesquisar Usuário Rodrigo 30/04/08 10/05/08 Carlos 30/04/08 10/05/08 Carlos 30/04/08 10/05/08 Bruno, 14/04/08 10/05/08 Bruno 12/05/08 31/05/08 Rodrigo 12/05/08 31/05/08 Carlos 12/05/08 31/05/08 Bruno 31/05/08 21/06/08 Rodrigo 31/05/08 21/06/08 Carlos 31/05/08 21/06/08 Virtual Descrever caso de uso Entrar Contato Administradores Descrever caso de uso Enviar Mensagem Pessoal Refinar glossário Carlos, Rodrigo Projeto Elaborar o Diagrama de Seqüência do Sistema(DSS) e o contrato de operações do caso de uso crítico Acessar Tutorial 3D Elaborar o Diagrama de Seqüência do Sistema(DSS) e o contrato de operações do caso de uso crítico Treinar Cubo Virtual Elaborar o Diagrama de Seqüência do Sistema(DSS) e o contrato de operações do caso de uso crítico Jogar Cubo Virtual Efetuar a realização (criação dos diagramas de seqüência e de classes) do caso de uso crítico Acessar Tutorial 3D Efetuar a realização (criação dos diagramas de seqüência e de classes) do caso de uso crítico Treinar Cubo Virtual Efetuar a realização (criação dos diagramas de seqüência e de classes) do caso de uso crítico Jogar Cubo Virtual 47 Definir arquitetura lógica e diagrama de Bruno 01/08/08 16/08/08 Bruno, 12/05/08 21/06/08 Bruno 18/08/08 19/11/08 Rodrigo, 18/08/08 19/11/08 pacotes Refinar glossário Carlos, Rodrigo Construção Implementar caso de uso Acessar Tutorial 3D Implementar caso de uso Treinar Cubo Virtual Bruno Implementar caso de uso Jogar Cubo Virtual Carlos 18/08/08 19/11/08 Definir o layout de site Rodrigo 15/09/08 27/09/08 Implementar caso de uso Cadastrar Usuário Rodrigo 29/09/08 11/10/08 Implementar caso de uso Efetuar Login Rodrigo 13/10/08 18/10/08 Implementar caso de uso Manter Cadastro Rodrigo 03/11/08 08/11/08 Implementar caso de uso Pesquisar Usuário Rodrigo 20/10/08 22/10/08 Bruno, Carlos 03/11/08 08/11/08 Bruno, Carlos 03/11/08 08/11/08 Implementar caso de uso Entrar Contato Administradores Implementar caso de uso Enviar Mensagem Pessoal Tabela 5.8 Cronograma 5.7 Glossário Termo Algoritmo Significado Básico de É o algoritmo que apresenta os passos mais Resolução simples e compreensíveis para resolução do cubo mágico. Em contrapartida, normalmente são executados mais movimentos. Algoritmo de Embaralhamento Seqüência de movimentos aleatórios que é gerada por um sistema para que o cubo seja embaralhado. Os movimentos são representados por letra conforme o Anexo III – Notação dos Movimentos. Camada O Cubo Mágico possui três camadas. 48 Cubo Mágico Brinquedo com o formato de cubo cujas faces coloridas são giráveis. Cubo Mágico Virtual Representação do cubo mágico em um computador. Embaralhar Misturar as cores do cubo, tirá-lo de seu estado original. Etapa Seqüência de passos que visam alcançar a resolução de determinada parte do cubo mágico. Face Lado do cubo. O cubo possui 6 faces(lados). Fase de Inspeção Momento em que o jogador avalia a condição atual do cubo para planejar os primeiros movimentos que fará quando começar a resolvê-lo. Fridrich Nome da criadora e do método avançado de resolução do cubo mais conhecido e utilizado pelos experts. Nível Grau de complexidade da resolução, o nível básico consiste no mínimo necessário para a resolução do cubo, já o nível intermediário visa economizar movimentos considerando mais possibilidades de combinação do cubo. Orientação Diz respeito ao posicionamento da peça em relação a ela mesma. Orientar uma peça de canto, por exemplo, significa girar esse canto sem permutá-lo. Passo Movimentação específica, pequenos grupos de movimentos. Vários passos compõem uma etapa. Permutação É a troca de posição que ocorre entra duas peças, em que uma ocupa o lugar da outra. Speedcubing Esporte relacionado ao cubo mágico, essencialmente baseado na velocidade usada para sua resolução. Tabela 5.9 Glossário 49 6 6.1 ESPECIFICAÇÃO DOS REQUISITOS DO SISTEMA Descrição do Problema Com o decorrer dos últimos meses o nosso interesse fez com que o cubo mágico se tornasse parte do nosso cotidiano e inúmeras vezes nos encontramos com pessoas que também se interessam em aprender e brincar com o cubo. No entanto, devido à complexidade em resolvê-lo e à escassez de fontes de aprendizado didáticas e dinâmicas, essas pessoas desistem do desafio de concluir os passos necessários para resolução do cubo. Com base nestes problemas, nosso projeto propõe um tutorial dinâmico, em que o usuário irá interagir com um cubo mágico virtual representado em três dimensões, manipulando-o da forma que quiser e recebendo dicas e orientações do sistema quanto às etapas de resolução. Acreditamos que com essa ferramenta de aprendizado, mais pessoas se interessarão em conhecer um pouco mais sobre este quebra-cabeça sensacional e sobre os benefícios mentais que ele proporciona. 6.2 Identificação dos Interessados São considerados interessados no SISCUBE todos que têm curiosidade em aprender a resolver o cubo mágico, pois são eles o público-alvo do projeto. 6.3 Descrição das necessidades dos interessados Tendo em vista que o Sistema desenvolvido não é voltado para um público- alvo específico, mas sim para uma gama ampla de usuários, foi constatado que não há necessidades, mas sim um objetivo bem definido: fazer com que qualquer usuário possa aprender a resolver o cubo mágico. 6.4 Descrição das características do sistema São principais características do sistema: • Apresentar um tutorial dinâmico e interativo sobre a resolução do cubo mágico, que proporcione facilidades para o entendimento do usuário, como por exemplo: o Destaque visual das peças que serão movimentadas. 50 o Explicações textuais dos passos executados. • Permitir ao usuário treinar no cubo virtual os conhecimentos adquiridos. • Oferecer funcionalidades adicionais como cronometragem para que o usuário acompanhe seu progresso. • Disponibilizar as funcionalidades do sistema em um site, para facilitar o acesso dos usuários. • Permitir no site que os usuários interajam entre si para trocar idéias, tirar dúvidas, etc. • Apresentar no site histórico, artigos e notícias sobre o cubo mágico, além de links que levem o usuário a páginas relacionadas, para que ele se contextualize em relação ao tema proposto. • Disponibilizar manuais em PDF com conteúdo explicativo dos métodos de resolução do cubo. 6.5 Requisitos do software O sistema deverá ser capaz de atender os seguintes requisitos: • Ensinar ao usuário, por etapas e de forma didática e interativa, como resolver o cubo mágico. • Permitir que o usuário treine as etapas aprendidas e obtenha, caso deseje, dicas para ajudá-lo no treinamento. • Permitir que o usuário marque o tempo e quantidade de movimentos despendidos na tentativa de resolução do cubo. • Cadastrar usuários no sistema e permitir que os mesmos editem os dados informados no cadastro. • Permitir que os usuários troquem mensagens entre si. • Permitir que os usuários entrem em contato com os administradores (idealizadores/desenvolvedores do projeto). • Informar sobre notícias e eventos, histórico e artigos concernentes com o tema proposto. 51 6.6 Restrições O núcleo do sistema, formado pelo ensinamento, treinamento e marcação de tempos/quantidade de movimentos é baseado na linguagem de programação Java. Tendo em vista que estas funcionalidades serão disponibilizadas em um site através de um Applet (programa escrito na linguagem de programação Java que pode ser incluído em uma página HTML, http://java.sun.com/applets/), será necessário que o usuário tenha instalado em seu computador a Máquina Virtual Java (JVM – Java Virtual Machine) para que o programa seja carregado e executado. 52 7 7.1 DIAGRAMAS UML Modelo de Domínio Figura 7.1 Modelo de Domínio 53 7.2 Visão Geral dos Casos de Uso e Atores Figura 7.2 Diagrama de Casos de Uso A especificação dos casos de uso pode ser vista no Anexo I – Especificação dos Casos de Uso. A análise e projeto dos casos de uso críticos: Acessar Tutorial 3D, Treinar Cubo Virtual e Jogar Cubo Virtual encontram-se no Anexo II – Realização dos Casos de Uso críticos. 54 7.3 Modelo de Arquitetura Figura 7.3 Modelo de Arquitetura 55 Conforme mencionado no tópico 5.1.2, o modelo de arquitetura do projeto é dividido em seis camadas: visão, action, model, DAO, DTO e ch. Segue, a seguir, uma explicação sucinta de cada camada: • Visão: camada onde se encontram as classes responsáveis pela apresentação do sistema. Exemplo: as telas de interface com o usuário. • Action: camada onde se encontram as classes que respondem às ações realizadas pelo usuário. Exemplo: “cliques” nos botões. • Model: camada onde se encontram todas as regras de negócio necessárias ao sistema. Exemplo: representação, movimentação e resolução do cubo mágico. • DAO: camada responsável pela persistência dos dados, ou seja, camada que contém as classes que se comunicam com a base de dados. • DTO: camada que contém as classes que podem “navegar” entre as camadas do software de maneira livre. Exemplo: o Usuário. • 7.4 Ch: camada que contém a aplicação Rubik’s Cube Diagrama de Implantação 56 8 DIFICULDES ENCONTRADAS A primeira dificuldade encontrada foi em relação à compreensão do código original da interface gráfica do cubo virtual 3D. Muitas das lógicas utilizadas pelo seu desenvolvedor Werner Randelshofer eram consideravelmente complexas, devido à dificuldade de representar os componentes do cubo mágico graficamente. Esse fator dificultou o entendimento das propriedades que estavam sendo consideradas. Durante o ápice do desenvolvimento do sistema, um dos obstáculos enfrentados com maior significância foi quanto à utilização de Threads em Java. Este recurso foi necessário para permitir que ocorressem mais de uma operação do sistema simultaneamente, como a manipulação do cubo enquanto o tempo de inspeção ou cronômetro estivesse em execução e quando diferentes peças precisassem ficar piscando durante o tutorial. A dificuldade enfrentada foi no tratamento da concorrência entre as Threads, que foi superada com a utilização de combinadas variáveis Flag para que as tarefas fossem executadas sem intervir nas outras quando não fosse conveniente. Outra relevante dificuldade encontrada também se deu em relação ao applet. Por questões de segurança, ele é executado na máquina do cliente com acesso muito restrito aos recursos existentes, característica que dificultou muito a inserção das imagens. Porém, o applet tem acesso total aos arquivos presentes em seu ‘.jar’. Então a solução era encontrar um modo de inserir as imagens necessárias dentro do próprio applet, para que as mesmas pudessem ser mostradas ao usuário. Isso se tornou possível graças ao método ‘getClass().getResource(“caminhoImagem”)’ que retorna o caminho completo de onde se encontra a classe em questão. A partir disso, foi possível inserir imagens dentro do arquivo ‘.jar’ referente ao applet, e onde ele fosse baixado na máquina do cliente seria possível identificar sua localização e acrescentar as imagens à tela, informando seu endereço em relação à classe em questão. 57 9 CONCLUSÃO Os principais objetivos definidos no início do projeto foram alcançados com satisfação dos interessados, visto que através do produto final gerado pelo projeto é possível aprender a resolver o cubo mágico e colocar em prática a teoria aprendida através de uma interface bastante interativa. Os resultados foram alcançados graças ao estudo das principais dificuldades que uma pessoa tem quando tenta aprender a resolver o cubo através de um tutorial tradicional, que peca principalmente pela falta de interatividade com o usuário, que muitas vezes se vê obrigado a lidar com figuras e explicações estáticas. Devido à diversidade de estágios de aprendizado em que o usuário pode se encaixar, o projeto permite a seleção da etapa da resolução desejada, o que viabiliza o progresso do usuário na aprendizagem da resolução do cubo. Dentre os objetivos iniciais do projeto, alguns tiveram seu cumprimento adiado, como: o gerenciamento do usuário e da agenda de notícias e implementação do nível Intermediário de resolução do cubo. Tal fato se deu devido à complexidade das funcionalidades implementadas, principalmente no que diz respeito ao Tutorial interativo, ao Treinamento e ao Jogo. O curto prazo para o desenvolvimento, aliado às outras atividades (demais disciplinas cursadas e trabalho) exercidas pelos componentes do grupo também foram obstáculos para a conclusão do projeto ideal. A realização do projeto possibilitou o aprendizado e aperfeiçoamento de várias tecnologias (ex: applet), padrões de desenvolvimento e áreas abrangidas no curso (ex: programação em Java, Banco de Dados e Engenharia de Software), além viabilizar uma real simulação de todo o processo pelo qual passa o desenvolvimento de um software. 58 10 BIBLIOGRAFIA PRESSMAN, Roger. Engenharia de Software. Trad. Rosângela Delloso Penteado. McGraw-Hill,6ª Edição, 2006. LARMAN, Craig. Utilizando UML e Padrões: Uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. Trad. Luiz A Meirelles Salgado. Bookman, 3ª Edição, 2007. DEITEL, Harvey M; DEITEL, Paul J. Java Como Programar. Prentice Hall, 6ª Edição, 2005. BANDELOW, Christoph. Einfuehrung in die Cubologie, Vieweg, 1981 apud RANDELSHOFER, Werner WIKIPÉDIA, Wikipédia. http://pt.wikipedia.org/wiki/Cubo_m%C3%A1gico Cubo Mágico. 59 11 ANEXOS 11.1 Anexo I – Especificação dos Casos de Uso 11.1.1 Efetuar Login Nome do Caso de Uso Efetuar Login Breve Descrição Este caso de uso tem como objetivo permitir que um usuário cadastrado se identifique no Sistema. Atores Usuário identificado, Usuário não identificado, Administrador Pré-condições Não se aplica. Fluxo Principal P1. O caso de uso inicia quando o ator preenche os campos Usuário e Senha e os submete ao Sistema. P2. O Sistema valida os campos [RN1] [E1] [E2]. P3. O Sistema apresenta a Foto, Nome, E-mail, Cidade e Estado do ator identificado, além das opções Editar Perfil e Sair [E3]. P4. Fim do Fluxo Principal. Fluxos Alternativos Não se aplica. Fluxos de Exceção E1. Campo obrigatório não preenchido. E1.1. Conforme RN1, o Sistema destaca o(s) campo(s) que não foi(ram) preenchido(s) e apresenta a mensagem: “Campo obrigatório x não foi preenchido”, onde x é o nome do campo obrigatório que não foi preenchido. E1.2. O Sistema retorna ao passo anterior. E2. Campo inválido. E2.1. Conforme RN1, o Sistema destaca o(s) campo(s) que não foi(ram) preenchido(s) corretamente e apresenta a mensagem: “O campo x informado é inválido”, onde x é o campo que foi preenchido incorretamente. E2.2. O Sistema retorna ao passo anterior. E3. Usuário não encontrado. 60 E3.1. Depois de validar o formulário, o Sistema não encontra na base de dados um registro com os dados informados e apresenta a mensagem: “Usuário/Senha inválidos”. E3.2. O Sistema retorna ao passo anterior. Regras de Negócio RN1. Formulário de Login - Os campos Usuário e Senha deverão ser obrigatoriamente preenchidos. - O campo senha deverá conter no mínimo 6 caracteres e no máximo 12. - O campo Usuário, representado pelo e-mail informado pelo usuário no momento do Cadastro deverá ser válido. Pós-condição O Sistema deverá habilitar todas as funcionalidades para o ator que se identificar com sucesso. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares Tela 1 Efetuar Login 61 11.1.2 Acessar Tutorial 3D Nome do Caso de Uso Acessar Tutorial 3D Breve Descrição Este caso de uso tem como objetivo permitir que o usuário aprenda a resolver, em etapas, o cubo mágico virtual. Atores Usuário identificado, Administrador Pré-condições O usuário/administrador deverá ter se identificado no sistema. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona Acessar Tutorial 3D no menu principal do Applet. P2. O Sistema apresenta o nível Iniciante com suas respectivas etapas [RN1] e as opções Tutorial e Voltar. P3. O ator seleciona uma etapa de um nível de aprendizado e em seguida a opção Tutorial [A1]. P4. O Sistema apresenta o cubo virtual pronto para realizar o aprendizado da etapa selecionada [RN2], além da opção Iniciar Aprendizado. P5. O ator seleciona a opção Iniciar Aprendizado. P6. O Sistema descreve o que será feito no passo e apresenta as opções Voltar, Executar e Avançar. P7. O ator seleciona a opção Executar para que os movimentos descritos no P6 sejam executados [A2] [A3]. P8. O Sistema retorna ao P6 até que todos os passos da etapa de aprendizado selecionada tenham sido executados. P9. Ao término do aprendizado da etapa, o Sistema apresenta a opção Finalizar Tutorial. P10. O ator seleciona a opção Finalizar Tutorial. P11. O Sistema retorna ao P2. Fluxos Alternativos A1. Voltar ao menu principal do Applet A1.1. O ator seleciona a opção Voltar. A1.2. O Sistema retorna ao menu principal do Applet. A2. Voltar passo 62 A2.1. O ator seleciona a opção Voltar. A2.2. O Sistema retorna ao passo apresentado anteriormente, caso exista. A2.3. O Sistema retorna ao P6. A3. Avançar passo A3.1. O ator seleciona a opção Avançar. A3.2. O Sistema avança para o passo seguinte, caso exista. A3.3. O Sistema retorna ao P6. Fluxos de Exceção Não se aplica. Regras de Negócio RN1. Etapas O Sistema apresenta as seguintes etapas para o nível iniciante: • Cruz Branca; • 1ª Camada; • 2ª Camada; • Cruz Amarela; • Face Amarela; • Cantos da 3ª Camada; • Meios da 3ª Camada. RN2. Organização do Cubo Virtual O Cubo Virtual será apresentado com uma configuração condizente com a etapa selecionada. • Cruz Branca: o Cubo Virtual estará embaralhado. • 1ª Camada: Cruz Branca pronta. • 2ª Camada: 1ª Camada pronta. • Cruz Amarela: 2ª Camada pronta. • Face Amarela: Cruz Amarela pronta. • Cantos da 3ª Camada: Face Amarela pronta. • Meios da 3ª Camada: Cantos da 3ª Camada prontos. 63 RN3. Documentos associados aos níveis • Para o nível Iniciante, as descrições necessárias para a resolução de cada etapa estão presentes no Anexo IV – Apostila Nível Básico. • Para o nível Intermediário, as descrições necessárias para a resolução de cada etapa estão presentes no Anexo V – Apostila Nível Intermediário. Pós-condição Não se aplica. Pontos de Extensão PE1. Treinar Cubo Virtual O caso de uso estende ao caso de uso Treinar Cubo Virtual. Características Não se aplica. suplementares Tela 2 Tela Principal do Applet, acessada nos casos de uso AcessarTutorial3D, TreinarCuboVirtual e JogarCuboVirtual 64 Tela 3 Tela de Níveis e Etapas, acessada nos casos de uso AcessarTutorial3D e TreinarCuboVirtual Tela 4 Acessar Tutorial 3D 65 11.1.3 Treinar Cubo Virtual Nome do Caso de Uso Treinar Cubo Virtual Breve Descrição Este caso de uso tem como objetivo permitir que o usuário treine a resolução de cada etapa com auxílio do Sistema. Atores Usuário identificado, Administrador Pré-condições O usuário/administrador deverá ter se identificado no sistema. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Treinar Cubo Virtual no menu principal do Applet. P2. O Sistema apresenta o nível Iniciante com suas respectivas etapas [RN1]. P3. O ator seleciona uma etapa de um nível de aprendizado. P4. O Sistema apresenta o cubo virtual pronto para realizar o treinamento da etapa selecionada [RN2], além da opção Iniciar Treinamento P5. O ator seleciona a opção Iniciar Treinamento. P6. O Sistema apresenta as opções de movimentos, conforme o Anexo III – Notação dos Movimentos, além das opções Ajuda e Parar, que permitem ao usuário receber dicas do Sistema e finalizar o treinamento da etapa selecionada, respectivamente. P7. O ator seleciona as opções apresentadas no P6 para movimentar o cubo virtual [A1] [A2]. O ação ocorre até que o ator selecione a opção Parar ou até que a etapa selecionada tenha sido encerrada. P8. O ator seleciona a opção Parar. P9.1. O Sistema apresenta a mensagem de conclusão da etapa treinada e a opção Menu de Etapas [RN3]. P9.2. O Sistema retorna ao P2. Fluxos Alternativos A1. Ajudar usuário A1.1. O ator seleciona a opção Ajuda. A1.2. O Sistema apresenta uma sugestão de resolução 66 para o passo atual. A1.3. O Sistema retorna ao P7. A2. Finalizar Treinamento da Etapa A2.1. O ator seleciona a opção Parar. A2.2. O Sistema retorna ao P9. Fluxos de Exceção Não se aplica. Regras de Negócio O Sistema apresenta as seguintes etapas para o nível Iniciante: • Cruz Branca; • 1ª Camada; • 2ª Camada; • Cruz Amarela; • Face Amarela; • Cantos da 3ª Camada; • Meios da 3ª Camada. RN2. Organização do Cubo Virtual O Cubo Virtual será apresentado com uma configuração condizente com a etapa selecionada. • Cruz Branca: o Cubo Virtual estará embaralhado. • 1ª Camada: Cruz Branca pronta. • 2ª Camada: 1ª Camada pronta. • Cruz Amarela: 2ª Camada pronta. • Face Amarela: Cruz Amarela pronta. • Cantos da 3ª Camada: Face Amarela pronta. • Meios da 3ª Camada: Cantos da 3ª Camada prontos. RN3. Mensagem de conclusão da etapa Ao selecionar a opção Parar, se o usuário tiver concluído a etapa, uma mensagem de sucesso na conclusão da etapa será apresentada. Caso contrário, será mostrada uma 67 mensagem de não conclusão da etapa. Pós-condição Não se aplica. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares Tela 5 Treinar Cubo Virtual 11.1.4 Jogar Cubo Virtual Nome do Caso de Uso Jogar Cubo Virtual Breve Descrição Este caso de uso tem como objetivo permitir que o usuário jogue o Cubo Mágico Virtual sem auxílio do Sistema e marque o tempo e quantidade de movimentos despendidos na tentativa de resolução. Atores Usuário identificado, Administrador Pré-condições O usuário/administrador deverá ter se identificado no sistema. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Jogar Cubo Virtual. 68 P2.1. O Sistema apresenta o cubo mágico virtual em seu estado resolvido com a opção Embaralhar. P2.2. O Sistema apresenta os tempos e quantidades de movimentos correspondentes às suas melhores médias do presente momento. P3. O ator seleciona a opção Embaralhar. P4. O Sistema embaralha o cubo virtual [RN1]. P5.1. O Sistema apresenta e ativa o contador regressivo de inspeção [RN2]. P5.2. O Sistema apresenta a opção Jogar, além das opções de movimento X, X’, Y, Y’, Z, Z’ [RN3]. P6. O ator seleciona a opção Jogar [A1]. P7.1. O Sistema apresenta as demais opções de movimentos, conforme o Anexo III – Notação dos Movimentos, além da opção Parar, que permitirá ao usuário finalizar a tentativa de resolução do cubo virtual. P7.2. O Sistema apresenta e ativa o cronômetro progressivo e o contador de movimento para que o tempo e a quantidade de movimentos utilizados na tentativa de resolução do cubo sejam marcados. P7.3. O Sistema libera o cubo virtual para manipulação. P8. O ator seleciona as opções apresentadas no P5.2. e P7.1. para movimentar o cubo virtual. A ação ocorre até que o ator selecione a opção Parar. P9. O ator seleciona a opção Parar. P10.1. O Sistema pára o cronômetro e o contador de movimentos. P10.2. O Sistema verifica se o estado atual do cubo é o estado dele resolvido. P11.1 Se o estado atual do cubo for igual ao estado dele resolvido, o Sistema apresenta ao usuário seu tempo e número de passos utilizados, atualizando suas respectivas médias [RN4]. Caso contrário, o Sistema indicará ao 69 usuário que o objetivo não foi alcançado. P11.2 Sistema pergunta se usuário deseja jogar novamente[A2]. P12. O Sistema retorna ao P2. Fluxos Alternativos A1. Esperar contador regressivo A1.1. O ator espera o contador regressivo chegar ao tempo 0:00:00. A1.2. O Sistema retorna ao P7.1. A2 Usuário não deseja jogar novamente. A2.1 Sistema finaliza caso de uso. Fluxos de Exceção Não se aplica. Regras de Negócio RN1. Embaralhamento O embaralhamento deverá obedecer às seguintes regras: • A quantidade de movimentos utilizada para embaralhar o cubo deve ser igual a 25. • O mesmo movimento não pode ser executado três ou mais vezes seguidas. • Um movimento não pode ser seguido pelo seu movimento contrário. • Os movimentos X,X’, Y, Y’, Z, Z’, M, M’, E, E’, S, S’ não farão parte do embaralhamento (vide Anexo III – Notação dos Movimentos) RN2. Tempo de Inspeção O tempo de inspeção deverá ser de 30 segundos. RN3. Opções de movimentos apresentadas durante o tempo de inspeção. Somente deverá ser permitido que o usuário execute os movimentos X, X’, Y, Y’, Z e Z’ durante a inspeção do cubo. Tais movimentos, quando realizados, não alteram a configuração do cubo, só mudam sua perspectiva de visão. 70 RN4. Cálculo da Média Tanto para cálculo da média de tempo quanto para a média de quantidade de movimentos válidos para o ranking será utilizada a seguinte regra: • Para ser uma média válida, devem ser medidos, pelo menos, cinco parâmetros (cinco tempos ou cinco quantidade de movimentos) consecutivos. • A partir do sexto parâmetro (tempo ou quantidade de movimentos) recebido, esses novos parâmetros irão substituindo os antigos na ordem em que foram inseridos. Essa substituição é importante porque para cálculo da média são utilizados somente 5 parâmetros. • A melhor média de uma sessão não será o conjunto dos cinco melhores tempos, e sim a melhor média de cinco parâmetros consecutivos que foram marcados na sessão. • A melhor média de determinada sessão do usuário será testada para verificar se está apta a entrar no ranking. Pós-condição Tempos, números de movimentos e respectivas médias que estiverem aptos a participar do ranking deverão ser adicionados ao mesmo. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares 71 Tela 6 Jogar Cubo Virtual 11.1.5 Cadastrar Usuário Nome do Caso de Uso Cadastrar Usuário Breve Descrição Este caso de uso tem como objetivo permitir que um usuário se cadastre no Sistema. Atores Usuário não identificado Pré-condições Não se aplica. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Cadastrar-se. P2. O Sistema apresenta o formulário de cadastro com os campos: Nome, Estado, Cidade, Data de Nascimento, Foto, E-mail, Repita o E-mail, Senha e Confirme a Senha. São apresentadas também as opções Efetuar Cadastro e Limpar Campos. P3. O ator preenche os campos e os submete para que o cadastro seja efetivado [A1]. P4. O Sistema valida as informações fornecidas pelo ator [RN1] [E1] [E2] [E3] [E4] [E5] [E6]. 72 P5. O Sistema grava as informações fornecidas pelo ator. P6. O Sistema apresenta a mensagem: “Cadastro efetivado com sucesso”. P7. O caso de uso é encerrado. Fluxos Alternativos A1. Limpar campos A1.1. O ator seleciona a opção Limpar campos. A1.2. O Sistema limpa todos os campos do formulário. A1.3. O Sistema retorna ao P2. Fluxos de Exceção E1. Campo obrigatório não preenchido. E1.1. O Sistema verifica que algum campo obrigatório não foi preenchido. E1.2. O Sistema destaca o campo obrigatório que não foi preenchido e apresenta a mensagem: “O campo obrigatório X não foi preenchido”, onde X é o nome do campo obrigatório que não foi preenchido. E1.3. O Sistema retorna ao P3. E2. Campo inválido. E2.1. O Sistema verifica que algum campo foi preenchido de forma inválida. E2.2. O Sistema destaca o campo que foi preenchido de forma inválida e apresenta a mensagem: “O(A) X informado(a) é inválido(a)”, onde X é o campo informado de forma inválida. E2.3. O Sistema retorna ao P3. E3. Tamanho da foto superior ao limite de 500Kb. E3.1. O Sistema verifica que o tamanho da foto é superior ao limite de 500Kb. E3.2. O Sistema destaca o campo Foto e apresenta a mensagem: “O tamanho da foto é superior ao limite de 500Kb”. E3.3. O Sistema retorna ao P3. 73 E4. Foto com extensão inválida. E4.1. O Sistema verifica que a extensão do arquivo selecionado para o campo Foto é inválida. E4.2. O Sistema destaca o campo Foto e apresenta a mensagem: “O arquivo da foto deve ter a extensão .gif, .jpg, .jpeg, .png”. E4.3. O Sistema retorna ao P3. E5. E-mail e Repita o e-mail diferentes E5.1. O Sistema verifica que os e-mails informados nos campos E-mail e Repita o e-mail são diferentes. E5.2. O Sistema destaca os campos E-mail e Repita o email e apresenta a mensagem: “Os e-mails informados nos campos E-mail e Repita o e-mail são diferentes”. E5.3. O Sistema retorna ao P3. E6. Senha e Confirma a senha diferentes E6.1. O Sistema verifica que as senhas informadas nos campos Senha e Confirme a senha são diferentes. E6.2. O Sistema destaca os campos Senha e Confirme a senha e apresenta a mensagem: “As senhas informadas nos campos Senha e Confirme a senha são diferentes”. E6.3. O Sistema retorna ao P3. Regras de Negócio RN1. Formulário de Cadastro O preenchimento dos campos do formulário de cadastro deverá obedecer às seguintes regras: • Nome o Descrição: nome do usuário que irá se cadastrar. o Tipo: texto. o Obrigatório: sim. o Regras: 74 Somente serão aceitos caracteres A/a – Z/z. O tamanho não deverá ultrapassar 50 caracteres. • Estado o Descrição: estado em que reside o usuário que irá se cadastrar. o Tipo: caixa de seleção (combobox) o Obrigatório: não. o Regras: A caixa de seleção deverá conter os 27 estados brasileiros mais o Distrito Federal. • Cidade o Descrição: cidade em que reside o usuário que irá se cadastrar. o Tipo: texto. o Obrigatório: não. o Regras: O tamanho não deverá ultrapassar 30 caracteres. • Data de Nascimento o Descrição: data de nascimento do usuário que irá se cadastrar. o Tipo: texto. o Obrigatório: não. o Regras: O formato deverá ser dd/MM/yyyy. À medida que o usuário digitar as datas o Sistema deverá incluir as barras que separam o dia, mês e ano. Somente deverão ser aceitos números. O tamanho da data deverá ser igual a 75 10. A data deverá ser válida. • Foto o Descrição: foto do usuário que irá se cadastrar. o Tipo: arquivo. o Obrigatório: não. o Regras: O tamanho da foto deverá ser inferior a 500Kb. Somente serão aceitos arquivos cuja extensão é .gif, .jpg, .jpeg ou .png. • E-mail o Descrição: e-mail do usuário que irá se cadastrar. o Tipo: texto. o Obrigatório: sim. o Regras: Somente deverão ser aceitos e-mails válidos. O tamanho máximo deverá ser de 50 caracteres. Deverá fazer parte do login do usuário para acesso às funcionalidades do Sistema. • Repita o e-mail o Descrição: confirmação do e-mail informado no campo anterior. o Tipo: texto. o Obrigatório: sim. o Regras: O conteúdo deverá ser exatamente igual ao do campo E-mail. 76 • Senha o Descrição: senha do usuário que irá se cadastrar. o Tipo: senha (password). o Obrigatório: sim. o Regras: O tamanho da senha deverá ser de no mínimo 6 e no máximo 12 caracteres. Será a senha de acesso do usuário às funcionalidades do Sistema. Junto com o campo E-mail, deverá formar o login do usuário. • Confirme a senha: o Descrição: confirmação da senha informada no campo anterior. o Tipo: senha (password). o Obrigatório: sim. o Regras: O conteúdo deverá ser exatamente igual ao do campo Senha. Pós-condição O Sistema deverá armazenar em seu banco de dados o cadastro do usuário. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares 77 Tela 7 Cadastrar Usuário 11.1.6 Editar Cadastro Nome do Caso de Uso Editar Cadastro Breve Descrição Este caso de uso tem como objetivo permitir que um usuário edite seu cadastro no Sistema. Atores Usuário identificado, Administrador Pré-condições O ator deverá ter se identificado no Sistema. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Editar Perfil. P2. O Sistema carrega as informações atuais do usuário e as apresenta no formulário de alteração, que conterá os campos Nome, Estado, Cidade, Data de Nascimento, Foto, E-mail, Repita o e-mail, Senha atual, Nova Senha e Confirme a senha [RN1]. São apresentadas também as opções Atualizar perfil e Desfazer atualização. P3. O ator preenche os campos e os submete para que a alteração seja efetivada [A1]. P4. O Sistema valida as informações fornecidas pelo ator 78 [RN2] [E1] [E2] [E3] [E4] [E5] [E6]. P5. O Sistema grava as novas informações fornecidas pelo ator. P6. O Sistema apresenta a mensagem: “Cadastro alterado com sucesso”. P7. O caso de uso é encerrado. Fluxos Alternativos A1. Desfazer atualização A1.1. O ator seleciona a opção Desfazer atualização. A1.2. O Sistema recarrega os dados do formulário de acordo com as informações salvas na sua base de dados. A1.3. O Sistema retorna ao P2. Fluxos de Exceção E1. Campo obrigatório não preenchido. E1.1. O Sistema verifica que algum campo obrigatório não foi preenchido. E1.2. O Sistema destaca o campo obrigatório que não foi preenchido e apresenta a mensagem: “O campo obrigatório X não foi preenchido”, onde X é o nome do campo obrigatório que não foi preenchido. E1.3. O Sistema retorna ao P3. E2. Campo inválido. E2.1. O Sistema verifica que algum campo foi preenchido de forma inválida. E2.2. O Sistema destaca o campo que foi preenchido de forma inválida e apresenta a mensagem: “O(A) X informado(a) é inválido(a)”, onde X é o campo informado de forma inválida. E2.3. O Sistema retorna ao P3. E3. Tamanho da foto superior ao limite de 500Kb. E3.1. O Sistema verifica que o tamanho da foto é superior ao limite de 500Kb. E3.2. O Sistema destaca o campo Foto e apresenta a 79 mensagem: “O tamanho da foto é superior ao limite de 500Kb”. E3.3. O Sistema retorna ao P3. E4. Foto com extensão inválida. E4.1. O Sistema verifica que a extensão do arquivo selecionado para o campo Foto é inválida. E4.2. O Sistema destaca o campo Foto e apresenta a mensagem: “O arquivo da foto deve ter a extensão .gif, .jpg, .jpeg, .png”. E4.3. O Sistema retorna ao P3. E5. E-mail e Repita o e-mail diferentes E5.1. O Sistema verifica que os e-mails informados nos campos E-mail e Repita o e-mail são diferentes. E5.2. O Sistema destaca os campos E-mail e Repita o email e apresenta a mensagem: “Os e-mails informados nos campos E-mail e Repita o e-mail são diferentes”. E5.3. O Sistema retorna ao P3. E6. Senha e Confirma a senha diferentes E6.1. O Sistema verifica que as senhas informadas nos campos Senha e Confirme a senha são diferentes. E6.2. O Sistema destaca os campos Senha e Confirme a senha e apresenta a mensagem: “As senhas informadas nos campos Senha e Confirme a senha são diferentes”. E6.3. O Sistema retorna ao P3. Regras de Negócio RN1. Carregamento do formulário de alteração O carregamento do formulário de alteração deverá obedecer às seguintes regras: • As informações deverão ser obtidas através da base de dados do Sistema. • Os campos Nome, Estado, Cidade, Data de 80 Nascimento e E-mail deverão ser carregados. • Os campos Foto, Repita o e-mail, Senha atual, Nova senha e Confirme a senha deverão estar vazios. RN2. Formulário de Cadastro O preenchimento dos campos do formulário de cadastro deverá obedecer às seguintes regras: • Nome o Descrição: nome do usuário que quer atualizar seu perfil. o Tipo: texto. o Obrigatório: sim. o Regras: Somente serão aceitos caracteres A/a – Z/z. O tamanho não deverá ultrapassar 50 caracteres. • Estado o Descrição: estado em que reside o usuário que quer atualizar seu perfil. o Tipo: caixa de seleção (combobox) o Obrigatório: não. o Regras: A caixa de seleção deverá conter os 27 estados brasileiros mais o Distrito Federal. • Cidade o Descrição: cidade em que reside o usuário que quer atualizar seu perfil o Tipo: texto. o Obrigatório: não. o Regras: O tamanho não deverá ultrapassar 30 81 caracteres. • Data de Nascimento o Descrição: data de nascimento do usuário que quer atualizar seu perfil. o Tipo: texto. o Obrigatório: não. o Regras: O formato deverá ser dd/MM/yyyy. À medida que o usuário digitar as datas o Sistema deverá incluir as barras que separam o dia, mês e ano. Somente deverão ser aceitos números. O tamanho da data deverá ser igual a 10. A data deverá ser válida. • Foto o Descrição: foto do usuário que quer atualizar seu perfil. o Tipo: arquivo. o Obrigatório: não. o Regras: O tamanho da foto deverá ser inferior a 500Kb. Somente serão aceitos arquivos cuja extensão é .gif, .jpg, .jpeg ou .png. • E-mail o Descrição: e-mail do usuário que quer atualizar seu perfil. o Tipo: texto. o Obrigatório: sim. o Regras: Somente deverão ser aceitos e-mails válidos. 82 O tamanho máximo deverá ser de 50 caracteres. Deverá fazer parte do login do usuário para acesso às funcionalidades do Sistema. • Repita o e-mail o Descrição: confirmação do e-mail informado no campo anterior. o Tipo: texto. o Obrigatório: será obrigatório se o campo Email tiver sido alterado. o Regras: O conteúdo deverá ser exatamente igual ao do campo E-mail. • Senha atual o Descrição: senha atual do usuário que quer atualizar seu perfil. o Tipo: senha (password). o Obrigatório: sim. o Regras: O conteúdo deverá ser exatamente igual à senha do usuário registrada na base de dados. • Nova senha o Descrição: nova senha do usuário que quer atualizar seu perfil. o Tipo: senha (password). o Obrigatório: não. o Regras: O tamanho da senha deverá ser de no mínimo 6 e no máximo 12 caracteres. Será a senha de acesso do usuário às funcionalidades do Sistema. Junto 83 com o campo E-mail, deverá formar o login do usuário. • Confirme a senha: o Descrição: confirmação da senha informada no campo anterior. o Tipo: senha (password). o Obrigatório: será obrigatória se o campo Nova senha for preenchido. o Regras: O conteúdo deverá ser exatamente igual ao do campo Nova senha. Pós-condição Caso o usuário altere alguma informação, o Sistema deverá armazenar os novos dados em sua base de dados. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares Tela 8 Editar Cadastro 84 11.1.7 Pesquisar Usuário Nome do Caso de Uso Pesquisar Usuário Breve Descrição Este caso de uso tem como objetivo permitir que um usuário pesquise por outros no Sistema. Atores Usuário identificado/Administrador. Pré-condições O ator deverá ter se identificado no Sistema. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Usuários. P2.1. O Sistema apresenta os usuários cadastrados no Sistema [RN1]. P2.2. O Sistema apresenta o formulário de pesquisa com os campos: Nome, Estado e Cidade. P3. O ator preenche os campos e os submete para que a pesquisa seja realizada [RN2] [A1]. P4. O Sistema apresenta o resultado da pesquisa [RN3]. P5. O ator seleciona um resultado. P6. O Sistema exibe o perfil do usuário selecionado [RN4]. P5. O caso de uso é encerrado. Fluxos Alternativos A1. Alterar página do resultado A1.1. O ator seleciona uma página do resultado. A1.2. O Sistema redireciona o ator para a página desejada, mostrando a ele os resultados desta página. A1.3. O Sistema retorna ao P2.1. Fluxos de Exceção Não se aplica. Regras de Negócio RN1. Apresentação dos usuários cadastrados A apresentação dos usuários cadastrados deverá seguir as seguintes regras: • Ordenação alfabética. • 20 usuários por página. • Somente deverão ser mostrados Foto, Nome, Email, Cidade e Estado. RN2. Formulário de Pesquisa 85 O preenchimento dos campos do formulário de pesquisa deverá seguir as seguintes regras: • Nome o Descrição: nome do(s) usuário(s) que será(ão) pesquisado(s). o Tipo: texto. o Obrigatório: não. o Regras: Somente serão aceitos caracteres A/a – Z/z. O tamanho não deverá ultrapassar 50 caracteres. • Estado o Descrição: estado em que reside o(s) usuário(s) que será(ão) pesquisado(s). o Tipo: caixa de seleção (combobox) o Obrigatório: não. o Regras: A caixa de seleção deverá conter os 27 estados brasileiros mais o Distrito Federal. • Cidade o Descrição: cidade em que reside o(s) usuário(s) que será(ão) pesquisado(s). o Tipo: texto. o Obrigatório: não. o Regras: o O tamanho não deverá ultrapassar 30 caracteres. RN3. Validação da pesquisa A validação da pesquisa deverá seguir as seguintes regras: 86 • Se nenhum campo for preenchido, o resultado será a apresentação de todos os usuários cadastrados. • Se mais de um campo for preenchido, o resultado levará em consideração a combinação destes campos. RN4. Exibição do perfil de um usuário A exibição do perfil de um usuário selecionado deverá seguir as seguintes regras: • Deverão ser mostrados: Foto, Nome, Cidade, Estado, E-mail, Melhor tempo único, Melhor média de tempos, Melhor Quantidade de Movimentos e melhor Média de Quantidade de Movimentos. • Um link “Deixar Recado” também deverá ser exibido. Pós-condição Não se aplica. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares 11.1.8 Enviar Mensagem Pessoal Nome do Caso de Uso Enviar Mensagem Pessoal Breve Descrição Este caso de uso tem como objetivo permitir que um usuário envie uma mensagem a outro. Atores Usuário identificado/Administrador Pré-condições O ator deverá ter se identificado no Sistema. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Enviar recado na página de perfil de um usuário. P2. O Sistema apresenta o formulário para envio de recado com o campo: Recado. São também apresentadas as opções Enviar e Limpar. P3. O ator preenche e submete o campo [A1]. P4. O Sistema valida o formulário [RN1] [E1]. 87 P5. O Sistema grava as informações em sua base de dados [RN2]. P6. O Sistema apresenta a mensagem: “Recado enviado com sucesso!” P7. O caso de uso é encerrado. Fluxos Alternativos A1. Limpar recado A1.1. O ator seleciona a opção Limpar. A1.2. O Sistema limpa o campo Recado do formulário. A1.3. O Sistema retorna ao P2. Fluxos de Exceção E1. Campo obrigatório Recado não foi preenchido. E1.1. O Sistema verifica que o campo obrigatório Recado não foi preenchido. E1.2. O Sistema apresenta a mensagem: “O campo Recado não foi preenchido”. E1.3. O Sistema retorna ao P2. Regras de Negócio RN1. Formulário de recado O campo Recado deverá seguir as seguintes regras: • Recado o Descrição: recado que um usuário deixará a outro. o Tipo: texto. o Obrigatório: sim. o Regras: Deverá conter no máximo 400 caracteres. RN2. Informações salvas na base de dados O Sistema deverá salvar em sua base de dados o nome dos usuários remetente e destinatário, além da data do recado. Pós-condição O recado, remetente, destinatário e data deverão ser salvos na base de dados do Sistema. Pontos de Extensão Não se aplica. 88 Características Não se aplica. suplementares Tela 9 Enviar Mensagem Pessoal 11.1.9 Entrar Contato Administradores Nome do Caso de Uso Entrar Contato Administradores Breve Descrição Este caso de uso tem como objetivo permitir que um usuário envie uma mensagem aos Administradores do Sistema. Atores Usuário identificado / Usuário não identificado / Administrador Pré-condições Não se aplica. Fluxo Principal P1. O caso de uso inicia quando o ator seleciona a opção Contato. P2. O Sistema apresenta um formulário com o campo Mensagem. São apresentadas também as opções Enviar e Limpar. P3. O ator preenche o formulário e o submete [A1]. 89 P4. O Sistema valida o formulário [RN1] [E1]. P5. O Sistema envia a mensagem ao e-mail dos administradores. P6. O Sistema apresenta a mensagem: “Mensagem enviada com sucesso!”. P7. O caso de uso é encerrado. Fluxos Alternativos A1. Limpar mensagem A1.1. O ator seleciona a opção Limpar. A1.2. O Sistema limpa o campo Mensagem. A1.3. O Sistema retorna ao P2. Fluxos de Exceção E1. Campo obrigatório Mensagem não preenchido E1.1. O Sistema verifica que o campo obrigatório Mensagem não foi preenchido. E1.2. O Sistema apresenta a mensagem: “O campo obrigatório Mensagem não foi preenchido”. E1.3. O Sistema retorna ao P2. Regras de Negócio RN1. Formulário de mensagem O formulário de mensagem deverá seguir as seguintes regras: • Mensagem o Descrição: mensagem que será enviada aos administradores do Sistema. o Tipo: texto. o Obrigatório: sim. o Regras: Deverá conter no máximo 400 caracteres. Pós-condição A mensagem administradores. Pontos de Extensão Não se aplica. Características Não se aplica. suplementares deverá ser enviada ao e-mail dos 90 11.2 Anexo II – Realização dos Casos de Uso Críticos 11.2.1 Acessar Tutorial 3D 11.2.1.1 Diagrama de Classes de Análise 91 11.2.1.2 Diagrama de Seqüência do Sistema 92 11.2.1.3 Diagrama de Seqüência 93 11.2.2 Treinar Cubo Virtual 11.2.2.1 Diagrama de Classes de Análise 94 11.2.2.2 Diagrama de Seqüência do Sistema 95 11.2.2.3 Diagrama de Seqüência 96 11.2.3 Jogar Cubo Virtual 11.2.3.1 Diagrama de Classes de Análise 97 11.2.3.2 Diagrama de Seqüência do Sistema 98 11.2.3.3 Diagrama de Seqüência 99 11.3 Anexo III - Notação dos Movimentos Configuração inicial do Cubo Mágico: As figuras a seguir ilustram as formas de manipulação do cubo que poderão ser utilizadas. A figura correspondente a cada movimento representa a configuração final do Cubo Mágico após a realização do movimento a partir da configuração inicial representada acima. Movimento R: Giro da camada da direita no sentindo horário Movimento R’: Giro da camada da direita no sentindo anti-horário Movimento L: Giro da camada da esquerda no sentindo horário Movimento L’: Giro da camada da esquerda no sentindo anti-horário 100 Movimento F: Giro da camada da frente no sentindo horário Movimento F’: Giro da camada da frente no sentindo anti-horário Movimento B: Giro da camada de trás no sentindo horário Movimento B’: Giro da camada de trás no sentindo horário Movimento U: Giro da camada superior no sentindo horário 101 Movimento U’: Giro da camada superior no sentindo anti-horário Movimento D: Giro da camada inferior no sentindo horário Movimento D’: Giro da camada inferior no sentindo horário Movimento X: Giro do cubo inteiro no mesmo sentido do movimento R Movimento X’: Giro do cubo inteiro no mesmo sentido do movimento R’ 102 Movimento Y: Giro do cubo inteiro no mesmo sentido do movimento U Movimento Y’: Giro do cubo inteiro no mesmo sentido do movimento U’ Movimento Z: Giro do cubo inteiro no mesmo sentido do movimento F Movimento Z’: Giro do cubo inteiro no mesmo sentido do movimento F’ Movimento M: Giro da camada que fica entre as camadas direita e esquerda no sentido do movimento L 103 Movimento M’: Giro da camada que fica entre as camadas direita e esquerda no sentido do movimento L’ Movimento E: Giro da camada compreendida entre as camadas superior e inferior no sentido do movimento D Movimento E’: Giro da camada compreendida entre as camadas superior e inferior no sentido do movimento D’ Movimento S: Giro da camada compreendida entre as camadas da frente e de trás no sentido do movimento F Movimento S’: Giro da camada compreendida entre as camadas da frente e de trás no sentido do movimento F’ 104 11.4 Anexo IV - Apostila Nível Básico Por Carlos Alberto de Alcântara Júnior Introdução Esta apostila contém uma explicação sucinta sobre o método de resolução do cubo mágico por camadas e seus algoritmos (seqüências de movimentos). Os desenhos a seguir são baseados na cor que escolhi para a cruz inicial, o branco, mas pode ser feito em qualquer cor, para isso basta fazer o mesmo processo para as cores equivalentes à que você escolheu. Estes são os nomes das peças: Centros (6): Cantos (8): Meios (12): Dicas gerais: • A cor escolhida (no caso o branco) para a base, sempre deverá ficar virada para baixo, então a resolução do cubo vai evoluindo como se constrói um prédio, ou seja, de baixo para cima, camada por camada. • As peças dos centros são a base da estrutura do cubo, então elas são fixas em relação às outras peças centrais, ou seja, um cubo resolvido é quando as peças de determinada cor se encontram organizadas em volta de seu centro correspondente. • Para posicionar seu cubo de acordo com as figuras, considere como face da frente a face que se encontra mais voltada para frente no desenho. Esta é a legenda dos movimentos que vamos usar: Obs.: Os movimentos que estiverem seguidos por “2”, representam o giro duplo da face correspondente. Exemplo: U2 quer dizer dois movimentos U seguidos. Dica: Os movimentos seguidos por apóstrofo indicam o giro da face correspondente no sentido anti-horário. ___________________________________________________________________ Primeira etapa: Resolvendo a cruz branca: Este passo é bem intuitivo, não existem movimentos decorados a serem feitos, basta entender o objetivo e tentar. 105 Para auxiliar, pode-se fazer uma cruz branca em volta do centro amarelo: e em seguida deve-se alinhar algum meio branco da cruz feita com seu centro correspondente e “jogar” a peça alinhada da vez para o centro branco (que é o oposto do amarelo), realizando este mesmo processo para os 4 meios, concluindo assim o primeiro passo que é obter a cruz branca com os lados adjacentes corretamente alinhados. Segunda etapa: Resolvendo a primeira camada: Essa etapa também é bem tranqüila, e consiste em posicionar corretamente os 4 cantos (um por vez) da camada de baixo. Podem acontecer os seguintes casos: R U R’ F’ U’ F R U2 R’ (que leva a um dos 2 casos anteriores) Dica: Caso o canto esteja no lugar certo (na primeira camada), mas virado para o lado errado em relação a si mesmo, aplicar R U R’ na peça que levará a algum dos 3 casos. Terceira etapa: Resolvendo a segunda camada: Completando o passo anterior, vão ficar faltando apenas 4 peças (ou menos, caso alguma já saia certa) para completar a segunda camada. Primeiramente devese procurar por um meio que não tenha amarelo (pois por enquanto estamos interessados nas peças da segunda camada, e nenhuma delas tem adesivo amarelo) e alinhá-lo com o centro da mesma cor, ficando como nas figuras a seguir. Podem acontecer os seguintes casos: U R U R’-> U’ F’ U’ F U' F' U’ F -> U R U R' Dica: Caso algum meio esteja no lugar certo, mas com as cores trocadas entre si ou algum meio da segunda camada esteja no lugar de outro meio da mesma 106 camada, deve-se aplicar um destes dois movimentos, e algum dos 2 casos acima será obtido. Repita este processo para os 4 meios, um por vez, e a segunda camada será concluída. Quarta etapa: Resolvendo a cruz da camada de cima: Obs.: Caso a cruz já aparecer feita, pular para a próxima etapa. Esta etapa é bem simples, o que tem a ser feito é apenas repetir um algoritmo algumas vezes seguindo algumas regrinhas de posicionamento que a cruz amarela estará pronta. Ignorando por enquanto os cantos e observando apenas os meios, seu cubo pode estar de 3 formas: Caso “p” Caso “t” Caso “o” Caso “p”: F U R U’ R’ F’ Caso “t”: Fazendo o algoritmo do caso “p”, o próprio caso “p” será obtido, bastando apenas repetir (F U R U’ R’ F’) mais uma vez. Caso “o”: Fazendo o mesmo algoritmo (F U R U’ R’ F’), o caso “t” será obtido. Dica: Atente-se para posicionar a camada de cima exatamente como mostram as figuras (realizando o movimento U quantas vezes for necessário) para que o algoritmo funcione. Quinta etapa: Resolvendo a face de cima: O movimento característico dessa etapa se chama “Sune” (R U R’ U R U2 R’) e é bem fácil de memorizar, apesar de ser o maior apresentado até então. Nesta etapa, uma atenção maior deve ser dada ao posicionamento da camada de cima antes de realizar o movimento. Podem aparecer os seguintes casos genéricos (observe o número de cantos que estão com o adesivo amarelo voltado para cima): 107 1 Canto: Aplicar “Sune” 2 cantos 0 cantos 1 canto: Neste caso, a face amarela está próxima de ser concluída. Quando o movimento “Sune” for aplicado, ou a face amarela fica completa, ou este mesmo caso será obtido, necessitando então que se posicione a camada de cima corretamente e se faça o “Sune” mais uma vez. 2 cantos: Os dois cantos com amarelo para cima não necessariamente estarão da forma do desenho, mas o número de cantos certos sendo 2, o que deve ser observado é um adesivo amarelo da face da frente. Gire a camada de cima até que algum fique como na figura (independente de onde estejam os outros adesivos amarelos da frente), aplica-se o “Sune” e o primeiro caso será obtido. 0 cantos: Posicione a camada de cima de forma que algum adesivo (novamente não importando o posicionamento dos restantes) fique como no desenho, ou seja, na face da esquerda e aplique o “Sune”. Então será obtido o primeiro caso. Dica: Com o explicado no passo, o “Sune” será aplicado no máximo 3 vezes para que a face amarela seja concluída. Se forem feitas 3 vezes e não terminar, você posicionou a camada de cima de forma incorreta antes do movimento em pelo menos uma das vezes. Sexta etapa: Resolvendo os cantos da camada de cima: Apesar do algoritmo desta etapa ser mais “chato”, o entendimento do que tem a ser feito é bem simples. O objetivo é deixar todos os 4 cantos da camada de cima nos respectivos lugares. Para isso, devem ser observados os dois casos possíveis: Um lado certo Nenhum lado certo 108 Um lado certo: Quer dizer que um dos 4 lados está com seu par de cantos da mesma cor, como é o caso dos dois vermelhos da figura. Neste caso, esse par que está certo deve ser virado para trás (com o movimento U2) e o seguinte algoritmo deve ser feito: R’ F R’ B2 R F’ R’ B2 R2. Os cantos de todas as faces deverão ficar alinhados. Nenhum lado certo: Neste caso, faça o movimento do caso anterior (R’ F R’ B2 R F’ R’ B2 R2) em qualquer uma das 4 faces laterais, que o caso “um lado certo” será obtido. Sétima etapa: Resolvendo os meios da camada de cima: Esta é a etapa final onde os meios serão permutados entre si para irem para seus respectivos lugares. Dois casos são observados, o que os meios devem girar no sentido anti-horário e o que eles devem girar no sentido horário. --> --> (Vista de cima) (Vista de cima) Sentido anti-horário Sentido horário Anti-horário: Aplicar o algoritmo F2 U’ L R' F2 L' R U' F2. Horário: Aplicar o algoritmo F2 U L R' F2 L' R U F2. Dicas: Em ambos os casos, o lado que está com seu meio certo deve ficar virado para trás. Observe que o movimento U dos dois casos (em destaque) é no sentido em que o ciclo dos 3 meios vai girar, sendo esta a única diferença entre os dois algoritmos. Algumas vezes vai acontecer de ter 4 meios por permutar, neste caso, basta fazer um dos dois algoritmos que um meio irá para o lugar certo e um dos dois casos será obtido. Missão cumprida! 109 Agora é só praticar bastante para memorizar os algoritmos! Para tirar dúvidas ou fazer comentários ou sugestões, mande e-mail para [email protected]. Peça-me a apostila de nível intermediário para que você possa aprimorar seu método, e, conseqüentemente, diminuir seus tempos. Conheça também o fórum brasileiro de cubo mágico. Participe do ranking nacional de velocidade e troque idéia com os melhores cubistas do país: http://www.cubomagicobrasil.com/forum Por Carlos Alberto de Alcântara Júnior 11.5 Anexo V - Apostila Nível Intermediário Por Carlos Alberto de Alcântara Júnior Agora que já dominamos o método básico, está na hora de começar a poupar algumas repetições de movimentos conhecendo alguns casos mais específicos (de nível intermediário). A ordem dos algoritmos dessa apostila foi escolhida de acordo com a ordem que acredito que seja melhor para aprender, tanto pelo grau de dificuldade quanto pelo fato de que os algoritmos que estão primeiro poupam mais movimentos na resolução e/ou compensam mais serem aprendidos antes. Esses a seguir são dois tipos de movimentos que vamos utilizar e que ainda não tinham sido apresentados na primeira apostila: 110 Comecemos então pela orientação dos meios, da quarta etapa. Na apostila básica foram apresentados os seguintes casos: Caso “p”: F U R U’ R’ F’ Caso “i” Caso “o” Para todos eles, aprendemos a utilizar o algoritmo do caso “p” até que a cruz ficasse pronta. Vamos melhorar isso. Quando obtivermos o caso “i”, faremos um algoritmo parecido com o do caso “p”, mas que faz a cruz de uma vez: F R U R’ U’ F’. Quanto ao caso “o”, o algoritmo é o seguinte: M’ U M’ U M’ U M’ U M U M U M U M U, que pode ser escrito como (M’ U)x4 (M U)x4 para simplificar. Vamos agora à permutação dos meios, da última etapa. Vimos na apostila básica que quando tivermos 4 meios errados, devemos fazer o movimento da última etapa duas vezes, mas podemos fazer de uma vez só (se soubermos os algoritmos específicos de cada caso). São duas combinações possíveis: Caso “H” M2’ U M2’ U2 M2’ U M2’ Caso “Z” M2’ U M2’ U M’ U2 M2’ U2 M’ U2 Obs.: Os movimentos duplos (giros de 180°), na verdade tanto faz se realizados no sentido horário ou anti-horário, mas os sentidos costumam ser especificados com o objetivo de mostrar a maneira mais rápida de executar o algoritmo de acordo com as posições que os dedos vão assumindo no cubo. 111 Outra parte da solução que podemos melhorar um pouco é a parte de permutação dos cantos (sexta etapa da apostila básica). Lá vimos que o cubo pode estar com um lado certo ou com nenhum como mostram as figuras: Um lado certo Nenhum lado certo Quando ocorria o segundo caso, deveríamos repetir duas vezes o algoritmo da etapa. Agora vamos aprender como terminar a etapa fazendo apenas uma vez. Se cair o caso em que nenhum lado está certo, com qualquer um dos lados para frente, devemos aplicar o seguinte algoritmo: (F R U’ R’ U’ R U R’ F’)(R U R’ U’ R’ F R F’). Obs.: O algoritmo está separado em duas partes (as entre parênteses) para possamos dividi-lo e poder decorar um pedaço de cada vez, mas veja bem, isso é só para facilitar um pouco. Para o resultado esperado ser atingido, a seqüência completa deve ser executada. Dica: Este algoritmo tem mais de uma utilidade. Com o cubo pronto, experimente fazer antes a segunda parte e depois a primeira, ou até mesmo apenas alguma das duas e reflita sobre os resultados. Agora que já melhoramos a permutação de ambos os tipos de peça, é hora de dar uma boa evoluída na orientação dos cantos. Depois que a cruz de cima já está feita, são 7 combinações diferentes que podem aparecer. Vamos aprender o algoritmo específico de cada caso. O primeiro, que já conhecemos, é o Sune. O segundo é conhecido como anti-Sune, que é simplesmente o Sune feito no lado esquerdo (como se fosse ao espelho). Os outros são novidades mesmo. Vamos aos sete: 112 R U R’ U R U2 R’ L’ U’ L U’ L’ U2 L R U2 R2 U’ R2 U’ R2 U2 R R U R’ U R U’ R’ U R U2 R’ R2 D R’ U2 R D’ R’ U2 R’ R’ F’ L F R F’ L’ F R’ F R B’ R’ F’ R B Bom, ainda não falamos sobre melhoras nem da cruz, nem das duas primeiras camadas. Quanto à cruz, na apostila passada aprendemos a fazer uma cruz em volta do centro oposto e depois voltar para o centro certo. Obviamente fazer a cruz diretamente em sua cor é mais rápido, não é? Comece a treinar isso. Mas lembre-se, não basta fazer a cruz, preocupe-se também com o fato de que todos os meios que a compõem devem corresponder às cores dos centros adjacentes. Certo Errado Falemos agora sobre as duas primeiras camadas. Essa parte pode ser mais complicada para alguns e mais divertida para outros. Por quê? Porque a maneira que vamos aprender é uma maneira mais intuitiva, não sendo como as outras etapas nas quais só se decoram movimentos e pronto. Em vez de fazer antes a primeira camada e depois ir para a segunda, vamos aprender a colocar as duas peças de uma vez no lugar (conhecido como F2L – First 2 Layers), o que ajuda poupar bastante tempo depois que estivermos com prática. Basicamente temos esses 4 casos genéricos com resolução bem simples: U’ F’ U F U R U’ R’ R U R’ F’ U’ F 113 O que temos que fazer é procurar duas peças que formam um par de F2L (por exemplo, a peça azul-vermelho com a peça azul-vermelho-branco) e colocá-las na camada de cima sem que as duas estejam coladas uma na outra e sem que o canto esteja com o branco virado para cima (vide exemplos abaixo). Quando conseguirmos isso, intuitivamente devemos manipular as peças para encontrar algum dos casos básicos acima. Dica: Para manipular as peças que formam o par, gire o lado, gire em cima, mas não se esqueça de devolver o movimento que fez girando o lado, para que a cruz já feita não seja perdida. Exemplos: R’ U2 R R’ U R F' U F U2 R U2 R’ U’ R U2 R’ Essas 5 são algumas situações das diversas possíveis que podemos encontrar. O algoritmo que temos para cada figura não é para resolver o par de F2L, mas para levar a um dos 4 casos genéricos vistos acima. No começo provavelmente vamos usar mais movimentos do que os descritos nos exemplos para encontrar um caso genérico, mas o número de movimentos para isso tende a diminuir aos poucos com a prática. Observe que nos dois últimos exemplos temos o lado branco da peça virado para cima. Esses dois casos são exemplos de como podemos ajeitar o lado branco da peça (deixando-o virado para o lado) já conseguindo ao mesmo tempo obter algum dos 4 casos básicos, com isso já começamos a ver como é possível economizar movimentos se visualizarmos bem como os movimentos influenciam as peças. Dica: Antes de realizar um movimento buscando um caso genérico, verifique se o movimento que vai fazer não vai tirar algum par que já está certo em seu lugar. Caso seja constatado que isso ocorrerá, simplesmente gire as duas camadas de baixo simultaneamente até que o lado que será mexido não contenha mais um par já resolvido. 114 No começo, fazer por F2L vai ser um pouco mais lento do que fazer camada por camada, como ensina a primeira apostila. Não desanime e continue treinando, pois com um pouco de experiência, F2L provavelmente vai ajudar a diminuir, e muito, seus tempos. Quando estiver com o conteúdo dessa apostila todo já na ponta dos dedos, muito facilmente você estará conseguindo resolver o cubo em menos de um minuto. Bons treinos! Qualquer dúvida sobre o conteúdo dessa apostila ou sobre speedcubing em geral, envie por e-mail para [email protected] que ajudarei como puder. Caso ainda não conheça o fórum brasileiro de cubo mágico, acesse: www.cubomagicobrasil.com/forum. Participe do ranking nacional de velocidade e troque idéia com os melhores cubistas do país. Por Carlos Alberto de Alcântara Júnior