INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
1Engenharia de SoftwareEngenharia de Software
Unidade VI
Engenharia de Software
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
2Engenharia de SoftwareEngenharia de Software
HISTÓRICO
A Engenharia de Software (ES) surgiu em meados dos anos 70 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes e interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.
Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantido suas qualidades. Além disto, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
3Engenharia de SoftwareEngenharia de Software
MITOS E REALIDADES
MITOS ADMINISTRATIVOSMITOS ADMINISTRATIVOS
Mito: Já temos um manual repleto de padrões e procedimentos para a construção de software. Isso não oferecerá ao meu pessoal tudo o que eles precisam saber?
Realidade: O manual de padrões pode muito bem existir, mas será que é usado? Os profissionais de software têm conhecimento de sua existência? Ele reflete a moderna prática de desenvolvimento de software? É completo? Em muitos casos a respostas a todas estas perguntas é não.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
4Engenharia de SoftwareEngenharia de Software
MITOS E REALIDADES . . .
MITOS DO CLIENTEMITOS DO CLIENTE
Mito: Uma declaração geral dos objetivos é suficiente para se começar a escrever programas – podemos preencher os detalhes mais tarde.
Realidade: Uma definição inicial ruim é a principal causa dos fracassos dos esforços de desenvolvimento de software. Uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação é fundamental.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
5Engenharia de SoftwareEngenharia de Software
MITOS E REALIDADES . . .
MITOS DO CLIENTE . . .MITOS DO CLIENTE . . .
Mito: Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.
Realidade: É verdade que os requisitos de software se modificam, mas o impacto da mudança varia de acordo com o tempo em que ela é introduzida.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
6Engenharia de SoftwareEngenharia de Software
MITOS E REALIDADES . . .
MITOS DO PROFISSIONALMITOS DO PROFISSIONAL
Mito: Enquanto o programa não estiver funcionando não existirá maneira de avaliar sua qualidade.
Realidade: A revisão técnica formal pode ser aplicada desde o começo de um projeto.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
7Engenharia de SoftwareEngenharia de Software
MITOS E REALIDADES . . .
MITOS DO PROFISSIONAL . . .MITOS DO PROFISSIONAL . . .
Mito: A única coisa a ser entregue em um projeto bem sucedido é o programa funcionando.
Realidade: O programa funcionando é apenas uma parte de uma configuração de software. A documentação (plano, especificação de requisitos, estrutura de dados, especificação de teste, etc.) fornece um guia para facilitar a manutenção de software.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
8Engenharia de SoftwareEngenharia de Software
PARADIGMAS DA ENGENHARIA DE SOFTWARE
Não existe uma abordagem em particular que seja a melhor solução para o desenvolvimento de software, no entanto:
a combinação de métodos abrangentes para todas as fases de desenvolvimento;
a utilização de ferramentas para automatizar esses métodos;
a criação de blocos de construção mais consistentes;
a aplicação das melhores técnicas de qualidade; e,
a filosofia de coordenação, controle e administração;
darão o encaminhamento das bases da engenharia de software.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
9Engenharia de SoftwareEngenharia de Software
EVOLUÇÃO DO SOFTWARE
19501950 19601960 19701970 19801980 19901990 20002000
Os primeiros anos:Os primeiros anos:
• orientação batch
• distribuição limitada
• software customizado
A segunda era:A segunda era:
• multiusuário
• tempo real
• bancos de dados
• produto de software
• software house
A terceira era:A terceira era:
• sistemas distribuídos
• “inteligência” embutida
• hardware de baixo custo
• impacto de consumo
• microprocessadores e computadores pessoais
A quarta era:A quarta era:
• sistemas de desk-top poderosos
• tecnologias orientadas a objeto
• sistemas especialistas
• computação paralela
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
10
Engenharia de SoftwareEngenharia de Software
EVOLUÇÃO DO SOFTWARE . . .
OS PRIMEIROS ANOS:OS PRIMEIROS ANOS:
software projetado sob medida para cada aplicação;
software com distribuição relativamente limitada;
o produto software estava em sua infância;
a maior parte dos softwares era desenvolvida e usada pela própria empresa;
quem escrevia e colocava em funcionamento, também tratava dos defeitos; e,
por causa do ambiente de software personalizado, o projeto era um processo implícito, realizado no cérebro de alguém, e a documentação muitas vezes não existia.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
11
Engenharia de SoftwareEngenharia de Software
EVOLUÇÃO DO SOFTWARE . . .
A SEGUNDA ERA:A SEGUNDA ERA:
multiprogramação e sistemas multiusuários introduziram novos conceitos na interação homem-máquina;
as técnicas interativas abriram um novo mundo de aplicações e novos níveis de sofisticação de software e hardware;
sistemas de tempo real podiam coletar, analisar e transformar dados de múltiplas fontes;
os avanços da armazenagem online levaram à primeira geração de sistemas de gerenciamento de banco de dados; e,
surgimento das “software houses”.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
12
Engenharia de SoftwareEngenharia de Software
EVOLUÇÃO DO SOFTWARE . . .
A TERCEIRA ERA:A TERCEIRA ERA:
os sistemas distribuídos - múltiplos computadores, cada um executando funções concorrentemente e comunicando-se um com o outro – aumentaram a complexidade dos sistemas baseados em computador;
as redes globais e locais, as comunicações digitais e a crescente demanda de acesso “instantâneo” a dados exigem muito dos desenvolvedores de software;
uso generalizado de microprocessadores e computadores pessoais; e,
produtos inteligentes: de automóveis a forno de microondas, de robôs industriais a diagnóstico de soro sangüíneo.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
13
Engenharia de SoftwareEngenharia de Software
EVOLUÇÃO DO SOFTWARE . . .
A QUARTA ERA:A QUARTA ERA:
tecnologias orientadas a objetos;
técnicas de quarta geração;
sistemas especialistas;
inteligência artificial; e,
software de rede neural artificial abrindo possibilidades para o reconhecimento de padrões e para capacidades de processamento de informações semelhantes às humanas.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
14
Engenharia de SoftwareEngenharia de Software
EVOLUÇÃO DO SOFTWARE . . .
A QUINTA ERA (?):A QUINTA ERA (?):
a sofisticação do software ultrapassou nossa capacidade de construir um software que extraia o potencial do hardware;
a capacidade de construir programas não acompanha o ritmo da demanda de novos programas;
a capacidade de manter os programas existentes é ameaçada por projetos ruins e recursos inadequados; e,
as práticas de engenharia de software se fortalecem.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
15
Engenharia de SoftwareEngenharia de Software
PERSPECTIVA INDUSTRIAL
Por que demora tanto tempo para que os programas sejam concluídos?
Por que os custos são tão elevados?
Por que não descobrimos todos os erros antes de entregarmos o software aos nossos clientes?
Por que temos dificuldade em medir o progresso enquanto o software está sendo desenvolvido?
Essas e muitas outras perguntas são uma manifestação da preocupação relativa ao software e à maneira pela qual ele é desenvolvido, fortalecendo as práticas de engenharia de software.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
16
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE
O processo de desenvolvimento de software contém três fases genéricas independente do paradigma de software escolhido. São elas:
definição;definição;
o quê? ?
desenvolvimentodesenvolvimento; e,
como?
manutençãomanutenção.
mudanças (o quê? e como?)
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
17
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
DEFINIÇÃODEFINIÇÃO
A fase de definição focaliza o quê. Ou seja, durante a fase de definição, o desenvolvedor de software tenta identificar quais informações têm de ser processadas, qual função e desempenho são desejados, quais interfaces devem ser estabelecidas, quais restrições de projeto existem e quais critérios de validação são exigidos para se definir um sistema bem-sucedido. Esta fase apresenta as seguintes etapas:
análise de sistemaanálise de sistema;
planejamento do projeto de softwareplanejamento do projeto de software; e,
análise de requisitosanálise de requisitos.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
18
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
DEFINIÇÃO . . .DEFINIÇÃO . . .
Análise de sistemaAnálise de sistema
define o papel de cada elemento num sistema baseado em computador, atribuindo o papel que o software desempenhará.
Planejamento do projeto de softwarePlanejamento do projeto de software
uma vez definido o escopo do software, os riscos são analisados, as atividades e os recursos são definidos, os prazos são estabelecidos e os custos são estimados.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
19
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
DEFINIÇÃO . . .DEFINIÇÃO . . .
Análise de requisitosAnálise de requisitos
definição detalhada do domínio da informação e da função do software.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
20
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
DESENVOLVIMENTODESENVOLVIMENTO
A fase de desenvolvimento focaliza o como. Ou seja, o desenvolvedor de software tenta definir como a estrutura de dados e a arquitetura de software têm de ser projetadas, como os detalhes procedimentais têm de ser implementados, como projeto será traduzido numa linguagem de programação e como os testes têm de ser realizados. Esta fase apresenta as seguintes etapas:
projeto de softwareprojeto de software;
codificaçãocodificação; e,
realização de testes de softwarerealização de testes de software.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
21
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
DESENVOLVIMENTO . . .DESENVOLVIMENTO . . .
Projeto de softwareProjeto de software
traduz os requisitos do software num conjunto de representações que descrevem a estrutura de dados, a arquitetura, o procedimento algorítmico e as características de interface.
CodificaçãoCodificação
as representações do projeto devem ser convertidas numa linguagem de programação convencional ou numa linguagem não-procedimental usada no contexto do paradigma 4GT (técnicas de quarta geração).
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
22
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
DESENVOLVIMENTO . . .DESENVOLVIMENTO . . .
Realização de testes do softwareRealização de testes do software
O software deve ser testado para que se possa descobrir defeitos de função, de lógica e de implementação.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
23
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
MANUTENÇÃOMANUTENÇÃO
A fase de manutenção concentra-se nas mudanças que estão associadas à correção de erros, adaptações exigidas à medida que o ambiente do software evolui e ampliações produzidas por exigências variáveis do cliente. Esta fase apresenta as seguintes etapas:
correçãocorreção;
adaptaçãoadaptação; e,
melhoramento funcionalmelhoramento funcional.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
24
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
MANUTENÇÃOMANUTENÇÃO
CorreçãoCorreção
A manutenção corretiva muda o software para corrigir defeitos.
AdaptaçãoAdaptação
A manutenção adaptativa resulta em modificações no software a fim de acomodar mudanças em seu ambiente.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
25
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
MANUTENÇÃOMANUTENÇÃO
Melhoramento funcionalMelhoramento funcional
O melhoramento funcional estende o software para além de suas exigências funcionais originais.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
26
Engenharia de SoftwareEngenharia de Software
VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .
As fases apresentadas são completadas por uma série de atividades de proteção, conforme a seguir:
revisõesrevisões (qualidade);
documentaçãodocumentação; e,
controle de mudançascontrole de mudanças.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
27
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE
CICLO DE VIDA CLÁSSICO (modelo cascata)CICLO DE VIDA CLÁSSICO (modelo cascata)
Também conhecido como modelo cascata, o paradigma do ciclo de vida clássico requer uma abordagem sistemática, seqüencial ao desenvolvimento de software, conforme figura a seguir:
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
28
Engenharia de SoftwareEngenharia de Software
Engenharia
de Sistemas
Análise
Projeto
Teste
Manutenção
Codificação
Ciclo de vida clássico – Ciclo de vida clássico –
modelo cascatamodelo cascata
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
29
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .
engenharia de sistemas;engenharia de sistemas;
análise de requisitos de software;análise de requisitos de software;
projeto;projeto;
codificação;codificação;
teste; e,teste; e,
manutenção.manutenção.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
30
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .
Engenharia de sistemasEngenharia de sistemas
Coletar os requisitos em nível de sistema, com uma pequena quantidade de projeto e análise de alto nível.
Análise de requisitos de softwareAnálise de requisitos de software
Compreender o domínio da informação para o software, bem como a função, desempenho e interface exigidos. Os requisitos, tanto para o sistema como para o software, são documentados e revistos com o cliente.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
31
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .
ProjetoProjeto
Gerar os quatro atributos distintos do programa: estrutura de dados, arquitetura de software, detalhes procedimentais e caracterização de interface.
O projeto é documentado e torna-se parte da configuração do software.
CodificaçãoCodificação
Traduzir o projeto numa forma legível por máquina.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
32
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .
TestesTestes
Realizar testes para descobrir erros técnicos e funcionais, buscando fazer com que a entrada definida produza resultados reais compatíveis com os resultados exigidos.
ManutençãoManutenção
Reaplicar cada uma das etapas precedentes do ciclo de vida a um programa existente, sempre que ocorrerem mudanças (correções, adaptações ou melhoramentos).
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
33
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .
O modelo cascata é o paradigma mais antigo e o mais amplamente usado na engenharia de software. No entanto, os seguintes aspectos devem ser considerados:
raramente seguem o fluxo seqüencial que o modelo propõe;
necessidade de iterações trazem problemas para aplicação do paradigma;
dificuldade de acomodar a incerteza natural que existe no começo de muitos projetos;
erros descobertos tardiamente, podem ser desastrosos ao projeto.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
34
Engenharia de SoftwareEngenharia de Software
PROTOTIPAÇÃOPROTOTIPAÇÃO
Processo que capacita o desenvolvedor a criar um modelo do software que será implementado.
Pode assumir uma das três formas:
protótipo em papel ou modelo baseado em PC;protótipo em papel ou modelo baseado em PC;
protótipo de trabalhoprotótipo de trabalho; e,
programa existenteprograma existente.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
35
Engenharia de SoftwareEngenharia de Software
Protótipo em papel ou modelo baseado em PCProtótipo em papel ou modelo baseado em PC
Retrata a interação homem-máquina de uma forma que capacita o usuário a entender quanta interação ocorrerá.
Protótipo de trabalhoProtótipo de trabalho
Implementa algum subconjunto da função exigida do software desejado.
Programa existentePrograma existente
Executa parte ou toda a função desejada, mas tem outras características que serão melhoradas em um novo esforço de desenvolvimento.
PROTOTIPAÇÃO . . .PROTOTIPAÇÃO . . .
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
36
Engenharia de SoftwareEngenharia de Software
Coleta e refinamento dos
requisitos
Projeto
rápido
Con
stru
ção
do
prot
ótip
o
Avaliação do protótipo pelo
cliente
Eng
enha
ria
do
pr
odut
o
Refinam
ento
do
protótipo
Início
FimSeqüência de eventos do paradigma de prototipação
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
PROTOTIPAÇÃO . . .PROTOTIPAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
37
Engenharia de SoftwareEngenharia de Software
Ainda que possam ocorrer problemas, a prototipação é um paradigma eficiente da engenharia de software. A chave é definir-se as regras do jogo logo no começo; ou seja, o cliente e o desenvolvedor devem concordar que o protótipo seja construído para servir como um mecanismo de definição dos requisitos. Ele depois será descartado (pelo menos em parte) e o software real será projetado, levando-se em conta a qualidade e a manutenção.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
PROTOTIPAÇÃO . . .PROTOTIPAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
38
Engenharia de SoftwareEngenharia de Software
Desenvolvido para abranger as melhores características tanto do ciclo clássico como da prototipação, acrescentando, ao mesmo tempo, um novo elemento – a análise de riscos – que falta a esses paradigmas.
Análise dos riscos baseada nos requisitos iniciais
Análise dos riscos baseada na reação do cliente
Decisão de prosseguir / não prosseguir
Protótipo do software inicial
Protótipo no nível seguinte
Sistema construído pela engenharia
Avaliação do cliente
Planejamento Análise dos riscos
Avaliação do cliente Engenharia
Planejamento baseado nos comentários do cliente
Coleta inicial dos requisitos e planejamento do projeto
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
MODELO ESPIRALMODELO ESPIRAL
Na direção de um sistema concluído
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
39
Engenharia de SoftwareEngenharia de Software
O modelo representado pela espiral define quatro importantes atividades representadas pelos quatro quadrantes da figura:
planejamentoplanejamento;
análise dos riscosanálise dos riscos;
engenhariaengenharia; e,
avaliação do clienteavaliação do cliente.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
MODELO ESPIRAL . . .MODELO ESPIRAL . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
40
Engenharia de SoftwareEngenharia de Software
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
MODELO ESPIRAL . . .MODELO ESPIRAL . . .PlanejamentoPlanejamento
Mistura análise com projeto. Nesta fase determina-se os objetivos, restrições e verifica-se alternativas de projeto.
Análise de riscoAnálise de risco Nesta fase analisa-se as alternativas e verifica-se os riscos.
Decide-se seguir o projeto na mesma linha ou começar de novo.
EngenhariaEngenharia Nesta fase desenvolve-se o protótipo. A cada nova fase de
engenharia o produto aproxima-se mais do produto final. Esta fase pode incluir todo o ciclo de vida clássico.
Avaliação do clienteAvaliação do cliente O cliente avalia o produto. Os desenvolvedores verificam a
necessidade de novas fases.
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
41
Engenharia de SoftwareEngenharia de Software
O cliente avalia o trabalho de engenharia (o quadrante de avaliação do cliente) e apresenta sugestões para modificações.
Na maioria dos casos, o fluxo ocorre ao redor de uma trajetória espiral contínua, com cada trajetória movimentando os desenvolvedores para fora na direção de um modelo mais completo do sistema.
O paradigma de modelo espiral para a engenharia de software é atualmente a abordagem mais apropriada para o desenvolvimento de sistemas e de software em grande escala.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
MODELO ESPIRAL . . .MODELO ESPIRAL . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
42
Engenharia de SoftwareEngenharia de Software
O termo Técnicas de Quarta Geração abrange um amplo conjunto de ferramentas de software que têm uma coisa em comum: cada uma delas possibilita que o desenvolvedor especifique alguma característica do software em alto nível. A ferramenta gera então, automaticamente, o código-fonte, tendo como base a especificação do desenvolvedor. O paradigma da técnica de quarta geração concentra-se na capacidade de se especificar software a uma máquina em um nível que esteja próximo à linguagem natural ou de se usar uma notação que comunique uma função significativa.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃOTÉCNICAS DE QUARTA GERAÇÃO
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
43
Engenharia de SoftwareEngenharia de Software
O usuário realiza a especificação em uma linguagem de 4G, em alto nível.
A codificação propriamente dita é realizada por uma linguagem de 4G.
Uma ferramenta de 4G é responsável por transformar automaticamente a especificação em código executável.
Quanto mais alto o nível da especificação (ou seja, mais próxima da linguagem natural), mais rapidamente é gerado o produto final.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃOTÉCNICAS DE QUARTA GERAÇÃO
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
44
Engenharia de SoftwareEngenharia de Software
O ambiente de desenvolvimento de software que sustenta o ciclo de vida de quarta geração inclui:
linguagens não procedimentais para consulta de banco de dados;
ferramentas para geração de relatórios;
ferramentas para manipulação de dados;
ferramentas para definir interação e telas;
ferramentas para geração de códigos;
capacidade gráfica de alto nível; e,
capacidade de planilhas eletrônicas.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
45
Engenharia de SoftwareEngenharia de Software
Coleta de Requisitos
Estratégia de “Projeto”
Implementação Usando 4G
Teste
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
Ciclo de vida a partir das Ciclo de vida a partir das Técnicas de Quarta GeraçãoTécnicas de Quarta Geração
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
46
Engenharia de SoftwareEngenharia de Software
Coleta de requisitosColeta de requisitos
O cliente descreve os requisitos os quais são traduzidos para um protótipo operacional.
Problemas:
o cliente pode estar inseguro quanto aos requisitos;
o cliente pode ser incapaz de especificar as informações de modo que uma ferramenta de 4G possa entender; e,
as linguagens de 4G atuais não são sofisticadas suficientemente para acomodar a verdadeira linguagem natural.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
47
Engenharia de SoftwareEngenharia de Software
Estratégia de projetoEstratégia de projeto
Nesta fase normalmente é projetado como o software será feito, organizado, estruturado, etc.;
No entanto, para pequenas aplicações é possível mover-se da fase um direto para a fase três, pulando a fase de projeto. Utilizando linguagens de quarta geração, às vezes esta fase não é necessária; e,
Já para grandes projetos é sempre necessário desenvolver uma estratégia de projeto. Caso contrário ocorrerão os mesmos problemas encontrados quando se usa abordagem convencional (baixa qualidade, manutenção ruim, má aceitação do cliente, etc).
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
48
Engenharia de SoftwareEngenharia de Software
Implementação usando linguagem de 4G Implementação usando linguagem de 4G
Os resultados desejados são representados de modo que haja geração automática de código. Deve existir uma estrutura de dados com informações relevantes e que seja acessível pela 4G.
TesteTeste
O desenvolvedor deve efetuar testes e desenvolver uma documentação significativa. O software desenvolvido deve ser construído de maneira que a manutenção possa ser efetuada prontamente.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
49
Engenharia de SoftwareEngenharia de Software
ConsideraçõesConsiderações
Favoráveis Os defensores das linguagens de 4G argumentam que
por meio delas se obtém uma redução dramática no tempo de desenvolvimento do software (aumento de produtividade).
Desfavoráveis As linguagens de 4G atuais não são mais fáceis de usar
do que as linguagens de programação.
O código fonte produzido é ineficiente.
A manutenção de sistemas usando técnicas de 4G ainda é questionável.
PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .
TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS
1-M
ar/2
005
50
Engenharia de SoftwareEngenharia de Software
Unidade VI
Engenharia de Software
# F I M #