Skip to content

soturnacrosta/sistemabibliotecario

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

Software bibliotecário

Autor: Mailton Olinto de Oliveira Lemos

Objetivo:

Esse é um projeto que propõe pôr em prática tudo que o autor tem de conhecimento sobre programação e Engenharia de Software. Não obstante, será usado como portfólio pessoal. Os requisitos do projeto são do professor Jonatas de Araujo.

Desenvolvimento:

O software bibliotecário foi desenvolvido em linguagem C através do ambiente Linux e IDE Visual Studio Code. A escolha se deve a facilidade do desenvolvedor com as ferramentas e a maneabilidade do ambiente Linux para programação. A linguagem C é também uma linguagem simples, porém desafiadora, ótima para aprendizagem.

O software teve sua documentação e desenvolvimento baseado em Métodos Ágeis, embora não há de fato um cliente a se entregar os incrementos, a ideia é estabelecer metas por Sprints.

Os Sprints terão em média três dias de desenvolvimento, devido à baixa complexidade do projeto. Cada Sprint terá um objetivo claro definido, essa definição que separarão as Sprints.

Definição de pronto:

Os incrementos devem ser entregues quando atingirem o mínimo necessário, que é a implementação parcialmente funcional de uma função. Ao atingir um estado de funcionalidade, gerando retornos válidos, pode ser considerado pronto, mesmo que gere erros com uso insistente.

A explicação para essa definição é o intuito do projeto que por ser um estudo, torna-se viável a entrega “parcial” da funcionalidade devida para correções de um suposto cliente/corretor.

Requisitos:

Criar um sistema simples de gerenciamento de um acervo de livros usando conceitos de alocação dinâmica, ponteiros e arquivos, com a possibilidade de atualizar, consultar e remover dados de livros; desenvolver um sistema que permita ao usuário cadastrar, listar, remover e atualizar livros de uma biblioteca. O sistema deve persistir os dados em um arquivo binário e permitir consulta e remoção de livros por título ou autor.

1.Cadastro de livros: O sistema deve permitir ao usuário inserir as informações de vários livros.

2.Atualização de dados: O sistema deve permitir ao usuário atualizar as informações de um livro já cadastrado (por exemplo, atualizar o título, autor ou número de páginas). 3.Consulta de livro: O sistema deve permitir a busca de um livro por título ou autor e exibir seus detalhes.

4.Remoção de livro: O sistema deve permitir a remoção de um livro baseado no título ou autor.

5.Persistência de dados: Os dados dos livros devem ser salvos em um arquivo binário e carregados do arquivo ao iniciar o programa.

6.Estruturas e ponteiros: Utilize structs para armazenar as informações dos livros. Utilize ponteiros e alocação dinâmica para gerenciar a memória.

7.Manipulação de arquivos: Os dados dos livros devem ser armazenados em um arquivo binário, com leitura e gravação dos dados. O sistema deve permitir atualizar o arquivo quando necessário.

Sprint 1:

Requisitos da Sprint: Nesse Sprint serão desenvolvidas as funções básicas do software: registro e consulta de livros. Para isso, serão feitos estudos sobre alocação dinâmica na internet e uso de IA para tal. Os itens do Product Backlog serão:

1.Cadastro de livros: O sistema deve permitir ao usuário inserir as informações de vários livros.

3.Consulta de livro: O sistema deve permitir a busca de um livro por título ou autor e exibir seus detalhes.

5.Persistência de dados: Os dados dos livros devem ser salvos em um arquivo binário e carregados do arquivo ao iniciar o programa.

6.Estruturas e ponteiros: Utilize structs para armazenar as informações dos livros. Utilize ponteiros e alocação dinâmica para gerenciar a memória.

7.Manipulação de arquivos: Os dados dos livros devem ser armazenados em um arquivo binário, com leitura e gravação dos dados. O sistema deve permitir atualizar o arquivo quando necessário.

Planejamento: Esse foi o início do projeto. Nessa Sprint, serão abordadas implementações de funções de registro e consulta de livros, além de validações de escolhas. Será iniciado também a documentação do software;

Ocorrerão implementações de função de registro e consulta de livros por título, autor e no caso de registro, também páginas;

As funções de registro e consulta são as funções básicas desse sistema bibliotecário. Com ambos, poderemos também criar as funções de atualizar e remover cadastro – ambas utilizam e consultam registros já criados;

Dia 1:

  • Início de desenvolvimento das funções de registro e consultas de livros;

  • Testes em tempo real;

Dia 2:

  • Desenvolvimento das funções de registro e consultas de livros, mas houveram problemas na execução do programa;

  • Estudos sobre alocação dinâmica;

  • Início de desenvolvimento da documentação;

  • Sincronização com repositório remoto para backup do projeto;

  • Testes em tempo real;

Dia 3: - Finalização da construção das funções de registro e consultas. Agora são permitidas consultas de registros antigos e novos, sem quebrar o programa;

  • Início do desenvolvimento da função de atualizar cadastros de livros;

  • Implementada função de atualização de cadastros, porém a atualização de título de livro não está funcionando adequadamente;

  • Sincronização com repositório remoto para backup do projeto;

  • Testes em tempo real.

Incrementos:

  • Registrar livros entregue funcionalmente;

  • Consultar livros entregue funcionalmente;

  • Atualizar livros entregue funcionalmente.

Revisão: As funções de registrar livros e consultá-los foram devidamente implementadas. O uso de alocação dinâmica e ponteiros foram bem sucedidas até esse ponto. Foi entregue a função de atualizar cadastros com erros. O uso de arquivo binário e structs também foi entregue.

Retrospectiva: A Sprint somou bastante conhecimento. A utilização de alocação dinâmica era obscura até então e utilizá-lo em um projeto clareou bastante as coisas. Embora seja difícil e com muitos erros de controle de memória, torna o programa mais limpo.

O Git foi realmente um problema. É confuso deixar sincronizado o repositório local e o repositório remoto, assim causando conflitos e muita dor de cabeça. Mas de certa forma deram certo as sincronizações.

Embora todas as funções tenham seus desafios, o maior desafio até então foi o de atualizar cadastros.

Sprint 2:

Requisitos da Sprint: Esse Sprint tem como objetivo entregar as funções de atualização e remoção de livros, bem como correção de erros. Para tal, será utilizado canais de pesquisa online como StakOverflow e IA. Os itens do Product Backlog são:

2.Atualização de dados: O sistema deve permitir ao usuário atualizar as informações de um livro já cadastrado (por exemplo, atualizar o título, autor ou número de páginas).

4.Remoção de livro: O sistema deve permitir a remoção de um livro baseado no título ou autor.

Planejamento: Esse Sprint sucede as implementações do primeiro Sprint: como registro e consulta foram sucesso, não haverá em um primeiro momento modificações nelas; mas a função de atualizar cadastro está com problema em retornar o novo valor na opção de atualizar títulos;

Será corrigido o problema na função de atualizar cadastros e será implementada a função de remoção dos cadastros;

A função de atualizar cadastros deve ocorrer sem problemas, tendo em vista que ela torna eficiente o processo de modificar registros, sem que o usuário tenha que remover registro X e depois criá-lo novamente. Apenas escolher e atualizar. A remoção de cadastros também é importante para controle de registros.

Dia 1:

  • Desenvolvimento finalizado da função de atualizar cadastros;

  • Início do desenvolvimento da função remover cadastros de livros. O mesmo está funcional, mas ao aplicar testes via Valgrind, que verifica erros de memória em programas via MEMCHECK, ele aponta cerca de 70 erros gerados nessa função;

  • Testes via Valgrind;

  • Sincronização com repositório remoto para backup do projeto.

Dia 2:

  • Finalização das implementações das funções de atualizar e remover cadastro;

  • Correção de bugs nas funções atualizar e remover cadastro;

  • Testes via Valgrind , ADRESS SANITIZER e de compilação no VSCODE;

  • Programa encontra-se funcional;

  • Avanço na documentação;

  • Sincronia com o repositório remoto;

  • Release da versão 1.0.

Incrementos: - Atualizar livro entregue funcionalmente;

  • Remover livro entregue funcionalmente;

  • Versão 1.0 do software entregue.

Revisão Essa Sprint teve como maior resultado o lançamento da versão 1.0 do Sistema Bibliotecário. Para isso, as funções de atualizar e remover cadastro foram implementadas funcionalmente. Os problemas de gerenciamento de memória foram quase todos erradicados. Atendidas os requisitos de utilização de ponteiros, alocação dinâmica, structs e arquivo binário.

Retrospectiva: Os maiores problemas encontrados foram no gerenciamento de memória, através de diagnósticos do Valgrind e ADRESS SINTETIZER. Houve enormes avanços quantos esses leaks na memória, mas restou uma (1) mensagem de erro a ser revisada. Mas o programa encontra-se funcional, com resultado satisfatório.

O uso de softwares para diagnóstico de gerenciamento de memória foi de suma importância para entender o que havia de errado na estrutura do algoritmo.

Evolução: Agora o software está completamente funcional, com todas as funções requisitadas atendidas e com validações de escolhas claras.

Versão 1.0.1:

  • Retirados mensagens de depuração;

  • Corrigidas mensagens de interação com usuário: adicionada linha Remover cadastro.

About

Sistema bibliotecário: cadastro, atualização, consulta e remoção.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages