Prévia do material em texto
Engenharia e Projeto de Software Evolução do Software Sistemas Legados e Manutenção Aula 1 O desenvolvedor deve conhecer o ambiente onde atua, para tanto deve conhecer e compreender: Objetivo da Engenharia de Software O que sistemas legados. A evolução dos sistemas de software. O processo de manutenção de um sistema de software. Quais estratégias devem seguir para assegurar o funcionamento adequado dos sistemas. Objetivos Esta teleaula contempla o estudo sobre os conceitos, características e processos de evolução de software, especificamente sobre os sistemas legados e o processo de manutenção de um sistema de software. Palavras-chave: Evolução de software, manutenção de software, sistemas legados. Resumo Objetivo de melhorar a qualidade dos produtos de software e aumentar a produtividade no processo de desenvolvimento. Engenharia de Software Engenharia de Software Vídeo Fonte: https://www.youtube.com/watch?v=wdU9L3DqU2w Acesso em: 17 Jan 2019. Para atingir resultados esperados, é necessário: Conhecer conceitos, métodos e ferramentas. Considerar as restrições organizacionais e financeiras. Dominar o processo de desenvolvimento de software (PDS): Escopo, Orçamento, Prazo, Pessoal e Qualidade. Manter um software. Gerenciar um Projeto de Software. Engenheiros... • Por que deve entender a evolução de software? • Devemos manter ou trocar um sistema legado? 1. Evolução dos sistemas Fonte: Do Autor 1. Evolução dos sistemas As necessidades do negócio impulsiona mudanças nos sistemas, provocando alterações nas aplicações. A equipe de desenvolvimento desenvolve, evolui e mantém. Toda alteração do software requer o gerenciamento das atividades em todas as fases. Fonte: Do Autor A evolução: � Identificação da mudança � Proposta de mudança � Processo de evolução de software � Nova versão. 1. Evolução e Legado O Legado: sistema com tecnologia desatualizada fundamental para o negócio Fonte: Do Autor Mudança contínua para evitar ficar inútil. Complexidade pela mudanças constantes. Manter a estabilidade organizacional exige constante alteração. Crescimento contínuo, manter a satisfação do usuário. Evitar o declínio da qualidade. Conservação da familiaridade. 1. Evolução – Leis de Lehman São sistemas já existentes! Muitos podem apresentar algumas das características a seguir: � software mais velhos que são vitais para uma organização; � passaram por diversas mudanças ocasionadas por fatores internos e externos; � foram desenvolvidos utilizando tecnologia que hoje são ultrapassadas; � são antigos, mas ainda são necessários ao negócio. 1. Sistemas legados Os sistemas legados incorporam um grande número de alterações, feitas com o decorrer do tempo de uso do software, onde muitas pessoas, diferentes, realizaram essas mudanças, e é incomum que qualquer pessoa tenha uma compreensão completa do sistema. 1. Sistemas legados As mudanças geram requisitos de software novos ou modificados! Migração de Sistemas Legados Vídeo Fonte: https://www.youtube.com/watch?v=yW7aIwgGE7Y Acesso em: 17 Jan 2019. Reflita: Num processo da mudança de um sistema legado, qualquer documentação incosistente poderá causar danos irreparáveis. Qual fatores de mudança considera mais relevante em relação as Leis de Lehman? Envie a sua experiência em mundaça ou substituição de sistema. Atividade 1 Há um risco empresarial significante descartando um sistema legado e substituindo por um novo sistema, utilizando tecnologia mais modernas, como: � sistemas legados raramente têm uma especificação completa � Falta ou falha na documentação e ainda, principais mudanças não tenham sido documentadas 2. Sistemas legados - Substituição � o sistema pode embutir regras empresariais que não estão documentadas formalmente em outro lugar � processos empresariais e a forma como os mesmos operam estão quase sempre entrelaçados, uma vez que se o sistema for substituído, esses processos também deverão ser modificados 2. Sistemas legados - substituição � a estrutura do sistema pode estar corrompida devido aos muitos anos de manutenção; � o sistema pode ter sido otimizado para melhorar a utilização de espaço ou a velocidade de execução, em vez de ser escrito para facilitar a compreensão; � estruturas de arquivo usadas podem ser incompatíveis. 2. Sistemas legados - Substituição Riscos em mudar o sistema legado para um novo: � Documentação incompleta. � Documentação desatualizada. � Complexidade das regras de negócios (RN). � A implementação reflete a complexidade das RN. � Apenas o código-fonte reflete a realidade da organização. 2. Legados: substituição Diferentes tecnologias. Profissionais diferentes. Novas possibilidades de operacionalizar o sistema. Diferença na performance. Estrutura e Banco de Dados diferentes. 2. Legados: fatores de mudança Fonte: Do AutorFonte: Do Autor Analisar o risco antes de substituir. Analisar o custo da manutenção. Aplicar a Reengenharia. Refatorar. Prolongar a vida útil do sistema. 2. Legados: dilemas Escopo da engenharia de sistema E da engenharia de software 2. Legados: estruturas envolvidas Fonte: Ian Sommerville, 9ª edição Da política e regra de negócio até o Hardware do sistema devem ser detalhadamente analisados. 2. Legados: componentes envolvidos Fonte: Do Autor Vários aplicativos e vários bancos de dados. 2. Legados: aplicações e BD Fonte: Do Autor Vários aplicativos concentrados num só BD. 2. Legados: aplicações e BD Fonte: Do Autor 2. Legados: qualidade x valor de negócio Fonte: Do Autor Perguntas Tornar a usabilidade do software. Mínimo de custo. Máximo de funcionalidades para o Negócio. Manutenção A manutenção de software é o processo geral de modificação de um sistema depois que ele foi colocado em uso. Uma vez em operação, alguns defeitos não foram cobertos, o ambiente operacional muda e novos requisitos de usuário surgem. A fase de manutenção do ciclo de vida inicia após um período de garantia ou de suporte pós- implementação, mas as atividades de manutenção ocorrem muito antes. Fonte: Traduzido de SWEBOK, 2004 3. Manutenção Simples: destinadas a corrigir erros de código (exaustão). Mais extensas: a fim de corrigir os erros de projeto (reengenharia/refatoração). Significativas: com a finalidade de corrigir erros de especificação ou acomodar novos requisitos (envolve o usuário). 3. Manutenção: abrangência Fonte: Sommerville Considera importantes quatro tipos: � Corretiva: identificar e corrigir erros. � Adaptativa: adaptar o software ao ambiente. � Evolutiva/Perfectiva: atender pedidos do usuário para modificar funções existentes, incluir novas funções e efetuar melhoramentos gerais. 3. Manutenção: tipos Fonte: Pressman � Preventiva/Reengenharia: melhorar a manutenibilidade ou confiabilidade futuras e fornecer uma base melhor para futuros melhoramentos. 3. Manutenção: Gráfico Fonte: Pressman Representa um alto valor para qualquer organização. Mais dispendioso acrescentar funcionalidades quando um sistema está em operação. 3. Manutenção: custos Por: Eduardo Soler Custos não monetários � Adiamento de oportunidades de novos sistemas. � Redução da qualidade global do software. � Insatisfação do cliente. � Insatisfaçãodo pessoal de manutenção. Custo operacional � Tenta entender o que o software faz. � Interpreta as estruturas de dados, as características de interface e limites de desempenho. � Analisa, avalia, projeta, codifica e testa as modificações. 3. Manutenção: custos 3. Manutenção: processo Fonte: Do Autor 3. Manutenção: processo Fonte: Do Autor 3. Manutenção: processo Fonte: Do Autor Evolução de Software: Manutenção Vídeo Fonte: https://www.youtube.com/watch?v=o7T_DqyxEzo Acesso em: 17 Jan 2019. Você prefere desenvolver certo ou trabalhar na manutenção de um software? Por que? A maioria dos problemas com a manutenção do software é causada por deficiências na maneira como o software foi projetado e desenvolvido. Problemas clássicos � Falha na documentação da manutenção. � Equipe de desenvolvimento diferente da equipe de manutenção. � Falta de plano da evolução. � A documentação inicial fica desatualizada. � Desenvolver eleva o status profissional. � Executar manutenção não agrega valor profissional. 3. Manutenção: problemas Quantitativamente, o quanto tem facilidade para entender, corrigir, adaptar e/ou melhorar o software. Fatores que influenciam: � Eficiência inicial no projeto, codificação e teste. � Configuração de software. � Disponibilidade de pessoal para manutenção. � Facilidade de conhecer as regras de negócio. � Experiência do pessoal em negócios. 3. Manutenção: manutenibilidade Os “Alienígenas” são: � Programas com um complexo/inadequado fluxo de controle. � Módulos com muitas funcionalidades. � Poucas linhas de documentação. � Falta de integração na equipe. � Falha no Processo de Desenvolvimento de Software (PDS). 3. Manutenção: códigos alienígenas Engenharia reversa de software: Processo de análise de um software, partindo da implementação para um nível mais alto de abstração. Reengenharia de software: Implica no exame e na alteração do software para reconstruí-lo em uma nova forma. Refatoração (técnica de refactoring): refazer a codificação para melhorar na manutebildiade. 3. Engenharia reversa e reengenharia Documentação atualizada. Participação do usuário. Experiência do negócio. 3. Engenharia reversa e reengenharia Fonte: Do Autor Perguntas Encaminhe a sua dúvida. http://www.leandromtr.com/tecnologia- informacao/tipos-de-manutencao-de-software/ http://evertongomede.blogspot.com.br/2010/08/ areas-de-conhecimento-segundo-o-swebok.html Material complementar Engenharia e Projeto de Software Aula 2 Testes e Validação de Software Conhecer e compreender os conceitos, tipos e abordagens de testes de software; Conhecer e compreender os conceitos e tipos de validação de software. Conhecer técnicas de testes. Objetivos Esta teleaula aborda os conceitos sobre os processos de verificação e validação de software, analise estática e dinâmica, inspeção de software, testes de software e tipos de testes. Palavras-chave: Verificação, Validação, Inspeção de Software, Analise Estática e Dinâmica, Testes de Software. Resumo • Qual é a colaboração dos testes de software para a Qualidade do produto? • Devemos investir esforços nesta atividade? Vamos assistir ao vídeo: Conceitos de Testes Conceitos -Testes de Software Vídeo Fonte: www.youtube.com/watch?v=fk1JWVVDvsw Acesso em: 17 Jan 2019. Conseguimos atender todas necessidades dos usuários? Por que o desenvolvimento de software necessita da fase de teste? Teste de Software Assegurar que um software atenda às necessidades do usuário, de acordo com as espeficações planejadas. 1. Verificação e validação (V&V) Fonte: Do Autor Verificação: Um software deve cumprir com suas especificações (sem executar o sistema). � “Estamos construindo certo o produto?” Validação: O software deve fazer aquilo que os usuários esperam que faça. � “Estamos construindo o produto certo?” 1. Verificação e validação (V&V) Verificação e Validação devem estabelecer a confiança de que o software é adequado ao seu propósito; Isso NÃO significa que o software tenha de ser inteiramente livre de defeitos; Em vez disso, ele deve ser suficientemente bom para o uso pretendido. O tipo de uso determinará o grau de confiança necessário; 1. Verificação e validação: objetivos Função do software: o nível de confiança depende de quão crítico o software é para uma organização. Expectativas do usuário: usuário pode ter poucas expectativas para certos tipos de software. Ambiente de mercado: oferecer um produto para o mercado mais cedo pode ser mais importante que encontrar defeitos em um programa. 1. Verificação e validação: nível de confiança É um processo de ciclo de vida completo – V&V precisa ser aplicados em cada estágio do processo de software. Tem dois objetivos principais: � A descoberta de defeitos em um sistema; � A avaliação se um sistema é ou não utilizável em condições operacionais. 1. Verificação e validação: processo No processo de V&V, podemos ter duas abordagens: � Inspeções de software ou revisão por pares: Verificam as representações do sistema, usadas em todos os estágios do processo. Utiliza a análise da representação estática para descobrir problemas (verificação estática). � Testes de software: Executam uma implementação de testes com dados de teste, checando as saídas do software, verificando se seu desempenho esta conforme o necessário (verificação dinâmica). 1. Verificação e validação: processo Reflita: Para saber se o software está gerando um relatório com o resumo semanal, mostrando o resumo da produção de sua indústria, devemos aplicar a Verificação ou a Validação? Por que? Atividade 1 Testar envolve exercitar (executar) o programa com dados reais processados pelo programa. Testes de Validação (Estatístico): � Sua finalidade é mostrar que o software é o que o cliente deseja; � São testes projetados para refletir a frequência de entradas do usuário para a estimativa de confiabilidade. Testes de Defeitos: � Testes projetados para descobrir defeitos no sistema � Um teste de defeito bem sucedido é aquele que revela a presença de defeitos em um sistema. 2. Testes Teste de defeitos e depuração são processos distintos. Verificação e validação estabelece a existência de defeitos em um programa. Depuração lida com a localização e correção desses erros. Depuração envolve formular uma hipótese sobre o comportamento do programa e então testar essas hipóteses para encontrar os erros do sistema. 2. Testes e depuração Alto custo. Seguir padrões para verificação e validação. Planejar no início do ciclo de vida do desenvolvimento. O plano deve identificar o equilíbrio entre a verificação estática e testes. Priorizar o processo de testes. Plano de ação para correção. Plano de atividades para mitigação. 2. Planejamento de testes Não é um documento estático. Mudam devido a atrasos em outros processos de desenvolvimento. Se uma parte do sistema está incompleta, o resto não pode ser testado. Plano: � Processo de teste; � Rastreabilidade dos requisitos; � Itens testados; � Cronograma de testes.; 2. Planejamento de testes: plano Imagine dentro de uma caixa escura! Se a bolinhas pretas são os Erros de um software. Como encontrar todas as bolinhas pretas, de forma rápida e certeira? Usando ou não usando técnicas de testes? Atividade em sala 2 Perguntas Processo estático de V&V . Baseado no modelo de sistema,especificação ou código de linguagem de alto nível. Objetivo: descobrir erros, anomalias e defeitos. Não requer a execução. Eficaz para descobrir erros. Não tem foco em requisitos não-funcionais. 2. Inspeções Processos formais cuja função explícita é a DETECÇÃO de defeitos no programa (não a correção). Defeitos podem ser erros lógicos, anomalias no código que podem indicar uma condição errônea (ex. uma variável não inicializada) ou não-conformidade com padrões. 2. Inspeções em programas Particularmente valiosa quando uma linguagem como C é utilizada. C é fracamente tipada e, portanto, muitos erros podem não ser detectados pelo compilador. Pode ter uma baixa relação custo-benefício para linguagens como Java que tem uma checagem forte de tipos e pode detectar muitos erros durante a compilação. 2. Uso da análise estática O nome é derivado do processo ‘Cleanroom’ na fabricação de semicondutores. Evitar defeitos em vez de removê-lo. Processo de desenvolvimento de software baseia-se em: � Especificação formal; � Desenvolvimento incremental; � Verificação estática; � Teste estatístico do sistema para determinar a confiabilidade. 2. Desenvolvimento de software Cleanroom Qual é a vantagem em desenvolver corretamente ao invés de corrigir os erros após a entrega do software? Falha: incapacidade do software de realizar a função requisitada (aspecto externo). Falta: causa de uma falha (defeito). Erro: estado intermediário (instabilidade), provém de uma falta e pode resultar em falha se propagado até a saída. 3. Testes de software Uma referência para garantir que o software pode ser liberado para o uso. Confiabilidade de software: � É uma estimativa probabilística. � Mede a frequência com que um software irá executar sem falha num dado ambiente e por determinado período de tempo. Assim, entradas para testes devem se aproximar do ambiente do usuário final! 3. Testes de software: confiabilidade Averiguar a implementação correta dos requisitos do sistema. Assegurar a qualidade e a corretude do software produzido. Reduzir custos de manutenção corretiva e retrabalho. Assegurar a satisfação do cliente. Identificar todos casos de teste com probabilidade para revelar erros. Verificar a integração entre todos os componentes de software. 3. Testes de software: finalidade Sistemático: � Testes aleatórios não são suficientes; � Testes devem cobrir todos os fluxos possíveis do software; � Testes devem representar situações de uso reais. • Documentado: que testes foram feitos, resultados, etc. • Repetitível: se encontrou ou não erro em determinada situação, deve-se poder repeti-lo. 3. Testes de software: padronização 3. Testes: abordagem funcional (caixa preta) • Características • Simples de ser aplicado. • Testa sob o ponto de vista do usuário. • Testa a funcionalidade do software. • Não considera o código-fonte. • É conduzido olhando-se as interfaces do software. • Objetivos • Detectar erros de funcionalidades. • Detectar funcionalidades não implementadas. • Detectar erros de interface. • Analisar desempenho. Entrada Saída Fonte: Do Autor 3. Testes: abordagem estrutural (caixa branca) Entrada Saída • Características • Complexo de ser aplicado. • Considera o código internamente. • Necessidade do código-fonte. • Verificação comando a comando. • Objetivos • Detectar comandos incorretos. • Analisar estrutura de codificação. • Conferir variáveis (definições e uso). • Verificar inicialização e finalização de loops. • Encontrar parte que nunca será usado. Fonte: Do Autor Qual abordagem de teste você considera mais eficiente? Por que? Conte sua experiência com teste de caixa branca ou teste de caixa preta. Teste de Unidade. Teste de Aspectos OO. Teste de Integração. Teste de Sistema. Teste de Aceitação. 3. Testes: estágios Fonte: http://itprocess.com.br/128/ São definidos em relação aos diversos tipos de requisitos descritos no documento de requisitos. 3. Testes: tipos Fonte: Do Autor 3. Testes: tipos e técnicas 1ª - Quando testar Níveis de teste Unidade Integração Sistema Aceitação Regressão 3ª - Como testar Técnicas de teste Estrutural Funcional 2ª - O que testar Tipos de teste Funcionalidade Interface Desempenho Carga (stress) Usabilidade Volume Segurança Fonte: Do Autor Testadores de Software Vídeo Fonte: https://www.youtube.com/watch?v=yHFbRpI-OGk Acesso em: 17 Jan 2019. Perguntas http://testesdesoftware.com/tipos-de-teste-de-software/ http://www.devmedia.com.br/artigo-engenharia-de- software-introducao-a-teste-de-software/8035 http://www.linhadecodigo.com.br/artigo/492/tecnicas-de- vvampt-validacao-verificacao-e-teste.aspx Material complementar Engenharia e Projeto de Software Aula 3 Gerência de Qualidade e de Configuração de Software O aluno conhecerá como a engenharia e o projeto podem contribuir com a Qualidade do Software, a partir de: Fundamentos de qualidade em software. Fundamentos de configuração de software. Instrodução à gestão da qualidade e da configuração de software. Introdução à gestão do processo de software. Objetivos Esta teleaula aborda os fundamentos sobre a gerência de qualidade de software aplicada ao processo de desenvolvimento e ao produto com técnicas de validação, bem como o estudo sobre a configuração de software. Palavras-chave: Qualidade de Software, Gerência de Configuração de software. Resumo 1. Gerenciamento de qualidade de software Assegurar o nível requerido de qualidade no software desenvolvido. Definir e gerenciar os padrões e procedimentos apropriados de qualidade e da garantia. Estimular uma cultura em qualidade no processo. Obter o engajamento de todos os envolvidos. Maior ênfase para projetos mais complexos. Manter os registros do progresso da qualidade. Qualidade, de uma forma geral, significa que um produto deve atender às especificações. Fonte: Do Autor Deve focar numa cultura de qualidade. Para sistemas menores, o gerenciamento de qualidade requer menos documentação. 1. Gerenciamento de qualidade de software O gerenciamento de qualidade deve ser separado do gerenciamento de projeto para assegurar independência. Fonte: Istock Acesso em: 17 Jan 2019. Processo e atividades 1. Gerenciamento de qualidade de software Garantia da Qualidade estabelece procedimentos e padrões organizacionais para a qualidade. Planejamento da Qualidade seleciona os procedimentos e padrões aplicáveis para um projeto específico. Controle da Qualidade assegura que os procedimentos e os padrões sejam seguidos. Qualidade de Processo influencia na qualidade do produto. 1. Gerenciamento de qualidade de software Fonte: Do Autor Importância dos Padrões: � Engloba as melhores práticas. � Um framework para os processos de garantia de qualidade. � Estabelece uma comunicação adequada para a equipe. Problemas com Padrões: � Procedimentos desatualizados. � Documentações burocrática. 1. Gerenciamento de qualidade de software Práticas do Processo: � Definir padrões de processo. � Estabelecer processo da gestão e revisão. � Monitorar o processo de desenvolvimento. � Comunicar o status da qualidade. � Envolver o usuário e cliente. 1. Gerenciamento de qualidade de software Garantia de Qualidade e Padrões: � Considerar padrões reconhecidos. � Seguir os padrões. � Contemplar o estilo de programação comum. � Prever a institucionalização dospadrões de processo. � Registrar e melhorar os padrões. 1. Gerenciamento de qualidade de software Qualidade de software Vídeo Fonte: https://www.youtube.com/watch?v=fmtvFZZOoNs Acesso em: 17 Jan 2019. Quais são as vantagens e desvantagens de se aplicar padrões de qualidade de software durante o processo de desenvolvimento do software? CMMI / MPS.BR: � Modelo de Maturidade de Qualidade de Software. � Modelo de referência: base em ISO 12207 e 15504. 2. Modelo de Qualidade de Software Fonte: Do Autor Por Estágios Contínua 2. Modelo de Qualidade de Software - CMMI Fonte: Do Autor Estrutura do MR-MPS.BR 2. Modelo de Qualidade de Software – MPS.BR http://www.softex.br/mpsbr/guias/ Fonte: Do Autor Representações do MPS.BR. Maior granularidade entre os níveis. 2. Modelo de Qualidade de Software Fonte: Do Autor Representações do MPS.BR. 2. Modelo de Qualidade de Software Fonte: Do Autor Planejamento da Qualidade: � Alinhamento da estratégias da organização e ao projeto. � Estabelece os critérios da qualidades do produto desejadas. � Estabelece como são avaliadas. � Define os atributos de qualidade mais significativos. � Estabelece os padrões organizacionais. 2. Modelo de Qualidade de Software Controle da Qualidade: � Verificação do processo de desenvolvimento. � Assegurar que procedimentos e padrões estão sendo seguidos. � Abordagens para controle de qualidade: • Revisões de qualidade. • Avaliação automatizada e medições de software. 2. Modelo de Qualidade de Software Revisões de Qualidade: � Principal método de validação da qualidade de um processo ou de um produto. � Foco em descobrir os defeitos e a inconsistências do sistema. � Revisão de: código, projetos, especificações, planos de teste, padrões, etc. � O processo deve ter curta duração. � Todos os documentos devem ser revisados. � O software e documentos podem ser aprovados (“assinados”). 2. Modelo de Qualidade de Software Formal Technical Review – FTR. Tipos de revisão: � Inspeções para detectar os defeitos (produto). � Revisões para avaliação de progresso (produto e processo). � Revisões de qualidade (produto e padrões). 2. Modelo de Qualidade de Software Um modelo de maturidade tem influência direta no desenvolvimento de software? Por que? Como controlar todas implementações realizadas numa determinada versão? As versões do software são criados a cada mudança � Para diferentes máquinas/sistemas operacionais. � Diferentes funcionalidades. � Adaptados a requisitos de usuários específicos. Gerência de configuração (CM Configuration Management) � Envolve uma equipe. � Controlar os custos. � Controlar o esforço da equipe. � Histórico de versões. 3. Gerenciamento de configurações Define procedimentos e padrões para gerenciar um produto de software. Processo de gerência de qualidade. Possibilita o versionamento controlada. Permite o retorno até uma determinada baseline. Visar uma versão/produto Deliverable. 3. Gerenciamento de configurações https://blog.pronus.io/posts/o-que-eh-gerencia-de- configuracao-de-software/ Visar uma versão de produto entregável (Deliverable). Aplicado em Famílias de Sistemas 3. Gerenciamento de configurações Fonte: Do Autor Versões, Variantes e Releases: � Versão: uma instância de um sistema com que é funcionalmente distinto em alguma forma de outras instâncias do sistema. � Variante: uma instância de um sistema que é funcionalmente idêntico mas não-funcionalmente distinto de outras instâncias de um sistema. � Release: Uma instância de um sistema que é distribuído para usuários fora do time de desenvolvimento. 3. Gerenciamento de configurações Merging e Branching: 3. Gerenciamento de configurações Fonte: Do Autor Controle de versão Vídeo Fonte: https://www.youtube.com/watch?v=ILUvjs8xvSs Acesso em: 17 Jan 2019. Padrões de Gerência de Configuração: � Baseada em um conjunto de padrões: • Para definir como itens são identificados; • Como as mudanças são controladas; • Como as novas versões são gerenciadas; � Padrões existentes são baseados em um modelo de processo em cascata; ** Novos padrões são necessários para a evolução do desenvolvimento. 3. Gerenciamento de configurações Planejamento de Gerência de Configuração: � Na fase inicial do projeto. � Definir os documentos ou classes de documentos que serão gerenciados. � Todos os itens de software (artefato) do processo podem ser gerenciados: • Especificações. • Projetos. • Programas. • Dados de Teste. • Manuais do Usuário. 3. Gerenciamento de configurações Plano de Gerência de Configuração: � Define os tipos de documentos. � Define o esquema de nomes para documentos. � Estabelece os responsáveis pelos procedimentos de gerência de configuração e criação de baselines. � Define políticas de controle de mudança e gerência de versão. � Define os registros de gerência de configuração que devem ser mantidos. � Banco de dados. � Ferramenta para gestão. � Prever a auditoria. 3. Gerenciamento de configurações Base de Dados � Informações do gerenciamento de configuração. � Permite buscar as configurações para: • Quem tem uma versão do sistema particular? • Qual plataforma é requerida para uma versão particular? • Que versões são afetadas por uma mudança no componente X? • Quantas falhas foram reportadas na versão T? 3. Gerenciamento de configurações Gerência de Mudança por: � Requisitos de usuários específicos. � Demandas técnicas dos desenvolvedores. � Demandas de mercado. � Demandas fiscais e legais. � Por segurança da informação. � Evolução da Tecnologia da Informação e Comunicação. � Concorrência no setor de negócio. 3. Gerenciamento de configurações Fonte: Istock Imagens Acesso em: 17 Jan 2019. Em qual tipo de mudança de software julga mais necessária o Gerenciamento de Configuração? Por que? http://www.softex.br/mpsbr/guias/ https://blog.pronus.io/posts/o-que-eh-gerencia-de- configuracao-de-software/ Material complementar Perguntas Engenharia e Projeto de Software Aula 4 Introdução a Gestão de Projetos de Softwares O objetivo desta teleaula é capacitar o aluno na identificação do escopo de um projeto de software. Reconhecer o cenário da organização na qual o desenvolvedor deverá conceber a solução em software. Criar a estrutura para o gerenciamento de um projeto de software. Introdução ao detalhamento do projeto de software. Inicialização do uso de ferramentas de gerenciamento ao desenvolvimento de software. Palavras-chave: � Projeto de Sistemas, � Escopo de sistemas, � Gerenciamento de Projetos � Ferramentas de Projetos de Software Resumo Projeto de Software � Definição Projetos de Software � Cenário Atual � Gerenciamento de Projetos de Software � Detalhando o projeto Tópicos desta aula Projeto de software prioriza: dados, arquitetura, interface e componentes. Para garantir a qualidade é necessário avaliar continuamente pontos referentes a corretude, completude, clareza e consistência com os requisitos do sistema. Definição Projetos de Software http://projeto-de-software.blogspot.com.br/2008/06/o- que-projeto-de-software.html Crise do Software em 1970 Surgem várias metodologias de desenvolvimento, com o objetivo de entregar software de qualidade, dentro do cronograma proposto e com base nos custos previstos.Então, como trabalhar no cenário atual? Projeto de software By J. Fabio Mazzini Z. (http://www.fabiomazzini.com/crbst_9.html) Engenharia Civil X Software Análise Orientada a Objetos � Diagrama de Casos de Uso � Diagrama de Atividades � Diagrama de Classes � Diagrama de Sequência � Diagrama de Estado � Outros Como projetar software? Fonte: Do Autor Análise de Dados Modelo de Entidades e Relacionamentos Projeto de Banco de Dados Como projetar software? Fonte: Do Autor Protótipos � Exploratória � Evolucionária Como projetar software? Fonte: Do Autor Proporciona apoio ao processo de software pela automação de algumas atividades de processo e pelo fornecimento de informações sobre o software que está sendo desenvolvido. (SOMMERVILLE, 2003) Material Complementar: Fonte: (acessado em 16 dez 2016) Usando ferramentas - CASE http://www.etelg.com.br/paginaete/do wnloads/informatica/apostila_uml.pdf Cronograma � Atividade � Datas � Responsáveis � Resultados � Dependências Como projetar software? Fonte: Do Autor Escopo � Sistemas � Módulos � Funcionalidades � Departamento � Região � Prioridades � Importância Como projetar software? Fonte: Do Autor Kanban � Cartão � Sinalização � Status � Visual � Agilidade � Linguagem Como visualizar as atividades? Fonte: Do Autor Quais as vantagens que teria se desenvolver um software usando técnicas: UML, MER, Protótipos, Gerenciamento de Projeto, Kanban...? Assista ao vídeo sobre Kanban. Atividade 1 Perguntas? Envie suas Dúvidas. Vídeo Aula Atividade 1 Kanban no Desenvolvimento Ágil de Software by Dilbert Vídeo Fonte: https://www.youtube.com/watch?v=LJOiFRsp0Z8 Perguntas Gerenciamento de projetos é “a aplicação de conhecimentos, habilidades, ferramentas e técnicas em projetos com o objetivo de atingir ou até mesmo exceder às necessidades e expectativas dos clientes e demais partes interessadas do projeto” [PMBOK]. Cenário Atual em Gerenciamento de Projetos Responsável pelo projeto PMI – chapters brasileiros - 2009 Habilidades deficientes no GP PMI – chapters brasileiros - 2009 Problemas frequentes em projetos PMI – chapters brasileiros - 2009 Documentos existentes em GP PMI – chapters brasileiros - 2009 1. Qual a relação entre benefícios do GP e problemas em projetos? 2. Qual fator você julga mais problemático em sua experiência? Por que? Atividade 2 Perguntas? Envie suas Dúvidas. Perguntas Gerenciamento de projetos é “a aplicação de conhecimentos, habilidades, ferramentas e técnicas em projetos com o objetivo de atingir ou até mesmo exceder às necessidades e expectativas dos clientes e demais partes interessadas do projeto” [PMBOK]. Gerenciamento de Projetos de Software História do GP Restrições em gestão de projetos Gerenciamento de projetos O papel do Gerente de Projetos a importância da experiência Seguir um padrão de qualidade requer Gerenciamento constante Empreendimento que produzirá um software, no prazo estimado e com as funcionalidades desejadas Principais recursos no gerenciamento Fonte: Do Autor Atividade Prazo Responsável Resultado Medição/métrica Ferramentas & artefatos para GP Fonte: Do Autor Gerenciando recursos, tempo e pessoas 1. O que é mais importante para a entrega do projeto: escopo ou requisito? 2. No GP, o fator Liderança está diretamente relacionado a qual tipo de recurso? Atividade 3 Perguntas? Envie suas Dúvidas. Gerenciamento do projeto Planejar o gerenciamento Realizar o controle Realizar a garantia Definir padrão Comprovar e entregar Ciclo de vida ou Grupos de Processos do PMBoK com foco em Qualidade Áreas do conhecimento do PMBoK Plan Do Check Action Fonte: Do Autor Propósitos: Criar valor para o cliente. Correlacionar todos (o que) os serviços, sistemas ou processos. Responsabilidades: Definir política, diretriz e objetivo. Desenvolver habilidades para gerar valor. ITIL – Information Technology Infrastrutucte Library COBIT Control Objetives for Information and related Technology. Fonte: Do Autor Alinhar, Planejar e Organizar Construir, Adquirir e Implementar Entregar, Serviços e Suporte Monitorar, Avaliar e Analisar Fonte: Do Autor Perguntas Objetivo geral do projeto � Solução de um problema. � Oportunidade de negócio. Objetivos específicos do projeto � Processos de entrada e de saída. � Controles fundamentais. Critérios de sucesso � Prazos, Custos, Qualidade. Restrições e Riscos. Escopo Diagrama específico para o escopo do projeto Visualizar fases, atividades, responsáveis e entregas Orientar na Estimativa de Esforço, Duração e Custo Facilitar a Identificação de Riscos Tipos: � Fases � Entregas � Equipes Criando WBS Controle de Recursos Subcausas Causas CCQ - reuniões regulares entre grupos de trabalho de uma determinada área da empresa (podendo ser de áreas diferentes) que se unem para discutir sobre os problemas da qualidade, eles geralmente são voluntários nesse trabalho. Controle do projeto Fonte: Do Autor Existem diversos modelos de Metodologias Ágeis, mas vamos utilizar como exemplo, o SCRUM. Pode ser utilizado para planejar, gerenciar e desenvolver qualquer tipo de projeto. Metodologia Ágil SCRUM Fonte: Do Autor Perguntas Projeto de software com UML http://www.etelg.com.br/paginaete/downloads/informatica/apostila2u ml.pdf Material complementar Escopo ou Requisito? http://blogdoabu.blogspot.com/2010/02 /o-que-e-escopo-e-requisito.html Material complementar Construindo uma WBS http://elirodrigues.com/gestao-de-projetos/como-fazer-uma-eap- wbs/ http://astah.net/editions/community http://www.ganttproject.biz/download http://gantter.com/ http://www.sis4.com/brModelo/download.html http://www.xmind.net/ http://pencil.evolus.vn/ Material complementar Governança, Cobit e ITIL http://www.slideshare.net/Ridlo/governana-de-ti-v8 (acessado em 01ago2014) Documento Cobit http://www.isaca.org/COBIT/FOCUS/Pages/the-core-cobit- publications-a-quick-glance-portuguese.aspx (acessado em 28 Jan 2019) ITIL Foundation http://www.itilofficialsite.com/ Qualifications/ITILQualificationLevels/ ITILFoundation.aspx (acessado em 01ago2014) Material complementar