domingo, 16 de março de 2008

UML 2 Rápido e Prático

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).

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.

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.

- 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):
*********


- 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-----


- 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

- 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


- 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.)

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.