Uma introdução ao SWEBOK Universidade Federal de Pernambuco Centro de Informática Clarissa César...

Preview:

Citation preview

Uma introdução ao SWEBOK

Universidade Federal de Pernambuco

Centro de Informática

Clarissa César Borbaccb@cin.ufpe.br

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

– Protótipo mostrando como o projeto seria organizado

• Stone Man– 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

1998 1999 2000 2001 2002 2003

Straw ManPhase

Stone Man Phase

Iron Man Phase(Sub-phase 1)

Iron Man Phase(Sub-phase 2)

Trial Version

Revision

Experimentation and Trial Usage

2004 Version

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

– O processo é totalmente documentado e publicado

• Consenso– 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 Knowledge2004 Version

SoftwareConstruction

SoftwareMaintenanceSoftware Testing

Basic Conceptsof Construction

ManagingConstruction

SoftwareMaintenance

Fundamentals

Key Issues inSoftware

Maintenance

Techniques forMaintenance

SofwareTesting

Fundamentals

Test Levels

Test Techniques

Test RelatedMeasures

TestProcess

Software Design

Software DesignFundamentals

Key Issues inSoftware Design

Software Structureand Architecture

Software DesignQuality Analysisand Evaluation

Software DesignNotations

SoftwareRequirements

SoftwareRequirementsFundamentals

RequirementsProcess

RequirementsElicitation

RequirementsSpecification

RequirementsValidation

RequirementsAnalysis

Software DesignStrategies and

Methods

PracticalConsiderations

PracticalConsiderations

MaintenanceProcess

RelatedDisciplines

ComputerScience

Management

Mathematics

Projectmanagement

Qualitymanagement

SoftwareErgonomics

Systemsengineering

Closure

ProcessAssessment

Software Design Tools

Guide to the Software Engineering Body of Knowledge

(2004 Version)

SoftwareConfigurationManagement

SoftwareEngineering Tools

and Methods

SoftwareEngineering

ProcessSoftware Quality

SoftwareConfigurationManagementFundamentals

KeysIssues in

SCM

SoftwareConfiguration

Control

SoftwareConfiguration

Status Accounting

SoftwareConfiguration

Auditing

Software ReleaseManagement and

Delivery Software Methods

Software ToolsProcess

Implementationand Change

Process andProduct

Measurement

Software QualityFundamentals

Software QualityManagement

Processes

Heuristic Methods

Formal Methods

Prototyping Methods

Software RequirementsTools

Software Testing Tools

Software MaintenanceTools

Software EngineeringProcess Tools

ProcessDefinition

PracticalConsiderations

Software ConstructionTools

Software Quality Tools

Software ConfigurationManagement Tools

Software EngineeringManagement Tools

Infrastructure SupportTools

Miscellaneous ToolIssues

Miscellaneous MethodIssues

SoftwareEngineeringManagement

Initiation andScope

Definition

SoftwareProject

Planning

Software ProjectEnactment

Review andEvaluation

SW EngineeringMeasurement

ComputerEngineering

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

• 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 Design

• 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 Construction

• 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 Testing

• 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 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

• 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 Engineering Tools and Methods

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 AreasMapped TO ISO/IEC 12207:1995 processes

Software Quality

Software Engineering Tools and Methods

Software Engineering Process

Software Engineering ManagementSoftware Configuration Management

MaintenanceTestingConstructionDesignRequirements

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ós-

graduação tem adotado o SWEBOK como padrão.

Referências• http://pt.wikipedia.org/wiki/

Software_Engineering_Body_of_Knowledge• 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

• Abran, Alain (2004). An international Consensus on the Software Engineering Body of Knowledge. Disponível em: http://www.enre.umd.edu/iwss2004/Presentations/SoftwareEngineeringBodyofKnowledge.ppt

• Trial Version SWEBOK. A Project of the Software Engineering Coordinating Committee. Disponível em: http://www2.dem.inpe.br/ijar/SWEBOK.pdf

Referências• The First International Workshop on the Evolution of the

Guide to the Software Engineering Body of Knowledge. Edinburgh, Scotland, July 25-28, 2005. Disponível em: http://www.swebok.org/Swebok_CFP.pdf

• Rocha, Milena e Oliveira, Jairo. Uma Introdução ao SWEBOK. Disponível em: http://www.cin.ufpe.br/~processos/TAES3/programacao-2006-2.html

• Rocha, Thayssa. Guide to the Software Engineering Body of Knowledge. Disponível em: http://www.cin.ufpe.br/~processos/TAES3/programacao-2006-2.html

• Kotonya, Gerald e Sommerville, Ian. Requirements Engineering Processes and Techniques.

Perguntas?

Uma introdução ao SWEBOK

Universidade Federal de Pernambuco

Centro de Informática

Clarissa César Borbaccb@cin.ufpe.br