A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Adélia Barros (adelia_nassau@yahoo.com.br) Revisão Adélia Barros (adelia_nassau@yahoo.com.br)

Apresentações semelhantes


Apresentação em tema: "Adélia Barros (adelia_nassau@yahoo.com.br) Revisão Adélia Barros (adelia_nassau@yahoo.com.br)"— Transcrição da apresentação:

1 Adélia Barros (adelia_nassau@yahoo.com.br)
Revisão Adélia Barros

2 Contexto A economia de todos os países do mundo depende cada vez mais de software. Existem cada vez mais sistemas controlados por software. Os gastos com desenvolvimento de software representam uma fração significativa do PIB de muitos países.

3 Contexto O desenvolvimento de software é muitas vezes puramente artesanal; As pessoas desenvolvendo sistemas erram constantemente nas suas estimativas de custo e tempo; Vários sistemas contém muitos erros; Consertar erros muitas vezes produz mais erros; O tamanho dos sistemas cresce consideravelmente.

4 Custo do Software Custo do software geralmente domina o custo do desenvolvimento. Os custos do software de um PC são geralmente maiores do que do hardware. Software custa mais para manter do que para desenvolver! Os custos de manutenção são várias vezes maiores do que o de desenvolvimento

5 Definições de Engenharia de Software
Disciplina que se preocupa com os problemas práticos inerentes ao desenvolvimento de sistemas Não é simplesmente programação; Também não é só ciência da computação; Uso de teorias (resultados), métodos, e ferramentas na resolução de problemas.

6 Características da Engenharia de Software
Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos; Engenharia de Software usa princípios de engenharia ao invés de arte, e Engenharia de Software inclui tanto aspectos técnicos quanto não técnicos.

7 Características da Engenharia de Software
O principal objetivo da Engenharia de Software é produzir, a um custo baixo, software de qualidade. Custo é fácil de ser medido; Qualidade não é. O processo de planejamento é crucial na engenharia de software. A implementação é só uma parte do processo.

8 O que é Software? Há 20 anos, pouquíssima gente sabia explicar o que é software. Hoje, praticamente todo mundo acha que sabe ... Software não é só programas! A documentação necessária para instalar, usar, e manter os programas é parte integrante do software.

9 Atributos dos produtos de Software
Manutenibilidade Deve ser possível para o software evoluir de forma a atender a requisitos que mudam. Nível de confiança Software não deve causar prejuízo físico ou econômico no caso de uma falha. Eficiência Software não deve desperdiçar recursos do sistema. Usabilidade O software deve ter uma interface de usuário adequada e ser documentado.

10 Importância das características do produto
A importância relativa destas características depende do produto e do ambiente em que ele será usado Em alguns casos, alguns dos atributos podem ser mais importantes Em sistemas de segurança críticos, de tempo- real, os atributos chave podem ser confiança e eficiência

11 O que é software de qualidade ?
É software que “funciona” (é confiável): ele não deve falhar mais do que o especificado na documentação. É software que funciona de acordo com a sua especificação: Mesmo software que aparentemente funciona pode não estar satisfazendo a sua especificação. É software que é fácil de manter. Código bem escrito Documentação apropriada.

12 O que é Software de qualidade?
É software que funciona de maneira eficiente. Software mais eficiente não é necessariamente software que roda mais rápido ou que gasta menos memória/disco; A complexidade do código e o custo também são fatores importantes. É software que possui uma boa interface com o usuário: Muitos softwares não funcionam direito porque são difíceis de usar.

13 A Crise de Software O que é esta crise?
Métodos de desenvolvimento de software existentes não são bons o bastante para o desenvolvimento de software de grande porte.

14 A Crise de Software: principais problemas
Os grandes softwares não funcionam adequadamente; Os projetos de software estão sempre atrasados; Os custos dos projetos de desenvolvimento de software são sempre maiores do que o previsto.

15 A Crise de Software: principais problemas
Os computadores estão cada vez mais rápidos, sofisticados, e baratos; Os softwares estão cada vez maiores e mais sofisticados, e a produtividade não acompanha a demanda; Os custos com manutenção são muito altos: para sistemas com uma longa vida, eles são várias vezes maiores do que os custos de desenvolvimento.

16 A Crise de Software: outras dificuldades
Dedica-se pouco tempo à coleta de dados (requisitos dos clientes): Normalmente apenas um subconjunto das necessidades do cliente são levadas em conta ... Os profissionais estão sempre com muita pressa para começar a programar ...

17 A Crise de Software: outras dificuldades
A qualidade geralmente é suspeita ... Testes sistemáticos e tecnicamente completos raramente são feitos; A flexibilidade da maioria dos softwares também é bastante limitada; A concorrência com software barato mas sem qualidade, feito por pessoas sem qualificação adequada, é grande.

18 A Crise de Software: outras dificuldades
Não há muito interesse em se gastar tempo para se entender mais a respeito de estimativas, produtividade, precisão e eficácia de novos métodos e novas ferramentas, etc. A resistência a mudanças é grande ...

19 A Crise de Software: existe solução?
O uso de melhores técnicas, métodos, e ferramentas. Mais treinamento e educação: Pouco investimento!

20 Mitos do Software Propagam desinformação e confusão.
No passado eram tomados como verdades absolutas. É difícil mudar hábitos antigos. Existem 3 tipos de mitos: Do cliente; Administrativos, e Do profissional.

21 Mitos do Software: mitos do cliente
Uma declaração geral dos objetivos é suficiente para começar a escrever os programas: podemos preencher os detalhes mais tarde. Uma definição inicial ruim é a principal causa da maioria dos fracassos no desenvolvimento de software. Estudo baseado em 6700 sistemas feito em 1997, mostrou que os custos resultantes de um fraco entendimento do problema podem ser 200 vezes maiores que o necessário (Carper Jones, 1997).

22 Mitos do Software: mitos do cliente
As necessidades do projeto mudam continuamente mas isto não é problema pois o software é flexível. Os requisitos do software podem mudar, mas o custo da mudança varia bastante dependendo da fase em que ela ocorre: Definição x Desenvolvimento x a 1.6x Manutenção x a 100x

23 Mitos do Software: mitos administrativos
Temos um manual de padrões e procedimentos para a construção de software e isto basta! O manual é usado? Os profissionais de software sabem que ele existe? Ele reflete as técnicas mais modernas? Ele é completo?

24 Mitos do Software: mitos administrativos
Temos ferramentas de desenvolvimento de última geração, pois compramos os computadores mais novos! Em geral, ter ferramentas de auxílio ao desenvolvimento de software (ex. CASE) é mais importante do que ter a última geração em termos de hardware.

25 Mitos do Software: mitos administrativos
Estamos atrasados no prazo: podemos tirar o atraso colocando mais programadores no projeto. Normalmente isto não funciona! As novas pessoas precisam se integrar ao projeto ...

26 Mitos do Software: mitos do profissional
Assim que escrevermos o programa e ele funcionar o nosso trabalho está terminado. Em geral, mais de 70% de todo o esforço gasto num programa ou sistema ocorre depois que ele foi entregue ao cliente (manutenção);

27 Mitos do Software: mitos do profissional
Enquanto o programa não estiver funcionando não há como avaliar a sua qualidade. Revisões técnicas podem ser feitas desde o começo de um projeto e são uma das formas mais efetivas de garantia de qualidade de software.

28 Mitos do Software: mitos do profissional
A única coisa a ser entregue em um projeto bem sucedido é o programa funcionando. O programa funcionando é só uma parte; Uma boa documentação incluindo os requisitos, projeto das estruturas de dados, especificação de testes, etc. é o alicerce para um projeto bem sucedido e serve como guia de manutenção.

29 Processo de Software O que é processo de software:
É um conjunto de todas as atividades necessárias para definir, desenvolver, testar e manter um produto de software; Objetivos de um processo de desenvolvimento: Definir quais as atividades a serem executadas; Quando, como e por quem as atividades serão executadas; Prover pontos de controle para verificar o andamento do desenvolvimento; Padronizar a forma de desenvolver software em uma organização.

30 Processo de Software Através de uma visão geral um processo de software pode ser considerado assim (Uma Visão Genérica: 3 Fases): Definição - “o que” Levantamento de Requisitos; Análise de Sistemas. Desenvolvimento - “como” Projeto; Geração do Código; Teste. Implantação e Manutenção

31 Levantamento de Requisitos
Compreensão do problema; Usuários e desenvolvedores devem ter a mesma visão do problema; Definir as necessidades dos futuros usuários; Definição do Escopo; Entender o domínio do negócio que deve ser automatizado.

32 Levantamento de Requisitos
Requisitos Funcionais: Definem as funcionalidades do sistema. Requisitos não-funcionais: Declaração as características de qualidade que o sistema deve possuir; Declaração das restrições sobre o desenvolvimento do sistema. Ordenação dos requisitos.

33 Análise Entendimento geral do problema que se tem para resolver;
Divisão do sistema em módulos; Construção de modelos para representar o sistema; Definir o que o sistema proposto deve fazer; Análise de domínio Modelagem de objetos do mundo real; Análise da aplicação Identificação de objetos que só tem sentido no contexto de um sistema de software; Modelo de análise.

34 Projeto de Sistemas UML Modelar o que e como será implementado;
Definir a arquitetura que será utilizada; Diagramas para facilitar o entendimento; UML Modelo de Dados; Modelo da implementação; Componentes do sistema; Padrões de interface gráfica.

35 Implementação de Sistemas
Tradução da descrição computacional obtida na fase de projeto em código executável; Criar ou adquirir os componentes identificados na fase de projeto; Montar os componentes; Implementar o sistema novo ou modificado; Testes unitários.

36 Testes de Sistemas Realização de Testes Unitários;
Preparação do Projeto de Testes; Módulos da aplicação; Outras aplicações; Relatório de testes.

37 Implantação de Sistemas
Planejamento da Implantação; Treinamento do Usuário Final; Preparação do material para treinamento; Preparação do Ambiente de Produção; Banco de Dados; Versão do Software que será instalada. Plano para atendimento na fase de garantia; Preparação do “HelpDesk”.

38 Manutenção Processo geral de modificação de um sistema depois de ter sido colocado em uso; Tipos de Manutenção Para reparar defeitos; Para adaptar o software a ambiente operacional diferente; Para fazer acréscimo de funcionalidade; Melhorar o desempenho.

39 Modelos de Processo

40 Modelo de Processo de Software
Principais modelos ou processos: Modelo clássico (ou em cascata); Modelos Evolucionários Modelo de Prototipação ( Descartáveis ); Incremental ( Exploratório ); Espiral ( Exploratório ).

41 Processo de Software – Modelo Cascata
Também conhecido como ciclo de vida clássico ou Modelo Cascata: Modelo mais antigo e mais usado; Modelado em função do ciclo de engenharia convencional; Requer uma abordagem sistemática e seqüencial para o desenvolvimento de um software;

42 Processo de Software – Modelo Cascata
Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção

43 Modelo Cascata: vantagens
Os gerentes de projetos de software aceitaram o modelo entusiasticamente porque: Oferece uma maneira de tornar o processo mais visível. Facilita o planejamento. Fixa pontos específicos para a escrita de relatórios.

44 Modelo Cascata: vantagens
Apropriado para projetos que possuem uma definição estável do produto e tecnologia bastante conhecida Ex. porte de algum produto existente para uma nova plataforma. Apropriado também para projetos com requisitos estáveis e bem entendidos mas de realização complexa. Minimiza sobrecarga de planejamento, uma vez que todo o planejamento é feito no início.

45 Modelo Cascata: Problemas
Projetos reais raramente seguem o fluxo de seqüencial proposto; É difícil estabelecer todos os requisitos no começo do projeto na qual existe uma incerteza natural quanto a esses requisitos; Uma versão do software só vai ficar pronto em um ponto tardio do desenvolvimento; Assim se houver algum erro crasso não detectado na análise ou projeto o resultado pode ser desastroso; Há muitos estágios bloqueantes que permitem a ociosidade dos desenvolvedores em alguns momentos.

46 Desenvolvimento evolucionário

47 Desenvolvimento evolucionário
Idéia geral: Desenvolvimento da primeira versão do sistema o mais rápido possível; Modificações sucessivas até que o sistema seja considerado adequado; Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários. Adequado para o desenvolvimento de sistemas onde é difícil ou impossível de se fazer uma especificação detalhada do sistema;

48 Desenvolvimento evolucionário
Modelos Evolucionários Incremental ( Exploratório ); Modelo de Prototipação ( Descartáveis ); Espiral ( Exploratório ).

49 Modelo Incremental Os requisitos são primeiramente identificados e ,em seguida, as demais atividades do desenvolvimento são repetidas (nova versão do software). Exploração de Conceitos Requisitos Projeto Implementação Instalação Manutenção Versão 1..n

50 Modelo Incremental Surgiu para remediar a deficiência do modelo em cascata Cascata parte do princípio irreal de que os requisitos permanecem estáveis

51 Desenvolvimento Evolucionário: Prototipação descartável
O objetivo é entender os objetivos do sistema. Começa com requisitos vagamente entendidos. A primeira fase prevê o desenvolvimento de um programa para o usuário experimentar. No entanto, o objetivo aqui é estabelecer os requisitos do sistema. O software deve ser reimplementado na fase seguinte.

52 Desenvolvimento Evolucionário: Prototipação descartável
A construção de protótipos com os quais os usuários possam brincar é uma idéia bastante atrativa: Para sistemas grandes e complicados. Quando não existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos. Os objetivos do protótipo devem estar bem claros antes do início da codificação. Possíveis objetivos: Entender os requisitos dos usuários. Definir a interface com os usuários. Demonstrar a viabilidade do sistema para os gerentes.

53 Desenvolvimento Evolucionário: Prototipação descartável
Uma decisão importante a ser tomada é escolher o que será e o que não será parte do protótipo. Não é economicamente viável implementar todo o sistema! Os objetivos do protótipo são o ponto de partida.

54 Prototipagem: o que incluir no protótipo?
Algumas possibilidades: Implementar todas as funções do sistema mas com um número reduzido de detalhes. Implementar um subconjunto das funções, possivelmente com um número maior de detalhes. Desconsiderar requisitos associados a velocidade, espaço, confiabilidade, etc. A menos que o objetivo do protótipo seja definir a interface com o usuário, desconsiderar a parte de manipulação de erros.

55 Refinamento dos requisitos obtenção dos requisitos
Prototipação fim início construção produto Refinamento dos requisitos avaliação protótipo construção protótipo projeto rápido obtenção dos requisitos

56 Prototipação: possíveis vantagens
Protótipos contribuem para melhorar a qualidade da especificação dos futuros programas, o que leva à diminuição dos gastos com manutenção. O treinamento dos usuários pode ser feito antes do produto ficar pronto. Partes do protótipo podem ser usadas no desenvolvimento do sistema final.

57 Prototipação: possíveis desvantagens
Em geral o grande argumento contra a construção de protótipos é o custo. A construção do protótipo atrasa o início da implementação do sistema final. Atrasos são um dos maiores problemas dos projetos de software. Construir um protótipo pode não ser tão mais rápido assim do que construir o sistema final.

58 Prototipação: possíveis desvantagens
O cliente vê algo que parece ser uma versão do software desejado e não entende porque o produto precisa ser reconstruído. A tendência é o cliente exigir que pequenos acertos sejam feitos para que o protótipo se transforme no sistema final. Freqüentemente a gerência cede ... Muitas das concessões feitas na implementação do protótipo visando a construção rápida podem vir a fazer parte do sistema final. Utilização de linguagens, ferramentas, algoritmos, etc. que sejam inadequados e/ou ineficientes.


Carregar ppt "Adélia Barros (adelia_nassau@yahoo.com.br) Revisão Adélia Barros (adelia_nassau@yahoo.com.br)"

Apresentações semelhantes


Anúncios Google