Mostrando postagens com marcador informática para concursos. Mostrar todas as postagens
Mostrando postagens com marcador informática para concursos. Mostrar todas as postagens

sexta-feira, 1 de junho de 2012

Diagrama de pacotes uml exemplo

Amigos e amigas tudo bem? Hoje eu vou retirar um pouco a parte técnica dos meus artigos e voltar a falar sobre UML... Mas, pq? Veja bem, mesmo vc montando tudo tecnicamente perfeito é preciso que isso esteja bem definido e nada como a UML para resolver isso. Não entendeu? Eu particularmente não gosto daquele estilo de pessoa que não quer explicar, que tenta explicar algo apenas para te complicar mais e vc achar que o cara é o fodão(o que na maioria das vezes não é verdade). Bem deixa eu parar de viajar e voltar ao assunto sobre "O POR QUÊ A UML DEIXA BEM DEFINIDO UM SISTEMA"... 

Vamos imaginar que você é um empresario de uma grande empresa(bom hein? Se vc for essa pessoa tem como me emprestar uns trocados?) E então precisa mostrar o andamento financeiro da empresa como uma visão geral, AMPLA de tudo que esta acontecendo o que vc iria fazer? Entregrar relatórios com milhões de páginas cheias de números ou basicamente montar gráficos para que as pessoas se localizem facilmente e posteriormente se aprofundem no caso da empresa? Pois bem, o diagrama de pacotes é basicamente essa visão geral das camadas do nosso sistema. Ele já existia nas versões anteriores da UML, mas foi considerado totalmente independente a partir da UML 2. Tem por objetivo representar de forma clara os sub-sistemas englobados por um sistema de forma a determinar as partes que o compõem. 
Pode ser utilizado de maneira independente ou associado com outros diagramas. Veja um exemplo desse carinha:


Nesse caso definitivamente buscamos "visualizar" o sistema de cima e seria mais o menos essa a visão. O diagrama de pacotes(assim como toda a UML) não segue uma regra a RISCA de o que devemos inserir como "pacotes", eu particularmente prefiro inserir camadas que deixa bem claro para um desenvolvedor novo em um projeto X como se trabalha aqui. 

Veja outro exemplo, vamos supor que trabalhamos em um projeto que utiliza Yii Framework (Framework PHP) e Propel(ORM) e gostariamos de inserir uma camada central que fosse capaz de fazer a ligação dos dois frameworks com baixo acoplamento, fazendo isso poderiamos mudar facilmente o propel por exemplo para injetar um Doctrine e para entender essas camadas por cima iriamos montar o diagrama de pacotes que seria mais o menos assim:

Esse já poderia ser um módulo ou sub-sistema mas esse assunto não vem ao caso, olhando ele por cima veja o que temos, uma camada do propel que chamamos de Infraestrutura, outra de Negocio que é uma classe nossa que irá fazer as chamadas ao Yii e as camadas do mesmo com o controller, os forms, o config,views e languages.
Veja que em instantes já entendemos a arquitetura geral de distribuição desse cara e quando criarmos métodos na camada de negócio vamos montar um código muito mais coeso sem dúvidas.

Conclusão
- O diagrama de compomentes esta amplamente associado a tecnologia que utilizamos 
- Apresenta uma visão estática de como o sistema será implementado e quais os seus módulos de software.
- Destaca a função de cada módulo monstrando a utilidade do mesmo em um certo sistema



 
 

quarta-feira, 18 de janeiro de 2012

UML - Diagrama de Sequência

Pensaram que eu iria parar com a sequencia de artigos sobre UML não é campeões? Posso achar um saco UML mas eu vou terminar sim com esses artigos, hoje vamos falar do Diagrama de Sequência que particularmente é um dos melhores(ou menos piores) da UML! Apenas para refrescar sua memória, a UML é dividida basicamente em 2 tipos de diagramas os de estrutura (Diagrama de classe...etc..) e os de comportamento (diagrama de atividade...etc..) e onde vc acha que e o de sequencia esta acoplado? (R: Comportamento claro)





Antes de explicar técnicamente eu vou dar uma resumida; O diagrama de sequencia tem como objetivo exibir o comportamento dos métodos baseado em uma ação. Ta mas que ação? Vamos imaginar uma consulta de funcionário em um determinado sistema. Veja:

Explicando:  Vejo que nesse diagrama de sequencia temos um ATOR, uma Camada de Apresentação (View), Camada de Negócio (Uma camada para a regra de negócio, controller por exemplo) e uma camada de persistência no banco(ORM).
E divido assim em camada podemos mostrar a sequencia no comportamento delas quando existe a consulta de um funcionário.


IMPORTANTE: O diagrama de sequencia não existe um padrão de nomes, nesse caso utilizamos camada mas vc poderia nomear com as classes por exemplo "consulta.html , consultaNegocio , Banco" isso depende da sua necessidade.

 

Explicação formal

Este diagrama procura determinar a sequência de eventos que ocorrem em um determinado processo, ou seja, quais condições devem ser satisfeitas e quais métodos devem ser disparados entre os objetos envolvidos e em que ordem durante um processo específico. Assim, determinar a ordem em que os eventos ocorrem, e as mensagens que são enviadas, os métodos que são chamados e como os objetos interagem entre si dentro de um determinado processo é o objetivo principal deste diagrama. Pensando de uma forma mais clara seu objetivo é entender a sequencia em que os métodos se comportam baseado em uma ação. Mas quem define essa ação?

O Diagrama de Sequência baseia-se no Diagrama de Casos de Uso. No entanto deve-se ter em mente que o fato de haver normalmente um único Diagrama de Casos de Uso não significa em absoluto que deva haver um único Diagrama de Sequencia. Normalmente existem diversos Diagramas de Sequência em um projeto, um para cada processo específico do sistema ou seja, talvez exista um uma parte, módulo, componente do sistema que tem apenas um caso de uso principal, um diagrama de caso de uso e ‘n’ de sequencia pois a tendencia é realmente o de atividade e o de sequência possuierem um pouco mais diagramas. Mas claro que isso não é regra e cada caso é um caso mas se você sempre estiver fazendo um diagrama de sequencia de um componente grande eu recomendo que vc pare, pense e veja quais ações estão faltando.





Um Diagrama de Sequência na maioria das vezes se identifica com um Caso de Uso específico, porque um Caso de Uso, em geral, refere-se a um processo disparado por um usário. Assim um Diagrama de Sequência também também permite documentar um Caso de Uso. Na verdade, muitas ferramentas CASE permitem gerar um Diagrama de Sequencia diretamente a partir de um Caso de Uso.

Nem sempre um Caso de Uso gera um Diagrama de Sequência, como é, muitas vezes, o que ocorre com os Casos de Uso do tipo <<include>>, porque este têm que ser executados juntamente com outros Casos de Uso que os utilizam e, por isso muitas vezes suas etapas são descritas nos diagramas de Sequência relativos aos Casos de Uso que os Utilizam. Porém nada impede que se defina um Diagrama de Sequência exclusivo para um Caso de Uso utilizado por outros Casos de Uso através da associação <<include>>.
Obviamente, o Diagrama de Sequência depende também do Diagrama de Classes,

Os atores são os mesmos descritos no Diagrama de Casos de Uso, ou seja entidades externas que geram ações e disparam eventos.

Os atores não são obrigatórios no diagrama de sequencia mas são utilizados frequentemente

Objetos representam as instâncias das classes envolvidas no processo ilustrado pelo Diagrama de Sequencia. Os objetos são apresentados como retângulos contendo um texto que identifica primeiramente o nome do objeto, em minúsculo, e depois o nome da classe, com as letras iniciais maiúsculas, a qual o objeto pertence. Essas duas informações são separadas por um simbolo de (:) dois pontos. Veja um exemplo de objeto:

 
Veja como exemplo nessa figura um exemplo de objeto onde Paulo é o nome do objeto seguido de Pessoa que é a classe pessoa, ou seja, Paulo é uma instância da classe Pessoa.

Abaixo do retangulo existe uma linhda pontilhada e ela representa o tempo de vida o objeto, olhando dessa maneira não existe uma forma de medir um tempo de vida real nele isso só será possível quando o diagrama completo estiver pronto.

A e tem outra coisa, não existe diagrama que veja o tempo em horas/minutos/segundos de um objeto não ta? Quando digo linha do tempo me refiro a linha da vida, ao tempo que ele vai estar vivo durante um processo.


Um objeto pode existir desde o início do processo ou ser criado durante o decorrer da execução do mesmo.

Mensagens
As ,mensagens são utilizadas no Diagrama de Sequencia para demonstrar a ocorrência de eventos, que normalmente forçam a chamada de um método em algum dos objetos envolvidos no processo. Veja um exemplo:



A mensagem investimento entra no controller JAVoiceController e ele executa seu método vote().


Veja um exemplo completo de um diagrama de sequência para aluguel de carro:



Bem, por hoje é só. Espero ter ajudado e se não acharam que ficou claro me avisem.
Obrigado!

sexta-feira, 13 de janeiro de 2012

Intranet e a redundância das terminologias na TI


Vou deixar um pouco o desenvolvimento, a engenharia, a analise e as dicas para falar sobre algo que a algum tempo vem “confundindo” a cabeça de muita gente, inclusive a minha. E quando eu me refiro muita gente estou falando de todas as pessoas que de um jeito ou de outro tem a tecnologia como fiel companheira. 
Você alguma vez já se deparou com algum termo da TI sendo utilizado para mais de um significado? Provavelmente sim, caso contrário vou refrescar sua memória. 



Me explique o que é “portabilidade” ?

Para a informática portabilidade refere-se à característica das aplicações serem executáveis (ou facilmente recompiladas) em outras plataformas além daquela de origem, ou seja, tornar algo multiplataforma de acesso geral, como um tablet acessar um aplicativo que tem outro sistema operacional. Entendeu? Legal não é? Mas portabilidade também é um processo ou grupo de processos que permitem que um cliente de um prestador de serviço transite para outro prestador mantendo o mesmo número de telefone. E ai gostou? E se isso cai em uma prova de concurso público o que você faz ? A verdade é, se você estudou desenvolvimento de software, se é um desenvolvedor, analista ou da área você se fode e erra, se você for de outra área você provavelmente vai acertar pois sua ligação com uma empresa de telefonia é muito maior do que com um livro do Kent Beck por exemplo. 

Esse é um exemplo verdadeiro, minha namorada é da área jurídica (aliás ela é a melhor), foi criada com a tecnologia a sua volta e ela sabe que portabilidade é o caso do telefone pois já fez em seu celular logo, ela acertaria fácil essa questão, não posso dizer o mesmo sobre mim.


O problema disso é que o verdadeiro domínio sobre tudo que engloba a TI é genérico. Não se sabe dividir as coisas. Nesse caso é simples, a primeira portabilidade que eu expliquei é portabilidade na informática, e a segunda é portabilidade em telefomunicações.
Mas isso é perigoso pois para que aqueles que formulam as provas por exemplo não existe critério ou estudo aprofundado para se fazer uma questão, cabe a você entender sobre o assunto real abordado e se muito genérico pense no mais simples e prático(se existir).


E as intranets? Outro termo perigoso.
Quando lançaram o microondas por exemplo, muita gente ficou desnorteada. O troço mais parecia uma televisão, mas cozinhava como um forno…. e sem fogo!
Detalhe: ele serve não só para esquentar uma fatia de pizza que dormiu na geladeira, mas também para descongelar alimentos e até para preparar um almoço completo. Mas você conhece alguém que utilize todas estas funcionalidades?
Com as intranets vem acontecendo coisa parecida. Elas podem fazer um banquete, mas muita gente usa mesmo para “fazer pipoca”. Para piorar, o termo “intranet” pode significar várias coisas, aumentando a confusão…


Novas ideias, antigos ideais
Sempre que não temos referenciais claras para algo novo, a tendência é enquadrá–lo nos paradigmas pré–existentes. Embora seja algo natural, comprovado pela psicologia e pelos estudos de comportamento do consumidor, representa uma ameaça à evolução. Portanto, conhecer toda a potencialidade do que quer que seja amplia nossas chances de compreensão, de aceitação e de progresso. 
Vamos começar tentando responder uma pergunta que volta e meia me fazem: o que é uma intranet, afinal? Um portal corporativo?
Ao invés de ficar detalhando funcionalidades – uma enrolação completa… – , o melhor caminho me parece ser justamente o comparativo, buscando os tais referenciais que todos nós temos dentro da cabeça, formando os modelos mentais. Melhor seria olhar para os benefícios do que para as características.


Intranet é diferente de internet?
Se você conversar com um cara de infraestrutura de TI, ele certamente te dirá que intranet é… uma rede fechada de computadores. Coloque dois ou mais pcs interligados entre si, mesmo sem qualquer programa de compartilhamento, e está formada uma intranet – do ponto de vista restrito da área de redes.
Se você perguntar para um cara de desenvolvimento de sistemas, ele certamente te dirá que intranet é... atualmente um portal na internet com acesso fechado para a empresa.
Normalmente, baseadas em uma estrutura web, com um site centralizando tudo, as intranets são usadas de forma pontual, para apoiar um projeto específico (com começo, meio e fim) ou como mera porta de acesso a sistemas desenvolvidos também pontualmente. Há algo de errado nisso? Claro que não – para cada necessidade, uma solução…


Faca, o pão e o sangue
Não seria nada demais afirmar que uma intranet não é, ela pode ser… Complicado? Nem tanto. Pense numa faca. O que ela é? Se usada para passar manteiga no pão, posso afirmar que é um utensílio doméstico. Se utilizada para apunhalar alguém, torna–se uma arma mortal. Bem diferente, não?
Intranets são assim: não raro, refletem o perfil da empresa, são uma espécie de simulacro da estrutura e da cultura corporativa. Como “cada um é cada um”, cada intranet é uma intranet, não existem duas iguais e muito menos receita de bolo para o sucesso.
Assim, empresas muito “caretas” (ou seja, ainda muito presas ao modelo industrial, onde prevalece o controle, a hierarquia e a departamentalização) usam a intranet para… controlar! Ou para esquentar a pizza, como queiram.


Outras, mais arejadas, já começam a incluir produtos, serviços e a caminhar em direção a um maior empowerment dos funcionários/colaboradores. Existem até algumas empresas que conheço que criaram redes sociais da empresa e sim, isso é uma intranet.


“E os portais corporativos?”, você deve estar se perguntando. “São a mesma coisa”, eu respondo de pronto. Algumas empresas adotam outros nomes para não se tornar algo chato e afastar os colaboradores, o governo por exemplo pode chamar algo de intranet e acoplar todos seus sistemas nele pois quero ver um polícial deixar de registrar um boletim de ocorrência porque não gosta da intranet rsrs...
Portanto, pensar em intranets e portais nos levará sempre a pensar também em administração de empresas, endomarketing, processos, comunicação interna, cultura organizacional, gestão do conhecimento e afins. É neste contexto que ela ganha destaque e deixa de ser “mais um sisteminha”. Queremos ver até onde os microondas podem ir, muito embora seja ótimo poder esquentar a pizza e fazer pipoca rapidinho…


Abordei dois exemplos sobre a redundância dos nomes que engloba a TI, mas ainda existem milhões como proxy por exemplo que na verdade é uma definição dos intermediários entre um usuario e seu servidor e as pessoas associam como “um programa que abre sites bloqueados” não que o proxy não faça isso afinal, ele é um intermediário e se em um intermediário não existir bloqueio é lógico que vc irá “furar” a segurança... existe ainda mais e mais palavras como  framework, biblioteca, plugin, módulo, componente, orientação(aaaaa estou ficando loucoooo) Parei! :) ... o importante é você saber sobre o assunto a que se trata esse nome e ai sim entender o seu significado.