1 / 60

Melhores Práticas

Melhores Práticas. RUP. Desenvolvimento Iterativo. Boas Práticas: Desenvolvimento iterativo. Por que desenvolver iterativamente?. Riscos. Cascata atrasa a resolução de riscos. Requisitos. Projeto. Implementação. Testes / Integração. Tempo. Boas Práticas: Desenvolvimento iterativo.

lotta
Download Presentation

Melhores Práticas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Melhores Práticas RUP Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  2. Desenvolvimento Iterativo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  3. Boas Práticas: Desenvolvimento iterativo • Por que desenvolver iterativamente? Riscos Cascata atrasa a resolução de riscos Requisitos Projeto Implementação Testes / Integração Tempo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  4. Boas Práticas: Desenvolvimento iterativo • Por que desenvolver iterativamente? Riscos Cascata Iterativo Concepção Elaboração Construção Transição Tempo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  5. Início da 100% integração (% codificado) Progresso do projeto Deadline original Tempo Fonte: Software Project Management, Walker Royce Desenvolvimento cascata atrasa a redução de riscos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  6. Ciclo de vida iterativo 100% (% codificado) Ciclo de vida tradicional Progresso do projeto Tempo Fonte: Software Project Management, Walker Royce Desenvolvimento iterativo antecipa a redução de riscos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  7. Boas Práticas: Desenvolvimento iterativo • Benefícios: Desenvolvimento iterativo lida com mudanças • Requisitos mudam • Os usuários mudam de idéia durante o projeto • o contexto muda • aprende-se mais sobre o sistema, a tecnologia • Novas tecnologias podem ser incorporadas • Como o produto é desenvolvido incrementalmente, uma nova tecnologia pode ser utilizada mesmo com o projeto em andamento Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  8. Boas Práticas: Desenvolvimento iterativo • Benefícios: O sistema é integrado contínua e progressivamente • A integração não ocorre em um grande big-bang no fim do projeto • Em Cascata, a integração do sistema pode levar 40% do esforço total no final do projeto • A integração é feita iterativamente em diversas etapas e trabalha com quantidades pequenas de elementos inicialmente Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  9. Boas Práticas: Desenvolvimento iterativo • Benefícios: Riscos são atacados cedo • Permite lidar e descobrir riscos cedo, ao invés de esperar pela última etapa do modelo Cascata • Cada iteração percorre todos os fluxos e exercita • O uso de ferramentas • A utilidade/limitação dos componentes de prateleira • As habilidades (treinamento) das pessoas • Riscos conhecidos serão atacados e provados inofensivos enquanto novos riscos serão descobertos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  10. Boas Práticas: Desenvolvimento iterativo • Benefícios: Aprendizado e melhoria • As equipes aprendem ao longo do projeto • Diversas competências e especialidades são exercitadas a cada iteração • Programadores, analistas, testadores, projetistas, etc. trabalham desde o início • A necessidade de treinamento adicional ou ajuda externa é detectada cedo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  11. Boas Práticas: Desenvolvimento iterativo • Benefícios: Aumenta reuso • O sistema é parcialmente projetado/implementado • Facilita a identificação de partes reutilizáveis • Ao invés de ter de identificar todas as partes comuns de todo o sistema • Facilita o uso de componentes de prateleira (COTS) • Várias iterações permitem selecionar e validar diversos produtos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  12. Boas Práticas: Desenvolvimento iterativo • Benefícios: Produto mais robusto • Erros são corrigidos continuamente • Falhas são detectadas e corrigidas desde as primeiras iterações • Problemas de desempenho são descobertos cedo, ao invés de identificá-los próximos da entrega • Funcionalidades críticas têm muitas oportunidades para serem testadas e melhoradas Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  13. Boas Práticas: Desenvolvimento iterativo • Benefícios: Prevê mudanças táticas • Por exemplo, permite lançar um produto com funcionalidades reduzidas, porém antes do concorrente Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  14. Boas Práticas: Desenvolvimento iterativo • Benefícios: Melhoria contínua de processo • A avaliação ao final da iteração analisa não apenas o progresso do projeto, mas também aspectos de melhoria de processo ou melhoria organizacional Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  15. Boas Práticas: Desenvolvimento iterativo “Com o modelo Cascata, tudo parecia sob controle até nos aproximarmos da entrega. Até que tudo desabava. Com a abordagem iterativa, é muito difícil esconder a verdade por tanto tempo.” Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  16. Arquitetura Baseada em Componentes Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  17. Boas práticas: Arquitetura baseada em componentes • O que é arquitetura de software? • “Organização da estrutura dos componentes mais significativos do sistema • Que interagem através de interfaces • São decompostos em componentes menores e outras interfaces.” • “É o projeto dos elementos que têm papel dominante para qualidades do sistema como desempenho ou extensibilidade, no longo prazo.” • “Um sistema complexo é mais que a soma de suas partes. Ele deve ter uma estrutura coerente (arquitetura) que unifique e organize as partes para permitir seu crescimento sem aumentar a complexidade.” Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  18. GUI Aplicação Negócios <<thread>> Middleware Comunicação S.O. BD <<thread>> Hardware Dados Boas práticas: Arquitetura baseada em componentes • No RUP • A arquitetura deve ser estabilizada na Elaboração • Através de uma arquitetura implementável • Uma implementação parcial do sistema que demonstra a viabilidade da arquitetura • Como documentar a arquitetura? Através de diferentes visões Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  19. Boas práticas: Arquitetura baseada em componentes • No RUP • Visões da arquitetura • Casos de uso • Visão lógica • Implementação • Processo • Distribuição • GUI • Segurança • Dados • Etc... Visões recomendadas pelo RUP Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  20. Boas práticas: Arquitetura baseada em componentes • A descrição de arquitetura • Cada visão é um subconjunto dos modelos • O documento da arquitetura deve ser uma reescrita dos modelos para torná-lo mais fácil de entender • Stakeholders devem ser capazes de entender a arquitetura • As visões são abstrações ou simplificações dos modelos que enfatizam as características mais importantes de cada modelo • Deve ser analisada, projetada, implementada e testada na Elaboração • Ao final da Elaboração, o arquiteto deve estar apto a afirmar: “Eu sei que posso construir o resto do sistema sem encontrar nenhum problema técnico crítico.” Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  21. Boas práticas: Arquitetura baseada em componentes • Visão de Casos de Uso • Ilustra os casos de uso e cenários arquiteturalmente importantes • Como toda visão de arquitetura, é um subconjunto do modelo completo Extrato Transferência Login Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  22. Estoque Contabilidade Financeiro Boas práticas: Arquitetura baseada em componentes • Visão Lógica • Ilustra os subsistemas, pacotes ou classes arquiteturalmente relevantes • Tanto aspectos estruturais como aspectos dinâmicos são projetados • Pode envolver diagramas de • Classes • Estados e Interação • Objetos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  23. <<EXE>> Boas práticas: Arquitetura baseada em componentes • Visão Implementação • Captura decisões de implementação • Diagrama de dependências entre subsistemas (relação de import) • Organização dos componentes • Auxilia • Na alocação das equipes (ou terceiros) que realizarão as atividades • Na estimativa do tamanho do sistema • Na descoberta de oportunidades de reuso Arquivo fonte Executável Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  24. <thread> ControladorGUI <process> Caixa Eletrônico <thread> ConexãoServidor <thread> ControladorDispositivos Boas práticas: Arquitetura baseada em componentes • Visão de Processos • Ilustra a decomposição do sistema em termos de processos relevantes arquiteturalmente • Inclui o mapeamento de classes e subsistemas em processos e threads • Representado por diagramas de classes e objetos que contenham processos ou threads Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  25. :Impressora :ServidorReceita :ServidorBD :ControleTransacao :Controle Declarações :Cliente :Contribuinte :Browser Boas práticas: Arquitetura baseada em componentes • Visão de Distribuição • Provê entendimento da distribuição física do sistema através de vários nós da rede • Os objetos responsáveis por controle de processamentos podem ser alocados a cada nó • A capacidade do nó em processar o objeto e a capacidade de conexão dos nós (por exemplo, a largura da banda) devem ser considerados Rede local Internet Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  26. Boas práticas: Arquitetura baseada em componentes • Um processo ingênuo para definição de arquitetura • Primeiro, preocupe-se com a infra-estrutura geral • O sistema deve seguir alguma norma, padrão, política ou lei? • O sistema tem que se conectar com algum sistema legado? • Será utilizado algum middleware? • Quais serão os sistemas operacionais? • Qual será o SGBD? • Existe a necessidade de se conectar com um hardware específico? Se sim, quais são seus drivers? • Descreva os nós e suas conexões (visão de distribuição) • Apenas um entendimento geral do domínio da aplicação é necessário Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  27. Boas práticas: Arquitetura baseada em componentes • Um processo ingênuo para definição de arquitetura • Depois, preocupe-se com a infra-estrutura específica da aplicação • Quais os casos de uso mais relevantes? (Visão de Casos de Uso) • Quais os processos mais importantes? (Visão de Processos) • Como o sistema será modularizado (quais são os subsistemas)? (Visão Lógica) • Qual a relação dos componentes de implementação e elementos de projeto? (Visão de Implementação) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  28. Boas práticas: Arquitetura baseada em componentes • Um processo ingênuo para definição de arquitetura Aplicações Gerais Aplicações Específicas Políticas Leis Padrões Normas Visão de Casos de Uso Requisitos não-funcionais Visão de Processos Sistemas legados Middleware Sistema Operacional Visão Lógica Sistema de rede SGBD Visão de Implementação Drivers Visão de Distribuição Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  29. Boas práticas: Arquitetura baseada em componentes • Um processo ingênuo para definição de arquitetura • A cada projeto o processo pode dar ênfase a aspectos ou visões diferentes • Depende do projeto • A arquitetura não é apenas documentada, mas implementada (arquitetura executável) • A implementação e teste demonstram sua viabilidade • Desenvolve-se a arquitetura até se adquirir confiança que ela suporta casos de uso • Hoje • E suportará novos casos de uso no futuro • Enquanto a arquitetura não estiver estável, o projeto ainda não tem maturidade para iniciar a fase de Construção Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  30. Boas práticas: Arquitetura baseada em componentes • Arquiteturas não especificam todos os detalhes do sistema • Apenas dão uma perspectiva da organização geral do sistema • Estão relacionados com a estrutura dos componentes principais (de alto nível) do sistema, seu comportamento e qualidades como • Usabilidade, desempenho, flexibilidade, reusabilidade, entendimento, extensibilidade, etc. • As 5 visões podem não ser suficientes e completas em todos os projetos • Mesmo quando a empresa possui um padrão de arquitetura • Isto não elimina a fase de projeto da arquitetura Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  31. Boas práticas: Arquitetura baseada em componentes • O que é um componente? • "Um pedaço de software • Não trivial • Substituível • Praticamente independente • Com funcionalidade e escopo bem definidos." Rational • Por exemplo: módulo, pacote ou subsistema Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  32. Boas práticas: Arquitetura baseada em componentes • Desenvolvimento baseado em componentes • “Buy, do not build!” Fred Brooks • Constrói sistemas através da integração de componentes de software previamente existentes • Melhora a flexibilidade e manutenibilidade dos sistemas • Potencialmente, reduz os custos de desenvolvimento e permite “montar” sistemas rapidamente • Aumenta o reuso evitando reescrita de código Escrita de código (programação) Montagem de software (componentização) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  33. Boas práticas: Arquitetura baseada em componentes • Componentes comerciais (COTS – Commercial Off-The-Shelf) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  34. Boas práticas: Arquitetura baseada em componentes • Componentes comerciais (COTS – Commercial Off-The-Shelf) Fonte: Software Project Management Walker Royce Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  35. Boas práticas: Arquitetura baseada em componentes • Queremos o melhor dos dois mundos Arquitetura bem documentada e definida em termos de Componentes Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  36. Boas práticas: Arquitetura baseada em componentes • Arquitetura + Componentes • Uma arquitetura modular permite • Isolar • Projetar • Desenvolver • Testar • Integrar componentes bem definidos • Alguns componentes podem ser desenvolvidos para se tornarem reusáveis nos próximos projetos • Muitos componentes podem ser encontrados na indústria • Evolução no desenvolvimento de software Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  37. Boas práticas: Arquitetura baseada em componentes • Boas arquiteturas são • Flexíveis • Reuso significativo • Clara divisão de trabalho entre os times • Melhora manutenibilidade e extensibilidade • Encapsulamento de hardware e dependências de sistemas • Baseadas em componentes • Reuso ou customização de componentes existentes • Escolha de componentes de prateleira • Evolução incremental dos software existentes Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  38. Controle de Mudanças Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  39. Boas práticas: Controle mudanças • Contexto atual • Vários desenvolvedores • Diferentes equipes • Equipes em diferentes locais • Trabalhando juntas • Em várias iterações • Em vários releases • Em vários produtos • Em diferentes plataformas Sem controle de mudanças, o desenvolvimento pode facilmente degenerar para o caos. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  40. Boas práticas: Controle mudanças • Deve-se ter procedimentos bem definidos • Melhora a alocação de recursos baseado em determinadas prioridades ou riscos • Se usado em uma abordagem iterativa, permite contínuo monitoramento de mudanças e, conseqüentemente, rápida descoberta de problemas Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  41. Boas práticas: Controle mudanças • Benefícios • O fluxo de mudanças de requisitos é bem definido e repetível • Requisição de mudanças permite uma comunicação mais eficiente • Áreas de trabalho isoladas diminuem as interferências entre equipes trabalhando em paralelo • Estatísticas sobre taxa de alterações de artefatos fornecem uma boa métrica para avaliar o status do projeto • A propagação da mudança é avaliada e controlada • Mudanças podem ser mantidas em um sistema robusto e configurável Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  42. Gerência de Requisitos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  43. Boas práticas: Gerência de requisitos • O que é um requisito? • “Especifica o que deve ser implementado. Descreve o comportamento do sistema, uma propriedade ou atributo.” Ian Sommervile e Pete Sawyer (Requirements Engineering – A Good Practice Guide) • “Uma condição ou capacidade com a qual o sistema deve ter conformidade.” Rational • Gerência de requisitos • Abordagem sistemática para • Levantar, organizar e documentar requisitos • Estabelecer e manter um acordo entre o cliente e os desenvolvedores a respeito de mudanças de requisitos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  44. Stakeholders Projeto Requisitos Documentos da organização Boas práticas: Gerência de requisitos • Requisitos e suas dependências Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  45. Boas práticas: Gerência de requisitos • Problemas com requisitos? • Requisitos não são sempre óbvios • Possuem diferentes fontes • Existem diferentes tipos e em diferentes níveis de detalhe • O número de requisitos pode se tornar intratável • Relacionam-se com outros requisitos e outros documentos e pessoas • Possuem propriedades únicas. Não são todos igualmente importantes nem fáceis de implementar • Podem estar relacionados a diferentes interesses de diversos stakeholders • Requisitos mudam Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  46. Boas práticas: Gerência de requisitos Como contra-atacar? • Analise o problema • Entenda o problema por trás dos requisitos e proponha soluções em alto nível • Chegue a um acordo com todos os envolvidos no projeto em relação ao problemas reais da organização e sobre quem são os stakeholders • Defina o escopo da solução Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  47. Boas práticas: Gerência de requisitos Como contra-atacar? • Entenda as necessidades dos stakeholders • Possíveis fontes de requisitos • Clientes, parceiros, usuários, especialistas do domínio • Temos que descobrir • Quem são os stakeholders • Como conseguir acesso a eles • Qual a melhor abordagem para adquirir informações dos stakeholders • Ao final, uma lista de requisitos ou necessidades é produzida com prioridades relativas entre eles Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  48. Boas práticas: Gerência de requisitos Como contra-atacar? • Defina o sistema • Traduzir as necessidades dos stakeholders em um sistema a ser desenvolvido • Eventualmente pode-se implementar protótipos ou modelos de projeto relacionados aos requisitos mais importantes. • Produz-se como saída uma descrição do sistema Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  49. Boas práticas: Gerência de requisitos Como contra-atacar? • Gerencie o escopo do projeto • A priorização dos requisitos é fundamental • Desenvolvedores devem manter-se focados em tarefas que atacam riscos ou estabilizam a arquitetura • O escopo de cada iteração deve ser negociado com os stakeholders para garantir a resolução de riscos o mais cedo possível Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

  50. Boas práticas: Gerência de requisitos Como contra-atacar? • Refine a definição do sistema • A definição detalhada do sistema deve ser apresentada de forma simples para que os stakeholdersentendam, concordem e se comprometam com o documento • Deve conter • Funcionalidades • Conformidade com padrões, leis, regulamentos • Requisitos não funcionais (usabilidade, confiabilidade, desempenho, etc.) • Utilize casos de uso • Contam uma estória de como o sistema será utilizado • Colocam requisitos em um contexto de uso e comunicam eficientemente requisitos com os stakeholders Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

More Related