segunda-feira, 14 de junho de 2010

Analise e Projeto Orientada a Objetos - Diagramas

Diagrama de Casos de Uso

O Diagrama de Casos de Uso tem o objetivo de auxiliar a comunicação entre os analistas e o cliente.
Um diagrama de Caso de Uso descreve um cenário que mostra as funcionalidades do sistema do ponto de vista do usuário.
O cliente deve ver no diagrama de Casos de Uso as principais funcionalidades de seu sistema.

O diagrama de Caso de Uso é representado por:
* atores;
* casos de uso;
* relacionamentos entre estes elementos.

Estes relacionamentos podem ser:

* associações entre atores e casos de uso;
* generalizações entre os atores;
* generalizações, extends e includes entre os casos de uso.

casos de uso podem opcionalmente estar envolvidos por um retângulo que representa os limites do sistema.

Sistema

* Limites do sistema: representado por um retângulo envolvendo os casos de uso que compõem o sistema.
* Nome do sistema: Localizado dentro do retângulo.



Diagrama de Classes

Um diagrama de três faces

Descrever os vários tipos de objetos no sistema e o relacionamento entre eles.

Perspectivas

Um diagrama de classes pode oferecer três perspectivas, cada uma para um tipo de usuário diferente. São elas:

Conceitos ou Entidades



o Representa os conceitos do domínio em estudo.
o Perspectiva destinada ao cliente.

Classes



o Tem foco nas principais interfaces da arquitetura, nos principais métodos, e não como eles irão ser implementados.o Perspectiva destinada as pessoas que não precisam saber detalhes de desenvolvimento, tais como gerentes de projeto.

Classes de Software



o Aborda vários detalhes de implementação, tais como navegabilidade, tipo dos atributos, etc.
o Perspectiva destinada ao time de desenvolvimento.

Diagramas de Seqüência


Consiste em um diagrama que tem o objetivo de mostrar como as mensagens entre os objetos são trocadas no decorrer do tempo para a realização de uma operação.

Em um diagrama de seqüência, os seguintes elementos podem ser encontrados:

* Linhas verticais representando o tempo de vida de um objeto (lifeline);
* Estas linhas verticais são preenchidas por barras verticais que indicam exatamente quando um objeto passou a existir. Quando um objeto desaparece, existe um "X" na parte inferior da barra;
* Linhas horizontais ou diagonais representando mensagens trocadas entre objetos. Estas linhas são acompanhadas de um rótulo que contém o nome da mensagem e, opcionalmente, os parâmetros da mesma. Observe que também podem existir mensagens enviadas para o mesmo objeto, representando uma iteração;
* Uma condição é representada por uma mensagem cujo rótulo é envolvido por colchetes;
* Mesagens de retorno são representadas por linhas horizontais tracejadas. Este tipo de mensagem não é freqüentemente representada nos diagramas, muitas vezes porque sua utilização leva a um grande número de setas no diagrama, atrapalhando o entendimento do mesmo. Este tipo de mensagem só deve ser mostrada quando forfundamental para a clareza do diagrama.

Observe a figura abaixo.



Diagrama de Atividades

O objetivo do diagrama de atividades é mostrar o fluxo de atividades em um único processo. O diagrama mostra como um atividade depende uma da outra.
Um diagrama de atividade pode ser regiões denominadas swimlanes. Estas regiões esão associadas a um objeto do modelo. Desta forma, dentro de cada região, encontram-se as atividades relativas ao objeto da região.
As atividades são conectadas através de arcos (transições), que mostram as dependências entre elas.

Exemplo:
Descrição do exemplo: Retirando dinheiro de um caixa eletrônico (para cartões de crédito).



Diagrama de Estados

Em um diagrama de estado, um objeto possui um comportamento e um estado.
O estado de um objeto depende da atividade na qual ele está processando.
Um diagrama de estado mostra os possíveis estados de um objeto e as transações responsáveis pelas suas mudanças de estado.

Exemplo:
Descrição do exemplo: Modelagem do sistema de login. Para que o usuário seja autenticado, ele deve fornecer dois valores: SSN (Social Security Number) e o PIN (Personal ID Number). Após a submissão é feita uma validação.

Diagrama de estado para o objeto Login.



Diagrama de Comunicação

Ele normalmente é utilizado como complemento do diagrama de seqüência, porem possui um enfoque diferente, concentrando-se em como os objetos estão vinculados através de mensagens. Pode ser gerado a partir do diagrama de seqüências por representar os mesmos dados. Outra característica do diagrama de comunicação é que as mensagens possuem numeração para designar seqüência.



Nesta figura é mostrado o diagrama de comunicação do caso de uso realizar submissão. É mostrado as mensagens trocadas entre o Submissor, a página do congresso, o controlador do congresso, o tema e a Submissão.

Diagramas de Implementação


Os diagramas de implementação são empregados para a modelagem da visão estática da implementação de um sistema. Na maior parte, isso envolve a modelagem da topologia do
hardware em que o sistema é executado.
São utilizados para visualizar, especificar e documentar sistemas embutidos, cliente/servidor, distribuídos e gerenciamento de sistemas executáveis.



Ao criar um software, você como programador focaliza a arquitetura e a implementação dele, entretanto, como engenheiro de sistemas, seu foco principal está no hardware e no software e no gerenciamento da compatibilidade dos dois.

Os diagramas de implementação são utilizados para analisar a topologia dos processadores e dispositivos nos quais o software é executado.

DICA: Vejam e revejam todos esses diagramas, tivemos 1 semestre inteiro para aprender todos esses diagramas, mas com muito estudo garanto que voces aprende isso em questão de um mes. Procure fazer diagramas representando diversos tipos de exemplo.

Fonte: http://www.dsc.ufcg.edu.br/

Até a próxima.

Duvidas e sugestões: ettorefrancobr@gmail.com

domingo, 13 de junho de 2010

Engenharia de Software - Introdução

O que é Engenharia de Software?

Voltada para a especificação, desenvolvimento e manutenção de sistemas de software, aplicando tecnologias e práticas.
Objetivo: construir sistema organizado, visando produtividade e qualidade.

Porque Engenharia de Software?



Áreas de conhecimento de Engenharia de Software


-Requisitos de Software
-Projeto (Design) de Software
-Implementação de Software
-Teste de Software
-Manutenção de Software
-Gerência de Configuração de Software
-Gerência de Engenharia de Software
-Processos de Engenharia de Software
-Ferramentas e Métodos de Engenharia de Software
-Qualidade de Software

Crise do Software – anos 70




-Projetos estourando o orçamento
-Projetos estourando o prazo
-Software de baixa qualidade
-Software muitas vezes não atingiam os requisitos
-Projetos não gerenciáveis e o código difícil de manter.

Solução da Crise do Software

-O uso de melhores técnicas, métodos e ferramentas
-Mais treinamento e educação
-A mudança de paradigma sobre o que é desenvolver software e como deveria ser feito.

Processo de Software



Conjunto de atividades cujo objetivo é o desenvolvimento ou evolução do software.
Atividades genéricas:

Especificação – definição da funcionalidade do software e as restrições em sua operação
Desenvolvimento - produção do software de modo que atenda as especificações.
Validação – garantir os interesses do cliente.
Evolução - atender às necessidades mutáveis do cliente.

Modelo de Processo

Uma representação, ou abstração dos objetos e atividades envolvidas no processo de software.

-Modelos genéricos = Paradigmas
-Modelo em Cascata
-Espiral
-Prototipação
-Desenvolvimento iterativo e evolutivo
-Ágil

Métodos

Um processo com uma série de passos, para construir um software.
Um método de Engenharia de Software pode ser considerado como parte da metodologia

Por exemplo:

Metodologias de Desenvolvimento Ágil
Métodos: XP, Desenvolvimento Ágil
Metodologia Orientada a Objetos
Métodos: RUP

Sistemas CASE

Sistemas CASE são freqüentemente utilizados para apoiar a aplicação dos métodos.
Upper-CASE : ferramentas de apoio às fases iniciais do processo de software
Lower-CASE : ferramentas de apoio às fases finais processo de software (implementação e testes)

Responsabilidade Profissional




-Confidencialidade
-Competência
-Direitos de propriedade
-Má utilização de computadores

Código de ética

Engenheiros de software se comprometerão a fazer da análise, da especificação, do projeto, do desenvolvimento, dos testes e da manutenção de software uma profissão benéfica respeitada. De acordo com seu compromisso com a saúde, a segurança e o bem estar do público, os engenheiros de software deverão assegurar que seus produtos e as alterações a eles relacionadas cumpram o mais alto padrão profissional possível.

PÚBLICO
Os engenheiros de software agirão consistentemente com o interesse público.

CLIENTE E EMPREGADOR
Os engenheiros de software agirão de acordo com os melhores interesses de seus clientes e empregadores de modo consistente com o interesse público.

PRODUTO
Engenheiros de software deverão assegurar que seus produtos e as alterações a eles relacionadas cumpram o mais alto padrão profissional possível.

JULGAMENTO
Os engenheiros de software manterão integridade e independência em seu julgamento profissional.

GERENCIAMENTO
Os gerentes e líderes de engenharia de software adotarão e promoverão uma abordagem ética para o gerenciamento do desenvolvimento e da manutenção do software.

PROFISSÃO
Os engenheiros de software seguirão a integridade e reputação da profissão, de modo consistente com o interesse público.

COLEGAS
Os engenheiros de software serão justos e darão apoio aos seus colegas.

PESSOAL
Os engenheiros de software participarão de aprendizado constante com relação à prática de sua profissão e promoverão uma abordagem ética dessa prática.

Resumindo

A engenharia de software é uma disciplina da engenharia que se ocupa de todos os aspectos da produção de software

Produtos de software consistem de programas desenvolvidos e da documentação associada. Os atributos essenciais dos produtos são a facilidade de manutenção, a confiança e a evolução do software.

O processo de software consiste em atividades envolvidas no desenvolvimento de produtos de software. As atividades básicas são a especificação, o desenvolvimento, a validação e a evolução do software.

Métodos são os meios organizados de produzir software. Eles incluem sugestões sobre o processo a ser seguido, as notações a serem utilizadas, as regras que regem as descrições de sistema produzidas e as diretrizes do projeto.

Ferramentas CASE são sistemas de software projetados para dar apoio às atividades de rotina no processo de software, tais como editar diagramas de projeto, verificar a consistência de diagramas e manter o controle dos testes de programas.

Os engenheiros de software tem responsabilidades para com a engenharia como profissão e a sociedade. Eles não devem se preocupar exclusivamente com questões técnicas.


DUVIDAS e SUGESTÕES - ettorefrancobr@gmail.com