| (14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 515: | Linha 515: | ||
[[Arquivo:Umlsestado18a.jpg]]<br><br> | [[Arquivo:Umlsestado18a.jpg]]<br><br> | ||
[[Arquivo:UmlEstadoCPP.pdf]]<br><br> | [[Arquivo:UmlEstadoCPP.pdf]]<br><br> | ||
O Diagrama de Estado mostra o estado dos principais objetos (Pedido e OP) em suas fases de execução e tratamento. A venda gera um pedido que é importado para dentro do sistema CPP como um "Pedido Interno". Enquanto o Pedido Interno não for revisado e aprovado, ou seja, conferido e validado sua execução, o "estado" é de apenas de ''"Pedido Não Aprovado"''. No momento em que se dá a sua aceitação através de comando e login de senha, o estado do Pedido passa a ser "Aprovado" e gera-se automaticamente uma Ordem de Produção (OP) cujo seu estado é de apenas ''"OP Gerada"''. A Ordem de Produção requisita que seja agregado os Recursos Produtivos que se tornam ''"itens da OP"'' necessário para manufatura do produto. Após realizar todos os ajustes necessário (como como por exemplo um remanejamento de máquinas) o usuário pode aprovar através de login de senha a OP, então a mesma passa para o Estado de ''"OP Aprovada"'', que requisita ao seu superior que autorize a mesma para a produção. O coordenador do setor ao autorizar produção através de login de senha altera automaticamente o estado da OP para ''"OP Autorizada"'', e gera-se automaticamente um Evento para cada Item OP. A não impressão do documento que vai para produção implica que a OP está autorizada mas em aguardo, e seu estado é representado na fila do diagrama de Gant por um vetor do item na cor cinza esmaecido. Após impressão do documento o estado passa para ''"OP em produção"'' e o vetor adquire uma cor viva diferente de cinza. Ao finalizar a execução de todos os itens da OP Coordenador do PCP lança a data efetiva na interface de usuário da própria OP através de login de senha passando o estado da OP para ''"OP Finalizada"'' e bloqueia-se todas as operações e atributos nas classes que referencia a OP. | |||
<br> | |||
<br> | |||
<br> | |||
== Diagrama de Atividades== | == Diagrama de Atividades== | ||
| Linha 527: | Linha 533: | ||
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.<br> | Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.<br> | ||
[[Arquivo:Umlobjeto20a.jpg]]<br><br> | [[Arquivo:Umlobjeto20a.jpg]]<br><br> | ||
[[Arquivo: | [[Arquivo:CPPumlObjeto.pdf]]<br><br> | ||
==Diagrama de Componentes== | ==Diagrama de Componentes== | ||
| Linha 533: | Linha 539: | ||
[[Arquivo:Umlscomponente21.jpg]]<br><br> | [[Arquivo:Umlscomponente21.jpg]]<br><br> | ||
O Diagrama de Componentes realizado, é uma representação esquemática simples de como as Classes são tratadas pelo código executável. O Executável CPP manipula todas as classes conforme as operações sejam requisitadas pela pessoa através da interface de usuário. Para que as operações mostre os atributos das Classe OP Item, Evento e Ocorrência em um vetor DataTime em tempo real na tela de interface (ou seja mostra o Diagrama de Gantt em execução em tempo real), o Executável CPP carrega para memória os arquivos que contém instruções lógigas matemáticas e se tornam executaveis ao manipular Classes em um loop contínuo em dado intervalo DataTime. O executável gerencia a comunicação entre as interface, entre o gerenciado de banco de dados que contem os atributos das Classes(SGBD - Sistema de Gerenciamento de Banco de Dados), os arquivos documentos auxiliares, e o banco de dados da empresa representado no diagrama por um componente esteriótipo "<<entity>>" da própria Empresa. | |||
<br> | |||
<br> | |||
<br> | |||
==Diagrama de Pacote== | ==Diagrama de Pacote== | ||
| Linha 539: | Linha 551: | ||
[[Arquivo:Umlpacote21b_.jpg]]<br><br> | [[Arquivo:Umlpacote21b_.jpg]]<br><br> | ||
[[Arquivo:UmlPacoteCPP_.pdf]]<br><br> | [[Arquivo:UmlPacoteCPP_.pdf]]<br><br> | ||
O CPP PLANNING é composto em módulos (Programação da Produção - PP, Simulador Virtual de Cenários - SVC, Integrador de Banco de Dados - IBD, Gestão de Recursos- RM), no entanto o projeto exposto é o módulo PP. O módulo PP estruturado em agrupamento lógicos e com dependências entres pacotes. Os pacotes Venda, Recursos e Produção dependem dos atributos e operações estabelecido para cada usuário no Pacote Login, para que haja mudanças na visibilidades das operações que cada usuário tentar implementar nas classes. Da mesma forma as classes que tem operações de cálculos e precisam de operadores matemáticos avançados para concluir, precisam acessa o Pacote Utility System que contêm funções e bibliotecas implementado pelo programador que podem serem requisitadas para efetivar o cálculo (por exemplo, uma função que pertence ao Pacote Utiliy System é requisitada pela Classe Parâmetro que por sua vez é usada pela Classe OP Item quando for quantifica o tempo na execução de um Recurso que armazenado no atributo timeRecursoProdutivo). | |||
O Pacote Interface Comunication é o agrupamento das classes que implementa todas as operações (protocolo de interface) necessárias para comunicação do hardwares (sensores de produção nas máquinas) com software. | |||
O Pacote de DataBase é o agrupamento das classes que implementa as operações com o software que gere o banco de dados do CPP PLANNING e com o banco dados da empresa (já que o software se comunica com o banco de dados da empresa, importando informações e dados tratados pelo CPP PLANNING em sua operações. | |||
<br> | <br> | ||
<br> | <br> | ||
Edição atual tal como às 21h34min de 24 de setembro de 2013
ESCOPO
A medida que o mundo evolui tecnologicamente há uma demanda crescente por produtos que sejam inovadores e sustentáveis, forçando as indústrias a trabalhar com múltiplos processos cada vez mais complexos e sofisticados em sua linha de produção. Visando gerir com máxima eficiência todo este sistema, há uma crescente procura por softwares e sistemas de gerenciamento que facilitem o planejamento de manufatura, redução dos custos e otimização das tarefas. Para atender esta lacuna, temos como projeto a construção de um sistema de gerenciamento de produção sofisticado, agregando as mais novas soluções tecnológicas que permitam aos usuários um maior dinamismo em seu manuseio e reprogramações de tarefas; refletindo assim diretamente em um menor custo, na agilização das tarefas (economia de tempo), na melhor combinação do suprimento das linhas de produção e suas demandas, e na geração de informações em tempo real tanto para a empresa como para seu cliente final. O software será desenvolvido na linguagem de programação de alto nível (C++, Focus ou Ruby) e que permita trabalhar com os mais variados tipos Bancos de Dados (SQL Server, Oracle, Debiam, MySQL, DB2, FileMaker, Apache Derby, Teradata, Firebird, Access e outros). Deve ser integrado a hardwares com tecnologia de tela multitoque (reconhece múltiplos contatos simultaneamente), e que a aplicação seja utilizada colaborativamente por vários utilizadores simultaneamente. O software também deve permitir a simulação virtual da produção, projeções e a escrita de scripts específicos de programação por recursos produtivos (máquinas ou atividades).
5W2H
What
1. Qual o nome do seu projeto?
CPP – PLANNING (CONTROLE E PROGRAMAÇÃO DA PRODUÇÃO)
2. Qual o objetivo deste projeto?
O Objetivo é desenvolver uma solução completa para administração da produção industrial aproveitando o máximo da tecnologia multi toque de tela para (touch screen) com recursos vetoriais, programação linear mista e utilização do diagrama de Gantt, propiciando ao usuário praticidade e rapidez na programação das linhas de processos de produção, total visão do nível de ocupação das máquinas, prevenção de períodos ociosos e "gargalos", simulação virtual dos processos antes de colocar em linha de produção, gerenciamento em tempo real e integração com demais softwares estabelecidos na empresa.
4. Quais os maiores desafios, na sua opinião, para se realizar este trabalho?
O maior desafio é conseguir uma equipe qualificada para desenvolvimento do projeto e a simulação real do protótipo em vários ambientes fabris.
5. Quais os conhecimentos básicos que devemos ter para se implementar este projeto?
Os Conhecimentos necessários para implementar o projeto estão baseado na engenharia computacional, sistema de programação, engenharia de produção, engenharia de software e administração da produção, tais como:
- conhecimento em metodologias técnicas de gerenciamento da produção (Diagrama de Gantt).
- conhecimento em gerenciamento de produção em linha e células.
- conhecimento em matemática, estatística e metodologia de custeio.
- conhecimento em análise de sistemas e engenharia de softwares
- conhecimento em linguagens de programação e tecnologia touch screen.
4. Quais soluções similares existem no mercado?
Há inúmeras ferramentas de gestão da produção comercializadas individualmente ou integradas a sistemas ERP(Enterprise Resource Planning), amplas ou restritas (quando destinado a segmentos específicos das indústrias), simplificada com poucos recursos ou complexas (abrangendo múltiplos processos). Dentre as soluções similares (porém limitadas) no mercado brasileiro, destacamos os módulos de Controle da Produção das empresas Tovts, Senior Sistemas, SAP, Metrics, Alterdata e QAD.
Why
1. Porque é interessante desenvolver este projeto?
O desenvolvimento deste projeto é importante porque não há nada idêntico no mercado atualmente, apesar de haver uma demanda por softwares menos complexos e que ofereça mais recursos, facilidade de manuseio, e que gerencie com mais eficácia o setor de produção (redução de custos e tempos ociosos). As soluções similares são muito limitadas pois possuem funções específicas e demandam muita mão de obra operacional, já que os lançamentos e tratamentos de dados tomam muito tempo do usuário, e com intuito de torná-lo mais ágil as empresas subdividem os processos de alimentação do sistema entre vários usuários. A tecnologia touch implementada no sistema tornará o processo de manuseio e alimentação de dados mais ágil, enquanto o tratamento vetorial dos recursos em forma de imagens faz com que o a interface sistema/usuário seja mais amigável. Também a integração em tempo real do sistema com os hardwares (máquinas e equipamentos) através de um conjunto de sensores e porta de entrada de dados permite análise simultâneas e rápida para tomada de decisões entre os departamentos comercial, produção, estoque, logística e financeiro. Além de todos estes atributos, o software é um benchmarking com mais recursos e tecnologia.
2. Porque deve usar a tecnologia escolhida?
Esta tecnologia deve ser escolhia porque será a melhor solução existente no mercado, com mais recursos que permitirá o controle da produção em tempo real, reduzindo gastos através de um gerenciamento eficaz da produção.
Who
1. Quem pode se beneficiar deste projeto?
O software terá como alvo indústrias que trabalham com processos em linha ou células de fabricação de produtos (que correspondem a 90% das indústrias), que tenham a necessidade de uma ferramenta que permita controlar com eficácia a produção (uso máximo dos recursos com redução da ociosidade e de "gargalos").
2. Quem poderá operar o sistema?
Usuário comum, com um treinamento específico de funcionalidade do software.
3. Quem deverá participar do desenvolvimento do sistema?
Analistas e especialistas em programação, engenheiros da computação que sabem sobre tecnologia touch, e administrador de produção ou engenheiro de produção, além de técnico de PCP na etapa de testes.
Where
1. Onde o dados serão inseridos?
Os dados para processamento serão inseridos pelo usuário em uma interface gráfica (janelas do software), e importados de um banco de dados do cliente.
2. Onde os dados serão externalizado, publicados?
Serão externalizados através de relatório de consultas via monitores, através de relatórios impressos, exportado para outros bancos de dados de outros sistemas (softwares) do cliente, e pela internet para aplicativos interligado ao sistema do software.
3. Onde esta aplicação poderá ser usada?
Em setores produtivos da indústria para o planejamento e gerenciamento de suas atividades fabris.
4. Onde as informações serão armazenadas?
Todos os dados e informações serão armazenadas em banco de dados dos servidores alojados na empresa.
5. Onde o software deverá ser hospedado?
Dentro da empresa em seus servidores e computadores.
When
1. Em quanto tempo pretende desenvolver o sistema?
O Prazo para desenvolvimento e de 18 meses mais 06 meses de testes e ajustes em diferentes âmbitos industrias.
2. Quais serão as fases e em quanto tempo cada uma?
| Etapas | Prazo | Atividades |
|---|---|---|
| Levantamento de Requisitos | 2 Meses | Definição das funcionalidades necessárias baseado nas demandas do mercado. |
| Arquitetura e Projeto | 2 Meses | Definição das Linguagens e Tecnologias empregadas na criação do software. |
| Prototipação | 4 Meses | Elaboração do Fluxogramas e Montagem Gráfica das Interfaces de comunicação. |
| Desenvolvimento | 7 Meses | Codificação.(*Obs) |
| Documentação | 5 Meses | Elaboração de Manuais Técnicos e Guias de Usuário. (*Obs) |
| Testes e Validação | 6 Meses | Correções de erros e aprimoramentos. |
| Implantação | O tempo de implantação dependerá do Pacote de Contração do cliente. |
(*Obs). Os trabalhos para documentar o software e a codificação serão realizadas paralelamente, durante um período de 10 meses.
How
1. Como será dividido o desenvolvimento do sistema?
O software terá uma linguagem de programação orientada a objeto, ou seja, terá estruturas em módulos de funções de acordo com as classes. O software é subdividido em 04 módulos com funções específicas:
- Programação da Produção - PP
- Simulador Virtual de Cenários - SVC
- Integrador de Banco de Dados - IBD
- Gestão de Recursos- RM do inglês Resource Management
2. Como será feita a entrada de dados?
A entrada de dados no sistema ocorrerá de várias maneiras:
- Lançamentos da Ordem de Execução do Produto (OP) e cadastro de todos os recursos que serão utilizados no processo através de interfaces, através de digitação em um teclado, e/ou seleção na tela de recursos pré cadastrados.
- Lançamentos de dados nos sistemas através de: hardwares instalados nas máquinas (sensores, contadores, digitalizador, etc); leitores de códigos de barras e terminais "burros" (sem capacidade de processamento) na linha de fabricação. Estes dados fornecidos vão integrar os dados de volume de produção, de conclusão de etapas de execução de tarefas, tempos setups (tempos de parada na produção, seja por ajuste, manutenção, etc) códigos e nome de operadores e etc.
- Importação de informações contidos em um banco de dados gerenciado por outro software contido na empresa que será implantada o sistema.
3. Como será feita a saída de dados?
Os dados serão tratados em forma: de gráficos, tabelas, imagens, fluxos, relatórios. Serão consultados em: tela computador, rede externa (internet) ou interna (intranet), documento impresso, gravados em banco de dados, pendrives ou/e memória permanente externa ao sistema.
4. Como será o procedimento para as funcionalidades?
O procedimento dependerá da tecnologia envolvida no desenvolvimento (linguagem de programa adotado, tecnologia touch-screen, sistema de redes) e no gerenciamento de bando de dados.
How much
1. Quanto custa o sistema?
O custo total estimado de desenvolvimento do sistema, é de R$ 3.334.400,00 (Mão de Obra e Recursos Operacionais), ou seja, um custo mensal de aproximadamente R$ 138.933,33 conforme tabela detalhada abaixo:
| Recursos MO | Quant | Vr. Mensal (R$) | Períodos | Custo Total (R$) |
|---|---|---|---|---|
| Coordenador de Projetos | 1 | 10.000,00 | 24 | 240.000,00 |
| Programadores | 5 | 3.500,00 | 24 | 420.000,00 |
| Engenheiro de Computação | 2 | 10.000,00 | 12 | 240.000,00 |
| Engenheiro de Software | 1 | 8.000,00 | 18 | 144.000,00 |
| Consultor Administrador | 1 | 6.000,00 | 18 | 108.000,00 |
| Analistas de Sistemas | 3 | 3.000,00 | 24 | 216.000,00 |
| Consultor Técnico em PCP | 1 | 3.000,00 | 24 | 72.000,00 |
| Escriturário | 1 | 2.000,00 | 24 | 48.000,00 |
| Serviços Gerais | 1 | 900,00 | 24 | 21.600,00 |
| - | Sub-Total | 1.509.600,00 | ||
| Encargos (100%) | - | - | - | 1.509.600,00 |
| Custo com MO | - | - | TOTAL | 3.019.200,00 |
| Recursos Operacionais | Quant | Vr. Mensal (R$) | Períodos | Custo Total (R$) |
|---|---|---|---|---|
| Aluguel | 1 | 1.500,00 | 24 | 36.000,00 |
| Despesa com Escritórios (Agua, Luz, Telefones, e etc) | 1 | 6.000,00 | 24 | 144.000,00 |
| Despesas com Transportes e Viagens | 1 | 1.500,00 | 24 | 36.000,00 |
| Despesas com Contador | 1 | 8.000,00 | 24 | 19.200,00 |
| Aquisição de materias e Imobilizados | 1 | 80.000,00 | 1 | 80.000,00 |
| Custo Operacional | - | - | TOTAL | 315.200,00 |
2. Quantos serão os profissionais envolvidos no projeto?
Será preciso de 16 profissionais:
O corpo administrativo e staff será composto por 03 pessoas:
- 01 Coordenador do Projeto e Gesto Geral
- 01 Escriturário
- 01 Aux. de Serviços Gerais
O corpo técnico será composto 13 Profissionais Especialistas:
- 03 Engenheiros especialistas
- 05 programadores
- 03 Analistas de Sistemas
- 01 Consultor Administrador de Produção
- 01 Consultor Técnico especialista em PCP - Planejamento e Controle da Produção
3. Qual será o preço de aquisição do seu software para o usuário final?
O sistema não será vendido, e sim licenciado por usuários. O contrato firmado com o cliente será anual, com mensalidade de R$ 3.000 para fornecimento de 10 licenças com acessos simultâneos. A contratação dará direito ao cliente suporte técnico gratuito online e atualizações de versões. Suporte local, treinamentos, customização no software após implantação terão custos cobrados através de novos contratos suplementares. Os Custos com implantação é de R$ 35.000 para um pacote de 250 horas para o treinamento e adequação do software com o banco de dados da empresa (customização).
DFD
Diagrama de Fluxo de Dados (DFD) do Módulo de Programação da Produção - PP.
A programação da produção se inicia com a importação da Ordem de Produção (OP) gerada pelo Sistema Orçamentário do Cliente. A partir dai os processo do sistema são divididos em:
- Programar Produção: Armazena os dados da Ordem de Produção (OP) no Banco de Dados do Sistema. Valida os recursos da OP com as especificações das máquinas ou da mão de obra empregada na OP. Se tiver em conformidade as informações da OP juntamente com a capacidade de produção, passa-se para o cálculo do tempo de execução da OP.O Técnico de PCP pode também programar outros tipos de recursos (operações ou processos) nos períodos ocioso da máquina tipo manutenção preventiva), paradas de máquinas (defeito mecânico, falta de energia, limpeza e etc)
- Calcula Tempo de Execução: Neste processo o sistema irá quantificar o tempo (em horas) necessário para execução da OP por recursos e etapas de manufatura (Máquina e Mão de Obra). E quantificado também ajustes e intervalos de processos não produtivos (estágios de ociosidade).
- Avalia Capacidade Produtiva: Neste processo o sistema consulta o Banco de dados das Linhas de Produção, cruzará o tempo de disponibilidade da máquina/mão de obra, e gera uma instrução de reserva e alocação de mais um módulo de atividades nas linhas de tempo das Máquinas ou dos recursos de Atividades Manuais.
- Reserva: Neste processo o sistema aloca mais etapas de recursos (processos) nas linha de tempo das máquinas/atividades que serão utilizada no processo de manufatura da OP.
- Autoriza e Reprograma: Apos reservar e alocar a OP na linha de tempo dos Recursos de manufatura, o sistema mostra a nova situação da linha de produçã. O técnico de acordo com as informações e necessidade pode confirma a linha de produção ou reprogramar (quebrando a OP em mais entrada de máquina, trocando a hierarquia de execução dos recursos na linha de produção etc)
- Lançar dados de Execução da OP por Recursos usado: O sistema coleta dados da evolução da execução da OP, através de sistemas eletrônicos e sensores das máquinas, como também, através de entrada de dados da produção realizado pelos operários e ajustando automaticamente dos dados na Linhas de tempo de Produção.
DER
DIAGRAMAS UML
Normalização
1. Identificando os Objetos e as Classes (atributos e operações dos objetos):
O objetivo da prototipação é desenvolver uma ideia conceitual simples do futuro projeto. Portanto os requisitos da protipação envolve a manipulação e tratamento somente das informações básica essenciais do sistema de gerenciamento e planejamento da produção chamado de CPP.
Para desenvolver o Sistema de Gerenciamento e Planejamento de Produção Orientada a Objetos, construímos uma cadeia de procedimentos desenvolvido em um departamento de PCP (Planejamento e Controle da Produção) e identificamos os objetos que orientam as tarefas e que possuem uma relação de dependência entre os mesmos ou que afeta todo planejamento de uma produção:
2. Objetos:
- Cliente (ator)
- Pedido (documento)
- Produto (artefato)
- Ordem de Produção (documento)
- Maquinas (artefato)
- Mão de Obra (pessoa)
- Recursos (meios)
- Evento Produtivo (tarefa)
- Ocorrências (acontecimento que afeta o Evento)

3. Analisando o comportamento destes objetos e seus métodos, representamos (abstração) estas entidades através das seguintes classes:
- Cliente
- Pedido Cliente
- Produto
- Ordem Produção
- Ativos (MO + Maquinas)
- Recursos Produtivos
- Eventos
- Ocorrência Produção
Como o software será estruturado para que usuários diferentes tenham visibilidades e permissões diferentes ao acessar as Classes então o projeto prevê ainda uma "classe utilitária" e uma "classe enumeração" que define as regras para permissões da “Classe Usuário” onde será guardado os atributos e operações que cadas usuário terá.
4. Aplicando a Primeira Forma Normal – 1FN
Ao montar as tabelas das Classes, averiguamos que em algumas não havia nescessidade de mudanças, mas outras exigiam uma expansão já que havia repetição de dados e redundâncias, ou possuíam chaves compostas e dependências parciais.
- Tabelas que não exigiam mudanças:
- Tabela Cliente
- Tabela Usuário
A “Tabela Cliente” tinha os atributos “Código Cliente” e o “CNPJ/CPF” como candidatos a chaves primária , pois os demais atributos eventualmente estavam suscetíveis a se repetir ou possuíam dependência funcional sobre o código Cliente. A única precaução que tivemos foi lançar duas chaves primárias na tabela Cliente já que o CNPJ ou CPF jamais poderia se repetir e individualiza o Nome_Cliente em situações de repetição como no exemplo abaixo . Quanto a “Tabela Usuário” não houve necessidade de normalizar apenas a estabelecer chave primária o código do usuário

- Tabelas que exigiam mudanças:
- Tabela Produtos
- Tabela Ativos
Na Tabela Produto e na Tabela de Ativos, os atributos cujos dados não se repetem e consequentemente candidatos a chave primária são os seus próprios código de identificação. Os demais atributos tinha uma dependência funcional em relação ao código de identificação da Classe. Havia também aninhamento de informações e consequentemente de tabelas, que tivemos que desmembrar.

5. Aplicando a Primeira e Segunda Forma Normal – 1FN e 2FN
- Tabela Recurso Produtivos
- Tabela Pedido
A Tabela das Classes Recurso Produtivo, Pedido, Ordem de Produção, e Eventos são representações abstratas de documentos e tarefas no contexto do Planejamento de Produção. Portanto estas Classes são composições de informações de outras Classes (Produto, Maquina, Operário e Cliente).
Ao fazer a análise na Tabela Recurso Produtivo verificamos aninhamento de dados e uma composição com uma Classe já normalizada (Ativos MQ e MO). Como a Classe de Ativos não depende do Recursos Produtivo para existir, mas o recurso precisa de um ativo (dependência parcial), então tivemos que criar mais um Classe de transição agregada a Classe Recursos Produtivos que contem Ativos, e que chamamos de “Item Recurso” que passa ter um dependência direta com o a Classe Recurso Produtivo. Para desaninhar as tabelas e ficar adequada ao 2FN, criamos também as Classes Unidade Recurso e Setor Uso e Parâmetro.

A Tabela Parâmetro é uma classe especial agregada ao Recurso produtivo que armazenas uma Classe Utilitária interna (composição) que possui as funções do sistema que roda script de programação para o cálculo do tempo de execução do próprio Recurso Produtivo quando chamado por outras Classes (Ex.: Classe OP). Percebemos que ainda há repetição de dados, mas todos são depende funcional da chave Cod_Recurso, e esta repetição é um redundância necessária.
Na Tabela Pedido Interno temos aninhamento de dados e valores não atômicos, ou seja, um pedido relaciona com vários Produtos possuindo repetição de dados. Foi necessário decompor em mais duas tabelas gerando a Tabela de Vendedor e Pedido Item (onde alocamos os produtos). Percebemos que a Classe Pedido Item não poderia está agregado ao Pedido pois cada produto deriva (ramifica) vários processos para sua execução portanto tornaria independente e associada ao produto e ao pedido.

6. Aplicando a Primeira, Segunda e Terceira Forma Normal – 1FN, 2FN e 3FN
- Tabela Ordem de Produção
A Tabela Ordem de Produção tem como chaves candidatas a chave primária os atributos "Cod OP" e o "Cod Item Pedido". Levantando todos os atributos que compõe esta Classe encontramos os mesmos problemas de redundâncias e aninhamentos das tabelas normalizadas, porém dava para identificar que havia dependida parciais com por exemplo da “Unidade produção” que possuía dependência com o “cod item pedido” e não com o “cod da OP” que é uma das chave primárias candidatas, e dependências transitiva já que alguns atributos tinha dependência funcional com mais de um campo de atributos com é o caso do “cod recurso” que dependia do “item pedido” e ao mesmo tempo da “cod OP” e ambos atributos não poderiam permanecer na mesma tabela pois propiciavam repetição de dados.

Os dados das tabelas “OP” e “Item OP” e “Unidade de Produção” antes aninhada, agora possuem valores atômicos e seus atributos possuem dependência total de suas chaves.
A última tabela normalizada é a Tabela Eventos (tarefas executadas) que indica as tarefas e Ocorrência (circunstancias não previstas) no processo e manufatura do produto que possuíam os mesmos problemas da Tabela de Pedido, mas que após a normalização obtemos três tabelas com graus de dependências funcionais distintas.

Diagrama de Classes
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Obs. Além das classes claramente identificáveis que representam os objetos, ao normalizar houve a necessidade de criar novas classes para desagrupar dados redundantes, e classes especiais.
- Classes Especiais "Boldary" e "Control"
No processo de importação do pedido há necessidade criar um interface com algumas funções de controles que contem os protocolos de comunicação com o banco de dados da empresa, já que o software deverá ser interligado com software de gestão da empresa.
- Classes Especiais "Usuário", "AcessoClasses", Ações e "Visibilidade".
São classes contidas em um pacote encapsulado no pacote CPP que controla todas os atributos de visibilidade do ususário ao acessa as demais classes. Nestas classes será definida as permissões que cadas usuário tem ao utilizar as operações CRUD.
Diagrama de Caso de Uso
Diagrama
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.
Documentação dos Casos de Usos
Diagrama de Sequência
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Arquivo:UmlSequenciaCPP.pdf
Diagrama de Colaboração
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Arquivo:UmlColaboracaoCPP.pdf
Diagrama de Estado
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Arquivo:UmlEstadoCPP.pdf
O Diagrama de Estado mostra o estado dos principais objetos (Pedido e OP) em suas fases de execução e tratamento. A venda gera um pedido que é importado para dentro do sistema CPP como um "Pedido Interno". Enquanto o Pedido Interno não for revisado e aprovado, ou seja, conferido e validado sua execução, o "estado" é de apenas de "Pedido Não Aprovado". No momento em que se dá a sua aceitação através de comando e login de senha, o estado do Pedido passa a ser "Aprovado" e gera-se automaticamente uma Ordem de Produção (OP) cujo seu estado é de apenas "OP Gerada". A Ordem de Produção requisita que seja agregado os Recursos Produtivos que se tornam "itens da OP" necessário para manufatura do produto. Após realizar todos os ajustes necessário (como como por exemplo um remanejamento de máquinas) o usuário pode aprovar através de login de senha a OP, então a mesma passa para o Estado de "OP Aprovada", que requisita ao seu superior que autorize a mesma para a produção. O coordenador do setor ao autorizar produção através de login de senha altera automaticamente o estado da OP para "OP Autorizada", e gera-se automaticamente um Evento para cada Item OP. A não impressão do documento que vai para produção implica que a OP está autorizada mas em aguardo, e seu estado é representado na fila do diagrama de Gant por um vetor do item na cor cinza esmaecido. Após impressão do documento o estado passa para "OP em produção" e o vetor adquire uma cor viva diferente de cinza. Ao finalizar a execução de todos os itens da OP Coordenador do PCP lança a data efetiva na interface de usuário da própria OP através de login de senha passando o estado da OP para "OP Finalizada" e bloqueia-se todas as operações e atributos nas classes que referencia a OP.
Diagrama de Atividades
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Arquivo:UmlAtividadeCPP.pdf
Diagrama de Objetos
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Arquivo:CPPumlObjeto.pdf
Diagrama de Componentes
O Diagrama de Componentes realizado, é uma representação esquemática simples de como as Classes são tratadas pelo código executável. O Executável CPP manipula todas as classes conforme as operações sejam requisitadas pela pessoa através da interface de usuário. Para que as operações mostre os atributos das Classe OP Item, Evento e Ocorrência em um vetor DataTime em tempo real na tela de interface (ou seja mostra o Diagrama de Gantt em execução em tempo real), o Executável CPP carrega para memória os arquivos que contém instruções lógigas matemáticas e se tornam executaveis ao manipular Classes em um loop contínuo em dado intervalo DataTime. O executável gerencia a comunicação entre as interface, entre o gerenciado de banco de dados que contem os atributos das Classes(SGBD - Sistema de Gerenciamento de Banco de Dados), os arquivos documentos auxiliares, e o banco de dados da empresa representado no diagrama por um componente esteriótipo "<<entity>>" da própria Empresa.
Diagrama de Pacote
Para visualizar o diagrama em tamanho maior ver o arquivo pdf logo abaixo.

Arquivo:UmlPacoteCPP .pdf
O CPP PLANNING é composto em módulos (Programação da Produção - PP, Simulador Virtual de Cenários - SVC, Integrador de Banco de Dados - IBD, Gestão de Recursos- RM), no entanto o projeto exposto é o módulo PP. O módulo PP estruturado em agrupamento lógicos e com dependências entres pacotes. Os pacotes Venda, Recursos e Produção dependem dos atributos e operações estabelecido para cada usuário no Pacote Login, para que haja mudanças na visibilidades das operações que cada usuário tentar implementar nas classes. Da mesma forma as classes que tem operações de cálculos e precisam de operadores matemáticos avançados para concluir, precisam acessa o Pacote Utility System que contêm funções e bibliotecas implementado pelo programador que podem serem requisitadas para efetivar o cálculo (por exemplo, uma função que pertence ao Pacote Utiliy System é requisitada pela Classe Parâmetro que por sua vez é usada pela Classe OP Item quando for quantifica o tempo na execução de um Recurso que armazenado no atributo timeRecursoProdutivo).
O Pacote Interface Comunication é o agrupamento das classes que implementa todas as operações (protocolo de interface) necessárias para comunicação do hardwares (sensores de produção nas máquinas) com software.
O Pacote de DataBase é o agrupamento das classes que implementa as operações com o software que gere o banco de dados do CPP PLANNING e com o banco dados da empresa (já que o software se comunica com o banco de dados da empresa, importando informações e dados tratados pelo CPP PLANNING em sua operações.
PROTOTIPAÇÃO
Interface de Usuário
Modelagem do Banco de Dados
Modelo codificado










