Liberdade para a Engenharia de Software e Sistemas Jorge H C Fernandes A Amplitude das Plataformas Computacionais Atuais Cadeia de Valor na Era da Convergência Digital Network Technology Back-End Software Development Wap/Web Servers Payment Solutions Content Interface Internet Security Solutions Content Provision Portals/ Services/ Channels Mobile/Broadcast Network Software Platforms Content Aggregation Devices (TV / Mobile) Application Development Ser livre é ter liberdade para pensar, criar e se comunicar com sistemas de computadores complexos e hierarquizados: Apropriar-se dos meios de comunicação com as máquinas computáveis, e saber fazer o melhor uso social e econômico dos mesmos Conversas com Sistemas Sistemas Computacionais muito Abstratos Descrever Casos de Uso de uma Aplicação … # Caso de Uso Descrição Mapa de navegação de uma aplicação… Conceber um mapa de um site Conversas com Sistemas Sistemas Computacionais menos Abstratos Descrever Estruturas de uma aplicação Descrever Comportamentos… Conversas com Sistemas Computacionais Concretos: Programação Construir Código compreensível e útil • Construir programas funcionais e coerentes através da codificação, auto-validação e teste unitário. • Passos – – – – – Organize a arquitetura e design antes de implementar Entenda as APIs antes de usar Utilize técnicas e convenções de codificação Faça teste unitário dos módulos Adote padrões e idiomas de design Testar Software e Sistemas • Verificar dinamicamente o comportamento do programa através do uso de um conjunto finito de casos de teste - adequadamente selecionados de um domínio de execuções usualmente infinito contra o comportamento esperado deste • Passos – Defina e documente um plano de teste e um formulário de log de testes, que serão executados durante o desenvolvimento da aplicação e que servirão para validar a aplicação antes de entregar/apresentar Plano de Teste Plano de Teste: <APLICACAO> <VERSÃO-DO-PLANO> Autor: <AUTOR-PLANO> Configuração sob teste: <DESCRIÇÃO-CONFIG><VERSÃO-CONFIG> Histórico de Alterações: <DT-CRIACÃO> <ALT-1> <ALT-2>,…, <ALT-N> Caso de Teste CASO 1 Objetivo: <OBJETIVO DO CASO DE TESTE-1> Passos: Resultado Esperado <PASSO-1-1> <RESULTADO-1-1> <PASSO-1-2> <RESULTADO-1-2> <PASSO-1-n> <RESULTADO-1-n> CASO 2 Objetivo: <OBJETIVO DO CASO DE TESTE-2> Passos: Resultado Esperado <PASSO-1-1> <RESULTADO-1-1> <PASSO-1-2> <RESULTADO-1-2> <PASSO-1-n> <RESULTADO-1-n> Log de Teste Log de Teste: <APLICACAO> <VERSÃO-DO-PLANO> Testador: <TESTADOR> Configuração sob teste: <DESCRIÇÃO-CONFIG><VERSÃO-CONFIG> Data: <DATA DE REALIZACAO DO TESTE> Casos de Teste CASO 1 Objetivo: Passos: <PASSO-1-1> <PASSO-1-2> <OBJETIVO DO CASO DE TESTE-1> Resultado Esperado <RESULTADO-OBTIDO> <RESULTADO-OBTIDO> <PASSO-1-n> <RESULTADO-OBTIDO> CASO 2 Objetivo: Passos: <PASSO-1-1> <PASSO-1-2> <OBJETIVO DO CASO DE TESTE-2> Resultado Esperado <RESULTADO-OBTIDO> <RESULTADO-OBTIDO> <PASSO-1-n> <RESULTADO-OBTIDO> Observações <ERRO? Ou ACERTO?> <ERRO? Ou ACERTO?> <ERRO? Ou ACERTO?> <ERRO? Ou ACERTO?> <ERRO? Ou ACERTO?> <ERRO? Ou ACERTO?> Mini-manifesto da Engenharia de Software e Sistemas Livres, por Jorge H C Fernandes, Dez/2004 Ser livre é ter liberdade para pensar, criar e se comunicar com sistemas de computadores complexos e hierarquizados É apropriar-se dos meios de comunicação com as máquinas computáveis, e saber fazer o melhor uso social e econômico dos mesmos Quero ter liberdade para pensar, refletir e escolher qual a melhor tecnologia, arquitetura e modelo de negócios tecnológicos para mim, a fim de criar sistemas que satisfaçam às minhas necessidades pessoais, às das organizações para as quais trabalho e à sociedade na qual vivo Quero conhecer as implicações positivas e negativas, no curto, médio e longo prazo, sobre as decisões de aquisição de software, sistemas e soluções tecnológicas Quero conhecer as ecologias da informação e da computação Quero entender as cadeias e ciclos de desenvolvimento científico, tecnológico, econômico e social Quero entender o modelo de von Neumann e as arquiteturas paralelas Quero saber programar em pelo menos uma linguagem de programação de arquitetura aberta Cada ano quero ter oportunidade para aprender algo novo Cada dia quero ter oportunidade para ensinar a alguém Quero me apropriar, de forma legítima, dos intrumentos e técnicas para entender o que os meus clientes e colegas necessitam para tramento da informação que lhes é necessária para a solução de seus problemas Quero ser livre para fazer eu mesmo, quando tiver tempo e disposição, mas também quero ser livre para comprar o que não tenho condições de fazer, e que seja de meu interesse Quero ser livre para valorizar o trabalho de todos Quero dar oportunidade aos que não ainda tem trabalho Liberdade para a Engenharia de Software e Sistemas Jorge H C Fernandes