introdução ao swebok guide to the software engineering body of knowledge andré luís de lucena...
TRANSCRIPT
Introdução ao SWEBOKIntrodução ao SWEBOKGuide to the Guide to the SSoftoftwware are EEngineering ngineering BBody of ody of KKnowledgenowledge
André Luís de Lucena TorresAndré Luís de Lucena [email protected]@gmail.com
Qualidade, Processos e Gestão de SoftwareQualidade, Processos e Gestão de SoftwareProfessores: Alexandre Vasconcelos e Hermano Perrelli Professores: Alexandre Vasconcelos e Hermano Perrelli
http://www.cin.ufpe.br/~processoshttp://www.cin.ufpe.br/~processos
AgendaAgendaIntroduçã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
Conclusões
IntroduçãoIntroduçãoSoftware 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 :
IEEEIEEEAssociaçã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?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)(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?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).
SWEBOKSWEBOKGuia 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
ObjetivosObjetivos• 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
Mapeamento entre os tópicos e materiais de referência;
• Fundamentar a criação de currículos, certificação e licenciamento de
profissionais;
SWEBOK 2010SWEBOK 2010• Adicionado material sobre Interfaces Humano-Computador no design de
software e Teste de Software;
• Remoção da seção Ferramentas e métodos de Engenharia de Software
(distribuídos para outras áreas de conhecimento);
• Redistribuição de materias entre as áreas de conhecimento;
• Entre outras modificações.
Estrutura do SWEBOKEstrutura 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 SWEBOKEstrutura do SWEBOK
Estrutura do SWEBOKEstrutura do SWEBOK
KA: KA: Requisitos de SoftwareRequisitos 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: KA: Requisitos de SoftwareRequisitos de Software
Requisitos: Requisitos: O que “pode” acontecerO que “pode” acontecer
KA: KA: Gerência de Eng de SoftwareGerência de Eng de SoftwareCorresponde 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: KA: Gerência de Eng de SoftwareGerência de Eng de Software
KA: KA: Gerência de Eng de SoftwareGerê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: KA: Gerência de Eng de SoftwareGerê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: KA: Gerência de Eng de SoftwareGerência de Eng de Software
• Fechamentoo Determinar fechamento e suas atividades
• Medição da Engenharia de Softwareo Seguem o modelo padrão ISO/IEC 15939 (Norma Internacional
de medição de processo de software).
KA: KA: Projeto de SoftwareProjeto de SoftwareProcesso 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
Estrutura e Arquitetura Estratégias e Métodos de design de software
KA: KA: Projeto de SoftwareProjeto de Software
• Conceitos Básicoso Formam uma base fundamental para o entendimento da
função e do escopo do design de software
• Conceitos chave do Designo Concorrênciao Controle e tratamento de eventoso Distribuiçãoo Tratamento de erros e de exceçõeso Sistemas interativos o Persistência
KA: KA: Projeto de SoftwareProjeto de Software• Estrutura e Arquitetura
o Estruturas
o Estilos
o Padrões de desing
o Frameworks
• Análise e Avaliação da Qualidade do Designo Trata da qualidade do design do software
o Características de qualidade
o Análise de qualidade
o Avaliação de ferramentas
o Métricas
KA: KA: Projeto de SoftwareProjeto de Software• Notações de Design
o Notações estruturais e comportamentais
• Estratégias e Métodos de Design de Softwareo Estratégias geraiso Métodos orientados a funçõeso Métodos orientados a objetoso Métodos formaiso Métodos transformacionais
KA: KA: Ferramentas e métodos da Ferramentas e métodos da EngenhariaEngenharia
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.
Possuem três tópicos:
o Heurísticos: para a abordagem informalo Matemáticos: para a abordagem formalo Protótipos: para a abordagem do software baseado em telas
KA: KA: Construção de softwareConstruçã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: KA: Construção de softwareConstruçã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
softwareMinimizar ComplexidadeAntecipar MudançasConstructing com VerificaçãoPadrões de Construção
Modelos de ConstruçãoPlanejamento de ConstruçãoAvaliação a Construção
Projeto de ConstruçãoLinguagem PrópriaCodificaçãoTestar ConstruçãoReusoQualidadeIntegração
KA: KA: Processo de Eng. de softwareProcesso de Eng. de softwareConsiste 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çãoo Implementaçãoo Medidao Gerenciamentoo Mudançao Melhoramento
KA: KA: Processo de Eng. de softwareProcesso de Eng. de software
KA: KA: Processo de Eng. de softwareProcesso de Eng. de softwareSub-á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: KA: Processo de software - ExemplosProcesso 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).
• PRAXIS – Processo para Aplicativos extensíveis Interativos
o Para projetos realizados individualmente ou por pequenas
equipes, com duração de seis meses a um ano.
KA: KA: Teste de SoftwareTeste 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: KA: Teste de SoftwareTeste de Software
Fatores Fundamentais
Níveis de Teste
Técnicas de Teste
Avaliação de Teste
Processo de teste
Questões chaves
UnidadesIntegraçãoSistema
AceitaçãoInstalação
AlphaBeta
Regressão
Baseada no código/
especificação/No uso
CoberturaFalhas
antecipadas
Pontuação de acordo com
Mutação
Considerações práticas
Atividades de teste
KA: KA: Teste de SoftwareTeste de Software
KA: KA: Teste de SoftwareTeste de Software
Grandes Limitações do Teste de Software:
1 – Você não pode testar o software em todos os sistemas nos
quais ele será carregado. Solução: testar em (configurações) de
sistemas padronizadas.
2 – Você não pode dialogar com a máquina até a exaustão, porque
a linguagem é finita, mas os diálogos são infinitos. Solução: técnicas
de cobertura de testes.
KA: KA: Qualidade de softwareQualidade 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: KA: Qualidade de softwareQualidade de softwareFundamentos 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: KA: Qualidade de softwareQualidade de software• Gerência do Processo de Qualidade de Softwareo 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
o Medição da Qualidade de Software
KA: KA: Manutenção de softwareManutenção de softwareUma 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: KA: Manutenção de softwareManutenção de software
• Fundamentos da Manutençãoo Definições e terminologia
o O papel da manutenção
o Custos da manutenção
o Categorias de manutenção
• Questões chaveo Problemas técnicos
o Problemas de gerenciamento
o Estimação de custo
o Métricas
KA: KA: Manutenção de softwareManutenção de software
• Processo de Manutenção
KA: KA: Manutenção de softwareManutenção de software
• Técnicas de Manutençãoo Compreensão do programa
o Re-engenharia
o Engenharia reversa
KA: KA: Gerência de ConfiguraçãoGerência de Configuração de softwarede 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: KA: Gerência de ConfiguraçãoGerência de Configuração de softwarede software
• Processo de Gerenciamento de Configuraçõeso 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
Gerencia as mudanças durante o ciclo de vida do software
KA: KA: Gerência de ConfiguraçãoGerência de Configuração de softwarede 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 Softwareo 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õeso Gerência de construção de software
o Gerência de entrega de software
KA: KA: Disciplinas relacionadasDisciplinas 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
ConclusãoConclusão• 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;
• Os padrões do guia não possuem os conhecimentos suficientes
para um engenheiro de software como: Linguagem de programação
específica, Banco de Dados Relacional, Redes, Gerência de
projetos, Engenharia de sistemas, Ciência da Computação.
ReferênciasReferências[1] Borba, Clarissa Cesar. Uma Introdução ao Swebok. UFPE, Recife, PE, Brasil, 2007.Disponível em: www.cin.ufpe.br/~processos/TAES3/slides207.2/introducao_swebok.ppt. Acesso em 27-Ago-2009.
[2] Embiruçu, David L.; Neto, José B.F.A; Barbosa, Leandro M; Viana, Pablo A. B; Sette, Sergio S. The Guide to the Software Engineering Body of Knoledge - SWEBOK. UFPE, Recife, PE, Brasil,2008. Disponível em: http://www.cin.ufpe.br/~amlv/monografias_if720.zip. Acesso em 31-Ago-2009
[3] 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 27-Ago-2009.
[4] 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.