Prévia do material em texto
ESTUDO SWEBOK CMP1114 PROF. FABRICIO QTDE TEMA 1 REQUISITOS DE SOFTWARE 2 ARQUITETURA DE SOFTWARE 3 DESIGN DE SOFTWARE 4 CONSTRUÇÃO DE SOFTWARE 5 TESTE DE SOFTWARE 6 OPERAÇÕES DE ENGENHARIA DE SW 7 MANUTENÇÃO DE SOFTWARE 8 GERENCIAMENTO DE CONFIGURAÇÃO DE SW 9 GERENCIAMENTO DE ENGENHARIA DE SW 10 PROCESSOS DE ENGENHARIA DE SW 11 MODELOS E MÉTODOS DE ENGENHARIA DE SW 12 QUALIDADE DE SOFTWARE 13 SEGURANÇA DE SOFTWARE QTDE TEMA 14 PRÁTICA PROFISSONAL EM ENGENHARIA DE SOFTWARE 15 ECONOMIDA NA ENGENHARIA DE SOFTWARE 16 FUNDAMENTOS DE COMPUTAÇÃO 17 FUNDAMENTOS MATEMÁTICOS 18 FUNDAMENTOS DE ENGENHARIA 01- REQUISITOS DE SOFTWARE O que é? • Definição: Conjunto de condições e restrições para o software. • Importância: Impacta custo, tempo e qualidade do projeto. Como fazer? • Elicitação: Coleta de necessidades com usuários. • Análise: Avaliação de clareza e viabilidade. • Especificação: Documentação estruturada. • Validação: Revisão e testes para conformidade. • Gerenciamento: Controle de mudanças e rastreamento. Características • Tipos de classificação: • Funcionais: O que o software deve fazer. • Não Funcionais: Qualidade, desempenho e segurança. • De Projeto: Restrições como custo e prazo. Exemplo • Sistema de e-commerce: • Funcional: Cliente pode adicionar itens ao carrinho. • Não Funcional: Tempo de resposta inferior a 2s. • De Projeto: Deve ser desenvolvido em 6 meses. 01- REQUISITOS DE SOFTWARE 02- ARQUITETURA DE SOFTWARE Arquitetura de software refere-se à estrutura fundamental de um sistema de software, incluindo seus componentes, relacionamentos e princípios de design. Principais Conceitos: • Sentidos de "Arquitetura": Disciplina, processo e resultado. • Partes do Processo Arquitetural: • Projeto Arquitetural: Estrutura geral do sistema. • Design de Alto Nível: Componentes principais e interações. • Design Detalhado: Implementação dos componentes. Partes Interessadas e Preocupações: • Clientes (custo e prazo), usuários (funcionalidade), desenvolvedores (implementação), operadores (manutenção e desempenho). Usos da Arquitetura: • Facilita comunicação entre equipes. • Suporte à análise e avaliação de alternativas. • Base para engenharia reversa e manutenção. 02- ARQUITETURA DE SOFTWARE Descrição: • Visões e Pontos de Vista: Representações para diferentes públicos. • Padrões e Estilos Arquiteturais: Modelos comuns, como MVC, cliente-servidor, microsserviços. • Frameworks e Linguagens de Descrição (ADLs): Formalização da arquitetura. Processo: • Análise: Identificação de requisitos críticos. • Síntese: Desenvolvimento de soluções e trade-offs. • Avaliação: Verificação de qualidade e aderência a requisitos. Avaliação da Arquitetura: • Métricas: Acoplamento, modularidade, complexidade. • Métodos: ATAM, SAAM, revisões arquiteturais. • Qualidade: Robustez, usabilidade, desempenho. 03- DESIGN DE SOFTWARE 03- DESIGN DE SOFTWARE • O que é Design de Software? • Processo de transformar requisitos em uma especificação implementável. • Envolve a definição da arquitetura, componentes e suas interações. • Fundamental para a construção de software eficiente e de qualidade. • Principais Etapas: • Arquitetura de Alto Nível – Estrutura geral do software. • Arquitetura de Detalhamento – Especificação dos módulos internos. 03- DESIGN DE SOFTWARE Principais Características de Qualidade: • Confiabilidade • Segurança • Desempenho • Manutenção Principais Métodos: • Orientado a Objetos – Usa classes e herança. • Baseado em Componentes – Reutilização de módulos. • Orientado a Eventos – Responde a ações externas. • Baseado em Modelos – Uso de UML e diagramas. 04- CONSTRUÇÃO DE SOFTWARE O que é Construção de Software? • Processo de desenvolvimento que envolve codificação, verificação, testes e depuração. • Essencial para transformar o design em um software funcional. Principais Atividades: • Codificação – Escrita do código-fonte conforme o design. • Verificação – Revisão para garantir qualidade e conformidade. • Testes – Execução do software para encontrar erros. • Depuração – Correção de falhas identificadas. 04- CONSTRUÇÃO DE SOFTWARE Boas Práticas na Construção de Software: • Uso de padrões de codificação para legibilidade e manutenção. • Gerenciamento de configuração para controle de versões. • Testes contínuos para garantir qualidade. Principais Métodos e Estratégias: • Desenvolvimento Iterativo – Construção por ciclos incrementais. • Programação Orientada a Objetos – Uso de classes e encapsulamento. • Programação Baseada em Componentes – Reutilização de módulos. • Uso de Ferramentas – Compiladores, depuradores e análise estática de código. Qualidade na Construção: • Revisões de código e auditorias. • Testes automatizados e integração contínua. 05- TESTE DE SOFTWARE 05- TESTE DE SOFTWARE O que é Teste de Software? • Processo de verificação dinâmica para garantir que um sistema se comporta conforme o esperado. • Testa funcionalidade, desempenho, segurança e outros atributos do software. Objetivos do Teste de Software: • Detectar falhas antes da entrega. • Garantir conformidade com requisitos. • Melhorar qualidade e confiabilidade. 05- TESTE DE SOFTWARE Tipos de Teste de Software: • Teste Unitário: ▪ Foca em componentes individuais do software (funções, classes, módulos). ▪ Feito geralmente pelos desenvolvedores. ▪ Usa ferramentas como JUnit, PyTest e NUnit. • Teste de Integração: ▪ Válida a interação entre múltiplos módulos ou componentes. ▪ Pode seguir estratégias como Top-Down, Bottom-Up e Big Bang. ▪ Garante comunicação correta entre partes do sistema. • Teste de Sistema: ▪ Avalia o sistema completo em um ambiente semelhante ao real. ▪ Testa funcionalidade, desempenho, segurança e compatibilidade. ▪ Garante que o software atende aos requisitos especificados. 06 - OPERAÇÕES DE ENGENHARIA DE SOFTWARE Definição • Conjunto de atividades para implantar, operar e dar suporte a um software. • Garante estabilidade, integridade e desempenho do sistema. • Envolve automação, monitoramento e gerenciamento contínuo. Principais Áreas: • Planejamento das operações – Gestão de fornecedores e ambiente operacional. • Entrega das operações – Implantação, gerenciamento de mudanças e resolução de problemas. • Controle das operações – Monitoramento, suporte e gestão de incidentes. 06 - OPERAÇÕES DE ENGENHARIA DE SOFTWARE Planejamento e Implementação: • Gestão de Infraestrutura: Uso de IaaS, PaaS e DevOps. • Automação: Infraestrutura como Código (IaC) e scripts. • Monitoramento: Telemetria, logs e métricas para desempenho e segurança. Execução e Manutenção: • Gerenciamento de Incidentes: Identificação, resposta e prevenção. • Testes Operacionais: Validação contínua com TDD e ATDD. • Gerenciamento de Mudanças: Controle de versões, rollback e migração de dados. Ferramentas e Práticas: • Containers e Virtualização; • Automação de Deploy; • Monitoramento Contínuo 07 - MANUTENÇÃO DE SOFTWARE O que é a Manutenção de Software? • Conjunto de atividades para modificar e atualizar um software após sua entrega. • Inclui correções de erros, melhorias e adaptações a novos requisitos. • Fundamental para garantir que o software continue funcionando corretamente ao longo do tempo. Como Fazer? • Planejamento: Definir escopo e estratégias de manutenção. • Monitoramento: Identificar falhas, coletar feedback dos usuários. • Análise de Impacto: Avaliar mudanças necessárias e seus efeitos. • Implementação: Alterar código, testar e documentar modificações. • Implantação: Atualizar o software e fornecer suporte contínuo. 07 - MANUTENÇÃO DE SOFTWARE Características da Manutenção de Software • Contínua: O software precisa ser atualizado regularmente. • Evolutiva: Envolve melhorias e adaptações ao longo do tempo. • Custo Elevado: Pode representar mais de 80% do custo total do software. • Dependente da Documentação: Manter registros detalhados facilita futuras modificações. Exemplo Uma empresa utiliza um sistema ERP para gerenciaroperações. Após uma mudança na legislação fiscal, a equipe de TI precisa adaptar o software para calcular os impostos corretamente. Isso envolve análise de impacto, ajustes no código, testes e implantação da atualização. 08 – GERENCIAMENTO DE CONFIGURAÇÃO DE SOFTWARE 08 – GERENCIAMENTO DE CONFIGURAÇÃO DE SOFTWARE O que é o Gerenciamento de Configuração de Software (SCM)? • Processo que garante o controle e rastreamento de mudanças no software. • Mantém a integridade e a evolução do software ao longo do seu ciclo de vida. • Ajuda no controle de versões, mudanças, auditorias e liberações do software. Como Fazer? • Identificação da Configuração: Definir e documentar os itens de configuração. • Controle de Mudanças: Avaliar, aprovar e registrar modificações. • Registro de Status da Configuração: Acompanhar mudanças e suas interações. • Auditoria da Configuração: Garantir conformidade com requisitos e padrões. • Gerenciamento de Liberação: Construção e entrega controlada do software. 08 – GERENCIAMENTO DE CONFIGURAÇÃO DE SOFTWARE Características do SCM: • Controle Rigoroso: Todas as mudanças são registradas e rastreadas. • Suporte ao Desenvolvimento Ágil: Permite integração contínua e versionamento. • Facilita Auditorias e Conformidade: Garantia de qualidade e segurança. • Gestão de Dependências: Relaciona itens de software e suas versões. Exemplo Uma equipe desenvolve um aplicativo e usa um sistema de controle de versões como Git para rastrear mudanças no código. Antes de lançar uma nova versão, realiza auditorias e testes, garantindo que apenas código aprovado seja liberado. 09- GERENCIAMENTO DE ENGENHARIA DE SW 09- GERENCIAMENTO DE ENGENHARIA DE SW O que é? • Trata das práticas e processos necessários para planejar, coordenar, medir, monitorar, controlar e relatar projetos de software. • Essencial para garantir que os projetos sejam entregues no prazo, dentro do orçamento e com a qualidade esperada. Como fazer? • Definir um plano de gerenciamento de software abrangente. • Utilizar metodologias ágeis ou tradicionais para organização do trabalho. • Monitorar progresso por meio de métricas e indicadores de desempenho. • Realizar gestão de riscos para antecipar e mitigar problemas potenciais. 09- GERENCIAMENTO DE ENGENHARIA DE SW Características • Planejamento: Definição de escopo, cronograma e recursos necessários. • Monitoramento: Acompanhamento contínuo do progresso do projeto. • Qualidade: Garantia de que os produtos atendam aos requisitos estabelecidos. • Gestão de Riscos: Identificação e mitigação de potenciais problemas no projeto. Exemplo • Metodologia Ágil: Uso do Scrum para gerenciar projetos com sprints curtos e entregas incrementais. • Métrica de Desempenho: Utilização de indicadores como Burndown Chart para acompanhar a evolução do trabalho. • Ferramentas de Gestão: Uso de softwares como Jira, Trello ou MS Project para organizar tarefas e acompanhar prazos. 10 - PROCESSOS DE ENGENHARIA DE SW Explicação: • Define as etapas, metodologias e boas práticas no desenvolvimento de software. • Essencial para garantir previsibilidade, qualidade e melhoria contínua. Como fazer? • Escolher um modelo de processo de software adequado (Cascata, Iterativo, Ágil, Espiral). • Definir papéis e responsabilidades dentro da equipe. • Implementar práticas de gestão de projetos, controle de versão e automação. • Monitorar e melhorar continuamente o processo com base em métricas. 10 - PROCESSOS DE ENGENHARIA DE SW Características: • Estruturado: Segue modelos bem definidos para organização do trabalho. • Adaptável: Pode ser ajustado conforme necessidades do projeto. • Eficiente: Melhora a produtividade e qualidade do software. • Mensurável: Permite avaliação por meio de métricas e indicadores. Exemplo • Modelo Cascata: Desenvolvimento linear, adequado para projetos com requisitos bem definidos. • Metodologia Ágil: Uso de Scrum para entregas incrementais e colaboração contínua. • Ferramentas de Apoio: Uso de Jira, Git e CI/CD para automação do desenvolvimento. 11- MODELOS E MÉTODOS DE SW • Modelos e métodos de qualidade de software são abordagens estruturadas para avaliar, medir e melhorar a qualidade de um sistema. • Eles ajudam a garantir que o software atenda aos requisitos especificados e ofereça um desempenho confiável e eficiente. Como fazer? • Aplicar modelos de qualidade reconhecidos, como ISO 9126, ISO 25010 e CMMI. • Utilizar métodos como revisão de código, testes automatizados e auditorias de qualidade. • Implementar práticas de melhoria contínua e monitoramento de métricas. 11- MODELOS E MÉTODOS DE SW Características: • Modelo ISO 25010: Define atributos de qualidade, como funcionalidade, desempenho e segurança. • CMMI (Capability Maturity Model Integration): Avalia a maturidade dos processos de desenvolvimen • Seis Sigma: Método estatístico para redução de defeitos e variação nos processos. Exemplo Uma empresa de software implementa o modelo CMMI para aprimorar seus processos de desenvolvimento, reduzindo falhas e aumentando a eficiência do time de engenharia. 12- QUALIDADE DE SOFTWARE • Qualidade de software é a capacidade de um sistema atender aos requisitos especificados e às expectativas do usuário. • Impacta a satisfação do cliente, a longevidade do software e os custos de manutenção. Como fazer? • Aplicar modelos como ISO/IEC 25010 e CMMI. • Implementar revisões, inspeções e testes contínuos. • Usar métricas como defeitos por KLOC, cobertura de testes e MTTF. 12- QUALIDADE DE SOFTWARE Características: • Funcionalidade: O software atende aos requisitos? • Confiabilidade: Opera de forma estável e segura? • Eficiência: Utiliza bem os recursos? • Manutenibilidade: É fácil de modificar e corrigir? Exemplo Um aplicativo bancário que realiza transações seguras, rápidas e sem falhas, garantindo a confiabilidade e satisfação dos usuários. 13- SEGURANÇA DE SOFTWARE O que é? • Segurança de software envolve práticas para proteger sistemas contra ameaças, vulnerabilidades e ataques. • Visa garantir confidencialidade, integridade e disponibilidade das informações. Como fazer? • Aplicar desenvolvimento seguro desde a concepção do software. • Utilizar testes de segurança, como análise de vulnerabilidades e pentesting. • Implementar práticas como controle de acesso, criptografia e gestão de atualizações. 13- SEGURANÇA DE SOFTWARE Características: • Confidencialidade: Proteção contra acessos não autorizados. • Integridade: Garantia de que os dados não sejam alterados indevidamente. • Disponibilidade: O sistema deve estar acessível sempre que necessário. • Autenticidade: Verificação da identidade de usuários e sistemas. Exemplo Um aplicativo bancário que utiliza autenticação multifator, criptografia de dados e detecção de fraudes para proteger as informações dos usuários. 14- PRÁTICA PROFISSONAL EM ENGENHARIA DE SOFTWARE O que é? • É o conjunto de princípios, valores e responsabilidades que orientam o trabalho dos engenheiros de software na indústria. • Envolve aspectos éticos, profissionais e organizacionais essenciais para o desenvolvimento de software de qualidade. Como fazer? • Baseia-se em padrões internacionais como o IEEE e a ACM, que definem boas práticas e códigos de conduta. • É feito por meio da adoção de metodologias ágeis, gestão de projetos, colaboração entre equipes e comprometimento com a ética profissional. 14- PRÁTICA PROFISSONAL EM ENGENHARIA DE SOFTWARE Características • Responsabilidade profissional e ética. • Compromisso com padrões de qualidade e segurança. • Colaboração e comunicação eficaz entre equipes. • Desenvolvimento contínuo e aprendizado ao longo da carreira. Exemplo Uma equipe de engenheiros de software desenvolvendo um sistema para uma instituição financeira deve seguir normas rigorosas de segurança, garantir conformidade com legislações como a LGPD e o GDPR, e aplicar testes rigorosos para evitar falhas críticas no software. 15- ECONOMIDA NAENGENHARIA DE SOFTWARE O que é? • Aplicação da economia na engenharia de software para alinhar decisões técnicas com os objetivos de negócios. • Processo para escolher a melhor alternativa em projetos de software. Como fazer? • Avaliação de propostas (desenvolvimento, aprimoramento, substituição de software). • Consideração do valor do dinheiro no tempo. • Avaliar alternativas. • Entender o problema real. • Identificar soluções viáveis. • Definir critérios de seleção. • Avaliar alternativas. • Selecionar a alternativa preferida. • Monitorar o desempenho. 15- ECONOMIDA NA ENGENHARIA DE SOFTWARE Características • Envolve decisões em todo o ciclo de vida do software. • Considera fatores quantificáveis (custos, benefícios) e não quantificáveis (ativos intangíveis). • Objetivo de maximizar o valor do investimento em software. • Pode ser iterativo e envolver múltiplas etapas. • Usa técnicas como análise de custo-benefício, análise de custo-efetividade e análise de ponto de equilíbrio. Exemplo Decidir entre comprar ou construir um componente de software, considerando custos, tempo e alinhamento com os objetivos da organização. 16- FUNDAMENTOS DE COMPUTAÇÃO O que é? • Conjunto de fundamentos essenciais da ciência da computação que servem de base para a engenharia de software. • Engloba áreas como algoritmos, estruturas de dados, arquitetura de computadores, linguagens de programação e sistemas operacionais. Como fazer? • Aplicação de métodos científicos e engenharia sistemática para analisar e solucionar problemas computacionais. • Integra conceitos teóricos e práticos por meio de projeto modular, análise de complexidade e seleção de algoritmos adequados. 16- FUNDAMENTOS DE COMPUTAÇÃO Características • Interdisciplinar, combinando hardware e software. • Foco em eficiência, escalabilidade e modularidade. • Abordagem sistemática e orientada à resolução de problemas reais. Exemplo • Arquitetura de Von Neumann: ▪ Modelo clássico que define a estrutura básica dos computadores com componentes como a ALU, memória compartilhada, dispositivos de entrada/saída e a unidade de controle. ▪ Serve de referência para a maioria dos computadores modernos. 17 – FUNDAMENTOS MATEMÁTICOS O que é? • Área que fornece os fundamentos matemáticos necessários para desenvolver raciocínios formais na engenharia de software. • Engloba lógica proposicional e de predicados, teoria de conjuntos, prova formal, gramáticas, máquinas de estados finitos, entre outros. Como fazer? • Utiliza sistemas formais e linguagens matemáticas para expressar e validar a lógica dos programas. • Emprega técnicas de prova (direta, por contradição, por indução) e métodos de abstração para garantir a correção e consistência do raciocínio. 17 – FUNDAMENTOS MATEMÁTICOS Características • Rigor e Precisão: Baseia-se em regras lógicas e matemáticas que não admitem ambiguidades. • Formalidade: Utiliza linguagens e símbolos formais para representar conceitos e relações. • Abstração: Permite modelar problemas complexos de forma simplificada, facilitando a análise e a verificação. Exemplo • Prova por Indução: ▪ Técnica para demonstrar a veracidade de uma proposição para todos os inteiros positivos. ▪ Exemplo clássico: Provar que a soma dos primeiros n números ímpares é igual a n². 18 – FUNDAMENTOS DE ENGENHARIA O que é? • Área dos Fundamentos da Engenharia que sustenta a prática da engenharia (inclusive a de software), definindo métodos, processos e técnicas aplicáveis a sistemas, produtos e processos. • Abrange desde o entendimento do problema real até a medição e análise estatística para a tomada de decisões. Como fazer? • Através de um processo iterativo que inclui: ▪ Identificação e análise do problema (usando técnicas como análise de causa raiz). ▪ Geração e avaliação de soluções baseadas em critérios de seleção (econômicos, técnicos, de qualidade). ▪ Uso de métodos de design, modelagem, simulação, prototipagem e experimentação para validar as soluções. ▪ Aplicação de técnicas de medição e análise estatística para monitorar e melhorar a performance das soluções. 18 – FUNDAMENTOS DE ENGENHARIA Características • Iteratividade: O processo é cíclico, permitindo revisões e aprimoramentos constantes. • Abordagem Multidisciplinar: Integra métodos de design, engenharia de processos, análise estatística e experimentação. • Abstração e Encapsulamento: Utiliza níveis de abstração para simplificar problemas complexos, mantendo interfaces bem definidas. • Empirismo: Baseia-se na coleta e análise de dados reais, por meio de experimentos, estudos observacionais e retrospectivos. • Foco na Melhoria Contínua: Incorpora técnicas como a análise de causa raiz e o paradigma Goal-Question-Metric para sustentar decisões. Exemplo • Design de Produto com RCA e Prototipagem: ▪ Durante o desenvolvimento de um novo produto, a equipe identifica o problema real (por meio de análise de causa raiz) e gera diversas soluções. ▪ Em seguida, cria protótipos para testar as alternativas e utiliza medições e análises estatísticas para selecionar a solução que melhor atende aos critérios definidos (econômicos, técnicos e de qualidade). Slide 1: ESTUDO SWEBOK Slide 2 Slide 3 Slide 4: 01- REQUISITOS DE SOFTWARE Slide 5: 01- REQUISITOS DE SOFTWARE Slide 6: 02- ARQUITETURA DE SOFTWARE Slide 7: 02- ARQUITETURA DE SOFTWARE Slide 8: 03- DESIGN DE SOFTWARE Slide 9: 03- DESIGN DE SOFTWARE Slide 10: 03- DESIGN DE SOFTWARE Slide 11: 04- CONSTRUÇÃO DE SOFTWARE Slide 12: 04- CONSTRUÇÃO DE SOFTWARE Slide 13: 05- TESTE DE SOFTWARE Slide 14: 05- TESTE DE SOFTWARE Slide 15: 05- TESTE DE SOFTWARE Slide 16: 06 - OPERAÇÕES DE ENGENHARIA DE SOFTWARE Slide 17: 06 - OPERAÇÕES DE ENGENHARIA DE SOFTWARE Slide 18: 07 - MANUTENÇÃO DE SOFTWARE Slide 19: 07 - MANUTENÇÃO DE SOFTWARE Slide 20: 08 – GERENCIAMENTO DE CONFIGURAÇÃO DE SOFTWARE Slide 21: 08 – GERENCIAMENTO DE CONFIGURAÇÃO DE SOFTWARE Slide 22: 08 – GERENCIAMENTO DE CONFIGURAÇÃO DE SOFTWARE Slide 23: 09- GERENCIAMENTO DE ENGENHARIA DE SW Slide 24: 09- GERENCIAMENTO DE ENGENHARIA DE SW Slide 25: 09- GERENCIAMENTO DE ENGENHARIA DE SW Slide 26: 10 - PROCESSOS DE ENGENHARIA DE SW Slide 27: 10 - PROCESSOS DE ENGENHARIA DE SW Slide 28: 11- MODELOS E MÉTODOS DE SW Slide 29: 11- MODELOS E MÉTODOS DE SW Slide 30: 12- QUALIDADE DE SOFTWARE Slide 31: 12- QUALIDADE DE SOFTWARE Slide 32: 13- SEGURANÇA DE SOFTWARE Slide 33: 13- SEGURANÇA DE SOFTWARE Slide 34: 14- PRÁTICA PROFISSONAL EM ENGENHARIA DE SOFTWARE Slide 35: 14- PRÁTICA PROFISSONAL EM ENGENHARIA DE SOFTWARE Slide 36: 15- ECONOMIDA NA ENGENHARIA DE SOFTWARE Slide 37: 15- ECONOMIDA NA ENGENHARIA DE SOFTWARE Slide 38: 16- FUNDAMENTOS DE COMPUTAÇÃO Slide 39: 16- FUNDAMENTOS DE COMPUTAÇÃO Slide 40: 17 – FUNDAMENTOS MATEMÁTICOS Slide 41: 17 – FUNDAMENTOS MATEMÁTICOS Slide 42: 18 – FUNDAMENTOS DE ENGENHARIA Slide 43: 18 – FUNDAMENTOS DE ENGENHARIA