Baixe o app para aproveitar ainda mais
Prévia do material em texto
See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/264999748 Engenharia de Software Article CITATIONS 0 READS 9 1 author: Some of the authors of this publication are also working on these related projects: Apps Factory View project Gabriel Lara Baptista Faculdade de Tecnologia Termomecânica 6 PUBLICATIONS 3 CITATIONS SEE PROFILE All content following this page was uploaded by Gabriel Lara Baptista on 07 October 2020. The user has requested enhancement of the downloaded file. https://www.researchgate.net/publication/264999748_Engenharia_de_Software?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_2&_esc=publicationCoverPdf https://www.researchgate.net/publication/264999748_Engenharia_de_Software?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_3&_esc=publicationCoverPdf https://www.researchgate.net/project/Apps-Factory?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_9&_esc=publicationCoverPdf https://www.researchgate.net/?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_1&_esc=publicationCoverPdf https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_4&_esc=publicationCoverPdf https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_5&_esc=publicationCoverPdf https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_7&_esc=publicationCoverPdf https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_10&_esc=publicationCoverPdf 24/09/2018 1 Engenharia de Software Este material pode ser apresentado para os cursos: • Ciência da Computação • Sistemas de Informação • Tecnologia em Gestão da Tecnologia da Informação • Tecnologia em Análise e Desenvolvimento de Sistemas Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Para começar! • Horário – 19:15 às 23:00 • Intervalo – 20:50 às 21:15 • Avaliações: (A1 + A2) / 2 >= 6 A1 = Turma => Prova + Trabalho A2 = Integrada Introdução a Engenharia de Software: Histórico, áreas de atuação, sistemas legados, importância e crise. Aula 1 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Discussão Inicial O que vocês entendem por Engenharia de Software? Engenharia de Software - Professor Gabriel Baptista Ementa do Curso Estudo do papel da Engenharia de Software para determinação de um processo adequado de desenvolvimento. Conceituação da diferença entre produto e processo de software. Aspectos gerais das etapas do processo de desenvolvimento. Modelos de desenvolvimento: cascata, evolucionário, iterativos, engenharia baseada em componentes, processo unificado e metodologias ágeis. Engenharia de Software - Professor Gabriel Baptista Objetivos do Curso Apresentar a Engenharia de Software, conceituando os modelos de processo existentes, de modo a permitir a identificação e determinação das atividades essenciais em um processo de desenvolvimento. Engenharia de Software - Professor Gabriel Baptista mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 2 Conteúdo Programático • Introdução sobre a Engenharia de Software • Produto de software, processo de software e modelo de processo de software. • Atividades essenciais no processo de desenvolvimento de software • Modelos de desenvolvimento • Melhores práticas para Engenharia de Software • Processo Unificado • Metodologias Ágeis • Métricas • Modelagem de Processos • Ferramentas CASE • Desenvolvimento de Sistemas Críticos Engenharia de Software - Professor Gabriel Baptista Bibliografia Engenharia de Software - Professor Gabriel Baptista BIBLIOGRAFIA BÁSICA: Sommerville, Ian.: Engenharia de software / Ian Sommerville ; tradução de Maurício de Andrade ; revisão de Kechi Hirama. São Paulo Editora Addison Wesley 2003. Pressman, Roger.: Engenharia de software / Roger Pressman ; tradução de José Carlos Barbosa dos Santos ; revisão técnica Paulo Cesar Masiero, José Carlos Maldonado, Rosely Sanches. São Paulo Makron Books 1995. BIBLIOGRAFIA COMPLEMENTAR: Kruchten, Philippe.: Introdução ao RUP – Rational Unified Process; tradução de Deborah Rüdiger. Rio de Janeiro Editora Ciência Moderna Ltda., 2003. Sommerville, Ian.: Engenharia de software / Ian Sommerville ; tradução de Selma Melnikoff, Reginaldo Arakaki e Edílson Barbosa; revisão de Kechi Hirama. São Paulo Editora Addison Wesley 2007. E agora? O que vocês imaginam que irá acontecer após esta disciplina? Engenharia de Software - Professor Gabriel Baptista Um pouco de História... 1972 e a Crise do Software: O início: - Desenvolvimento informal - Necessidades pessoais (Edsger Wybe Dijkstra) Engenharia de Software - Professor Gabriel Baptista ... e começam as evoluções... - Hardware potente - Redes locais (cliente - servidor) - Internet - Dispositivos móveis Engenharia de Software - Professor Gabriel Baptista ... novos conceitos a serem aplicados! - Software Houses - Fábricas de Software - Modelos de Processo - Qualidade de Software Engenharia de Software - Professor Gabriel Baptista 24/09/2018 3 Para hoje: - Termos software em todas as empresas e cada vez mais em todas as residências. - Lidarmos com software o tempo inteiro - Votarmos através de um software - Lermos e estudamos com auxílio de software Engenharia de Software - Professor Gabriel Baptista Mas... A CRISE DO SOFTWARE PERSISTE! Engenharia de Software - Professor Gabriel Baptista Algumas perguntas: Vocês conhecem algum prédio construído sem planta? Algum remédio sem fórmula? Carro sem manual? Engenharia de Software - Professor Gabriel Baptista Algumas perguntas: E software sem documentação? Engenharia de Software - Professor Gabriel Baptista Como resolver? ENGENHARIA DE SOFTWARE Engenharia de Software - Professor Gabriel Baptista Mas afinal... 1. O que é software? 2. O que é Engenharia de Software? 3. Quais os desafios enfrentados pela Engenharia de Software? 4. Quais os atributos de um bom software? 5. O que são softwares legados? Engenharia de Software - Professor Gabriel Baptista 24/09/2018 4 O que é software? - Programas de Computador - Documentação - Arquivos de Ajuda - Instalação Engenharia de Software - Professor Gabriel Baptista O que é Engenharia de Software? “Disciplina da engenharia que se ocupa de todos os aspectos da produção de software” (SOMMERVILLE, 2003) Engenharia de Software - Professor Gabriel Baptista Quais os desafios enfrentados pela Engenharia de Software? - Custo - Qualidade - Prazo - Pessoas - Funcionalidades Engenharia de Software - Professor Gabriel Baptista Atributos de um bom software: - Funcional - Fácil manutenção (Manutenibilidade) - Confiável (Confiabilidade) - Seguro - Fácil uso (Usabilidade) Engenharia de Software - Professor Gabriel Baptista O que são softwares legados? “Ossistemas legados são sistemas sociotécnicos baseados em computadores e que foram desenvolvidos no passado, freqüentemente usando tecnologias mais antigas e obsoletas.” (SOMMERVILLE, 2008) Engenharia de Software - Professor Gabriel Baptista Obrigado! Engenharia de Software - Professor Gabriel Baptista 24/09/2018 5 Definição e conceituação de software, sistema, produto de software, processo de software e modelo de processo de software. Atividades essenciais no processo de desenvolvimento de software: Especificação, Desenvolvimento, Validação e Evolução. Aula 2 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista 1. O que vem a ser a Crise do Software? 2. O que é software? 3. O que é Engenharia de Software? 4. Quais os desafios enfrentados pela Engenharia de Software? 5. Quais os atributos de um bom software? 6. O que são softwares legados? Mais algumas perguntas... Engenharia de Software - Professor Gabriel Baptista 1. Qual a diferença entre software e sistema? 2. O que é um processo de software? 3. O que é um modelo de processo de software? Software x Sistema Software + Hardware + Processo = SISTEMA Engenharia de Software - Professor Gabriel Baptista O que é um processo de software? Atividades documentadas e executadas, com o propósito de desenvolvimento de um software, que podem ser reproduzidas e evoluídas em um novo desenvolvimento. Engenharia de Software - Professor Gabriel Baptista E o modelo? Engenharia de Software - Professor Gabriel Baptista mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 6 O que estamos produzindo quando estamos fazendo software? Engenharia de Software - Professor Gabriel Baptista Resposta: O produto de software! “Software development efforts result in the delivery of a software product which satisfies user requirements.” (SWEBOK, 2004) “O esforço em desenvolvimento de software resulta na entrega de um produto de software que satisfaça aos requisitos do usuário” Mas o que é software mesmo? Engenharia de Software - Professor Gabriel Baptista “Programas de computador e documentação associada. Os produtos de software podem ser desenvolvidos para um cliente específico ou para um mercado geral”. (SOMMERVILLE, 2007) E quais são os produtos de software que temos? Engenharia de Software - Professor Gabriel Baptista - Documentos para determinação de escopo (Especificação de Requisitos) - Documentos técnicos de projeto (DER, DFD’s / Diagramas UML*, etc.) - Documentos para controle do projeto (Planos de projeto, cronogramas, etc.) - Código-fonte e scripts de banco de dados - Manuais técnicos e de usuários - Planos e relatórios de teste - Documentação para treinamento - Instalações Consideramos todos estes documentos artefatos de software. * Unified Modeling Language E como fazemos todos estes documentos? Engenharia de Software - Professor Gabriel Baptista Processos de Software! “É o que as pessoas fazem, utilizando métodos, ferramentas, etc., para adquirir, desenvolver, manter e melhorar software e produtos associados” (SALVIANO, 2007) E como isso funciona? Engenharia de Software - Professor Gabriel Baptista 1º Precisamos entender o ciclo de vida do software!!! Ciclo de Vida do Software? Engenharia de Software - Professor Gabriel Baptista O que vem a ser um ciclo de vida? 24/09/2018 7 Atividades fundamentais do Software Engenharia de Software - Professor Gabriel Baptista • Especificação: Definição de funcionalidades e restrições. • Projeto (Desenho): Definição dos desenhos que servirão como auxílio para a produção do software. • Implementação: Produção do software de acordo com o especificado / desenhado. • Validação: Garantia que o software faz o que foi especificado. • Evolução: Evolução natural para atender às necessidades do cliente. E depois? Engenharia de Software - Professor Gabriel Baptista 2ª Que tal seguirmos um Modelo de Processo de Software? Modelo de Processo de Software? Engenharia de Software - Professor Gabriel Baptista • “Repositório” de boas (ou melhores) práticas • Define “o que” (e “quão bem”) deve ser feito, não o “como” fazer. • Independente da tecnologia a ser utilizada (SALVIANO, 2007) Modelos de processo de software Engenharia de Software - Professor Gabriel Baptista • Genéricos • Com o objetivo de mostrar as tendências no desenvolvimento do software • Diferentes abordagens • Evolução Só isso? Engenharia de Software - Professor Gabriel Baptista NÃO • Muitas vezes, o modelo foi pensado com base em um certo tipo de projeto. • Cada projeto que participamos pode apresentar situações diversas. • Daí o motivo de precisarmos estudar diferentes modos de produção de software. Importante Engenharia de Software - Professor Gabriel Baptista • Não existe um processo de software ideal! • Não existem ferramentas mágicas! • A melhoria de processo deve ser implementada! 24/09/2018 8 Obrigado! Engenharia de Software - Professor Gabriel Baptista Modelos de desenvolvimento: Cascata, Evolucionário (Exploratório e Prototipação) e Técnica de Quarta Geração. Aula 3 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista 1. Qual a diferença entre software e sistema? 2. O que é produto de software? 3. O que é um processo de software? 4. O que é um modelo de processo de software? 5. Quais são as atividades fundamentais do software? Modelo em “Cascata” (Royce, 1970) Engenharia de Software - Professor Gabriel Baptista Modelo em “Cascata” Engenharia de Software - Professor Gabriel Baptista • Retrato das atividades fundamentais. • Idealizado para não existir iteração entre as fases. Porém, na prática, existe uma pequena iteração. • Costuma-se “congelar” determinados documentos a partir de um certo ponto do projeto. Vamos pensar um pouco? Engenharia de Software - Professor Gabriel Baptista • Quais as vantagens do modelo em cascata? • Quais as desvantagens do modelo em cascata? • Em que tipo de projeto você utilizaria o modelo em cascata? mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 9 Observações sobre o modelo em “Cascata” Engenharia de Software - Professor Gabriel Baptista • Deve ser utilizado se os requisitos forem bem compreendidos. • Na prática, ao encontrar um erro, deve-se retornar até a fase causadora do erro e reiniciar o projeto daquele ponto. Modelo evolucionário Engenharia de Software - Professor Gabriel Baptista Vamos pensar um pouco? Engenharia de Software - Professor Gabriel Baptista • Quais as vantagens do modelo evolucionário? • Quais as desvantagens do modelo evolucionário? • Em que tipo de projeto você utilizaria o modelo evolucionário? Modelo evolucionário Engenharia de Software - Professor Gabriel Baptista • Dois tipos: Exploratório: Evolução a partir de propostas do cliente Protótipos descartáveis: O objetivo é compreender os requisitos Observações sobre o modelo evolucionário Engenharia de Software - Professor Gabriel Baptista • Facilidade de interação com o cliente • Especificação desenvolvida gradativamente • Processo não é visível • Sistemas mal-estruturados Protótipo Engenharia de Software - Professor Gabriel Baptista 1 Primeiro tipo; primeiro exemplar; modelo, padrão. 2 O exemplar mais exato, de maior perfeição. (Michaelis) 24/09/2018 10 Prototipação Engenharia de Software - Professor Gabriel Baptista Técnica que tem por objetivo reduzir riscos • Avaliar viabilidade de um produto • Determinar desempenho de uma determinada tecnologia • Entender requisitos • Avaliar aparência do produto • Avaliarusabilidade do produto Conceitos de protótipo - RUP Sobre os protótipos Engenharia de Software - Professor Gabriel Baptista “ Um protótipo exploratório e comportamental, que pretenda experimentar muito rapidamente alguma interface de usuário, raramente evolui para um produto forte e flexível” (Conceitos de protótipo – RUP) Como criar protótipos de interface? Engenharia de Software - Professor Gabriel Baptista • Uso de Ferramentas RAD -> Rapid Application Development • Estudo de outras aplicações existentes no mercado • Pouca preocupação com a consistência dos dados • Foco na disposição dos objetos • Foco na usabilidade (por exemplo, número de cliques) • Dica – Padrão corporativo de interface Como criar protótipos para avaliar desempenho? Engenharia de Software - Professor Gabriel Baptista • Usar o ambiente real de desenvolvimento • Buscar as melhores práticas de programação • Garantir que as medições resultam em valores reais Técnica de Quarta Geração Engenharia de Software - Professor Gabriel Baptista Observações sobre a Técnica de Quarta Geração Engenharia de Software - Professor Gabriel Baptista • Especificação e projeto de software em um nível próximo à linguagem natural • Geração de código-fonte de forma automática • Algumas ferramentas: • SQL • Geradores de relatórios • Editores gráficos de formulários • Geradores de código (Professor Marcos Antonio Ribeiro, 2009) 24/09/2018 11 Obrigado! Engenharia de Software - Professor Gabriel Baptista Iteração de processo: Desenvolvimento espiral e incremental. Aula 4 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista 1. O que você sabe sobre o modelo cascata? 2. O que você sabe sobre o modelo evolucionário? 3. O que você sabe sobre a técnica de quarta geração? 4. Qual é o uso adequado da prototipação? Como já falado... Engenharia de Software - Professor Gabriel Baptista • Não existe um processo de software ideal! • Cada projeto que participamos pode apresentar situações diversas. • A melhoria de processo deve ser implementada! • Daí o motivo de precisarmos estudar diferentes modos de produção de software. Que tal unirmos esforços? Engenharia de Software - Professor Gabriel Baptista • Processos iterativos! • Possibilidade de repetição de alguns pontos do processo para redimensionamento ou mesmo melhor entendimento do software. • Destaques • Desenvolvimento incremental • Desenvolvimento espiral Engenharia de Software - Professor Gabriel Baptista Modelo Espiral mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 12 Vamos pensar um pouco? Engenharia de Software - Professor Gabriel Baptista • Quais as vantagens do modelo espiral? • Quais as desvantagens do modelo espiral? • Em que tipo de projeto você utilizaria o modelo espiral? Observações sobre o desenvolvimento em espiral Engenharia de Software - Professor Gabriel Baptista • Cada loop representa uma fase do processo: viabilidade, requisitos, projeto, etc. • Quatro vetores: Definição de objetivos Avaliação e redução de riscos Desenvolvimento e validação Planejamento • Consideração explícita dos riscos • Abrangência de outros processos para produção de artefatos. Desenvolvimento incremental Engenharia de Software - Professor Gabriel Baptista Vamos pensar um pouco? Engenharia de Software - Professor Gabriel Baptista • Quais as vantagens do desenvolvimento incremental? • Quais as desvantagens do desenvolvimento incremental? • Em que tipo de projeto você utilizaria o desenvolvimento incremental? Observações sobre o desenvolvimento incremental Engenharia de Software - Professor Gabriel Baptista • Meio de reduzir o retrabalho • Funções prioritárias devem ser entregues primeiro • Risco menor de fracasso total • Cuidado com o número de incrementos! • Cuidado com o número de funções por incremento! Obrigado! Engenharia de Software - Professor Gabriel Baptista 24/09/2018 13 Melhores práticas para desenvolvimento de software Desenvolver de forma iterativa e gerenciar requisitos Aula 5 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista 1. O que você sabe sobre o modelo espiral? 2. O que você sabe sobre o modelo incremental? gabriel.baptista@uni9.pro.br Melhores Práticas em Desenvolvimento de Software Engenharia de Software - Professor Gabriel Baptista Desenvolvimento iterativo Gerenciamento de requisitos Utilização de arquiteturas baseadas em componentes Modelagem visual do software Controle de mudanças do software Verificação contínua da qualidade do software 1. Desenvolver o software iterativamente Engenharia de Software - Professor Gabriel Baptista • Cada iteração resulta em um lançamento executável (release). • Facilidade de encontrar problemas mais cedo. • Usuário mais participativo. • Equipe é forçada a pensar nos pontos mais críticos. • Lições aprendidas podem ser melhoradas dentro do próprio projeto. • Facilidade de verificação do status do projeto. • Equipe de teste tem trabalho mais uniforme. Um pouco de reflexão: Engenharia de Software - Professor Gabriel Baptista Acabou aí? Engenharia de Software - Professor Gabriel Baptista mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 14 Tem mais? Engenharia de Software - Professor Gabriel Baptista Mas na verdade... Engenharia de Software - Professor Gabriel Baptista Isto é comum? SIM!!! • Em 1995, um relatório elaborado pelo Grupo Standish*, chamado CHAOS, alertou que apenas 16,2% dos projetos eram encerrados com sucesso. • O mesmo estudo em 2004 apresentou uma melhoria no índice, passando para 34%. • Na verdade, fala-se em crise do software desde 1968! Engenharia de Software - Professor Gabriel Baptista * 1995. Acessado através de http://net.educause.edu/ir/library/pdf/NCP08083B.pdf Isto é comum? Segundo Capers Jones and Bill Curtis: - 25% dos projetos de software falham ou são abandonados; - 15% dos defeitos permanecem no produto entregue ao cliente; - 30% a 44% do tempo está sendo utilizado para retrabalho nas companhias (tempo não produtivo); - 50% dos prazos são atendidos pelas companhias. Segundo Professor Dr. Ivanir Costa: - 65% dos erros ocorrem na fase de requisitos - 8% dos erros ocorrem na fase da codificação* * Testes caixas pretas só conseguem verificar estes erros Engenharia de Software - Professor Gabriel Baptista A questão é... Por quê? Para Jack Ganssle: • Let's face it: any idiot can write code. Estudo do Grupo Standish*: • Falta de Envolvimento do Usuário • Falta de Gerenciamento • Falta de necessidades claras Engenharia de Software - Professor Gabriel Baptista * 1995. Acessado através de http://net.educause.edu/ir/library/pdf/NCP08083B.pdf A questão é... Por quê? Segundo Humphrey*: - Cronogramas fora da realidade - Equipe inapropriada - Mudanças de Necessidades - Trabalho com baixa qualidade - Crenças em mágica * Maio de 2002. Acessado através de www.computerworld.com Engenharia de Software - Professor Gabriel Baptista 24/09/2018 15 Agora imaginem... Um idiota programando + Lista de necessidades confusas ou inexistentes + Necessidades sendo modificadas a toda hora _____________________________ Engenharia de Software - Professor Gabriel Baptista CAOS Relatório do Grupo Standish CHAOS - 2009 As coisas pioraram... - 32% dos projetos de software com sucesso; - 44% atrasados, acima do custo, e/ou com menos funcionalidades; - 24% cancelados ou nunca usados. Engenharia de Software - Professor Gabriel Baptista Existe algo a ser feito? Engenharia de Software - Professor Gabriel BaptistaEngenharia de Requisitos “A Engenharia de Requisitos ajuda os engenheiros de software a compreender melhor o problema que eles vão trabalhar para resolver. Ela inclui o conjunto de tarefas que elevam a um entendimento de qual será o impacto do software sobre o negócio, do que o cliente quer e de como os usuários finais vão interagir com o software” Engenharia de Software - Professor Gabriel Baptista * Pressman, 2006 Engenharia de Requisitos O que é um requisito? “Os requisitos para um sistema de software estabelecem o que o sistema deve fazer e definem restrições sobre sua operação e implementação” Engenharia de Software - Professor Gabriel Baptista * Sommerville, 2005 Engenharia de Requisitos Tipos de requisitos - Requisitos do usuário - Funções que o sistema deve ter, visualizados de uma maneira simples - Requisitos do sistema - Domínio: Leis, normas ou até mesmo uma restrição funcional obtidos a partir das necessidades específicas do sistema. - Funcionais: Funcionalidades ou os serviços que se espera que o sistema forneça. - Não-funcionais: Não dizem respeito diretamente às funções específicas do sistema. Definem atributos como confiabilidade e restrições. Engenharia de Software - Professor Gabriel Baptista * Sommerville, 2005 24/09/2018 16 Engenharia de Requisitos Engenharia de Software - Professor Gabriel Baptista * Costa, 2007: Sub-Componentes do domínio da Engenharia de Requisitos Desenvolvimento de Requisitos Elicitação “Vamos tentar extrair as necessidades do cliente...” - Introspecção (Imaginação) - Questionários - Entrevistas - Etnografia (Observação) - JAD (Joint Application Development) Engenharia de Software - Professor Gabriel Baptista Desenvolvimento de Requisitos Análise “Vamos pensar sobre tudo que foi levantado e, de alguma maneira, vamos documentar estas necessidades na forma de sistema...” - JAD (Joint Application Development) - Use cases - Prototipação Engenharia de Software - Professor Gabriel Baptista Desenvolvimento de Requisitos Especificação “Vamos criar um contrato com o nosso cliente...” - O objetivo é gerar um documento que possa ser lido por diversos stakeholders: - Clientes - Gerentes - Engenheiros de Desenvolvimento - Engenheiros de Teste - Engenheiros de Implantação Engenharia de Software - Professor Gabriel Baptista Desenvolvimento de Requisitos Especificação Engenharia de Software - Professor Gabriel Baptista * Sommerville, 2005 Desenvolvimento de Requisitos Validação “Vamos confirmar o que o foi pedido pelo cliente...” - Prototipação - Revisões formais Engenharia de Software - Professor Gabriel Baptista 24/09/2018 17 Desenvolvimento de Requisitos Engenharia de Software - Professor Gabriel Baptista * Costa, 2007: Desenvolvimento de requisitos em um processo iterativo Só isso? Engenharia de Software - Professor Gabriel Baptista RUP – Rational Unified Process 2. Gerenciar requisitos Engenharia de Software - Professor Gabriel Baptista • Identificar os verdadeiros requisitos do sistema é um processo contínuo. • Compreensão do usuário sobre os requisitos do sistema também muda. • Se faz necessária a utilização de uma abordagem disciplinada. • Facilitação da comunicação. • Possibilidade de filtrar, localizar e priorizar requisitos. • Permite a detecção de problemas mais cedo. Obrigado! Engenharia de Software - Professor Gabriel Baptista Entendendo a especificação de requisitos Aula 6 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista • Cite as melhores práticas de desenvolvimento de software estudadas até agora. • Cite uma vantagem de termos o software sendo desenvolvido de forma iterativa. • Por que levantamos os requisitos? • Quais os tipos de requisitos existentes? • Como desenvolvemos requisitos? mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 18 Por onde começar? Escrevendo os requisitos!!! Engenharia de Software - Professor Gabriel Baptista Como escrever requisitos? • Escrita de tal maneira que diversos públicos possam entender • Deve determinar o escopo do projeto! • Após a leitura, todos os stakeholders devem concordar! Engenharia de Software - Professor Gabriel Baptista Tópicos básicos de uma ER 1. Revisões 2. Índice 3. Objetivo 4. Visão da Solução 5. Perspectiva da Solução 6. Características do Usuário 7. Glossário 8. Requisitos Funcionais 9. Requisitos Não-Funcionais 10. Anexos Engenharia de Software - Professor Gabriel Baptista Características dos requisitos • Clareza • Classificação • Número, Versão, Dificuldade, Prioridade, Estabilidade • Utilização de tópicos • Destaque do primeiro tópico • Utilize o tempo verbal futuro do presente para descrever cada requisito • Cuidado para não escrever requisitos ambíguos ou contraditórios. Engenharia de Software - Professor Gabriel Baptista Somente os requisitos são suficientes? Muitas vezes não!! • Modelo de Caso de Uso • Prototipação Engenharia de Software - Professor Gabriel Baptista Modelo de Casos de Uso • Uma das maneiras utilizadas para desenvolvimento dos requisitos funcionais. • Composto por: • Diagrama • Especificação Engenharia de Software - Professor Gabriel Baptista 24/09/2018 19 Para que serve? • Entender o comportamento do sistema • Identificar as funcionalidades de arquitetura • Localizar as classes • Identificar casos de teste • Planejar • Criar manuais Engenharia de Software - Professor Gabriel Baptista Caso de Uso “O modelo de casos de uso é um modelo das funções pretendidas do sistema e seu ambiente, e serve como um contrato estabelecido entre o cliente e os desenvolvedores. O modelo de casos de uso é usado como fonte de informações essencial para atividades de análise, design e teste.” Engenharia de Software - Professor Gabriel Baptista http://www.wthreex.com/rup/ Diagrama de Caso de Uso Engenharia de Software - Professor Gabriel Baptista Exemplo de diagrama de Caso de Uso Engenharia de Software - Professor Gabriel Baptista Ator Engenharia de Software - Professor Gabriel Baptista “Um ator define um conjunto coerente de papéis que os usuários do sistema podem desempenhar ao interagir com ele. Uma instância de ator pode ser desempenhada tanto por um indivíduo quanto por um sistema externo.” http://www.wthreex.com/rup/ Caso de Uso “Um caso de uso define um conjunto de instâncias de casos de uso, no qual cada instância é uma seqüência de ações realizadas por um sistema que produz um resultado de valor observável para determinado ator.” Engenharia de Software - Professor Gabriel Baptista http://www.wthreex.com/rup/ http://www.wthreex.com/rup/ http://www.wthreex.com/rup/ http://www.wthreex.com/rup/ 24/09/2018 20 Relacionamentos existentes • Associação • Generalização (Herança) • Inclusão • Extensão Engenharia de Software - Professor Gabriel Baptista Generalização • Conceito de Herança • Pode ser aplicado no caso de uso e no ator Engenharia de Software - Professor Gabriel Baptista Inclusão • Ação do sistema que será executada por mais de um caso de uso. • A seta é direcionada para o caso de uso que será incluído. Engenharia de Software - Professor Gabriel Baptista Engenharia de Software - Professor Gabriel Baptista Inclusão Extensão • Ação do sistema que pode ser executada por mais de um caso de uso. • A seta é direcionada para o caso de uso que poderá executar o caso de uso opcional. Engenharia de Software - Professor Gabriel Baptista Extensão Engenharia de Software - Professor Gabriel Baptista 24/09/2018 21 Especificação do Caso de Uso • Número: Número identificador do UC • Nome: Nome dado ao UC no diagrama • Breve descrição: Descrição em um parágrafo falando sobre o UC • Pré-condições: O que deve acontecer antes do caso de uso ser executado.• Fluxo de eventos: Fluxo básico (principal ou happy day), Fluxos alternativos, Fluxos de exceção) • Requisitos Especiais: Alguma informação adicional que deva ser comentada • Pós-condições: O que deve acontece após o caso de uso executar. • Inclusões: Pontos de inclusão • Extensões: Pontos de extensão • Relacionamentos: Atores relacionados, UC’s de especialização ou generalização. Engenharia de Software - Professor Gabriel Baptista Obrigado! Engenharia de Software - Professor Gabriel Baptista Melhores práticas para desenvolvimento de software: Modelar de forma visual Diferença entre as abordagens de análise estruturada, orientada a objetos e orientada a aspectos. Aula 7 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista • Por que levantamos os requisitos? • Mencione um dos capítulos necessários dentro de uma especificação de requisitos e o que escrevemos nele. • Cite uma boa prática de escrita da especificação de requisitos. • No que o modelo de casos de uso pode ajudar na especificação de requisitos? • Do que é formado o modelo de casos de uso? Melhores Práticas em Desenvolvimento de Software Engenharia de Software - Professor Gabriel Baptista Desenvolvimento iterativo Gerenciamento de requisitos Modelagem visual do software Utilização de arquiteturas baseadas em componentes Controle de mudanças do software Verificação contínua da qualidade do software Requisitos estão prontos... E agora? Engenharia de Software - Professor Gabriel Baptista mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 22 O que significa Análise? “Exame ou estudo da natureza de uma coisa complexa ou determinação de suas feições essenciais, por esse método.” (Dicionário Michaelis) Engenharia de Software - Professor Gabriel Baptista O papel do analista... "Análise é o estudo de um problema, que antecede à tomada de um ação” "A preocupação dominante da análise não é obter sucesso, mas evitar fracasso". (DeMarco, 1979) Análise e Projeto de Sistemas - Professor Gabriel Baptista Como fazemos a análise? Engenharia de Software - Professor Gabriel Baptista Depende... A verdade é que temos diferentes abordagens: 1. Análise Estruturada 2. Análise Orientada a Objetos 3. Análise Orientada a Aspectos 3. Modelar visualmente o software Engenharia de Software - Professor Gabriel Baptista • Simplificação da realidade que descreve completamente um sistema. • Perspectiva particular. • Padronização da comunicação. • Ferramentas de suporte. • Cuidado: com o nível de detalhamento. Análise Estruturada • Conceito de Decomposição Funcional • Foco voltado para as funções • Preocupação com os processos • Artefatos produzidos Diagrama de Entidade-Relacionamento Diagrama de Fluxo de Dados Dicionário de Dados Engenharia de Software - Professor Gabriel Baptista Exemplo de DFD Engenharia de Software - Professor Gabriel Baptista 24/09/2018 23 Conceito de Níveis do DFD (Decomposição Funcional) Engenharia de Software - Professor Gabriel Baptista DER (Modelo Conceitual) Engenharia de Software - Professor Gabriel Baptista MER (Modelo Lógico) Engenharia de Software - Professor Gabriel Baptista Exemplo de DER – Ferramenta Case (Visio 2007) Engenharia de Software - Professor Gabriel Baptista Análise Orientada a Objetos “O mundo real é composto por objetos. Cada objeto tem propriedades e comportamentos. Então porquê não desenvolver programas que simulem no computador os objetos do mundo real com suas propriedades e comportamentos?” Engenharia de Software - Professor Gabriel Baptista Análise Orientada a Objetos • Conceito bottom-up • Enfoque nos dados • Maior detalhe na modelagem • Mais próximo da realidade • Comunicação mais fácil com o usuário Engenharia de Software - Professor Gabriel Baptista 24/09/2018 24 UML • Unified Modeling Language • Padronizada pela OMG: Object Management Group • Os três amigos: Rumbaugh, Jacobson e Booch • Versão 2.0 Engenharia de Software - Professor Gabriel Baptista Sobre a UML “(UML®) helps you specify, visualize, and document models of software systems, including their structure and design, in a way that meets all of these requirements” http://www.omg.org/gettingstarted/what_is_uml.htm Engenharia de Software - Professor Gabriel Baptista UML 2.0 • 13 Diagramas: Estrutura: Classe, Objetos, Componente, Estrutura Composta, Pacote e Distribuição (Implantação). Comportamento: Caso de Uso, Atividade, Máquina de Estado. Interação: Seqüência, Comunicação, Temporização e Interação. Engenharia de Software - Professor Gabriel Baptista Hierarquia dos diagramas Engenharia de Software - Professor Gabriel Baptista Diagrama de Classes • Conjunto de classes, interfaces e colaborações, apresentando seus relacionamentos. • Diagrama mais comum da OO. • Visão estática da arquitetura do sistema. Engenharia de Software - Professor Gabriel Baptista Diagrama de Classes Engenharia de Software - Professor Gabriel Baptista http://www.omg.org/gettingstarted/what_is_uml.htm 24/09/2018 25 Diagrama de Pacotes • Decomposição do modelo dentro da organização e suas dependências. • Um pacote pode ter qualquer diagrama da UML. Engenharia de Software - Professor Gabriel Baptista Diagrama de Pacotes Engenharia de Software - Professor Gabriel Baptista Diagrama de Caso de Uso • Conjunto de casos de uso e atores (tipo especial de classe) e seu relacionamento. • Visão de uso estática do sistema. • Modelagem do comportamento do sistema. Engenharia de Software - Professor Gabriel Baptista Diagrama de Caso de Uso Engenharia de Software - Professor Gabriel Baptista Diagrama de Atividade • Estrutura do processo. • Passo a passo da execução. • Visão dinâmica do sistema. Engenharia de Software - Professor Gabriel Baptista Diagrama de Atividade Engenharia de Software - Professor Gabriel Baptista 24/09/2018 26 Diagrama de Seqüência • Diagrama de Interação • Enfatiza a cronologia de troca de mensagens entre classes. Engenharia de Software - Professor Gabriel Baptista Diagrama de Seqüência Engenharia de Software - Professor Gabriel Baptista http://www.wthreex.com Análise Orientada a Aspectos • Estado da arte! • Ainda não aplicado em sistemas de mercado. • Novo tipo de abstração agregado à UML: Aspecto Engenharia de Software - Professor Gabriel Baptista Aspecto • Assuntos que podem ser aplicados de forma transversal no sistema. • Relacionados à requisitos específicos • Logging • Segurança Engenharia de Software - Professor Gabriel Baptista Assuntos Engenharia de Software - Professor Gabriel Baptista Pontos de Corte • Definem o local aonde determinado assunto será associado: • Antes de execução de um método específico • Após uma exceção • Quando um valor de um objeto for modificado. Engenharia de Software - Professor Gabriel Baptista 24/09/2018 27 Pontos de Junção • Pontos dentro de um programa aonde um assunto pode ser associado. Engenharia de Software - Professor Gabriel Baptista Exemplo de programação Engenharia de Software - Professor Gabriel Baptista aspect authentication { before: call (public void update* (..)) // this is a pointcut { // this is the advice that should be executed when woven into // the executing system int tries = 0 ; string userPassword = Password.Get ( tries ) ; while (tries < 3 && userPassword != thisUser.password ( ) ) { // allow 3 tries to get the password right tries = tries + 1 ; userPassword = Password.Get ( tries ) ; } if (userPassword != thisUser.password ( )) then //if password wrong, assume user has forgotten to logout System.Logout (thisUser.uid) ; } } // authentication Obrigado! Engenharia de Software - Professor Gabriel Baptista As melhorespráticas de Engenharia de Software: Usar arquitetura baseada em componentes. Engenharia de software baseada em componentes: definição, conceituação e projeto com reuso. Engenharia de software orientada a serviços. Aula 8 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista • Cite vantagens em utilizarmos a modelagem visual do software. • Quais são as formas / maneiras conhecidas no mercado para modelagem visual do software. • O que você sabe sobre a análise estruturada? • O que você sabe sobre a análise orientada a objetos? • O que você sabe sobre a análise orientada a aspectos? 4. Usar arquiteturas baseadas em componente Engenharia de Software - Professor Gabriel Baptista • Melhor organização do sistema como um todo. • Estudo dos requisitos funcionais e não- funcionais. • Separação clara de elementos de um sistema. • Ferramentas de modelagem permitem a automação para este tipo de desenvolvimento. • Reutilização facilitada por padrões de mercado. mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 28 Projeto com reuso Engenharia de Software - Professor Gabriel Baptista “O processo de projeto, na maioria das disciplinas de engenharia, baseia-se no reuso de sistemas existentes ou componentes” (SOMMERVILLE, 2008) Projeto com reuso Engenharia de Software - Professor Gabriel Baptista • Preocupação desde os requisitos com os pontos do projeto que podem ou serão potenciais itens de reuso. • Dependente de um processo de desenvolvimento voltado para tal tarefa. • Custo inicial pode ser mais alto, entretanto, o retorno do investimento vai acontecer à medida que o componente for reutilizado. Projeto com reuso Engenharia de Software - Professor Gabriel Baptista Requisitos gerais do sistema Identificar componentes candidatos Alterar requisitos de acordo com componentes encontrados Projeto de arquitetura Identificar componentes candidatos Compor componentes para criar sistema Desenvolvimento sem reuso Engenharia de Software - Professor Gabriel Baptista Sistema A Verificação do CPF Sistema B Verificação do CPF Sistema C Verificação do CPF Desenvolvimento com reuso Engenharia de Software - Professor Gabriel Baptista Sistemas Biblioteca Comum Verificação do CPF Sistema A Sistema B Sistema C Vantagens do reuso Engenharia de Software - Professor Gabriel Baptista • Confiança aumentada • Risco de processo reduzido • Uso eficiente de especialistas • Conformidade com padrões • Desenvolvimento acelerado 24/09/2018 29 Desvantagens do reuso Engenharia de Software - Professor Gabriel Baptista • Falta de apoio de ferramenta • Síndrome do não-inventado-aqui • Criação e manutenção de uma biblioteca de componentes Abordagens que apóiam o reuso Engenharia de Software - Professor Gabriel Baptista • Design patterns • Desenvolvimento baseado em componentes • Frameworks • Empacotamento de sistemas legados • Sistemas orientados a serviços • Linhas de produtos de aplicação • Softwares de prateleira • Bibliotecas • Desenvolvimento de software orientado a aspectos Evolução das bibliotecas Engenharia de Software - Professor Gabriel Baptista • LIB: Compilado junto com a aplicação. • DLL*: Arquivo distinto da aplicação. • COM*: Serviço disponível para um computador, baseado em mensagens Windows. • COM+*: Processamento distribuído. Conceito de servidor de componentes. • WebServices: Serviços na Internet. Baseado no HTTP. * Tecnologia Windows Desenvolvimento Orientado a Serviços Engenharia de Software - Professor Gabriel Baptista “ As arquiteturas orientadas a serviços são um caminho para o desenvolvimento de sistemas distribuídos nos quais os componentes desses sistemas são serviços dedicados” (SOMMERVILLE, 2008) Desenvolvimento Orientado a Serviços Engenharia de Software - Professor Gabriel Baptista • SOA – Service Oriented Architecture • Na prática, implementado a partir de WebServices. • A empresa foca no serviço que ela se propõe a oferecer e deixa serviços adjacentes para serem feitos por parceiros. • Interoperabilidade. Interoperabilidade? Engenharia de Software - Professor Gabriel Baptista “Intercâmbio coerente de informações e serviços entre sistemas. Deve possibilitar a substituição de qualquer componente ou produto usado nos pontos de interligação por outro de especificação similar, sem comprometimento das funcionalidades do sistema.” (Governo do Reino Unido) 24/09/2018 30 Obrigado! Engenharia de Software - Professor Gabriel Baptista As melhores práticas de Engenharia de Software: Verificar Continuamente a Qualidade do Software Controlar Mudanças de Software Aula 9 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando: Correção às 19:45 Engenharia de Software - Professor Gabriel Baptista • Cite vantagens em utilizarmos a modelagem visual do software. • Quais são as formas / maneiras conhecidas no mercado para modelagem visual do software. • Cite vantagens e desvantagens do projeto com reuso. • O que significa a sigla SOA e o que você pode comentar sobre esta arquitetura. Melhores Práticas em Desenvolvimento de Software Engenharia de Software - Professor Gabriel Baptista Desenvolvimento iterativo Gerenciamento de requisitos Utilização de arquiteturas baseadas em componentes Modelagem visual do software Verificar continuamente a qualidade do software Controlar mudanças de Software 5. Verificar continuamente a qualidade do software Engenharia de Software - Professor Gabriel Baptista Tempo C u s to Garantia da Qualidade de Software Qualidade de Software - Professor Gabriel Baptista Atividade: Quem é você e o que significa um projeto de software de boa qualidade? Cada grupo fará uma análise visando um dos diversos tipos de stakeholders que conhecemos: Ao final da análise, o grupo deverá reportar o resultado conclusivo gerado com a discussão interna. Deve-se apresentar um ou dois parágrafos que mostrem as observações feitas pelos membros representantes de cada um dos papéis estudados. • Investidor • Usuário • Responsável pela solução no cliente • Gerente de Projetos • Analista de Negócios • Analista de Requisitos • Arquiteto de Software • Analista de Sistemas • Programador • Analista de Testes • Testador • Implantador / Integrador • Product Owner • Scrum Master • Analista de Dados • Engenheiro de Software • Analista de Configuração • Pentester • UX professional mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 31 Garantia da Qualidade de Software Qualidade de Software - Professor Gabriel Baptista Pergunta 1: Qual é o meu papel em um projeto de software? Pergunta 2: O que significa um projeto de software de boa qualidade na minha visão? Cenários Cenário 1: Projeto inovador, envolvendo a área financeira, dentro de uma Fintech com ciclo de vida ágil. Cenário 2: Indústria de grande porte, com problemas por ainda desenvolver projetos no modelo tradicional. Cenário 3: Empresa de varejo com muitas unidades e departamento de TI próprio. Cenário 4: Pequena empresa desenvolvendo software para escritórios de contabilidade. E agora? Qualidade de Software - Professor Gabriel Baptista • Monte o grupo do cenário • Máximo de 5 papéis por cenário • Conte no seu grupo o motivo por ter escolhido: • Quem é você (Qual é o seu papel)? • O que é qualidade para você? • Porque você escolheu esse cenário? • Prepare uma resposta única para apresentar às 21:35. Você já leu essa frase? A qualidade é relativa. O que é qualidade para uma pessoa pode ser falta de qualidade para outra. (Weinberg) Qualidade de Software- Professor Gabriel Baptista https://youtu.be/2pi rMAwZF5g Vertentes de Qualidade Qualidade no Produto Engenharia de Software - Professor Gabriel Baptista Foca garantir que os artefatos estão sendo desenvolvidos com a qualidade necessária, atendendo às expectativas de todos os leitores e das normas vinculadas ao produto. Não está preocupada em saber se o que está escrito condiz com a necessidade do cliente. 24/09/2018 32 Vertentes de Qualidade Qualidade no Processo Engenharia de Software - Professor Gabriel Baptista Exige que todos os passos determinados no processo estejam sendo executados na ordem proposta, inclusive a geração dos artefatos. Entretanto, não está preocupado com o conteúdo dos arquivos gerados. Como garantir a qualidade do conteúdo? Engenharia de Software - Professor Gabriel Baptista Processo de Verificação “Estamos construindo o produto corretamente?” (Boehm) Processo de Validação “Estamos construindo o produto correto?” (Boehm) Modelo V (GRANJA, Ivan) Engenharia de Software - Professor Gabriel Baptista Teste de Aceitação (homologação funcional) Teste de Unidade Implementação: Código Requisitos Não Funcionais e Restrições Requisitos Funcionais (Obtidos c/ o Usuário) Teste de Sistema (homologação da aplicação / produto) Teste de Integração Análise DinâmicaAnálise Estática Planos de Teste Planos de Teste Planos Projeto: Arquitetura da Modelos Aplicação + RNF Físicos Definição e Análise: Modelos Lógicos Verificação e Validação Estática Engenharia de Software - Professor Gabriel Baptista “Não se faz necessário executar o software no computador” • Inspeções ou revisões por pares Verificação e Validação Dinâmica Engenharia de Software - Professor Gabriel Baptista “Envolve executar uma implementação com dados de teste” • Testes de software SQA – Software Quality Assurance (GRANJA, Ivan) Engenharia de Software - Professor Gabriel Baptista SQA Sw Testing Quality Control Gestão de Configuração e Versão SQA Sw Testing Quality Control Gestão de Configuração e Versão Normas e Padrões Procedimentos Convenções e Especificações Analise Dinâmica Estratégias, Técnicas e Ferramentas, Verificação e Validação Análise Estática Integração ao Processo, Técnicas de Verificação Contínua 24/09/2018 33 6. Controlar mudanças do software Engenharia de Software - Professor Gabriel Baptista • Necessidade de um controle disciplinado: Equipes distantes, projetos de integração, stakeholders com visões diferentes. • Fluxos repetíveis para gerenciar mudanças em todos os artefatos. • Conceito de baseline (linha base). • Rastreabilidade. • Estatísticas em torno de mudanças. • Ferramentas. Sim! Os requisitos mudam! “E devemos agradecer sempre por eles mudarem!” - Novas necessidades - Novas leis - Mudanças tecnológicas “Só temos que nos prevenir de mudanças de requisitos que causem a falha do projeto!” Engenharia de Software - Professor Gabriel Baptista Controle de mudanças do software “A maioria das modificações no software é justificada. Não condene modificações. Em vez disso, certifique-se de que dispõe de mecanismos para cuidar delas.” [PRESSMAN] Engenharia de Software - Professor Gabriel Baptista Obrigado! Engenharia de Software - Professor Gabriel Baptista O processo unificado (UP): conceitos e relação com as melhores práticas de Engenharia de Software. Papéis e artefatos do RUP Aula 10 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Atividade Engenharia de Software - Professor Gabriel Baptista 1. Qual a diferença entre produto e processo de software? 2. Qual a diferença entre processo de software e modelo de processo de software? 3. Cite um artefato de software essencial no desenvolvimento. 4. Cite as atividades fundamentais do desenvolvimento de software e o que basicamente é realizado em cada uma delas. mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 34 O Processo Unificado Engenharia de Software - Professor Gabriel Baptista • Processo de Engenharia de Software • Modelo de Processo • Produto de Processo • Melhores Práticas em Desenvolvimento moderno de software Melhores Práticas em Desenvolvimento de Software Engenharia de Software - Professor Gabriel Baptista Desenvolvimento iterativo Gerenciamento de requisitos Utilização de arquiteturas baseadas em componentes Modelagem visual do software Verificação contínua da qualidade do software Controle de mudanças do software Desenvolver o software iterativamente Engenharia de Software - Professor Gabriel Baptista • Cada iteração resulta em um lançamento executável. • Facilidade de encontrar problemas mais cedo. • Usuário mais participativo. • Equipe é forçada a pensar nos pontos mais críticos. • Lições aprendidas podem ser melhoradas dentro do próprio projeto. • Facilidade de verificação do status do projeto. • Equipe de teste tem trabalho mais uniforme. Gerenciar requisitos Engenharia de Software - Professor Gabriel Baptista • Identificar os verdadeiros requisitos do sistema é um processo contínuo. • Compreensão do usuário sobre os requisitos do sistema também muda. • Se faz necessária a utilização de uma abordagem disciplinada. • Facilidade de comunicação. • Possibilidade de filtrar, localizar e priorizar requisitos. • Permite a detecção de problemas mais cedo. Usar arquiteturas baseadas em componente Engenharia de Software - Professor Gabriel Baptista • Melhor organização do sistema como um todo. • Facilidade na recuperação rápida do sistema. • Estudo dos requisitos funcionais e não- funcionais. • Separação clara de elementos de um sistema. • Reutilização facilitada por padrões de mercado. • Facilidade no gerenciamento da configuração. • Ferramentas de modelagem permitem a automação para este tipo de desenvolvimento. Modelar visualmente o software Engenharia de Software - Professor Gabriel Baptista • Simplificação da realidade que descreve completamente um sistema. • Perspectiva particular. • UML = Unified Modeling Language. • Padronização da comunicação. • Cuidado com o nível de detalhamento. • Ferramentas de suporte. 24/09/2018 35 Verificar continuamente a qualidade do software Engenharia de Software - Professor Gabriel Baptista Tempo C u s to Controlar mudanças do software Engenharia de Software - Professor Gabriel Baptista • Necessidade de um controle disciplinado: Equipes distantes, projetos de integração, stakeholders com visões diferentes. • Fluxos repetíveis para gerenciar mudanças em todos os artefatos. • Conceito de baseline (linha base). • Rastreabilidade. • Estatísticas em torno de mudanças. • Ferramentas. O Processo Unificado Engenharia de Software - Professor Gabriel Baptista O Processo Unificado e suas extensões Engenharia de Software - Professor Gabriel Baptista Processo Unificado (Jacobson, Booch e Rumbaugh - 1999) RUP: IBM Rational Unified Process (Três Amigos) AUP: Agile Unified Process (Scott W. Ambler) EUP: Enterprise Unified Process (Scott W. Ambler) EssUP Essential Unified Proccess (Ivar Jacobson) O Modelo RUP Engenharia de Software - Professor Gabriel Baptista Estrutura do RUP Engenharia de Software - Professor Gabriel Baptista 1. Quem? 2. O quê? 3. Quando? 4. Como? 24/09/2018 36 Papéis (Quem?) Engenharia de Software - Professor Gabriel Baptista • Analista • Desenvolvedor • Testador • Gerente • Adicionais Papéis do Analista Engenharia de Software - Professor Gabriel Baptista Analista de Sistemas Designer de Negócios Revisor do Modelo de Negócios Analista do Processo de Negócios Revisor de Requisitos Especificador de Requisitos Analista de Teste Designer de Interface de Usuário Papéis do Desenvolvedor Engenharia de Software - Professor GabrielBaptista Designer de Cápsula Revisor de Código Designer de Banco de Dados Implementador Integrador Arquiteto de Software Revisor de Arquitetura Revisor de Design Designer Designer de Teste Papéis do Testador Engenharia de Software - Professor Gabriel Baptista Testador Papéis do Gerente Engenharia de Software - Professor Gabriel Baptista Engenheiro de Processo Gerente de Projeto Gerente de Controle de Mudança Gerente de Configuração Gerente de Implantação Revisor do Projeto Gerente de Testes Papéis Adicionais Engenharia de Software - Professor Gabriel Baptista Envolvidos Todos os Papéis Desenvolvedor do Curso Artista Gráfico Especialista em Ferramentas Administrador de Sistema Redator Técnico http://www.wthreex.com/rup/portugues/process/workers/wk_sysan.htm http://www.wthreex.com/rup/portugues/process/workers/wk_bdes.htm http://www.wthreex.com/rup/portugues/process/workers/wk_bmrv.htm http://www.wthreex.com/rup/portugues/process/workers/wk_bpan.htm http://www.wthreex.com/rup/portugues/process/workers/wk_reqrv.htm http://www.wthreex.com/rup/portugues/process/workers/wk_ucaut.htm http://www.wthreex.com/rup/portugues/process/workers/wk_tstanl.htm http://www.wthreex.com/rup/portugues/process/workers/wk_uides.htm http://www.wthreex.com/rup/portugues/addin_realtime/process/workers/wk_ccdsr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_codrv.htm http://www.wthreex.com/rup/portugues/process/workers/wk_dbdsr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_implm.htm http://www.wthreex.com/rup/portugues/process/workers/wk_syint.htm http://www.wthreex.com/rup/portugues/process/workers/wk_archt.htm http://www.wthreex.com/rup/portugues/process/workers/wk_arvwr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_desrv.htm http://www.wthreex.com/rup/portugues/process/workers/wk_dsgnr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_tstds.htm http://www.wthreex.com/rup/portugues/process/workers/wk_tstr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_prcen.htm http://www.wthreex.com/rup/portugues/process/workers/wk_projm.htm http://www.wthreex.com/rup/portugues/process/workers/wk_ccmgr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_cmmgr.htm http://www.wthreex.com/rup/portugues/process/workers/wk_depm.htm http://www.wthreex.com/rup/portugues/process/workers/wk_prrev.htm http://www.wthreex.com/rup/portugues/process/workers/wk_tstmng.htm http://www.wthreex.com/rup/portugues/process/workers/wk_sthld.htm http://www.wthreex.com/rup/portugues/process/workers/wk_any.htm http://www.wthreex.com/rup/portugues/process/workers/wk_crsdv.htm http://www.wthreex.com/rup/portugues/process/workers/wk_grart.htm http://www.wthreex.com/rup/portugues/process/workers/wk_tlsmt.htm http://www.wthreex.com/rup/portugues/process/workers/wk_sysad.htm http://www.wthreex.com/rup/portugues/process/workers/wk_tchwr.htm 24/09/2018 37 Links interessantes Engenharia de Software - Professor Gabriel Baptista • Agile Unified Process Download: http://www.ambysoft.com/unified process/agileUP.html Bibliografia Complementar Engenharia de Software - Professor Gabriel Baptista • KRUCHTEN, Philippe Introdução ao RUP - Rational Unified Process. Rio de Janeiro: Ciência Moderna Ltda., 2003. Obrigado! Engenharia de Software - Professor Gabriel Baptista Artefatos, Fases e Disciplinas do RUP Aula 11 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando... Engenharia de Software - Professor Gabriel Baptista 1. Cite as melhores práticas para desenvolvimento de software e um dos motivos pelo qual chamamos cada uma delas de melhor prática. 2. O que é o UP? 3. O que é o RUP? Qual a diferença entre o RUP e o UP? 4. Cite três papéis mencionados pelo RUP e o que basicamente eles fazem durante o processo de desenvolvimento. Relembrando: Estrutura do RUP Engenharia de Software - Professor Gabriel Baptista 1. Quem? 2. O quê? 3. Quando? 4. Como? http://www.ambysoft.com/unifiedprocess/agileUP.html mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 38 O Modelo RUP Engenharia de Software - Professor Gabriel Baptista Artefatos (O quê?) Engenharia de Software - Professor Gabriel Baptista • Modelagem de Negócios • Requisito • Análise e Design • Implementação • Teste • Implantação • Gestão de Configuração e Mudança • Gestão de Projeto • Ambiente Artefatos da Modelagem de Negócios Engenharia de Software - Professor Gabriel Baptista Artefatos de Requisito Engenharia de Software - Professor Gabriel Baptista Artefatos de Análise e Design Engenharia de Software - Professor Gabriel Baptista Artefatos de Implementação Engenharia de Software - Professor Gabriel Baptista 24/09/2018 39 Artefatos de Teste Engenharia de Software - Professor Gabriel Baptista Artefatos de Implantação Engenharia de Software - Professor Gabriel Baptista Artefatos de Gestão de Configuração e Mudança Engenharia de Software - Professor Gabriel Baptista Artefatos de Gestão de Projeto Engenharia de Software - Professor Gabriel Baptista Artefatos de Ambiente Engenharia de Software - Professor Gabriel Baptista Quando? (Tempo) Engenharia de Software - Professor Gabriel Baptista • Iniciação • Elaboração • Construção • Transição 24/09/2018 40 Tempo de Iniciação: Objetivos Engenharia de Software - Professor Gabriel Baptista • Obter contexto e requisitos mais importantes • Planejar (Caso de uso de negócio, riscos, pessoas, custo, prazo, rentabilidade) • Visualizar arquitetura possível Tempo de Iniciação: Resultados Engenharia de Software - Professor Gabriel Baptista • Documento de visão • Glossário • Caso de uso (inicial) • Risco x Mitigação • Plano de Projeto • Modelo de Negócio • Protótipos • Especificação de Requisitos Tempo de Iniciação: Marco a ser atingido Engenharia de Software - Professor Gabriel Baptista • Aceite de custo e estimativas por parte dos stakeholders. • Entendimento dos requisitos / escopo. • Despesas atuais versus planejadas conforme planejado. Tempo de Elaboração: Objetivos Engenharia de Software - Professor Gabriel Baptista • Definir arquitetura de acordo com visão: negócio, custo e prazo • Planejar a construção • Selecionar componentes • Decidir entre fazer, comprar e/ou reutilizar Tempo de Elaboração: Resultados Engenharia de Software - Professor Gabriel Baptista • Caso de uso (80% completo) • Adequações nos requisitos • Arquitetura • Plano para desenvolvimento Tempo de Elaboração: Marco a ser atingido Engenharia de Software - Professor Gabriel Baptista • Visão estável • Arquitetura estável • Plano de construção adequado • Despesas aceitáveis • Stakeholders de acordo 24/09/2018 41 Tempo de Construção: Objetivos Engenharia de Software - Professor Gabriel Baptista • Evitar trabalho. • Alcançar a qualidade adequada. • Gerar versões úteis o mais rápido possível. Tempo de Construção: Resultados Engenharia de Software - Professor Gabriel Baptista • Programas. • Manuais. • Release notes. Tempo de Construção: Marco a ser atingido Engenharia de Software - Professor Gabriel Baptista • Software com capacidade de operação no nível adequado de Qualidade. • Produto estável. • Despesas aceitáveis. Tempo de Transição: Objetivos Engenharia de Software - Professor Gabriel Baptista • Levar o software até os usuários. • Treinar usuários e mantenedores. • Converter bases operacionais. • Receber o aceite do cliente. Tempo de Transição: Resultados Engenharia de Software - Professor Gabriel Baptista • Pacote comercial. • Treinamento. • Folhas de avaliação e aceitação preenchidas. Tempo de Transição: Marco a ser atingido Engenharia de Software - Professor Gabriel Baptista • Lançamento do produto. • Usuário satisfeito. • Despesas adequadas. 24/09/2018 42 Como? (Conteúdo / Fluxo / Disciplina) Engenhariade Software - Professor Gabriel Baptista • Disciplinas de Engenharia Modelagem de negócios Requisitos Análise e Design Implementação Teste Implantação • Disciplinas de Suporte Gerenciamento de Configuração e Mudanças Gerenciamento de projeto Ambiente Modelagem de negócios Engenharia de Software - Professor Gabriel Baptista Requisitos Engenharia de Software - Professor Gabriel Baptista Análise e Design Engenharia de Software - Professor Gabriel Baptista Implementação Engenharia de Software - Professor Gabriel Baptista Teste Engenharia de Software - Professor Gabriel Baptista 24/09/2018 43 Implantação Engenharia de Software - Professor Gabriel Baptista Gerenciamento de Configuração e Mudanças Engenharia de Software - Professor Gabriel Baptista Gerenciamento de projeto Engenharia de Software - Professor Gabriel Baptista Ambiente Engenharia de Software - Professor Gabriel Baptista Obrigado! Engenharia de Software - Professor Gabriel Baptista Métricas de Software Aula 12 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 44 Para pensar... Engenharia de Software - Professor Gabriel Baptista Um dos objetivos básicos da Engenharia de Software é: a transformação da criação de sistemas de software de uma maneira artística, indisciplinada e pouco entendível para uma forma devidamente controlada, quantificada e previsível. (Huzita, Elisa H. M.) Quantificada e previsível? Engenharia de Software - Professor Gabriel Baptista SIM!!! “Não se pode gerenciar o que não se pode medir” (Tom De Marco) “When you find something that looks funny, measure amount of funny – This is engineering. Numbers do tell a story” (Jack Ganssle) E como fazemos isso? Engenharia de Software - Professor Gabriel Baptista Através de métricas de software! Medição de determinada informação sobre: • O software • O processo de produção • Os envolvidos no processo de produção Exemplos de métricas Engenharia de Software - Professor Gabriel Baptista • Tamanho do produto de software (ex: Número de Linhas de código) • Número de pessoas necessárias para implementar um caso de uso • Número de defeitos encontrados por fase de desenvolvimento • Esforço para a realização de uma tarefa • Tempo / Prazo para a realização de uma tarefa • Custo para a realização de uma tarefa • Grau de satisfação do cliente (ex: adequação do produto ao propósito, conformidade do produto com a especificação) E por que medimos o software? Engenharia de Software - Professor Gabriel Baptista • Gerir o projeto de desenvolvimento • Avaliar retorno sobre investimento (ROI) • Aprender sobre o processo de desenvolvimento de software • Melhorar o processo de produção de software • Definir a produtividade da equipe • Indicar qualidade no produto e no processo de software Os quatro papéis da medição (Humphrey) Engenharia de Software - Professor Gabriel Baptista Processos, Processos, Produtos e Produtos e ServiServiçços de os de SoftwareSoftware EntenderEntenderEntenderEntender AvaliarAvaliarAvaliarAvaliar PreverPreverPreverPrever ControlarControlarControlarControlar 24/09/2018 45 Características das métricas Engenharia de Software - Professor Gabriel Baptista • O cálculo deve ser simples e barato • Os valores obtidos podem ser utilizados para estudos estatísticos, desde que confiáveis • O resultado deve ser expresso em alguma unidade • Preferencialmente, a métrica deve ser automatizada • Pode ser utilizada como sinalizador para avaliar e atuar em melhorias no processo de desenvolvimento Categoria das métricas Engenharia de Software - Professor Gabriel Baptista Tipo Definição Exemplo Direta Básica, a partir de contagem Número de páginas do documento, número de linhas de código (KLOC), Número de erros detectados em uma versão Indireta Derivada de uma ou mais métricas Complexidade, Facilidade de manutenção, Custo, Pontos por função, Pontos por caso de uso Cuidados a serem tomados Engenharia de Software - Professor Gabriel Baptista • Comparações indevidas, que podem acabar resultando em: • Metas inadequadas • Decisões inapropriadas • Demissões • Baixa no relacionamento entre a equipe GQM – Goal, Question, Metrics (Huzita, Elisa H. M.) Engenharia de Software - Professor Gabriel Baptista Objetivo 1 Objetivo 2 Questão 1 Questão 2 Questão 3 Questão 4 Métrica 1 Métrica 2 Métrica 3 Métrica 4 Métrica 5 Ciclo de medição Engenharia de Software - Professor Gabriel Baptista • Planejamento – Geração do plano de métricas • Medição • Análise dos dados • Tomada de decisões e ações a serem realizadas • Implementação das ações • Nova rodada! Como estimar software? Engenharia de Software - Professor Gabriel Baptista • Tamanho Quanto de software deve ser produzido? • Esforço Quantas horas preciso para produzir um software com este tamanho? • Prazo Com o número de pessoas que tenho no projeto, quanto tempo levarei para produzir este software? • Custo Quanto ao final sairá o projeto? 24/09/2018 46 Histórico Engenharia de Software - Professor Gabriel Baptista • Década de 70: Número de linhas de código, complexidade • Década de 80: Esforço e custo, medidas na etapa da especificação • Década de 90: Relatórios com Benchmarking, ferramentas de medição, Análise de Pontos de Função, Pontos por Caso de Uso Obrigado! Engenharia de Software - Professor Gabriel Baptista Estimativa de Software (Pontos por Função e Pontos por Caso de Uso) Aula 13 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Revisando Engenharia de Software - Professor Gabriel Baptista • Por que medimos o software? • Qual a diferença entre as métricas diretas e as métricas indiretas? • Qual foi a técnica citada para detecção e obtenção das métricas adequadas para a solução de determinado problema? • Para que serve a métrica que tem por unidade de medida o kLOC e em que tipo de categoria ela se encaixa? • O que significa complexidade ciclomática? Como estimar software? Engenharia de Software - Professor Gabriel Baptista • Tamanho Quanto de software deve ser produzido? • Esforço Quantas horas preciso para produzir um software com este tamanho? Como estimar software? Engenharia de Software - Professor Gabriel Baptista • Prazo Com o número de pessoas que tenho no projeto, quanto tempo levarei para produzir este software? • Custo Quanto ao final sairá o projeto? mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 47 Mas como descobrir o tamanho do software? Engenharia de Software - Professor Gabriel Baptista • Base histórica • Análise de Pontos por Função • Análise de Pontos por Caso de Uso Análise de Pontos por Função Engenharia de Software - Professor Gabriel Baptista “Da mesma maneira que a medida em metros quadrados do tamanho de uma casa não permite deduzir a velocidade com a qual a casa pode ser construída ou o seu tempo de construção, o tamanho em Pontos de Função NÃO mede a produtividade ou o esforço de desenvolvimento. Pontos de função medem o tamanho do QUE o software faz, ao invés de COMO ele é desenvolvido e implementado. Isto significa que, dado um conjunto de requisitos de usuário, o tamanho funcional do software será o mesmo, seja ele desenvolvido com a utilização de COBOL ou DB2, usando desenvolvimento rápido de aplicações (RAD), ou métodos estruturados de desenvolvimento.” (Carol A. Dekkers) Passos da APF (Carol A. Dekkers) Engenharia de Software - Professor Gabriel Baptista • Identificar a fronteira da aplicação • Contar os tipos de funções de dados • ArquivosLógicos Internos ou ALIs, que são os grupos lógicos de dados mantidos dentro da fronteira da aplicação • Arquivos de Interface Externa ou AIEs, os quais são apenas referenciados pela aplicação • Contar os tipos de funções de transaçõe • Entradas Externas ou EEs, que são processos de entrada de dados • Saídas Externas ou SEs, por exemplo, relatório de empregados existentes • Consultas Externas ou CEs, por exemplo, Consultar Detalhes de Empregados). Passos da APF (Carol A. Dekkers) Engenharia de Software - Professor Gabriel Baptista Tipo de Função Baixa Média Alta EE 3 4 6 SE 4 5 7 CE 3 4 6 ALI 7 10 15 AIE 5 7 10 Passos da APF (Carol A. Dekkers) Engenharia de Software - Professor Gabriel Baptista • Determinar o Fator de Ajuste de Valor (FAV) FAV = 0,65 + (Soma das Características Gerais do Sistema x 0,01 • Avaliação, em uma escala de 1 a 5, das seguintes quatorze Para terminar Engenharia de Software - Professor Gabriel Baptista Para obter a contagem ajustada (tamanho) Tamanho = (contagem não ajustada * AFV) Para obter esforço: Esforço = contagem final de PF * valor HH p/ 1 PF Para obter o prazo em dias: Prazo = Esforço / Nº Desenvolvedores / Horas projeto dia Para obter o custo: Custo = Esforço * Custo HH 24/09/2018 48 Use case points Engenharia de Software - Professor Gabriel Baptista • Proposto por Gustav Karner em 1993 • Evolução dos pontos por função • Objetivo: Determinar o tamanho do software • Unidade de medida: UCP • Baseai-se na avaliação da complexidade dos elementos dos casos de uso e do ambiente do sistema. Passo 1 – Calcular UAW (Unajusted Actor Weight) Engenharia de Software - Professor Gabriel Baptista Ator Interface Peso Simples Interface de programa (API) 1 Médio Protocolo (Ex.:TCP/IP) ou interface em modo texto 2 Complexo Interface gráfica 3 Passo 2 – Calcular UUCW (Unajusted Use Case Weight) Engenharia de Software - Professor Gabriel Baptista Caso de Uso Descrição Peso Simples < 3 transações ou < 5 classes de análise 5 Médio 4-7 transações ou 5 a 10 classes de análise 10 Complexo > 7 transações ou > 10 classes de análise 15 Passo 3 – Determinar o TCF (Technical Complexity Factor) Engenharia de Software - Professor Gabriel Baptista Fator Descrição Peso T1 Sistema distribuído 2 T2 Objetivos de performance 1 T3 Eficiênca on-line 1 T4 Complexidade de processamento 1 T5 Código reusável em outras aplicações 1 T6 Facilidade de instalação 0,5 Passo 3 – Determinar o TCF (Technical Complexity Factor) Engenharia de Software - Professor Gabriel Baptista Fator Descrição Peso T7 Facilidade de uso 0,5 T8 Portabilidade 2 T9 Facilidade de alterações (changeability) 1 T10 Concorrência 1 T11 Segurança 1 T12 Acesso direto a terceiros 1 T13 Necessidade de facilidades especiais de treinamento para usuários 1 Passo 4 – Determinar o EF (Environmental Factor) Engenharia de Software - Professor Gabriel Baptista Fator Descrição Peso F1 Familiaridade da equipe com RUP 1,5 F2 Experiência da equipe 0,5 F3 Experiência da equipe em OO 1 F4 Capacidade dos analistas da equipe 0,5 F5 Motivação 1 F6 Estabilidade dos requisitos 2 F7 Estagiários ou funcionários em tempo parcial -1 F8 Dificuldade da linguagem de programação -1 24/09/2018 49 Passo 5 - Cálculos Engenharia de Software - Professor Gabriel Baptista UUCP = UAW + UUC TCF = 0,6 + 0,01 * SOMA (Peso * Valor) EF = 1,4 - 0,03 * SOMA (Peso * Valor) UCP = UUCP * TCF * EF Esforço Engenharia de Software - Professor Gabriel Baptista Por padrão: 1 UCP = 20 h/H Obrigado! Engenharia de Software - Professor Gabriel Baptista Metodologias Ágeis Aula 14 (Versão 2018-02) Engenharia de Software Professor Gabriel Baptista ( gabriel.baptista@uni9.pro.br ) ( http://sites.google.com/site/professorgabrielbaptista ) Engenharia de Software - Professor Gabriel Baptista Extreme Programming (XP) Engenharia de Software - Professor Gabriel Baptista De acordo com Kent Beck, 12 ou 13 regras 1. O jogo de planejar • Tarefas pequenas para cada iteração 2. Releases pequenos • Novos releases diários, semanais ou mensais 3. Metáforas • Com o objetivo de expressar funcionalidades do sistema 4. Design simples • Sem duplicação de código, feito uma única vez 5. Testes • Testes são escritos continuamente • Clientes também escrevem casos de teste mailto:gabriel.baptista@uninove.br http://sites.google.com/site/professorgabrielbaptista 24/09/2018 50 Extreme Programming (XP) Engenharia de Software - Professor Gabriel Baptista 6. Refactoring • Simplicidade, flexibilidade, redução de redundância 7. Programação em par • Dois codificadores compartilhando o mesmo computador 8. Integração contínua • Todo novo código é integrado imediatamente 9. Controle coletivo • Todos os integrantes podem acessar qualquer código 10. Cliente no local de desenvolvimento • Ao menos um cliente disponível full-time 11. 40 horas por semana • A necessidade de trabalho fora do horário é um sintoma de um grande problema. Extreme Programming (XP) Engenharia de Software - Professor Gabriel Baptista 12. Área de trabalho aberta • Grande sala 13. Padrões de codificação • Promove fácil entendimento e uniformidade Extreme Programming (XP) Engenharia de Software - Professor Gabriel Baptista • Funcionalidades = Stories • As stories devem ser: • Orientados ao negócio • Testáveis • Estimáveis • Terminadas em poucos dias • Para cada release, um conjunto de stories é liberado • O teste do release é fundamental para o XP SCRUM Engenharia de Software - Professor Gabriel Baptista • Técnica para gestão de projetos • Baseado em conceitos ágeis • Três papéis dentro da equipe • Product owner • Scrum master • Team (Time) Product Owner Engenharia de Software - Professor Gabriel Baptista • Define as funcionalidades do produto • Prioriza funcionalidades de acordo com o valor de negócio • Decide a data e o conteúdo da entrega • Tira dúvidas da equipe durante os Sprints • Aceita ou rejeita os resultados do trabalho Scrum Master Engenharia de Software - Professor Gabriel Baptista • Cuida da gestão do projeto • Garante o uso dos princípios e práticas do Scrum • Remove impedimentos • Garante a produtividade do time • Garante a cooperação entre todos os papéis e funções • Protege o time de interferências externas 24/09/2018 51 Time Engenharia de Software - Professor Gabriel Baptista • Define as tarefas • Estima esforço • Desenvolve as funcionalidade do produto • Garante qualidade • Evolui o processo Metodologia Scrum Engenharia de Software - Professor Gabriel Baptista Product Backlog Engenharia de Software - Professor Gabriel Baptista • Possui requisitos de alto nível • Idealmente expressado de forma que os itens tenham valor para os usuários e clientes do produto • Priorizado pelo Product Owner • Repriorizado no início de cada Sprint • Muda e evolui durante o projeto Sprint Engenharia de Software - Professor Gabriel Baptista • Duração típica de 2 a 4 semanas • Uma duração constante proporciona um melhor ritmo • O produto é projetado, codificado e testado durante o Sprint Reuniões durante um Sprint Engenharia de Software - Professor Gabriel Baptista • Sprint Planning – Ocorre no início do sprint com todos os envolvidos. • Daily Meeting – Reunião em pé para verificação do andamento do projeto. • Retrospectiva – Reunião de encerramento do Sprint Ferramentas – Burndown Chart Engenharia de Software - Professor Gabriel Baptista 24/09/2018 52 Ferramentas – Scrum board Engenharia de Software - Professor Gabriel Baptista Ferramentas – Scrum board Engenharia de Software - Professor Gabriel Baptista Engenharia de Software - Professor Gabriel Baptista * DSDM = Dynamic Systems Development Method Adoção do Scrum Importante Engenharia de Software - Professor Gabriel Baptista • Conceitos de Engenharia de Software devem ser utilizados! • Não confundir métodos ágeis com falta de métodos! Obrigado!
Compartilhar