Projeto Inovação - Nathany Perez

Fazer download em doc, pdf ou txt
Fazer download em doc, pdf ou txt
Você está na página 1de 21

3

NATHANY PEREZ MONI

ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

PROJETO INTEGRADO INOVAÇÃO – ADS

PORTO ALEGRE
2024
4

NATHANY PEREZ MONI

PROJETO INTEGRADO INOVAÇÃO – ADS


“Desenvolvimento de um sistema de gerenciamento de estoque”

Trabalho textual apresentado como requisito parcial para


a obtenção de média semestral.

Tutor EAD: Luis Gustavo Cardoso

PORTO ALEGRE
2024
5

Sumário
1. INTRODUÇÃO......................................................................................................3
2. DESENVOLVIMENTO..........................................................................................4
2.1. Passo 1......................................................................................................... 4
2.2. Passo 2......................................................................................................... 9
2.3. Passo 3.......................................................................................................10
2.4. Passo 4.......................................................................................................15
3. CONCLUSÃO.....................................................................................................18
REFERÊNCIAS......................................................................................................... 19
3

1 INTRODUÇÃO

No cenário atual do comércio eletrônico, o rápido crescimento das empresas


traz consigo desafios operacionais significativos. Dentre eles, a gestão eficiente de
estoque se destaca como um dos mais críticos. A administração inadequada do
estoque pode gerar problemas graves, como indisponibilidade de produtos, acúmulo
de itens sem demanda e dificuldades de localização nos depósitos, comprometendo
a eficiência operacional e a satisfação dos clientes.

Este projeto surge como resposta a esses desafios. Uma empresa de e-


commerce em rápida expansão busca desenvolver um Sistema de Gerenciamento
de Estoque integrado e eficaz, capaz de controlar produtos desde o cadastro até o
monitoramento da localização nos depósitos. O objetivo é criar uma solução robusta
e escalável que resolva os problemas atuais e prepare o negócio para um
crescimento sustentável.

Neste trabalho, apresentaremos uma abordagem metodológica bem definida


e boas práticas de desenvolvimento de software para criar um sistema de
gerenciamento de estoque que otimize as operações logísticas e proporcione uma
gestão mais precisa e eficiente dos estoques.
4

2 DESENVOLVIMENTO

2.1 PASSO 1

Sprint 1: Planejamento e Definição de requisitos.


Objetivo: Definir requisitos e planejar o desenvolvimento do sistemas, duração
2 semanas.

Figura 1: Foto do autor.


5

Sprint 2:

Figura 2: Foto do autor.

Sprint 3: Desenvolvimento do cadastro de produtos.


Objetivo: Implementar o módulo de cadastro de produtos, duração 3
semanas.

Figura 3: Foto do autor.


6

Sprint 4: Desenvolvimento da Atualização de estoque.


Objetivo: Implementar o módulo de atualização de estoque, duração 3
semanas.

Figura 4: Foto do autor.

Sprint 5: Desenvolvimento do rastreamento de localização.


Objetivo: Implementar o módulo de rastreamento de localização de produtos,
duração 3 semanas.
7

Figura 5: Foto do autor.

Sprint 6: Desenvolvimento de Relatórios.


Objetivo: Implementar o módulo de geração de reatórios, duração 3 semanas.
8

Figura 6: Foto do autor.

Sprint 7:Testes Finais e Deploy.


Objetivo: Realizar testes finais e implantar o sisitema, duração 2 semanas.

Figura 7: Foto do autor.


9

2.2 PASSO 2

Foi definido as variáveis booleanas para os requisitos:


P - Cadastro de produtos.
E - Atualização de estoque.
L - Rastreamento de localização
R – Relatórios.

A coluna ‘Solução Completa’ será verdadeira T apenas quando todas as


variáveis P, E, L, R forem verdadeiras, ou seja, todos os requisitos forem atendidos.
A expressão logica que representa a solução completa ( todos os requisitos
atendidos) é: P/\E/\L/\R.
A Operação lógica E (AND) é representada por ‘‘/\’’. Conforme a tabela:

Tabela verdade - fonte autor.

Interpretação:

P (Produtos): Verdadeiro (V) se o sistema permite a inclusão de novos itens


de produtos.
E (Estoque): Verdadeiro (V) se o sistema possibilita a atualização das
10

quantidades de produtos disponíveis.


L (Localização): Verdadeiro (V) se o sistema oferece a função de rastrear a
posição dos produtos.
R (Relatórios): Verdadeiro (V) se o sistema permite a geração de relatórios
sobre o status do inventário.

2.3 PASSO 3

Criam-se as funções para definição das estruturas de dados, bem como algoritmos
de cadastro e consulta dos produtos, movimentações de estoque e relatórios.

Estruturas para Produtos, Categorias e Movimentações:

# Estrutura de Dados para Produtos


class Produto:
def __init__(self, id_produto, nome, categoria, quantidade, preco,
localizacao):
self.id_produto = id_produto
self.nome = nome
self.categoria = categoria
self.quantidade = quantidade
self.preco = preco
self.localizacao = localizacao

# Estrutura de Dados para Categorias


class Categoria:
def __init__(self, id_categoria, nome):
self.id_categoria = id_categoria
self.nome = nome #

#Estrutura de Dados para Movimentações de Estoque class


Movimentacao:
def __init__(self, id_movimentacao, id_produto, tipo, quantidade,
data): self.id_movimentacao = id_movimentacao
11

self.id_produto = id_produto
self.tipo = tipo # 'entrada' ou 'saida'
self.quantidade = quantidade
self.data = data

Algoritmos de Cadastro e Consulta:

Funções para Cadastro de Produtos e Categorias:

produtos = {}
categorias = {}
movimentacoes = []
Id_produto_counter = 1
id_categoria_counter = 1
id_movimentacao_counter = 1

def cadastrar_categoria(nome):
global id_categoria_counter
categoria = Categoria(id_categoria_counter, nome)
categorias[id_categoria_counter] = categoria
id_categoria_counter += 1
return categoria

def cadastrar_produto(nome, id_categoria, quantidade, preco,


localizacao):
global id_produto_counter
if id_categoria not in categorias:
raise ValueError("Categoria não encontrada.")
produto = Produto(id_produto_counter, nome, id_categoria,
quantidade, preco, localizacao)
produtos[id_produto_counter] = produto
id_produto_counter += 1
return produto
12

def consultar_produto(id_produto):
return produtos.get(id_produto, "Produto não encontrado.")

Funções para Consulta de Categorias:

def consultar_categoria(id_categoria):
return categorias.get(id_categoria, "Categoria não encontrada.")

Algoritmos de Movimentação:

Funções para Registrar Entradas e Saídas de Produtos:

def registrar_movimentacao(id_produto, tipo, quantidade, data):


global id_movimentacao_counter
if id_produto not in produtos:
raise ValueError("Produto não encontrado.")
if tipo not in ['entrada', 'saida']:
raise ValueError("Tipo de movimentação inválido.")

produto = produtos[id_produto]
if tipo == 'saida' and produto.quantidade < quantidade:
raise ValueError("Quantidade insuficiente em estoque.")

if tipo == 'entrada':
produto.quantidade += quantidade
elif tipo == 'saida':
produto.quantidade -= quantidade

movimentacao = Movimentacao(id_movimentacao_counter,
id_produto, tipo, quantidade, data)
movimentacoes.append(movimentacao)
id_movimentacao_counter += 1
return movimentacao
13

Relatórios e Consultas: Funções para Gerar Relatórios e Consultar o


Histórico de Movimentações:

def gerar_relatorio_estoque():
relatorio = []
for id_produto, produto in produtos.items():
relatorio.append({
'id_produto': id_produto,
'nome': produto.nome,
'categoria': categorias[produto.categoria].nome,
'quantidade': produto.quantidade,
'preco': produto.preco,
'localizacao': produto.localizacao
}) return relatorio

def consultar_movimentacoes(id_produto):
if id_produto not in produtos:
raise ValueError("Produto não encontrado.")
historico = [mov for mov in movimentacoes if mov.id_produto ==
id_produto]
return historico

def gerar_relatorio_movimentacoes():
relatorio = []
for mov in movimentacoes:
relatorio.append({
'id_movimentacao': mov.id_movimentacao,
'id_produto': mov.id_produto,
'nome_produto': produtos[mov.id_produto].nome,
'tipo': mov.tipo,
14

'quantidade': mov.quantidade,
'data': mov.data
})
return relatorio

Exemplo de Uso:

# Cadastro de categorias
cat1 = cadastrar_categoria("Eletrônicos")
cat2 = cadastrar_categoria("Livros")

# Cadastro de produtos

prod1 = cadastrar_produto("Smartphone", cat1.id_categoria, 100,


1500.00, "A1") prod2 = cadastrar_produto("Livro de Python",
cat2.id_categoria, 50, 70.00, "B2")
# Registrar movimentações

mov1 = registrar_movimentacao(prod1.id_produto, 'entrada', 50,


"2024-06-25")
mov2 = registrar_movimentacao(prod2.id_produto, 'saida', 5, "2024-
06-26")

# Gerar relatórios

relatorio_estoque = gerar_relatorio_estoque()
relatorio_movimentacoes = gerar_relatorio_movimentacoes()
print(relatorio_estoque)
print(relatorio_movimentacoes)
15

2.4 PASSO 4

Descrição dos Papéis

Estoquista: Responsável por registrar a entrada de mercadorias e verificar a


nota fiscal de recebimento.
Usuário: Encarregado de gerar relatórios semanais sobre a posição do
estoque e solicitar a compra de produtos.
Gerente de Setor: Responsável por aprovar a compra de produtos solicitada
pelo Usuário.

Descrição dos Casos de Uso

Registrar Entrada de Produtos: O Estoquista lança a entrada de novos


produtos no sistema.
Validar Nota Fiscal: O Estoquista verifica a validade da nota fiscal dos
produtos recebidos no estoque.
Emitir Relatório Semanal de Estoque: O Usuário gera relatórios periódicos
que indicam a situação do estoque.
Solicitar Compra de Produtos: O Usuário faz o pedido de reposição de
produtos no estoque.
Autorizar Compra de Produtos: O Gerente de Setor aprova a solicitação de
compra feita pelo Usuário.
Consolidação de Pedidos: Processo automatizado que reúne as solicitações
de compra e emite os pedidos ao fornecedor.

Detalhamento dos Casos de Uso


16

-Registrar Entrada de Produtos:


Ator: Estoquista
Descrição: O Estoquista lança no sistema a entrada de novos produtos,
informando quantidade, data e fornecedor.
Precondições: O produto precisa estar cadastrado no sistema.
Pós-condições: A quantidade do produto no estoque é atualizada no
sistema.

-Validar Nota Fiscal


Ator: Estoquista
Descrição: O Estoquista confere e valida a nota fiscal dos produtos
recebidos.
Precondições: A nota fiscal deve estar disponível.
Pós-condições: A entrada dos produtos é confirmada e registrada no
sistema.

-Emitir Relatório Semanal de Estoque


Ator: Usuário
Descrição: O Usuário gera um relatório semanal com informações sobre o
estado do estoque, incluindo movimentações e quantidades.
Precondições: Os produtos precisam estar cadastrados e todas as
movimentações devem ter sido registradas.
Pós-condições: O relatório é gerado e fica disponível para análise.

-Solicitar Compra de Produtos


Ator: Usuário
Descrição: O Usuário faz a solicitação de compra para repor produtos no
estoque.
Precondições: O produto precisa estar previamente cadastrado no sistema.
Pós-condições: A solicitação de compra é registrada e enviada para o
processo de consolidação.

-Autorizar Compra de Produtos


Ator: Gerente de Setor
17

Descrição: O Gerente de Setor aprova a solicitação de compra enviada pelo


Usuário.
Precondições: A solicitação de compra deve estar registrada no sistema.
Pós-condições: A compra é aprovada e o pedido é encaminhado ao
fornecedor.

-Consolidação de Pedidos
Ator: Sistema (Processo Automático)
Descrição: O sistema realiza a consolidação das solicitações de compra e
emite os pedidos para o fornecedor.
Precondições: As solicitações de compra precisam estar registradas no
sistema.
Pós-condições: O pedido consolidado é enviado para o fornecedor.

Figura Diagrama:
18

Fonte autor.
19

3 CONCLUSÃO

O desenvolvimento bem-sucedido do sistema de gerenciamento de estoque


para uma empresa de comércio eletrônico em rápida expansão demonstrou a
eficácia de uma abordagem estruturada e integrada em análise e desenvolvimento
de sistemas. Ao superar desafios como falta de produtos, excesso de estoque e
dificuldades na rastreabilidade, o projeto atendeu às necessidades da empresa de
maneira eficiente.

A adoção de metodologias ágeis, como o Scrum, permitiu uma gestão eficaz


dos obstáculos, garantindo entregas contínuas e incrementais que atenderam às
expectativas da empresa. O projeto não apenas alcançou os requisitos iniciais, mas
também estabeleceu uma base sólida para o futuro crescimento e sucesso da
empresa.

Essa experiência prática comprovou a eficiência de uma abordagem


colaborativa e interdisciplinar para resolver problemas complexos, validando a
aplicação de conceitos teóricos e metodologias ágeis. O sucesso deste projeto serve
como modelo para futuras implementações de sistemas de gerenciamento de
estoque em empresas de comércio eletrônico.

Principais contribuições:

- Demonstrou a importância de uma abordagem estruturada e integrada em


análise e desenvolvimento de sistemas.
- Validou a eficácia das metodologias ágeis em gestão de projetos complexos.
- Estabeleceu uma base robusta para o crescimento e sucesso da empresa.
- Comprovou a eficiência da abordagem colaborativa e interdisciplinar em
resolução de problemas complexos.
20

REFERÊNCIAS

BORGES, L. E. Python para Desenvolvedores. Rio de Janeiro. Edição do


Autor, 2010.

MENEZES, N. N. C. Introdução a Programação com Python: Algoritmos e


Lógica de Programação para Iniciantes. São Paulo. Novatec, 2010.

PRESSMAN, Roger S. Engenharia de Software: Uma Abordagem


Profissional. 7ed, Porto Alegre: AMGH, 2011.

SOMMERVILLE, Ian. Engenharia de Software. 9.ed, São Paulo: Pearson,


2011.

TRELLO, https://trello.com/b/zCsaYAKw/desenvolvimento-de-sistemas-de-
gerenciamento-de-estoque-gideone

Você também pode gostar