UML 2 Rápido e Prático representa a tradução do livro UML 2 in a Nutshell. O original é bastante útil (em inglês), principalmente por causa dos conceitos resumidos e práticos, de fato. Para quem está se preparando para a certificação UML é ua boa ajuda. Já a versão traduzida tem lá sua utilidade para aqueles que não conseguem estudar com livros no idioma inglês, mas apresenta alguns incovenientes, como veremos a seguir.
Em alguns trechos a leitura do livro traduzido é bem dificil, eu diria até "engarranchada", típica de traduções ao pé da letra. Tem muitas frases que possuem erros grosseiros, como deixar o adjetivo na frente do substantivo, traduzir termos que já são de uso corrente no meio técnico e, portanto não justifica a tradução, etc.
Pra quem consegue entender um pouco de inglês, é sempre melhor a leitura da versão em inglês, pois é rápido e por isso o resumido(Nutshel).
domingo, 16 de março de 2008
Certificação UML 2.0 OMG - SD
INTRODUÇÃO
A UML 2.0 se propõe a capturar mais do que somente relacionamentos estruturais entre os objetos. Ela tem a intenção de mostrar também processos e fluxos de eventos.
Com esse propósito existem uma serie de diagramas, os chamados diagramas de interação, que fundamentalmente exibem a comunicação entre os objetos.
Então os diagramas de interação foca em uma mensagem específica e em como essa mensagem vem a se tornar uma funcionalidade no sistema. Logo, esses diagramas se concentram no “COMO”.
Esse post representa as anotações da leitura dos livros UML 2 In Nutshell e UML Guia do Usuário.
INTERAÇÕES
Há diversas formas de se mostrar uma interação, entretanto os diagramas de seqüência são disparados o principal meio. Futuramente mostraremos aqui outros diagramas de interação. O diagrama de seqüencia foca na comunicação entre as linhas da vida
A figura 1, mostra um diagrama de seqüência padrão.

Figura 1
PARTICIPANTES
O diagrama é composto por um grande retângulo com um pentágono na canto superior esquerdo, tendo dentro a palavra reservada sd, que significa sequence diagram, obviamente, seguida do nome da interação. Authenticate User.
A interação é mostrada utilizando um retângulo, chamado linha da vida (lifeline), tem esse nome porque o objeto, ou a instancia do objeto, uma vez que esses dois termos são até considerados sinônimos nesse momento, existem enquanto a linha tracejada seguir na direção vertical de cima para baixo.
O nome dos elementos no retângulo segue o seguinte padrão de nome:
nome_objeto[ seletor ] : nome_classe ref decomposição
Onde:
nome_objeto
Nome da instância envolvida
Em Java seria algo como:
MinhaClasse nomeInstancia = new MinhaClasse();
Seletor
É opcional e está relacionado a identificação de elementos multivalorados, um array, por exemplo. Assim seletor seria a identificação de uma das instancias em particular.
nome_classe
É identificação da classe propriamente, no exemplo dado anteriormente seria MinhaClasse.
decomposição
É opcional também e quando aparece significa que esse digrama faz referencia a um outro diagrama de seqüência do sistema.
Para finalizar um diagrama pode se usar o símbolo stop, mas ele se tornou deprecated quando se envia uma mensagem com um estereótipo <>, o que não é estritamente necessário. Normalmente o que acontece é colocar um grande X no final de uma linha da vida, como mostra a figura 2.

Figura 2
Os diagramas de sequencia podem inclusive exibir variáveis locais para capturar o cmportamento do sistemas com mais fidelidade. Variáveis locais podem retornar valores, informações de loop, ou somente dados que se precisa para o processamente.
MENSAGENS
A comunicação entre as linhas da vida pode se dar de diversas formas: chamando um métodos, enviando um sinal, criando uma instância, destruindo um objeto, etc. Todas essas ações são chamadas de mensagens, como bem sabemos uma mensagem precisa de um remetente e um receptor para ocorrer.
As mensagens podem ser da seguite forma:
Síncronas
Assíncronas
Retorno
Quando a messagem representa a criação de um objeto então é usada a linha potilhada com a seta aberta na ponta, sim, é uma menssagem assíncrona, afinal quando cria um objeto não espera um retorno dizendo que o objeto foi criado. Caso haja argumentos, então a mensagem de criação do objeto pode ser acompanhada de uma palavra reservada create com os argumentos, por exemplo, create(argumento), como mostrado na Figura 1. Quando não houver argumentos, basta o usar estereótipo<>.
Em se tratando de chamadas de métodos normais, é informado o nome dele e os seus parâmetros, quando houver, conforme pode ser visto ainda na figura Figura 1.
Esse papo continua em outros posts.
A UML 2.0 se propõe a capturar mais do que somente relacionamentos estruturais entre os objetos. Ela tem a intenção de mostrar também processos e fluxos de eventos.
Com esse propósito existem uma serie de diagramas, os chamados diagramas de interação, que fundamentalmente exibem a comunicação entre os objetos.
Então os diagramas de interação foca em uma mensagem específica e em como essa mensagem vem a se tornar uma funcionalidade no sistema. Logo, esses diagramas se concentram no “COMO”.
Esse post representa as anotações da leitura dos livros UML 2 In Nutshell e UML Guia do Usuário.
INTERAÇÕES
Há diversas formas de se mostrar uma interação, entretanto os diagramas de seqüência são disparados o principal meio. Futuramente mostraremos aqui outros diagramas de interação. O diagrama de seqüencia foca na comunicação entre as linhas da vida
A figura 1, mostra um diagrama de seqüência padrão.

Figura 1
PARTICIPANTES
O diagrama é composto por um grande retângulo com um pentágono na canto superior esquerdo, tendo dentro a palavra reservada sd, que significa sequence diagram, obviamente, seguida do nome da interação. Authenticate User.
A interação é mostrada utilizando um retângulo, chamado linha da vida (lifeline), tem esse nome porque o objeto, ou a instancia do objeto, uma vez que esses dois termos são até considerados sinônimos nesse momento, existem enquanto a linha tracejada seguir na direção vertical de cima para baixo.
O nome dos elementos no retângulo segue o seguinte padrão de nome:
nome_objeto[ seletor ] : nome_classe ref decomposição
Onde:
nome_objeto
Nome da instância envolvida
Em Java seria algo como:
MinhaClasse nomeInstancia = new MinhaClasse();
Seletor
É opcional e está relacionado a identificação de elementos multivalorados, um array, por exemplo. Assim seletor seria a identificação de uma das instancias em particular.
nome_classe
É identificação da classe propriamente, no exemplo dado anteriormente seria MinhaClasse.
decomposição
É opcional também e quando aparece significa que esse digrama faz referencia a um outro diagrama de seqüência do sistema.
Para finalizar um diagrama pode se usar o símbolo stop, mas ele se tornou deprecated quando se envia uma mensagem com um estereótipo <

Figura 2
Os diagramas de sequencia podem inclusive exibir variáveis locais para capturar o cmportamento do sistemas com mais fidelidade. Variáveis locais podem retornar valores, informações de loop, ou somente dados que se precisa para o processamente.
MENSAGENS
A comunicação entre as linhas da vida pode se dar de diversas formas: chamando um métodos, enviando um sinal, criando uma instância, destruindo um objeto, etc. Todas essas ações são chamadas de mensagens, como bem sabemos uma mensagem precisa de um remetente e um receptor para ocorrer.
As mensagens podem ser da seguite forma:



Quando a messagem representa a criação de um objeto então é usada a linha potilhada com a seta aberta na ponta, sim, é uma menssagem assíncrona, afinal quando cria um objeto não espera um retorno dizendo que o objeto foi criado. Caso haja argumentos, então a mensagem de criação do objeto pode ser acompanhada de uma palavra reservada create com os argumentos, por exemplo, create(argumento), como mostrado na Figura 1. Quando não houver argumentos, basta o usar estereótipo<
Em se tratando de chamadas de métodos normais, é informado o nome dele e os seus parâmetros, quando houver, conforme pode ser visto ainda na figura Figura 1.
Esse papo continua em outros posts.
Assinando Applets
Dependendo do sistema a ser construido, web pode ser a melhor opção, java a linguagem escolhida e Applet a melhor estratégia. Até ai tudo muito que bem.
No entanto, no decorrer de um projeto desses, quando já se está naquele ponto que não tem mais volta, podemos descobrir que o nosso conhecido "sandbox" do Java funciona muito bem com Applet e que definitivamente, se ela não for assinada, não rola de acessar nada do sistema operacional. Ai bate o desepero, pois as vezes é imperativo que se pegue alguma informação do sistema operacional, como usuário logado, algum arquivo de configuração, etc.
Então depois de um bocado de trabalho a gente acaba vendo que a única saida é assinar digitalmente a famigerada Applet. Para fazer isso, proceda basicamente da segunte forma seguinte:
Em uma tela DOS e dentro da pasta do seu jar com a Applet que queira assinar prossiga com os comandos Java abaixo, os quais são nada mais que aplicativos que vem junto com JDK, logo você tem que ter o JDK devidamente configurado.
1º - Produzindo a requisição para um certificado digital, aqui será solicitado uma série de informações a seu respeito que irão compor a requisiçãoa. Um arquivo com o alias AppDownload é gerado:
C:\pastaDoProjeto>keytool -genkey -keyalg rsa -alias AppDownload
Enter keystore password: *********
What is your first and last name?
[Unknown]: Antonio Beltrano
What is the name of your organizational unit?
[Unknown]: Java Software
What is the name of your organization?
[Unknown]: Organization SA
What is the name of your City or Locality?
[Unknown]: Brasilia
What is the name of your State or Province?
[Unknown]: DF
What is the two-letter country code for this unit?
[Unknown]: BR
Is L=Cupertino, ST=CA, C=US> correct?
[no]: yes
Enter key password for
(RETURN if same as keystore password): *********
2º - Produzir o texto criptografado que passaremos para a certificadora, a qual irá gerar o certificado propriamente dito, a opção > c:\app.txt grava o retorno do comando em um txt chamado app.txt na raiz do c:\, conforme mostrado:
C:\pastaDoProjeto>keytool -certreq -alias AppDownload > c:\app.txt
Enter keystore password: *********
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBtjCCAR8CAQAwdjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwE
AYDVQQHEwlDdXBlcnRpbm8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbX
MxFjAUBgNVBAsTDUphdmEgU29mdHdhcmUxEzARBgNVBAMTClN0YW5sZXk
gSG8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALTgU8PovA4y59eb
oPjY65BwCSc/zPqtOZKJlaW4WP+UhmebE+T2Mho7P5zXjGf7elo3tV5uI
3vzgGfnhgpf73EoMow8EJhly4w/YsXKqeJEqqvNogzAD+qUv7Ld6dLOv0
CO5qvpmBAO6mfaI1XAgx/4xU/6009jVQe0TgIoocB5AgMBAAGgADANBgk
qhkiG9w0BAQQFAAOBgQAWmLrkifKiUYtd4ykhBtPWSwW/IKkgyfIuNMML
dF1DH8neSnXf3ZLI32f2yXvs7u3/xn6chnTXh4HYCJoGYOAbB3WNbAoQR
i6u6TLLOvgv9pMNUo6v1qB0xly1faizjimVYBwLhOenkA3Bw7S8UIVfdv
84cO9dFUGcr/Pfrl3GtQ==
-----END NEW CERTIFICATE REQUEST-----
3º - Acesse de alguma forma o site de uma certificadora local (da sua empresa ou caseira mesmo) ou uma oficial (Very Sign, CA, etc) que permite a produção do certificado. Em algum local do site dessa certificadora terá uma espécie de textarea para você colar o texto maluco gerado acima, o melhor é copiar do arquivo app.txt que geramos no c:\, lembra?? Pois esse na tela do DOS as vezes é truncado e perdemos informações fundamentais:
http://siteDaCertificadora.com/certrqxt.asp
4º - De alguma forma, seguindo os Next e Ok´s no passo 3 será produzido um arquivo .cer ou até .p7b, faça o download desse arquivo para a pasta do seu projeto. Vamos para o passo seguinte. Esse é o passo chamado de importação das chaves, proceda com os seguintes comando ainda no DOS:
C:\pastaDoProjeto>keytool -import -alias AppDownload -file chainDERcertnew.p7b
5º - Finalmente, se tudo foi feito corretamente o próximo passo é assinar o arquivo jar de fato, não se esqueça que AppDownload é o alias que escolhemos para o certifcado lá no passo 1:
C:\pastaDoProjeto>jarsigner DownloadApplet.jar AppDownload
Se houver algum interesse posso produzir algumas capturas de telas detalhando melhor o processo.
Links relacionados:
Tabalho de um cara chamado Paulo César Herrmann Wanner
Site da SUN Microsystems a respeito de segrança
Numa Boa
Um abraço a todos,
No entanto, no decorrer de um projeto desses, quando já se está naquele ponto que não tem mais volta, podemos descobrir que o nosso conhecido "sandbox" do Java funciona muito bem com Applet e que definitivamente, se ela não for assinada, não rola de acessar nada do sistema operacional. Ai bate o desepero, pois as vezes é imperativo que se pegue alguma informação do sistema operacional, como usuário logado, algum arquivo de configuração, etc.
Então depois de um bocado de trabalho a gente acaba vendo que a única saida é assinar digitalmente a famigerada Applet. Para fazer isso, proceda basicamente da segunte forma seguinte:
Em uma tela DOS e dentro da pasta do seu jar com a Applet que queira assinar prossiga com os comandos Java abaixo, os quais são nada mais que aplicativos que vem junto com JDK, logo você tem que ter o JDK devidamente configurado.
1º - Produzindo a requisição para um certificado digital, aqui será solicitado uma série de informações a seu respeito que irão compor a requisiçãoa. Um arquivo com o alias AppDownload é gerado:
C:\pastaDoProjeto>keytool -genkey -keyalg rsa -alias AppDownload
Enter keystore password: *********
What is your first and last name?
[Unknown]: Antonio Beltrano
What is the name of your organizational unit?
[Unknown]: Java Software
What is the name of your organization?
[Unknown]: Organization SA
What is the name of your City or Locality?
[Unknown]: Brasilia
What is the name of your State or Province?
[Unknown]: DF
What is the two-letter country code for this unit?
[Unknown]: BR
Is
[no]: yes
Enter key password for
(RETURN if same as keystore password):
2º - Produzir o texto criptografado que passaremos para a certificadora, a qual irá gerar o certificado propriamente dito, a opção > c:\app.txt grava o retorno do comando em um txt chamado app.txt na raiz do c:\, conforme mostrado:
C:\pastaDoProjeto>keytool -certreq -alias AppDownload > c:\app.txt
Enter keystore password: *********
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBtjCCAR8CAQAwdjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwE
AYDVQQHEwlDdXBlcnRpbm8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbX
MxFjAUBgNVBAsTDUphdmEgU29mdHdhcmUxEzARBgNVBAMTClN0YW5sZXk
gSG8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALTgU8PovA4y59eb
oPjY65BwCSc/zPqtOZKJlaW4WP+UhmebE+T2Mho7P5zXjGf7elo3tV5uI
3vzgGfnhgpf73EoMow8EJhly4w/YsXKqeJEqqvNogzAD+qUv7Ld6dLOv0
CO5qvpmBAO6mfaI1XAgx/4xU/6009jVQe0TgIoocB5AgMBAAGgADANBgk
qhkiG9w0BAQQFAAOBgQAWmLrkifKiUYtd4ykhBtPWSwW/IKkgyfIuNMML
dF1DH8neSnXf3ZLI32f2yXvs7u3/xn6chnTXh4HYCJoGYOAbB3WNbAoQR
i6u6TLLOvgv9pMNUo6v1qB0xly1faizjimVYBwLhOenkA3Bw7S8UIVfdv
84cO9dFUGcr/Pfrl3GtQ==
-----END NEW CERTIFICATE REQUEST-----
3º - Acesse de alguma forma o site de uma certificadora local (da sua empresa ou caseira mesmo) ou uma oficial (Very Sign, CA, etc) que permite a produção do certificado. Em algum local do site dessa certificadora terá uma espécie de textarea para você colar o texto maluco gerado acima, o melhor é copiar do arquivo app.txt que geramos no c:\, lembra?? Pois esse na tela do DOS as vezes é truncado e perdemos informações fundamentais:
http://siteDaCertificadora.com/certrqxt.asp
4º - De alguma forma, seguindo os Next e Ok´s no passo 3 será produzido um arquivo .cer ou até .p7b, faça o download desse arquivo para a pasta do seu projeto. Vamos para o passo seguinte. Esse é o passo chamado de importação das chaves, proceda com os seguintes comando ainda no DOS:
C:\pastaDoProjeto>keytool -import -alias AppDownload -file chainDERcertnew.p7b
5º - Finalmente, se tudo foi feito corretamente o próximo passo é assinar o arquivo jar de fato, não se esqueça que AppDownload é o alias que escolhemos para o certifcado lá no passo 1:
C:\pastaDoProjeto>jarsigner DownloadApplet.jar AppDownload
Se houver algum interesse posso produzir algumas capturas de telas detalhando melhor o processo.
Links relacionados:
Tabalho de um cara chamado Paulo César Herrmann Wanner
Site da SUN Microsystems a respeito de segrança
Numa Boa
Um abraço a todos,
Namespace
Estudando para à prova de UML me deparei com uma questão que falava a respeito de nomes de elementos em um namespace.
Bom, a princípio imaginei se tratar de um assunto complicado em se tratando de UML e coisa e tal, mas com um pouco de estudo descobri que prevalece a definição clássica e descomplicada para o termo namespace, a qual disserto em poucas palavras sem, no entanto, prejudicar o entendimento.
Namespace é como as pastas do nosso computador, ou seja, se temos um arquivo chamado teste.txt, no disco C e dentro da pasta augusto, então seu namespace seria algo como c:\augusto\teste.txt. Dessa forma podemos complicar um pouquinho e dizer que uma cópia desse arquivo dentro da pasta denominada carla, portanto, namespace c:\carla\teste.txt, pode ser tratado como sendo coisas absolutamente distintas e podem ser manipuladas sem acarretar qualquer conflito.
Outro exemplo interessante é quando separamos nossas classes Java ou C em pacotes. Há casos em que podemos ter em um mesmo sistema situações assim: br.com.augusto.MinhaClasse e br.com.carla.MinhaClasse, são classes diferentes do ponto de vista do nome completo, mesmo que sejam uma cópia da outra, pois seus namespaces não são iguais. Por isso que quando usamos o autocomplete da IDE para importar MinhaClasse será mostrado duas opções com o mesmo nome, tem que ficar atento e reparar no "nome e sobrenome".
Poderiamos alongar essa conversa para definições XML e coisas do tipo, mas é desnecessário, pois em todas as situações a ideia é sempre a mesma.
Links:
Namespace from Wikipedia
Espaço de Nomes do Wikipedia (Traduçãozinha fraca essa, viu.)
Bom, a princípio imaginei se tratar de um assunto complicado em se tratando de UML e coisa e tal, mas com um pouco de estudo descobri que prevalece a definição clássica e descomplicada para o termo namespace, a qual disserto em poucas palavras sem, no entanto, prejudicar o entendimento.
Namespace é como as pastas do nosso computador, ou seja, se temos um arquivo chamado teste.txt, no disco C e dentro da pasta augusto, então seu namespace seria algo como c:\augusto\teste.txt. Dessa forma podemos complicar um pouquinho e dizer que uma cópia desse arquivo dentro da pasta denominada carla, portanto, namespace c:\carla\teste.txt, pode ser tratado como sendo coisas absolutamente distintas e podem ser manipuladas sem acarretar qualquer conflito.
Outro exemplo interessante é quando separamos nossas classes Java ou C em pacotes. Há casos em que podemos ter em um mesmo sistema situações assim: br.com.augusto.MinhaClasse e br.com.carla.MinhaClasse, são classes diferentes do ponto de vista do nome completo, mesmo que sejam uma cópia da outra, pois seus namespaces não são iguais. Por isso que quando usamos o autocomplete da IDE para importar MinhaClasse será mostrado duas opções com o mesmo nome, tem que ficar atento e reparar no "nome e sobrenome".
Poderiamos alongar essa conversa para definições XML e coisas do tipo, mas é desnecessário, pois em todas as situações a ideia é sempre a mesma.
Links:
Namespace from Wikipedia
Espaço de Nomes do Wikipedia (Traduçãozinha fraca essa, viu.)
Certificação UML 2.0 OMG - Episódio 1
A prova de UML da OMG é dividida em 3 partes, Jack adoraria isso:
Fundamental:
Número do Exame:................... OMO-100
Duração:........................... 90 minutos (80 questões)
Escore Mínimo:..................... 46 (57%)
Preço:............................. US$200 (ou equivalente na moeda local)
Pré-Requisitos:.................... Nenhum
Intermediate:
Número do Exame:................... OMO-200
Duração:........................... 90 minutos (70 questões)
Escore Mínimo:..................... 31 (44%)
Preço:............................. US$200 (ou equivalente na moeda local)
Pré-Requisitos:.................... Aprovado na OMO-100
Advanced:
Número do Exame:................... OMO-300
Duração:........................... 90 minutos (58 questões)
Escore Mínimo:..................... 29 (50%)
Preço:............................. US$200 (ou equivalente na moeda local)
Pré-Requisitos:.................... Aprovado na OMO-100 e OMO-200
Para quem tiver interessado pode comprar o voucher e marcar a prova pelo site da Prometric
Links interessantes:
UML 2 Certification Guide Fundamental and Intermediate (Livraria Cultura)
UML 2 Certification Guide Fundamental and Intermediate (Amazon)
Java Ranch
Be continue...
Um abraço.
Fundamental:
Número do Exame:................... OMO-100
Duração:........................... 90 minutos (80 questões)
Escore Mínimo:..................... 46 (57%)
Preço:............................. US$200 (ou equivalente na moeda local)
Pré-Requisitos:.................... Nenhum
Intermediate:
Número do Exame:................... OMO-200
Duração:........................... 90 minutos (70 questões)
Escore Mínimo:..................... 31 (44%)
Preço:............................. US$200 (ou equivalente na moeda local)
Pré-Requisitos:.................... Aprovado na OMO-100
Advanced:
Número do Exame:................... OMO-300
Duração:........................... 90 minutos (58 questões)
Escore Mínimo:..................... 29 (50%)
Preço:............................. US$200 (ou equivalente na moeda local)
Pré-Requisitos:.................... Aprovado na OMO-100 e OMO-200
Para quem tiver interessado pode comprar o voucher e marcar a prova pelo site da Prometric
Links interessantes:
UML 2 Certification Guide Fundamental and Intermediate (Livraria Cultura)
UML 2 Certification Guide Fundamental and Intermediate (Amazon)
Java Ranch
Be continue...
Um abraço.
Assinar:
Postagens (Atom)