segunda-feira, 31 de março de 2014

D.F.D - Diagrama de fluxo de dados

O que é D.F.D??

O D.F.D é uma técnica usada na programação estruturada de diagramação de software que possui diversos tipos de diagramas, derivando-se em outros diagramas subsequentes.

Podemos ter diversos níveis de D.F.D de forma a representar o fluxo de dados da aplicação.
 D.F.D nível 0  - Apresenta uma visão clara do produto com todos os macro-processos, com entidades externas, fluxo de dados e depósito de dados principais.
 D.F.D nivel 1 - È uma expansão do nível zero com mais detalhes e mais completo incluindo o tratamento de exceções.
 Simbologias usadas na representação D.F.D:
- Entidades Externas
  • São categorias lógicas de objetos ou pessoas que representam Origem ou destino de dados, e, que acionam um sistema e/ou recebem informações

- Fluxo de dados
  • São o Meio por onde os dados e as informações trafegam;
- Processos
  • Transformam fluxos de dados em uma atividade;
 Depósito de Dados
  • São locais de armazenamento de dados (arquivos físicos);

Sugestão para as etapas de elaboração de um D.F.D:
  • Identificar e descrever os requisitos funcionais;
  • Identificar entidades externas(EE);
  • Associar o fluxo de dados que as entidades enviam, consomem ou recebem;
  • Identificar consultas

Como desenhar o primeiro DFD??



  • Iniciar no canto esquerdo com a entidade externa principal;
  • procurar deixar todas as entidades externas nos cantos;
  • na esquerda as EE de Origem e na direita as EE de Destino;
  • desenhe fluxos que surgem, processo e depósitos de dados;
  • verificar se todas as entradas e saídas foram incluídas;
  • associar manutenções aos depósitos de dados;



  • Espaço Nerd



    Modelo Entidade Relacionamento (MER)

     O que é M.E.R ??

    A sigla significa Modelo Entidade-Relacionamento e  tem o objetivo de representar as estruturas de dados da forma mais próxima do mundo real dos negócios.Usa -se o DER (Diagrama entidade -relacionamento).

    Existem três conceitos no MER: Entidade, Atributo e Relacionamento.

    Entende-se que Entidade são objetos do mundo real, as características dos objetos são os Atributos, e a relação entre os objetos são os relacionamentos.
    ou seja :

    Entidade =>    Serve tanto para depósito quanto para recuperação de dados. Ela representa substantivos, concretos ou abstratos.

    Atributo =>     São características que informam sobre a entidade.

    Relacionamento =>  é a interação entre os objetos que indicam a dinâmica dos negócios.
    Os Relacionamentos são identificados por verbos porque representam as ações que uma entidade exerce sobre outra.


    Diagrama Entidade-Relacionamento (DER)

    O Diagrama Entidade-Relacionamento descreve toda estrutura lógica do banco de dados. É possível construí-lo a partir de um MER, identificando assim a partir de um conceito do mundo real como os dados serão armazenados de fato.


    DER tem como ênfase os dados e os relacionamentos. Sua representação utiliza os símbolos:
    • Retângulos - representam as entidades;
    • Elipses - representam os atributos;
    • Losangos - representam os relacionamentos entre as entidades;
    • Linhas - unem os atributos aos conjuntos de entidades e os conjuntos de entidades aos conjuntos de relacionamentos

    CARDINALIDADE MÁXIMA

    Duas cardinalidades máximas são relevantes:
    -   A cardinalidade máxima 1
    -   A cardinalidade máxima  “muitos” representada representada pela letra N


    CARDINALIDADE MÍNIMA

    A cardinalidade mínima  é anotada junto a cardinalidade máxima.
    Especifica se a participação de todas as ocorrências das entidades no relacionamento é obrigatória ou opcional. 
    Em um projeto de BD é usadas somente duas cardinalidades mínimas são elas: 
    • Cardinalidade mínima 0 =>  recebe a denominação de associação OPCIONAL;
    • Cardinalidade mínima 1 =>  recebe a denominação de associação  OBRIGATÓRIA;
    Assista o Vídeo:



    Espaço Nerd









                 http://www.criarweb.com/artigos/118.php

    sexta-feira, 21 de março de 2014

    Desenvolvimento de software: Construção

    Como é feito a  Construção do software??

    Hoje, é considerado errado ter um processo que gere um "big bang!", não se deve ter o software inteiro funcionando por inteiro no primeiro release, o risco é grande demais!
    Um processo de desenvolvimento deve ser:
    • Iterativo (ter várias iterações no tempo)
    • Incremental (gerar novas versões incrementadas a cada release)
               Uma iteração dura entre 2 semanas e 2 meses:
               Motivos:
    • Sempre tem algo para entregar para o cliente apressado (a última iteração)
    • Os requisitos mudam com tempo e um processo iterativo mantém freqüentes contatos com o cliente o que ajuda a manter os requisitos sincronizados
    • Altamente motivador para a equipe de desenvolvimento (e o cliente) ver o software funcionando cedo
    O que é feito a cada iteração?
    • Análise (refinamento de requisitos, refinamento do modelo conceitual)
    • Projeto (refinamento do projeto arquitetural, projeto de baixo nível)
    • Implementação (codificação e testes)
    • Transição para produto (documentação, instalação, ...)
    processo1.gif (9262 bytes)
                                                                     
    A análise

    A análise gera um modelo para entender o domínio do problema, e  também trata em alto nível de como uma solução possível pode ser montada para atender aos requisitos . Acaba gerando uma especificação, mas sempre do ponto de vista do usuário e tratando apenas do domínio do problema.
    Não trata de detalhes de implementação
    Objetos tratados são sempre do domínio do problema (business objects) , muitos diagramas UML podem ser usados.
    O modelo é para o cliente e não para o programador.

    Atividades típicas durante a análise:
    Refinar use cases
    Refinar modelo conceitual
    Refinar glossário
    Definir diagramas de seqüência (opcional)
    Definir contratos de operação (opcional)
    Definir diagramas de estado (opcional)

     O projeto (design)

    O projeto é uma extensão do modelo de análise visando sua implementação num computador.
    Novos objetos aparecem, mas não são do domínio do problema, O resultado é para o programador ver, não o cliente
    Objetos da análise são (geralmente) mantidos e são embutidos numa infra-estrutura técnica.
    • As classes técnicas ajudam os business objects a:
      • Serem persistentes
      • Se comunicarem
      • Se apresentarem na interface do usuário
      • Terem desempenho aceitável (usando caches ou threads, por exemplo)
    • As atividades de projeto incluem:
      • Fase de refinamento da arquitetura (high-level design)
        • Definição de pacotes (módulos), interfaces entre pacotes
        • Decisão sobre uso/criação de bibliotecas e/ou componentes
        • Falaremos disso em detalhes adiante
      • Fase de projeto detalhado (low-level design)
        • Atribuição de responsabilidades entre os objetos
        • Construção de diagramas de classes
        • Pode incluir documentação javadoc (ideal)
        • Construção de diagramas de interação (opcional)
        • Levantamento de necessidades de concorrência
        • Considerações de tratamento de falhas
        • Detalhamento do formato de saída (interface com usuário, relatórios, transações enviadas para outros sistemas, ...)
        • Definição do esquema do BD
        • Mapeamento de objetos para tabelas se o BD for relacional
      • Advertência: se você usar Test-Driven Development, então o design é feito bolando testes e escrevendo o software ao mesmo tempo
        • Neste caso, fazer diagramas ou Javadoc antes de codificar não funciona

    A implementação

    • Escrita do código
    • Relativamente simples se o projeto tiver sido bem feito
    • Programadores devem normalmente seguir regras de codificação da empresa
    • Atividades incluem code reviews
    • Não se deve chegar a esta fase cedo demais!
    • Mais cedo você agarra o teclado, mais vai demorar a terminar!
    • Poucos novos diagramas nesta fase.


    Os testes


    • Inclui várias fases de testes
    • Testes feitos pelo próprio programador durante a programação
      • Unit test: teste de classes individuais (ou de grupos de classes relacionadas)
      • Functional test: teste de funções inteiras (item de menu, p. ex.)
      • Component test: teste de componentes inteiros (exe, dll, ...) sem (ou com pouco) scaffolding
    • Testes feitos por equipes independentes de teste
      • System test: testa a integração entre todos os componentes do produto
      • Alpha test: teste de produto inteiro dentro de casa
      • Beta test: teste de produto inteiro fora de casa
    • Testes devem ser automatizados

    quarta-feira, 19 de março de 2014

    Desenvolvimento de Software: Planejamento e elaboração e requisitos.

    Processo de desenvolvimento de software

    • O que é um processo de desenvolvimento?
                Define quem faz o que, quando e como, para atingir um certo alvo;
    • Uma linguagem de modelagem não é suficiente
    • Precisamos também de um processo de desenvolvimento
    • Linguagem de modelagem + processo de desenvolvimento = método (ou metodologia) de desenvolvimento
               As grandes fases de qualquer processo de desenvolvimento:

                   Planejamento e elaboração

    Criar relatório inicial de investigação (para construir o business case)
    Levantar requisitos funcionais e não funcionais
    Construir glossário (ao longo da fase)
    Definir modelo conceitual inicial (análise inicial)
    Projetar arquitetura
    Priorizar a funcionalidade e distribuí-la entre as iterações
    • Planejamento, definição de requisitos, construção de protótipos 
    • Construção do sistema (inclui codificação e testes)
    • Implantação (colocar em produção, treinar usuários, ...)

    Detalhes sobre o levantamento de requisitos

    • Requisitos são "cortes" no espaço de solução
    • Entendimento do que o usuário quer
    • O resultado é uma promessa para o cliente
    • Não só requisitos funcionais, mas também:
      • Facilidade de uso necessária
      • Quem utilizará o produto
      • Hardware e software alvo para o produto
      • Qualidade/robustez
      • Desempenho
      • Segurança
      • Compatibilidade com outros produtos/versões e necessidades de migração
      • Necessidades de internacionalização do produto
      • Suporte
      • Preço da solução
      • Documentação necessária
      • Uso de padrões
      • Aspectos legais
      • Integração com outros produtos
      • etc.
    Não se fala "como" as coisas serão feitas, "Use cases" descrevem cenários de funcionalidade desejada.Também chamados de "User Stories", pois é o usuário que decide o que deve ser feito.

    segunda-feira, 17 de março de 2014

    REQUISITOS

    LEVANTAMENTO DE REQUISITOS

    Este processo basicamente consiste em identificar e detalhar o que deve ser feito do ponto de vista de negócios e recursos em um determinado sistema. Pode-se entender requisito como “uma coisa que o sistema deve fazer”.
    Na etapa de levantamento de requisitos, o time de desenvolvimento se prende em entender o negócio que o sistema vai automatizar, esse levantamento compreende explorar as necessidades dos usuários. No caso de um sistema já existir, a dica é não se prender a estrutura antiga, e partir logo para um sistema novo,pois tempo gasto até entender o sistema antigo pode ser muito valioso depois no projeto.mas sempre começando o novo híbrido, ou seja fazendo parte do antigo.

    Requisitos Funcionais
    Os requisitos funcionais abordam O QUE o sistema deve fazer. "Descreve as funções que o sistema deve executar"
    Exemplos:
    1. O sistema deve permitir que cada professor realize o lançamento de notas das turmas nas quais lecionou.
    2. O sistema deve permitir que o aluno realize a sua matrícula nas disciplinas oferecidas em um semestre.
    Requisitos Não-Funcionais
    Esses requisitos declaram características de qualidade que o sistema deve possuir e que estão relacionadas às suas funcionalidades. Temos algumas divisões dentro desse tipo de requisitos.
    Confiabilidade => Nada mais do que medidas quantitativas da confiabilidade do sistema, como por exemplo, o tempo médio entre falhas, recuperação de falhas, erros por milhares de linhas de código.
    Portabilidade => Aqui tratamos da facilidade de migrar o sistema para outras plataformas. Que devemos dar uma atenção, para que o sistema rode em qualquer lugar.
    Segurança => Aqui são descritas as particularidades sobre acessos ao sistema, segurança extra em login, restringir acesso de algumas pessoas, entre outros.
    Usabilidade => Aqui são descritos os requisitos que se relacionam ou afetam a usabilidade do sistema. Coisas relacionadas à facilidade de uso, sobre a necessidade de treinamentos para os usuários.
    Documentos de Requisitos
    Como resultado do processo de levantamento de requisitos é desenvolvido o documento de requisitos do sistema. Este documento contém a especificação de todos os requisitos funcionais e não funcionais do software, incluindo as capacidades do produto, os recursos disponíveis, os benefícios e os critérios de aceitação.

    Espaço nerd



    fontes: fernandogodoy.wordpress.com
    http://www.cce.puc-rio.br/sitecce/website/website.dll/folder_curso?nCurso=levantamento-de-requisitos-de-software
    http://pt.slideshare.net/tgiovanella1/aula-1-levantamento-de-requisitos

    segunda-feira, 10 de março de 2014

    OS MODELOS DE DESENVOLVIMENTO DE um SOFTWARE


    O Desenvolvimento do Software

    Nos deparamos com várias metodologias para o desenvolvimento de um projeto, mas temos os modelos de desenvolvimento, que são a idéia inicial de como vai ser tal software . Os modelos de desenvolvimento é dividido em  partes principais, o desenvolvimento em Cascata, e o Iterativo e Incremental
    O desenvolvimento em cascata é o mais tradicional , por parecer ser mais simples e organizado, porém durante o desenvolvimento do projeto pode ocorrer inúmeras falhas decorrentes desse modelo Cascata, por isso veio os métodos Iterativo e Incremental, com a ideia de substituir o modelo Cascata e acabar com as suas falhas, mas como nada é perfeito eles também tem as suas falhas, mas vamos conhecer um pouco de cada e entender qual pode ser a melhor opção na hora de desenvolver um software.


    • O Modelo Cascata

      • Ou  (waterfall) tornou-se conhecido na década de 70 e é referenciado na maioria dos livros de engenharia de software ou manuais de padrões de software. Nele as atividades do processo de desenvolvimento são estruturadas numa cascata onde a saída de uma é a entrada para a próxima. As suas principais atividades são:
      • Estudo de viabilidade -> Análise e especificação de requisitos -> Design da arquitetura -> Design detalhado->
      • Codificação e testes de unidades -> Integração e teste do sistema -> Entrega e instalação -> Manutenção
        • Este modelo, quando proposto, introduziu importantes qualidades ao desenvolvimento. A primeira chama a atenção de que o processo de desenvolvimento deve ser conduzido de forma disciplinada, com atividades claramente definidas, determinada a partir de um planejamento e sujeitas a gerenciamento durante a realização.
        • Outra qualidade define de maneira clara quais são estas atividades e quais os requisitos para desempenhá-las. Por fim, o modelo introduz a separação das atividades da definição e design da atividade de programação que era o centro das atenções no desenvolvimento de software.
        • Quais as vantagens e desvantagens do modelo cascata??
        •  Vantagens Torna o processo de desenvolvimento estruturado; Tem uma ordem sequencial de fases; Cada fase cai em cascata na próxima e cada fase deve estar terminada antes do início da seguinte; Todas as atividades identificadas nas fases do modelo são fundamentais e estão na ordem certa; Esta abordagem é atualmente a norma e provavelmente permanecerá como tal nos próximos tempos;
        •  Desvantagens Não fornece feedback entre as fases e não permite a atualização ou redefinição das fases anteriores; Não suporta modificações nos requisitos; Não prevê a manutenção; Não permite a reutilização; É excessivamente sincronizado; Se ocorrer um atraso todo o processo é afetado; Faz aparecer o software muito tarde;
      video explicativo do desenvolvimento cascata 
    • Desenvolvimento Iterativo e Incremental 
    • O desenvolvimento Iterativo e Incremental é um processo de desenvolvimento cíclico
    • Ciclos == Iterações
    • Começa com um planejamento inicial...
    • e termina com entregas entre as iterações.
    • Incremental é uma estratégia... onde as partes são criadas separadamente
    • e integradas quando completadas.
    • Iterativo refere-se ao loop, quando tais partes serão revisadas.
    • Cada iteração entrega uma parte do produto funcionando.
    • A idéia básica desse processo é desenvolver software incrementalmente, permitindo aprender e corrigir as versões anteriormente entregues.
    • Há algumas fases neste processo...
    • Concepção-> Elaboração -> Construção ->Transição ->                                                                                    
    • A Concepção identifica...
    • Escopo do Projeto  ->   Riscos   ->   Requisitos funcionais e não- funcionais.
    • A Elaboração cria a arquitetura...
    • A Construção transforma tudo em código e testes...
    • ( Não, ela não programa...!!)
    • E a Transição coloca tudo em ambiente de produção..
    • à medida que são entregues.

     Espaço Nerd





    segunda-feira, 24 de fevereiro de 2014

    Análise Orientada a Objeto

    Para que serve??

    Entender qual o papel da análise orientada a objetos dentro do processo de desenvolvimento de software, visando a identificação de informações necessárias às decisões de projeto e modelagem de um sistema.

    Em que situação é útil:

    Identificação de informações que apoiam as atividades de modelagem, análise e projeto de sistemas de software.

    Como nós todos ansiamos , precisaremos participar de algumas decisões de projeto, como selecionar a técnica de análise e modelagem, linguagem de programação e ambiente de desenvolvimento adequados. 
    É importante refletir sobre a ordem em que suas atividades são executadas. Por exemplo, antes de escolher uma linguagem de programação e ambiente de desenvolvimento,  devemos definir a estratégia de análise e modelagem de sistemas.
    Entretanto,sabe-se que os sistemas de software encontram-se, quase permanentemente, sendo modificados. Essas mudanças ocorrem devido à necessidade de corrigir erros existentes no software ou de adicionar novos recursos e funcionalidades.
    Em razão disto, você pode questionar: Por que modelar um sistema? Porque à medida que o sistema cresce, também cresce o código, tornando mais difícil seu desenvolvimento e mais ainda sua manutenção. É mais fácil raciocinar e fazer a manutenção em um sistema para o qual você tem um modelo. Para tanto, a modelagem é essencial no desenvolvimento de qualquer sistema. A análise orientada a objetos serve para ajudar no entendimento e decisões de projeto .


    A imagem abaixo representa os diversos tipos de diagramas que podem ser elaborados durante todo o desenvolvimento do sistema:


              Antes de iniciar a modelagem com uma linguagem como a UML, você deve proceder a análise orientada a objetos, que compreende os seguintes passos:
    • Entender o problema do cliente e identificar e documentar os requisitos;
    • Descrever os requisitos funcionais usando diagramas de casos de uso da UML;
    • Identificar objetos e classes a partir das informações no documento de requisitos, descrição do sistema e especificação de casos de uso;
    • Identificar relacionamentos entre as classes ;
    • Identificar atributos e operações ;
    • Elaborar e analisar os diagramas de classes de sistema, adicionando e/ou corrigindo atributos e operações, bem como revisando os relacionamentos identificados.
     "O primeiro passo, a partir do momento em que você já fez o levantamento de requisitos junto ao cliente, é identificar objetos e classes. Nesse momento, você é o projetista e, portanto, deve examinar a declaração do problema procurando identificar objetos."

    Entendendo um pouco UML
    veja tambem https://www.youtube.com/watch?v=omNzJ7y2BpM

    Espaço Nerd



    fonte: 
    http://www.teclogica.com.br/blog/?p=679

    http://blogdosanalistas.files.wordpress.com/2010/12/uml.jpg
    http://ahinfo.net.br/parse/wp-content/uploads/2010/08/uml3-e1282925886685.jpghttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVc52WCKpdcZgfRqdFVxb44nwpigh2FilC_MTNFBhLdc8JSvAmtGUbfN22XAydzg46dlZUBcn-ZUxsbp9QD3j-L0I7FY2K-bALPEUzRTtDgKcVszhcn1oVW0XQbhqRkpJuJyrSKLgrIaX4/s1600/420px-UML_Diagrams.jpg

    http://hacktoon.com/nerdson/sol-mar-e-uml/

    segunda-feira, 17 de fevereiro de 2014

    BEM VINDOS!!

    BEM VINDOS  AO   BAM ( Buno , Aldo , Marco)

    ESTE BLOG FOI CRIADO COM O PROPÓSITO DE FORNECER INFORMAÇÕES IMPORTANTES SOBRE A DISCIPLINA "Fundamentos da Análise Orientada a Objetos".

    Sabemos que necessitamos de muita leitura , então sempre que puder estaremos deixando alguns links relacionados ao nosso curso, TADS .

    LIVROS GRATUITOS PARA BAIXAR:
    http://canaldoensino.com.br/blog/diversos-livros-de-ti-para-baixar-gratis