[Arquitectura da aplicação] Resumo do documento: Este documento tem como objectivo especificar a arquitectura do Sistema de Informações da ANET. Nele estão presente informações estruturais da aplicação, necessárias ao correcto entendimento da arquitectura organizacional do mesmo. Palavras-Chave: Arquitectura, interface da aplicação Histórico de versões: Versão V1.0 Data Realizado por Jennifer Santos Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] Índice 1 Introdução ............................................................................................................................................. 3 2 Arquitectura .......................................................................................................................................... 4 2.1 Arquitectura geral do sistema ....................................................................................................... 4 2.1.1 3 Diagrama da Arquitectura de Sistema................................................................................... 4 2.2 Camada de apresentação ou interface ........................................................................................... 5 2.3 Camada de negócio ....................................................................................................................... 5 2.4 Camada de dados .......................................................................................................................... 5 Estrutura ................................................................................................................................................ 6 3.1 Visão Geral ................................................................................................................................... 6 3.1 Aplicação ANET ........................................................................................................................... 7 3.2 Módulos da Aplicação ANET ....................................................................................................... 7 3.3 Estrutura do código desenvolvida para Aplicação: ....................................................................... 8 3.3.1 Composição de cada módulo .............................................................................................. 11 Página 2/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 1 Introdução Este documento tem como objectivo especificar a arquitectura do Sistema de Informação da ANET. Para a arquitectura foram considerados factores como a finalidade do sistema, ambiente de execução, tipo de utilizadores, tipo de dados e requisitos funcionais e não funcionais. Atendendo aos factores analisados, a arquitectura a ser adoptada atender às características descritas nas próximas secções. Objectivo: O desenvolvimento do projecto tem como objectivo, a performance, escalabilidade, portatibilidade e segurança do sistema. Restrições: Para o seu desenvolvimento a que levar em consideração as ferramentas a utilizar, como o utilizador poderá conectar-se ao sistema e o tipo de linguagem a utilizar para o seu desenvolvimento. 1. Ferramentas utilizadas: • • • • Geany – ferramenta de edição de texto. PHPMyAdmin – ferramenta de administração de Base de Dados. FileZilla(Client) – ferramenta FTP para transferência de dados. Apache – servidor http open source. 2. Formas de conectividade entre hardware: A conectividade entre o cliente e o servidor deverá ser efectuada por meio de Internet. 3. Linguagem de programação lado do cliente: A linguagem de desenvolvimento utilizada para o sistema de cliente será HTML, JavaScript/Jquery, CSS. 4. Linguagem programação lado do servidor: PHP do lado do servidor e SQL. Página 3/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 2 Arquitectura 2.1 Arquitectura geral do sistema O sistema será composto por três camadas: • • • Camada de apresentação ou interface. Camada de negócio Camada de dados 2.1.1 Diagrama da Arquitectura de Sistema Figura 1 – Diagrama da arquitectura global do sistema. Página 4/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 2.2 Camada de apresentação ou interface Esta camada é a responsável pela apresentação do Sistema de Informação da ANET. Este S.I corre num browser, sendo responsável por apresentar os dados e imagens ao utilizador final. 2.3 Camada de negócio Esta corresponde à camada de aplicação onde são implementadas as regras de negócio através de módulos de acesso às bases de dados escritos em PHP. Os dados provenientes da camada de dados são manipulados de acordo com as necessidades e lógica de negócio da empresa entregando-os à camada de apresentação. 2.4 Camada de dados Nesta camada encontram-se todas as estruturas de armazenamento de dados onde é guardada toda a informação que a aplicação apresenta. É a camada responsável pela manutenção, integridade dos dados e informações da aplicação. Página 5/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 3 Estrutura Nessa sessão será definida a decomposição em camadas da aplicação lógica da aplicação e serão explorados todos os módulos do mesmo. Também será explicada a estrutura de codificação da aplicação. 3.1 Visão Geral Níveis da aplicação do Sistema da Informação da ANET: Nível Descrição Exemplo A aplicação é composta por vários grupos de módulos S.I -ANET Um grupo de módulo separa uma aplicação em interface com requisitos lógicos Interface com o utilizador Módulos Um módulo é um conjunto de submenus do mesmo dominio mas com conteúdos e estrutura diferentes Membro Sub-Menu Sub-menu é um grupo de operações pertencentes a um domínio comum Planear Formações Operações Operações é uma acção que o sistema executa, uma acção está associada a uma edição, remoção, visualização Adicionar Formações Aplicação Grupo de Módulos Figura 2 – Visão geral dos níveis de decomposição do sistema de informação da ANET. Página 6/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 3.1 Aplicação ANET A aplicação ANET será composta por dois grupos: Aplicação ANET que será a composição dos vários módulos e a parte da conexão com o Servidor Apache ANET Aplicação ANET Servidor Apache Figura 3 – Decomposição do sistema ANET em módulos. 3.2 Módulos da Aplicação ANET A aplicação ANET encontra-se devida em 7 módulos, sendo elas representadas na figura a seguir: Aplicação ANET Declarações Documentos Insc./Estágio Membros Secretária Perfil Configurações::Sistema Página 7/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] Figura 4 - Decomposição da aplicação ANET em módulos. Nota: Estes são os módulos que forma desenvolvidas pela estagiária para nova plataforma, sendo que a aplicação irá conter outros módulos que serão posteriormente desenvolvidos. Módulo secretaria e declarações só encontram desenvolvidos os layouts. Módulo Perfil e Configurações::Sistema foram desenvolvidas pela orientadora. 3.3 Estrutura do código desenvolvida para Aplicação: A aplicação encontra-se sub-dividada em pastas, dispostas segundo uma ordem lógica do ponto de vista estrutural, que agrupam um conjunto de ficheiros (.php, .css ou .js) de acordo com a sua finalidade. A figura seguinte retrata a estrutura da aplicação: SI_ANET Internal Módulos Themes config.php index.php login.php Estrutura: • internal, responsável pela manipulação de dados da aplicação, quer sejam dados introduzidos pelo utilizador (input) ou dados que se prevê que a mesma apresente (output). Nesta pasta, encontram-se as seguintes pastas: html2fpdf – Pasta que conterá os ficheiros geradores de PDFs; includes – Pasta que inclui todos os ficheiros de responsáveis pela execução de comandos SQL. Página 8/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] • modules, esta pasta possui uma sub-pasta components (armazena os icons referentes aos módulos), e um conjunto de sub-pastas para cada um dos módulos que compõem a interface gráfica para o utilizador. Por cada novo módulo que venha a compor a aplicação, este ficará alojado nesta pasta, garantindo-se não só uma organização no código para uma fácil leitura, como a característica modelar que se pretende com a aplicação. Cada uma das sub-pastas contém: Um ficheiro main.php, considerado o motor do módulo, uma vez que efectua a ponte entre a interface deste com a manipulação dos dados, na Base de Dados, adjacentes às funcionalidades pretendidas. Uma pasta html, com os ficheiros responsáveis pelo desenho das funcionalidades pretendidas: apresentação de layouts quer para a inserção de dados quer para visualização dos dados manipulados, respeitantes ao módulo. • themes, esta pasta concentra todos os ficheiros que compõem a interface base da aplicação. O conteúdo de cada módulo é carregado, quando solicitado, mediante o conteúdo desta Pasta. Está organizada da seguinte forma: Sub-Pastas: default, contém sub-pastas com as componentes essenciais ao carregamento do módulos e os ficheiros base para o layout da aplicação. Sub-Pastas: imagens, pasta com as imagens da interface base com o utilizador (a home do utilizador); scripts, pasta com ficheiros externos de Javascript (extras.js, com funções comuns de validação, verificação e outros plugins em javascript) e Jquery (jquery-1.4.4.min.js, ficheiro base para que os plugins desenvolvidos em jquery possam correr na aplicação). style, pasta que agrupa as folhas de estilos (CSS) usadas pela a aplicação: base.css, estilos da interface base; <color>.css, ficheiro com os estilos específicos do tema que o utilizador escolheu para background da sua conta. Ficheiros: main.php, motor da aplicação no que diz respeito à envolvente gráfica. Este ficheiro faz a chamada aos ficheiros JS e CSS necessários ao seu funcionamento, bem como a inclusão da informação do módulo carregado via opção de menu; Settings.php, ficheiro de auxílio ao main.php com as configurações para data/hora e titulos dos módulos a mostrar na aplicação. Página 9/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] mod_login, pasta componentes da área de Login da aplicação. À semelhança da pasta themes, possui uma estrutura própria com sub-pastas para os ficheiros JS e CSS respectivos e outra sub-pastas que guarda as imagens de fundo que esta área contém. Contém também o ficheiro login.php que constrói a interface da área referida. • config.php, ficheiro que contém as constantes necessárias à ligação com a Base de Dados. A escolha do uso de constantes acontece na tentativa aplicar maior flexibilidade ponto de vista dos dados de acesso à Base de Dados (nome, username, password) que estarão afectos à aplicação e devido à existência de vários ficheiros que requerem que a ligação seja estabelecida directamente nos mesmos (popups: thickbox), se ocorrer mudança naquelas variáveis, bastará alterar neste ficheiro, que toda a aplicação ficará a conhecer os novos parâmetros. • index.php, ficheiro principal da aplicação. A aplicação nasce apartir deste ficheiro. Quando a plataforma detecta o URL, verifica se existe uma sessão aberta, caso exista procede à análise de permissões associadas ao utilizador logado (restringindo as opções de menu visiveis para as correspondentes ao seu nível de permissão) e procede ao carregamento da estrutra incorporando-a no ficheiro main.php [pasta themes/default]; caso a sessão não se encontre aberta, carrega a àrea de login, chamando o ficheiro login.php [pasta themes/mod_login]. • login.php, ficheiro que vai receber os dados inseridos na área de login, para aceder à aplicação caso os dados estejam correctos e o utilizador possua um estado activo. Se o login tiver sido realizado com sucesso, o ficheiro inicializa um array de variáveis de sessão com dados referentes ao utilizador logado e à correspondente sessão. Com esta abordagem, consegue-se obter uma estruturação organizada, eficaz e inteligível. Para além de ter um consumo menor no que diz respeito a performance, uma vez que ao termos os scripts externos e não “inline”, no carregamento das páginas não será necessário estar sempre a carregar os ficheiros JS, CSS se esses forem mantidos em cache. Nota: Importa referir que a estrutura base da aplicação sob a qual a estagiária desenvolveu o seu trabalho, já havia sido implementada pela empresa, a estagiária apenas teve que desenvolver os módulos acordados para melhorar a aplicação da ANET. Página 10/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 3.3.1 Composição de cada módulo 3.3.1.1 Módulo membro Módulo responsável pela gestão dos membros, em que para esse módulo temos os seguintes ficheiros que o compõem: • main.php – ficheiro principal do módulo. A pasta html, que contêm os seguintes ficheiros responsáveis para html do respectivo módulo: Para criação dos “sub-menu” listagem membros, foi necessário criar dois ficheiro html: • membro_cfoto.php, responsável pela listagem dos membros com fotos. Apresenta uma tabela com a lista dos membros com foto e um formulário de pesquisa. • membro_sfoto.php, responsáveis para a listagem dos membros sem fotos. Apresenta uma com a lista dos membros sem foto e um formulário de pesquisa. Os ficheiros responsáveis pela criação do “sub-menu” Pesquisa, foi necessário desenvolver os seguintes ficheiros: • lista_pesqDirecta.php, ficheiros que contem o formulário da pesquisa directa. • lista_pesqComposta.php, responsável pela criação do formulário da pesquisa composta. • pagina.php, esse ficheiro será usada pela pesquisa composta, pesquisa directa e pelo subemenugestão de formação. Pois esse ficheiro tem um conjunto de funções que são responsáveis, pela criação das tabelas resultantes das pesquisas directa, composta e lista de formações/cursos, com também pelas tabelas resultantes de edição de dados. Ficheiros responsáveis pela criação do “sub-menu” Gestão de Formações: • lista_membros.php, responsável por apresentar a tabela resultante com a lista dos cursos/formações existentes, também para apresentar o formulário de inscrições para membros internos a associação. Página 11/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] Ficheiros responsáveis pela criação do “sub-menu” Lista membros CDN: • lista_memb_cdn.php, responsável por apresentar a tabela com a lista dos membros agrupados pela situação actual com o respectivos numero de inscritos, e a possilibilidade de abrir Ficheiros responsáveis pela criação do “sub-menu” Competências: • pesq_comp.php, responsável por apresentar o formulário de pesquisa. Ficheiros responsáveis pela criação do “sub-menu” Planear Formações: • • planer_formacao.php, responsável por apresentar o tabela com a lista de formações a serem abertos. procuraPal.php Outros ficheiros de utilização comum nos sub-menus do módulo membro: • paginacao.php, esse ficheiro é responsável pela paginação, sempre que tiver um numero elevado de pesquisa é usada a paginação de 20 a 20. E será usada no sub-menu: Listagem de membros, Pesquisa, Gestão e Formação. • validacampo.php, responsável, por validar o campo numero membro existe ou não na pesquisa composta, na pesquisa de competência, e no modulo documentos para os numero. Esse ficheiro também será usado no modulo Insc./Estágio O ficheiro responsável para as funções SQL, que encontra na pasta internal: • module_memb.php Para cada sub-menu do módulo membro foi desenvolvido um conjunto de funções e para cada um será abaixo apresentado as funções desenvolvidas: • Sub-menu Listagem membros, foram criadas as seguintes funções: lista_sfoto(), responsável por devolver a lista dos membros sem foto e limitar a pesquisa de 20 a 20. Página 12/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] lista_TotalSfoto(), responsável por devolver o numero total da pesquisa de membros, que será utilizada na função lista_sfoto, de forma a esses ir agrupando em conjunto de 20. • Sub-menu Pesquisa, foram necessários criar as seguintes funções: pesquisa_total(), responsável por devolver a lista total da pesquisa resultante da pesquisa composta, que posteriormente será utilizada na pesquisa. pesquisa(), responsável por devolver a listagem resultante da pesquisa composta efectuda, em agrupamentos de 20 por paginas. edit_membros , responsável por edição dos dados de um respectivo membro essas função será usada na pesquisa composta e na pesquisa directa. getdados_memb , devolve os dados nos membro de pesquisa, essa função será usada pela pesquisa directa e composta. lista_Totalpesq_dir responsável por devolver a lista total da pesquisa resultante da pesquisa composta, que posteriormente será utilizada na pesquisa. lista_pesq_dir responsável por devolver a listagem resultante da pesquisa composta efectuda, em agrupamentos de 20 por paginas. • Sub-menu Gestão de formação, foram necessário criar as seguintes funções: lista_TotalCcursos, devolve a lista total de curso/formações da associação. lista_curso, devolve a lista de cursos/formações em agrupamentos de 20. getLista_inscrito, devolve a lista de inscritos num formação/curso. incricoes_internos_formacao, responsável por inserir os membros internos da formação. getNumetotal_listaInsc, responsável por devolver o número total dos inscritos numa dada formanção. edit_insc_formacao, responsável pela edição dos membros inscritos numa formação. elim_insc_formacao, formação/curso. responsável por eliminar um membro inscrito numa Página 13/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] • Sub-menu Competências, foram necessário criar as seguintes funções: • get_competencia, devolve a lista de competência existentes. add_competencias, responsável por adicionar uma competência a um do membro. getdados_pessoais, responsável por devolver os dados do membro de pesquisa. pesquisa_competencias, devolve as competências associadas a um dado membro. Sub-menu Planear Formações, foram necessário criar as seguintes funções: lista_insc_PlanForm, devolve a lista de inscritos nos cursos/formações a serem lançados. lista_Total_insc_curso, devolve a lista total dos inscritos num curso/formação. lista_insc_por_curso, devolve a lista de inscritos nos cursos. • Funções usadas nos ficheiros auxiliares dos sub-menu do módulo membro: get_MembroID, devolve o id do membro caso existe na lista de membros associados. Os ficheiros responsáveis para gerar os ficheiros Excel e PDF: • export_excel_membrolist.php, responsável por gerar o Excel com a lista dos inscritos numa dada formação/curso. • pdf_memblist.php, responsável por gerar o PDF com a lista dos inscritos numa dada formação/curso. 3.3.1.2 Módulo Insc.Estágio Módulo responsável pela gestão dos membros, em que para esse módulo temos os seguintes ficheiros que o compõem: • main.php – ficheiro principal do módulo. A pasta html, que contem os seguintes ficheiros responsáveis para html do respectivo módulo: Página 14/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] Para criação dos “sub-menu” Gestão de Inscrição, foi necessário criar os seguintes ficheiro html: • listagem_pendente.php, responsável por apresentar a tabela do menu e a tabela com a lista das listas de membros pendentes na associação. Para criação dos “sub-menu” Parecer, foi necessário criar os seguintes ficheiro html: • listagem_estagios_mod.php, responsável por apresentar o “accordion” com as opções Parecer C.E e C.D da S.R.C. No parecer C.E apresenta uma serie de tabelas resultantes entre os quais tem-se a lista dos membros com estágio por aprovar (curricular ou formais). • listagem_estg_aprov.php, responsável por apresentar a lista de tabelas com os membros com estágios aprovados pela C.E (curriculares e formais). Para criação dos “sub-menu” Comunicação ao membro, foi necessário criar os seguintes ficheiro html: • comunicacao_membro.php, responsável por apresentar tabelas com a lista de comunicações ao membro (para modalidade formais e curriculares), e uma tabela resultante com a lista de prorrogações aceites. Para criação dos “sub-menu” Audição, foi necessário criar os seguintes ficheiro html: • • marc_audicoes.php, responsável por apresentar o “tabs” com as seguintes opções de Marcação de audição (tabela resultante a lista de membros com mensagem internas recebiras), e resultado de audição. result_marc.php, responsável por apresentar uma tabelas com a lista de membros com audições por concluir e outra tabela com a lista de membros com audições concluídas Para criação dos “sub-menu” Curso de ética, foi necessário criar os seguintes ficheiro html: • cur_etica_1.php • bolsa_patrono.php Página 15/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] • • • • • env_proc_CDN.php estg_atrasados.php ética.php gestao_estag.php ped_patrono.php O ficheiro responsável para as funções SQL, que encontra na pasta infernal: • • module_insc_estg.php Sub-menu Gestão de Inscrição, foram necessário criar as seguintes funções: getLista_memb_pendente, devolve a lista de membros pendentes. elim_insc, responsável por eliminar o membro que foi seleccionado. edit_data_pendentes, responsável por editar os dados do membro. getDados_memb_pend, devolve os dados relacionado com o membro. Também usada no sub-menu Parecer. getDados_Prof, devolve os dados profissionais associados a um membro. getDocs, devolve a lista de documentos associados a um membro. getObs, devolve a lisa de observações associados a um membro. Também usada no Parecer C.E. • Sub-menu Parcer, foram necessário criar as seguintes funções: Parecer C.D: get_prorrog, devolve as prorrogações pendentes de um dado membro. Também usada no sub-menu comunicação ao membro. getEst_curricular_aprov, devolve a lista de estágios aprovados com a modalidade curricular. Página 16/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] getEstagio_formal_prov, devolve a lista de estágios aprovados com a modalidade formal. abrir: nos dois pareceres getdados_patrono, devolve a dados do patrono e entidade para um dado membro. getDocumentos_memb Parecer C.E: get_modal_estagio, devolve a lista de estágio por aprovar pelo parecer C.E, com modalidade curricular por aprovar parcer C.E. get_modal_estag_formal, devolve a lista de estagio por aprovar pelo parecer C.E, com modalidade formal por aprovar parcer C.E up_date, responsável pelo update do campo de observação para um dado membro. • Sub-menu Comunicação ao membro, foram necessários criar as seguintes funções: getcom_curri, devolve a lista de comunicações a um dado membro com a modalidade curricular. getcom_formal, devolve a lista de comunicações a um dado membro com a modalidade formal. • Sub-menu Audição, foram necessários criar as seguintes funções: aud_por_conc aud_concluidas edit_data getdados_estagio getDocumentos_memb Os ficheiros responsáveis para a geração do PDF e Excel: (….) Página 17/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 3.3.1.3 Módulo Documentos Módulo responsável pela gestão dos membros, em que para esse módulo temos os seguintes ficheiros que o compõem: • main.php – ficheiro principal do módulo. Tem uma pasta html, que contem os seguintes ficheiros responsáveis para html do respectivo módulo: • • • listagem_docs.php pagina_lista_doc.php pesquisa_doc.php O ficheiro responsável para as funções SQL, que encontra na pasta infernal: • module_gest_docs.php O ficheiro pdf: • dados_conv_pdf.php, ficheiro responsável para converter os ficheiros imagem “JPEG” para pdf 3.3.1.4 Módulo secretaria Este módulo foi desenvolvido alguns ficheiros Html para o layout, entre os quais tem-se: • • • • • • comunicacoes.php edic_estagio.php gestao_empresa.php gestao_etiq.php prorrogacoes.php recibos.php Foi desenvolvido uma função SQL responsável por apresentar a lista de prorrogações aceites/pendentes e negadas, do sub-menu Gestão de Prorrogações, Nota: Esse módulo não foi desenvolvido, pelo facto de dar prioridade aos testes dos outros módulos de modo a ter uma aplicação mais segura e com boa performance. Página 18/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] 3.3.1.5 Módulo declarações Este módulo foi desenvolvido alguns ficheiros html para o layout de alguns sub-menus, entre os quais se destacam: • • carreg_conta.php pesquisa_decl.php Nota: Esse módulo não foi desenvolvido, pelo facto de dar prioridade aos testes dos outros módulos de modo a ter uma aplicação mais segura e com boa performance. 3.3.1.6 Módulo perfil • • lista_user.php perfil.php, responsável por apresentar a lista de cores, em que o utilizador pode personalizar a sua aplicação escolhendo a cores de fundo que pretender. O ficheiro responsável para as funções SQL, que encontra na pasta infernal: • panel_user_manager.php, ficheiro com as funções SQL, abaixo será indicadas as funções desenvolvidas para os respectivos sub-menus do módulo. • Sub-menu "Minha conta" getUserNameByID, responsável para verificar o changeUserOwndetails altUserPin, responsável por alterar o pin do utilizador • Sub-Menu "Perfil" insertUserBgcolor Nota: Esse módulo foi desenvolvido pela Orientadora 3.3.1.7 Módulo Configurações::Sistema Html para esse módulo: Página 19/20 Departamento de Engenharia Informática Estágio MagicBrain [Arquitectura da aplicação] • Sub-menu níveis de acesso: lista_acessos.php thickbox.php thickbox_result.php • Sub-menu Organigrama lista_grupos.php perm_group.php thickbox.php thickbox_results.php • sub-menu utilizadores: lista.php lista_users.php thickbox.php thickbox_results.php Nota: Este módulo foi desenvolvido pela Orientadora. Página 20/20