uma introdução ao swebok universidade federal de pernambuco centro de informática clarissa césar...
TRANSCRIPT
Uma introdução ao SWEBOK
Universidade Federal de Pernambuco
Centro de Informática
Clarissa César [email protected]
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 [email protected]