SWEBOK José Benito David Embiruçu Leandro barbosa Pablo Alessandro Sergio Sette Roteiro Introdução KA’s Software Requiremets Software design Software construction Software testing Software maintenance Software configuration management Software engineering management Software engineering process Software engineering tools and methods Software quality Conclusão Introdução Contexto Cada vez mais profissionais na área da engenharia de software Software agregando valor a sociedade Recentemente a engeharia de software atingiu o status de uma disciplina da engenharia e uma profissão reconhecida Introdução Engenharia de Software Engenharia de Software é a uma área de interesse (disciplina) preocupada com a criação e manutenção de aplicações de software pela aplicação de tecnologias e práticas da ciência da computação, gerência de projetos, engenharia, domínios de aplicação e outros campos. Introdução SWEBOK Guide to the Software Engineering Body of Knowledge Parceria entre a IEEE Computer Society e Association for Computing Machinery Promover a profissionalização da engenharia de software Criar um consenso sobre as áreas de conhecimento da engenharia de software e seu escopo Introdução SWEBOK – Objetivos Oferecer uma visão consistente da engenharia de software no âmbito mundial Deixar claros os limites de engenharia de software com respeito a outras disciplinas como ciência da computação, gerência de projetos, matemática e outras Caracterizar o conteúdo da disciplina de Engenharia de Software Prover um acesso tópico ao corpo do conhecimento da engenharia de software Prover uma base para desenvolvimento curricular e material de licença e certificação. Introdução Audiência Pretendida Organizações públicas e privadas Sociedades profissionais Corporações de criação de padrões Estudantes de Engenharia de Software Educadores e Instrutores Introdução KA´s Software Requiremets Software design Software construction Software testing Software maintenance Software configuration management Software engineering management Software engineering process Software engineering tools and methods Software quality Software Requiremets Responsável pela elicitação, análise, especificação e validação de requisitos Esta área é dividida em sete sub-áreas: Fundamentos de requisitos de software Processo de requisitos Elicitação de requisitos Análise de requisitos Especificação dos requisitos Validação dos requisitos Considerações práticas. Software Requiremets Software Requiremets Fundamentos de requisitos de software Definições Básicas Requisitos de Software Requisitos de Produto e Software Requisitos Funcionais e não Funcionais Propriedades Emergentes Requesitos quantificáveis Requisitos de Sistema e de Software Software Requiremets Requirements Process Apresenta os processos de requisitos de software Orientando as outras cinco subáreas Mostra como o planejamento de requisitos se encaixa com o processo completo de planejamento de software Se preocupa com modelos de processo, atores, suporte, gerenciamento de requisitos, melhoria e qualidade do processo. Software Requiremets Requirements Elicitation Se preocupa com a origem dos requisitos e como os engenheiros de software podem coletar eles Primeiro estágio para o entendimento de como o problema poderá ser resolvido. Identificar Fontes e definir as técnicas para extrair requisitos dos stakeholders Software Requiremets Requirements Analysis Detectar e resolver conflitos entre requisitos Descobrir os limites do sistema e como ele deve interagir com o ambiente de operação Aprimorar requisitos do sistema para requisitos de software. Classificação dos requisitos Software Requiremets Requirements Specification Produção do documento de definição do sistema Espeficicação dos requisitos do sistema e derivação dos requisitos de software a partir dos do sistema Especifição dos compomentes de software Software Requiremets Requirements Validation Garantir o entendimento dos requisitos pelos engenheiros de software Verificar se o documento de requisitos está conforme com os padrões da organização, estão consistentes e completos: Revisões Prototipação Testes de aceitação Software Requiremets Pratical Considerations Gerenciamento de mudança e manutenção dos requisitos Atributos dos requisitos Acompanhamento dos Requisitos Avaliar o tamanho das mudanças em requisitos,e estimar o custo do desenvolvimento e manutenção da tarefa. Software Design O projeto de software é a definição da arquitetura, dos componentes, das interfaces de um sistema ou dos seus componentes. Esta área é dividida em seis sub-áreas: Fundamentos de design de software Questões chave no design de software Estrutura e arquitetura de software Análise de qualidade e avaliação em design de software Notações no design de software Estratégias e métodos de design de software Software Design Software Design Fundamentos do design de software Consiste em conceitos notações e terminologias que norteia e fazem compreender os papéis e o escopo do design de software. Contexto do design de software. Permissão de técnicas: Modularização Abstração Coesão... Software Design Questões chave no design de software Um certo número de questões fundamentais deve ser tratado no projeto de software. Algumas dizem respeito à qualidade, por exemplo, o desempenho. Manipulação e controle de eventos. Manipulação de exceções e tolerância a erros. Interação e apresentação. Software Design Estrutura e arquitetura de software Uma descrição dos subsistemas e componentes de um sistema de software e as relações entre eles. Estruturação e pontos de vista da Arquitetura. Padrões de design. Famílias de programas e frameworks. Permitem o reuso de software. Software Design Análise de Qualidade e Avaliação do Projeto de Software Inclui uma série de tópicos sobre qualidade e avaliação que estão especificamente relacionadas com a concepção do software. Qualidade de Atributos Análise de Qualidade e Técnicas de avaliação Diversos atributos são geralmente considerados importantes para a obtenção de um desenho de software de boa qualidade. Conjunto de ferramentas e técnicas que ajudam a assegurar a qualidade no projeto de software. Medições Utilizadas para avaliar ou para estimar quantitativamente vários aspectos de um projeto de software. Software Design Notações no design de software Notações e linguagens usadas para descrever a organização estrutural do projeto ou representar o comportamento do software. Software Design Estratégias e métodos de design de software Conjunto de estratégias gerais que ajudam a guiar o processo de design. Design orientado à função (estruturado) Design orientado a objetos Design baseado em componentes Outros métodos Software construction Embora a qualidade de software seja importante em todas as áreas de conhecimento (KA’s), o código é a ultima entrega de um projeto de software e, portanto a qualidade de software está intimamente ligada à construção de software. Esta área é dividida em três sub-áreas: Fundamentos da construção de software Gerenciando a construção de software Considerações Práticas Software construction Software construction Fundamentos da Construção de software Minimização da Complexidade que este é alcançado através da utilização de normas. Ela também é apoiada pela construção focada em técnicas de qualidade. Antecipação as mudanças Construção para verificação Padrões em construção Software construction Planejamento da Construção É definida a ordem na qual componentes são criados e integrados, o processo de gestão de qualidade de software, a alocação de tarefas atribuídas para engenheiros de software específicos, e as outras tarefas, de acordo com o método escolhido. Software construction Considerações Práticas Na Qualidade na Construção exitem inúmeras técnicas para garantir a qualidade do código e como ele é construído. As principais técnicas utilizadas para construção incluem: Teste de unidade e testes de integração Teste do primeiro desenvolvimento Uso de asserções Depuração Analises técnicas Analise estática Software testing Teste é uma atividade realizada para avaliar a qualidade de produto e, para melhorá-la, através da identificação de defeitos e problemas. Esta área é dividida em cinco sub-áreas: Fundamentos de teste de software Níveis de teste Técnicas de teste Medidas relacionadas ao teste Processo de teste Software testing Software testing Fundamentos do teste de software Usado para estudar as terminologias usadas nessa (KA). Termos na engenharia de software descrevem mal funcionamento, defeito, falha, falta, erro e muitas outras. Relacionamento entre teste e outras atividades. Software testing Níveis de teste O alvo dos testes. Teste de software são normalmente realizados em diferentes níveis ao longo dos processos de desenvolvimento e manutenção. Objetivos do teste Testes são realizados tendo em vista um objetivo específico e têm diversos graus de precisão. Software testing Técnicas de teste Um dos objetivos dos testes é o de revelar o máximo possível do potencial de fracasso e muitas técnicas têm sido desenvolvidas para fazer isso: tentativas de "quebrar" o programa. Testes ‘caixa preta’ e ‘caixa branca’. Baseados na intuição e experiência do engenheiro de software. Técnicas baseadas em especificação: Tabelas de decisão Baseada em máquina de estado finitos Testes aleatórios Software testing Medidas relacionadas ao teste A medição é geralmente considerada fundamental para a qualidade análise. A medição pode também ser utilizado para otimizar o planejamento e execução dos testes. Teste de gestão pode usar várias medidas para monitorar o progresso. Software testing Processo de Teste Considerações práticas Atitudes e programação em conjunto como um componente muito importante para o sucesso nos testes, visto que, atitudes colaborativas para testes e atividades de garantia de qualidade se mostram eficientes. Atividades de teste Planejamento Geração de casos de teste Desenvolvimento do ambiente de testes Execução ... Conclusão Cada vez mais importante para a área da engenharia de software Definição da profissão Estabelecimento da engenharia de software como uma disciplina de engenharia Fundamentam profissional deTI Com a evolução da engenharia de software o guia precisará evoluir por isso o mesmo não é definitivo e não deve ser a única fonte de referências. Referências SWEBOK - Guide to the Software Engineering Book of Knowledge – Thayssa Rocha Uma Introdução ao SWEBOK – Milena Rocha Uma Introdução ao SWEBOK – Jairo Oliveira Guide to the Software Engineering Book of Knowledge – 2004 Version www.swebok.org