20081217

Validação de CPF no C++ Builder

Mio dios!
Como foi dificil fazer isso..
sem mais vou postar o código e escrever o que deve-se fazer com ele...

Bibliotecas







Código direto na classe...
Código da classe


//Verificador de cpf

int valor, fator, dig1, dig2, i;
String num;

if(ECpf->Text.Length()==14 ) {

//Onde "ECpf" é o campo onde a pessoa digita o valor do cpf.
//Obs.: nesse caso o cpf é armazenado com 14 dígitos, pois considera os pontos e o traço.

num = ECpf->Text.SubString(1,3);
num = num + ECpf->Text.SubString(5,3);
num = num + ECpf->Text.SubString(9,3);
num = num + ECpf->Text.SubString(13,2);

/* PRIMEIRO DIGITO VERIFICADOR */

int aux = ((atoi(num.SubString(1,1).c_str())*10) + (atoi(num.SubString(2,1).c_str())*9)+ (atoi(num.SubString(3,1).c_str())*8)+ (atoi(num.SubString(4,1).c_str())*7)+ (atoi(num.SubString(5,1).c_str())*6)+( atoi(num.SubString(6,1).c_str())*5)+ (atoi(num.SubString(7,1).c_str())*4)+ (atoi(num.SubString(8,1).c_str())*3)+ (atoi(num.SubString(9,1).c_str())*2));
valor = aux;
fator = 0;
fator = valor%11;
dig1 = fator< valor =" 0;" aux2 =" ((atoi(num.SubString(1,1).c_str())*11)" valor =" aux2;" fator =" valor%11;" dig2 =" fator" v =" ECpf-">Text.SubString(13,1);
String d = ECpf->Text.SubString(14,1);

int Iv = atoi(v.c_str());
int Id = atoi(d.c_str());

if ((Iv == dig1) && (Id == dig2))
ShowMessage("CPF ok");
else
ShowMessage("CPF inválido");
}


Código em uma classe separada...
Código da Classe

class VerificaCpf
{
public:
int ValidaCpf(String);
String Cpf;
VerificaCpf(void){};
~VerificaCpf(void){};
};

int VerificaCpf::ValidaCpf(String cpf)
{
int valor, fator, dig1, dig2, i;
String num;
String Cpf = cpf;
num = Cpf.SubString(1,3);
num = num + Cpf.SubString(5,3);
num = num + Cpf.SubString(9,3);
num = num + Cpf.SubString(13,2);

/* PRIMEIRO DIGITO VERIFICADOR */

int aux = ((atoi(num.SubString(1,1).c_str())*10) + (atoi(num.SubString(2,1).c_str())*9)+ (atoi(num.SubString(3,1).c_str())*8)+ (atoi(num.SubString(4,1).c_str())*7)+ (atoi(num.SubString(5,1).c_str())*6)+( atoi(num.SubString(6,1).c_str())*5)+ (atoi(num.SubString(7,1).c_str())*4)+ (atoi(num.SubString(8,1).c_str())*3)+ (atoi(num.SubString(9,1).c_str())*2));
valor = aux;
fator = 0;
fator = valor%11;
dig1 = fator< 2 ? 0 : 11-fator;

/* SEGUNDO DIGITO VERIFICADOR */

valor = 0;
int aux2 = ((atoi(num.SubString(1,1).c_str())*11) + (atoi(num.SubString(2,1).c_str())*10)+ (atoi(num.SubString(3,1).c_str())*9)+ (atoi(num.SubString(4,1).c_str())*8)+ (atoi(num.SubString(5,1).c_str())*7)+( atoi(num.SubString(6,1).c_str())*6)+ (atoi(num.SubString(7,1).c_str())*5)+ (atoi(num.SubString(8,1).c_str())*4)+ (atoi(num.SubString(9,1).c_str())*3)+ (atoi(num.SubString(10,1).c_str())*2));
valor = aux2;
fator = valor%11;
dig2 = fator < 2 ? 0 : 11-fator;

String v = Cpf.SubString(13,1);
String d = Cpf.SubString(14,1);

int Iv = atoi(v.c_str());
int Id = atoi(d.c_str());

if ((Iv == dig1) && (Id == dig2))
return 1;
else
return 0;

}



e será salva em ".h"


20081118

Novidades Google

Bom dia amiguinhos...

Tá.. não é uma parada tão novidade assim , mas descobri isto hoje e achei tão massa que resolvi postar algo a respeito pras pessoas que ainda leem este blog tão desatualizado...

É o tal do livro no Google. Funciona mais ou menos assim:
Tem aquela paradinha de pesquisa do google padrão, só que ele pesquisa livros, apenas livros.
O melhor de tudo é que o livro encontrado você poderá armazenar na sua propria biblioteca, claro que na conta do gmail né...
Após você ter selecionado o livro ele abrirá uma página com ele e no canto direito você vai ver o botãozinho lá armazenar na sua biblioteca...

Algumas empresas fizeram uma parceria, ou algo assim, pelo que entendi, e publica partes dos livros lá, claro que não estarão livros na integra pq eles tem o direito autoral pra fazer as pessoas comprarem os livros, afinal. Mas boa parte está lá. É algo que vale a pena dar uma olhada.

Isso existe a uma porrada de tempo porque me lembro ter visto já isso antes, mas nunca tive a curiosidade de entrar...

Ahhh sim, pra abri basta vc ir lá no canto superior, clicar no "mais funcionalidades" e lá em baixo no canto esquerdo vai ter um icone com alguns livros empilhados escrito "Pesquisa de Livros"...

link : Pesquisa de Livro

Espero ter ajudado em algo....

20081020

Diagrama de Módulos Parte II

Então galerinha....

Finalmente encontrei como se faz um Diagrama de Módulo, ou Diagrama de Estrutura de Software (DES).

De maneira bem prática e resumida nos fazemos esse diagrama com base nos DFD's...
Pasos para se construir um DES

  1. Fazer o DFD
  2. Encontrar o centro de transformação ( é a parte do DFD que contém o maior fluxo de informações , ou o fluxo de informações mais relevante para o sistema).
  3. Produzir um esboço do DES. Isso exige a definição de um módulo chefe. Para isso temos que eleger o processo que realiza pouco processamento, mas que executa um grande número de atividades dedicadas a coordenar o trabalho em outros processos. Geralmente ele se encontra no centro do DFD
  4. Revisar o DES tomando-se as seguintes providências:
  • adicionar módulos de leitura e gravação para acessar fontes, destinos e arquivos;
  • efetuar segmentação e reorganizar os módulos aferentes e eferentes (depois eu explico isso);
  • efetuar a segmentação da transformação central (caso precise), usando os diferentes níveis de DFD's;
  • adicionar os módulos de manipulação de erros;
  • adicionar os detalhes de iniciação e finalização;
  • verificar os nomes dos módulos cuidando para que eles sejam adequados para a sua posição na hierarquia;
  • verificar todos os critérios de qualidade do projeto.
5. Assegurar a funcionalidade do projeto. Para isso podemos fazer um diagrama de transformação entre o DFD para o DES. Esse diagrama irá apenas passar as informações do DFD para o formato de DES, mais tarde eu postarei uma imagem, estou sem agora.

Existem 4 tipos de módulos: aferente , eferente , transformador e coordenador

Aferente: enviam informação de baixo para cima (para o módulo chamador ou chefe).
Eferente: enviam informação de cima para baixo (para os módulos chamados ou subordinados).
Transformador: recebem informação de seu superior, transformam a informação e envia-a de volta.

Coordenador: organizam a comunicação de seus subordinados passando os dados de uma para outro.
Diagrama de transformação tem mais ou menos essa estrutura:

20081016

Dicionário de Dados

Aew galerinha!
Amanhã tem prova do Mário...
Dais as atualizações fluem que é uma beleza neh, tipoh.. algumas horas antes mas da nda

Agora vamos falar de dicionário de dados, em inglês data dictionary, que é uma coleção de metadados que contém definições e representações de elementos de dados. (Wikipédia)
Servem pra documentar o DFD.

Dentro da visão de documentação do sistema, o dicionário de dados deve ser capaz de descrever os seguintes elementos do DFD:
  • Elementos de dados;
  • Estruturas de dados;
  • Entidades externas;
  • Fluxos de dados;
  • Depósitos de dados;
  • Processos.
Elementos de dados - são os dados que não precisam de uma maior decomposição. Ex.: dia;
Estruturas de dados - são compostas de elementos de dados ou de outras estruturas. Ex.: Dada = "dia + mês + ano". Pedido = Dada + n° Pedido + etc...
Deve conter: descrição, estruturas (se tiver) e elementos de dados
Entidades externas - pequena descrição
Fluxos de dados - deve conter: referência (origem e destino), descrição, estruturas de dados incluidas
Depósito de dados - deve conter: fluxos que entram e saem, conteúdo e descrição
Processos - deve conter: descrição, entrada, saída e resumo lógico.

Notação - Significado

= é composto de
() opcional
{} iteração
[] escolha em uma das alternativas
** comentário
@ identificador (chave) em um depósito
/ separa opções alternativas de construção []

Conclusão (Fajuta)

Um dicionário de dados contém as características lógicas dos dados que serão utilizados no sistema que estamos programando, incluindo nome, descrição, alias, conteúdo e organização.

Estes dicionários se desenvolvem durante a análise de fluxo de dados e ajuda aos analistas que participam na determinação dos requerimentos do sistema, seu conteúdo também se emprega durante o desenho do projeto.

Diagrama de Fluxo de Dados

OIE, nesta linda tarde de chuva, ao dado da janela, acho que to me molhando.. enfim

Vim pra explicar um pouco sobre DFD`s, que eh uma ferramenta para modelagem de sistemas. Tipoh, ela fornece uma visao estruturada do sistema, que permite visualizar quem fornece as informações pro sistema, os processos que essa informação vai passa e pra onde vai, com quem liga.. essas coisas...

(Logo se vê que uma parada eh complexa qndo começo a ver que já é a quarta vez que começo um post de DFD e ele vai para nos rascunhos, mas acho que dessa vez sai)

Definição simples (valeu Bia!) : representa um fluxo de dados , em sequência , dentro de uma organização.

É composto de :
  • Entidade externa - origem ou destino dos dados;
  • Deposito de dados - armazenamento dos dados (não necessáriamente um pc com banco de dados);
  • Fluxo de dados - passagem;
  • Processos - transformação.

Entidade externa - origem ou destino, não necessáriamente interagem com o sistema. Está fora dos limites do sistema. Ex.: clientes, empregados, contribuintes, fornecedores.
Depósito de dados - onde são armazenados as estruturas de dados.
Fluxo de dados - "estruturas de dados (metadados) a serem processadas". (prof° Mário)
"Pode se considerado um tubo por onde passam os pacotes de dados " (Chris Gane)
Processos - representa uma ação efetuada durante um determinado fluxo.

Notação


Vantagens:
  • Especificação que possui algum formalismo, tal como proposto nos princípios da Engenharia de Software;
  • Permite registrar as necessidades e preferências do usuário;
  • Permite uma visão gráfica do problema, evitando ambiguidades, redundâncias e omissões próprioas de uma especificação narrativa;
  • Esse instrumento de análise serve para a documentação do sistema;
  • Facilita o controle do projeto.



Ferramentas para Demonstração Lógica

Bom dia xD

Agora iremos conversar sobre algumas ferramentas para demonstração lógica....

PORTUGUÊS ESTRUTURADO

É um processo lógico que pode ser tanto executado por uma pessoa quanto pelo pc.

De maneira mais abrangente podemos dizer que é a tradução literal da linguagem de programação.
É bem semelhante da do Tarzan também xD mas voltada pra informática.
Exemplo escovando os dentes

Início

Variaveis
cremeDental
escovaDental
Dentes
Limpo
Boca

Pegue escovaDental;
Pegue cremeDental
Insira cremeDental na escovaDental;
Pegue escovaDental;
Enquanto (Dentes!= Limpo)
inicio
Esfregue escovaDental nos Dentes;
fim
Enchague Boca;
Fim

Exemplo da calculadora

01 | algoritmo calculadora
02 | variaveis
03 | num1: inteiro
04 | num2, operacao: inteiro
05 | resultado: real
06 | inicio
07 | escrever ( 'Digite o primeiro numero: ' )
08 | ler ( num1 )
09 | escrever ( 'Digite o segundo numero: ' )
10 | ler ( num2 )
11 | escrever ( 'Digite 1 para soma ou 2 para subtracao' )
12 | ler ( operacao )
13 | se operacao = 1
14 | entao resultado <- num1 + num2
15 | senao se operacao = 2
16 | entao resultado <- num1 - num2 17 | senao
18 | inicio
19 | escrever ( 'Voce escolheu uma operacao invalida.' )
20 | sair_do_programa ( verdadeiro )
21 | fim
22 | escrever ( 'O resultado da conta eh: ', resultado )
23 | fim


Sua "Estrutura " é composta de:
  • Instruções sequenciais (" faça 1, faça 2 ")
  • Instruções de decisão( SE isso ENTÃO faça1 SENÃO (não isso) LOGO faça2), pode existir vários tipos de possibilidade de uma condição que nunca ocorre em combinação (CASO) - muito utilizado em menus (CASO1 faça1 CASO2 faça2)
  • Instruções de repetição - loops (ENQUANTO isso faça1 )
Escrita sugerida:
Letras maiúsculas e deslocamento vertical (semelhante a padronização da programação)

ÁRVORE DE DECISÃO

"Um 'diagrama' de 'se-entã0-senão-logo'" (Bia)

Consiste de uma hierarquia de nós internos e externos que são conectados por ramos. O nó interno, também conhecido como nó decisório ou nó intermediário, é a unidade de tomada de decisão que avalia através de teste lógico qual será o próximo nó descendente ou filho. Em contraste, um nó externo (não tem nó descendente), também conhecido como folha ou nó
terminal, está associado a um rótulo ou a um valor.
Em geral, o procedimento de uma árvore de decisão é o seguinte:
apresenta-se um conjunto de dados ao nó inicial (ou nó raiz que também é um nó
interno) da árvore;
dependendo do resultado do teste lógico usado pelo nó, a árvore ramifica-se para um dos nós filhos e este procedimento é repetido até que um nó terminal é alcançado. A repetição deste procedimento caracteriza a recursividade da árvore de decisão.

Exemplo:


Na árvore de classificação ilustrada na figura anterior as classes formadas são Classe 1, representada pelos nós 3 e 5 , e a Classe 2, representada pelo nó 4.
As regras obtidas após a árvore treinada são:
Regra para Classe 1 Se (x1 > 0.7) ou Se (x1 ≤ 0.7 e x2 > 0.5)
Regra para Classe 2 Se (x1 ≤ 0.7 e x2 ≤ 0.5)

Quando utilizar?
Quando o número de decisões for pequeno e nem toda combinação de decisão for possivel.

TABELA DE DECISÃO

"Fornece uma maneira objetiva de identificar todas as combinações possiveis de condições que podem surgir e de verificá-las sistematicamente para ter certeza de que foram levadas em conta todas as compilações." ( Análise Estruturada de Sistemas, Chris Gane)

Quando utilizar?
Quando o número de ações for grande e ocorram muitas combinações de condições ou quando existem dúvidas de que a árvore de decisão mostra toda a complexidade do problema

Podemos dizer que é uma maneira de expressar, em forma de tabela, qual o conjunto de condições que é necessário ocorrer para que um determinado conjunto de ações deva ser executado. O ponto principal de uma tabela de decisão é a regra de decisão, que define o conjunto de ações a ser tomado, a partir de um conjunto de condições.

Uma tabela de decisão é composta de:

  • uma área de condições, onde são relacionadas as condições que devem ser verificadas para que seja executado um conjunto de ações;
  • uma área de ações, que exibe o conjunto de ações que deve ser executado caso um determinado conjunto de condições ocorra;
  • regras de decisão, representadas pelas colunas, que apresentam a combinação das condições com as ações a serem executadas.


Por fim quero agradecer a Bia pelos resumos xD
Espero ter ajudado ^^

Diagrama de Módulos

Olá caros leitores, hoje iremos conversar sobre Diagrama de Módulos, é não tem muito material disponível na internet.. então o post vai ser bem fraquinho.. mas tentarei explicar mesmo que com poucas palavras

Ele define como as funções e processos relacionam entre si. Faz a representação lógica do sistema e mostra graficamente a hierarquia das funções e procedimetos, e respectivos parâmetros de um determinado módulo.

Na prática ele é bem parecido com a estrutura do WBS (acho que já postei isso antes), só que no Diagrama de Módulos ele vai conter os pacotinhos de implementação, e não o que deve ser feito. Deu pra entender a diferença? Hmm.... seria como se no WBS estivesse o que deve ser feito e no Diagrama de Módulos o que é feito
A estrutura do programa mesmo.

Você começa sempre pelo sistema principal, dai parte pras especificações do sistema (as funcionalidades) até chegar as funções mais especificas, todos os detalhes.
Por exemplo, um sistema de locadora.
Você tem o sitema, dai quando você loga pode entrar na parte de funcionário ou administrador
dai do funcionário tem o pacotinho venda, com os dados da venda mais pacotinho de dados do funcionário, o pacotinho de dados do cliente, o pacotinho de dados das
Dentro do pacotinho do funcionário tem dados do funcionário, nele tem o CPF, o cpf tem o pacotinho de validação do cpf
no pacotinho do cliente tem o pacotinho de dados do cliente
no pacotinho midia tem o pacotinho tipos de midia e os dados da midia
dentro do pacotinho do tipo de midia tem os dados do tipo.

Claro que isso é so uma idéia bem geral das coisas.
Mais tarde termino este post com os desenhos dos padroes e respectivos nomes....
Espero ter ajudado....

20081015

Diagrama de Contexto

O que é?
É o DFD (Diagrama de Fluxo de Dados - vou esplicar melhor mais pra frente) de nivel mais alto, que representa o sistema como unico processo. É uma forma de representar projeto e sua relacao com o ambiente.

Do que eh composto?
É composto por Fluxos de Dados que mostram as interfaces entre o sistema e as entidades externas.

Vou explicar melhor tudo isso...
O Diagrama de Fluxo de Contexto eh uma visao mais "geral " do sistema, onde entram apenas as entidades externas (quem fornece a informacao pro sistema) e os processos ou bolhas(que sao as funcionalidades do sistema).

Muitos autores definem o Diagrama de Contexto como DFD nivel 0.
So que nossa fonte de informacao eh o Chris Gane e o Trish Sarson.... autores do livro Analise Estruturada de Sistemas.. mto bom por sinal...

Exemplo:


Onde esses quadradinhos sao as entidades externas e o do meio ai (nao esta na padronizacao do prof.) eh o processo...

20081005

RAID

Bommmmmm diaaaaaaaaaaaa xD

Eae.. ja exerceu seu ato cidadanico? huhauahuah nossa cidadanico.. da onde tirei isso? Credo.. será que existe isso ?

Mas nao vim discutir normas linguísticas do vocabulário português...
Vim falar sobre RAID.. não o de matar moscas!
O raid sob a visão garantir dados...

Redundant Array of Impendent Disks ou Redundant Array of Inexpensive Drivers, em português Conjunto Redundante de Discos Independentes ou Conjunto Redundante de Discos Econômicos.
É uma técnica utilizada para ganhar segurança e desempenho, aonde são reunidos vários discos com a intenção de transformá-los logicamente em um disco só.

Há duas formas de implementá-lo: por hardware e por software. Por hardware precisamos de algumas controladoras de discos especiais e por software precisamos de alguns módulos implementados ao kernel.

Existem dois conceitos principais: Data Striping (Divisão de dados) e Espelhamento. O primeiro tem como objetivo aumentar o desempenho da máquina, dividindo os dados em vários pedacinhos e cada um deles é armazenado em um HD diferente simultaneamente. O segundo tem como principal objetivo aumentar a confiabilidade do armazenamento de dados, da seguinte forma: tudo que for solicitado para gravação no primeiro disco será gravado no segundo, e caso ocorra algum problema com o primeiro, o segundo imediatamente entrará em ação.

O RAID possui vários níveis, que são as diferentes formas que pode-se combinar os discos num só. São eles: RAID 0 Linear, RAID 0 Striping, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 0+1, RAID 1+0 e RAID 5+0.

  • O RAID 0 Linear é uma maneira de unir os discos em apenas um para que ele fique com mais capacidade.
  • O RAID 0 Striping é semelhante ao RAID 0 Linear, mas os dados são lidos e escritos em paralelo nos discos, aumentando o desempenho.
  • O RAID 1 prove redundância, ou seja, se eu tenho dois discos, tudo o que for gravado no primeiro será gravado no segundo.
  • RAID 4 funciona como dois ou mais discos iguais, onde um deles guarda a paridade das informações dos outros discos. Com isso se algum deles estraga poderá recuperar as informações utilizando-a. No entanto, as combinações dos outros níveis de RAID funcionam de forma mais eficiente e eficaz que este o deixando cair em desuso.
  • RAID 2; semelhante ao RAID 4, no entanto, armazena a informação ECC ( Error Correcting Code) ao invés da paridade.
  • RAID 3 é parecido com o RAID 4, só que ele utiliza menor tamanho de stripe.
  • RAID 5 é o mais complicado entre todos, pois utiliza três ou mais discos. O funcionamento dele consiste em pegar todos os dados e todas as paridades e distribuir entre os discos, se algo acontecer com algum dos discos o raid consegue, através da paridade escrita em todos os discos, regenerar um spare-disk (reconstituição dos dados no disco de reposição).
  • RAID 6; semelhante ao RAID 5, só que utiliza o dobro de bits de paridade, podendo, assim, garantir a integridade dos discos se dois HDs falharem ao mesmo tempo.
Atualmente o mercado utiliza a combinação entre os níveis de RAID para obter um melhor resultado:
  • RAID 0 + 1 (RAID 0 + RAID 1)
  • RAID 1 + 0 ou RAID 10 (RAID 1 + RAID 0)
A diferença entre o RAID01 e o RAID10 é que no RAID01 quando ocorre algum erro ele retorna e fica so RAID0, e é mais caro implementá-lo. E ambos necessitam de ao menos 4 HDs.
  • RAID 50 (RAID 5 + RAID 0).

DBDesigner - 2

Bom dia amiguinhos!

Já votaram?

Então, está é a segunda parte do post...
Achei interessante deixar esse tutorial, pois pode facilitar a vida de mta gente ai...

Vamos aprender a gerar arquivos SQL a partir do DBDesigner...
Pra começar você terá que ter feito aquela primeira parte...
A minha ficou assim..
Agora para gerar o Arquivo SQL vc vai em
File -> Export -> SQL Create Sript


Dai vc configura como na figura abaixo e clica em Save Srcipt to file

Dai é só selecionar a parta e OK...
Você terá os scripts SQL prontinhos, mas se for entregar esses scripts pra Jeroniza, é bom dar uma modificada, porque ele meio que tem uma linguagem propria =P

20081004

DBDesigner

Salve! Salve! Galerinha do mau!

Hoje finalmente consegui descobrir como solucionar um problema que me atasano a semana inteira, pesquisei, pedi ajuda e ninguém entendia meu problema, quando entendia não entendia o que era de fato ou achava que eu estava louca porque não acontece, ou sei lá o que.

De fato, passei horas achando que fosse alguma desconfiguração que tivesse feito ou coisa parecida. Mesmo assim, tudo aquilo me parecia muito curioso.

Agora estou postando isso para nunca mais esquecer, e se alguém vier a ter o mesmo problema, heis a solução.

Eu não sei como funciona, como usar, e mais muitas outras coisas sobre o DBDesigner, o fato é que estava fazendo um trabalho de SGBD e precisava criar o Relacional nele pra facilitar minha vida na hora de fazer as criações SQL, e pq Access ninguém merece...

Para fazer as tais tabelinhas vc vai la na paletinha e clica no desenhinho da tabela...
Dai vai aparecer uma caxinha de texto onde vc irá inserir o nome da tabela e os atributos


Dai pra inserir é bem simples, nos boxizinhos vá preenchendo e tals, ao lado tem o tipo dele (varchar, integer...) Ele já vem com várias bibliotecas do java integradas, dai é so selecionar e tals. Preencher as outras coisas e pra declarar ou não se é chave primária basta clicar n campo onde tem a chave, ou nao ( tao na mesma direção). Após tudo preenchido vá lá em baixo e clique no botaozinho em forma de "V"

Ele irá voltar à versão macro.. E, para construir outra tabela, basta clicar duas vezes no iconezinho lá e seguir o mesmo procedimento...
Agora vamos a parte "chata"

São 3 neh.. então, O primeiro eh a relação um pra n ( 1: n ou 1:m), dai pra utilizá-lo vc deve clicar na tabela que irá se o "um" e depois na tabela "m", ou seja, como no exemplo, 1 professor pode ter apenas uma titulação e uma titulação pode ter muitos professores....
O segundo é a relação um pra um ( 1: 1), exemplo.. Tabela Telefone e Tabela Aluno, Um aluno possui um telefone e um telefone possui um aluno...
E o terceiro é a relação muitos pra muitos ( n: m ou n:n ou m:m), por exemplo um professor dá aula em várias turmas e uma turma tem vários professores, geralmente ( diga-se de passagem todos de um modo geral) quando ocorre uma relação desse tipo é criado outra tabela intermediária...
Os de icones logo abaixo eu ainda hei de saber suas funcionalidades mais específicas...
E quanto essa parte de relacionais outro momento comentarei mais a respeito.

Nota importante: PRA VOCÊ CONSEGUIR EXCLUIR UMA TABELA, RELAÇÃO ... DEVE -SE CLICAR NO QUE QUER EXCLUIR E DEPOIS APERTAR ALT DEL, DAI É SO CONFIRMAR XD
Por hora acho que é apenas isso que tenho a declarar. Obrigada pela atenção, e se conseguiu entender, espero que valha de alguma coisa xD

20081002

DLL - Dynamic-Link Library

Esta é o primeiro de muitos posts sobre DLL

Respire fundo, coragem e vamos lá...

DLL - Dynamic-Link Library(em português Bibliotela de Ligação Dinâmica)

No sistema Win32, os arquivos DLL são organizações em seções.

Os códigos em uma DLL geralmente é compartilhado entre todos os processos que o utilizam, ou seja, cria um único espaço na memória física.

Os comandos uzados na DLL servem para manipular os componentes do banco de dados e para implementar as regras de integridade.

Devemos levar em consideração a ferramenta de compilação que utilizamos, por exemplo no Delphi o cabeçalho do código fonte, a palavra reservada library no lugar de program. No fim do arquivo, as funções a serem exportadas são listadas na cláusula exports. O Delphi não requer que os arquivos LIB importem funções de DLL. Para fazer uma ligação a uma DLL, a palavra reservada external é usada na declaração da função. No Visual Basic (VB), apenas a ligação em tempo de execução é suportada, porém, com o uso das funções LoadLibrary e GetProcAddress, declarações de funções importadas são permitidas. Ao importar funções de DLL através de declarações, o VB irá gerar um erro em tempo de execução se o arquivo DLL não for encontrado. O desenvolvedor pode então tratar o erro apropriadamente. E no Microsoft Visual C++(MSVC) provê várias extensões ao C++ padrão, o que permite que funções sejam importadas ou exportadas diretamente no código. Este modelo foi adotado por outros compiladores C e C++ para Windows, incluindo a versão windows do GCC. Essas extensões usam o atributo __declspec antes de uma declaração de função. Quando nomes externos seguem as convenções de nomes do C, eles também devem ser declarados como extern "C" no código em C++, para prevenir o uso das convenções de nomes do C++. Além da especificação das funções como importadas ou exportadas ao usar os atributos da __declspec, elas podem ser listadas nas seções IMPORT ou EXPORTS do arquivo DEF usado pelo projeto. Este arquivo é processado pelo linker, e não pelo compilador, e portanto não é específico do C++.A compilação de DLL gerará um arquivo DLL e um LIB. O LIB é usado para a ligação de uma DLL em tempo de compilação; ele não é necessário para a ligação em tempo de execução. A não ser que sua DLL seja um COM server, o arquivo DLL deve ser colocado em um dos diretórios listados na variável de ambiente PATH, ou no diretório de sistema padrão, ou no mesmo diretório do aplicativo. As DLL COM servers são registradas usando o regsvr32.exe, que coloca a localização e seu ID global único (GUID) no registro. Os programas podem então usar a DLL se buscarem pelo seu GUID no registro para acharem sua localização.

Este link tem API's bastante úteis xD.


20080925

Revisões de Software X Teste de Software

Olá amiguinhos! Tudo bem?

Bem.. o assunto de hoje é algo meio complicado.. nao por ser assuntos complexos de mais e sim porque a diferença é mesmo bastante dificil de se conceituar.

Bem, ambos são como filtros que servem para descobrir defeitos no software antes de ficarem prontos ou entregues ao cliente e servem, também, para melhorar a qualidade do software.
Mas qual a diferença então?
  • As refisões são mais eficientes, porque procuram os defeitos mais cedo;
  • As revisões são conduzidas durante o processo de desenvolvimento e verifica se o produto de cada fase está de acordo com os seus requisitos;
  • As revisões podem ser feitas em qualquer fase do projeto ( incluindo a fase de teste)
  • As revisões de um software o mesmo nao precisa estar em execussão, e fazer a revisão do código
  • Nos testes precisa-se compilar o programa para verificar a integridade do mesmo.
Em linhas gerais podemos diferenciar ambos dizendo que a revisão pode estar contida em qualquer fase, parte, etapa ,tudo! do projeto, incluindo nos testes.
Teste possui técnicas ( teste de caixa branca, teste de caixa preta) e fases ( teste de unidade, teste de integracao, teste de sistema, teste de aceitacao, teste de regressão)...
Revisões possui tipos (formal e informal) e pode ser aplicada a qualquer fase do ciclo de vida do projeto ( incluindo as fases de teste).

Ambos se bem aplicados podem diminuir o custo de um software xD

Como calcular a Estimativa de Duração de um Projeto

Olá queridos amiguinhos...

Hoje nós vamos conversar sobre isso tudo ai que ta no título =)

Entao, como podemos calcular quanto tempo demorará para terminar um projeto? uma parte dele? todo ele? quanto? an?
Complicado....
Um exemplo prático e simples..
Quanto tempo vc leva exatamente para tomar banho? Exatamente!
Eu por exemplo demoro de 7 minutos, quando é aquele banho rapidinho, a famosa "água no corpo", até meia hora.. uma hora.. , "quando ta calor e nao tenho nda pra fazer xD" , e em média uns 15 minutos, nos dias habituais...
Exatamente, exatamente nos segundos e tals eu nao sei neh.. acho que ninguem nunca saberá também, mas a média é facil...
E como que eu sei que demoro esse tempo..
Ah... eu tenho 20 anos, a pelo menos 13 eu tomo banho sozinha já... isso da uma certa "experiencia em tomar banho" pra saber quanto tempo demoro..
Em projeto de software, e em qualquer projeto, é mais ou menos assim também que funciona...
Baseado na experiência e no histórico que podemos calcular mais ou menos o tempo previsto. Nunca vamos saber exatamente quanto tempo demoraremos pra fazer um software, isso vai depender do grau de dificuldade, experiência nas ferramentas para se construí-lo, experiência nos requisitos que ele deve dar suporte, quanto tempo você terá para aprender e executar as ferramentas, etc, etc, etc... São realmente inúmeros fatores que só a experiência e a prática nos levam a alguma noção mais precisa.
Mas baseado nisso tudo podemos calcular quanto tempo em média provavelmente levaremos para construir algo.
Para issso necessitaremos de três estimativas de tempo:
  1. to -> duração mínima ou tempo otimista;
  2. tm -> duração média;
  3. tp -> duração máxima ou pessimista.
Para calcular o te -> tempo estimado.

O cálculo é bem simples:
Exemplo:

Vamos calcular o exemplo do banho, la de cima...
to - > 7 min
tm -> 15 min
tp -> 60 min

Portanto:


-> te = 21 min

20080924

EAP - Estrutura Analítica de Projeto

Salve! Salve! Pequenos terraquios!
Hoje iremos conversar sobre EAP, em inglês WBS ( Work Breakdown Structure).

CONCEITO

A Estrutura Analítica do Projeto (EAP) é o diagrama com diversos níveis hierárquicos formado pelo conjunto de pacotes de trabalho que compõem um projeto . Sua elaboração facilita o detalhamento do trabalho a ser realizado e o gerenciamento do escopo, do orçamento, da equipe e do cronograma ao longo da elaboração do produto
.

COMO CONSTRUIR UM EAP?

Um projeto de EAP eh constituido de níveis hierárquicos que possuem pacotes, certo? Então alguns passos para ajudar...
  1. O Primeiro nível estará o nome do projeto
  2. No Segundo nível estarão as fases do cliclo de vida do projeto
  3. No nível abaixo dele estarão os pacotes com as tarefas que devem ser feitas, se dentro do pacote houver necessidade de mais detalhamento haverá mais pacotinhos num nível abaixo e assim por diante.
  4. Vale ressaltar que a mente humana é estupidamente limitada e, portanto, se um pacote houver muito detalhamento algumas tarefas provavelmente serão esquecidas, geralmente guardamos de 5 até 7 tarefas.
  5. Se um pacote ou tarefa ou atividade ficar muito vago podendo dar divergencia ao que deve ser feito procure subdividí-la em mais pacotes detalhando as tarefas que devem ser feitas.
  6. Lembre-se que uma coisinha mal interpretada no começo pode gerar uma coisona dificil de arrumar mais pra frente.
Segue o exemplo abaixo do desenvolvimento de um projeto de web site:

Achei um site muito interessante, da onde tirei essa imagem, que mostra direitinho como que funciona esse troço ai...
http://www.avellareduarte.com.br
e esse aqui eh nosso papai dos burros que me ajudou bastante
http://pt.wikipedia.org

20080917

Qualidade de Software

Bom dia amiguinhos!
Apesar de ta meio em cima, nesse post pretendo fazer uma breve pincelada sobre qualidade de software...

Bem, podemos dizer que qualidade de software é a conformidade com os requisitos ( fazer o que foi proposto, resolver o problema pertinentes, etc.. o que foi especificado..), se o cliente gostou ( satisfação do usuário) e ausencia de bugs...

Na qualidade de software temos duas visões : visão de produto e visão de processo.

A visão de produto - é a avaliação de produto de software para verificação de sua qualidade, nele entra a Norma SQuaRe.

A visãode processo - é a avaliação e melhoria dos processos para o ciclo de vida do software, nele entra o CMMI e o MPS.Br.

Norma SQuaRe
Modelo de qualidade de software que estabelece base ára definir um modelo e realizar avaliações do software e uma linguagem comum e válida internacionalmente. Representa a soma de experiências num único assunto.
Problema: definir objetivos que pretendem atingir num projeto.
É dividido em 5 tópicos:
  1. gerenciamento(define termos do documento, faz recomendaçõs e sugestões de carater geral sobre como utilizar a Norma SQuaRe),
  2. modelo de qualidade ( define conceito de qualidade para orientar e avaliação, é um modelo hierarquico),
  3. medição( descreve aspectos realizados a medição e propoe métricas),
  4. requisitos de qualidade ( estabelece objetivos de qualidade de um produto) e
  5. avaliação ( define como fazer avaliação, com medições e resultados confrontados com modelo definido pelo usuário).

Modelo de medição - possui requisitos (usabilidade, portabilidade, manutenabilidade, eficiencia, confiabilidade e funcionalidade) e métricas (diretas e derivadas).

CMMI
É um modelo de referência para o desenvolvimento e manutenção de produtos e serviços.
Foi feitos porque as empresas necessitam de software melhores(mais qualidade) e elaborados mais rapidamente.
Define o que fazer e não como fazer.
Acredita que a qualidade do processo influencia na qualidade final do produto.
Foca na melhoria de processos.
Baseado em áreas de processo (22), que é um conjunto de práticas a serem realizadas para um determinado processo de engenharia de software.Elas são divididas em 4 categorias e duas metas (gerais e específicas).
O CMMI possui, também, duas representações (contínua e por estágio).

Representação contínua - foca na área de processo, define 6 níveis de capacidade ( de 0 até 5), são eles: incompleto, realizado, gerenciado, definido, gerenciado quantitativamente e otimizado. Cada nível deve ser totalmente realizado para poder passar para o próximo.

Representação por estágio - foca no conjunto de áreas de processo, define 5 níveis de maturidade ( de 1 até 5), são eles: inicial, gerenciado, definido, gerenciado quantitativamente e otimizado. Cada nível deve estar completamente realizado para poder passar para o próximo.


MPS.Br
Modelo de referencia que define os níveis de maturidade da empresa de software.
É mais barato que o CMMI.

Foca em micro, pequenas e médias empresas.
Documentações: guia geral, guia de aquisição, guia de avaliação, guia de implementação
Baseia-se nos conceitos de maturidade e capacidade de processo para avaliação e melhoria da qualidade e produtividade de produto de software e serviços correlatos.
Componentes: modelo de referencia, método de avaliação, modelo de negócio.
Níveis de maturidade - patamares de soluçoes de processo. São 6 que vão de A(mais alto) a G(mais baixo)
Capacidade de processo - habilidade do processo em alcançar objetivos para atender atributos de cada nível de maturidade. Quanto maior o nível de maturidade maior o nível de capacidade.

20080915

Cenário

Salve!Salve! Caros leitores,

Esse post irá falar sobre cenários, dentro do mundo da informática é claro.

Ao contrário dos outros posts que foram praticamente baseados na aula esse é praticamente uma cópia do que entendi com um artigo do João Carlos, que está disponível no site do imasters

Podemos dizer que o cenário é uma sequência de passos numerados que descrevem o que o sistema faz e quem irá executar, ou seja, ele mostra os UC ( Use Case) do Diagrama de Classes com seus atores. Exemplo funcionário cadastra produto
O cenário eh constituido necessariamente de cenário principal, que vai descrever o sistema "nos seus dias felizes", com tudo funcionando como teoricamente deveria. Nele estarão inclusos todos os UC por ordem que, teoricamente, deve funcionar o sistema. E cenário alternativo, ou cenário secundário, que vai descrever o que o sistema fará caso aconteça alguma falha ou fluxo alternativo durante o uso do programa. Exemplo Produto já cadastrado no sistema, emitir aviso. O cenário alternativo não precisa aparecer em todos os UC, apenas naqueles que mostrarem necessidade.

Exemplo do site.


Alternativa: FALHA NA AUTORIZAÇÃO

No item 07, o sistema falha na autorização da compra por crédito; Envia notificação para o cliente via e-mail.

Alternativa: FALHA NA AUTENTIFICAÇÃO

No item 03, o sistema recusa usuário e senha; Permite ao cliente submeter as informações por mais 2 vezes; Se ultrapassar limite bloquear conta.

Quando falamos de caso de uso, precisamos entender três conceitos que serão vistos a seguir.