600 likes | 774 Views
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.
E N D
Melhores Práticas RUP Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Desenvolvimento Iterativo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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
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
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
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
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
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
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
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
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
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
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
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
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
Arquitetura Baseada em Componentes Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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
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
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
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
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
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
<<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
<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
: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
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
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
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
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
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
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
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
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
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
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
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
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
Controle de Mudanças Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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
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
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
Gerência de Requisitos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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
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
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
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
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
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
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
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