Beruflich Dokumente
Kultur Dokumente
E na aula de hoje?
Engenharia de Software
Crise do Software Caractersticas do software
Reflexo
Com tanto software em nosso dia a dia, por que ainda h tantos projetos que falham?
Por que conclu-los leva tanto tempo? Por que desenvolv-los to caro? Por que no se consegue encontrar todos os erros antes de entreg-los ao cliente? Por que se gasta tanto tempo e esforo para mant-los? Por que difcil medir o seu progresso?
Reflexo
Aumento de demanda
Complexidade versus Entrega Novas tcnicas de ES so necessrias Muito software continua sendo construdo sem o olhar da ES: Custo versus confiana Mais educao e treinamento em ES so necessrios
Expectativas baixas
Evoluo da Computao
Pr-histria: 19501965
Hardware era de propsito geral Software era secundrio em relao ao hardware Software era especfico para cada aplicao Carncia de mtodos sistemticos No havia documentao
Imprevisvel !?!
Ningum poderia ter previsto que milhes de programas de computador tivessem de ser corrigidos, adaptados e aperfeioados medida que o tempo passasse (softwares legados) ... ... e que o custo com essas atividades de manuteno absorveria mais pessoas e recursos que todo o trabalho aplicado na criao de novos softwares
Caractersticas do Software
O que difere o software de outras coisas feitas pelo ser humano?
A maioria feita sob medida/encomenda ao invs de ser montada a partir de mdulos/componentes de programao existentes Desenvolvido ou projetado por engenharia No se desgasta, mas se deteriora
Caractersticas do Software
O que difere o software de outras coisas feitas pelo ser humano?
A maioria feita sob medida/encomenda ao invs de ser montada a partir de mdulos/componentes de programao existentes Desenvolvido ou projetado por engenharia No se desgasta, mas se deteriora
Caractersticas do Software
O que difere o software de outras coisas feitas pelo ser humano?
A maioria feita sob medida/encomenda ao invs de ser montada a partir de mdulos/componentes de programao existentes Desenvolvido ou projetado por engenharia No se desgasta, mas se deteriora
tempo
ndice de falhas
tempo
ndice de falhas
tempo
ndice de falhas
tempo
Mitos do software
Propagaram (at hoje) desinformao
Mitos do Software
Mitos gerenciais (prazo, custo, qualidade, ...)
J temos um manual com padres e diretrizes suficientes para a construo de software Isso no oferecer ao meu pessoal tudo o que eles precisam saber?
O manual usado? Sabe-se que ele existe? Reflete a prtica moderna de desenvolver software? completo?
Mitos do Software
Mitos gerenciais
Posso terceirizar tranquilamente um projeto de software e deix-lo para que a firma o elabore
Se no se sabe gerir e controlar projetos de software internos, haver problemas com terceirizao
Mitos do Software
Mitos do cliente (falsas expectativas)
Uma declarao geral dos objetivos suficiente para se comear a escrever programas detalhes podem ser adicionados mais tarde
Principal causa de fracassos ao desenvolver software fundamental uma descrio detalhada do domnio, funes, desempenho, interfaces internas e externas, restries de projeto e critrios de validao necessria intensa comunicao entre cliente e desenvolvedor
Mitos do Software
Mitos do cliente
Requisitos de projeto modificam-se no tempo, mas as mudanas so facilmente tratadas
Mudanas solicitadas tardiamente em um projeto, podem ser maiores que a ordem de magnitude mais dispendiosa das mesmas mudanas solicitadas em fases iniciais
Fase Definio Desenvolvimento Manuteno Custo de Manuteno 1X 1.5 6X 60 100X
Mitos do Software
Mitos do profissional (manias custam a morrer!!!)
Aps desenvolver o programa e o colocar em funcionamento, o trabalho estar completo
60 a 80% de todo esforo gasto em um programa so gastos aps ter sido entregue ao cliente pela 1 vez
Um programa em funcionamento apenas parte de um de software, que inclui os itens produzidos durante sua construo e manuteno do software
Mitos do Software
Mitos do profissional
A Engenharia de Software vai nos fazer criar uma documentao volumosa e desnecessria, que certamente nos atrasar
Engenharia de Software no se relaciona criao de documentos Melhor qualidade leva reduo de retrabalho E menor retrabalho resulta em tempos de entrega mais rpidos
Engenharia de Software
Abordagem sistemtica, disciplinada e capaz de ser medida ao longo de um processo de construo de um software
Tipo e a ordem de execuo de atividades na construo do software Modelos grficos descritivos do software Diretrizes com base em boas prticas de projeto
Engenharia de Software
Abordagem sistemtica, disciplinada e capaz de ser medida ao longo de um processo de construo de um software
Tipo e a ordem de execuo de atividades na construo do software Modelos grficos descritivos do software Diretrizes com base em boas prticas de projeto
Processo de Software
Combinao de atividades, ferramentas e procedimentos visando o desenvolvimento ou evoluo de um software (Sommerville) Roteiro, ou conjunto de passos, previsvel que ajuda a criar a tempo um software de alta qualidade (Pressman)
Implantao Implantao
Comunicao Comunicao Planejamento Planejamento
Atividades Guarda-chuva
Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo Implantao Implantao
Acompanhamento e e controle controle de de projeto projeto de de software software Acompanhamento Gesto de de riscos riscos Gesto Garantia de de qualidade qualidade de de software software Garantia Reviso tcnica tcnica formal formal (descoberta (descoberta e e remoo remoo de de erros) erros) Reviso Medio (produto: (produto: fcil fcil de de usar, usar, manter, manter, confivel, confivel, funcional, funcional, ) ) Medio Gesto de de configurao configurao de de software software (modificaes) (modificaes) Gesto Gesto de de reusabilidade reusabilidade (modelos, (modelos, documentos documentos e e cdigo) cdigo) Gesto Preparao e e produo produo do do produto produto do do trabalho trabalho Preparao
Tempo, pessoas, pessoas, atividades atividades Tempo,
Atividades para para criar criar modelos, modelos, documentos, documentos, registros, registros, listas, listas, etc. etc. Atividades
Processo de Software
Combinao de atividades, ferramentas e procedimentos visando o desenvolvimento ou evoluo de um software (Sommerville)
Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo Implantao Implantao
Em cada atividade, aplicam-se abordagens estruturadas para desenvolvimento de software (modelos, notaes, normas, recomendaes de projeto e guias de processo)
Norma: Exemplo
Norma ISO 12119
Processo de Software
Combinao de atividades, ferramentas e procedimentos visando o desenvolvimento ou evoluo de um software (Sommerville)
Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo Implantao Implantao
Ferramentas CASE (Computer Aided Software Engineering) apiam de forma automatizada e/ou integrada atividades de um processo de software
Processo de Software
Combinao de atividades, ferramentas e procedimentos visando o desenvolvimento ou evoluo de um software (Sommerville)
Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo Implantao Implantao
Definir sequncia das atividades, produtos a entregar (modelos, documentos, prottipos, relatrios, etc.), marcos de referncia para administrar o progresso do software, etc.
Leitura Recomendada
Pressman, Roger. Engenharia de Software, Captulos 1 e 2, 6ed. McGrawHill, So Paulo, 2006 Sommerville, Ian. Engenharia de Software, Captulo 1, 8ed. Prentice Hall, So Paulo, SP, 2006 Brooks, Frederick P. No Silver Bullet: Essence and Accidents of Software Engineering, IEEE Computer, v.20, n.4, 1987, pp.10-19 Boehm, B. A View of 20th and 21st Century Software Engineering, Proceedings of the 28th ACM International Conference on Software Engineering, 2006, pp.12-29