Sie sind auf Seite 1von 51

Engenharia de Software

PPGCC-INF Aula 2 Prof. Renato de Freitas Bulco Neto


renato@inf.ufg.br

Sobre a aula anterior


Apresentao do Plano de Ensino
Contedo programtico Critrios de avaliao Bibliografias bsica e complementar

E na aula de hoje?
Engenharia de Software
Crise do Software Caractersticas do software

H software em quase tudo ...


Entretenimento Medicina Militar Industrial Transportes Telecomunicaes

H software em quase tudo ...


Mudanas profundas em como estudamos, fazemos compras, trabalhamos, nos divertimos e comunicamos ...

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

A (respeitada) opinio do Sommerville!

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

E o que isso tem a ver com a Engenharia de Software?

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

Era Woodstock: 19651975


Multiprogramao e sistemas multiusurios Sistemas de tempo real Sistemas gerenciadores de bancos de dados Software como produto software houses Cresce nmero de sistemas computacionais Sem mtodos, tcnicas e documentao a manuteno quase impossvel (CRISE DO SOFTWARE)

Era Moderna: 19751990


Uso generalizado de microprocessadores Redes locais e globais Sistemas distribudos Hardware de baixo custo Impacto de consumo

Ubiquidade: 4a era do software


Miniaturizao crescente Redes sem fio e de alta velocidade Dependncia total!!!

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

Software um sistema lgico


Por NO ser um sistema fsico, tangvel, o software NO fabricado no sentido clssico desenvolvido ou passa por um processo de engenharia Seus custos so concentrados na engenharia Projetos de software no podem ser geridos como projetos de fabricao Relao esforo-custo-tempo diferente

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

Curva de Falhas do Hardware


Defeitos de projeto ou de fabricao
ndice de falhas mortalidade infantil

Poeira, vibrao, maus-tratos, temperatura, umidade, ...


desgaste

tempo

Curva de Falhas Ideal do Software


Defeitos de projeto ou de lgica de programao
ndice de falhas

No suscetvel a males ambientais!!!


curva ideal tempo

Curva de Falhas Real do Software


ndice de falhas curva real

curva ideal tempo

Curva de Falhas Real do Software


mudana

Deteriora-se a cada alterao!


curva real

ndice de falhas

tempo

Curva de Falhas Real do Software


mudana

Deteriora-se a cada alterao!


curva real

ndice de falhas

tempo

Curva de Falhas Real do Software


mudana

Deteriora-se a cada alterao!


curva real

ndice de falhas

tempo

Desgaste vs. Deteriorao


Quando um componente de hardware se desgasta, substitudo por uma pea sobressalente No h peas sobressalentes de software!!! Falhas de software indicam erros no projeto ou na codificao Concluso: manuteno de software muito mais complexa que a manuteno de hardware

Crise do Software: lembra?


Designao dada ao conjunto de problemas encontrados no desenvolvimento de software
1- Impreciso nas estimativas de prazo e de custo 2- Insatisfao do cliente com o sistema concludo 3- Qualidade de software menor que a adequada 4- Dificuldade de manuteno do software

Causas da Crise do Software


Prpria caracterstica do software
Sistema lgico, que se deteriora com o tempo

Falhas na equipe de desenvolvimento


Gerentes sem experincia em software Profissionais com pouco treinamento em novas tcnicas para o desenvolvimento de software Resistncia a mudanas

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

Como estamos atrasados nos prazos, podemos adicionar mais programadores


Acrescentar pessoas em um projeto pode torn-lo ainda mais atrasado Planejar para acrescentar pessoas equipe de projeto

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

Enquanto o programa no estiver funcionando, no terei como avaliar sua qualidade

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

Tipo e ordem de atividades (1)

Tipo e ordem de atividades (2)


Obter ObterRequisitos Requisitos

Elaborar ElaborarProjeto ProjetoRpido Rpido Refinamento Refinamentodo doProttipo Prottipo

Construir ConstruirProttipo Prottipo Avaliar AvaliarProttipo Prottipo

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)

Atividades Gerais de Processo


Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo
Iniciao do do projeto projeto Iniciao Levantamento de de requisitos requisitos Levantamento Estimativas Estimativas Cronogramao e e monitorao monitorao Cronogramao Anlise de de requisitos requisitos Anlise Projeto Projeto Gerao de de cdigo cdigo Gerao Teste Teste Modelagem Modelagem Construo Construo Implantao Implantao

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)

Modelo e Notao: Exemplo


Diagrama de classes da linguagem UML

Norma: Exemplo
Norma ISO 12119

Guia de Processo: Exemplo

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.

Exemplo de modelo de processo


Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo Implantao Implantao

Modelos de processo genricos


Comunicao Comunicao Planejamento Planejamento Modelagem Modelagem Construo Construo Implantao Implantao

Adaptados segundo especifidades do projeto entregar a tempo e custo previsveis


Expertise, perfil e organizao da equipe Grau de envolvimento dos clientes Que produtos de trabalho so necessrios e seu respectivo grau de detalhamento Aplicao de atividades de garantia de qualidade

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

Das könnte Ihnen auch gefallen