'''Documento de Visão do Sistema''' '''1. Objetivo''' O propósito deste documento é coletar, analisar e definir as necessidades de alto-nível e características do sistema, focando nas potencialidades requeridas pelos afetados e usuários-alvo, e como estes requisitos foram abordados no sistema. A visão do sistema documenta o ambiente geral de processos desenvolvidos para o sistema, fornecendo a todos os envolvidos uma descrição compreensível deste e suas macro-funcionalidades. O Documento de Visão do Sistema documenta as necessidades e funcionalidades do sistema. '''2. Descrição do Produto''' O NOVO EXPRESSO será um sistema de comunicação contemplando os principais elementos para comunicação corporativa, baseado nas funcionalidades existentes no atual expresso, porém baseado em nova estrutura tecnológica, novo design gráfico e nova arquitetura baseada na orientação a serviços, voltando-se para suportar ambientes de nuvem. O NOVO EXPRESSO combinará em uma única interface todas as características essenciais para uma colaboração eficaz e no desenvolvimento de processos de negócios. Para as empresas, instituições públicas, associações ou particulares o NOVO EXPRESSO simplificará a comunicação interna e a coordenação e gestão de tarefas, compromissos, contatos e recursos incorporando requisitos fundamentais como facilidade de uso, estabilidade e segurança são indispensáveis. Um processo de desenvolvimento orientado a testes com extensa auditoria de código deve ser utilizado para que qualidade do trabalho transpareça. O NOVO EXPRESSO procura resolver os seguintes problemas em relação a arquitetura e versão atual: - Estrutura tecnológica baseada em API idealizada em 2000, com defasagem tecnológica; - Baseado em outra realidade de internet; - Baseado fortemente no conceito de processamento no Server; - Avanço em funcionalidades que incompatibilizaram upgrade de versão em comunidade internacional; - Forte acoplamento das camadas, causando grande impacto na manutenção; - API não disponibiliza desacoplamento da Aplicação, resultando em esforço para integração; - Módulos desenvolvidos por equipes independentes sem requisitos de unidade de estruturas físicas ou reutilização de classes; - Segurança ficou gravemente prejudicada em função do não acompanhamento da comunidade maior ou de framework que absorvesse na época estas correções; - A comunidade egroupware incorporou o conceito do etemplate para tratamento das interfaces com usuários na tentativa de resolver vulnerabilidades; - Bugs, que ao passar do tempo são reintroduzidos; - Foi reimplementado do Egroupware considerando premissas antigas; - As permissões baseadas nas classes/tabela guardam permissões misturadas de difícil manipulação; - Seu Framework é desconhecido pela maioria dos desenvolvedores PHP, assim como o seu criador Egroupware, em consequencia há necessidade de especialização para domínio da API que suporta a solução. - Codebase interno construído ficou muito difícil para mantê-lo e estendê-lo de um modo econômico. - Os conceitos como "testes de unidade" são possíveis, porque as classes foram atadas a muito uma a outra. - O eTemplate inspeciona qualquer dado recebido do lado de cliente. Ele sabe que dados ele envia ao cliente e ele sabe que dados esperar de volta do cliente. - 90% do tempo gasto para gerar o conteúdo de HTML necessário pelo framework eGroupWare e eTemplate. A lógica de aplicação , toma só 10 % do tempo gasto; - A reimplementação sempre esbarra em premissas antigas, recaindo no mesmo erro; - A mesma classe/tabela guarda os direitos que o usuário pode usar que aplicações, que membro de usuário do qual grupo e que usuários realmente compartilham que dados. - Falta manejo de timezone próprio. O eGroupWare não tem nenhum tratamento sobre timezones. - Toda manutenção é impactante em função da estrutura construída com o passar dos tempos; Para análise e construção deste novo sistema, houve prospecção no sentido de solucionar as questões mencionadas acima. Dentre as várias alternativas de evolução os seguintes fatores básicos foram requeridos: - Baixo custo para desenvolvimento e manutenção. - Segurança considerada como requisito principal. - Funcionalidades continuadas da versão anterior. - Orientação a serviços. - Utilização de Framework sedimentado no mercado. - Separação absoluta das camadas MVC. - Interface padronizada de acesso para os diversos módulos. Após uma etapa de prospecção optou-se pela utilização do codebase do software TINE20(www.tine.org), em função deste cobrir todos os requisitos enumerados e elencados junto a Comunidade Expresso. Portanto este documento prevê a utilização do codebase TINE20, agregando-se as funcionalidades existentes no expresso bem como características adicionais com suporte a ambientes em nuvem. '''3. Envolvimento''' '''3.1. Abrangência''' O expresso hoje tem sua maior representação na comunidade expresso (www.expressolivre.org), sua difusão engloba não somente o Serpro e seus clientes, mas uma gama enorme de empresas e entidades públicas espalhadas em todo o território nacional com a diferença que para seus clientes o Serpro provê a manutenção do produto contratualmente enquanto que para os demais a comunidade disponibiliza o software sob licença livre. O projeto visa substituir a solução atual mantendo as funcionalidades existentes. '''3.2. Papel das Partes Interessadas''' '''3.2.1. Cliente''' ||'''Descrição'''||Parte interessada que demandará as necessidados do projeto.|| ||'''Papel no desenvolvimento'''||Definir o serviço que essa solução busca satisfazer.[[BR]]Fornecer informações quanto ao uso e suas necessidades com relação ao sistema.|| ||'''Insumos ao projeto de software'''||Requisitos do sistema para atender a necessidade dos clientes internos e da comunidade.[[BR]]Requisitos não-funcionais, como performance, usabilidade da interface gráfica, etc.|| ||'''Representante'''|||| '''3.2.2. Gestor''' ||'''Descrição'''||Parte interessada responsável pelo sistema no SERPRO|| ||'''Papel no desenvolvimento'''||Definir as necessidades a serem atendidas pelo sistema.[[BR]]Definir o escopo das entregas.[[BR]]Estabelecer as funcionalidades requeridas e restrições operacionais.[[BR]]Identificar juntamente com o analista os requisitos do sistema, funcionais e não-funcionais.[[BR]]Homologação das implementações[[BR]] ||'''Insumos ao projeto de software'''||Necessidades dos usuários (incluindo os externos).[[BR]]Solicitação de Alteração de Requisitos.[[BR]]Requisitos Funcionais.[[BR]]Restrições de negócio. ||'''Representante'''|||| '''3.2.3. Gestor de Desenvolvimento''' ||'''Descrição'''||Papel responsável pela liderança e supervisão do projeto no nível alto da organização|| ||'''Papel no desenvolvimento'''||Prover recursos para viabilizar e garantir a melhoria contínua do projeto. [[BR]]Gerenciamento técnico / administrativo e acompanhamento do projeto como um todo.|| ||'''Insumos ao projeto de software'''||Recursos humanos e tecnológicos.|| ||'''Representante'''|||| '''3.2.4. Gestor Sênior''' ||'''Descrição'''||Papel responsável pela liderança e supervisão do projeto no nível alto da organização|| ||'''Papel no desenvolvimento'''||Contratar do serviço que essa solução busca satisfazer.[[BR]]Determinar direcionarmento estratégico do projeto.|| ||'''Insumos ao projeto de software'''||Diretrizes organizacionais e estratégicas.|| ||'''Representante'''|||| '''3.2.5. Líder de Projeto''' ||'''Descrição'''||Papel responsável direção, controle e administração do projeto|| ||'''Papel no desenvolvimento'''||Gerenciar as etapas de desenvolvimento, e interagir com a equipe para a perfeita acomodação dos requisitos do usuário.[[BR]] Representar o projeto perante o cliente. Negociar compromissos e manter informados os demais envolvidos no projeto. [[BR]]Formalizar os termos, responsabilidades, acordos de nível de serviço (ANS), e garantias de uso junto a clientes e grupos envolvidos.[[BR]] Coletar as lições aprendidas, e utilizá-las para a melhoria contínua do processo de desenvolvimento.|| ||'''Insumos ao projeto de software'''||Alocação de recursos.[[BR]]Quadro de Tarefas.[[BR]]Gráfico Burndown.[[BR]]Plano do Projeto.[[BR]]Acordos de nível de serviço.[[BR]]Termos, responsabilidades e garantias de projeto.[[BR]]Atas de Reunião.|| ||'''Representante'''|| || '''3.2.6. Analista de Requisitos''' ||'''Descrição'''||Levantamento dos requisitos do sistema.|| ||'''Papel no desenvolvimento'''||Identificar e descrever as necessidades do usuário, especificando as funcionalidades do software que irão atendê-las.[[BR]] Levantar os requisitos funcionais e não-funcionais do sistema.[[BR]] Definir quem e o que irá interagir com o sistema.[[BR]] Gerenciar o escopo e a mudança dos requisitos.|| ||'''Insumos ao projeto de software'''||Documento de Visão do Sistema[[BR]]Documento de Visão do Projeto[[BR]]Modelo de Requisitos[[BR]]Glossário|| ||'''Representante'''|| || '''3.2.7. Desenvolvedores''' ||'''Descrição'''||Desenvolvimento da aplicação|| ||'''Papel no desenvolvimento'''||Codificação dos programas.[[BR]]Auxílio do levantamento de requisitos e definição de arquitetura[[BR]] e conceitos a serem implementados na solução.|| ||'''Insumos ao projeto de software'''||Programas desenvolvidos nas tecnologias definidas.|| ||'''Representante'''|| || '''3.2.8. Programadores''' ||'''Descrição'''||Implementação da aplicação|| ||'''Papel no desenvolvimento'''||Codificação dos programas.|| ||'''Insumos ao projeto de software'''||Programas codificados nas tecnologias definidas.|| ||'''Representante'''|| || '''3.2.9. Área de Infra-estrutura''' ||'''Descrição'''||Fornecer a infra-estrutura necessária para o desenvolvimento|| ||'''Papel no desenvolvimento'''||Fornecer a infra-estrutura de hardware e software conforme a necessidade do projeto. || ||'''Insumos ao projeto de software'''||Ambientes de hardware e software para desenvolvimento, testes e homologação.[[BR]]Gestão e consultoria com relação ao processo de GRS (gestão de riscos)|| ||'''Representante'''|||| '''3.3. Papel dos Atores''' '''3.3.1. Usuário''' ||'''Descrição'''||Usuário normal do sistema sem privilégios de administração. ||'''Papel no desenvolvimento'''||Registrar informações no sistema.|| ||'''Insumos ao projeto de software'''||Insere dados e troca informações com outros usuários do sistema.|| ||'''Representante'''||N/A|| '''3.3.2. Administrador de Usuários''' ||'''Descrição'''||Usuário com privilégio de administração de perfis de usuário.|| ||'''Papel no desenvolvimento'''||Administrar contas de usuários do sistema.|| ||'''Insumos ao projeto de software'''||Cadastra e edita usuários.|| ||'''Representante'''|| N/A|| '''3.3.3. Administrador do Sistema''' ||'''Descrição'''||Usuário com privilégio de administração dos módulos que compõem o sistema.|| ||'''Papel no desenvolvimento'''||Realizar configurações avançadas dos módulos do sistema.|| ||'''Insumos ao projeto de software'''||Habilita, desabilita e configura os módulos do sistema;|| ||'''Representante'''|| N/A|| '''4. Necessidades e Funcionalidades''' '''Criticidade''' '''Crítico''' - O requisito é essencial. O fracasso em sua implementação significará o não atendimento das necessidades do cliente.[[BR]] '''Importante''' – O requisito é importante para o sistema. Sua não implementação afeta a satisfação do usuário e/ou o valor agregado do produto, mas não impede o funcionamento do sistema dentro dos padrões mínimos.[[BR]] '''Útil''' - O requisito é útil, porém não essencial à satisfação do cliente.[[BR]] ||'''1.'''||'''Autenticação'''[[BR]] Permite a autenticação no sistema utilizando usuário e senha ou certificado digital, identificando o perfil e domínio pertencentes ao usuário.[[BR]]O sistema deve gerenciar o controle de acesso, habilitando ao usuário autenticado as funcionalidades pertinentes ao seu perfil.[[BR]]Conter mecanismos de segurança para evitar acesso indevido.|| ||'''Benefício'''||Crítico|| ||'''Id Func.'''||'''Descrição das Funcionalidades/atores envolvidos'''|| ||'''F1.1'''||Autenticar utilizando usuário e senha.[BR]]'''Atores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| ||'''F1.2'''||Disponibilizar ao usuário área de Ajuda com informações básicas de funcionamento do sistema e contatos da áreas de suporte.[[BR]]'''Atgores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| ||'''F1.3'''||Disponibilizar seleção de idioma do sistema.[[BR]]'''Atores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| ||'''F1.4'''||Permitir acesso às aplicações Expresso Acessível e Expresso Mobile.[[BR]]'''Atores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| ||'''F1.5'''||Autenticar através de certificados digitais, de acordo com as regras da ICP/BRASIL.[[BR]]'''Atores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| [[BR]] ||'''2.'''||''' Preferências de Configuração do Usuário'''[[BR]]O sistema permitirá que o usuário configure suas aplicações e armazenará as informações junto ao perfil do usuário.|| ||'''Benefício'''||Crítico|| ||'''Id Func.'''||'''Descrição das Funcionalidades/atores envolvidos'''|| ||'''F2.1'''||Exibir menu de acesso às preferências do usuário.[[BR]]'''Atores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| ||'''F2.2'''||O sistema exibirá acesso à documentação de ajuda do usuário.[[BR]]'''Atores: Usuário, Administrador de Usuários e Administrador do Sistema'''|| ||'''F2.3'''||Os administradores poderão configurar uma aplicação padrão para todos os usuários do sistema.[[BR]]O usuário poderá personalizar o seu perfil alterando a aplicação padrão.[[BR]]'''Atores: Administrador de Usuários e Administrador do Sistema'''|| [[BR]] ||'''3.'''||'''Módulo de Administração de usuários '''[[BR]]O sistema permitirá a administração de usuários.|| ||'''Benefício'''||Crítico|| ||'''Id Func.'''||'''Descrição das Funcionalidades/atores envolvidos'''|| ||'''F3.1'''||Incluir/Excluir/Editar Usuários Ldap, BD, Imap.[[BR]]'''Atores: Administrador de Usuários e Administrador do Sistema'''|| ||'''F3.2'''||Permitir mover caixas entre backends Imap diferentes.[[BR]]'''Atores: Administrador de Usuários e Administrador do Sistema'''|| ||'''F3.3'''||Permitir criação de gerentes com diferentes níveis de permissões sobre determinados usuários.[[BR]]'''Atores: Administrador de Usuários e Administrador do Sistema'''|| ||'''F3.4'''||Permitir que gerentes possam Incluir/Excluir/Editar cotas de grupos ou conjuntos de usuários [[BR]]'''Atores: Administrador de Usuários e Administrador do Sistema'''|| [[BR]] ||'''4.'''||'''Módulo de Administração do sistema '''[[BR]]O sistema permitirá a administração da ferramenta || ||'''Benefício'''||Crítico|| ||'''Id Func.'''||'''Descrição das Funcionalidades/atores envolvidos'''|| ||'''F3.1'''||[[BR]]'''Atores: Administrador do Sistema'''||