Baixe o app para aproveitar ainda mais
Prévia do material em texto
Assuntos do dia • SWEBOK • Processos de Software • Modelos de Processos/Ciclo de Vida Engenharia de Software SWEBOK • Projeto da IEEE Computer Society • Última versão: 3.0 publicada em Janeiro/2014 • Cópias do arquivo pdf distribuídas gratuitamente • Cópias do arquivo pdf distribuídas gratuitamente no link www.swebok.org • Iniciativa para reunir o corpo de conhecimentos sobre Engenharia de Software SWEBOK • Um pouco da história • 1958 – John Tukey utilizou o termo Software pela primeira vez na história • 1968 – NATO conference na Alemanha utilizou o • 1968 – NATO conference na Alemanha utilizou o termo Engenharia de Software pela primeira vez • 1972 – IEEE Computer Society publicou o primeiro Transactions on Software Engineering • 1976 – foi estabelecido um comite no IEEE para padronizar o desenvolvimento da ES SWEBOK • Um pouco da história • 1996 – foi publicada a norma ISO/IEC12207 com o título Standard for Software Life Cycle Processes • 2004 – primeira versão do corpo de conhecimento • 2004 – primeira versão do corpo de conhecimento SWEBOK com base na 12207 • 2014 – versão mais nova do SWEBOK V3 Engenharia de Software Abordagem sistemática, disciplinada e capaz de ser medida ao longo de um processo de ser medida ao longo de um processo de construção de um software O que é um Processo? • Latim= procedere • verbo que indica a ação de avançar, ir para frente (pro+cedere)frente (pro+cedere) • Conjunto de ações que objetivam atingir uma meta O que é um Processo? • Como é o processo de construção de uma casa? • Como é o processo de construção de um novo modelo de automóvel? O que é um Processo? • Na Engenharia de Software • Conjunto de passos ordenados • Objetivo = atingir uma meta = entregar um produto de software de maneira eficiente, previsível e que atinja as necessidades de negócio • Geralmente inclui análise de requisitos, projeto de software, programação, testes, entre outras tarefas Exemplo de um processo GENÉRICO de Software Engenharia Engenharia de de RequisitosRequisitos Projeto Projeto de de SoftwareSoftware Construção Construção e e TesteTeste ImplantaçãoImplantação RequisitosRequisitos SoftwareSoftware TesteTeste Definições Combinação de atividades, ferramentas e procedimentos visando o desenvolvimento ou evolução de um software (Sommerville)ou evolução de um software (Sommerville) Roteiro, ou conjunto de passos, previsível que ajuda a criar a tempo um software de alta qualidade (Pressman) Definições Combinação de atividades, ferramentas e procedimentos visando o desenvolvimento ou evolução de um software (Sommerville)ou evolução de um software (Sommerville) • Quais são as atividades? • Quais ferramentas devo utilizar? • Quais procedimentos devo seguir? Exemplo de um processo GENÉRICO de Software Engenharia Engenharia de de RequisitosRequisitos Projeto Projeto de de SoftwareSoftware Construção Construção e e TesteTeste ImplantaçãoImplantação RequisitosRequisitos SoftwareSoftware TesteTeste ATIVIDADES O que preciso fazer? Exemplo de um processo GENÉRICO de Software Engenharia Engenharia de de RequisitosRequisitos Projeto Projeto de de SoftwareSoftware Construção Construção e e TesteTeste ImplantaçãoImplantação FERRAMENTASFERRAMENTAS Gerenciador de Requisitos - ex: RequisitePro Linguagem de modelagem - ex: UML Linguagem de programação - ex: Delphi, Java, C# Compiladores - ex: JDK De testes - ex: JUnit Banco de Dados - ex: Oracle, MySQL Controle de Versão - ex: CVS, SubVersion Etc, etc, etc.... Exemplo de um processo GENÉRICO de Software Engenharia Engenharia de de RequisitosRequisitos Projeto Projeto de de SoftwareSoftware Construção Construção e e TesteTeste ImplantaçãoImplantação PROCEDIMENTOSPROCEDIMENTOS Definem a sequência das atividades, produtos a entregar (modelos, documentos, protótipos, relatórios, etc.), marcos de referência para administrar o progresso do software, etc. Em suma ... • Um processo de software – prescreve a ordem e a frequência de cada fase/atividade – especifica critérios para mudar de uma fase para outra – define o que tem que ser entregue ao final de cada fase • Um processo de software NÃO significa – “sobrecarga”, “papelada desnecessária”, “perda da tempo” • Um processo de software tem efeito positivo • para atender ao cronograma e obter software com mais qualidade e mais fácil de manter Modelos de Processo • Modelo é uma representação abstrata de um processo • Exemplos: • Sequenciais • Incrementais • Prototipagem Modelos de Processos • Sequenciais • Incrementais Modelos Sequenciais • També conhecido como • Modelo Cascata • Ciclo de Vida Clássico • Sequencial Linear • Requer abordagem sistemática e sequencial ao desenvolvimento de software • Principal característica • “O resultado de uma fase é a entrada da próxima” Exemplo de um processo GENÉRICO de Software Engenharia Engenharia de de RequisitosRequisitos Projeto Projeto de de SoftwareSoftware Construção Construção e e TesteTeste ImplantaçãoImplantação Engenharia de Requisitos Levantamento de requisitos Análise de requisitos Projeto de SW Projeto de Banco de Dados Projeto Arquitetural Projeto de Interface Engenharia de Requisitos Levantamento de requisitos Análise de requisitos Projeto de SW Projeto de Banco de Dados Projeto Arquitetural Projeto de Interface Construção Geração de código Teste Implantação Entrega Manutenção Feedback Construção Geração de código Teste Implantação Entrega Manutenção Feedback Problemas do Modelo Cascata • Em projetos reais, é difícil estabelecer todos os requisitos no início de um processo (incertezas) • Difícil acomodar mudanças com o processo em andamento, pois uma fase deve estar completa para andamento, pois uma fase deve estar completa para passar para a próxima (sem paralelismo) • Inflexibilidade em estágios distintos dificulta resposta aos requisitos de mudança do cliente • Cliente paciente • Uma versão executável só fica disponível em uma etapa avançada do desenvolvimento Problemas do Modelo Cascata • Devido aos custos de produção e aprovação de documentos, as iterações são onerosas e envolvem retrabalho significativo • É normal suspender partes do desenvolvimento mesmo com poucas iterações (ex: especificação) e prosseguir com poucas iterações (ex: especificação) e prosseguir com as fases posteriores � • Softwares que não atenderão ao que o cliente deseja • Softwares mal estruturados (problemas de projeto) • Descoberta de erros e omissões na implantação • Necessidade de evoluir o software precocemente Quando usá-lo!?! • Quando os requisitos são muito bem compreendidos, e quando as mudanças forem bastante limitadas durante o desenvolvimento • Poucos sistemas de negócio têm requisitos estáveis• Poucos sistemas de negócio têm requisitos estáveis • “... é significativamente melhor do que uma abordagem casual de desenvolvimento de software” • Modelo Cascata é simples e fácil de usar e gerenciar Exemplo Prático • Software de calculadora • Quais outros!?!? Modelos de Processos • Sequenciais • Incrementais Modelo Incremental • Ao invés de o sistema sofrer uma única entrega, o desenvolvimento e a entrega são separados em incrementos • Cada incremento fornece parte da funcionalidade solicitada Modelo Incremental • Requisitos são priorizados • Requisitos de prioridade mais alta são incluídos nos incrementos iniciaisincrementos iniciais • Se o desenvolvimento de um incremento é iniciado,seus requisitos são congelados, embora os requisitos para incrementos posteriores possam continuar evoluindo Modelo Incremental (1a visão) increment # n C o m m u n i c a t i o n P l a n n i n g M o d e l i n g C o n s t r u c t i o n D e p l o y m e n t d e l i v e r y f e e d b a c k analy s is des ign c ode t es t F u n cio n alid ad e e ca racte rísticas d o softw a re nº incremento C o m m u n i c a t i o n P l a n n i n g M o d e l i n g C o n s t r u c t i o n D e p l o y m e n t d e l i v e r y f e e d b a c k analy s is des ign c ode t es t increment # 1 increment # 2 delivery of 1st increment delivery of 2nd increment delivery of nt h increment project calendar t ime C o m m u n i c a t i o n P l a n n i n g M o d e l i n g C o n s t r u c t i o n D e p l o y m e n t d e l i v e r y f e e d b a c k ana ly s is des ign code t es t F u n cio n alid ad e e ca racte rísticas d o softw a re Tempo de projeto de software Entrega do 1º incremento Entrega do 2º incremento Entrega do nº incremento 2º incremento 1º incremento Modelo Incremental (2a visão) Modelo Incremental (3a visão) time Requirements 1Iteration # ���� 2 3 Product released XFirst iteration completed X M I L E S T O N E S S C H E D U L E 1 Requirements analysis Design Coding Testing 1 1 2 2 3 3 2 3 2 31 Software Subset Software Subset Final Version Vantagens do Modelo Incremental • Software pode ser entregue para o cliente com cada incremento e, desse modo, a funcionalidade principal é disponibilizada mais cedo • Incremento inicial age como se fosse um protótipo para auxiliar na coleta de requisitos para posteriores incrementos do software, PORÉM o incremento é um produto operacional a cada entrega • Riscos menores de falha geral do projeto • Módulos de mais alta prioridade são mais testados Quando usá-lo!?! • Quando não há mão de obra disponível para uma implementação completa dentro do prazo de entrega estabelecidoentrega estabelecido • Quando o núcleo do software a ser desenvolvido é bem conhecido, mas não os requisitos em sua totalidade (mais realista) Exemplo Prático • Software de processamento de texto • Incremento inicial (núcleo) • gestão básica de arquivos, edição e produção de documentos (ex: novo, abrir, salvar, imprimir, documentos (ex: novo, abrir, salvar, imprimir, formatação com tipo e tamanho de fonte, N, I, S, ...) • Incrementos posteriores • edição e produção de documentos mais sofisticados (ex: salvar como, gerar PDF, ) • verificação ortográfica e gramatical • ... Resumo • Um modelo de processo genérico para ES consiste num conjunto de atividades metodológicas e de apoio, ações e tarefas a realizar • Cada modelo pode ser descrito por um fluxo de processo diferente Resumo • Os modelos de processos são utilizados com o objetivo de organizar e estruturar o desenvolvimento de software • Cada modelo sugere um fluxo de processos ligeiramente diferente, mas todos realizam o mesmo conjunto de atividades metodológicas genéricas: comunicação, planejamento, modelagem, construção e emprego Resumo • Os modelos sequenciais (ex: cascata) são os paradigmas mais antigos • Sugerem um fluxo de processo linear que é inadequado para considerar as características dos sistemas modernos • Mas, tem aplicabilidade em situações em que os requisitos são bem definidos e estáveis Resumo • Os modelos de processo incremental são interativos por natureza e produzem rapidamente versões operacionais do sistema Leitura Recomendada – Capítulo 2 do livro texto: Pressman, Roger. Engenharia de Software, 7ed. McGrawHill, Porto Alegre, RS, 2011. – Capítulo 2 do livro texto: Sommerville, Ian. – Capítulo 2 do livro texto: Sommerville, Ian. Engenharia de Software, 9ed. Prentice Hall, São Paulo, SP, 2011. – Capítulo 8: SWEBOK V3. Disponível em http://www.swebok.org/
Compartilhar