Introducao Engenharia de Software
Introducao Engenharia de Software
Introducao Engenharia de Software
Engenharia de Software
Sero apresentados mtodos e tcnicas para o desenvolvimento de software que abordam especificao, modelagem, arquiteturas, verificao e testes de software, bem como para o planejamento e gerenciamento do processo de desenvolvimento.
2
Engenharia de Software Esta disciplina de preocupa em sistematizar o desenvolvimento atravs de modelos, tcnicas e ferramentas para o construo de softwares.
3
Engenharia de Software
Engenharia de Software
5
Fonte: Imagens Google
O que um software?
Definies de Software de alguns livros:
1- Instrues (programas de computador) que quando exeutadas, fornecem caractersticas, funes e desempenho desejados; 2- Estruturas de dados que possibilitam a manipulao de dados transformando-os em informaes.
O que um software?
Para entender melhor necessrio notar que o sotware tem caractersticas que o tornam diferente das outras coisas que o serres humanos constroem, tornando-o um elemento do sistema lgico e no do fsico (harware) O Sotware INTANGVEL
A natureza do Software
O papel desempenhado pelo software tem passado por grandes mudanas nos ltimos 50 anos, acompanhando e se beneficiando do aperfeioamento nas arquiteturas computacionais (hardware, redes e etc);
Atualmente o software assume um duplo papel, ele um produto e ao mesmo tempo um veculo que distribui o produto mais importante da nossa era a INFORMAO! ; Independente de residir num celular ou em um servidor, o software produz, transforma, gerencia, transmite ou exibe informaes
8
A natureza do Software
Hoje a indstria de software fator dominante nas economias do mundo
As equipes de especialistas em software, concentran-se em cada uma das partes da tecnologia para desenvolver e distribuir uma aplicao complexa, substituindo os programadores solitrios de antigamente.
9
A natureza do Software
Ainda hoje mesmo com os modernos sistemas computacionais desenvolvidos so levantadas as mesmas questes de antigamente: Por que concluir um software demora tanto? Por que os custos so to altos?
A natureza do Software
As questes anteriores demonstram a preocupao com o software e a maneira de como ele mantido. Tais preocupaes tem levado a adoo das ferramentas de Engenharia de Software. Tom DeMarco em um de seus livros afirma: Em vez de perguntar por que o software custa tanto, precisamos comear perguntando: O que fizemos para tornar possvel que o software atual custe to pouco?
A resposta a esta pergunta nos ajudar a continuar com o extraordinrio nvel de realizao que tem distinguido a 11 indstria de software.
Caractersticas do Software
O Software no desenvolvido no sentido clssico de fabricao de hardware!
Caractersticas do Software
Invisibilidade Software invisvel e invisualizvel; Complexidade Software mais complexo do que qualquer outro produto construdos por seres humanos; Mutabilidade Existe sempre uma presso para se fazer mudanas em um software; Conformidade O software deve ser desenvolvido conforme o ambiente. No o ambiente que deve se adaptar ao software. Se o software esta conforme os requisitos (o ambiente) todo o suporte operacional deve se adaptar ao software.
Caractersticas do Software
14
Software de Sistema
Atendem outros programas (Compiladores, SOs, Utilitrios, Drivers), esta rea caracterizada por pesada interao com o Hardware.
Software de Aplicao
Programas sob medida que solucionam uma necessidade especfica de um negcio. (Controle de Processos em Tempo Real, Pocessamento de Transaes, Factoring).
Software Embutido
Integrado a um produto utilizado para implementar funes especficas e controlar caractersticas e funes para o usurio final (telefisores, microondas, comp. bordo automvel, tokens) 16
Software Aberto
Uma tendncia crescente que resulta na distribuio de cdigo-fonte. (SOs Bancos de Dados dentre outros), onde muitos podem contribuir no desenvolvimento. O desafio construir um cdigo fonte auto descritivo e desenvolver ferramentas de controle de verses e ferramentas 18 embutidas.
Software Legado
Softwares antigos que tem sido constantemente modificados para se adequar s novas plataformas e os requisitos de softwares de cada negcio. Tais softwares trazem suporte funes vitais do negcio e so indispensveis. muito comum um jovem engenheiro de software trabalhar num programa mais velho que ele! Geraes passadas deixaram um legado que bem sido mantido e atualizado por essa nova gerao. Tal software deve passar por reengenharia para que permanea vivel no futuro. As ferramentas da engenharia de software moderna trazem as metodologias baseadas nesta evoluo contnua. 19
Evoluo contnua: Diferente das aplicaes convencionais que evoluem ao longo de uma srie de fatores com verses planejadas cronologicamente. comum ver WebApps receberem atualizaes minuto a minuto.
22
23
A Revoluo
24
A Revoluo
25
Primeira Revoluo
26
Segunda Revoluo
27
Terceira Revoluo
28
Quarta Revoluo
29
A Revoluo
30
31
O Futuro
32
33
Curva Idealizada...
Fonte: Roger S. Presman.
Tempo
1. Durante a vida til o software passa por alteraes que induzem a erros fazendo a curva real ficar acentuada... 2. O software est se deteriorando devido s modificaes... Fica claro que o software no se desgasta, mas se deteriora...
35
1. Para reduzir a curva de deteriorao do software necessrio fazer um projeto melhor de software...
2. Os mtodos de Engenharia de Software tentam reduzir ao mximo os picos de defeitos e a inclinao da Curva Real visualizada na figura.
36
Falhas de Software
O foguete Ariane 5, 1996: O foguete explodiu 40 segundos aps a sua primeira decolagem; Prejuzo de U$ 500 milhes; Foi aproveitado um pacote de software de navegao do Ariane 4 que no tinha erros.
No mdulo Sistema de Referencia Inercial uma converso de valores de 64-bits para 16-bits causou um operando invlido que o interrompeu, a falha levou o computador de bordo a modificar a trajetria do foguete levando ruptura de juntas e isto causou a ativao da auto-destruio.
37
Falhas de Software
London Ambulance System - despacho de ambulncias em Londres, 1992.
Morte de pessoas que no foram socorridas em tempo. Responsveis contrataram uma empresa desconhecida cujo valor cobrado era menor que os cobrados pelas empresas de renome. Colocaram o sistema no ar sem os devidos testes. No foi feita uma migrao correta do sistema antigo para o novo. 38
Falhas de Software
Mquina de radioterapia com software controlador (1985 - 87). O controle de segurana feito pelo hardware em mquinas anteriores foi removido e passou a ser feito pelo software. O software falhou na tarefa de, ao mesmo tempo, manter invariantes essenciais: o feixe de eltrons e o dispositivo que controla a concentrao do feixe em nveis seguros. Diversas mortes em decorrncia de queimaduras. O programador no tinha experincia em programao concorrente.
39
Engenharia de Software
40
Engenharia de Software
uma disciplina da engenharia dedicada a todos os aspectos da produo de software; Engenheiros de software devem adotar uma abordagem sistemtica e organizada para o seu trabalho e usar tcnicas e ferramentas apropriadas, de acordo com o problema a ser resolvido, e com as restries e recursos disponveis;
Responsabilidade profissional e tica.
Fonte: Ian Sommerville 41
Engenharia de Software
Processo de desenvolvimento envolvendo anlise, design, implementao e avaliao Baseado em teoria, princpios, modelos, mtodos, tcnicas e ferramentas;
A seleo, aquisio e implementao de Softwares, o que pode incluir equipamento de mainframe , servidores, estaes de trabalho e outros equipamentos de suporte; Produtos de redes e telecomunicaes e a seleo de servios, aquisio ou implementao;
Integrao de sistemas ; Alguma combinao dos itens acima.
45
Com a falha do software podem ocorrer desde pequenos inconvenientes, at falhas catastrficas, por isso Um software deve apresentar qualidade elevada;
Com o aumento de usurios em comum, a demanda por adaptao e aperfeioamento ir aumentar, portanto O software deve ser passvel de manuteno.. 46
Um software em todas as suas formas e em todos os seus campos de aplicao, deve passar por processo de engenharia de software;
Entender o problema antes de elaborar uma soluo fundamental; Projetar atividade essencial na engenharia de software;
Ferramentas Mtodos
Processos (Metodologias) Foco na Qualidade
os mtodos e processos
O Foco na Qualidade
48
Um processo define quem est fazendo o qu, quando e como para atingir um objetivo.
Ivan Jacobson, Grady Booch e James Rumbaugh.
49
Processo Genrico de Engenharia de Software um conjunto de atividades, aes e tarefas desenvolvidas focando
atingir um objetivo de trabalho. Uma metodologia de processo de engenharia de software dividida em cinco partes: Comunicao: Levantamento de dados e requisitos; Planejamento: Desenvolvimento do Plano de Projeto de software (tarefas tcnicas, analise de riscos, recursos necessrios, cronograma de trabalho); Modelagem: Cria-se um esboo para se ter idia do todo, para entender as necessidades do projeto. (Diagrama de Caso de Uso); Construo: Gerao de Cdigo (manual ou automatizada); Emprego: O software completo ou mdulo entregue ao cliente que avalia o produto e fornece feedback;
As atividades acima so aplicadas repetidamente quantas forem as iteraes (mdulos) do projeto; A cada iterao o software se torna mais e mais completo. 51
Atividades de Apoio
Processo Genrico de Engenharia de Software Geralmente so aplicadas ao longo do processo de desenvolvimento, com o objetivo de ajudar a equipe a gerenciar, controlar, manter e gerenciar o projeto. Controle e Aconpanhamento: Avaliar andamento do projeto em relao com o plano do projeto a fim de tomar aes para cumprir o cronograma; Administrao de Riscos: Avaliao dos riscos, que possa afetar a qualidade; Revises Tcnicas: Identificar e eliminar erros antes da atividade seguinte; Gerenciamento da Configurao: Controla os efeitos das mudanas ao longo do processo; Gerenciamento da reusabilidade: Define critrios para a obteno de componentes reutilizveis no desenvolvimento.
52
Atividades de Apoio
Preparo e produo de Artefatos de Software
Sinto que uma receita consiste em apenas um tema onde o cozinheiro inteligente pode brincar, cada vez com uma variao.
Madame Benoit
53
Em seu livro How to Solve It, George Polya aponta em linha gerais a essncia da soluo de problemas e, consequentemente, a essncia da prtica da engenharia de software:
Compreender o Problema: comunicao e anlise;
54
Compreender o Problema => Compreender nem sempre assim to fcil assim, vale apena despender um tempo respondendo algumas questes:
Quem so os interessados na soluo do Problema? Que dados, funes e recursos so necessrios para resolver o problema? O pode ser dividido em partes? Pequenas partes so fceis compreender... O problema pode ser representado graficamente?
55
Planeje a Soluo => Agora que voc entende o problema (ou pensa que entende), no v a hora de comear a codificar, relaxe e faa um projeto:
Voc j viu problemas semelhantes? Existem padres que levam a uma provvel soluo? Pesquise se algum problema similar j foi resolvido? possvel dividir em subproblemas? Existem solues imediatas para eles? possvel representar uma soluo que conduza a uma implementao efetiva? possvel criar um modelo de projeto para apresentar s pessoas envolvidas?
56
Execute o Plano => O projeto elaborado serve como o mapa para o sistema que se quer construir. Pode ser que no desenrolar do desenvolvimento surjam novidades, porm o planejamento nos permitir que continuemos sem nos perder.
A soluo se adequar ao plano? O cdigo fonte pode ser atribudo ao modelo do projeto?
57
Examine o Resultado => No se pode ter certeza que a soluo seja perfeita, porm, pode-se assegurar que os testes tenham sido realizados para revelar o maior nmero de erros possveis.
possvel testar cada componente da Soluo? Foi implementada uma estratgia de testes razoveis?
Pode-se afirmar que a abordagem de George Polya simplesmente uma questo de bom senso. impressionante o quanto frequente a falta de bom senso no mundo de desenvolvimento de software.
59
Crise de software
Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:
(problemas no se limitam a softwares que no funcionam adequadamente)
frequentemente so imprecisas...
No dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software; Estimativas so feitas a olho, com resultados ruins.
60
Crise de software
Os prazos arrastam-se por meses; Causa insatisfao para o cliente e falta de confiana; Sem nenhuma indicao slida de produtividade, no podemos avaliar com preciso a eficcia de novas ferramentas, mtodos ou padres.
61
Crise de software
2- A produtividade das pessoas da rea de software no tem acompanhado a demanda por seus servios...
Os projetos de desenvolvimento de software normalmente so efetuados apenas com um vago indcio das exigncias do cliente; A comunicao entre o cliente e o desenvolvedor de software muito 62 fraca.
Crise de software
3- A qualidade de software s vezes menos que adequada...
No uso de tcnicas de teste sistemticas e completas; S recentemente comeam a surgir conceitos quantitativos slidos de garantia de qualidade de software.
63
Crise de software
4- O software existente muito difcil de manter...
A tarefa de manuteno devora o oramento destinado ao software; A facilidade de manuteno no foi enfatizada como um critrio importante;
Engenharia de Software
Esses problemas podem ser corrigidos; Abordagem de engenharia de software aliada a tcnicas e ferramentas.
64
O software um elemento de sistema lgico e no fsico. Consequentemente o sucesso medido pela qualidade de uma nica entidade e no pela qualidade de muitas entidades manufaturadas.
Os profissionais da rea de software tm recebido pouco treinamento formal em novas tcnicas para o desenvolvimento de software;
Resistncia a mudanas.
66
Gerente quando est se afogando agarra crena de um mito (mesmo que temporariamente).
68
Realidade:
Ser que o manual usado? Os profissionais sabem que ele existe? Ele reflete a prtica moderna de desenvolvimento de software? Ele completo?
69
Realidade:
O desenvolvimento de software no um processo mecnico igual manufatura.
fundamental uma descrio formal e detalhada do domnio da informao, funo, desempenho, interfaces, restries de projeto e critrios de validao.
72
atitudes
Os mitos dos profissionais da rea de programao tem resistido por mais de 50 anos.
74
Os dados da indstria indicam que entre 50 e 70% de todo esforo gasto num programa sero despendidos depois que ele for entregue pela primeira vez ao cliente..
75
A DOCUMENTAO o alicerce!
77
Concluso...
Sempre que se pensa: