O mundo moderno poderia existir sem software? Professor Ariel da Silva Dias Introdução a Engenharia de Software 1
Software Associação de programas de computador e documentação; Atributos de um bom software Prover funcionalidade, o desempenho requerido pelo usuário, ser confiável e fácil de usar; Engenharia de software Disciplina que se preocupa com todos os aspectos de produção de software; Principais atividades da engenharia de software Especificação, desenvolvimento, validação e evolução. O mundo moderno poderia existir sem software? 2
O mundo moderno poderia existir sem software? Características do software Os softwares são abstratos; Intangíveis; Não existe limites naturais para o potencial do software; Devido a estas características, o software pode se tornar complexo, difícil de entender e caro para manutenção; 3
Existem vários tipos de sistemas de softwares, para os mais variados fins; Desenvolver um sistema empresarial web... Todos estes sistemas precisam da engenharia de software; Existe um método, notação ou técnica universal para a engenharia de software? Não! Pois diferentes tipos de softwares requerem abordagens diferentes; 4
... é diferente de desenvolver um jogo computacional...... é diferente de desenvolver um software controlador... 5
Completando Existem vários tipos de sistemas de softwares, para os mais variados fins; Temos problemas em desenvolver softwares mais complexos, mas sem a engenharia de software, não teríamos explorado o espaço, não teríamos a internet ou as telecomunicações; Todos estes sistemas precisam da engenharia de software embora nem todos necessitem das mesmas técnicas. 6
Disciplina com foco em todos os aspectos da produção de software Da especificação até a manutenção; Não há preocupação apenas com os processos técnicos do desenvolvimento de software; Engenharia de software é importante pois: Indivíduos e sociedade dependem dos sistemas de software; A longo prazo, é mais barato usar métodos e técnicas de engenharia de software, uma vez que, a maior parte do custo é mudar o software depois que ele já começa a ser usado. Engenharia tem a ver com obter resultado de qualidade requeridos dentro do cronograma e orçamento; 7
Processos de software Especificação de software: definição do software a ser desenvolvido e as restrições de operação; Desenvolvimento de Software: o software é projetado e programado; Validação de Software: é verificado para garantir que é o que o cliente quer; Evolução de Software: o software é modificado para refletir a mudança de requisitos do cliente e do mercado; Diferentes sistemas necessitam de diferentes processos de software Por exemplo, software para controle de aeronave deve ser completamente especificado antes de iniciar o desenvolvimento. 8
Muitas pessoas escrevem programas Planilhas; Programas para registro de dados experimentais; Programas para hobby e diversão; Todavia, o desenvolvimento de software é uma atividade profissional com especificação, projeto e evolução; Um sistema de software é mais do que um programa: Consiste em uma série de programas e arquivos de configuração; Inclui também a documentação do sistema, documentação do usuário, site para acesso dos usuários, entre outros; A engenharia de software apoia o desenvolvimento profissional de software, mais do que a programação individual. 9
Existem dois tipos de produto de software Produtos genéricos; Produtos sob encomenda; Característica importante destes dois tipos: Software Genérico: a organização que o desenvolve controla sua especificação; Software sob Encomenda: a especificação é normalmente desenvolvida e controlada pela empresa que está adquirindo o software; Características essenciais de um sistema profissional de software 10
Existem muitos tipos diferentes de softwares, incluindo Stand-Alone: Aplicações executadas em um computador local. Exemplo: Software de manipulação de fotos; Interativas baseadas em transações: Aplicações que executam em um computador remoto, acessado pelo usuário a partir de seu computador. Exemplo: aplicações de comércio eletrônico, e-mail, compartilhamento de fotos; Controle Embutido: Sistemas que controlam e gerenciam dispositivos de hardware. Exemplo: software em microondas, controle antitravamento de freios em um carro; Existem muitos tipos diferentes de softwares, incluindo Processamento de Lotes: São sistemas para processarem grandes números de dados de entradas individuais para criar as saídas correspondentes. Exemplo: Sistema de cobrança telefônica, cobrança de energia elétrica e emissor de folha de pagamento; Entretenimento: Fornece interação com o usuário a fim de entretê-lo. Exemplo: jogos de diferentes tipos; Modelagem e Simulação: sistemas criados para modelar processos ou situações físicas. Exemplo: Simuladores de voo, Simulador de direção; 11
Existem muitos tipos diferentes de softwares, incluindo Coleta de Dados: São sistemas que coletam dados a partir de um conjunto de sensores e os enviam para outro sistema realizar o processamento. Exemplo: central de meteorologia; Sistemas de Sistemas: Um pacote de software que possui vários sistemas dentro dele. Exemplo: Pacote Office. Não existe uma técnica ou método universal para o desenvolvimento de software, mas existem três aspectos gerais que afetam vários tipos diferentes de softwares citados anteriormente 12
Aspectos gerais Heterogeneidade: O desafio é desenvolver técnicas para construir um software que seja flexível e possa executar em computadores, telefones móveis e tenha possibilidade de integração com outros sistemas mais antigo; Mudança de Negócio e Social: Deve ser possível alterar e/ou desenvolver um software na mesma velocidade que ocorrem as mudanças nos negócios e na sociedade; Segurança e Confiança: Precisamos ter certeza de que os usuários maliciosos não possam atacar nosso software e de que a proteção da informação seja mantida; E para um sistema WEB? uma abordagem baseada em desenvolvimento e entregas iterativas pode ser adequada, com o sistema sendo composto a partir de componentes reusáveis. Estes aspectos não são independentes! 13
SOMMERVILLE, I. Engenharia de Software. 9a edição. Pearson Addison Wesley. 2011 14