Buscar

PIM III ADS 2020 1 SEMESTRE

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIP INTERATIVA
Projeto Integrado Multidisciplinar
Curso Superior em Tecnologia
Levantamento e análise de requisitos de um sistema de controle operacional de uma empresa especialista em transações com Blockchain. 
SANTOS
2020
UNIVERSIDADE PAULISTA
CURSO - ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
HENRIQUE CEZAR XAVIER SILVA
JHONATAN ARRAES PEREIRA DA SILVA
JOAO VICTOR CUSTODIO
KAUE VINICIUS DOS SANTOS BARBOSA
LUIZ ALBERTO RANOYA ASSUMPÇÃO
YURI PURIFICAÇÃO DE FRANÇA
Levantamento e análise de requisitos de um sistema de controle operacional de uma empresa especialista em transações com Blockchain. 
SANTOS
2020
RESUMO
Este presente Projeto Integrado Multidisciplinar, proposto pela Universidade Paulista - UNIP, visa aplicar o conhecimento adquirido no semestre pelas aulas de Análise de Sistemas Orientada a Objetos, Programação Orientada a Objetos I, Banco de Dados, Engenharia de Software II e Projeto de Interface com o Usuário. Este projeto propõe o levantamento e análise de requisitos para um sistema de controle operacional de uma empresa especialista em transações com blockchain (Unipay). Para isso, iremos identificar os casos de uso e elaborar seu modelo, com uma descrição direta de todo seu comportamento e usabilidade do sistema, além de apresentarmos as regras de negócio do cliente.
Palavras-chave: Blockchain, Tecnologia, Casos de uso, Análise, Requisitos
ABSTRACT
This Multidisciplinary Integrated Project, proposed by Universidade Paulista – UNIP, aims to apply the knowledge we acquire from our Object-oriented System Analysis, Object-oriented Programming I, Database, Software Engineer II and User Interface Design classes. This Project proposes the survey and requirements analysis for an operational management of a blockchain transactions specialist company (Unipay). To achieve this, we’ll identify the use cases and elaborate a model for it, with a direct description of all it’s behavior and system usability, besides present all the client’s business rules.
Keywords: Blockchain, Technology, Use cases, Analysis, Requirements 
Sumário
1.	Introdução...................................................................6
2.	Contextualização do Projeto......................................6
	2.1. Contexto do projeto.............................................6
	2.2.	Proposta de contrato de entrega de software, implantação e 	manutenção do sistema..............................................7
	2.3. Outras soluções do mercado...............................7
3.	Blockchain...................................................................8
	3.1. Como Funciona?..................................................8
4.	Análise e Levantamento de Requisitos......................9
4.1. Requisitos Funcionais........................................9
	4.2.	Requisitos Não-Funcionais................................10
	4.3.	Matriz de Rastreabilidade.................................10
		4.3.1. Modelo de Matriz de Rastreabilidade....11
		4.3.2. Matriz de rastreabilidade – Requisitos Funcionais
		X Requisitos Funcionais....................................11
		4.3.3. Matriz de rastreabilidade – Requisitos Não-				funcionais X Requisitos Não-Funcionais.........12
	4.4.	Regras de Negócio..............................................12
		4.4.1. Funções e Processos de Negócio..............14
		4.4.2. Descrição de um Processo de Negócio....14
	4.5. Levantamento dos requisitos solicitados pelo cliente para o 	design.............................................................................16
		4.5.1. Paleta de cores requerida pelo cliente....17
	4.6. Métodos de backup	................................................19
	4.6.1. Método para recuperação do sistema...............19	
5. UML - Linguagem de Modelagem Unificada.................21
	5.1. Modelagem de casos de uso.................................21
		5.1.1. 	Diagramas de caso de uso......................22
	5.2. Diagrama de Classes............................................26
		5.2.1. Diagrama de Classes...............................27
6. Diagrama de Implantação................................................28
	6.1. Estrutura e Instalação..........................................28
7. MER e Dicionário de Dados..............................................29
	7.1. MER – Modelo Conceitual e Logico....................29
8. Dicionário de Dados...........................................................32
9. Testes de Inclusão de Dados..............................................34
10. Considerações finais..........................................................37
Glossário..................................................................................38
Referências..............................................................................39
Apêndice A – Manual de Instalação.....................................40
Apêndice B- Manual de Treinamento de Usuário...............46
Apêndice C - Script Banco de Dados....................................58
1. Introdução
Este projeto tem como objetivo analisar e elaborar os requisitos de um sistema. O sistema visa auxiliar uma empresa especialista em transações com blockchain. O usuário deve acessar o sistema e, dependendo do nível de autorização (cliente ou funcionário), fazer o gerenciamento de sua conta e/ou realizar transações. O acesso ao sistema deve ser feito por meio de login e senha, e caso o usuário não possua cadastro, deverá realiza-lo através de uma tela especifica para isso.
Para efetuarmos um levantamento e analise de requisitos do sistema iremos elaborar e apresentar todos os casos de uso e suas especificações, descrevendo de forma breve o que ele faz e identificando seus fluxos. Também será elaborado um diagrama de classes detalhado do sistema e a partir desse diagrama um modelo entidade -relacionamento com informações sobre as tabelas do banco de dados e seus relacionamentos. Ainda no presente projeto descreveremos as regras de negócio da empresa e seu modo de operação.
2. Contextualização do Projeto
2.1. Contexto do projeto
A empresa Unipay, especialista em transações com Blockchain, contratou o serviço da Code Solutions (Nossa fábrica de software) para o desenvolvimento e aplicação de um sistema para o gerenciamento de suas operações. Por ser uma tecnologia relativamente nova, Não houve tempo para desenvolver um sistema interno para o gerenciamento das operações realizadas pelo cliente (cadastrar, gerar relatórios, entre outros). 
Nosso objetivo é desenvolver e implementar um sistema de acordo com os requisitos e as regras estabelecidas pela empresa, entregando um projeto de qualidade e que atenda as expectativas do contratante (Unipay).
A Unipay é uma empresa que trabalha com criptoativos (criptomoedas, criptocommodities (Etherum), criptotokens etc.), com sede em São Paulo, fundada no final de 2019 com o intuito de facilitar o câmbio e as transações com as moedas digitais que vêm crescendo no mercado dos últimos anos.
2.2. Proposta de contrato de entrega de software, implantação e manutenção do sistema
A Code Solutions, empresa especializada em software, vem através desta apresentar à Unipay proposta para entrega de software de gerenciamento de operações com implantação e manutenção do sistema.
A manutenção a ser feita no sistema abrange manutenção preventiva (para prevenir falhas) e manutenção corretiva (para corrigir falhas).
Entende-se por manutenção preventiva a série de procedimentos destinados a prevenir o surgimento de erros, falhas ou defeitos na execução do software, conservando-o em perfeito funcionamento, tais como: a atualização da versão de tal software para a mais recente e a prestação de suporte técnico por telefone e e-mail para dirimir dúvidas acerca de sua utilização.
Entende-se por manutenção corretiva a série de procedimentos destinados a corrigir ou reparar os defeitos e falhas apresentados na execução de softwares, fazendo-o funcionar novamente em perfeitas condições tais como: a reinstalação ou reconfiguraçãodo software, a substituição do software por cópia que não registre o mesmo erro, defeito ou falha e a instalação da versão mais recente.
A manutenção preventiva e corretiva do software será realizada mensalmente ou a qualquer tempo mediante chamado do cliente para correção de falhas.
A nossa empresa atenderá no máximo em 24 horas após o recebimento da chamada técnica para comparecer no local do cliente para efetuar a manutenção.
Propomos um contrato de dez anos de duração contados a partir da entrega do software.
O preço de nossos serviços será de R$20.000,00 (vinte mil reais) pela entrega e implantação do software, sendo esse pagamento efetuado 50% na entrega do software e 50% ao término da implantação. Pela manutenção preventiva e corretiva propomos o valor de R$1.000,00 (mil reais) por mês durante o prazo de vigência do contrato, com vencimento até o quinto dia útil do mês subsequente. 
2.3. Outras soluções do mercado.
Nossa maior base para o desenvolvimento desse sistema foi o Site/Aplicativo “Mercado Bitcoin”, por possuir um sistema que cumpre o que promete com um design intuitivo e de fácil utilização. Outra grande inspiração foi o aplicativo Kinvo, que gerência e realiza investimentos e transações. Baseando-se nessas duas fontes, nosso sistema será intuitivo e com grande facilidade de utilização e, além de ter um design limpo e fluido, contará com o atrativo de ser dedicado única e exclusivamente para a empresa Unipay, cumprindo com tudo que foi planejado e é esperado por parte do contratante. 
3. BLOCKCHAIN 
O Blockchain nada mais é do que um conceito, uma arquitetura de banco de dados. Existem diversos blockchains, porém o mais conhecido é o que suporta as transações do Bitcoin, a moeda virtual. Por ser como um banco de dados e armazenar transações financeiras, é possível compará-lo à um livro razão, um registro de contabilidade em que se controla o movimento de todas as contas contábeis separadamente. 
3.1. Como Funciona?
Ele armazena essas informações, esse conjunto de transações, em blocos carimbando cada bloco com um registro de tempo e data. A cada período de tempo (10 minutos no blockchain), é formado um novo bloco de transações, que se liga ao bloco anterior. A rede é formada por mineradores que verificam e registram as transações no bloco. O minerador poderá adicionar uma transação no bloco se possuir aprovação de 50% da rede do blockchain e concordarem que a transação é legítima. E no caso do Bitcoin, este tipo de consenso é medido através de poder computacional, ou seja, quanto maior o poder, maior a aprovação da rede para que a transação seja efetuada. Todo bloco tem um resumo de todas as informações inseridas nele, o resumo do bloco é conhecido como Hash, que é uma operação ou função matemática que pode ser realizada sobre qualquer conjunto de informações digitais. O hash do próximo bloco de informações deve ser compatível com o hash do bloco anterior, quando isso ocorre, os dois blocos se ligam e se tornam dependentes um dos outros. De tal forma que um bloco não pode ser modificado sem o consenso de toda a rede. Digamos que o valor de uma transação que foi realizada há 3 anos seja alterado. Ao mudar o valor da transação, o hash da transação é modificado. Com isso, o hash do bloco é modificado. Com isso, o hash do próximo bloco é modificado. E com isso, todos os demais blocos e transações ocorridas até o dia de hoje seriam modificados.
A operação não seria aceita e o volume de processamento computacional necessário para que fosse possível alterar isso e recalcular todos os hashs em todas as cópias existentes do blockchain seria impensável.
Ao invés desses dados ficarem armazenadas em um computador central, no blockchain, esse mesmo dado fica armazenado em milhares de computadores espalhados pelo mundo inteiro, por isso entrar no computador central e roubar registros ou modificá-los seria impossível pois cada computador dessa rede possui um registro dessas informações. E que se tentar modificar o banco de dados de um computador, ele será expulso pelo restante da rede.								Por ser meio de transação de informações monetárias, possui seu sigilo e privacidade de dados baseado em criptografia. Para isso, traz a ideia de endereço (address) em que a partir de uma chave privada, aplicando operações criptográficas, você pode gerar diversos endereços diferentes, que são um conjunto longo de caracteres e números. Recomenda-se que, a cada nova transação que você realizar, utilize um endereço diferente. Quando há a transação de bitcoins, ela não é automaticamente incluída no blockchain. Ela precisa ser validada. Por isso, ela fica em uma espécie de área temporária, esperando ser incluída até que se torne oficial.
4. Análise e Levantamento de Requisitos
Segundo algumas definições, requisitos nada mais é do que uma condição ou capacidade que deve ser alcançada, algo que um sistema ou componente deve possuir para satisfazer um contrato, padrão ou especificação.
O início de toda atividade de desenvolvimento de software é a análise e levantamento de requisitos, segundo o IEEE (1990) a análise de requisitos é um processo que envolve o estudo das necessidades do usuário para encontrar uma definição correta ou completa do sistema ou requisito de software, esta atividade é repetida em todas as etapas da engenharia de requisitos. Dentro deste contexto é importante a comunicação e o envolvimento constante com os usuários do software, pois eles influenciarão no resultado final do produto.
No levantamento de requisitos visamos compreender o problema, buscando a mesma visão entre desenvolvedor e usuário, do que deve ser construído para resolução de um problema. A fase de análise de requisitos é onde os desenvolvedores fazem um estudo detalhado dos dados levantados a modo de construir modelos representativos do sistema a ser desenvolvidos, como diagramas de casos de uso, diagramas de atividades, entre outros, buscando a validação de que o sistema atende as necessidades reais do contratante.
Para o levantamento de requisitos de nosso sistema, serão realizadas reuniões periodicamente com o contratante, a fim de não deixar nenhuma dúvida e evitar complicações no desenrolar do projeto e entregar um produto final com retorno positivo.
4.1. Requisitos funcionais
	Identificador
	Nome
	Descrição
	RF01
	Incluir cliente pessoa física
	O sistema deve ter o cadastramento de pessoas físicas
	RF02
	Cadastro de funcionários
	O sistema deve possuir uma versão de acesso exclusivo para funcionários 
	RF03
	Conexão com Banco de Dados
	O sistema deve ter uma conexão com banco de dados para consulta e armazenamento de informações
	
RF04
	Processamento de Transações
	O cliente deve poder fazer transações
	RF05
	
Alteração de dados
	Deve ser possível alterar dados da conta que não sejam vinculados a pessoa física (senha, e-mail, etc.)
	RF06
	Exclusão de conta
	O usuário deve ter a possibilidade de exclusão de conta
4.2. Requisitos não-funcionais
	Identificador
	Nome
	Descrição
	
RNF01
	Velocidade de processamento
	O sistema deve ter processamento rápido das informações
	
RNF02
	Autenticação de 
Usuário 
	Todos os clientes devem possuir um cadastro para utilizar o sistema
	
RNF03
	
Segurança dos dados
	O sistema deve seguir as normas da Lei nº 13.709/2018
	
RNF04
	
Volume de utilização
	O sistema deve suportar diversos usuários simultâneos 
	
RNF05
	
Responsividade
	A versão de cliente deverá ter um design responsivo para utilização em Web e Mobile
4.3. MATRIZ DE RASTREABILIDADE
Um dos benefícios mais importantes de qualquer iniciativa de gerenciamento de requisitos dentro de uma metodologia para gestão de projetos está no gerenciamento e controle de mudanças no escopo desses projetos.com mecanismos eficazes para elicitar, documentar e controlar nossos requisitos, conseguimos garantir que temos um retrato adequado ao escopo do nosso projeto no seu início e que conseguiremos acompanhar a evolução desse escopo de forma adequada. Uma das ferramentas de que dispomos para nos auxiliarnesse acompanhamento é a matriz de rastreabilidade.
4.3.1. MODELO DE MATRIZ DE RASTREABILIDADE
Qualquer que seja o tipo de matriz, ela sempre segue o mesmo modelo. Basicamente, coloca-se os objetos sendo rastreados nos eixos de uma tabela e marca-se os pontos de intersecção. No caso mais comum da matriz de rastreabilidade entre requisitos ou de dependentes, repete-se os requisitos nos eixos horizontal e vertical.
	
	REQ 01
	REQ 02
	REQ 03
	REQ 01
	
	X
	
	REQ 02
	X
	
	X
	REQ 03
	
	X
	
				Tabela de Exemplo 
4.3.2. Matriz de rastreabilidade – Requisitos funcionais X Requisitos Funcionais
	Requisitos Funcionais X Requisitos Funcionais
	RF01
	RF02
	RF03
	RF04
	RF05
	RF06
	RF01
	X
	
	X
	
	X
	
	RF02
	
	X
	X
	
	X
	
	RF03
	X
	X
	X
	X
	X
	X
	RF04
	
	
	X
	X
	
	
	RF05
	X
	X
	X
	X
	X
	
	RF06
	X
	X
	X
	X
	
	X
	Requisitos Não-Funcionais X Requisitos Não-Funcionais
	RNF01
	RNF02
	RNF03
	RNF04
	RNF05
	RNF01
	X
	X
	
	X
	X
	RNF02
	
	X
	X
	
	
	RNF03
	
	X
	X
	
	
	RNF04
	X
	
	
	X
	X
	RNF05
	X
	
	
	
	X
4.3.2. Matriz de rastreabilidade – Requisitos Não-funcionais X Requisitos Não-Funcionais
4.4. REGRAS DE NEGÓCIO 
Sempre que uma pessoa fizer o acesso ao sistema, ele dará as informações necessárias da conta dele tais são esses; nome, CPF, número da conta e senha. Após validar os dados o cliente poderá acessar sua conta e fazer diversos serviços dentro dela.
Esses serviços prestados ao cliente são:
· consultar saldo e extrato: quando o cliente acessar esta opção ele poderá checar saldo e checar o seu histórico desde a abertura da sua conta após isso ele poderá utilizar a opção sair ou voltar.
· Fazer depósito em conta: quando o cliente fizer um depósito ele precisará inicialmente ir na opção depósito em conta, lá ele terá de inserir o valor na tela e inserir o número de um cartão de crédito ou débito, logo assim que for autorizado o depósito seu saldo será atualizado automaticamente e um comprovante será emitido ao seu e-mail. Caso não seja autorizado será avisado na tela do cliente e será enviado um e-mail pedindo para ele informar um número de cartão válido ou inserir outro cartão com saldo, após isso ele pode ir na opção sair ou voltar.
· Saques: caso o cliente queira retirar um valor ela pode ir na opção saques, em seguida, ele digitará o valor que deseja e a conta que deseja transferido o valor, logo o sistema validará a conta e verificará se há saldo disponível na conta, após validar e verificar que há saldo o sistema fará a transferência e enviará um comprovante por e-mail. Caso haja algum erro de conta o sistema pedirá para informar uma conta válida, caso seja de saldo insuficiente o sistema informará que não há saldo disponível. Assim que terminar de fazer a transação o cliente terá a opção de sair ou voltar ao menu.
· Pagamentos: o cliente precisa ir na opção de pagamentos, logo exibirá opções de ler código de barras ou digita, após inserção, o cliente informa quando pagar e o valor a ser pago, em seguida o cliente digitará a senha para confirmação do pagamento e o sistema verificará se há saldo disponível. Após feito isso um comprovante é gerado e enviado por e-mail. Caso tenha algum problema referente a código de barras, lhe será enviado uma mensagem pedindo para informar um código de barras válido, se o problema for data de vencimento lhe será informado que não poderá efetuar pagamento, se houver problema referente a saldo lhe será informado que não há saldo disponível no momento. Quando terminar o cliente terá a opção de sair ou de voltar ao menu.
· atualização cadastral: para o cliente realizar quaisquer tipos de atualização em suas informações pessoais, ele precisará inserir senha para confirmação de usuário (função a ser realizada tanto no começo como no fim da função). Nesta opção ele poderá alterar nome, sobrenome, data de nascimento, telefone 1 e 2, e-mail secundário e endereço; o cliente não poderá alterar CPF, RG e e-mail primário. Para cada campo a ser alterado ele terá de inserir a informação corretamente, caso o contrário o sistema lhe enviará uma mensagem pedindo para informar os dados corretamente. Após isso o cliente terá a opção de sair ou voltar a o menu.
Quando a pessoa inserir os dados para acessar conta e não conseguir, lhe será passado duas opções, “novo cliente” e “esqueceu a conta ou senha”. 
· Para novo cliente a pessoa dará informações ao sistema corretamente, tenha algum campo preenchido incorretamente o sistema lhe informará qual campo precisa ser corrigido. Os campos a serem inseridos são: e-mail, nome, sobrenome, telefone 1, telefone 2 endereço, CPF, RG, data de nascimento, endereço, e-mail primário e e-mail secundário (e-mail secundário é opcional).
· Para esqueceu senha a pessoa precisará do CPF dela para ter sua conta novamente, que será feita através de um chat disponível pelo sistema.
4.4.1. FUNÇÕES E PROCESSOS DE NEGÓCIO
As funções e processos de negócio são de suma importância para qualquer empresa, uma vez que são elas que mantem os parâmetros de como o sistema deve se comportar ao longo do tempo, embora haja mudanças os conceitos definidos nos processos, na maioria das vezes, se perpetuam. Tendo isto em vista 
Um processo de negócio geralmente é instável e muda conforme as necessidades de negócio de uma empresa. Os principais fatores que levam à mudança de um processo de negócio são: 
· Lançamento de novos produtos no mercado. 
· Melhorias para redução de custos. 
· Melhorias para simplificação. 
· Adaptação à implantação de um aplicativo de software. 
· Adaptação para a utilização de nova tecnologia (máquinas, equipamentos etc.).
4.4.2. Descrição de um processo de negócio
Por “obrigatoriedade” todo processo de negócio deve ser composto por estes elementos:
· Nome
· Função de negócio: Inicia com o um verbo substantivado. 
· Processo de negócio: Inicia com um verbo no infinitivo, 2ª pessoa do singular ou no gerúndio.  
· Referência a essência do objetivo da função ou processo. 
· Descrição: Um pequeno parágrafo fazendo uma breve descrição do que o processo faz. 
· Responde à pergunta: “o que o processo faz?”.
· A descrição deverá ser feita de tal forma que um leigo no domínio do negócio entenda o propósito da função ou processo.
Para a realização desta etapa foram classificadas as seguintes funções: 
· Aquisição de clientes;
· Aquisição monetária;
· Transferências;
· Saques;
· Histórico de movimentações.
Processos:
Aquisição de clientes: 
· Cadastro: No ato do cadastramento os dados do cliente são informados por ele e recolhidos pelo sistema.
· Verificação de credenciais: Verificar os dados do usuário para não haver contas duplicadas
· Breve tutorial de uso do sistema: Caso seja a primeira vez em que o software é utilizado pelo usuário, um guia mostrará onde está cada elemento
Caso de uso: Cadastro/Login
Aquisição Monetária: 
· Depósitos: Exibir indicadores referentes aos valores;
· Verificar saldo: Opção para o usuário verificar o saldo e histórico da sua conta;
Caso de uso: Depósito/Saque
Saques:
· Registros: Exibir o histórico de saques do mês;
· Saldo: Exibir o saldo atual da conta para o usuário;
· Sacar: Informar valor que deseja ser sacado.
Caso de uso: Depósito/Saque
Transferências: 
· Saldo: Exibir saldo disponível;
· Transferir: Informar valores para a transferência;
· Verificação: Verificar se a conta de destino existe e está correta;
Caso de uso: Transferência
Histórico de movimentações:
· Login: Realizar login no sistema;
· Relatórios: Gerar relatórios de todas as movimentações da conta;
· Histórico: Exibir histórico para o usuário.
Casos de uso: Gerar relatórios
4.5. Levantamento dos requisitos solicitados pelo cliente para o design
O início de toda atividade de software é o levantamento de requisitos, sendo essa etapa tão importante quanto o próprio desenvolvimento, uma vez que se os requisitos estiverem incorretos ou incompatíveis com o desejado pelo ciente o produto perde valor. 
· Compreensão do domínio: Os analistas devem desenvolver sua compreensão do domínio da aplicação;
· Coletade requisitos: É o processo de interagir com os stakeholders do sistema para descobrir seus requisitos. A compreensão do domínio se desenvolve mais durante essa etapa;
· Classificação: Essa atividade considera o conjunto não estruturado dos requisitos e os organiza em grupos coerentes;
· Resolução de conflitos: Quando múltiplos stakeholders estão envolvidos, os requisitos apresentarão conflitos por conflito de interesses. Essa etapa tem por objetivo solucionar esses conflitos;
· Definição das prioridades: Em qualquer conjunto de requisitos, alguns serão mais importantes do que outros. Esse estágio envolve interação 
com os stakeholders para a definição dos requisitos mais importantes;
· Verificação de requisitos: Os requisitos são verificados para descobrir se estão completos e consistentes e se estão em concordância com o que os stakeholders desejam do sistema.
Na etapa de levantamento de requisitos os conceitos de UI/UX design são aplicados, desta forma é possível construir o melhor possível para satisfazer o cliente e consequentemente, o usuário. É possível realizar o levantamento desses requisitos de várias maneiras, no entanto alguns são mais efetivos do que outros, pois tudo depende do tamanho da equipe e do projeto em questão. 
Devido a isto, nossa empresa, a Code Solutions, fez o levantamento da seguinte forma: Formulários para definir os requisitos prioritários, entrevistas para o levantamento geral, observação e brainstorm. Tomando como base alguns projetos antigos para plataforma web e app da empresa, foi decidido a remoção de alguns cards por motivos de poluição visual, que poderia confundir o usuário e mudança nas cores, pois a Unipay é uma empresa nacional e por isso veste verde e amarelo, está decidido também que o número de telas tem de ser o menor possível, para que o usuário não precise estar o tempo todo trocando de tela para obter uma informação. Em virtude do que fora estabelecido após todas as etapas está a seguir. 
4.5.1. Paleta de cores requerida pelo cliente
- Azul marinho
- Azul claro
- Azul escuro
- Verde claro
- Verde escuro
- Verde musgo
- Amarelo
- Vermelho sangue
- Violeta
- Cinza 
- Preto
Modelos de base:
App
4.6. Métodos de backup
Realizar backups parece uma simples tarefa simples, basta copiar ou enviar os arquivos e pastas para qualquer outro lugar e o problema está resolvido. No entanto, essa é uma visão simplista do assunto. Uma vez que, para o usuário doméstico, isto resolve o problema, para uma grande empresa, se porventura uma pasta, arquivo ou qualquer informação for perdida a equipe de T.I será acionada e, se por acaso os dados não forem recuperados, isso pode resultar em sérios problemas.
Imagine a seguinte situação: O terminal do seu setor está apresentando falhas de execução e por isso a equipe de T.I planeja realizar uma alteração. Para isso eles te solicitam que coloque tudo que for importante em uma pasta, para que façam o backup desta pasta para o novo terminal e removam da sua máquina o anterior, contudo, após todos os processos, um arquivo é deixado para trás, e como você sabe que a empresa realiza bakups diários, solicita que o T.I traga esse arquivo de volta. Agora pare para refletir, e se algo tivesse sido deixado para trás e não houvesse o procedimento de backup diário? Problemas como esse são comuns e devemos estar preparados.
Em virtude do que foi descrito e pelo seguimento da nossa empresa, é imperativo que não haja falhas, então foi decidido pela equipe de T.I que o melhor método para isso seriam:
“Full Cycle”, que é simplesmente fazer a cópia completa de todos os arquivos, pastas ou volumes para destinos estabelecidos como servidores, sistemas de discos ou fitas como tapes LTO e autoloaders, feitos mensalmente e “Backup Diferencial” que para minimizar o risco da perda de dados, o backup diferencial alia o conceito de economia e velocidade do backup incremental, porém com uma diferença fundamental: Após realizar o primeiro backup completo, cada backup diferencial compara o conteúdo a ser copiado com o último backup full e copia todas as alterações realizadas. Isso significa que uma maior quantidade de dados será gravada a cada novo backup diferencial, pois o último fragmento sempre conterá todas as diferenças entre o backup original e o volume de dados atualizado. Esse processo é mais prático quando comparado ao incremental, pois só exigirá o backup completo e o último fragmento de backup para restauração de dados.
4.6.1. Método para recuperação do sistema
“As técnicas de recuperação da informação fazem parte da área da Ciência da computação que estuda a recuperação da informação de uma coleção de documentos.” -Baeza-Yates e Ribeiro Neto (1999).
Então para entendermos esse processo, primeiro precisamos entender o que é recuperação de desastres e recuperação de sistemas. A recuperação de desastres significa a recuperação total do ambiente operacional de uma empresa: é a recuperação total de um servidor, com todos os softwares envolvidos, bem como arquivos, usuários, credenciais, etc. É literalmente um recurso utilizado para o caso de uma perda total, que pode vir a ocorrer caso os dados da empresa não sejam bem protegidos e consequentemente possam vir a ser explorados por hackers ou crackers.
Enquanto a recuperação de sistemas é a recuperação de dados de determinado software, que acontece de forma isolada. Essa recuperação envolve o backup do sistema específico. Assim, se o backup oferecido pelo prestador de serviços gerenciados incluir a recuperação de desastres, a restauração de todo o ambiente operacional ocorrerá dentro do período estabelecido.
Devido a grande demanda do seguimento da Unipay, por gerenciar transações monetárias e ter acesso a informações extremamente importantes, foi optado pelo método SRI, cunhado por Calvin Mooers; que aconteceu nas décadas de 40 e 50. Este método consiste em encontrar a informação desejada, seja num armazém de informação ou numa base de dados, ou seja, os sistemas de recuperação devem oferecer recursos para facilitar a busca por essas informações
 
 
5. UML - Linguagem de Modelagem Unificada
UML ajuda muito a deixar o escopo claro, pois centraliza numa única visão (o diagrama) um determinado conceito, utilizando uma linguagem que todos os envolvidos no projeto podem facilmente entender.
Basicamente, UML (Unified Modeling Language) é uma linguagem de notação (um jeito de escrever, ilustrar, comunicar) para uso em projetos de sistemas.
A UML foi criada como um modelo padronizado para descrever uma abordagem de programação orientada ao objeto. Como as classes são os componentes básicos dos objetos, diagramas de classes são os componentes básicos da UML. Os diversos componentes em um diagrama de classes podem representar as classes que serão realmente programadas, os principais objetos ou as interações entre classes e objetos.
5.1. Modelagem de casos de uso
Casos de uso tem o objetivo de auxiliar a comunicação entre os analistas e o cliente, ele descreve um cenário que mostra as funcionalidades do sistema do ponto de vista do usuário. O diagrama de caso de uso é representado por atores, casos de uso, relacionamentos entre elementos, associações e generalizações.
Os atores são quaisquer elementos externos que interagem de alguma forma com o sistema, um caso de uso mostra a visão comportamental externa do sistema, descrevendo uma sequência de atividades executadas por um usuário, sem que seja necessário mostrar com detalhes o funcionamento interno do sistema, um ator é representado por um desenho de um “boneco palito”, um caso de uso é representado por uma elipse, e seus relacionamentos são representados por traços.
O Diagrama de caso de uso serve para representar como os casos de uso interagem entre si no sistema e com os usuários (atores), ou seja, como as funcionalidades se relacionarão umas com as outras e como serão utilizadas pelo usuário, durante o uso do sistema.
Os principais elementos de um diagrama de casos de uso são:
· Atores: boneco com rótulo que representa umhumano ou um sistema computacional.
· Caso de Uso: elipse com rótulo que representa uma funcionalidade do sistema, sendo que esta pode estar estruturada em outra(s). Um caso de uso pode ser concreto, quando é iniciado diretamente por um ator, ou abstrato, quando é uma extensão de um outro caso de uso. Além disso há casos de uso primários e secundários. O primeiro representa os objetivos dos atores, já o segundo são funcionalidades do sistema que precisam existir para que este funcione corretamente.
· Relacionamentos: auxiliam na descrição dos casos de uso, podendo ser: entre um ator e um caso de uso, entre atores e entre casos de uso.
· 
5.1.1. Diagramas de caso de uso
	Identificação
	Cadastro / Login
	Propósito
	Permitir ao usuário acesso ao sistema
	Ator
	Cliente
	Fluxo Normal:
1- Usuário Acessa o sistema
2- efetua o Login com os dados de cadastro
3- O sistema verifica as credenciais do usuário
4- Cliente acessa o sistema
Fluxo Alternativo:
1- Usuário Acessa o sistema
2- Caso não possua cadastro, realiza um cadastro
3- Ao realizar o cadastro, será também aberta uma conta
4- Cliente insere os dados para cadastro e abertura de conta
5- Após o fim do cadastro, o Login é feito automaticamente
6- O sistema verifica as credenciais do usuário
7- Cliente acessa o sistema
	Identificação
	Consulta de saldo
	Propósito
	Consultar o saldo disponível na conta do cliente
	Ator
	Cliente
	Fluxo:
1- Sistema verifica as credenciais do usuário
2- Cliente acessa o sistema
3- A carteira virtual solicita o saldo 
4- Sistema verifica os dados da carteira virtual e busca os dados no banco de dados
5- Sistema retorna o Saldo
	Identificação
	Depósito / Saque
	Propósito
	Realizar Saques ou depósitos na conta do usuário
	Ator
	Cliente
	Fluxo de Saque:
1- Cliente solicita saque
2- Sistema verifica o saldo no banco de dados
3- Sistema subtrai o valor solicitado
4- Saque realizado 
Fluxo de Depósito:
1- Cliente solicita depósito
2- Sistema verifica o saldo no banco de dados
3- Sistema acrescenta o valor depositado
4- Depósito realizado
 
	Identificação
	Transferência
	Propósito
	Permite ao usuário fazer transferências
	Ator
	Cliente
	Fluxo:
1- Cliente 1 Solicita uma transferência
2- Cliente 1 insere os dados da transferência
3- Sistema verifica o saldo disponível e as credenciais tanto do cliente 1 quanto do cliente 2 no banco de dados
4- Transferência realizada
 
	Identificação
	Transferência
	Propósito
	Permite ao usuário fazer transferências
	Ator
	Cliente
	Fluxo:
1- Cliente 1 Solicita uma um relatório
2- Sistema verifica as credenciais
3- Sistema consulta os dados no banco de dados
4- Sistema retorna um relatório 
5.2. Diagrama de Classes
O diagrama de classes é considerado por muitos autores como o mais importante e o mais utilizado diagrama da UML. Seu principal enfoque está em permitir a visualização das classes que irão compor o sistema com seus respectivos atributos e métodos, bem como em demonstrar como as classes do sistema se relacionam, se complementam e transmitem informações entre si. Este diagrama apresenta uma visão estática de como as classes estão organizadas. Basicamente, o diagrama é composto por suas classes e pelas associações existentes entre elas, ou seja, os relacionamentos entre as classes. 			As classes, atributos e métodos são os principais elementos que compõem um diagrama de classes. Classes costumam possuir atributos que armazenam os dados dos objetos da classe, e métodos, que são as funções que uma instância da classe pode executar. Podendo se concluir que o objetivo de um diagrama de classes é descrever os vários tipos de objetos no sistema e o relacionamento entre eles.
5.2.1. Diagrama de Classes
6. Diagrama de Implantação
6.1. Estrutura e Instalação
· Estrutura do Sistema.: O Sistema foi criado com a finalidade de controle de funcionários e clientes. Sendo que cada colaborador deve pertencer a no mínimo 1(um) departamento. Tendo como acesso o seu nome e senha. Para os clientes (CLIFOR) é necessário que ao cadastrar ele, o mesmo tenha 1(um) tipo de Situação, seja ele ativo, inativo ou inadimplente. Esse controle sobre o tipo de situação do cliente, vai ser baseado nos tipos de serviços adotados pelo mesmo e o pagamento de suas contas. Sendo que para cada serviço selecionado é necessário que ele gere uma conta a pagar e informe os seus dados e especificações (Plano de Contas e Tipo de Serviço). Dentre os tipos de serviços temos as Criptomoedas, Criptotokens, etc.). E para cada Conta a Pagar gerada é necessário informar o tipo de pagamento.
7. MER e Dicionário de Dados
7.1. MER – Modelo Conceitual e Logico
 
 
 
 
 
 
8. DICIONÁRIO DE DADOS
	Cadastro de Funcionários
	Necessária a inclusão dos dados NOT NULL
	Opcional determinar o tipo de departamento do funcionário
	INSERT FUNCIONARIOS
	
	Definição do Departamento
	Criação de Departamentos
	Opcional vincular departamento ao funcionário criado
	INSERT DEPARTAMENTOS
	
	Definição de Senha e Login
	Critério de Análise: Nome e Senha
	Permite o primeiro acesso ao sistema com esses dados
	
	
	Cadastro de Clientes
	Critério de Análise.: Fantasia e senha
	Acesso pela Fantasia determinada com a senha criada
	Primeiro Acesso ao Sistema
	
	Definição do Tipo de Serviço
	Inclusão dos Tipos de Serviços no Sistema
	Opcional o atrelamento do serviço ao cliente
	Após a primeira transação determinar o tipo de serviço
	Atrelar ao usuário
	Consulta Cliente
	Consulta pela Razão
	Consulta pelo CPF/CNPJ
	Consulta Pelo Tipo de Serviço
	Consulta pelas Contas a Pagar Geradas
	Consulta Funcionário
	Permite consulta de pelo Departamento
	Consulta pelo Sobrenome
	Consulta pelo Nome
	
	Teste de Senha e Login
	
	
	
	
	Inserindo Tipos de Pagamentos
	Inclusão de dados à Tabela
	Permite exclusão e alteração do dado criado
	
	
9. Teste de Inclusão de Dados
TESTES DE INCLUSÃO DE DADOS
<Entrada de Dados>
Funcionalidade.: Gerenciamento de Usuários
<SAIDA DE DADOS>
	Criação de Contas a Pagar
	Determinante inclusão de dados NOT NULL
	Determinante incluir Cliente e o Valor
	
	
	Consulta de Contas Geradas
Associadas ao Cliente
	Consultas pela Razão Social
	Consultas pelo Tipo de Serviço Associado 
	WHERE ID_CLIFOR
WHERE IDCP
	
	Criação de Plano de Contas
	ID e Descrição
	Controle do cliente
Transações
	INSERT PLANOCONTAS
	
	Consultas Planos e Contas
	Atrelamento de Plano de Contas as Contas
	
	SELECT*CONTASPA
WHERE COD.PLANOCONTAS
	
	Consulta Contas e Serviços
	Atrelamento da Conta a Pagar com o seu Serviço
	
	SELECT* CONTASPA
WHERE TIPOSERV 
	
	Consulta Situação do Cliente
	
	Atrela uma situação ao cliente (Ativo, Inativo)
	SELECT* CLIENTES
WHERE COD.SITCLIENTE
	
	Criação dos Tipos de Situações
	ID_TipoSituacao e Descrição
	Determina o quanto de transações o cliente realizou e o quanto avançou no uso do sistema
	INSERT TIPOSITUACAO
	
	Consulta Valores e Tipos de Serviços
	Atrela valor aos tipos de serviços gerados as contas
	
	SELECT* FROM CONTASPA
WHERE VALORAPAGAR IS NOT NULL
AND COD.TIPOSERV = 
	
	Consulta Tipos de Pagamentos e ContasaPagar
	Realiza contas a pagar pelo determinado tipo de pagamento
	Débitos 
Créditos
CriptoMoedas
	SELECT*FROM CONTASPA
WHERE TIPOPAG
	
	Relatório de Clientes Gerados por Data
	Permite Criação de Relatórios Personalizados
	GROUP BY CLIENTES
	SELECT* FROM CLIENTES 
	
	Relatório de ContasaPagar pela Data de Vencimento
	DATAVENC
	AGRUPAR POR CODIGO DO CLIENTE
	AGRUPAR PELA DATA DE VENCIMENTO
	SELECT*FROM CONTASPA
WHERE CLIENTE = 
AND DATAVENC:= dateini (between) DATAVENC:=datefin
10. Considerações finais
Ao realizarmos o projeto iniciamos com a concepção da ideia e cronograma de administração do tempo para executá-lo.
Tivemos dificuldades pela complexidade de criação do projeto já que o tema é novo e não possui muita literatura para ser pesquisada.
Entretanto com muito esforço conseguimos driblar as dificuldades inerentes a todo desenvolvimento de projeto.
Trabalhamos no sentido de que o andamento do projetotivesse viabilidade e sucesso para sua conclusão e essa meta foi atingida com muito afinco.
Nosso objetivo geral foi fazer o levantamento e análise de um sistema para gerenciar e administrar as operações dos clientes que usam o blockchain nos mais diversos mercados desde operações financeiras (usando criptoativos) até contratos inteligentes (smart contracts) com aderência a lei geral de processamento de dados (LGPD).
Para atingir o objetivo geral identificamos os casos de uso e elaboramos seu modelo. fizemos uma descrição direta de todo seu comportamento e usabilidade do sistema, além de apresentarmos as regras de negócio do cliente.
Desenvolvemos um sistema interno de gerenciamento das operações realizadas na empresa pelos seus clientes com relatórios executivos para tomada de decisões.
Como o projeto seguiu as determinações contidas na LGPD conseguiu atingir o objetivo de proporcionar aos clientes da empresa o total controle de seus investimentos com proteção dos dados armazenados.
Com isso os clientes tem à disposição ferramental para análise dos investimentos ao longo do tempo, o que vai direcionar o modo como farão transações futuras.
Através dessa tecnologia os clientes serão beneficiados com inclusão social e proteção da informação.
Outra grande vantagem dessa tecnologia é que como blockchain registra publicamente as transações em um único livro-razão, a atividade econômica pode ser coordenada com mais facilidade, aumentando o grau de eficiência dos mercados, inclusive em nível global.
Uma dificuldade a ser superada por essa nova tecnologia é que será necessário muito suporte técnico e assessoria profissional especializada para que os chamados contratos inteligentes se adaptem às necessidades das empresas e mercados.
É esperado que os contratos inteligentes se tornem uma ferramenta útil para acelerar os negócios, reduzir os conflitos e a necessidade de procedimentos legais tradicionais, conferindo agilidade e segurança para empresas e clientes.
Como a experiência ensina em qualquer área inovadora há a necessidade de pioneiros que superem os obstáculos iniciais.
Por todo o exposto, vislumbra-se que numa visão futurística essa tecnologia irá liderar todas as transações financeiras.
Glossário
Banco de Dados: São coleções de informações que se relacionam de forma que crie um sentido e dar mais eficiência durante uma pesquisa ou estudo cientifico.
Blockchain: A tecnologia Blockchain nada mais é do que um livro de razão pública (ou livro contábil) que faz o registro de uma transação de moeda virtual (a mais popular delas é o Bitcoin), de forma que esse registro seja confiável e imutável.
C#: (C-Sharp) é uma linguagem de programação orientada a objetos desenvolvida pela Microsoft, e está entre as mais utilizadas no mundo. Possui uma sintaxe bem parecida com outras linguagens populares como C, C++, Java e Object Pascal.
Casos de Uso: Representa uma possível utilização do sistema por um ator, que pode ser uma pessoa, dispositivo físico, mecanismo ou subsistema que interage com o sistema alvo, utilizando algum de seus serviços. 
Conceito de UI design: UI Design, ou User Interface Design (Design de Interface do Usuário), é o meio pela qual uma pessoa interage e controla um dispositivo, software ou aplicativo.
Conceito de UX design: UX vem de User Experience, ou Experiência do Usuário. Se trata, basicamente, de como uma pessoa se sente enquanto usa qualquer produto ou serviço digital que a sua empresa oferece.
Criptomoedas: A criptomoeda é um código virtual que pode ser convertido em valores reais. Geralmente, é necessário comprar do emissor ou de alguém que já tenha a moeda.
Diagramas de Classes: Diagramas de classes estão entre os tipos mais úteis de diagramas UML pois mapeiam de forma clara a estrutura de um determinado sistema ao modelar suas classes, seus atributos, operações e relações entre objetos.
Entrega e implantação do software: É a entrega d software pronto bem como a integração do sistema dentro da empresa através de execuções web e/ou mobile.
Hash: A função Hash (Resumo) é qualquer algoritmo que mapeie dados grandes e de tamanho variável para pequenos dados de tamanho fixo. Por esse motivo, as funções Hash são conhecidas por resumirem o dado. A principal aplicação dessas funções é a comparação de dados grandes ou secretos.
Matriz de rastreabilidade: Seu principal objetivo é documentar e definir as funcionalidades e funções dos requisitos e projetos, de forma a atender às expectativas dos interessados.
Microsoft Azure: É um conjunto cada vez maior de serviços de nuvem para ajudar sua organização a enfrentar seus desafios de negócios. É a liberdade de criar, gerenciar e implantar aplicativos em uma enorme rede global usando suas ferramentas e estruturas favoritas.
Requisitos funcionais: Onde há a materialização de uma necessidade ou solicitação realizada por um software. Porém, vários Requisitos Funcionais podem ser realizados dentro de uma mesma funcionalidade.
Requisito não funcional: Os não funcionais estão ligados ao limite de uso e as propriedades da aplicação e são muito importantes no projeto de desenvolvimento de um software.
Software: O software é todo programa rodado em um computador, celular ou dispositivo que permita ao mesmo executar suas funções. Eles vão desde sistemas operacionais, como Windows, MacOS, iOS e Android aos apps que se usa t
REFERÊNCIAS
LARMAN, C. Utilizando UML e Padrões – uma introdução a análise e ao projeto orientados a objetos e desenvolvimento iterativo. Bookman, 2011.
SCHACH, S. R. Engenharia de software: os paradigmas clássicos orientado a objetos. São Paulo: Mc Graw Hill, 2009.
GUEDES, Gilleanes. UML Uma Abordagem Prática. Editora Novatec. São Paulo, 2007.
LIMA, Gleydson. Diagrama de Classes. Curso de Especialização em Sistemas Corporativos, FARN/2008.
FURLAN, José. Modelagem de Objetos através da UML. Editora Makron Books.
FOWLER, M. UML Essencial: um breve guia para linguagem padrão. 3 ed. Bookman, 2011.
MEDEIROS, E. S. Desenvolvendo software com UML definitivo 2 .0. São Paulo: Makron Books, 2004.
MENDES, Ricardo. UML: composição x agregação. Disponível em: http://imasters.com.br/artigo/18901/uml/uml_composicaox_agregacao/. Acessado em: 28 mai. 2017
APÊNDICE A – MANUAL DE INSTALAÇÃO
MANUAL DE INSTALAÇÃO
Sumário
1.	Sobre este documento................................................3
2.	Suporte Técnico..........................................................3
3.	Requisitos de Hardware.............................................4
4.	Instalação....................................................................4
1. Sobre este documento
O Objetivo deste manual é orientar o usuário na instalação do Sistema de Gerênciamente Operacional Unipay, apresentando as instruções de forma prática e objetiva.
Todos os direitos autorais são reservados à Code Solutions Ltda. Nenhuma parte deste documento poderá ser reproduzida por quaisquer meios eletrônicos ou mecânicos, para quaisquer fins que não o uso pessoal do comprador, sem permissão por escrita da proprietária. 
2. Suporte técnico
Entre em contato com nosso departamento de suporte para maiores orientações de uso do sistema.
Para facilitar o atendimento, tenha em mãos o código de suporte da empresa.
· Horário de Atendimento:
De Segunda à Sexta das 10:00h às 14:30h.
· Formas de suporte:
E-mail: suporte@codesolutions.net .
Telefone: (13) 3584-7158.
· Treinamento:
Nossa equipe está à disposição para realizar treinamentos sobre o sistema. Estes deverão ser agendados através do e-mail treinamento@codesolutions.net ou pelo telefone (13) 3584-7158.
3. Requisitos de Hardware:
Configuração mínima:
Windows 7 (Home Premium).
Processador de 32 bits (x86) de 1 GHz.
1 GB de RAM. 
16 GB de espaço em disco disponível.
Configuração Recomendada:
Windows 7 (Professional).
Processador de 64 bits (x64) de 3.0GHz.
4 GB de RAM.
60 GB de espaço em disco disponível.
4. Instalação do Software
	Localize o arquivo compactado “Sistema_Unipay.zip”
	
Descompacte o arquivo, gerandoa pasta “Sistema_Unipay”
Dentro da pasta estará o executável do sistema “Unipay Manager.exe”. Basta executa-lo para rodar o sistema.
Caso queira, pode criar um atalho na área de trabalho clicando com o botão direito e seguindo o caminho:
Enviar Para > Área de trabalho (criar atalho)
APÊNDICE B – MANUAL DE TREINAMENTO DO USUARIO
MANUAL DE TREINAMENTO DE USUÁRIO
Sumário
1.	Sobre este documento................................................3
2.	Suporte Técnico..........................................................3
3.	Requisitos de Hardware.............................................4
4.	O programa..................................................................7
4.1 Tela de Login......................................................7
	4.2 Tela de Cadastro.................................................8
	4.3 Tela Principal (Sistema).....................................9
	4.4 Tela de Contatos.................................................10
	4.5 Tela de Clientes..................................................11
	4.6 Tela de Contas....................................................12
	4.7 Tela de Relatórios...............................................13
	4.8 Tela de Configurações.......................................14
1. Sobre este documento
O Objetivo deste manual é orientar o usuário na utilização do Sistema de Gerenciamento Operacional Unipay, apresentando as instruções de forma prática e objetiva, de modo a não gerar nenhuma dúvida sobre o seu funcionamento.
Todos os direitos autorais são reservados à Code Solutions Ltda. Nenhuma parte deste documento poderá ser reproduzida por quaisquer meios eletrônicos ou mecânicos, para quaisquer fins que não o uso pessoal do comprador, sem permissão por escrita da proprietária. 
2. Suporte técnico
Entre em contato com nosso departamento de suporte para maiores orientações de uso do sistema.
Para facilitar o atendimento, tenha em mãos o código de suporte da empresa.
· Horário de Atendimento:
De Segunda à Sexta das 10:00h às 14:30h.
· Formas de suporte:
E-mail: suporte@codesolutions.net.
Telefone: (13) 3584-7158.
· Treinamento:
Nossa equipe está à disposição para realizar treinamentos sobre o sistema. Estes deverão ser agendados através do e-mail treinamento@codesolutions.net ou pelo telefone (13) 3584-7158.
3. Requisitos de Hardware:
Configuração mínima:
Windows 7 (Home Premium).
Processador de 32 bits (x86) de 1 GHz.
1 GB de RAM. 
16 GB de espaço em disco disponível.
Configuração Recomendada:
Windows 7 (Professional).
Processador de 64 bits (x64) de 3.0GHz.
4 GB de RAM.
60 GB de espaço em disco disponível.
4. O programa
O programa consiste no controle de gerenciamento de uma empresa que realiza transações bancárias, assim, podendo consultar clientes, contas, emitir relatórios etc.
4.1 Tela de Login
1. Onde o usuário irá efetuar o Login.
2. Onde o usuário irá digitar sua senha.
3. Caso seja um novo usuário, poderá se cadastrar no botão “Cadastrar”.
4. Após digitar o Login e a senha, irá confirmar para avançar no processo e ser direcionado ao sistema.
5. Caso queira lembrar seu usuário e ser direcionado automaticamente para o sistema, assinale a opção “Lembrar usuário”.
	
4.2 Tela de Cadastro
Na tela de cadastro, caso seja um novo usuário, basta digitar suas informações pessoais e clicar no botão “Salvar” (1) que automaticamente estará cadastro e poderá acessar o sistema.
4.3 Tela Principal (Sistema)
1. Onde a empresa poderá cadastrar novos contatos de clientes, caso haja necessidade.
2. Onde a empresa irá gerenciar os seus clientes, podendo editar informações pessoais e excluí–los.
3. Onde a empresa irá gerenciar as contas de seus clientes, podendo também excluí–las.
4. Onde a empresa poderá emitir relatórios.
5. A empresa poderá alterar as configurações do sistema.
6. Será fixado o código do usuário que está utilizando o sistema.
7. Será fixado o nome do usuário.
8. Será fixado o CPF do usuário ou CNPJ da empresa.
9. O horário em que o usuário acessou o sistema.
10. A data de acesso do usuário no sistema.
11. Botão de “Sair”, onde poderá fechar o sistema por completo.
4.4 Tela de Contatos
1. Onde o usuário poderá cadastrar um novo contato.
2. Onde o usuário poderá excluir o contato.
3. Onde o usuário poderá cancelar a criação de um novo contato e será redirecionado à tela principal.
4. Onde o usuário poderá salvar seu novo contato.
4.5 Tela de Clientes
1. Onde o usuário irá procurar por clientes por seu código.
2. Onde o usuário irá editar informações pessoais de seus clientes.
3. Onde o usuário poderá excluir algum cliente.
4. O usuário poderá voltar à tela principal com o botão “Voltar”.
5. O usuário poderá fechar o sistema por completo com o botão “Sair”.
4.6 Tela de Contas
1. O usuário poderá procurar por contas de seus clientes.
2. O usuário poderá excluir a conta de seus clientes.
3. O usuário poderá voltar à tela principal com o botão “Voltar”.
4. O usuário poderá fechar o sistema por completo com o botão “Sair”.
4.7 Tela de Relatórios
1. O usuário poderá emitir um relatório após dar a descrição do mesmo e suas tags.
2. O usuário poderá voltar à tela principal com o botão “Voltar”.
3. O usuário poderá fechar o sistema por completo com o botão “Sair”.
4.8 Tela de Configurações
1. O usuário tem a opção de alterar a cor do sistema, tendo opções como Claro, Escuro e Azul – Claro.
2. O usuário tem a opção de sincronizar as configurações no dispositivo enquanto estiver conectado, caso esteja conectado no sistema com o mesmo usuário por dispositivos diferentes.
3. O usuário tem a opção de acompanhar alterações feitas no texto.
4. O usuário tem a opção de exibir margem de seleção.
5. O usuário tem a opção de exibir margem do indicador.
6. O usuário poderá voltar à tela principal com o botão “Voltar”.
7. O usuário poderá fechar o sistema por completo com o botão “Sair”.
APÊNDICE C - Script Banco de Dados
/****** Object: Database [SQLPIM] Script Date: 07/06/2020 14:30:39 ******/
CREATE DATABASE [SQLPIM] (EDITION = 'Basic', SERVICE_OBJECTIVE = 'Basic', MAXSIZE = 2 GB) WITH CATALOG_COLLATION = SQL_Latin1_General_CP1_CI_AS;
GO
ALTER DATABASE [SQLPIM] SET COMPATIBILITY_LEVEL = 150
GO
ALTER DATABASE [SQLPIM] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [SQLPIM] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [SQLPIM] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [SQLPIM] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [SQLPIM] SET ARITHABORT OFF 
GO
ALTER DATABASE [SQLPIM] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [SQLPIM] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [SQLPIM] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [SQLPIM] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [SQLPIM] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [SQLPIM] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [SQLPIM] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [SQLPIM] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [SQLPIM] SET ALLOW_SNAPSHOT_ISOLATION ON 
GO
ALTER DATABASE [SQLPIM] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [SQLPIM] SET READ_COMMITTED_SNAPSHOT ON 
GO
ALTER DATABASE [SQLPIM] SET MULTI_USER 
GO
ALTER DATABASE [SQLPIM] SET ENCRYPTION ON
GO
ALTER DATABASE [SQLPIM] SET QUERY_STORE = ON
GO
ALTER DATABASE [SQLPIM] SET QUERY_STORE (OPERATION_MODE = READ_WRITE, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 7), DATA_FLUSH_INTERVAL_SECONDS = 900, INTERVAL_LENGTH_MINUTES = 60, MAX_STORAGE_SIZE_MB = 10, QUERY_CAPTURE_MODE = AUTO, SIZE_BASED_CLEANUP_MODE = AUTO, MAX_PLANS_PER_QUERY = 200, WAIT_STATS_CAPTURE_MODE = ON)
GO
/****** Object: UserDefinedFunction [dbo].[fn_diagramobjects] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE FUNCTION [dbo].[fn_diagramobjects]() 
	RETURNS int
	WITH EXECUTE AS N'dbo'
	AS
	BEGIN
		declare @id_upgraddiagrams		int
		declare @id_sysdiagrams			int
		declare @id_helpdiagramsint
		declare @id_helpdiagramdefinition	int
		declare @id_creatediagram	int
		declare @id_renamediagram	int
		declare @id_alterdiagram 	int 
		declare @id_dropdiagram		int
		declare @InstalledObjects	int
		select @InstalledObjects = 0
		select 	@id_upgraddiagrams = object_id(N'dbo.sp_upgraddiagrams'),
			@id_sysdiagrams = object_id(N'dbo.sysdiagrams'),
			@id_helpdiagrams = object_id(N'dbo.sp_helpdiagrams'),
			@id_helpdiagramdefinition = object_id(N'dbo.sp_helpdiagramdefinition'),
			@id_creatediagram = object_id(N'dbo.sp_creatediagram'),
			@id_renamediagram = object_id(N'dbo.sp_renamediagram'),
			@id_alterdiagram = object_id(N'dbo.sp_alterdiagram'), 
			@id_dropdiagram = object_id(N'dbo.sp_dropdiagram')
		if @id_upgraddiagrams is not null
			select @InstalledObjects = @InstalledObjects + 1
		if @id_sysdiagrams is not null
			select @InstalledObjects = @InstalledObjects + 2
		if @id_helpdiagrams is not null
			select @InstalledObjects = @InstalledObjects + 4
		if @id_helpdiagramdefinition is not null
			select @InstalledObjects = @InstalledObjects + 8
		if @id_creatediagram is not null
			select @InstalledObjects = @InstalledObjects + 16
		if @id_renamediagram is not null
			select @InstalledObjects = @InstalledObjects + 32
		if @id_alterdiagram is not null
			select @InstalledObjects = @InstalledObjects + 64
		if @id_dropdiagram is not null
			select @InstalledObjects = @InstalledObjects + 128
		
		return @InstalledObjects 
	END
	
GO
/****** Object: Table [dbo].[CLIENTES] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CLIENTES](
	[ID_CLIFOR] [int] IDENTITY(1,1) NOT NULL,
	[RAZAOSOCIAL] [varchar](50) NOT NULL,
	[FANTASIA] [varchar](50) NOT NULL,
	[CPFCNPJ] [varchar](10) NOT NULL,
	[ENDERECO] [varchar](50) NOT NULL,
	[TELEFONE] [int] NOT NULL,
	[EMAIL] [varchar](20) NULL,
	[COD_PLANOCONTAS] [varchar](30) NULL,
	[COD_TIPOSERV] [varchar](30) NULL,
	[COD_SITCLIENTE] [varchar](30) NOT NULL,
	[SENHA] [varchar](20) NOT NULL,
 CONSTRAINT [PK_CLIENTES] PRIMARY KEY CLUSTERED 
(
	[ID_CLIFOR] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[CONTAPAGAR] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CONTAPAGAR](
	[ID_CONTASPA] [int] IDENTITY(1,1) NOT NULL,
	[COD_TIPOSERV] [varchar](30) NOT NULL,
	[COD_CLIFOR] [varchar](30) NOT NULL,
	[COD_PLANOCONTAS] [varchar](30) NOT NULL,
	[COD_TIPOPAG] [varchar](30) NOT NULL,
	[VALORUNIT] [int] NOT NULL,
	[VALORAPAGAR] [int] NOT NULL,
	[DT_EMISSAO] [date] NOT NULL,
	[DT_VENC] [date] NOT NULL,
 CONSTRAINT [PK_CONTAPAGAR] PRIMARY KEY CLUSTERED 
(
	[ID_CONTASPA] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[DEPARTAMENTOS] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DEPARTAMENTOS](
	[ID_DEPT] [int] IDENTITY(1,1) NOT NULL,
	[DESCRICAO] [varchar](50) NOT NULL,
 CONSTRAINT [PK_DEPARTAMENTOS] PRIMARY KEY CLUSTERED 
(
	[ID_DEPT] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[FUNCIONARIOS] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[FUNCIONARIOS](
	[ID_FUNC] [int] IDENTITY(1,1) NOT NULL,
	[NOME] [varchar](50) NOT NULL,
	[SOBRENOME] [varchar](50) NOT NULL,
	[IDADE] [varchar](10) NOT NULL,
	[SEXO] [varchar](50) NOT NULL,
	[ENDERECO] [varchar](50) NOT NULL,
	[TELEFONE] [varchar](10) NOT NULL,
	[COD_DEPARTAMENTO] [varchar](30) NULL,
	[SENHA] [varchar](20) NOT NULL,
 CONSTRAINT [PK_FUNCIONARIOS] PRIMARY KEY CLUSTERED 
(
	[ID_FUNC] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[PLANOCONTAS] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PLANOCONTAS](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[DESCRICAO] [varchar](50) NOT NULL,
 CONSTRAINT [PK_PLANOCONTAS] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[SERV_CRIPT] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SERV_CRIPT](
	[ID_SERVICO] [int] IDENTITY(1,1) NOT NULL,
	[DESCRICAO] [varchar](50) NOT NULL,
 CONSTRAINT [PK_SERV_CRIPT] PRIMARY KEY CLUSTERED 
(
	[ID_SERVICO] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TIPOSITUACAO] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TIPOSITUACAO](
	[ID_TIPOSITUACAO] [int] IDENTITY(1,1) NOT NULL,
	[DESCRICAO] [varchar](50) NOT NULL,
 CONSTRAINT [PK_TIPOSITUACAO] PRIMARY KEY CLUSTERED 
(
	[ID_TIPOSITUACAO] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TIPOSPAGAMENTOS] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TIPOSPAGAMENTOS](
	[ID_TIPOSPGTOS] [int] IDENTITY(1,1) NOT NULL,
	[DESCRICAO] [varchar](50) NOT NULL,
 CONSTRAINT [PK_TIPOSPAGAMENTOS] PRIMARY KEY CLUSTERED 
(
	[ID_TIPOSPGTOS] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: StoredProcedure [dbo].[sp_alterdiagram] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_alterdiagram]
	(
		@diagramname 	sysname,
		@owner_id	int	= null,
		@version 	int,
		@definition 	varbinary(max)
	)
	WITH EXECUTE AS 'dbo'
	AS
	BEGIN
		set nocount on
	
		declare @theId 			int
		declare @retval 		int
		declare @IsDbo 			int
		
		declare @UIDFound 		int
		declare @DiagId			int
		declare @ShouldChangeUID	int
	
		if(@diagramname is null)
		begin
			RAISERROR ('Invalid ARG', 16, 1)
			return -1
		end
	
		execute as caller;
		select @theId = DATABASE_PRINCIPAL_ID();	 
		select @IsDbo = IS_MEMBER(N'db_owner'); 
		if(@owner_id is null)
			select @owner_id = @theId;
		revert;
	
		select @ShouldChangeUID = 0
		select @DiagId = diagram_id, @UIDFound = principal_id from dbo.sysdiagrams where principal_id = @owner_id and name = @diagramname 
		
		if(@DiagId IS NULL or (@IsDbo = 0 and @theId <> @UIDFound))
		begin
			RAISERROR ('Diagram does not exist or you do not have permission.', 16, 1);
			return -3
		end
	
		if(@IsDbo <> 0)
		begin
			if(@UIDFound is null or USER_NAME(@UIDFound) is null) -- invalid principal_id
			begin
				select @ShouldChangeUID = 1 ;
			end
		end
		-- update dds data			
		update dbo.sysdiagrams set definition = @definition where diagram_id = @DiagId ;
		-- change owner
		if(@ShouldChangeUID = 1)
			update dbo.sysdiagrams set principal_id = @theId where diagram_id = @DiagId ;
		-- update dds version
		if(@version is not null)
			update dbo.sysdiagrams set version = @version where diagram_id = @DiagId ;
		return 0
	END
	
GO
/****** Object: StoredProcedure [dbo].[sp_creatediagram] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_creatediagram]
	(
		@diagramname 	sysname,
		@owner_id		int	= null, 	
		@version 		int,
		@definition 	varbinary(max)
	)
	WITH EXECUTE AS 'dbo'
	AS
	BEGIN
		set nocount on
	
		declare @theId int
		declare @retval int
		declare @IsDbo	int
		declare @userName sysname
		if(@version is null or @diagramname is null)
		begin
			RAISERROR (N'E_INVALIDARG', 16, 1);
			return -1
		end
	
		execute as caller;
		select @theId = DATABASE_PRINCIPAL_ID(); 
		select @IsDbo = IS_MEMBER(N'db_owner');
		revert; 
		
		if @owner_id is null
		begin
			select @owner_id = @theId;
		end
		else
		begin
			if @theId <> @owner_id
			begin
				if @IsDbo = 0begin
					RAISERROR (N'E_INVALIDARG', 16, 1);
					return -1
				end
				select @theId = @owner_id
			end
		end
		-- next 2 line only for test, will be removed after define name unique
		if EXISTS(select diagram_id from dbo.sysdiagrams where principal_id = @theId and name = @diagramname)
		begin
			RAISERROR ('The name is already used.', 16, 1);
			return -2
		end
	
		insert into dbo.sysdiagrams(name, principal_id , version, definition)
				VALUES(@diagramname, @theId, @version, @definition) ;
		
		select @retval = @@IDENTITY 
		return @retval
	END
	
GO
/****** Object: StoredProcedure [dbo].[sp_dropdiagram] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_dropdiagram]
	(
		@diagramname 	sysname,
		@owner_id	int	= null
	)
	WITH EXECUTE AS 'dbo'
	AS
	BEGIN
		set nocount on
		declare @theId 			int
		declare @IsDbo 			int
		
		declare @UIDFound 		int
		declare @DiagId			int
	
		if(@diagramname is null)
		begin
			RAISERROR ('Invalid value', 16, 1);
			return -1
		end
	
		EXECUTE AS CALLER;
		select @theId = DATABASE_PRINCIPAL_ID();
		select @IsDbo = IS_MEMBER(N'db_owner'); 
		if(@owner_id is null)
			select @owner_id = @theId;
		REVERT; 
		
		select @DiagId = diagram_id, @UIDFound = principal_id from dbo.sysdiagrams where principal_id = @owner_id and name = @diagramname 
		if(@DiagId IS NULL or (@IsDbo = 0 and @UIDFound <> @theId))
		begin
			RAISERROR ('Diagram does not exist or you do not have permission.', 16, 1)
			return -3
		end
	
		delete from dbo.sysdiagrams where diagram_id = @DiagId;
	
		return 0;
	END
	
GO
/****** Object: StoredProcedure [dbo].[sp_helpdiagramdefinition] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_helpdiagramdefinition]
	(
		@diagramname 	sysname,
		@owner_id	int	= null 		
	)
	WITH EXECUTE AS N'dbo'
	AS
	BEGIN
		set nocount on
		declare @theId 		int
		declare @IsDbo 		int
		declare @DiagId		int
		declare @UIDFound	int
	
		if(@diagramname is null)
		begin
			RAISERROR (N'E_INVALIDARG', 16, 1);
			return -1
		end
	
		execute as caller;
		select @theId = DATABASE_PRINCIPAL_ID();
		select @IsDbo = IS_MEMBER(N'db_owner');
		if(@owner_id is null)
			select @owner_id = @theId;
		revert; 
	
		select @DiagId = diagram_id, @UIDFound = principal_id from dbo.sysdiagrams where principal_id = @owner_id and name = @diagramname;
		if(@DiagId IS NULL or (@IsDbo = 0 and @UIDFound <> @theId ))
		begin
			RAISERROR ('Diagram does not exist or you do not have permission.', 16, 1);
			return -3
		end
		select version, definition FROM dbo.sysdiagrams where diagram_id = @DiagId ; 
		return 0
	END
	
GO
/****** Object: StoredProcedure [dbo].[sp_helpdiagrams] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_helpdiagrams]
	(
		@diagramname sysname = NULL,
		@owner_id int = NULL
	)
	WITH EXECUTE AS N'dbo'
	AS
	BEGIN
		DECLARE @user sysname
		DECLARE @dboLogin bit
		EXECUTE AS CALLER;
			SET @user = USER_NAME();
			SET @dboLogin = CONVERT(bit,IS_MEMBER('db_owner'));
		REVERT;
		SELECT
			[Database] = DB_NAME(),
			[Name] = name,
			[ID] = diagram_id,
			[Owner] = USER_NAME(principal_id),
			[OwnerID] = principal_id
		FROM
			sysdiagrams
		WHERE
			(@dboLogin = 1 OR USER_NAME(principal_id) = @user) AND
			(@diagramname IS NULL OR name = @diagramname) AND
			(@owner_id IS NULL OR principal_id = @owner_id)
		ORDER BY
			4, 5, 1
	END
	
GO
/****** Object: StoredProcedure [dbo].[sp_renamediagram] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_renamediagram]
	(
		@diagramname 		sysname,
		@owner_id		int	= null,
		@new_diagramname	sysname
	
	)
	WITH EXECUTE AS 'dbo'
	AS
	BEGIN
		set nocount on
		declare @theId 			int
		declare @IsDbo 			int
		
		declare @UIDFound 		int
		declare @DiagId			int
		declare @DiagIdTarg		int
		declare @u_name			sysname
		if((@diagramname is null) or (@new_diagramname is null))
		begin
			RAISERROR ('Invalid value', 16, 1);
			return -1
		end
	
		EXECUTE AS CALLER;
		select @theId = DATABASE_PRINCIPAL_ID();
		select @IsDbo = IS_MEMBER(N'db_owner'); 
		if(@owner_id is null)
			select @owner_id = @theId;
		REVERT;
	
		select @u_name = USER_NAME(@owner_id)
	
		select @DiagId = diagram_id, @UIDFound = principal_id from dbo.sysdiagrams where principal_id = @owner_id and name = @diagramname 
		if(@DiagId IS NULL or (@IsDbo = 0 and @UIDFound <> @theId))
		begin
			RAISERROR ('Diagram does not exist or you do not have permission.', 16, 1)
			return -3
		end
	
		-- if((@u_name is not null) and (@new_diagramname = @diagramname))	-- nothing will change
		--	return 0;
	
		if(@u_name is null)
			select @DiagIdTarg = diagram_id from dbo.sysdiagrams where principal_id = @theId and name = @new_diagramname
		else
			select @DiagIdTarg = diagram_id from dbo.sysdiagrams where principal_id = @owner_id and name = @new_diagramname
	
		if((@DiagIdTarg is not null) and @DiagId <> @DiagIdTarg)
		begin
			RAISERROR ('The name is already used.', 16, 1);
			return -2
		end		
	
		if(@u_name is null)
			update dbo.sysdiagrams set [name] = @new_diagramname, principal_id = @theId where diagram_id = @DiagId
		else
			update dbo.sysdiagrams set [name] = @new_diagramname where diagram_id = @DiagId
		return 0
	END
	
GO
/****** Object: StoredProcedure [dbo].[sp_upgraddiagrams] Script Date: 07/06/2020 14:30:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	CREATE PROCEDURE [dbo].[sp_upgraddiagrams]
	AS
	BEGIN
		IF OBJECT_ID(N'dbo.sysdiagrams') IS NOT NULL
			return 0;
	
		CREATE TABLE dbo.sysdiagrams
		(
			name sysname NOT NULL,
			principal_id int NOT NULL,	-- we may change it to varbinary(85)
			diagram_id int PRIMARY KEY IDENTITY,
			version int,
	
			definition varbinary(max)
			CONSTRAINT UK_principal_name UNIQUE
			(
				principal_id,
				name
			)
		);
		/* Add this if we need to have some form of extended properties for diagrams */
		/*
		IF OBJECT_ID(N'dbo.sysdiagram_properties') IS NULL
		BEGIN
			CREATE TABLE dbo.sysdiagram_properties
			(
				diagram_id int,
				name sysname,
				value varbinary(max) NOT NULL
			)
		END
		*/
		IF OBJECT_ID(N'dbo.dtproperties') IS NOT NULL
		begin
			insert into dbo.sysdiagrams
			(
				[name],
				[principal_id],
				[version],
				[definition]
			)
			select	 
				convert(sysname, dgnm.[uvalue]),
				DATABASE_PRINCIPAL_ID(N'dbo'),			-- will change to the sid of sa
				0,							-- zero for old format, dgdef.[version],
				dgdef.[lvalue]
			from dbo.[dtproperties] dgnm
				inner join dbo.[dtproperties] dggd on dggd.[property] = 'DtgSchemaGUID' and dggd.[objectid] = dgnm.[objectid]	
				inner join dbo.[dtproperties] dgdef on dgdef.[property] = 'DtgSchemaDATA' and dgdef.[objectid] = dgnm.[objectid]
				
			where dgnm.[property] = 'DtgSchemaNAME' and dggd.[uvalue] like N'_EA3E6268-D998-11CE-9454-00AA00A3F36E_' 
			return 2;
		end
		return 1;
	END
	
GO
ALTER DATABASE [SQLPIM] SET READ_WRITE 
GO
2

Outros materiais