sexta-feira, 30 de novembro de 2012

Introdução à modelagem utilizando UML

Ola Pessoal,
hoje vamos valar sobre modelagem UML, espero que gostem!


UML ou Unified Modeling Language é uma linguagem de modelagem não proprietária de terceira geração. A UML não é uma metodologia de desenvolvimento, o que significa que ela não diz para você o que fazer primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar seu desenho e a comunicação entre objetos.

Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas padronizados. Junto com uma notação gráfica, a UML também especifica significados, isto é, semântica.
Os objetivos da UML são: especificação, documentação, estruturação para sub-visualização e maior visualização lógica do desenvolvimento completo de um sistema de informação. A UML é um modo de padronizar as formas de modelagem. A UML é o padrão da industria para modelagem de softwares que usam a orientação a objetos (OO).

Entre os anos 80 e 90 havia muitos conflitos na definição de nomenclatura na área de modelagem. A escolha de padrões era feito a gosto pessoal do que por fatores técnicos. Com isso os três nomes mais respeitados nessa área, cada qual com seus conceitos sendo eles o Ivar Jacobson, Grand Booch e James Rumbaugh, decidiram criar um modelo único que veio a ser UML. A UML seria como uma planta para construção do seu sistema e pretende ser a linguagem de modelagem padrão para modelar sistemas concorrentes e distribuídos.

A modelagem UML antecede as etapas de desenvolvimento ou analise de Hardware e ate mesmo de infraestrutura, estamos pensando apenas nos fluxos e ações de um sistema.

A modelagem UML apresenta de forma gráfica os elementos essências usados na orientação a objetos como as Classes, Atributos, Objetos, Troca de Mensagens, etc.

A modelagem UML utiliza-se de vários tipos de Visões para apresentação de diagramas UML e cada tipo possui uma característica e função principal.

·         Visão do modelo de Usuário: apresenta a visão do usuário em relação o sistema, sendo descrita principalmente pelo uso dos casos de Uso.
o   Diagramas de Caso de Uso.

Para montar esse diagrama é preciso obter os elementos: Ator, Casos de Uso e Relacionamentos.

O Ator é representado por um boneco e um rótulo com o nome do autor. O ator pode ser um usuário humano ou outro usuário sistema.

Casos de Uso: A UML pretende ser a linguagem de modelagem padrão para modelar sistemas concorrentes e distribuídos.

Relacionamentos: Define uma funcionalidade do sistema do ponto de vista do usuário. O relacionamento pode ocorrer entre Atores e entre Atores e Casos de Uso.

Os tipos de relacionamentos podem ser:
Associação: Define uma funcionalidade do sistema do ponto de vista do usuário.

Generalização: Esse tipo de relacionamento é comum quando temos Atores que se relacionam e esse tipo de relacionamento mostra que um Ator herda de outro Ator seus casos de uso, ou seja, ambos atores possuem casos de uso comuns.

Include: Indica que um dos casos de uso é essencial para o comportamento do outro caso de uso. Exemplo: Caso de Uso A relaciona-se com o Caso de Uso B com tipo Include. Essa relação diz que o Caso de Uso B é essencial para o Caso de Uso A.

Extend: Ponto de extensão de um caso de uso é uma indicação de que outros casos de uso poderão ser adicionados a ele. Quando o caso de uso for invocado, ele verificará se suas extensões devem ou não ser invocadas.
Um relacionamento extend de um caso de uso B para um caso de uso A indica que o caso de uso B pode ser acrescentado para descrever o comportamento de A. A extensão é inserida em um ponto de extensão do caso de uso A.






·         Visão do modelo Estrutural: apresenta a estrutura do sistema.

o   Diagrama de Pacotes: Objetivo principal é agrupar classes em pacotes. Todo sistema que não for comum precisa ser dividido em pacotes para ficarem mais fáceis de entender.

 


o   Diagrama de Classes: Especifica a estrutura estática do sistema segundo a abordagem orientada por objetos. Mostra a estrutura de classes e como estas se relacionam com seus Atributos, Métodos, Associações, Agregações, Heranças e Dependências.

ü  Garantir que a classe informe o comportamento necessário às realizações dos casos de uso.
ü  Garantir que sejam fornecidas informações suficientes para implementar a classe sem ambiguidades.
ü  Tratar dos requisitos não funcionais relativos à classe.
ü  Incorporar os mecanismos de design usados pela classe.





o   Diagrama de Objetos: variante do diagrama de classes. Representa um exemplo do diagrama de classes num determinado instante da execução do sistema. Utilizam quase a mesma notação que o diagrama de classes, a diferença é que o diagrama de objetos mostra os objetos que foram instanciados num relacionamento de classes.





o   Diagrama de Estrutura Composta: Um diagrama de estrutura composta pode ser utilizado para mostrar a decomposição de uma classe estruturada. Como exemplo, a figura a seguir mostra um diagrama de estrutura composta para bilheteria no sistema de ingressos. Esta classe é decomposta em três partes:
·         Uma interface com o vendedor de ingressos
·         Um guia de desempenho que recupera desempenhos de acordo com a data e outros critérios
·         Um conjunto de bancos de dados que contém os dados nos desempenhos e ingressos.
Cada peça interage por meio de uma interface bem definida especificada por suas portas. Toda a bilheteria interage com o exterior por meio de uma porta. As mensagens nessa porta são enviadas para a classe de vendedor de ingressos, mas a estrutura interna da classe de bilheteria é oculta para os clientes externos.





·         Visão do Modelo Dinâmico: apresenta à dinâmica e o comportamento do sistema, sua interação com o usuário e com sistemas externos.

o   Diagrama de Sequencia ou Diagrama de Comunicação/Colaboração: Para modelarmos como os objetos do sistema interagem entre si, é utilizado o diagrama de sequência ou o de colaboração. Usa-se modelar um diagrama para cada função (use-case) definida no diagrama de use-cases



o   Diagrama de Transição de Dados: É uma representação do estado ou situação em que um objeto pode se encontrar no decorrer da execução de processos de um sistema. Com isso o objeto pode passar de um estado inicial para um estado final, através de uma transição.




o   Diagrama de Maquina de Estado (estado de objetos): Este diagrama procura acompanhar as mudanças sofridas nos estados de uma instância de uma determinada classe. O diagrama de máquina de estados é um dos diagramas disponíveis na UML para a modelagem dos aspectos dinâmicos de sistemas. Assim como o diagrama de sequencia, o diagrama de máquina de estados muitas vezes baseia-se em um caso de uso descrito em um e apoia-se no diagrama de classes. 







o   Diagrama de Tempo: Apresenta o comportamento dos objetos e sua intenção em uma escala de tempo, focalizando as condições que mudam no decorrer desse período.





·         Diagrama de Implementação: apresenta aspectos estruturais do sistema relacionados ás necessidades de implementação.

o   Diagrama de Componentes: Serve para marcar como nosso sistema está dividido por módulos. E quais as dependências entre cada módulo. O diagrama de componentes enfatiza os componentes de software físico (imagens, bibliotecas, pacotes...).
Sua finalidade é adaptar a estrutura de modelo para refletir a organização da equipe ou as restrições da linguagem de implementação.






·         Visão do modelo de Ambiente: apresenta o modelo alvo e as necessidades para se colocar o sistema em funcionamento.

o   Diagrama de implantação ou Instalação: Descrevem os componentes de hardware e software e sua interação com os outros elementos de suporte ao processamento.
Representa a configuração e a arquitetura de um sistema em que estarão ligados seus respectivos componentes, sendo representado pela arquitetura física de hardware, processadores e etc...


Pessoal, agradeço a oportunidade de postar mais este post para todos e espero que gostem!

Não esqueça de enviar seus comentários, sugestão, critica e elógio para nós!

Abraço!

Referências usada:

http://pt.wikipedia.org/wiki/Uml

sábado, 24 de novembro de 2012

Analista de Projetos

Ola, pessoal é um prazer pode novamente compartilhar um pouco mais sobre profissões de TI com todos e hoje, como não poderia faltar vamos falar sobre o Analista de Projetos.

A palavra projeto esta associada a vários tipos de negocio e áreas e por isso a sua definição é sempre ampla, porem, encontramos no site Wikipedia.org uma tradução bem sucinta e direcionada ao que este post quer falar que é projetos na área de TI. Segundo o Wikipédia projetos é: um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo.

A tradução caiu muito para a associação de projetos a um analista ou gerente de projetos porque, segundo o manual mais consumido hoje pelas instituições de ensino que falam sobre projetos de TI, o PMBOK - Project Management Body of Knowledge, um projeto segue um fluxo que se inicia e finaliza, ou seja, nenhum projeto é ou deve ser eterno.

A base deste post será feita encima das boas praticas reunidas no guia PMBOK então vamos conhecer mais sobre esse guia e sobre as praticas nele detalhadas:

O Project Management Body of Knowledge, também conhecido como PMBOK é um conjunto de práticas boas praticas em gestão de projetos ou gerenciamento de projetos publicado pelo Project Management Institute (PMI) e constitui a base do conhecimento em gerenciamento de projetos do PMI.

Uma boa prática não significa que o conhecimento e as práticas devem ser aplicadas uniformemente a todos os projetos, sem considerar se são ou não apropriados.

O Guia PMBOK também fornece e promove um vocabulário comum para se discutir, escrever e aplicar o gerenciamento de projetos possibilitando o intercâmbio eficiente de informações entre os profissionais de gerência de projetos.

O guia é baseado em processos e subprocessos para descrever de forma organizada o trabalho a ser realizado durante o projeto. Essa abordagem se assemelha à empregada por outras normas como a ISO 9000 e o Software Engineering Institute's, CMMI.

O profissional categorizado como gerente de projetos é responsável pela gestão de um projeto desde a sua concepção inicial que é onde a ideia ou necessidade surgiu ate sua finalização que ocorre após a entrega do produto, serviço ou necessidade devidamente apresentada e desenvolvida conforme o escopo da necessidade.

O Analista de projetos não tem condição de gerenciar um projeto sem contar com uma ferramenta que o possibilite de montar um cronograma. O cronograma é sem duvida para o analista de projetos o que vai definir o sucesso ou fracasso de sua atuação quanto o projeto e essa etapa de onde ele executa o lançamento das atividades que são necessárias para execução do projeto é de fato um ponto a ser sempre considerado como ponto de atenção pelo analista.

No mercado existem algumas ferramentas que são utilizadas para gerenciamento de cronograma como: o Project da Microsoft, ferramentas grátis como GanttProject, GanttProject, Open Workbench, Faces, TaskJuggler, OpenProj  que são ferramentas desktop e  Achievo, DotProject que são ferramentas Web.
Uma dica muito importante sobre o uso de ferramentas para gerenciar projetos é: Nunca se deve duplicar informação em mais de uma ferramenta e antes de iniciar a utilização de qualquer dessas ferramentas que citamos, é preciso saber que recursos ela oferece e qual nível de ferramenta o projeto vai requerer. Essa etapa também faz parte das atividades do gerente de projetos porque se a ferramenta falhar todo seu trabalho de gestão será prejudicado!

Os projetos possuem uma característica comum independente de sua área de aplicação, seja na TI, seja na engenharia ou seja em atividades relacionadas a satisfazeres humanos como planejar as férias em família. As características mais comuns de um projetos são:
·         Temporários, possuem um início e um fim definidos.
·         Planejados, executado e controlado.
·         Entregam produtos, serviços ou resultados exclusivos.
·         Desenvolvidos em etapas e continuam por incremento com uma elaboração progressiva.
·         Realizados por pessoas.
·         Possui recursos limitados.

Todo projeto fases bem definidas que são:
·         Inicialização
·         Planejamento
·         Execução
·         Monitoramento e controle
·         Encerramento.

O conjunto de fases de um projeto é chamado de “Ciclo de Vida do projeto” e possui as seguintes características:
  • Cada fase do projeto é marcada pela entrega de um ou mais produtos (deliverables), como estudos de viabilidade ou protótipos funcionais, etc;
  • No início de cada fase, define-se o trabalho a ser feito e o pessoal envolvido na sua execução;
  • O fim da fase é marcado por uma revisão dos produtos e do desempenho do projeto até o momento;
  • Uma fase começa quando termina a outra, porém essa não é uma regra porque pode-se ter projetos onde uma fase precisa ser inicializada enquanto outra ainda esta na fase de revisão ou que ainda nem foi entregue ainda, é que chamamos de overlapping entre as fases, e essa prática é chamada de "fast tracking".
  • Os custos são geralmente crescentes à medida que a fase avança;
  • Os riscos são geralmente decrescentes à medida que a fase avança;

Um projeto envolve sempre pessoas interessadas no produto final e pessoas que são envolvidas com o objetivo de passar informações importantes para o desenvolvimento do projeto. Essas pessoas são chamadas de Stakeholders. Os corpo de stakeholders incluem o gerente de projeto, o cliente, a organização que fará o projeto, os membros da equipe de projeto, o sponsor/patrocinador (indivíduo/grupo interno ou externo que provê os recursos financeiros para o projeto, vendedores, fornecedores, agências governamentais, comunidades afetadas pelo projeto e a sociedade em geral.

Para gerenciar um projeto, o Gerente de Projetos ou Analista de Projetos deve conhecer seus limites de autoridade que é dado a ele dentro da instituição onde o projeto é promovido. Para definir seu nível de autoridade, o PMBOK define que existem 3 tipos de estruturas organizacionais e cada uma com sua característica no que diz respeito a autoridade que é dada ao gerente de projetos.
As estruturas organizacionais são classificadas como:
  • Organização Funcional: É um tipo de organização onde cada funcionário tem um superior bem definido, e as equipes são organizadas por funcionalidade (ex. finanças, produção, etc) ou seguindo estruturas internas da empresa.
Autoridade do Gerente de Projeto: Baixa.
Vantagem: Os funcionários sempre se reportam a um único chefe e esses funcionários geralmente se apresentam com maior estabilidade junto a instituição.
Desvantagem: Subalocação de recursos, pouca força e respeito com o gerente de projetos.
  • Organização projetizada : A empresa é organizada em departamentos, sendo que cada um responde a um gerente de projeto. Algumas áreas dão suporte a todos os projetos.
Autoridade do Gerente de Projeto: Alta.

Vantagem: Possibilita a maximização da alocação de recursos e flexibilidade para montagem de equipes.

Desvantagem: Pouco vinculo do funcionário com a empresa, um recurso pode ficar ocioso se não existir outro projeto em andamento.

  • Organização matricial: A estrutura matricial é uma combinação das estruturas – funcional e projetizada. Com isso pode assumir características distintas que dependem exclusivamente do grau de relevância que cada extremo é considerado. Pode ser dividida em estrutural matricial fraca, forte e balanceada.

o    Matricial Fraca: Mais parecida com a estrutura Funcional onde o gerente de projetos possui pouca autoridade, sua alocação é parcial, os funcionários estão sempre alocados numa mesma função ou área.

o    Matricial Forte: Se assemelha mais a estrutura organizacional Projetizada onde o gerente de projetos possui muita autoridade, os recursos possuem alocação dinâmica conforme necessidade e toda a gerência do projeto se concentram sob o gerente ou analista de projetos.

o    Matricial Balanceada: Este tipo de organização reúne qualidade das duas estruturas que são a organizações Funcionais e Projetizadas. Neste tipo de organização, o gerente de projetos possui autorizada compartilhada sobre o projeto e a equipe possui dedicação parcial ao projeto.

Para gerenciar cada fase de um projeto, o PMBOK apontou ate hoje 9 áreas de conhecimento que auxiliam o gerente de projetos no desempenho de sua função. As áreas de conhecimento são:
  1. Gerenciamento/Gestão de integração do projeto
  2. Gerenciamento/Gestão do escopo do projeto
  3. Gerenciamento/Gestão de tempo do projeto
  4. Gerenciamento/Gestão de custos do projeto
  5. Gerenciamento/Gestão da qualidade do projeto
  6. Gerenciamento/Gestão de recursos humanos do projeto
  7. Gerenciamento/Gestão das comunicações do projeto
  8. Gerenciamento/Gestão de riscos do projeto
  9. Gerenciamento/Gestão de aquisições do projeto

Para conhecer mais sobre essa profissão e se aprofundar no conhecimento sobre a área de gerencia de projetos, acesse as referencias pesquisadas e leia mais sobre esse assunto que é tão enriquecedor para a área de TI.

Não deixe de comentar sobre esse post, deixe-nos seu comentário, sugestão, critica e elogio!
Abraço e ate à próxima!

Referencias usada:

http://www.gerenciamentodeprojeto.com/2009/09/ferramentas-livres-para-gerenciamento.html
http://pt.wikipedia.org/wiki/Projeto
http://pt.wikipedia.org/wiki/Gerente_de_projetos
http://pt.wikipedia.org/wiki/PMBOK