quarta-feira, 25 de março de 2009

Básicos sobre UML - Parte 02

Dando continuidade, vamos a alguns diagramas da UML e um rápido resumo sobre eles:


4. DIAGRAMAS

Segundo José Davi Furlan (1998),

“Um diagrama é uma apresentação gráfica de uma coleção de elementos de modelo, frequentemente mostrado como um gráfico conectado de arcos (relacionamentos) e vértices (outros elementos de modelos).”

Os diagramas são, basicamente, desenhos explicativos que permitem a visualização de um sistema. Seja da perspectiva do usuário que esse sistema terá, seja da perspectiva do desempenho que esse sistema oferecerá.
A UML, teoricamente, não restringe um diagrama de possuir qualquer relacionamento e conjunto de itens, mas, praticamente existem poucas combinações comuns para uso cotidiano.

Booch, Rumbaugh e Jacobson definiram nove diagramas para a UML:

1. Diagrama de classes;
2. Diagrama de objetos;
3. Diagrama de casos de uso;
4. Diagrama de seqüências;
5. Diagrama de colaborações;
6. Diagrama de gráfico de estados;
7. Diagrama de atividades;
8. Diagrama de componentes;
9. Diagrama de implantação;

Na construção da especificação técnica e funcional do módulo TISS do Sistema de Gerenciamento Colméia, serão utilizados os diagramas de casos de uso, de classes, e de seqüências. Portanto, serão mais bem detalhados ao longo desse capítulo.
Para melhor entendermos os diagramas, o próximo tópico será destinado a uma breve introdução sobre programação orientada a objetos.

4.1 DIAGRAMA DE CLASSES
O diagrama de classes é amplamente utilizado principalmente em modelos de sistemas orientados a objetos. A UML permite que um diagrama de classes exiba classes, interfaces e colaborações e todos os seus relacionamentos. Também mostram atributos e operações de cada classe e a maneira que os objetos estão conectados.
Os diagramas de classe também são importantes para a documentação de um sistema, e podem ser utilizados para a criação do código fonte do por meio de engenharia reversa, com o auxílio de várias ferramentas disponíveis hoje no mercado.



4.2 DIAGRAMA DE OBJETOS
De acordo com Martin Fowler, “Um diagrama de objetos é um instantâneo dos objetos de um sistema num determinado ponto do tempo”.

Em outras palavras, quer dizer que mostra como estão, em um determinado momento, instanciados os objetos do sistema e também seus relacionamentos.
O diagrama de objetos é responsável pela visualização de instancias de objetos, e não de suas classes.
Costumeiramente são utilizados para ajudar na visualização de como o sistema resolverá conexões complexas entre os objetos instanciados, representando assim um quadro estático de seu sistema. Servem para auxiliar na visualização, especificação, construção e documentação de certas instâncias encontradas no sistema, e seus relacionamentos.



4.3 DIAGRAMA DE CASOS DE USO
Segundo Martin Fowler, “Um caso de uso é um conjunto de cenários amarrados por um objetivo comum de um usuário”.

De acordo com Booch, Rumbaugh e Jacobson, “Um diagrama de caso de uso é um diagrama que mostra um conjunto de casos de uso e atores e seus relacionamentos”.

Levando em conta que um cenário é uma seqüência de etapas que um usuário tem de percorrer utilizando um sistema, um diagrama de casos de uso descreve um conjunto desses cenários juntamente com a interação de seu usuário.
Os casos de uso costumam conter, além dos próprios casos de uso, atores e seus relacionamentos de dependência, generalização e associação.
São utilizados na modelagem da visão estática de um sistema, onde é descrito seu comportamento perante o usuário e outros atores.
Comumente são utilizados durante a modelagem dos requisitos do sistema, onde envolvem a especificação sobre o que esse sistema deverá fazer e como deverá se comportar.
Atores representam uma entidade externa ao sistema, como um usuário, por exemplo. Os atores interagem com o sistema através de casos de uso, onde este representa as ações que serão executadas pelo sistema.


Para o próximo post, fica o restante dos diagramas.

Até lá!

terça-feira, 24 de março de 2009

Básicos sobre UML - Parte 01




Vou tentar postar algumas coisas que fiz durante a faculdade, pois assim creio que irei ajudar os novos estudantes.

Para iniciar, escolhi um assunto bem gostoso para quem está seguindo para a infeliz área de desenvolvimento: A UML.

Principal referência:
BOOCH, Grady & Rumbaugh, James & Jacobson, Ivar. UML – Guia do usuário. Rio de Janeiro: ed. Campus, 2000.

Vou dividir esse tema em 3 partes. A primeira parte segue abaixo, nos próximos dois posts relacionados a esse assunto, tratarei os diagramas.


1. Introdução

A primeira coisa que precisamos saber a respeito de UML é conhecer o significado dessa sigla. UML significa “Unified Modeling Language” - Linguagem Unificada de Modelagem.
A Linguagem Unificada de Modelagem é uma linguagem gráfica, constituída por um conjunto integrado de diagramas que ajudam no desenvolvimento de sistemas, que proporciona uma padronização para criação de especificações, designs de arquitetura, construções, simulações, testes e documentações.
A UML foi desenvolvida inicialmente para promover a comunicação e aumentar a produtividade no desenvolvimento de sistemas orientados a objeto, mas essa não é sua única utilidade atualmente, sendo que ela atende todos os tipos de desenvolvimento de sistemas.

2. Modelagem

Como na Engenharia Civil, para construirmos uma ponte basta começarmos batendo alguns pregos e lançando um pouco de concreto no local. A ponte poderá, com sorte, ser erguida, mas com certeza não se adequará às normas de segurança exigidas e demorará muito tempo para ser construída. Para isso é necessário um planejamento, uma equipe competente trabalhando no projeto e um rigoroso planejamento.
No desenvolvimento de softwares os problemas são muito parecidos e, se você não está disposto a ter muito retrabalho e muitos gastos, é necessária a utilização da modelagem.
Assim como na engenharia, construímos modelos arquiteturais para auxiliar na visualização de um resultado final, ou até mesmo para cálculos e previsões de efeitos de catástrofes, como um tremor ou, no nosso caso, um problema de comunicação com um banco de dados, por exemplo.
Segundo Booch, Rumbaugh e Jacobson, “um modelo é uma simplificação da realidade”.
É através da modelagem que podemos criar simulações e fazer melhor entendimento do problema como um todo, podemos visualizar o sistema como ele é, ou como deverá ser e, além disso, os modelos servem para documentar o sistema em questão.
Para uma modelagem eficiente, é necessário tomarmos certos cuidados na escolha dos modelos que serão utilizados.

3. Termos e conceitos

Para um melhor entendimento dos diagramas propostos pela UML, precisamos definir alguns conceitos, como classes, dependências, generalização, entre outros.
Em todos os diagramas serão apresentados os relacionamentos entre os itens que compõem esse diagrama. Um relacionamento é uma conexão representada por diferentes tipos de linhas que ligam um item ou mais a outro(s).
Os principais relacionamentos que encontraremos serão: a dependência, a associação e a generalização.

3.1 Classes e objetos
Uma classe é uma forma abstrata de se visualizar algum objeto do mundo real. Um objeto é a forma física/concreta dessa abstração. Todos os objetos são instancias de classes, que por sua vez, são responsáveis por descrever as propriedades e o comportamento daquele objeto.

3.2 Dependência
De acordo com Booch, Rumbaugh e Jacobson, “uma dependência é um relacionamento de utilização, determinando as modificações na especificação de um item”.
Em outras palavras, dependência é um relacionamento entre dois itens, onde um é dependente e o outro independente.
É normalmente representada graficamente com linhas tracejadas que, saindo do item dependente, apontam o item que é independente.

3.3 Generalização
È um relacionamento onde existe um elemento genérico (classe mãe) e tipos mais específicos deste elemento (classes filhos).
Resumindo em outras palavras, as classes filhos herdam todas as peculiaridades da classe mãe, mas mantém suas particularidades.
É representada graficamente com linhas sólidas que apontam para a classe genérica (mãe).

3.4 Associação
É uma conexão entre as classes. É um relacionamento que indica a ligação de objetos de um elemento a objetos de outro elemento.
São representadas nos diagramas por uma linha sólida que é conectada a outro(s) elemento(s) ou a si mesmo.
Em muitas situações é interessante determinarmos a quantidade de objetos que serão associados por uma instancia. Essa determinação é chamada de Multiplicidade.
Essa indicação é feita colocando-se a quantidade dos elementos ao lado das associações correspondentes, como um (1), zero ou um (0..1), muitos (0..*) e um ou mais (1..*), podendo ser indicado pelo numero exato (50, por exemplo).
Uma associação também pode indicar que uma das classes do relacionamento é uma parte, ou está contida em outra classe, colocando-as em um mesmo nível. Esse tipo de associação é chamado de Agregação.
Uma agregação é representada por uma linha sólida com um diamante aberto na extremidade do todo.

sexta-feira, 20 de março de 2009

Quer adrenalina? Salte de Pára-Quedas!


Sei que vou fugir um pouco do enredo deste blog, mas quero compartilhar isso com quem lê essa baboseira. A finalização da configuração do firewall com Ubuntu Server fica pro próximo post.


Desde pequeno sempre quis saltar de pára-quedas, porém haviam 2 problemas:
1) Falta de $$$$ (Apesar de nao ser tãããããão caro..)
2) A insegurança

Problema 1 resolvido (depois de algum esforço), faltou enfrentar o segundo.

Criei coragem e subi no avião. E vos digo: É A MELHOR SENSAÇÃO DO MUNDO!
Foram poucos minutos para atingir o chão, mas valeu cada centavo.

Quem tiver interesse, pode conferir a lista das áreas de saltos registradas na confederação brasileira de paraquedismo no link: http://www.cbpq.org.br/areas.php

Uma rápida busca na web lista várias escolas que fazem saltos duplos para quem não possui o equipamento e quer se arriscar um pouco pra sair da rotina... =)

Segue o link do video do meu salto:




"O pára-quedismo, ao contrário do que muitas pessoas pensam, não é um esporte criado há pouco tempo. Na verdade ele vem do eterno sonho do ser humano, miseravelmente destinado a viver no chão, o sonho de VOAR! Voar livremente utilizando somente seu próprio corpo, assim como fazem os pássaros!"

quinta-feira, 26 de fevereiro de 2009

Partition Magic, Acronis e Ghost no mesmo cd (e muito mais)


Esse é um verdadeiro canivete suíço para solucionar problemas com nossas máquinas.

Em um único cd (bootavel) você terá todas as principais ferramentas de diagnostico e correção para quase tudo que precisamos (de graça)...

Basta baixar a imagem no link abaixo, queimar num cd e configurar o micro para dar o boot pelo drive em questão.




Abaixo segue a lista de alguns softwares que estão incluidos nesta maravilhosa engenhoca (que foi retirada do site www.hiren.info):


Partition Tools



Partition Magic Pro 8.05
Best software to partition hard drive

Acronis Disk Director Suite 9.0.554
Popular disk management functions in a single suite

Paragon Partition Manager 7.0.1274
Universal tool for partitions

Partition Commander 9.01
The safe way to partition your hard drive,with undo feature

Ranish Partition Manager 2.44
a boot manager and hard disk partitioner.

The Partition Resizer 1.3.4
move and resize your partitions in one step and more.

Smart Fdisk 2.05
a simple harddisk partition manager

SPecial Fdisk 2000.03t
SPFDISK a partition tool.

eXtended Fdisk 0.9.3
XFDISK allows easy partition creation and edition

GDisk 1.1.1
Complete replacement for the DOS FDISK utility and more.

Super Fdisk 1.0
Create, delete, format partitions drives without destroying data.

Partition Table Editor 8.0
Partition Table and Boot Record Editor



Disk Clone Tools



ImageCenter 5.6 (Drive Image 2002)
Best software to clone hard drive

Norton Ghost 11.5
Similar to Drive Image (with usb/scsi support)

Acronis True Image 8.1.945
Create an exact disk image for complete system backup and disk cloning.

Partition Saving 3.60
A tool to backup/restore partitions. (SavePart.exe)

COPYR.DMA Build013
A Tool for making copies of hard disks with bad sectors


Ainda existem diversas outras ferramentas, desde antivirus até gerenciadores de arquivos DOS. Vale a pena conferir a lista completa no site.



Segue a correção para o link de download, que estava quebrado:

Download via SuperDownloads: www.superdownloads.com
Download via hirensbootcd: www.hirensbootcd.net

quinta-feira, 19 de fevereiro de 2009

Configurando o Ubuntu Server 8.10 (pt 1) - GUI, VNC e FTP

Aqui onde trabalho, possuimos um firewall rodando uma distro antiga.
Para dar um basta nisso, ontem comecei a instalação do Ubuntu Server 8.10 em uma máquina que estava encostada. Caso fique legal, faremos a substituição.

O Ubuntu Server deverá agir como um firewall e também como um repositório de arquivos para atualizarmos os sistemas dos nossos clientes (atualmente temos um tomcat rodando na distro antiga e uma aplicação web que faz esse papel).

A instalação foi bastante simples, muitos sites descrevem um passo-a-passo, portanto não vou citar nada a respeito. (Uma delas pode ser encontrada aqui, no site www.opcaolinux.com.br)

Depois de instalado, foi a hora de começarmos a configurá-lo.


INTERFACE GRÁFICA

O primeiro passo era fazer a instalação de uma interface gráfica, pois fazer tudo em modo texto é muito cansativo, dificil e trabalhoso.

Fiz a instalação do ambiente Gnome, pois estou mais acostumado.
Você consegue isso digitando (sem os '#'):

# sudo apt-get update

# sudo apt-get install ubuntu-desktop


SERVIDOR DE ACESSO REMOTO

O segundo passo foi configurar um servidor para acesso remoto (VNC), afinal não dá pra ficar levantando toda hora para mexer em alguma coisinha.

Descobri que ja veio instalado. Basta ir no menu "Sistema > Preferencia > Área de Trabalho Remota" , e configurar algumas coisinhas como a senha de acesso por exemplo.
Nos terminais rodando Windows XP estou utilizando tanto o "UltraVNC" ou o "VNC Viewer 4". Tudo gratuito.


SERVIDOR FTP

O terceiro passo foi a instalação de um servidor FTP. Ai ja complicou um pouco mais, pois eu nunca havia feito isso antes, nem em ambiente Microsoft.

Bem, após algumas horas de pesquisa e algumas tentativas furadas de servidores, acabei optando pelo "proftpd", que é o mais comum servidor de ftp utilizado hoje.

Para fazer a instalação, vc pode utilizar a linha de comando, digitando:

# apt-get install proftd

ou você pode utilizar o Synaptics para tal tarefa. Basta selecionar o mesmo pacote citado acima.



Instalado, agora toda a configuração deve ser feita por linha de comando. Sim.. chato mesmo..
Depois de alguma pesquisa, encontrei um GUI que resolve esse problema.

Lhes apresento (para que é novo nesse mundo) o "gadmin".

Esse carinha nos trás muitas interfaces gráficas para configuração de serviços como Squid, Samba, Dhcpd ou PROFTPD.

Selecione os pacotes do gadmin no Synaptics para ter tudo isso instalado. Porém ressalvo que até esse exato momento, a versão que o repositorio nos trará do gerenciador do PROFTPD "crasha" assim que é aberta.

Então, qual a solução?

Ou você NÃO instala APENAS o pacote gadmin proftdp ou se você instalou todos os pacotes gadmin disponiveis no Synaptics, basta desinstalar apenas o pacote referente ao gadmin proftpd e instalar a versão atualizada que pode ser encontrada aqui: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-proftpd/

De qualquer maneira, baixe o pacote gadmin-proftpd_0.3.5-2_i386.deb. (para versao x86 do Ubuntu Server).

Após o rápido download, de um duplo clique nele e a mágica será feita.

Agora você consegue acessar e configurar seu servidor FTP pelo menu "Aplicações > Sistema" sem depender de configurações avançadas feitas no prompt de comando.

Voilá! Futuramente posto o resto das configurações no meu servidor Ubuntu 8.10, que será usado para firewall na nossa rede.

quarta-feira, 4 de fevereiro de 2009

Skype 4.0 (finalmente) lançado

Finalmente foi lançada a nova versão do comunicador VOIP mais famoso do mercado.

Essa nova versã0 promete muitas melhorias no audio das conversações e na qualidade dos videos, mas, a principal diferença fica por conta da interface.

Parece que é outro programa. Muito diferente (e bonita).

Agora resta oficializarem uma versão final para meu smartphone Nokia E61 (Enquanto isso eu vou me virando com o - muito bom - FRING).

Download para Windows: http://www.skype.com/intl/en/download/skype/windows/

quinta-feira, 29 de janeiro de 2009

Linux: Emulando aplicativos para Windows e solucionando problemas com o Wine

As dicas aqui referidas servem para a distribuição Ubuntu.


De acordo com o site http://www.winehq.org :

O Wine é uma camada de tradução (um lançador de programas) capaz de correr aplicações Windows em Linux e noutros sistemas operativos compatíveis com POSIX. Os programas Windows a correr no Wine agem como se fossem nativos, executando sem as penalidades de desempenho ou uso de memória de um emulador, com um visual semelhante às outras aplicações do seu computador.

Instalação da última versão do Wine:

1) Adicione o WineHQ ao repositório.

Vá em Sistema > Administração > Canais de software. Selecione a aba "Programas de Terceiros" e clique em Adicionar e, de acordo com a versão do sistema, cole a seguinte linha:

- Ubuntu Intrepid (8.10):

deb http://wine.budgetdedicated.com/apt intrepid main #WineHQ - Ubuntu 8.10 "Intrepid Ibex"

- Ubuntu Hardy (8.04):

deb http://wine.budgetdedicated.com/apt hardy main #WineHQ - Ubuntu 8.04 "Hardy Heron"

2) Adicione a chave de fornecedores confiáveis.

Salve o arquivo gpg a seguir em algum local na sua maquina.

http://wine.budgetdedicated.com/apt/Scott%20Ritchie.gpg

Em seguida selecione a aba "Autenticação" e clique em "Importar arquivo Chave".
Importe o arquivo que vc acaba de salvar e Feche a janela de Canais de Software.

3) Atualize seus repositorios.

sudo apt-get update

4) Instale o wine.

sudo apt-get install wine


O Wine sumiu do menu de aplicações

Caso vc tenha excluido o wine dos menus após uma desinstalação e agora precisa dele novamente, faça o seguinte:

1. Editar o arquivo ~/.config/menus/applications.menu;
2. Procure pela seção "wine";
3. Delete as linhas que tiverem a tag próximas à seção "wine";
4. Salve o arquivo. Pronto.


Desinstalar manualmente os aplicativos:

Na sua pasta $home (Locais > Pasta Pessoal), aperte Ctrl + H, e entre na pasta .wine > drive_c > Arquivos de Programas.

Agora delete a pasta do programa em questão.


Deletar as entradas dos aplicativos no menu aplicações:

Você desinstalou um programa e ele continua no menu Aplicações > Wine > Programas ?

No menu Locais >Pasta Pessoal aperte Ctrl+h localize e abra a pasta ".local", dê duplo clique e irá abrir a pasta "share" que conterá 4 subdiretórios. Procure pela pasta do programa desejado à ser removido e apague-a.


Problema na desinstalação do wine:

Veja que esse problema não ocorre somente na desinstalação do Wine. Pode ocorrer em outras ocasiões. A mensagem dele é a seguinte:

This package is an installer package, it does not actually contain the
JDK documentation. You will need to go download one of the
archives:

jdk-6-doc.zip jdk-6-doc-ja.zip

(choose the non-update version if this is the first installation).
Please visit

http://java.sun.com/javase/downloads/

now and download. The file should be owned by root.root and be copied
to /tmp.

[Press RETURN to try again, 'no' + RETURN to abort]

Solução:

O arquivo jdk-6-doc.zip pode ser baixado daqui:

ftp://ftp.ssw.uni-linz.ac.at/pub/Java/

ou daqui:

http://www.filewatcher.com/m/jdk-6-doc.zip.54898268.0.0.html

Agora utilizando um terminal como root, copie o arquivo do local onde foi salvo para a pasta /temp.

Pronto. Atualize a lista dos repositórios com o comando

sudo apt-get update

sábado, 29 de novembro de 2008

MySql 5.1 lançado: 15% mais rápido!



Foi lançada a versão 5.1 do banco de dados gratuito mais utilizado no mundo: o MySql, que foi recém adquirido pela Sun.

A ultima versão (5.1) tem como principal objetivo a velocidade. Foram concentrados os esforços no desenvolvimento de metodos de particionamento horizontal: range, hash, key, list e composite.

Outros recursos melhorados foram a replicação hibrida e o escalonador de eventos (aquele cara que permite automatização de tarefas repetitivas).

Muitos sistemas operacionais foram contemplados com essa versão:
- Red Hat
- Suse
- Mac Os X
- FreeBSD
- Windows (duuhh)
- Muitas outras distros Linux

Os downloads podem ser feitos aqui.


Fonte: Linux Magazine

terça-feira, 25 de novembro de 2008

Alterar resultados de buscas no Google!



A Google disponibilizou um novo recurso para os usuários personalizarem seus resultados nas buscas, o SearchWiki.

Essa ferramenta serve para que coloquemos os sites com conteúdo mais adequado àquela busca nas primeiras posições e até fazer comentários sobre os mesmos.

De acordo com o blog oficial do google, a ferramenta entrou no ar nessa quinta-feira passada, e funciona automaticamente, bastando apenas que o usuário esteja logado com sua google account para que o sistema armazene os dados.

Porém, para quem está se perguntando se isso alterará a ordenação do buscador (que utiliza a tecnologia PageRank) respondo que não. Servirá somente para os resultados dos usuários.

Veja o video disponibilizado aqui (o cara é feio e peludo... mas enfim)

A pergunta é: Será que isso vai ter utilidade? ....


Fonte: Google Blog

domingo, 23 de novembro de 2008

Suba um Linux do seu Pendrive de 256 mb!


Está com algum tipo de problema na sua máquina e precisa reinstalar o sistema operacional, porém existem arquivos que você não quer perder?
Existe algum vírus que precisa ser removido manualmente mas o Windows não deixa?
Possui pastas criptografadas no windows que você precisa acessar mas esqueceu a porcaria da senha?
É um curioso? Tem um pendrive velho sobrando e não sabe o que fazer com ele?

Caso você se encaixe acima, ou por algum outro motivo entrou nesse post, existe há muito tempo várias distribuições linux que rodam diretamente de um pendrive, assim como as que rodam diretamente de um cd, onde você não precisa necessariamente instalar no seu disco rigido.

Vou citar o Slax, uma distro bem leve e com ferramentas nativas bastante produtivas. Essa distro pode rodar de um pendrive de 256 mbs de memória sem problemas e com bastante eficiencia.

Você pode fazer o download diretamente em http://www.slax.org/.

Para instalar no seu pendrive, basta:
1) Baixar o arquivo .TAR
2) Possuir um extrator que suporte esse formato, como o 7zip (que é gratuito, de código aberto e suporta todos os formatos de compressão existentes)
3) Formatar seu pendrive em Fat32
4) Extrair a estrutura de pastas do arquivo baixado para o seu pendrive, da forma como ela vem
5) Navegar para a pasta "\boot" criada no seu pendrive, e clicar duas vezes no script "bootinst.bat". Isso tornará seu pendrive bootável.
6) Reinicie seu computador, entre no Setup e indique o drive de boot primario como seu USB.

Caso o passo 5 não funcione, pode ser feito manualmente da seguinte maneira:

5) Clique em iniciar > executar e digite "CMD"
6) No prompt de comando, vá até o diretório "boot\syslinux" digitando "cd boot\syslinux"
7) Digite "syslinux.exe -ma -f X:" (substituindo o X pelo seu drive USB).
8) Reinicie seu computador, entre no Setup e indique o drive de boot primario como seu USB.

Prontinho! Um sistema operacional confiavel rodando diretamente de um pendrive. Isso pode eliminar até mesmo um disco rigido de uma máquina antiga. Olha que legal? =)

Existem várias opções para fazer esse tipo de instalação, até mesmo versões do Ubuntu para pendrives (ou mini-hds) com maior capacidade de armazenamento.
Muitos tutoriais e distros para download podem ser encontrados aqui, no site pendrivelinux.com.

Abraços!
BuscaPé, líder em comparação de preços na América Latina
 
BlogBlogs.Com.Br