Uma introdução ao SWEBOK Jairo C. de Oliveira [email protected] Milena Rocha [email protected] Tópicos Avançados de ES 3 Agenda • • • • Engenharia de Software Reconhecimento da Profissão Desenvolvimento da Profissão SWEBOK – – – – – – – – Descrição geral Objetivos Audiência Pretendida Princípios Básicos Time do Projeto Fases de Desenvolvimento Áreas de Conhecimento Disciplinas Relacionadas • Conclusões Uma introdução ao SWEBOK v2.0 2 Engenharia de Software • É uma disciplina que está em desenvolvimento e existe uma grande tendência ao aumento no seu nível de maturidade • Não é uma disciplina legítima de engenharia, nem uma profissão reconhecida Uma introdução ao SWEBOK v2.0 3 Reconhecimento da Profissão • É imperativo se chegar a um consenso sobre qual é núcleo do conhecimento • Segundo Starr* – Conhecimento e competência de um profissional devem ser validados por uma comunidade de peso na área – Conhecimento é validado se baseado em fundamentos científicos e racionais – O julgamento do profissional são direcionados para um conjunto de valores reais *P. Starr, The Social Transformation of American Medicine Uma introdução ao SWEBOK v2.0 4 O que caracteriza uma profissão? • Segundo Gary Ford e Norman Gibbs, a profissão de engenharia possui os seguintes componentes: – Uma educação profissional inicial e um curriculum válido por uma sociedade de crédito – Registro da aptidão para praticar por meio de certificação voluntária ou licença obrigatória – Desenvolvimento de talento especializado e uma educação profissional contínua Uma introdução ao SWEBOK v2.0 5 O que caracteriza uma profissão? • Segundo Gary Ford e Norman Gibbs (cont.): – Suporte público através de uma sociedade profissional – Um comprometimento com normas de conduta, muitas vezes prescritas em um código de ética • O guia SWEBOK contribui para os três primeiros componentes • Estabelece um consenso sobre a profissão de ES Uma introdução ao SWEBOK v2.0 6 Desenvolvimento da Profissão Influências da Sociedade Profissional Infra-estrutura de Suporte da Profissão Reconhecimento Desenvolvimento Individual do Profissional Educação Profissional Inicial Desenvolvimento de Habilidades Sociedades de Profissionais Um ou Ambos Certificação Desenvolvimento Profissional Código de Ética Uma introdução ao SWEBOK v2.0 Licenciamento Status Profissional Completo 7 Guide to the Software Engineering Body of Knowledge (SWEBOK) • Começou como uma colaboração entre IEEE CS, ACM e a Université du Québec à Montréal • SWECC (Software Engineering Coordinating Committe) – 1998 • Participação internacional da indústria, sociedades de profissionais, academia, autores • Quando o projeto estiver finalizado, literalmente milhares de pessoas terão trabalhado nele • Após três ciclos de revisões a versão Trial foi lançada em 2001 Uma introdução ao SWEBOK v2.0 8 Fases de Desenvolvimento Straw Man Version Stone Man Version Iron Man Version Trial Version 1998 1999 2000 2001 2002 Uma introdução ao SWEBOK v2.0 2003 2004 9 Objetivos do SWEBOK • Oferecer uma visão consistente da engenharia de software no âmbito mundial • Deixar claros os limites de planejamento de software com respeito a outras disciplinas ( Ciência da computação, gerência de projetos, matemática, entre outros) Uma introdução ao SWEBOK v2.0 10 Objetivos do SWEBOK • Caracterizar o conteúdo da disciplina de Engenharia de Software • Prover uma base para desenvolvimento curricular e material de licença individual Uma introdução ao SWEBOK v2.0 11 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 Uma introdução ao SWEBOK v2.0 12 Categorias de Conhecimento • Conhecimento de um Engenheiro de Software Conhecimento do domínio da aplicação Conhecimento avançado em ES Ciência da Computação Conhecimento Especializado em ES Matemática Uma introdução ao SWEBOK v2.0 13 Princípios Básicos do Projeto • Transparência – O processo é totalmente documentado e publicado • Construção do consenso – – – – Indústria Sociedades Profissionais Corporações de criação de padrões Ambientes Acadêmicos • Totalmente livre na web (www.swebok.org) Uma introdução ao SWEBOK v2.0 14 O que está fora do Escopo do SWEBOK • O guia contém os conhecimentos necessários, porém não suficientes para um engenheiro de software – Linguagem de programação específica – Banco de Dados específico – Tecnologias de Redes – Gerência de projetos – Engenharia de sistemas – Ciência da Computação Uma introdução ao SWEBOK v2.0 15 Time do projeto • Grupo de editoração • Especialistas das áreas de conhecimento • Revisores Uma introdução ao SWEBOK v2.0 16 Áreas de conhecimento (KA) • • • • • • • • • • 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 Uma introdução ao SWEBOK v2.0 17 Disciplinas Relacionadas • • • • • • • Cognitive Sciences and Human Factors Computer Engineering Computer Science Management and Management Science Mathematics Project Management Systems Engineering Uma introdução ao SWEBOK v2.0 18 Organização das Áreas de Conhecimento Uma introdução ao SWEBOK v2.0 19 Áreas de conhecimento Uma introdução ao SWEBOK v2.0 20 Áreas de conhecimento Uma introdução ao SWEBOK v2.0 21 KA: Software Requirements • Um requisito é definido como uma característica que pode ser demonstrada para resolver alguns problemas do mundo real Uma introdução ao SWEBOK v2.0 22 KA: Software Requirements • Sub-áreas de conhecimento – – – – – – Requirement Engineering Process Requirement Elicitation Requirement Analysis Requirement Specification Requirement Validation Requirement Management Uma introdução ao SWEBOK v2.0 23 KA: Software Requirements Uma introdução ao SWEBOK v2.0 24 KA: Software Requirements • Requirement Engineering Process – Apresenta o planejamento de requisitos – Orienta as outras 5 sub-áreas – Mostra como o planejamento de requisitos se encaixa com o processo completo de planejamento de software – Descreve modelos de processo, atores e suporte ao gerenciamento de requisitos Uma introdução ao SWEBOK v2.0 25 KA: Software Requirements • Requirement Elicitation – – – – Origem dos requisitos Controle do requisitos Fontes de requisitos Técnicas para Elicitação Uma introdução ao SWEBOK v2.0 26 KA: Software Requirements • Requirement Analysis – detectar e resolver conflitos entre requisitos – descobrir os limites do sistema e como ele deve interagir com o seu ambiente – aprimorar requisitos do sistema para requisitos de software – Inclui • Classificação de requisitos • Modelo Conceitual, design arquitetural e alocação de requisitos • Negociação de requisitos. Uma introdução ao SWEBOK v2.0 27 KA: Software Requirements • Requirement Specification – Descreve e estrutura o documento de requisitos – Geração dos documentos de definição e especificação dos requisitos do sistema Uma introdução ao SWEBOK v2.0 28 KA: Software Requirements • Requirement Validation – Levanta os problemas antes que os recursos sejam comprometidos – Verifica se o documento de requisitos define o sistema correto • • • • Descrições do comportamento das revisões dos requisitos Criação do Protótipo Validação do Modelo Testes de Aceitação Uma introdução ao SWEBOK v2.0 29 KA: Software Requirements • Requirement Management – Está presente em todo o ciclo de vida de um software – Controla a mudança dos requisitos – Gerencia Características dos requisitos Uma introdução ao SWEBOK v2.0 30 KA: Software Design • 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 Uma introdução ao SWEBOK v2.0 31 KA: Software Design • Sub-áreas de Conhecimento – – – – – – Basic Concepts Key Issues of Software Structure and Architecture Software Design Quality Analysis and Evaluation Desing Notations Software Design Strategies and Methods Uma introdução ao SWEBOK v2.0 32 KA: Software Design Uma introdução ao SWEBOK v2.0 33 KA: Software Design • Basic Concepts – formam uma base fundamental para o entendimento da função e do escopo do design de software • • • • conceitos básicos de design contexto do design de software processo de design técnicas que permitem o design de software. Uma introdução ao SWEBOK v2.0 34 KA: Software Design • Key Issues of Software – – – – – – Concorrência Controle e tratamento de eventos Distribuição Tratamento de erros e de exceções Sistemas interativos Persistência Uma introdução ao SWEBOK v2.0 35 KA: Software Design • Structure and Architecture – – – – Estruturas e Pontos de Vistas Estilos Padrões de Design Frameworks Uma introdução ao SWEBOK v2.0 36 KA: Software Design • Software Design Quality Analysis and Evaluation – – – – – Trata da qualidade do design do software Atributos de qualidade Análise de qualidade Avaliação de ferramentas Métricas Uma introdução ao SWEBOK v2.0 37 KA: Software Design • Design Notations – Notações estruturais e comportamentais • Software Design Strategies and Methods – – – – – Estratégias Gerais Métodos Orientados a Funções Métodos Orientados a Objeto Métodos Centrados em Dados Estruturados Métodos Formais Uma introdução ao SWEBOK v2.0 38 KA: Software Construction Uma introdução ao SWEBOK v2.0 39 KA: Software Construction • 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 • Relação entre design e construção Uma introdução ao SWEBOK v2.0 40 KA: Software Construction • Uso de Ferramentas para aumento de produtividade e qualidade • Princípios Básicos – Redução da Complexidade • Remoção, Automação e Localização da Complexidade – Antecipação da Diversidade • Técnicas de Generalização e Experimentação – Estruturação para Validação – Uso de Padrões Externos Uma introdução ao SWEBOK v2.0 41 KA: Software Construction • Estilos/Métodos para Construção de Software – Lingüístico • Uso de linguagem natural – Formal – Visual • Visual C++ • Visual Basic Uma introdução ao SWEBOK v2.0 42 KA: Software Testing • 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. Uma introdução ao SWEBOK v2.0 43 KA: Software Testing • Sub-áreas de Conhecimento – – – – – Basic Concepts Test Levels Test Techniques Test Measures Test Management Uma introdução ao SWEBOK v2.0 44 KA: Software Testing Uma introdução ao SWEBOK v2.0 45 KA: Software Testing • Basic Concepts – Apresentação da terminologia de testes – Bases teóricas – Relacionamento dos testes com outras atividades • Test Levels – Alvos e Objetivos • Test Techniques – Seleção de Técnicas apropriadas Uma introdução ao SWEBOK v2.0 46 KA: Software Testing • Test Measures – Trata métricas de testes relacionados • Test Management – Gerenciamento específico para o processo de testes • Gerenciamento • Atividades Uma introdução ao SWEBOK v2.0 47 KA: Software Maintenance • Uma vez em execução, anomalias são descobertas, ambientes de execução são modificados, e novos requisitos do usuário surgem. • Sub-áreas de Conhecimento – – – – Basic Concepts Maintenance Process Key Issues Techniques for Maintenance Uma introdução ao SWEBOK v2.0 48 KA: Software Maintenance Uma introdução ao SWEBOK v2.0 49 KA: Software Maintenance • Basic Concepts – Definições, Terminologias e Evolução • Maintenance Process – Atividades • Key Issues – Problemas Técnicos e Gerenciamento • Techniques for Maintenance – Compreenção do Programa, Re-engenharia, Engenharia Reversa, Análise de Impacto Uma introdução ao SWEBOK v2.0 50 KA: Software Maintenance • Modelo de Processos de Manutenção – IEEE: Análise Classificação e Identificação Design Solicitação de Modificação Entrega Implementação Teste de Aceitação Uma introdução ao SWEBOK v2.0 Teste 51 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 Uma introdução ao SWEBOK v2.0 52 KA: Software Configuration Management • Sub-áreas de Conhecimento – – – – – – Management of the SCM process Software Configuration Identification Software Configuration Control Software Configuration Status Accounting Software Configuration Auditing Software Release Management and Delivery Uma introdução ao SWEBOK v2.0 53 KA: Software Configuration Management Uma introdução ao SWEBOK v2.0 54 KA: Software Configuration Management • Management of the SCM process – – – – – Trata dos tópicos do contexto organizacional Limitações e direcionamento Planejamento Software Configuration Management Plan (SCMP) Monitoramento do SCM Uma introdução ao SWEBOK v2.0 55 KA: Software Configuration Management • Software Configuration Identification – Identifica itens a serem controlados – Estabelece esquemas de identificação para os itens e suas versões – Estabelece as ferramentas e técnicas a serem usadas para adquirir e gerenciar itens controláveis Uma introdução ao SWEBOK v2.0 56 KA: Software Configuration Management • Software Configuration Control – Gerencia as mudanças durante o ciclo de vida do software • Software Configuration Status Accounting – Informações sobre o status da configuração de software – Relatórios do status Uma introdução ao SWEBOK v2.0 57 KA: Software Configuration Management • Software Configuration Auditing – Auditoria de configuração funcional do software – Auditoria de configuração física do software – Auditoria In-Process • Software Release Management and Delivery – Gerência de construção e de entrega de software Uma introdução ao SWEBOK v2.0 58 KA: Software Configuration Management • Representação Gráfica Mgmt. & Planning SCMP Control Mgmt. Status Accounting Release Processing Auditing Configurantion Identification Uma introdução ao SWEBOK v2.0 59 KA: Software Engineering Management • Corresponde ao gerenciamento, medição e modelagem do desenvolvimento de software • Sub-áreas de conhecimento – Organizacional Management – Process/Project management – Software Engineering Measurement Uma introdução ao SWEBOK v2.0 60 KA: Software Engineering Management Uma introdução ao SWEBOK v2.0 61 KA: Software Engineering Management • Organizacional Management – – – – Política de Gerenciamento Gerência de Pessoal Gerência de Comunicação Gerência de Aquisição Uma introdução ao SWEBOK v2.0 62 KA: Software Engineering Management • Process/Project management – Definição de escopo • Determinação de requisitos, análise de viabilidade e revisão dos requisitos – Planejamento • Processo, projetos, deliverables, estimativa de esforço, cronograma, alocação de recursos, riscos, qualidade – Enactment • Planos de implementação, processo de medição, monitoração, controle e relatórios Uma introdução ao SWEBOK v2.0 63 KA: Software Engineering Management • Process/Project management – Definição de revisão e avaliação • Determinação dos requisitos de satisfação, revisão e avaliação de desempenho – Fechamento Uma introdução ao SWEBOK v2.0 64 KA: Software Engineering Management • Software Engineering Measurement – – – – – Objetivos do programa de medição Seleção de medidas Medição do software e do seu desenvolvimento Coleta de Dados Modelos de Métricas Uma introdução ao SWEBOK v2.0 65 KA: Software Engineering Process • Preocupa-se com: – – – – – – Definição Implementação Medida Gerenciamento Mudança Melhoramento Uma introdução ao SWEBOK v2.0 66 KA: Software Engineering Process • Sub-áreas de conhecimento – Basic Concepts – Process Infrastructure – Measurements Specific to Software Engineering Process – Process Definition – Qualitative Process Analysis – Process Implementation and Change Uma introdução ao SWEBOK v2.0 67 KA: Software Engineering Process Uma introdução ao SWEBOK v2.0 68 KA: Software Engineering Process • Basic Concepts – Temas – Terminologias • Process Infrastructure – Descreve o conceito de grupo e fábrica • Measurements Specific to Software Engineering Process – Apresenta a metodologia e paradigmas de medida para diagnóstico quantitativo do processo Uma introdução ao SWEBOK v2.0 69 KA: Software Engineering Process • Process Definition – – – – – – Vários tipos de definições de processo Ciclo de vida de modelos de framework Ciclo de vida de modelos de software Notações usadas para representar essas definições Métodos de definições de processos Automação relativa às várias definições Uma introdução ao SWEBOK v2.0 70 KA: Software Engineering Process • Qualitative Process Analysis – Revisão do processo de definição – Análise da causa de origem • Process Implementation and Change – Descreve os paradigmas – Descreve as linhas de direção para implementação e mudança do processo – Avaliação do resultado de implementação e mudança Uma introdução ao SWEBOK v2.0 71 KA: Software Engineering Tools and Methods • Inclui tanto o ambiente de desenvolvimento de software como as áreas de conhecimento de métodos de desenvolvimento Uma introdução ao SWEBOK v2.0 72 KA: Software Engineering Tools and Methods Uma introdução ao SWEBOK v2.0 73 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 • • • • Heurísticos Formais Prototipagem Híbrido Uma introdução ao SWEBOK v2.0 74 KA: Software Quality • Qualidade de Software: – Uso eficiente, efetivo e confortável por um dado conjunto de usuários para um determinado propósito sob determinadas condições. • Presente em grande parte das áreas de conhecimento do guia Uma introdução ao SWEBOK v2.0 75 KA: Software Quality • Sub-áreas de conhecimento – Software Quality Concepts – Purpose and Planning of Software Quality Assurance and Verification&Validation – Activities and Techniques for Software Quality Assurance and Verification&Validation – Measurement Applied to Software Quality Assurance and Verification&Validation Uma introdução ao SWEBOK v2.0 76 KA: Software Quality Uma introdução ao SWEBOK v2.0 77 KA: Software Quality • Software Quality Concepts – – – – Trata da medida do valor da qualidade Trata da descrição ISO 9126 de qualidade Dependência Outros tipos especiais de sistema Uma introdução ao SWEBOK v2.0 78 KA: Software Quality • Purpose and Planning of Software Quality Assurance (SQA) and Verification&Validation (V&V) – Atividades de Planejamento da qualidade – SQA Plan – V&V Plan Uma introdução ao SWEBOK v2.0 79 KA: Software Quality • Activities and Techniques for SQA and V&V – – – – Técnicas Estáticas Técnicas People-Intensive Técnicas Analíticas Técnicas Dinâmicas Uma introdução ao SWEBOK v2.0 80 KA: Software Quality • Measurement Applied to SQA and V&V – – – – Inclui os fundamentos de medição Modelos de Medição Técnicas de análise de medidas Caracterização de falha Uma introdução ao SWEBOK v2.0 81 Crescimento no interesse na profissão de engenharia de software • Diversos centros de estudos e universidades, por todo o mundo oferecem graduação em engenharia de software ou possuem algum grupo voltado a estudos do corpo do conhecimento dessa área Uma introdução ao SWEBOK v2.0 82 Crescimento no interesse na profissão de engenharia de software • • • • University of New South Wales (Australia) McMaster University (Canadá) Rochester Institute of Technology (US) The Canadian Information Processing Society tem publicado critérios que acreditam em programas de engenharia de software para estudantes ainda não graduados Uma introdução ao SWEBOK v2.0 83 Crescimento no interesse na profissão de engenharia de software • CMM, CMMI e a família ISO 9000 de padrões são usados para avaliar a capacidade organizacional para a engenharia de software • The Texas Board of Professional Engineers tem começado a licenciar profissionais de engenharia de software Uma introdução ao SWEBOK v2.0 84 Crescimento no interesse na profissão de engenharia de software • The Association for Computing Machinery (ACM) e o Computer Society of the Institute of Electrical and Electronics Engineers (IEEE) têm aderido ao desenvolvimento e adotado um código de ética para profissionais de engenharia de software Uma introdução ao SWEBOK v2.0 85 Crescimento no interesse na profissão de engenharia de software • The Institute for Certification of Computing Professionals (ICCP) oferece certificação tanto para desenvolvedores de software quanto para engenheiros de software Uma introdução ao SWEBOK v2.0 86 Considerações Finais • É provável que o projeto SWEBOK torne-se tão importante dentro da área de Tecnologia da Informação quanto o PMBOK é dentro da área de Gerência de Projetos • E seus padrões se tornem guias para um profissional de Tecnologia da informação Uma introdução ao SWEBOK v2.0 87 Referências • Guide to the Software Engineering Body of Knowledge. A Project of the Software Engineering Coordinating Committee Leonard L. Tripp, Chair, Professional Practices Committee, IEEE Computer Society • The Emerging Consensus on Software Engineering Body of Knowledge –Pierre Bourque, École de technologie supérieure Robert Dupuis, february,2002 • Description of the SWEBOK Knowledge Area Software Engineering Process- El-Emam, K. March 2001 Uma introdução ao SWEBOK v2.0 88 Referências • http://www.ipenz.org.nz/ipenz/publications/C onvention/Steve_McDonell_SWEBOK.ppt • http://www.site.uottawa.ca/~tcl/presentations/ SWEBOKandUottMar2000CSEET.ppt • http://www.stevemcconnell.com/NovumOrgan um.pdf Uma introdução ao SWEBOK v2.0 89