Qualidade, Processos e Gestão de Software Embarcado Guilherme A. Dantas Sistemas Embarcados • Campo pouco explorado • Crescimento – Demanda – Complexidade • Visão geral, exploratória • Apenas uma introdução! Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Sistemas Embarcados • Larga escala • Complexos • Tempo real • 80% da inovação no campo automotivo virá de software Sistemas Embarcados • Como adaptar as técnicas existentes de software para atender os desafios do mundo físico? Sistemas Embarcados • Qualidade – Plano e orçamento X Qualidade – Sistemas complexos • Disciplinas combinadas – Problemas de comunicação! Sistemas Embarcados “Escrever código não é o problema. Entender o problema é o problema.” Sistemas Embarcados • Pouco conhecimento do domínio da aplicação – Aviação? – Militar? • Performance determinada pela profundidade do entendimento da aplicação – Programadores passam a entender o que faz sentido – Ferramentas devem acomodar mudanças e suportar representação de decisões incertas de design Sistemas Embarcados • Requisitos conflitantes – Clientes não entendem a complexidade – Regulamentações – Necessidades e entendimento conflitantes Sistemas Embarcados • Comunicação e coordenação – Comunicação extensiva – Documentação – Processo dialético – Representação – Fluxo de informação Sistemas Embarcados • Desafios – Confiabilidade – Robustez – Performance – Complexidade do sistema – Gerenciamento de requisitos – Otimização – Gerenciamento de projetos global – Verificação e ferramentas Sistemas Embarcados • Provavelmente continuará sendo um domínio desafiador no futuro próximo – Técnico – Metodológico Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Ciclo de Vida 1 • • • • • • • • Capturar requisitos do usuário Definição de contexto PIM Especificação de requisitos PIM Análise PIM Design Codificação e Integração Testes Deployment Ciclo de Vida 2 • • • • Especificação de Requisitos de Sistema Design de Arquitetura da Aplicação Design da Arquitetura da Plataforma Alocação/Configuração/Refinamento do Sistema • Avaliação de Qualidade • Realização do Sistema (Implementação) Ciclo de Vida 3 • DePES I e II – 12 passos, documentos, UML – Terminologia clara – Modelagem de ambiente – Foco na análise do problema – Padrões, Modelos – Descrição do processo – Testes sistemáticos Ciclo de Vida 3 • NÃO é um processo leve • Modelagem do ambiente • Análise nos primeiros estágios • Design de hardware “congelado” HW/SW Co-Design Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Métricas Físicas • Performance • Memória • Energia • Potência • Tamanho • Peso Código • Acomplamento • Coesão • Reuso • População (classe, etc.) • Complexidade Métricas • Trade-off entre reusabilidade e otimização • Métricas de qualidade de código destacam qual solução é mais flexível, reusável e fácil de manter Métricas • Classificação de Segurança – A: Falha catastrófica – B: Falha ameaçadora / muito grave – C: Falha grave – D: Falha leve – E: Sem efeito Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Certificação • Planejamento para aspectos de certificação do software • Verificação, CM, QA • Código – Cobertura de código em testes – Rastreabilidade Certificação • Especificação formal • Verificação de propriedades não funcionais • Medição • Avaliação de Processos • Benchmarking Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Modelo de Software Embarcado Modelos matemáticos Modelo de Software Embarcado Linguagens de Programação • Abstrações de tempo e concorrência Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Agile x Embedded • 7-10% das funcionalidades são frequentemente usadas • 60% raramente usadas – Igualmente definidas, implementadas, verificadas, testadas... • 3G Network Spec -> 5000 Change Requests • Overhead! Agile x Embedded • Software Process Improvement – CMMI, Padrões, Modelos – Tempo: 3-5 anos – Custo: € 10-45k, por engenheiro – Poucos estudos que comprovam ROI – 70% dos projetos falham Agile x Embedded • Telecom, Automotive, Avionics, Consumer Eletronics – Não tem espaço para projetos de melhoria muito longos – Melhoria incremental não é suficiente para a competição global – Abordagem inovadora Agile x Embedded • Agile – Forte para aplicações de negócio e web – Projetos de puro software – Pouco se sabe da aplicabilidade em campos mais restritos • Hardware-bound Agile x Embedded • Objetivos: – Custo-benefício – Qualidade – Time-to-market AGILE ITEA • Agile Software Development of Embedded Systems • Práticas são aplicáveis, com forte adaptação dependendo de: – Questões de certificação – Profunda dependência de hardware – Cultura da companhia AGILE ITEA • Novos métodos para preencher as lacunas! • Mobile-D: mobile sw development, team<20 • RaPiD7: documentação em formato de workshop • Post-iteration improvement approach • EDDY-process model for mobile telecom industry AGILE ITEA • • • • 68 estudos 1800 engenheiros 17 companhias européias 2 anos e meio • 73% dos casos considerados bem sucedidos! – Sem detalhes dos casos falhos AGILE ITEA • Oportunidades de negócio – Redução de custo – Aumento na satisfação dos empregados • Embedded Agile Institute (Europa) – ... Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Intel Itanium • Conhecimento muito especializado • Background técnico • Atitude em relação às mudanças • Frustração com planejamento que não se conseguia cumprir – Culpa – Ou perda de tempo Intel Itanium • Pouca cobertura de testes • Mudanças feitas sem controle – Sem suíte de regressão • Manutenção de código fraca – Otimização e complexidade além da conta – Estilos de codificação inconsistentes Intel Itanium • • • • Scrum + XP Experiência positiva “People aspect of Agile” Design de processadores – Grande software em HDL Intel Itanium • Herança de Agile vem da manufatura • Não há razão para que não possa ser aplicado • Outros times dentro da Intel operam em um modo mais ágil e parecem bem sucedidos! Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Problem Conscious PM • • • • • • • Objetivos obscuros Overplanning ou Underplanning Escassez de recursos ou competências Underestimation Phasing Huge projects Very huge projects... Problem Conscious PM • Nenhuma metodologia ou modelo trata especificamente o desenvolvimento de sistemas embarcados • Adaptação! – Sistemas críticos – Time-to-market Agenda • Problemas e Desafios de Desenvolvimento de Sistemas Embarcados • Ciclos de Vida • Métricas • Certificação • Modelo de Software Embarcado • Agile x Embedded • Caso: Intel Itanium • Problem Conscious PM • Conclusões Conclusões • Embedded Systems PM – Planejar certificação – Modelos para medir e avaliar software embarcado – Definir critérios de qualidade prioritários – Escolher processo baseado na criticidade do projeto • Agile ou não Conclusões • • • • Falhas em software embarcado são mais graves Mais software, mais sistemas, mais falhas Diversos desafios -> Qualidade • Escolha de métodos baseada no contexto • -> Riscos • Agile para sistemas embarcados! – Security, financial, logistics... • Oportunidades de pesquisa!