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.