Uma introdução ao SWEBOK Guide to the Software Engineering Body of Knowledge Catarina de Souza Costa [email protected] Qualidade, Processos e Gestão de Software – Prof. Alexandre Vasconcelos http://www.cin.ufpe.br/~processos/ 02/10/2008 1 Agenda 1. SWEBOK (Guide to the Software Engineering Body of Knowledge) [1] [4] [5] [6] 2. Áreas de Conhecimento 3. Estudo de Caso 4. Conclusões 2 O que é o SWEBOK? • Guide to the Software Engineering Body of Knowledge • É uma iniciativa do IEEE (Institute of Electrical and Electronics Engineers) Computer Society. Tem o propósito de criar um consenso sobre as áreas de conhecimento da Engenharia de Software e seu escopo. ≠ PMBOK - é o guia que identifica um subconjunto do conjunto de conhecimentos em gerenciamento de projetos. 3 O que levou a criação do guia? A Engenharia de Software é uma área de conhecimento em expansão e existem evidências inquestionáveis do seu nível crescente de maturidade: • Muitas universidades em todo mundo oferecem curso de graduação em Engenharia de Software. Por exemplo, University of New South Wales (Australia), McMaster University (Canada), the Rochester Institute of Technology (US), the University of Sheffield (UK), etc; • O Capability Maturity Model Integration (CMMI) e a família ISO 9000 de padrões são usados para avaliar a capacidade organizacional para a engenharia de software. • Association for Computing Machinery (ACM) e a Computer Society of the Institute of Electrical and Electronics Engineers (IEEE) desenvolveram, conjuntamente, um código de éticas e práticas para os profissionais da área; 4 Continuando... • Tanto o IEEE Computer Society quanto o Institute for Certification of Computing Professionals (ICCP) têm oferecido certificação para desenvolvedores e engenheiros de software. “Todos estes esforços são baseados na presunção que existe um conjunto de conhecimentos que deve ser dominado pelos engenheiros de software” O Corpo do Conhecimento existe na literatura que tem se acumulado ao longo dos últimos trinta anos. O SWEBOK é um guia que fornece este conjunto de conhecimento 5 Como o guia foi criado? • Começou como uma colaboração entre IEEE CS e ACM - de 1993 a 2000, o IEEE Computer Society e a Association for Computing Machinery (ACM) cooperaram para promover a profissionalização da engenharia de software, juntos eles articularam o Software Engineering Coordinating Committee (SWECC). • O projeto SWEBOK foi iniciado em 1998 Engineering Coordinating Committee). pela SWECC (Software 6 Continuando... Foi contratado o Software Engineering Management Research Laboratory at the Université du Québec à Montréal (UQAM)) para gerenciar o esforço. Nos últimos anos, a UQAM tem se associado a École de technologie supérieure, Montréal, Québec. O plano do projeto compreendia três fases sucessivas: Strawman, Stoneman, e Ironman. 7 Fases Straw Man Phase Stone Man Phase Experimentation and Trial Usage Iron Man Phase (Sub-phase 1) Revision Iron Man Phase (Subphase 2) Trial Version 1998 1999 2000 2001 2004 Version 2002 2003 8 Fases •Straw Man (Palha) Protótipo mostrando como o projeto seria organizado A versão foi publicada em setembro de 1998. •Stone Man (Pedra) Mais contribuições Concluído em 2001 Lançado uma versão Trial •Iron Man (Ferro) 2 sub-fases: Sub-fase 1 (2000-2002) Experimentação e uso julgamento do Guia Sub-fase 2 (2002-2003): Um extenso processo de revisão Conclusão (2004) 9 Quem participou? Participação de diversos stakeholders: indústria, agências de pesquisa, profissionais, autores: 10 Objetivos •Promover uma visão consistente da Engenharia de Software no mundo; •Clarear e marcar as fronteiras entre a Engenharia de Software e as outras disciplinas relacionadas, como: ciência da computação, gerenciamento de projetos, matemática... •Caracterizar o conteúdo da disciplina de Engenharia de Software; •Classificar em tópicos a área de conhecimento da Engenharia de Software; •Prover uma fundação para o desenvolvimento do currículo, para certificação individual e para licenciamento de material. 11 Princípios •Transparência O processo é totalmente documentado, publicado e divulgado. •Consenso Indústria (Boeing, Construx Software, a MITRE Corporation, Rational Software, Raytheon Systems, e SAP Labs-Canadá). Agências de Pesquisas (Instituto Nacional de Padrões e Tecnologia, Conselho Nacional de Pesquisa do Canadá), o Conselho Canadense de Engenheiros, e o IEEE Computer Society, que tem proporcionado suporte financeiro para o projeto. Ambientes Acadêmicos •Totalmente livre na WEB www.swebok.org 12 Qual o público alvo? •Organizações públicas e privadas; •Engenheiros de Software; •Sociedades profissionais; •Corporações de criação de padrões; •Estudantes de Engenharia de Software; •Educadores e Instrutores; 13 O que o guia não aborda? • Muitos aspectos importantes da tecnologia da informação que pode constituir um conhecimento importante na engenharia de software não são abordados no Guia, incluindo linguagens específicas de programação, bancos de dados específico, tecnologias de redes... “O Guia abrange os conhecimentos da engenharia de software que são necessários, mas não o suficiente para o engenheiro de software” 14 SWEBOK Guide to the Software Engineering Body of Knowledge Guide to the Software Engineering Body of Knowledge 2004 Version Software Requirements Software Design Software Construction Software Requirements Fundamentals Software Design Fundamentals Basic Concepts of Construction Requirements Process Requirements Elicitation Requirements Analysis Key Issues in Software Design Software Structure and Architecture Software Design Quality Analysis and Evaluation Managing Construction Practical Considerations (2004 Version) Software Testing Sofware Testing Fundamentals Test Levels Software Maintenance Software Configuration Management Software Engineering Management Software Maintenance Fundamentals Software Configuration Management Fundamentals Initiation and Scope Definition Key Issues in Software Maintenance Maintenance Process Test Techniques Test Related Measures Techniques for Maintenance Keys Issues in SCM Software Configuration Control Software Configuration Status Accounting Requirements Validation Software Design Notations Software Design Strategies and Methods Test Process Process Definition Software Project Enactment Process Assessment Software Engineering Tools and Methods Software Tools Software Requirements Tools Software Design Tools Software Construction Tools Software Testing Tools Review and Evaluation Process and Product Measurement Software Engineering Process Tools Related Disciplines Software Quality Fundamentals Computer Engineering Software Quality Management Processes Computer Science Practical Considerations Management Software Configuration Management Tools Software Engineering Management Tools Infrastructure Support Tools SW Engineering Measurement Mathematics Software Quality Tools Miscellaneous Tool Issues Project management Quality management Software Ergonomics Software Methods Heuristic Methods Practical Considerations Software Quality Software Maintenance Tools Software Configuration Auditing Software Release Management and Delivery Process Implementation and Change Software Project Planning Closure Requirements Specification Software Engineering Process Formal Methods Prototyping Methods Miscellaneous Method Issues 15 Systems engineering Agenda 1. SWEBOK (Guide to the Software Engineering Body of Knowledge) 2. Áreas de Conhecimento [4] [5] [6] 3. Estudo de Caso 4. Conclusões 16 SWEBOK Guide = 10 Knowledge Areas Mapped TO ISO/IEC 12207:1995 processes KA’s: Áreas de Conhecimento Requirements Design Construction Testing Maintenance Software Configuration Management Software Engineering Management Software Engineering Process Software Engineering Tools and Methods Software Quality Primary Processes Supporting Processes 17 KA: Requisitos de Software 18 KA: Requisitos de Software Preocupa-se com a Elicitação, Análise, Especificação e Requisitos; Validação de Sub-áreas de conhecimento: Requisitos Fundamentais (Definição dos Requisitos, Produto, Processo, Software, Sistema, Funcionais, Não Funcionais, Propriedades Emergentes… ) Processo de Requisitos (Modelos de processo, atores…) Elicitação de Requisitos (Fontes, técnicas para elicitação…) Análise de Requisitos (Detectar e resolver conflitos, negociação…) Especificação de Requisitos (Descreve a estrutura do documento) Validação de Requisitos (Verifica se o documento de requisitos define o sistema corretamente) Considerações Práticas (Gerenciamento de mudanças, rastreamento) “Projetos na engenharia de software são criticamente vulneráveis quando estas atividades são mal desempenhadas” 19 KA: Projeto de Software 20 KA: Projeto de Software (Design) Processo de definição da arquitetura, componentes, interfaces e outras características de um sistema ou componente; Tem como base a definição dos requisitos. Sub-áreas de conhecimento: •Conceitos Básicos (Contexto, Processo e Técnicas) •Conceitos chaves do Design (Persistência, Controle e tratamento de eventos…) •Estrutura e Arquitetura (Estilos, Padrões de desing, Frameworks…) •Análise e Avaliação da qualidade de design (Métricas…) •Notações de Design (Notações estruturais e comportamentais) •Estratégias e Métodos de design de software (Estratégias gerais, Métodos orientados a objetos, Métodos formais, Métodos orientados a funções…) 21 KA: Construção de Software 22 KA: Construção de Software Construção de software é um ato fundamental do planejamento de software: •Codificação •Validação •Verificação (testes unitários) Requer que o desenvolvedor seja lógico e preciso; Produz software executável; Uso de Ferramentas para aumento de produtividade e qualidade. Sub-áreas de conhecimento: •Fatores fundamentais (Minimizar Complexidade, Padrões de Construção…) •Gerenciamento da construção (Planejamento de Construção, Avaliando a construção…) •Considerações práticas (Codificação, Testar Construção, Reuso, Integração…) 23 KA: Teste de Software 24 KA: Teste de Software Teste é uma atividade realizada para avaliar a qualidade do produto, e para melhorá-lo, através da identificação de defeitos e problemas. Consiste na verificação dinâmica do comportamento de um programa com um conjunto finito de casos de testes, selecionados de um domínio geralmente infinito de execuções, para confirmar o comportamento especificado esperado. Sub-áreas de conhecimento: •Fatores fundamentais (Questões Chaves, Testando-relacionando terminologias…) •Níveis de Teste (A que se destina e quais os objetivos. Ex. Unidade, Integração) •Técnicas de Teste (Baseada no código, na especificação, no uso…) •Avaliação de Testes (Avaliação do Programa de Teste, Avaliação dos testes executados. Ex. Cobertura, Falhas antecipadas) •Processo de Teste (Considerações Práticas, Atividades de Teste) 25 KA: Manutenção de Software 26 KA: Manutenção de Software Manutenção de Software é definida com uma área totalmente necessária para fornecer eficaz suporte ao software. Uma vez em execução, anomalias são descobertas, ambientes de execução são modificados, e novos requisitos do usuário surgem. Sub-áreas de conhecimento: •Conceitos Básicos (Conceitos básicos e noções utilizando de definições e terminologias) •Processo de Manutenção (Técnicas chaves, Estimativa de custo da manutenção…) •Conceitos Chaves (Processos e Atividades de Manutenção) •Técnicas de Manutenção (Compreensão do Código, Reengenharia, Engenharia Reversa) 27 KA: Gerência de Configuração de Software 28 KA: Gerência de Configuração de Software Identifica a configuração de um sistema -Controle de mudanças -Manutenção da integridade da configuração durante o ciclo de vida do sistema Sub-áreas de Conhecimento: •Gerenciamento do Processo GCS (Planejamento, Limitações e direcionamento...) •Identificação da Configuração de Software (Identifica itens a serem controlados e estabelece as ferramentas e técnicas a serem usadas...) •Controle da Configuração de Software (Gerencia as mudanças durante o ciclo de vida do software...) •Contagem de Status de Configuração de Software (Informações sobre o status da configuração de software, Relatórios do status...) •Auditoria de Configuração de Software (Auditoria de configuração funcional do software, Auditoria In-Process...) •Gerenciamento de Release e Entrega do Software (Gerenciamento de Release e Entrega do Software...) 29 KA: Gerência da Engenharia de Software 30 KA: Gerência da Engenharia de Software Corresponde ao gerenciamento, medição e modelagem do desenvolvimento de software Sub-áreas de conhecimento: •Iniciação e Definição do Escopo (Determinação de requisitos, análise de viabilidade e revisão dos requisitos) •Planejamento do Projeto de Software (Estimativa de esforço, riscos...) •Software Project Enactment (Planos de implementação, processo de medição, monitoração, controle e relatórios) •Revisão e Avaliação (Revisão e avaliação de desempenho) •Fechamento (Atividades de fechamento) •Medição da Engenharia de Software (Medições efetivas se tornaram um do pilares para a maturidade organizacional. Os tópicos descritos nessa sub-área seguem o modelo padrão ISO/IEC 15939) 31 KA: Processo de Engenharia de Software 32 KA: Processo de Engenharia de Software Preocupa-se com: Definição, Mudança e Melhoria Implementação, Medida, Gerenciamento, Sub-áreas de conhecimento: •Implementação e Mudança do Processo (Descreve as linhas de direção para implementação e mudança do processo) •Definição do Processo (Vários tipos de definições de processo, Métodos de definições de processos) •Avaliação do Processo (Métodos e modelos usados para avaliação do processo) •Medição do Produto e do Processo (Apresenta a metodologia e paradigmas de medida para diagnóstico quantitativo do processo e do produto) 33 KA: Ferramentas e Métodos da Engenharia de Software 34 KA: Ferramentas e Métodos da Engenharia de Software Objetivam tornar o processo de Engenharia de Software mais rápido, sistemático e menos propício a falhas. Incluem: Ferramentas Automatizam as tarefas do processo de engenharia de software; Ambientes de desenvolvimento Ferramentas computadorizadas que auxiliam desenvolvimento de software; Automatizam tarefas repetitivas e bem definidas. no processo de Métodos de Desenvolvimento Impõe estrutura na atividade de desenvolvimento de software, com o objetivo de tornar a atividade sistemática e propícia ao sucesso: Heurísticos, Formais, Prototipagem e Híbrido. 35 KA: Qualidade de Software 36 KA: Qualidade de Software Área de conhecimento da Engenharia de Software que objetiva garantir a qualidade do software através da definição e normalização de processos de desenvolvimento; Presente em grande parte das áreas de conhecimento do guia; Trata dos aspectos estáticos, ou seja, daqueles que não exigem a execução do software para avaliá-lo. Sub-áreas de conhecimento: •Fundamentos da Qualidade de Software •Gerenciamento do Processo de Qualidade de Software •Considerações Práticas 37 KA: Qualidade de Software •Fundamentos de Qualidade de Software -Cultura e Ética de Engenharia de Software (qualidade de software como parte de sua cultura, código de ética); -Valores e Custos de Qualidade Criar software que tenha valor e satisfaça as expectativas dos clientes; O engenheiro de software deve ser capaz de apresentar alternativas de qualidade e seus custos; -Modelos CMMI; -Características de Qualidade Funcionalidade, Confiabilidade, Usabilidade, Eficiência; -Melhoria da Qualidade Processos, Pessoas e Tecnologias - Abordagens como as de Gestão da Qualidade Total (TQM) processo de Plan, Do, Check e Act (PDCA). 38 KA: Qualidade de Software •Gerência do Processo de Qualidade de Software - Garantia de Qualidade de Software Diretrizes e boas práticas - Verificação e Validação - Revisões e Auditorias Revisar para encontrar erros Auditar para garantir as conformidades •Considerações Práticas -Requisitos de Qualidade para Aplicações -Caracterização de Defeitos -Técnicas de Gerência de Qualidade de Software -Medição da Qualidade de Software 39 Disciplinas Relacionadas O Guia também reconhece oito disciplinas relacionadas: •Ciência da Computação •Engenharia da Computação •Engenharia de Sistemas •Ergonomia de Software •Gerenciamento •Gerenciamento da Qualidade •Gerenciamento de Projeto •Matemática 40 Agenda 1. SWEBOK (Guide to the Software Engineering Body of Knowledge) 2. Áreas de Conhecimento 3. Estudo de Caso [2] [3] 4. Conclusões 41 Using SWEBOK for Education Programs in Industry and Academia • Como o guia SWEBOK foi utilizado em uma grande organização de desenvolvimento de software - a Securities Industry Automation Corporation (SIAC); •A Forma com o SWEBOK ajudou a melhorar um Programa de Mestrado em Engenharia de Software - Southern Methodist University (SMU); •O resultado: “education program” 42 Using SWEBOK for Education Programs in Industry and Academia Organizations “go with what has worked in the past” “Todo mundo está muito ocupado com o produto e não podem gastar tempo com educação e treinamentos” A solução CMM para necessidades industriais O CMM - SEI tem ajudado muitas empresas Mas muitas vezes os esforços CMM falharam Análise de falhas aponta para várias causas, mas uma causa uma persistente é Falta de educação e formação 43 Using SWEBOK for Education Programs in Industry and Academia SIAC Education Program Assistência para cursos e diplomas universitários Formação "Técnica" MAS Engenharia & Processos "pouco valorizados” Poucos bons programas de engenharia de software locais Difícil achar tempo de realmente ter formação Programa SMU MS em Engenharia de Software -Iniciado em 1993, baseado em SEI masters level model curriculum SEI CMM Necessidades da indústria local -Programa abrangente com vários cursos de engenharia de software -A maioria dos professores com experiência industrial -Opções para educação à distância 44 Using SWEBOK for Education Programs in Industry and Academia Desafios da indústria Desafios para o Programa SMU -Projetos em crescente complexidade -A rápida evolução das exigências -Pressões por maior rapidez -Integração de novos processos e tecnologias -Escassez de Talentos: habilidades em engenharia de software particularmente -Manter-se atualizado com os rápidos progressos na área -Manter os laços com as necessidades industriais -O ensino à distância -Aprender com os estudantes Por que usar o SWEBOK?? A Necessidade de um Modelo A indústria precisa de um modelo de engenharia de software para relacionar o conhecimento com as necessidades organizacionais. Academia precisa de um modelo de engenharia de software para ajudar a evitar falhas no programa e ajudar a garantir cobertura e integridade estrutural para programas acadêmicos. 45 Using SWEBOK for Education Programs in Industry and Academia Como o SWEBOK foi usado??? Usando SWEBOK para alinhar as necessidades com o Corpo de Conhecimento SPECIALTIES ALIGNED WITH SWEBOK KNOWLEDGE AREAS SOFTWARE SOFTWARE SOFTWARE SOFTWARE REQUIREMENTS DESIGN CONSTRUCTION T EST ENGINEERING ENGINEERING ENGINEERING EMPLOYEE 1 EMPLOYEE 2 EMPLOYEE 3 EMPLOYEE 4 SOFTWARE ENGINEERING MANAGEMENT X X X X X X X - Oportunidade de planejar de forma mais rápida - Intuitiva aceitação da estrutura - Planejamento Individual e organizacional eram suportados - Educação e iniciativas SPI estavam alinhadas 46 Using SWEBOK for Education Programs in Industry and Academia Usando SWEBOK para examinar o programa SMU Engenharia de software O curso e os tópicos detalhados foram mapeados através da estrutura detalhada do SWEBOK. A estrutura era bastante natural e o mapeamento foi simples SOFTWARE REQUIREMENTS ENGINEERING COURSE #1 COURSE #2 COURSE #3 … COURSE #N SPECIALTIES ALIGNED WITH SWEBOK KNOWLEDGE AREAS SOFTWARE SOFTWARE … DESIGN CONSTRUCTION ENGINEERING X X … X X X … X … SOFTWARE ENGINEERING MANAGEMENT … X … … … X Lições aprendidas – SMU "Buracos” e sobreposições na cobertura dos cursos Por exemplo, um curso sobre ferramentas de software foi claramente necessário Necessidade de atualizações nos conteúdos de alguns cursos 47 Using SWEBOK for Education Programs in Industry and Academia Core Curricula Curso Oferecidos Plus Bom interesse daConcentration SIAC in a "Specialty" A gerência dedicou recursos Software100 trabalhadores Software Software Software completaram umSoftware “overview” Requirements Design Construction Test Engineering Engineering Engineering Engineering Engineering Management em 2 dias 25 no programa “bridging” Description 60 nosProgram programas “certificate” Core Curricula 3-graduate courses in the "foundation knowledge" Software Requirements Engineering Software Design Engineering Software Construction Engineering 2-graduate courses supporting the area of concentration -- per "specialty" Software Test Engineering Lições aprendidas – SIAC Mesmo muito ocupadas as organizações irão abraçar as oportunidades Flexíveis níveis Masters Degree quando elas percebem um alinhamento com asPrograms suas necessidades e ainoportunidade de de participação Certificate retorno sobre seu investimento Software Engineering O SWEBOK apoiou uma caracterização clara do que era necessário e onde era necessário formação, permitindo: Mais rapidez nas escolhas a serem feitas “A La Carte” 48 Mais rapidez nos retornos esperados Using SWEBOK for Education Programs in Industry and Academia Programa que resultou SMU Certificate Programs Masters Degree (complete the SMU MS - 10 courses total) Software Software Requirement Design s Certificate Certificate (2 Courses) (2 Courses) … (2 Courses) Software Management Certificate (2 Courses) Software Engineering Core (Certificate) (3 courses) Bridging Curriculum (depends on student) Perspectivas Necessidade de Atualização e Revisão do SWEBOK Toda a utilização do SWEBOK é embasada no pressuposto de que ele irá acompanhar os tempos. 49 Mestrado Profissional em ES – CESAR.edu Tendo como base as disciplinas do SWEBOK, o MPES é composto por 8 (oito) disciplinas, associadas de acordo com a Tabela 50 Agenda 1. SWEBOK (Guide to the Software Engineering Body of Knowledge) 2. Áreas de Conhecimento 3. Estudo de Caso 4. Conclusões 51 Conclusão •Embora o Guia 2004 do corpo de conhecimento da Engenharia de Software seja um marco para alcançar um amplo acordo sobre o conteúdo da disciplina de engenharia de software, não é o fim do processo, o guia deve evoluir. • Necessidade evolução e manutenção -Surgimento de novas práticas/tecnologias; •O Guia é inerentemente um documento conservador,)descreve as práticas de Engenharia de Software consensualmente reconhecidas como adequadas na maioria dos projetos. •O guia proposto não é definitivo, e nem a única fonte de referência; Referências de material em outras línguas foram omitidas. •Trabalhos em novas áreas de conhecimento estão atualmente em curso. Estes novos suplementos de Kas incluem: •Measurement, Security (Coming Soon), Web Engineering (Coming Soon)... Segundo www.swebok.org Last Updated: January 12, 2007 52 Referências [1] Borba, Clarissa Cesar. Uma Introdução ao Swebok. UFPE, Recife, PE, Brasil, 2007. Disponível em: www.cin.ufpe.br/~processos/TAES3/slides2007.2/introducao_swebok.ppt. Acesso em 05-Set-2008. [2] Cesar.edu. Mestrado profissional em Engenharia de software. Manual do candidato, 2007. [3] Frailey, Dennis J.; Mason. James. Using SWEBOK for Education Programs in Industry and Academia. Cseet, 2002. [4] Lopes, Edvaldo. Swebok - Software Engineering Body of Knowledge. UFPE, Recife, PE, Brasil, 2007. Disponível em: www.cin.ufpe.br/~rqf/swebok%20final.ppt . Acesso em 05-Set-2008. [5] Rocha, Milena. Uma Introdução ao Swebok. UFPE, Recife, PE, Brasil, 2004. Disponível em: www.cin.ufpe.br/~jbfan/qualidade/swebok/mrl-%20Swebok_07-0703.ppt . Acesso em 05-Set-2008 05-Set-2008. [6] SWEBOK. Guide to the Software Engineering Body of Knowledge. 2004 Version. A project of the IEEE Computer Society Professional Practices Committee. Disponível em: http://www.swebok.org. 53 Uma introdução ao SWEBOK ? Catarina Costa ([email protected]) 02/10/2008 54