Introdução à Engenharia de Software
Wolley W. [email protected]
Objetivo
• Entender o que é Engenharia de Software e qual a sua importância;
Os Softwares então em todos os lugares!
Introdução : O que é um software?
• Instruções (programa de computador) que, quando executadas, fornecem características, funções e desempenho desejados;
• Estruturas de dados que possibilitam aos programas manipular informações adequadamente;
• E informações que descrevem a operação e uso dos programas;
Introdução: A crise do Software
• O termo “crise do software” vem sendo usado na indústria de software desde 1968, quando pela primeira vez se reconheceu as dificuldades no setor.– Projetos com orçamento estourado;– Projetos entregues fora do prazo;– Software com baixa qualidade;– Software que não atingem os requisitos;– Projetos ingerenciaveis e difícil de manter;
Introdução : A natureza do software
1. Software é desenvolvido ou passa por um processo de engenharia; não é fabricado no sentido clássico;
2. Software não “se desgasta”, mas se deteriora; 3. A maioria dos software são construídos de
forma personalidade (sob encomenda);
Pressman, 2011
Introdução : A natureza do software
1. Software é desenvolvido ou passa por um processo de engenharia; não é fabricado no sentido clássico;
Produção em Serie,Atividade repetitiva
Não se faz duas vezes o mesmo software,Paga-se pela engenharia.
Introdução : A natureza do software
2. Software não “se desgasta”, mas se deteriora;
Hardware com o tempo Se desgasta fisicamente Com o tempo deixa de atender as
necessidadesDo usuário
Introdução : A natureza do software
3. A maioria dos software são construídos de forma personalidade (sob encomenda);
Engenharia de Software
• Sommerville, 2011– É uma disciplina de engenharia cujo foco está em
todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua manutenção, quando o sistema já está sendo utilizado.
Engenharia de Software
Camadas da engenharia de software. Pressman, 2011
Processo
• Define uma metodologia que deve ser estabelecida para a entrega efetiva de um produto de software;
• A base para o controle do gerenciamento de projetos;
• Define os artefatos a serem produzidos: modelos, documentação, relatórios, etc...
Processo
• Processo evolucionário• Processo incremental• Processo espiral
Processo cascata
Métodos
• Os métodos envolvem uma ampla gama de tarefas, que incluem: – Comunicação,– Análise de requisitos,– Modelagem de projeto,– Construção de programa,– Testes – Suporte
Métodos
• Método Estruturado• Método Orientado a Objetos• Métodos Ágeis– Scrum– XP
Ferramentas
• Fornecem suporte automatizado ou semiautomatizado para o processo e para os métodos.– Ambientes de Modelagem – Ambientes de Programação – IDEs (Integrated
Development Environment)
Qualidade de Software
• O software que satisfaz os requisitos solicitados pelo usuário.
• Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar.
Aplicações da Engenharia
• Não existe técnicas e métodos universais na engenharia de software adequados a todos os ambientes e todas as empresas.
• Existem muitos tipos diferentes de aplicações.
Aplicações da Engenharia
• Aplicações stand-alone– Executadas em computador local. Ex. Pacote Office.
• Aplicações Web– Múltiplos usuários. Ex. Internet Banking
• Aplicações de controle embarcados– Controle de dispositivos de hardware. Ex. microcontroladores
• Sistemas de processamento em Lote– Processam grande quantidade de dados. Ex. Sistemas de
cobrança e de pagamentos.• Entre outros....
Fundamentos da Engenharia de Software
• Apesar de diferentes aplicações, existem fundamentos que se aplicam a todos os tipos de sistemas de software.
Fundamentos da Engenharia de Software
• Desenvolvidos em um processo gerenciado e compreendido.– Ter ideia clara do que será produzido e quando estará finalizado.
• Confiança e desempenho.– Se comportar conforme o esperado, sem falhas e estar disponível.
• Gerenciar a especificação e os requisitos (o que o software deve fazer).– Saber o que os clientes e usuários esperam e gerenciar suas
expectativas.• Possibilitar o reuso.
– Reutilizar o sistema já desenvolvido, em vez de escrever um novo
Conclusão
• A engenharia de software engloba processos, métodos e ferramentas que possibilitam a construção de um sistema complexo dentro do prazo e com qualidade.