• Nenhum resultado encontrado

Engenharia de Software - Parte 1

N/A
N/A
Protected

Academic year: 2021

Share "Engenharia de Software - Parte 1"

Copied!
70
0
0

Texto

(1)

Engenharia de Software

Fabiana Costa Guedes Unifei

(2)

Engenharia de Software - Fabiana C Guedes 2

Introdução à Engenharia de

Software

Engenharia de Software - Pressman

(3)

Engenharia de Software - Fabiana C Guedes

3

Engenharia de Software

 É a criação e a utilização de sólidos

princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe

(4)

Engenharia de Software - Fabiana C Guedes

4

Engenharia de Software

 O Software tomou o lugar do hardware

como o elemento mais difícil de ser planejado e mais perigoso de

administrar.

 As técnicas de Engenharia de

Software estão conquistando espaço e muita aceitação pelos

(5)

Engenharia de Software - Fabiana C Guedes

5

Engenharia de Software

 As boas práticas de engenharia de

software devem assegurar que o software tenha uma contribuição positiva em nossas vidas.

(6)

Engenharia de Software - Fabiana C Guedes

6

Software

Instruções que quando executadas

fornecem a função e o desempenho desejados.

Estruturas de Dados que permitem

aos programas manipular a informação.

Documentos que descrevem o uso

(7)

Engenharia de Software - Fabiana C Guedes

7

O Papel Evolutivo do Software

 O software entrega o mais importante

produto da nossa época: Informação.

 Transforma dados pessoais de modo que

possam ser mais úteis em determinado contexto.

 Proporciona os meios para obter

informações em todas as suas formas.

 Ex: Gera informação comercial para

(8)

Engenharia de Software - Fabiana C Guedes

8

Características do Software

 O Software é desenvolvido ou passa por

um projeto de engenharia, não é manufaturado no sentido clássico.

 A qualidade é conseguida por um bom

projeto;

 São dependentes de pessoas;

 Requerem a construção de um produto;  Os custos do software são concentrados

(9)

Engenharia de Software - Fabiana C Guedes

9

Características do Software

O Software não se desgasta.

 O software deteriora.

 O software passará por modificações.  A manutenção de software envolve

consideravelmente mais

complexidade do que a manutenção de hardware.

(10)

Engenharia de Software - Fabiana C Guedes

10

(11)

Engenharia de Software - Fabiana C Guedes

11

(12)

Engenharia de Software - Fabiana C Guedes

12

Características do Software

A maioria dos Software é

construído sob medida e não por

meio da junção de componentes.

(13)

Engenharia de Software - Fabiana C Guedes

13

Crise do Software

 As estimativas de prazo e de custo

freqüentemente são imprecisas.

 A produtividade não acompanha a

demanda (backlog).

 A qualidade do software às vezes é

menor que a adequada.

 Manutenção do Software existente é

(14)

Engenharia de Software - Fabiana C Guedes

14

Questionamentos:

 Por que leva tanto tempo para concluir o software?  Por que os custos de desenvolvimento são tão

altos?

 Por que não podemos achar todos os erros antes

de entregar o software aos clientes?

 Por que continuamos a ter dificuldades em avaliar o

(15)

Engenharia de Software - Fabiana C Guedes 15

(16)

Engenharia de Software - Fabiana C Guedes

16

Ciclo de Vida

 Um Ciclo de vida é utilizado para definir um

processo de desenvolvimento de software.

 Um processo de software é um arcabouço

para as tarefas que serão necessárias para construir software de alta qualidade.

 Um processo de software define a

abordagem que é adotada quando o software é elaborado.

(17)

Engenharia de Software - Fabiana C Guedes

17

Definição de Processo

 Conceito de processo:

 conjunto de passos parcialmente ordenados:  atividades, métodos, práticas e transformações;  usado para atingir uma meta;

 meta geralmente associada a um ou mais

resultados concretos finais:

 os produtos da execução do processo.

 Ciclo de vida:

(18)

Engenharia de Software - Fabiana C Guedes

18

Processo de Software

 Uma série de etapas que envolvem

atividades, restrições e recursos para alcançar a saída desejada.

 Um conjunto de procedimentos,

organizados de modo que nos permita construir produtos que satisfaçam a uma série de objetivos e padrões.

 Os processos nos permitem captar

(19)

Engenharia de Software - Fabiana C Guedes

19

Processo de Software

 O processo de desenvolvimento de

software pode ser chamado de ciclo de vida do software, pois ele descreve a ‘vida’ do produto desde a concepção até a implementação, entrega,

(20)

Engenharia de Software - Fabiana C Guedes

20

Modelo de Ciclo de Vida

 O modelo de ciclo de vida é escolhido

com base na natureza do projeto e da aplicação, nos métodos e ferramentas a serem usados, e nos controles e nos produtos intermediários e finais que

(21)

Engenharia de Software - Fabiana C Guedes

21

Modelo de Ciclo de Vida

 Independentemente do modelo de

processo que é escolhido para um

projeto de software, todos os estágios coexistem simultaneamente em algum nível de detalhe.

 A seguir são apresentados uma série

de Modelos de Ciclo de Vida utilizados.

(22)

Engenharia de Software - Fabiana C Guedes

22

Codifica-emenda

 Partindo de uma especificação, os

desenvolvedores começam a codificar, remendando à medida que os erros vão sendo descobertos.

 Vantagens: não requer gerenciamento, por

não possuir processo definido.

 Desvantagens: modelo de alto risco,

impossível de gerir e que não permite assumir compromissos confiáveis.

(23)

Engenharia de Software - Fabiana C Guedes

23

(24)

Engenharia de Software - Fabiana C Guedes

24

Sequencial Linear ou Cascata

 Os principais subprocessos são executados

em seqüência, o que permite demarcá-los com pontos de controle bem definidos.

 O desenvolvimento de um estágio deve

terminar antes que o outro comece.

 É necessário permitir que em fases

posteriores, haja revisão e alteração de resultados das fases anteriores.

 Muitos modelos complexos são variações

do modelo cascata, incorporando loops de feedback e atividades extras.

(25)

Engenharia de Software - Fabiana C Guedes

25

(26)

Engenharia de Software - Fabiana C Guedes

26

Cascata – Vantagens e

Desvantagens

 Vantagens: facilita a gerencia do processo, o que

torna o processo confiável e utilizável em projetos de qualquer escala.

 Desvantagens:

 é um processo rígido e burocrático;  baixa visibilidade para o cliente;

 não reflete o modo como o código é desenvolvido;  impõe uma estrutura de gerenciamento de projeto ao

desenvolvimento do sistema;

 o modelo não fornece orientação em como tratar as

mudanças nos produtos e atividades que ocorrerão durante o desenvolvimento.

(27)

Engenharia de Software - Fabiana C Guedes

27

Cascata – Vantagens e

Desvantagens

 Na prática, é sempre necessário permitir que,

em fases posteriores, haja revisão e alteração de resultados das fases anteriores. Projetos

reais raramente seguem o fluxo seqüencial que o modelo propõe.

 Leva a Estados de Bloqueio: alguns

membros da equipe precisam esperar que outros da equipe completem as tarefas

dependentes. O tempo em espera pode exceder o tempo produtivo.

(28)

Engenharia de Software - Fabiana C Guedes

28

Sashimi

 Variação do modelo cascata que

permite superposição entre fases e a realimentação de correções.

 Desvantagens: a superposição de

fases torna difícil o gerenciamento de projetos baseados nesse modelo de ciclo de vida.

(29)

Engenharia de Software - Fabiana C Guedes

29

(30)

Engenharia de Software - Fabiana C Guedes

30

Espiral

 O produto é desenvolvido em uma série de

iterações. Cada nova iteração corresponde a uma volta na espiral.

 Vantagens:

 Permite construir produtos em prazos curtos;  as atividades de manutenção são usadas para

definir problemas.

 Desvantagens: requer gestão muito

(31)

Engenharia de Software - Fabiana C Guedes

31

Espiral

Comunicação com o Cliente

Planejamento Análise de Risco

Arquitetura Construção e Liberação Avaliação pelo Cliente Ponto de Entrada

(32)

Engenharia de Software - Fabiana C Guedes

32

Espiral

Comunicação com o cliente:

desenvolvedor e cliente.

Planejamento: definir recursos, prazos, etc.Análise de Risco: avaliar riscos técnicos e

gerenciais

Engenharia: desenvolvimento da

representação da aplicação.

Construção e Liberação: construir, testar,

instalar e fornecer apoio ao usuário (documentação, treinamento)

(33)

Engenharia de Software - Fabiana C Guedes 33

Modelo: Espiral

Voltas no Espiral:

1.

Projetos de Desenvolvimento

Conceitual do Produto.

2.

Projetos de Desenvolvimento de

Novos Produtos.

3.

Projetos de

Melhoria do Produto

.

4.

Projetos de

Manutenção do

(34)

Engenharia de Software - Fabiana C Guedes 34

Prototipação

Coleta e Refinamento dos Requisitos Projeto rápido Construção do Protótipo Avaliação do Protótipo pelo Cliente Refinamento Protótipo Engenharia do Produto INÍCIO

(35)

Engenharia de Software - Fabiana C Guedes

35

Prototipação

 A espiral é usada não para

desenvolver o produto completo, mas para construir uma série de versões provisórias que são chamadas de protótipos.

 Os protótipos cobrem cada vez mais

requisitos, até que atinja o produto desejado.

(36)

Engenharia de Software - Fabiana C Guedes

36

Prototipação

 Vantagens:

 permite que os requisitos sejam definidos

progressivamente;

 permite que todo o sistema seja construído

rapidamente;

 apresenta alta flexibilidade e visibilidade para os

clientes.

 Desvantagens:

 Requer gestão sofisticada e o desenho deve ser

de excelente qualidade, para que a estrutura do produto não se degenere ao longo dos

(37)

Engenharia de Software - Fabiana C Guedes

37

Desenvolvimento em fases

 As duas abordagens mais populares são o

desenvolvimento incremental e o desenvolvimento iterativo.

 Desenvolvimento incremental - o sistema é

dividido em subsistemas por funcionalidades. As versões são definidas, começando com um

pequeno subsistema funcional e adicionando mais funcionalidades a cada versão.

 Desenvolvimento iterativo - entrega um sistema

completo e então muda a funcionalidade de cada subsistema a cada nova versão.

(38)

Engenharia de Software - Fabiana C Guedes

38

(39)

Engenharia de Software - Fabiana C Guedes

39

Modelo Incremental

Entrega do Incremento

Análise Projeto Codificação Teste

Análise Projeto Codificação Teste

Análise Projeto Codificação Teste

Incremento 2

Incremento 3

(40)

Engenharia de Software - Fabiana C Guedes

40

Desenvolvimento em fases

 Vantagens:

 O treinamento pode começar nas primeiras versões;  Mercados podem ser criados antecipadamente para

recursos que nunca haviam sido oferecidos;

 Versões freqüentes permitem que os

desenvolvedores resolvam problemas não previstos antecipados de uma maneira global e rápida;

 A equipe de desenvolvimento pode enfocar

diferentes áreas de especialização com diferentes versões;

(41)

Engenharia de Software - Fabiana C Guedes

41

Técnicas de Quarta Geração

Engloba um conjunto de

ferramentas de software que

possibilitam que:

1. O sistema seja especificado em

uma linguagem de alto nível.

2. O código fonte seja gerado

automaticamente a partir dessas especificações.

(42)

Engenharia de Software - Fabiana C Guedes

42

Técnicas de Quarta Geração

 Concentra-se na habilidade de

especificar software usando formas

especializadas de linguagem, ou uma notação gráfica que descreve o

problema a ser resolvido de forma que o cliente possa entender.

 O paradigma 4GT começa com um

diálogo cliente/desenvolvedor para a definição dos requisitos.

(43)

Engenharia de Software - Fabiana C Guedes

43 Ferramentas do ambiente de

desenvolvimento de software de 4GL

Linguagens não procedimentais

para consulta de banco de dados

Geração de relatórios

Manipulação de dados

Interação e definição de telas

Geração de códigos

Capacidade gráfica de alto nível

(44)

Engenharia de Software - Fabiana C Guedes

44

(45)

Engenharia de Software - Fabiana C Guedes

45

Técnicas de Quarta Geração

Vantagens e Desvantagens:

Dados coletados por empresas que

utilizam 4GT indicam que o tempo

necessário pra produzir software é

bastante reduzido em pequenas e

médias aplicações.

Em pequenas aplicações a

quantidade de análise e projeto

também é reduzida.

(46)

Engenharia de Software - Fabiana C Guedes

46

Técnicas de Quarta Geração

Vantagens e Desvantagens:

Em aplicações maiores o uso de

4GT exige tanto ou mais análise,

projeto e teste para alcançar uma

substancial redução de tempo

resultante da eliminação da

(47)

Engenharia de Software - Fabiana C Guedes

47

Conclusões

 Deveríamos considerar o processo de

desenvolvimento como um conjunto de modelos de processo, em vez de nos concentrarmos em um único

modelo ou uma única perspectiva.

 Não importa qual modelo de processo

é utilizado, muitas atividades são comuns a todos eles.

(48)

Engenharia de Software - Fabiana C Guedes

48

Conclusões

 Um modelo de processo é útil para orientar o

comportamento quando você estiver trabalhando em grupo.

 Modelos de processo detalhados nos dizem como

coordenar e colaborar enquanto se projeta e constrói um sistema.

 Um modelo de processos traz claras vantagens

para a equipe de desenvolvimento. Um bom

modelo mostra a cada membro da equipe quais atividades ocorrem, quando e por quem são

realizadas, de modo a tornar clara a divisão de tarefas.

(49)

Engenharia de Software - Fabiana C Guedes

49

Tópicos para Discussão

 Ciclo de Vida

 Processo de Desenvolvimento

 Processo de Desenvolvimento X Ciclo de

Vida

(50)

Engenharia de Software - Fabiana C Guedes 50

(51)

Engenharia de Software - Fabiana C Guedes

51

Decomposição e

Modularidade

Projetar um sistema é determinar um

conjunto de componentes e interfaces entre os componentes, que satisfaça um conjunto específico de requisitos.

• Assim como existem várias maneiras de obter e documentar os requisitos, também há vários modos de criar bons projetos.

Porém, todos os métodos de projetos

(52)

Engenharia de Software - Fabiana C Guedes

52

Decomposição e

Modularidade

Não importa qual seja a abordagem

utilizada para o projeto, cada tipo de decomposição separa o projeto em suas partes componentes,

denominadas módulos ou componentes.

(53)

Engenharia de Software - Fabiana C Guedes

53

(54)

Engenharia de Software - Fabiana C Guedes

54

Por que utilizar uma

Metodologia?

 Padronização de técnicas, ferramentas e

métodos para toda a organização;

 Provê condições de gerenciamento;

 Envolvimento de todos os participantes;

 Estabelecimento de padrões de qualidade e

de planejamento e controle de projetos;

 Facilita a manutenção;

 Documentação incremental de todo o ciclo

de vida do projeto;

(55)

Engenharia de Software - Fabiana C Guedes

55

(56)

Engenharia de Software - Fabiana C Guedes

56

Por que Modelar?

A modelagem é a parte fundamental das

atividades que levam à implantação de um bom software.

Construímos modelos para:

o Comunicar a estrutura e o comportamento

desejados do sistema;

o Visualizar e controlar a arquitetura do sistema; o Compreender e racionalizar o sistema em

elaboração;

(57)

Engenharia de Software - Fabiana C Guedes

57

Por que Modelar?

Um modelo é uma simplificação da realidade. Um modelo é uma ABSTRAÇÃO!

(58)

Engenharia de Software - Fabiana C Guedes

58

Por que Modelar?

Esquema tático de um time de futebol ou Organograma ou Pirâmide Circense ou Hierarquia de Generalização/Especialização ?

(59)

Engenharia de Software - Fabiana C Guedes

59

Definição de modelo

Modelo é a representação abstrata de um

sistema real, com a qual se pode explicar ou testar o seu comportamento em seu todo ou em partes.

• Encontramos inúmeros exemplos de modelos fora da área de informática

– Manequim de vitrine;

– Foto de imóvel;

(60)

Engenharia de Software - Fabiana C Guedes

60

Modelagem

Devemos construir modelos que

permitam produzir uma especificação que possa ser apresentada ao usuário e com ele discutida;

(61)

Engenharia de Software - Fabiana C Guedes

61

Modelagem

Cada ambiente que nos depararmos

para modelar terá suas próprias características. Por mais que

acreditemos que já conhecemos de experiências anteriores,

particularidades existirão;

Podemos partir de padrões para

acelerar mais produção de nosso resultado final.

(62)

Engenharia de Software - Fabiana C Guedes

62

Conclusão: Para que

modelar?

 Para representar o ambiente

observado;

 Servir de instrumento de

comunicação;

 Favorecer o processo de verificação

e validação;

 Servir como referencial para a

(63)

Engenharia de Software - Fabiana C Guedes

63

Por que o analista de sistemas

usa ferramentas de modelagem?

(64)

Engenharia de Software - Fabiana C Guedes

64

Por que o analista de sistemas usa

ferramentas de modelagem?

• Focalizar a atenção nas características importantes do sistema;

Discutir modificações e correções nos

requisitos do usuário com baixo custo e mínimo risco;

• Verificar se o analista conhece corretamente o ambiente do usuário e o documento de

uma tal maneira que os projetistas e

(65)

Engenharia de Software - Fabiana C Guedes

65

Características das

(66)

Engenharia de Software - Fabiana C Guedes

66

Qual Diagrama Utilizar?

Podemos utilizar qualquer modelo que

seja útil para o sistema desejado.

Diferentes projetos podem requerer

diferentes ferramentas de modelagem.

Diferentes tipos de sistemas podem

exigir modelos diferentes para realçar as características importantes.

(67)

Engenharia de Software - Fabiana C Guedes

67

Qual Diagrama Utilizar?

Muitos sistemas exigem modelos

múltiplos: cada modelo focaliza um número limitado de aspectos do

sistema, deixando de lado outros aspectos do sistema.

(68)

Engenharia de Software - Fabiana C Guedes

68

Características das

Ferramentas de Modelagem

Deve ser gráfica, com adequado

detalhamento textual de apoio;

Deve permitir que o sistema possa ser

visualizadado de forma subdividida;

Deve ter mínima redundância;

Deve ajudar o leitor a prognosticar o

comportamento do sistema;

(69)

Engenharia de Software - Fabiana C Guedes

69

Tópicos para Discussão

Decomposição e Modularidade

Por que utilizar uma Metodologia?Modelo

(70)

Engenharia de Software - Fabiana C Guedes

70

Tópicos para Discussão

Qual diagrama Utilizar?

Características das ferramentas de

Referências

Documentos relacionados

• Roles são especificações (abstratas ou não) para as portas e

Paulo Borba e Fernando Castor Centro de Informática.. Universidade Federal

Little reuse and agility, high costs.. Even

• “…Se puder verificar equipes incompletas no início da próxima aula seria uma mão

To control scope, we need to manage a list of tasks... To control time, we need to manage

Rule of Least Surprise: In interface design, always do the least surprising thing.. Rule of Silence: When a program has nothing surprising to say, it should

a) The software package-class-method perspective is related to structural representation (Figure 5). It deals with module hierarchy and how they are organized

Little modularity and agility, more deffects,   high costs..