Decisão #1 Decisão-chave Utilização de C para desenvolvimento do MCTCore. Drivers RNF: O código deve ser escrito na linguagem C. Descrição O sistema legado a ser usado para comunicação com o sistema SCADA é escrito em C. C é uma linguagem imperativa de ótimo desempenho para aplicações em tempo real. Vantagens Alto desempenho. Desvantagens Dificuldade no tratamento de erros. Observações A linguagem não é tão familiar para os membros do time. Ainda precisa ser estudada com mais detalhes. Stakeholders Desenvolvedores; Testadores; Gerente. Decisão #2 Decisão-chave Utilização de Java para desenvolvimento da lógica de negócio do MCTAlarms e MCT Viewer. Drivers RNF: O MCTAlarms deve ser escrito em Java. RNF: O MCTViewer deve ser escrito em Java. Descrição Java é uma linguagem orientada a objetos de alto nível. Desenvolvimento de sistemas nessa linguagem é muito facilitado pelo alto nível de abstração. Roda sobre uma máquina virtual, logo portabilidade é um ganho. Vantagens Portabilidade devido à máquina virtual. Desvantagens Desempenho comprometido por conta da máquina virtual. Observações Java é utilizada para implementação da lógica de negócio. A interface gráfica propriamente dita será implementada em GXT. Stakeholders Desenvolvedores; Testadores; Gerente. Decisão #3 Decisão-chave Utilização de GXT para desenvolvimento da interface gráfica do MCTViewer. Drivers RNF: A interface gráfica do MCTViewer deve ser escrita em GXT. Descrição RENATO PREENCHER Vantagens Portabilidade – suporte aos browsers usados pelo cliente. Desvantagens RENATO PREENCHER Observações RENATO PREENCHER Stakeholders Desenvolvedores; Testadores; Gerente; Operadores. Decisão-chave Drivers Decisão #4 Utilização de criptografia MD5 para senhas. RF: Acesso ao sistema através de login e senha. Descrição As senhas dos usuários armazenadas no banco de dados devem ser criptografadas usando a técnica MD5 para maior segurança no acesso aos dados. Vantagens Método de criptografia seguro. Desvantagens - Observações - Stakeholders Desenvolvedores; Testadores; Gerente; Operadores. Decisão-chave Utilização de SGBD MySQL. Drivers RNF: O banco de dados onde serão armazenados os dados obtidos do sistema SCADA deve ser gratuito. Descrição O SGBD MySQL é o maior e mais conhecido banco de dados open source do mercado. A comunidade é bastante ativa e seu uso é amplo em grandes projetos. Vantagens • SGBD open source com comunidade ativa; • Fácil configuração e manutenção. Decisão #5 Desvantagens - Observações - Stakeholders Desenvolvedores; Testadores; Gerente; DBA. Decisão-chave Drivers Utilização de servidor Apache Tomcat como servidor web. RNF: A interface do MCTViewer deve ser web. Descrição O Apache Tomcat é um dos servidores web mais utilizados no mundo. Sua confiabilidade é reconhecida mundialmente. Vantagens • Servidor utilizado amplamente em todo o mundo; • Facilidade de configuração e manutenção; •Portabilidade entre diferentes sistemas operacionais. Decisão #6 Desvantagens - Observações - Stakeholders Desenvolvedores; Testadores; Gerente. Decisão #7 Decisão-chave Utilização de persistência em arquivos para tolerância a falhas do banco de dados. Drivers RNF: O MCTCore deve registrar grandezas elétricas mesmo em situações onde o banco de dados encontra-se inoperante. Descrição Persistência em arquivos é a única alternativa caso o banco de dados se encontre inoperante. Vantagens Continuar registrando os valores obtidos do sistema SCADA. Desvantagens • Meio menos seguro de armazenamento; • Necessidade de copiar os dados para o banco de dados quando esse voltar a operação. Observações - Stakeholders Desenvolvedores; Testadores; Gerente; DBA. Decisão-chave Drivers Organizar arquitetura do MCTViewer utilizando o padrão Model View Controller (MVC). RNF: A interface do MCTViewer deve ser web. Descrição A camada de interface com o usuário (IU) deve ser organizada em dois grandes sub-módulos: Views que servem interface gráfica com o usuário e Controlador que tem dois propósitos de mapear comandos dados pelo usuário na entrada em chamadas para a lógica de negócio e despachá-la para a View correta dependendo da resposta obtida da lógica de negócio. As duas camadas “lógica de negócio” e “persistência” compõem o Modelo (M) chamado pelo controlador ao receber eventos de entrada do usuário. Vantagens • Organização da interface gráfica; • Desacoplamento da lógica de negócio; • Flexibilidade. Decisão #8 Desvantagens - Observações - Stakeholders Desenvolvedores; Testadores; Gerente. Decisão #9 Decisão-chave Utilização de protocolo TCP para notificação das anormalidades e normalidades. Drivers RF: Fazer broadcast para todas as máquinas da rede em caso de detecção de anormalidades. RF: Fazer broadcast para todas as máquinas da rede em caso de volta à normalidade da tensão dos barramentos. Descrição O protocolo TCP é um protocolo de transporte de dados que garante confiança e ordem nos dados enviados a um destinatário. Vantagens Garantia da chegada de mensagens de anormalidade. Desvantagens • Mais lento que o protocolo UDP. Observações Como rodará na rede interna da empresa as perdas de tempo de transmissão e propagação serão praticamente desconsideráveis. Stakeholders Desenvolvedores; Testadores; Gerente. Decisão-chave Drivers Decisão #10 Utilização de padrão em camadas para o MCTViewer. Divisão do sistema em módulos. Descrição - Vantagens •Baixo acoplamento entre módulos, já que há isolamento entre as camadas “inferiores” e “superiores”. •Partes do sistema podem ser trocadas sem afetar o restante do sistema. •O isolamento da interface com o usuário numa camada separada permite construir uma interface usando várias tecnologias diferentes. Desvantagens •Eficiência é prejudicada pela troca de mensagens entre as camadas distintas. •Efeito cascata em mudanças realizadas nas camadas. Observações - Stakeholders Desenvolvedores; Testadores; Gerente. Decisão #11 Decisão-chave Utilização de Java Swing para desenvolvimento da interface gráfica do MCTAlarms. Drivers RF:Acessar o MCTViewer quando operador desejar cadastrar justificativas/ações tomadas. RF:Funcionar no System tray do Windows. Descrição A biblioteca Swing é nativa de Java para o desenvolvimento de interfaces gráficas simples e funcionais. Vantagens • Simplicidade de uso; • Funcionalidade. Desvantagens • Interface pobre. Observações Nesse contexto será utilizada apenas para geração de avisos e redirecionamento ao MCTViewer. Stakeholders Desenvolvedores; Testadores; Gerente; Operadores. Decisão-chave Drivers Decisão #12 Utilização do EasyAccept para testes da lógica de negócio. RNF: Testes de aceitação automatizados. Descrição Forma de validação e verificação do sistema. Vantagens • Simplicidade de uso; • Funcionalidade; • Automatização. Desvantagens - Observações - Stakeholders Desenvolvedores; Testadores; Gerente.