Prévia do material em texto
UNIP – Alphaville Engenharia de Software Apresentação Engenharia de Software - Tópicos 12/02/2025 Instituto de Ciência e Tecnologia - ICET 2 Módulo 01: Introdução Introdução: Definição / Crise do Software / Modelos, Processo e Produto / Coesão e Acoplamento; Engenharia de Requisitos: Conceitos / Importância / Processo / Ergonomia Cognitiva; Módulo 02: Design JAD: Joint Application Design: Conceito / Princípios e Práticas; RUP: Processo Unificado: Definições / Processo / Atividades / Iterativo e Incremental; Métricas de Software: APF – Análise de Ponto de Função: Conceitos e Aplicação; UCP: Pontos por Caso de Uso: Conceitos e Aplicação; Módulo 03: Desenvolvimento Testes de Software: Caixas Branca e Preta / Unitário / Integração / Aceitação e Regressão; Componentização: Engenharia de Software Baseada em Componentes – Reusabilidade; Reengenharia de Software: Manutenção e Evolução; Engenharia de Software - Tópicos 12/02/2025 Instituto de Ciência e Tecnologia - ICET 3 Módulo 04: Gestão • Gestão de Projetos de Software: PMBOK: Conceitos / Demandas Concorrentes / Processo e Gerências; • XP: Introdução / Motivação / Manifesto Ágil / Valores e Práticas; • Gestão de Riscos: Definições / Processo / Framework; Módulo 05: Governança I • ISO/IEC 12.207: Conceitos / ISO/IEC 12.207 / Contexto Brasileiro • Normas e Modelos de Qualidade – SPICE: ISO 15.504 – Modelo SPICE – Objetivos e Processo; • ISO 9000: Definições / Finalidade e Processo; Módulo 06: Governança II • CMMI: Definições / Processo / Níveis Capacidade e Maturidade / Agrupamentos; • Qualidade do Produto de Software: ISO 9126 / ISO 14.598 e Evolução para SQuaRE; Módulo 07: Futuro • Interface Homem Computador - IHC: Definições / Importância / Aplicação / Indicadores / ERGOLIST; • A evolução das interfaces face à IA generativa: quais os caminhos e impactos na UX/UI. • Estrada Adiante: Contexto e objetivos futuros. Calendário 12/02/2025 Instituto de Ciência e Tecnologia - ICET 4 Data Turma Tema 12/02/2025 CC6P/CC7P/CC7Q Apresentação do curso 19/02/2025 CC6P/CC7P/CC7Q Modulo 1 26/02/2025 CC6P/CC7P/CC7Q Modulo 2 05/03/2025 CC6P/CC7P/CC7Q carnaval 12/03/2025 CC6P/CC7P/CC7Q Modulo 3 19/03/2025 CC6P/CC7P/CC7Q Modulo 4 26/03/2025 CC6P/CC7P/CC7Q NP1 02/04/2025 CC6P/CC7P/CC7Q NP1 09/04/2025 CC6P/CC7P/CC7Q revisão de prova 16/04/2025 CC6P/CC7P/CC7Q exercício 23/04/2025 CC6P/CC7P/CC7Q modulo 5 30/04/2025 CC6P/CC7P/CC7Q modulo 6 07/05/2025 CC6P/CC7P/CC7Q modulo 7 14/05/2025 CC6P/CC7P/CC7Q NP2 21/05/2025 CC6P/CC7P/CC7Q NP2 28/05/2025 CC6P/CC7P/CC7Q SUBS Calendário 12/02/2025 Instituto de Ciência e Tecnologia - ICET 5 Data Turma Tema 07/02/2025 SI6P/SI7P Apresentação inicial 14/02/2025 SI6P/SI7P Apresentação do curso 21/02/2025 SI6P/SI7P Modulo 1 28/02/2025 SI6P/SI7P Modulo 2 07/03/2025 SI6P/SI7P Exercício 14/03/2025 SI6P/SI7P Modulo 3 21/03/2025 SI6P/SI7P Modulo 4 28/03/2025 SI6P/SI7P NP1 04/04/2025 SI6P/SI7P NP1 11/04/2025 SI6P/SI7P Revisão de prova 18/04/2025 SI6P/SI7P Paixão de cristo 25/04/2025 SI6P/SI7P modulo 5 02/05/2025 SI6P/SI7P módulo 6 09/05/2025 SI6P/SI7P modulo 7 16/05/2025 SI6P/SI7P NP2 23/05/2025 SI6P/SI7P NP2 30/05/2025 SI6P/SI7P SUBS Módulo 01: Introdução 12/02/2025 Instituto de Ciência e Tecnologia - ICET 6 1.1 Definição / Crise do Software / Modelos, Processo e Produto / Coesão e Acoplamento Sommerville: Capítulo 1 (Introdução à Engenharia de Software) Pressman: Capítulo 1 e 2 (O Paradigma da Engenharia de Software e Modelos de Processo) SWEBOK: Capítulo 3 (Processos de Software) Resumo e Exemplos: A crise do software refere-se aos desafios históricos do desenvolvimento de software, como atrasos, estouro de orçamento e baixa qualidade. Sommerville e Pressman abordam os modelos de desenvolvimento (Cascata, Incremental, Espiral etc.), enquanto o SWEBOK apresenta um panorama sobre processos de software. Exemplo: O desenvolvimento de um sistema bancário pode se beneficiar do modelo incremental, priorizando módulos essenciais (ex: contas e transações) antes de funcionalidades secundárias. Módulo 01: Introdução 12/02/2025 Instituto de Ciência e Tecnologia - ICET 7 1.2 Engenharia de Requisitos Sommerville: Capítulo 4 e 5 (Engenharia de Requisitos) Pressman: Capítulo 7 (Engenharia de Requisitos) SWEBOK: Capítulo 2 (Engenharia de Requisitos) Resumo e Exemplos: Engenharia de requisitos trata da elicitação, documentação e validação de requisitos. Sommerville e Pressman enfatizam a importância da clareza na definição de requisitos. Exemplo: Para um sistema de e-commerce, um requisito funcional pode ser "O usuário pode adicionar produtos ao carrinho", enquanto um não funcional pode ser "O tempo de resposta deve ser menor que 2 segundos". Engenharia no sentido amplo 12/02/2025 Instituto de Ciência e Tecnologia - ICET 8 Historicamente, a engenharia como prática organizada e sistemática de solução de problemas técnicos e construção de ferramentas, estruturas e sistemas, encontrou oposição ou contraposição em diferentes aspectos e momentos da história. Abaixo estão algumas dessas forças ou ideias que se contrapõem à engenharia: Natureza e Tradições Ancestrais A engenharia, frequentemente associada à transformação da natureza, muitas vezes se contrapôs a visões que valorizam a preservação e o respeito pelo meio ambiente. Tradições ancestrais ou comunidades indígenas que viviam em harmonia com o ambiente natural, sem a necessidade de intervenção técnica massiva, podem ser vistas como contraponto ao desenvolvimento de infraestruturas. Engenharia e contrapontos 12/02/2025 Instituto de Ciência e Tecnologia - ICET 9 2. Filosofia e Teoria (vs. Prática) Desde a Antiguidade, houve um certo tensionamento entre a prática técnica (engenharia) e a especulação filosófica. Aristóteles, por exemplo, separava o mundo da prática (técnica) do mundo da teoria (episteme), sendo esta última considerada superior. No Renascimento, houve um resgate da harmonia entre teoria e prática, mas a separação permaneceu em algumas escolas de pensamento. 3. Artesanato e Experiência Prática Antes do surgimento da engenharia moderna, o artesanato era o principal meio de produção e construção. Os artesãos, baseando-se em habilidades práticas e experiência acumulada, muitas vezes viam a engenharia com desconfiança, por depender de conhecimentos teóricos ou matemáticos distantes do trabalho manual. 12/02/2025 Instituto de Ciência e Tecnologia - ICET 10 4. Romantismo e o Rejeito à Industrialização Durante o período do Romantismo (século XVIII e XIX), houve uma rejeição à engenharia e à revolução industrial por intelectuais, artistas e filósofos que acreditavam que a mecanização e a industrialização desumanizavam o trabalho e destruíam o mundo natural. Escritores como William Blake e Henry David Thoreau criticaram o impacto da engenharia industrial na sociedade e na natureza. trabalho manual. 5. Ideologias Antitécnicas Algumas correntes filosóficas e ideológicas, como o ludismo no início da Revolução Industrial, se opuseram diretamente às tecnologias desenvolvidas por engenheiros, por considerá-las prejudiciais à vida dos trabalhadores. Ideias contemporâneas como o decrescimento econômico ou a crítica ao tecnocentrismo defendem uma redução da dependência tecnológica, em oposição à visão otimista da engenharia como solução para todos os problemas. Engenharia e contrapontos 12/02/2025 Instituto de Ciência e Tecnologia - ICET 11 6. Espiritualidade e Misticismo Em várias tradições espirituais, o foco na transformação material do mundo através da engenharia pode ser visto como uma distração do crescimento espiritual ou um desrespeito à ordem divina. Durante a Idade Média, por exemplo, algumas inovações foram vistas como desafios ao poder divino. 7. Ética e Sustentabilidade Na contemporaneidade, a crítica à engenharia frequentemente gira em torno de questões éticas, como o impacto ambiental, as desigualdades sociais e o uso de tecnologias para fins destrutivos (e.g., armamentos nucleares). A engenharia modernaenfrenta contraposições relacionadas à ética tecnológica, como a inteligência artificial, biotecnologia e exploração de recursos naturais. 8. Desconfiança Popular O público geral, em certos momentos históricos, expressou desconfiança em relação aos engenheiros, especialmente quando seus projetos levaram a desastres ou promessas não cumpridas (como a crítica ao modernismo excessivo do século XX). Esses contrapontos não apenas desafiaram a engenharia, mas muitas vezes ajudaram a moldá-la, influenciando sua evolução para incluir considerações sociais, éticas e ambientais. Engenharia e contrapontos A História da Crise do Software 12/02/2025 Instituto de Ciência e Tecnologia - ICET 12 Origens e Impactos: A Crise do Software começou a ser percebida no final da década de 1960, quando a complexidade dos sistemas cresceu exponencialmente, tornando os métodos tradicionais de desenvolvimento insuficientes. O termo foi cunhado durante a Conferência da OTAN sobre Desenvolvimento de Software, realizada em 1968, onde especialistas discutiram problemas como: Atrasos constantes: Projetos levavam mais tempo do que o previsto. Estouro de orçamento: Custos eram muito superiores às estimativas iniciais. Baixa qualidade do software: Erros e falhas se tornaram comuns. Dificuldade de manutenção: Softwares eram difíceis de adaptar ou escalar. A principal razão para esses problemas era a falta de uma abordagem estruturada para o desenvolvimento de software. Durante os anos 70 e 80, várias metodologias foram propostas, incluindo a Engenharia de Software como disciplina, modelos como Cascata (Waterfall) e abordagens iterativas. O CHAOS REPORT: O Diagnóstico da Indústria 12/02/2025 Instituto de Ciência e Tecnologia - ICET 13 Nos anos 90, a Standish Group lançou o CHAOS Report, um estudo que mede o sucesso e o fracasso de projetos de software, tornando-se um dos principais indicadores da evolução (ou persistência) da crise. Publicado pela primeira vez em 1994 o relatório trouxe uma visão alarmante sobre o estado dos projetos de software: Apenas 16% dos projetos foram concluídos dentro do prazo e orçamento. 31% dos projetos foram cancelados antes da entrega. 53% ultrapassaram orçamento ou prazos, sofrendo mudanças drásticas no escopo. Esses dados mostraram que, apesar dos avanços tecnológicos, os problemas da Crise do Software persistiam. A publicação do relatório impulsionou melhorias na gestão de projetos, a adoção de métodos ágeis e o fortalecimento da disciplina de Engenharia de Software. O CHAOS REPORT: O Diagnóstico da Indústria 12/02/2025 Instituto de Ciência e Tecnologia - ICET 14 Métricas Mais Recentes sobre Sucesso/Fracasso de Projetos de Software As últimas edições do CHAOS Report e outros estudos trazem novos insights sobre o sucesso e o fracasso dos projetos de software. Algumas métricas atualizadas: CHAOS Report 2020 (última versão pública disponível) 31% dos projetos são bem-sucedidos (entregues no prazo, dentro do orçamento e com as funcionalidades esperadas). 50% dos projetos são desafiadores (com estouro de prazo, orçamento ou mudanças de escopo). 19% dos projetos falham completamente. Indicadores Adicionais Metodologias Ágeis melhoram as taxas de sucesso: Projetos que usam Scrum, Kanban ou XP têm 60% mais chances de sucesso do que os que seguem modelos tradicionais como o Cascata. Projetos menores têm maior chance de sucesso: Equipes menores (5 a 9 pessoas) apresentam taxas de sucesso quase 2 vezes superiores às de grandes projetos com equipes acima de 20 membros. A adoção de DevOps reduz falhas: Organizações que aplicam CI/CD (Integração e Entrega Contínuas) relatam menos retrabalho e maior previsibilidade. O CHAOS REPORT: O Diagnóstico da Indústria 12/02/2025 Instituto de Ciência e Tecnologia - ICET 15 Fatores de Sucesso e Fracasso O Standish Group também identificou os principais fatores que afetam o sucesso dos projetos de software: ✅ Fatores que aumentam a chance de sucesso: Envolvimento do usuário final. Apoio executivo ao projeto. Requisitos claros e bem definidos. Metodologias ágeis e iterativas. Pequenos ciclos de entrega com feedback contínuo. ❌ Fatores que levam ao fracasso: Escopo mal definido ou mudando constantemente. Falta de envolvimento da liderança e usuários finais. Tecnologia inadequada ou ultrapassada. Processos burocráticos e inflexíveis. Equipes grandes sem coordenação eficiente. Engenharia de Software no Contexto da Crise do Software 12/02/2025 Instituto de Ciência e Tecnologia - ICET 16 Engenharia de Software surgiu como uma resposta à Crise do Software, que expôs os desafios do desenvolvimento de sistemas complexos na década de 1960. O termo foi consolidado para enfatizar que o desenvolvimento de software deveria seguir princípios sistemáticos, controláveis e mensuráveis, assim como ocorre na engenharia tradicional.No contexto das falhas identificadas pelo CHAOS Report, a Engenharia de Software tem como objetivo principal minimizar riscos e aumentar a previsibilidade e a qualidade do desenvolvimento de software. Isso é feito por meio de processos estruturados, melhores práticas e métodos de medição e controle. Engenharia de Software 12/02/2025 Instituto de Ciência e Tecnologia - ICET 17 O que é Engenharia de Software? A Engenharia de Software surgiu para responder aos desafios do desenvolvimento de software em larga escala. A definição clássica segundo a IEEE (Instituto de Engenheiros Elétricos e Eletrônicos) é: “A aplicação de uma abordagem sistemática, disciplinada e mensurável para o desenvolvimento, operação e manutenção de software.” Segundo Sommerville (2020): “A engenharia de software é uma disciplina de engenharia que se preocupa com todos os aspectos da produção de software, desde as fases iniciais da especificação do sistema até a manutenção após a entrada em operação.” Engenharia de Software 12/02/2025 Instituto de Ciência e Tecnologia - ICET 18 Modelos, Processo e Produto A Engenharia de Software estruturou-se em torno de três conceitos-chave: Modelos de Desenvolvimento: Formas de organizar a criação de software (exemplo: Cascata, Ágil, Incremental, Espiral). Processo de Software: Conjunto de atividades organizadas para desenvolver software. Produto de Software: O software final entregue ao usuário.Conforme Sommerville (2020):"Os processos de software são conjuntos estruturados de atividades necessárias para especificar, projetar, implementar e testar sistemas de software.“ Exemplo prático: O desenvolvimento de um sistema bancário pode seguir um modelo incremental, priorizando primeiro funcionalidades essenciais, como cadastro de clientes e transações bancárias. Engenharia de Software: requisitos 12/02/2025 Instituto de Ciência e Tecnologia - ICET 19 Engenharia de Requisitos Definição e Importância: A Engenharia de Requisitos trata da identificação, documentação e validação das necessidades do sistema. Segundo Sommerville (2020): "A Engenharia de Requisitos é o processo de descobrir, documentar e manter os requisitos do software de um sistema.“ Pressman (2021) complementa: "Requisitos de software são a base para qualquer desenvolvimento bem-sucedido, pois definem o que o sistema deve fazer antes da implementação." Engenharia de Software: Tipos de Requisitos 12/02/2025 Instituto de Ciência e Tecnologia - ICET 20 Existem dois principais tipos de requisitos: Requisitos Funcionais: Descrevem o que o sistema deve fazer. Exemplo: "O sistema deve permitir que o usuário faça login com nome e senha.“ Requisitos Não Funcionais: Restrições e características do sistema. Exemplo: "O sistema deve responder a solicitações em menos de 2 segundos. O Processo de Engenharia de Requisitos envolve quatro etapas: 1 Elicitação: Identificação das necessidades do usuário. 2 Documentação: Registro formal dos requisitos. 3 Validação: Verificação da consistência dos requisitos. 4 Gerenciamento: Controle de mudanças ao longo do desenvolvimento. Exemplo prático: No desenvolvimento de um sistema de e-commerce, osrequisitos podem ser obtidos por entrevistas com clientes e análise de sistemas concorrentes. Engenharia de Software: Exercícios 12/02/2025 Instituto de Ciência e Tecnologia - ICET 21 Exercícios e Discussão em Aula ✅ Exercício 1 – Debate: A crise do software ainda existe? Justifique sua resposta com exemplos modernos. ✅ Exercício 2 – Análise de caso: Identifique e categorize requisitos funcionais e não funcionais para um aplicativo de transporte como Uber ou 99. Engenharia de Software: Exercícios 12/02/2025 Instituto de Ciência e Tecnologia - ICET 22 Resposta do Exercício 2 – Análise de Caso 📌 Sistema analisado: Aplicativo de transporte (Uber, 99 etc.) 1 Identificação e Classificação dos Requisitos Requisitos Funcionais (RF) RF01: O usuário deve poder se cadastrar no aplicativo usando e-mail, telefone ou redes sociais. RF02: O passageiro deve poder solicitar uma corrida informando o ponto de partida e destino. RF03: O motorista deve receber notificações de corridas disponíveis próximas à sua localização. RF04: O aplicativo deve permitir pagamento via cartão de crédito, débito ou carteira digital. RF05: O passageiro pode avaliar o motorista após a corrida. Requisitos Não Funcionais (RNF) RNF01: O tempo médio de resposta do aplicativo deve ser inferior a 2 segundos. RNF02: O sistema deve suportar picos de 500 mil usuários simultâneos. RNF03: A taxa de uptime do servidor deve ser de 99,9% ao longo do ano. RNF04: Os dados de pagamento devem ser criptografados com AES-256. Engenharia de Software: Exercícios 12/02/2025 Instituto de Ciência e Tecnologia - ICET 23 📌 Formato Cascata No modelo cascata, os requisitos são totalmente documentados antes do início do desenvolvimento e seguem uma sequência rígida de fases. Exemplo de documentação: Documento de Requisitos – Aplicativo de Transporte 📅 Versão: 1.0 📄 Data: 07/02/2025 👥 Equipe responsável: Time de Produto e Engenharia 📌 Requisito RF02: Solicitação de Corrida Descrição: O usuário poderá solicitar uma corrida informando a localização de origem e destino. ✅ Pré-condições: O usuário deve estar cadastrado e logado no sistema. O GPS do dispositivo deve estar ativado. 🔄 Fluxo principal: O usuário insere o ponto de partida e o destino. O sistema calcula a estimativa de preço e tempo de chegada do motorista. O usuário confirma a solicitação. O sistema aloca o motorista mais próximo. O motorista aceita a corrida e se desloca até o passageiro. 🚨 Fluxo alternativo: Se nenhum motorista estiver disponível, o sistema exibe uma mensagem de espera ou alternativa de transporte. Engenharia de Software: Exercícios 12/02/2025 Instituto de Ciência e Tecnologia - ICET 24 Critério Cascata Ágil Documentação Extensa e detalhada antes do desenvolvimento Leve e evolutiva Flexibilidade Rígido, mudanças são difíceis Adaptável a mudanças constantes Entrega de Valor Apenas ao final do projeto Entregas incrementais Testes e Validação Fase final, pode levar a retrabalho Testes contínuos e feedback frequente Exemplo de Requisito Documento formal com fluxos e pré-condições User stories e critérios de aceitação Engenharia de Software: Exercícios 12/02/2025 Instituto de Ciência e Tecnologia - ICET 25 Conclusão No modelo cascata, os requisitos são documentados detalhadamente antes do desenvolvimento, garantindo clareza, mas dificultando mudanças. No modelo ágil, os requisitos são mais flexíveis e ajustáveis durante o desenvolvimento, permitindo respostas rápidas a novas demandas. ✅ Para projetos como sistemas críticos (banco, saúde), o modelo cascata pode ser mais seguro. ✅ Para startups e produtos digitais, o modelo ágil oferece mais rapidez e adaptação ao mercado. 📌 Pergunta para Reflexão: Você acredita que um aplicativo como Uber ou 99 deveria ser desenvolvido inteiramente de forma ágil ou deveria ter algumas partes feitas no modelo cascata? Por quê? image1.png