Engenharia de Software
Introdução ao SWEBOK
Marcelo Marinho
Agenda
Introdução ao SWEBOK
• Objetivos
• Áreas de Conhecimento
o Requisitos de Software
o Gerência da Engenharia de Software o Projeto de Software
o Ferramentas e Métodos da Engenharia o Construção de Software
o Processo de Engenharia de Software o Teste de Software
o Qualidade de Software o Manutenção de Software
o Gerência de Configuração de Software o Disciplinas relacionadas
Introdução
Software Engineering Body of Knowledge – Corpo de Conhecimento
da Engenharia de Software;
Estudo conduzido pela IEEE (Institute of Electrical and Electronics Engineers);
Patrocinado por empresas como :
IEEE
Associação profissional mundial sem fins lucrativos para suporte ao avanço da tecnologia.
Missão:
O IEEE promove o processo de engenharia, criando,
desenvolvendo, integrando, compartilhando e aplicando
conhecimento sobre tecnologia eletroeletrônica, tecnologia da informação e ciências para o benefício da humanidade e da profissão.
Como Surgiu o Guia?
Surgiu da necessidade da comissão de especialistas da área de Engenharia de Software, visando uma definição das fronteiras que a
delimitam. (SWEBOK, 2004)
Importante para o reconhecimento da profissão de Engenheiro de Software;
• Delimita o conhecimento inerente à competência do profissional;
• Validado pela comunidade / mantido em campo científico e racional;
Quando surgiu o guia?
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 pela SWECC (Software Engineering Coordinating Committee).
SWEBOK
Guia de uso e aplicação das melhores práticas de Engenharia de Software, divido em 11 áreas de Conhecimento - Knowledge Area
(KA´s). Sendo elas:
Requisitos de Software Gerência da Eng. de Software
Projeto de Software Ferramentas e Métodos da Engenharia Construção de Software Processo de Engenharia de Software
Teste de Software Qualidade de Software
Manutenção de Software Gerência de Configuração de Software Disciplinas relacionadas
Objetivos
• Estabelecer um conjunto apropriado de critérios e normas para a prática profissional da Engenharia de Software.
• Determinar as fronteiras entre Engenharia de Software e outras disciplinas relacionadas;
• Prover “acesso tópico” ao Corpo de Conhecimento
Estrutura do SWEBOK
• Introdução sobre as áreas de conhecimento;
o Visão Geral, escopo e seus relacionamentos com outras áreas;
• Hierarquia de sub-áreas, tópicos e sub-tópicos delimitam o
conteúdo da área de conhecimento;
o Breve descrição sobre cada tópico/sub-tópico;
Estrutura do SWEBOK
KA:
Requisitos de Software
Preocupa-se com a Elicitação, Análise, Especificação e Validação de Requisitos;
São problemas do mundo real que devem ser explicitados para serem solucionados (O que será feito?). Está dividida em sete sub-áreas.
Fundamentos dos Requisitos Especificação de Requisitos Processo de Requisitos Validação de Requisitos Declaração de Requisitos Considerações Práticas Análise de Requisitos
KA:
Requisitos de Software
KA:
Gerência de Eng de Software
Corresponde ao gerenciamento, medição e modelagem do
desenvolvimento de software
Sub-áreas de conhecimento:
Iniciação e Definição do Escopo Planej. do Projeto de Software Software Project Enactment Revisão e Avaliação
Fechamento Medição da Eng. de Software
KA:
Gerência de Eng de Software
• Iniciação e Definição do Escopo
o Determinação de requisitos, análise de viabilidade e revisão dos requisitos
• Planejamento do Projeto de Software
o Processo, projetos, estimativa de esforço, cronograma, alocação de recursos, riscos, qualidade
KA:
Gerência de Eng de Software
• Software Project Enactment
o Planos de implementação, processo de medição, monitoração, controle e relatórios
• Revisão e Avaliação
o Determinação dos requisitos de satisfação, revisão e avaliação de desempenho
KA:
Gerência de Eng de Software
• Fechamento
o Determinar fechamento e suas atividades • Medição da Engenharia de Software
o Seguem o modelo padrão ISO/IEC 15939 (Norma Internacional de medição de processo de software).
KA:
Projeto de Software
Processo de definição da arquitetura, componentes e demais características do sistema;
Tem como base a definição dos requisitos; Sub-áreas de conhecimento:
Conceitos Básicos Análise e Avaliação da qualidade de design Conceitos chaves do Design Notações de Design
KA:
Projeto de Software
• Conceitos Básicos
o Formam uma base fundamental para o entendimento da função e do escopo do design de software
• Conceitos chave do Design o Concorrência
o Controle e tratamento de eventos o Distribuição
o Tratamento de erros e de exceções o Sistemas interativos
o Persistência
KA:
Projeto de Software
• Estrutura e Arquitetura o Estruturas o Estilos o Padrões de desing o Frameworks• Análise e Avaliação da Qualidade do Design o Trata da qualidade do design do software
o Características de qualidade o Análise de qualidade
KA:
Projeto de Software
• Notações de Design
o Notações estruturais e comportamentais
• Estratégias e Métodos de Design de Software o Estratégias gerais
o Métodos orientados a funções o Métodos orientados a objetos o Métodos formais
o Métodos transformacionais
KA:
Ferramentas e métodos da Engenharia
Ferramentas
o Automatizam as tarefas do processo de engenharia de software;
o Há um tópico para cada uma das outras dez KA´s;
Métodos:
Impõe estrutura na atividade de desenvolvimento de software, com o objetivo de tornar a atividade sistemática e propícia ao sucesso.
KA:
Construção de software
Refere-se a criação do conjunto de programas (componentes) que compõe o software e a verificação de conformidade com o desenho (projeto), da funcionalidade individual (teste unitário), da funcionalidade integrada e a depuração de erros (debug).
o Codificação o Validação
o Verificação (testes unitários)
KA:
Construção de software
Divido em três sub-áreas: Fundamentos da Construção de Software Gerenciamento da Construção de software Considerações práticas da construção de software Minimizar Complexidade Antecipar MudançasConstructing com Verificação Padrões de Construção Modelos de Construção Planejamento de Construção Avaliação a Construção Projeto de Construção Linguagem Própria Codificação Testar Construção Reuso Qualidade Integração
KA:
Processo de Eng. de software
Consiste na definição, implementação, avaliação, medição, gerenciamento, mudanças e evolução do próprio processo de software; Preocupa-se com: o Definição o Implementação o Medida o Gerenciamento o Mudança o Melhoramento
KA:
Processo de Eng. de software
Sub-áreas de conhecimento:
o Implementação e Mudança do Processo (Descreve as linhas de direção para implementação e mudança do processo) o Definição do Processo (Vários tipos de definições de processo, Métodos de definições de processos)
o Avaliação do Processo (Métodos e modelos usados para avaliação do processo)
o Medição do Produto e do Processo (Apresenta a metodologia e paradigmas de medida para diagnóstico quantitativo do processo e do produto)
KA:
Processo de software - Exemplos
• RUP – Rational Unifided Process (Rational/IBM) • XP – eXtreme Programming
o Projetos cujos requisitos mudam com muita freqüência, orientados a objetos, desenvolvido por equipes de até 12 desenvolvedores, com processo incremental (ou interativo).
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 do comportamento de um programa ou grupo de programas, a partir de um conjunto de casos selecionados no domínio do negócio, comparando-os ao comportamento esperado, definido na especificação de requisitos.
KA:
Teste de Software
Fatores Fundamentais Níveis de Teste Técnicas de Teste Avaliação de Teste Processo de teste Questões chaves Unidades Integração Sistema Aceitação Instalação Alpha Beta Regressão Baseada no código/ especificação/ No uso Cobertura Falhas antecipadas Pontuação de acordo com Mutação Considerações práticas Atividades de testeKA:
Teste de Software
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;
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
KA:
Qualidade de software
Fundamentos de Qualidade de Software Suas sub-áreas de conhencimento são:
Cultura e Ética de Engenharia de Software: Tem a qualidade de software
como pilar para sua cultura e seu código de ética;
Valores e Custos de Qualidade: Criação de software com custo/beneficio
aceitáveis e satisfaça as expectativas dos clientes; Modelos e características de qualidade:
Exemplo: CMMI
Funcionalidade, Confiabilidade, Usabilidade, Eficiência; Melhoria da Qualidade:
Utilização de abordagens como as de Gestão da Qualidade Total (TQM) e PDCA.
KA:
Qualidade de software
• Gerência do Processo de Qualidade de Software
o Garantia de Qualidade de Software: Diretrizes e boas práticas; o Verificação e Validação
o Revisões e Auditorias
Revisar para encontrar erros
Auditar para garantir as conformidades • Considerações Práticas
o Requisitos de Qualidade para Aplicações o Caracterização de Defeitos
o Técnicas de Gerência de Qualidade de Software
KA:
Manutenção de software
Uma vez em operação, anomalias são descobertas, ambientes operacionais mudam e novos requisitos surgem. A fase de manutenção inicia-se a partir da entrega, mas as atividades de manutenção começam antes mesmo da entrega.
Está dividida em quatro sub-áreas:
Fundamentos da Manutenção Questões Chave
Processo de Manutenção Técnicas de Manutenção
KA:
Manutenção de software
• Fundamentos da Manutenção o Definições e terminologia o O papel da manutenção o Custos da manutenção o Categorias de manutenção • Questões chave o Problemas técnicos o Problemas de gerenciamento o Estimação de custo o MétricasKA:
Gerência de Configuração
de software
Consiste em identificar a configuração do software em diferentes momentos com o propósito de controlar sistematicamente as mudanças ocorridas e garantir a integridade e a rastreabilidade das configurações ao longo do ciclo de vida do software.
Está dividida em seis sub-áreas: Processo de Gerenciamento de
Configurações
Identificação da Configuração Controle da Configuração Registro do Estado da Configuração Auditoria da Configuração Entrega e Gerenciamento de Versões
KA:
Gerência de Configuração
de software
• Processo de Gerenciamento de Configurações o Planejamento
o Limitações
o Direcionamento
• Identificação da Configuração
Identifica itens a serem controlados e estabelece as ferramentas e técnicas a serem usadas;
• Controle da Configuração
KA:
Gerência de Configuração
de software
• Registro do estado da Configuração de Software
Informações sobre o status da configuração de software, Relatórios do status;
• Auditoria de Configuração de Software
o Auditoria de configuração funcional do software o Auditoria de configuração física do software
o Auditoria In-process
• Entrega e Gerenciamento de versões o Gerência de construção de software o Gerência de entrega de software
KA:
Disciplinas relacionadas
• Engenharia da Computação • Ciência da Computação • Gestão de Negócios • Matemática • Gerenciamento de Projetos • Gestão da Qualidade• Ergonomia (acessibilidade e usabilidade) • Engenharia de Sistemas
Referências
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.