PPGCC – Programa de Pós-Graduação em Ciência da Computação Uma Introdução ao SWEBOK Prof. Dr. Sandro Ronaldo Bezerra Oliveira [email protected] www.ufpa.br/srbo Qualidade de Software – 2008.2 Faculdade de Computação Instituto de Ciências e Exatas e Naturais Universidade Federal de Pará Conteúdo SWEBOK (significado, contexto, motivação, evolução do guia, fases, objetivos, público alvo, princípios) Áreas de Conhecimento Limitações Conclusões SWEBOK Guide to the Software Engineering Body of Knowledge É uma iniciativa da IEEE Computer Society e tem o propósito de criar um consenso sobre as áreas de conhecimento da Engenharia de Software e seu escopo. Engenharia de Software IEEE: “(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).” Contexto Muitos profissionais de Engenharia de Software; Software como uma realidade na sociedade; Engenharia de Software não reconhecida como uma profissão ou uma disciplina da engenharia; Motivação É 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 Software Engineering Institute Capability Maturity Model for Software (SW CMM) e o Capability Maturity Model Integration (CMMI) são usados para garantir a capacidade organizacional da Engenharia de Software. O ISO 9000 tem sido aplicado na Engenharia de Software pelo novo ISO/IEC 90003; Motivação Continuando... Association for Computing Machinery (ACM) e a Computer Society of the Institute of Electrical and Electronics Engineers (IEEE) têm desenvolvido e adotado, conjuntamente, um código de éticas e práticas para os profissionais da área; Tanto a IEEE Computer Society quanto o Institute for Certification of Computing Professionals (ICCP) têm oferecido certificação para desenvolvedores e engenheiros de software. Evolução do Guia Começou como uma colaboração entre IEEE CS e ACM; Foi iniciado em 1998 - SWECC (Software Engineering Coordinating Committe); Foi gerenciado por: Software Engineering Management Research Laboratory at the Université du Québec Montreal (UQAM) e École de technologie supérieure, Montreal, Québec : Evolução do Guia Participação de diversos stakeholders: indústria, agências de pesquisa, profissionais, autores; Fases – Evolução do Guia Straw Man Stone Man Protótipo mostrando como o projeto seria organizado Mais contribuições Concluído em 2001 Lançado uma versão Trial Iron Man 2 sub-fases Conclusão (2004) Fases – Evolução do Guia Straw Man Phase Stone Man Phase Experimentation and Trial Usage Iron Man Phase (Sub-phase 1) Revision Iron Man (SubPhase phase 2) Trial Version 1998 1999 2000 2001 2002 2004 Version 2003 Algumas Estatísticas (Versão 2004) Revisores registrados: 573 Número de países: 55 Número de revisores que submeteram comentários: 124 Número de países representados: 21 Número de comentários: 1020 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; 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. Fonte: Wikipedia 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; Princípios Transparência Consenso O processo é totalmente documentado e publicado Indústria Sociedades Profissionais Corporações de criação de padrões Ambientes Acadêmicos Totalmente livre na WEB Áreas de Conhecimento Requisitos de Software Projeto de Software Construção de Software Teste de Software Manutenção de Software Gerência de Configuração de Software Gerência da Engenharia de Software Processo de Engenharia de Software Ferramentas e Métodos da Engenharia de Software Qualidade de Software 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 Key Issues in Software Design Managing Construction Sofware Testing Fundamentals Test Levels Software Maintenance Software Maintenance Fundamentals Key Issues in Software Maintenance Maintenance Process Requirements Elicitation Software Structure and Architecture Requirements Analysis Software Design Quality Analysis and Evaluation Test Related Measures Requirements Specification Software Design Notations Test Process Requirements Validation Software Design Strategies and Methods Practical Considerations Practical Considerations Software Testing Test Techniques Techniques for Maintenance Guide to the Software Engineering Body of Knowledge (2004 Version) Software Configuration Management Software Engineering Management Software Configuration Management Fundamentals Initiation and Scope Definition Keys Issues in SCM Software Configuration Control Software Configuration Status Accounting Process Implementation and Change Software Project Planning 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 Software Quality Related Disciplines Software Quality Fundamentals Computer Engineering Software Quality Management Processes Computer Science Practical Considerations Management Software Maintenance Tools Review and Evaluation Process and Product Measurement Software Engineering Process Tools Closure Software Engineering Management Tools Infrastructure Support Tools SW Engineering Measurement Mathematics Software Quality Tools Software Configuration Management Tools Software Configuration Auditing Software Release Management and Delivery Software Engineering Process Miscellaneous Tool Issues Project management Quality management Software Ergonomics Software Methods Heuristic Methods Formal Methods Prototyping Methods Miscellaneous Method Issues Systems engineering KA: Software Requirements “Requisitos são definidos como uma especificação do que deve ser implementado. São descrições de como o sistema deve se comportar, de informações do domínio da aplicação ou restrições nas operações do sistema.” Fonte: Kotonya e Sommerville KA: Software Requirements KA: 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. KA: Software Design KA: Software Construction 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. KA: Software Construction KA: Software Construction Estilos/Métodos para Construção de Software: Lingüístico Uso de linguagem natural Formal Visual Visual C++ Visual Basic KA: Software Testing 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. KA: Software Testing KA: Software Maintenance Uma vez em execução, anomalias são descobertas, ambientes de execução são modificados, e novos requisitos do usuário surgem. KA: Software Maintenance KA: Software Configuration Management (SCM) 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. KA: Software Configuration Management KA: Software Engineering Management Corresponde ao gerenciamento, medição e modelagem do desenvolvimento de software. KA: Software Engineering Management KA: Software Engineering Process Preocupa-se com: Definição; Implementação; Medida; Gerenciamento; Mudança; Melhoramento. KA: Software Engineering Process KA: Software Engineering Tools and Methods Inclui tanto o ambiente de desenvolvimento de software como as áreas de conhecimento de métodos de desenvolvimento. KA: Software Engineering Tools and Methods KA: Software Engineering Tools and Methods Ambiente de desenvolvimento de software são ferramentas computacionais com o intuito de auxiliar o processo de desenvolvimento de software. 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. KA: Software Quality Presente em grande parte das áreas de conhecimento do guia KA: Software Quality Disciplinas Relacionadas Computer engineering Computer science Management Mathematics Project management Quality management Software ergonomics Systems engineering Limitações O guia inclui o conhecimento que é necessário para a Engenharia de Software, mas não suficiente para um engenheiro de software; O guia não cobre assuntos importantes: Linguagens de programação específicas; Banco de Dados específicos; Tecnologias de Redes. Limitações Novas tecnologias e práticas surgem com muita freqüência. O guia precisará evoluir junto; O guia proposto não é definitivo, e nem a única fonte de referências; Referências de material em outras línguas foram omitidas. SWEBOK Guide = 10 Knowledge Areas Mapped TO ISO/IEC 12207:1995 processes Requirement s Design Construction Testin g Maintenance Software Configuration Management Software Engineering Management Software Engineering Process Software Engineering Tools and Methods Software Quality Primary Processes Supporting Processes Conclusões Aprovado pelo IEEE Computer Society Board of Governors; Adotado como ISO Technical Report 19759; SWEBOK Guide 2008? A maioria dos cursos de graduação e pósgraduação tem adotado o SWEBOK como padrão.