Giter Club home page Giter Club logo

apf-bsi's Introduction

ANALISADOR DE PONTOS DE FUNÇÃO

GitHub language count Codacy grade Repository size GitHub last commit Repository issues GitHub

Sistema para a contagem e análise dos pontos de função para estimar o tamanho funcional de um software.



Sobre o Projeto   |    Documentação   |    Pré-requisitos   |    Desenvolvimento   |    Build e Execução   |    Testes   |    Licença   |    Referências


Sobre o Projeto

Sistema para facilitar a contagem na análise por pontos de função (APF) desenvolvido para ser utilizado nas disciplinas de Engenharia de Software do curso de Bacharelado em Sistemas de Informação do CERES/UFRN.

Documentação

Pré-requisitos

Para executar o projeto, será necessário instalar os seguintes programas:

  • JDK 8: Necessário para executar o projeto Java.
  • Maven: Necessário para realizar o build do projeto Java.
  • Eclipse ou Vscode + extensões Java: Para o desenvolvimento do Projeto.
  • MariaDB ou MySql: para persistência no Banco de Dados
  • Criação do Banco de Dados dev e test(apf_db e apf_db_test) e Usuário(apf_user) com sua devidas permissões. Código abaixo:
  1. Criação das bases de dados e usuário
CREATE ROLE apf_user WITH
	LOGIN
	NOSUPERUSER
	NOCREATEDB
	NOCREATEROLE
	NOINHERIT
	NOREPLICATION
	CONNECTION LIMIT -1
	PASSWORD 'xxxxxx';
COMMENT ON ROLE apf_user IS 'Usuário do Sistema APF de Contagem de Pontos de Função.';
CREATE DATABASE apf_db
    WITH 
    OWNER = apf_user
    ENCODING = 'UTF8'
    LC_COLLATE = 'pt_BR.utf8'
    LC_CTYPE = 'pt_BR.utf8'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1
    IS_TEMPLATE = False;

Por algum motivo, o JPA não está criando o banco de dados automaticamente. Desta forma, gerei o esquema relacional em create.sql e executei manualmente via PgAdmin. Desta forma, foi necessário executar comandos de permissões para o usuário apf_user do banco de dados apf_db.

GRANT ALL PRIVILEGES ON DATABASE apf_db TO apf_user;
GRANT ALL PRIVILEGES ON SCHEMA public TO apf_user;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to apf_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to apf_user;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to apf_user;

Como os testes não estavam executando com a criação do esquema, essa parte foi removida. Ajustamos o nome da tabela user para users, pois o nome user é uma palavra reservada do Postgres.

CREATE SCHEMA IF NOT EXISTS apf
    AUTHORIZATION apf_user;
  1. Povoamento do Banco de Dados
    INSERT INTO role VALUES (1,'ADMIN');
    INSERT INTO role VALUES (2,'USER');

    INSERT INTO attribution VALUES (1,'PROJECT MANAGER');
    INSERT INTO attribution VALUES (2,'PROJECT MEMBER');

Padrões de Codificação do Editor

  • Insert spaces for tabs
  • Tab policy para Spaces only
  • Indentation size: 4
  • Tab size: 4

Desenvolvimento

Para iniciar o desenvolvimento, é necessário clonar o projeto do GitHub num diretório de sua preferência:

cd "diretório de sua preferência"
git clone https://github.com/labens-ufrn/apf-bsi.git

Build e Execução

Esse projeto faz uso do framework spring-boot que encapsula todas as dependências no arquivo jar. Para o build do projeto, execute os comandos abaixo:

mvn clean
mvn install
 para o diretório /target
java -jar apf-bsi-0.0.1-SNAPSHOT.jar

O comando irá baixar todas as dependências do projeto e criar um diretório target com os artefatos construídos, que incluem o arquivo jar do projeto. Além disso, serão executados os testes unitários, e se algum falhar, o Maven exibirá essa informação no console. Se tudo ocorreu como esperado vai conseguir acessar estes endereços com sucesso.

http://localhost:8080/apf/
http://localhost:8080/apf/login
http://localhost:8080/apf/registration

Testes

Para rodar os testes, utilize o comando abaixo:

mvn test

licença

MIT

Referências

Desenvolvido a partir do tutorial e do código linkado abaixo:

Tutoriais

  • Na página Tutoriais temos a lista de tutoriais consultados.

Artigos

  • Na página Artigos temos a lista de artigos consultados.

apf-bsi's People

Contributors

dependabot[bot] avatar joaoeudes7 avatar tacianosilva avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

apf-bsi's Issues

Criar documentação do projeto em Markdown

  • Criar página de documentação do projeto em markdown dentro da pasta docs.
  • Colocar links para os documentos do Google Drive no README.md.
  • Transferir a documentação do Google Drive para páginas markdown.

Melhorar mensagem de verificação ao excluir projeto

Ao acessar a lista de projetos e clicar no botão Excluir é exibida a mensagem:

image

Acredito que o termo na mensagem deveria ser Excluir, e também deveria aparecer o nome do projeto.

Excluir Projeto
Tem certeza que deseja excluir o projeto **_#529 -  Nome do Projeto_**?

Migrar para o SGBD PostgreSQL

  • Adicionar a dependencia o Driver JDBC do PostgreSQL;
  • Configurar Data Source Properties em application.properties;

Criar Dockerfile e docker-compose

Para a implantação no servidor do LABENS, vamos criar a infraestrutura de execução utilizando docker.

  • Criar arquivo Dockerfile e .dockerignore no diretório src/main/docker;
  • Criar arquivo docker-compose.yml utilizando o Serviço PostgreSQL que roda no servidor LABENS;
  • Colocar o container do apf-bsi na mesma rede docker do labens-network;

Criar controller para TransactionFunction

Criação de controller para as TransactionFunctions (Funções de Transação ou Processos Elementares).
O sistema de contagem já contabiliza as funções de transação, contudo ainda não está integrada na Interface.

Criar mecanismo para povoamento inicial do banco de dados

Criar mecanismo para povoamento inicial do banco de dados na primeira execução.

    INSERT INTO role VALUES (1,'ADMIN');
    INSERT INTO role VALUES (2,'USER');
    INSERT INTO attribution VALUES (1,'PROJECT MANAGER');
    INSERT INTO attribution VALUES (2,'PROJECT MEMBER');
    INSERT INTO attribution VALUES (3,'PROJECT_DEV');

Criar novos testes de unidade dos códigos recentes

Verificar o relatório do Sonar e criar testes de unidades para as funcionalidades mais recentes.

  • Deixar mvn test executando perfeitamente
  • Testes de códigos recentes;
  • Testes de classes antigas com pouca cobertura;

Falha ao carregar o HikariDataSouce nas classes de testes de controladores

Ao executar mvn test seguinte erro estava ocorrendo:

Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource.

Isso ocorria ao executar as classes de testes de controladores LoginControllerTest e UserStoryControllerTest.

Para resolvermos acrescentamos o atributo DataSouce com a anotação @MockBean nas classes de testes de controladores:

    @MockBean
    private DataSource dataSource;

Com esta modificação os testes executaram perfeitamente.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.