Unidade 2: O Processo Parte I: Parte I: O Produto e o Processo Prof. Milton C. Marchi BASEADO EM:...
-
Upload
artur-fidalgo-pedroso -
Category
Documents
-
view
214 -
download
0
Transcript of Unidade 2: O Processo Parte I: Parte I: O Produto e o Processo Prof. Milton C. Marchi BASEADO EM:...
Unidade 2: O Processo
Parte I:Parte I:O Produto e o ProcessoO Produto e o Processo
Prof. Milton C. Marchi
BASEADO EM:Prof. Dr. Marcelo Augusto Santos Turine - 2002
DCT - [email protected]
2
Fritz Bauer - 1969
“O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter
economicamente um software que seja confiável e que funcione eficientemente em máquinas
reais”
Engenharia de Software: Definição
3
IEEE, 1993
“A aplicação de uma abordagem sistemática, disciplinada e quantificável para o
desenvolvimento, operação e manutenção do software. O estudo de abordagens e princípios a
fim de obter economicamente softwares confiáveis e que executem de forma eficiente nas
máquinas reais”
Engenharia de Software: Definição
4
Engenharia de Software: Definição Arndt Von Staa, 1987
“O desenvolvimento e a aplicação de ciência, matemática, técnicas, métodos e ferramentas
para o desenvolvimento e a manutenção econômica de sotfware de qualidade
preditível e controlável, operando de modo econômico em máquinas e ambientes reais”
5
Engenharia de Software
ENGENHARIA DE SOFTWAREENGENHARIA DE SOFTWARE
Uma disciplina da Ciência da Computação que oferece Métodos,
Técnicas e Ferramentas para desenvolver e manter softwares com
alta qualidade para a resolução de problemas
(Anneliese Mayrhauser 1990)
6
Engenharia de Software
Abrange um conjunto de três elementos fundamentais: MétodosMétodos, , FerramentasFerramentas e e Processos Processos (Procedimentos)(Procedimentos)
Possibilitar ao gerente o controle do processo de desenvolvimento Oferecer ao profissional uma base para a construção de software
de alta qualidade
7
D
Engenharia de Software: Tecnologia em Camadas
FOCO NA QUALIDADE (g.q.t)
PROCEDIMENTOS/PROCESSOS (KPA)
MÉTODOS
FERRAMENTAS
8
Engenharia de Software
MÉTODOSMÉTODOS: proporcionam os detalhes de “como fazer” para construir o software
Envolvem um amplo conjunto de tarefas ...
9
Engenharia de Software
Planejamento e estimativa de projeto Análise de requisitos de software Projeto da estrutura de dados Algoritmo de processamento Codificação Teste Manutenção
10
Engenharia de Software
FERRAMENTASFERRAMENTAS: fornecem suporte automatizado ou semi aos métodos.
Existem atualmente ferramentas para sustentar cada um dos métodos
Quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering
11
PROCEDIMENTOSPROCEDIMENTOS: constituem o elo de ligação entre os métodos e ferramentas
Seqüência em que os métodos serão aplicados Produtos (deliverables) que se exige que sejam
entregues Controles que ajudam assegurar a qualidade e
coordenar as alterações Marcos de referência que possibilitam
administrar o progresso do software
Engenharia de Software
12
ENGENHARIA DE SOFTWAREENGENHARIA DE SOFTWARE:: compreende um conjunto de etapasetapas que envolve MÉTODOS, FERRAMENTAS e PROCEDIMENTOS.
Essas etapas são citadas como CICLOS DE CICLOS DE VIDA ou MODELOS DE PROCESSO DE VIDA ou MODELOS DE PROCESSO DE SOFTWARESOFTWARE
Uma estratégia de desenvolvimento que Uma estratégia de desenvolvimento que englobe processos, métodos e ferramentas, e englobe processos, métodos e ferramentas, e as fases de desenvolvimentoas fases de desenvolvimento
Engenharia de Software
13
Desenvolvimento de software é um processo de Desenvolvimento de software é um processo de aprendizagem social e iterativoaprendizagem social e iterativo processo - diálogo em que o conhecimento é processo - diálogo em que o conhecimento é
embutido no software, interação entre usuários-embutido no software, interação entre usuários-projetistas, iterativoprojetistas, iterativo
Quando se constrói um produto é importante Quando se constrói um produto é importante seguir um conjunto de etapas (seguir um conjunto de etapas (road maproad map - - processo de software)processo de software)
Uma estrutura para realizar as tarefasUma estrutura para realizar as tarefas
Engenharia de Software
14
Engloba um PROCESSO, GERENCIAMENTO E Engloba um PROCESSO, GERENCIAMENTO E MÉTODOS TÉCNICOS, FERRAMENTASMÉTODOS TÉCNICOS, FERRAMENTAS
Engenharia é Análise, Projeto (design), Engenharia é Análise, Projeto (design), Implementação, Verificação e Gerenciamento de Implementação, Verificação e Gerenciamento de entidades técnicasentidades técnicas Definição - O QUÊ (Definição - O QUÊ (WhatWhat)) Desenvolvimento - COMO (Desenvolvimento - COMO (HowHow)) Suporte - MANUTENÇÃO (Suporte - MANUTENÇÃO (ChangeChange) - Segurança) - Segurança corretiva, adaptativa, melhoramento funcional, preventiva corretiva, adaptativa, melhoramento funcional, preventiva
(Reengenharia)(Reengenharia)
Engenharia de Software
15
Visão Profissional de QualidadeVisão Profissional de Qualidade
requisitosrequisitosPROCESSO DE CONSTRUÇÃO
PRODUTO
usuário
requisitos requisitos atendidosatendidos
PRODUTO COM QUALIDADE
16
Qualidade de Software Qualidade de Software
desenvolvedor
usuário
organização
Processode
Desenvolvimento
SOFTWARE PRODUTO
SOFTWARE COM QUALIDADE
PROCESSO DE SOFTWARE
requisitosrequisitos
requisitos requisitos atendidosatendidos
17
Por que Modelar?????
Uma empresa de software bem sucedida? Fornece software de qualidade e capaz de atender
às necessidades dos usuários Desenvolver software de maneira previsível e em
determinado período, com utilização eficiente e eficaz de recursos
Empresa com um NEGÓCIO viável
18
Por que Modelar????? Produto Principal: software capaz de
satisfazer às necessidades de seus usuários e respectivos negócios O resto é SECUNDÁRIO, mas não
IRRELEVANTE (documentos bonitos, reuniões sofisticadas, ótimos slogans, linhas de código maravilhosas, interfaces ricas, ...)
MODELAGEM é a parte central de todas as atividades que levam à implantação de um bom software
19
Por que Modelar?????
Modelos são construídos para comunicar a estrutura e o comportamento desejado do sistema. Visualizar e controlar a arquitetura. Compreender melhor o sistema. Gerenciar os riscos...
Exemplos: Construir uma casa para seu cachorro Construir uma casa para sua família (Qualidade) Construir um prédio comercial
20
Por que Modelar????? “Muitas empresas de desenvolvimento de
software começam querendo construir prédios altos, como se estivessem fazendo uma casinha de cachorro.” Sorte ajuda Pessoas certas no momento adequado e com todas
as tecnologias em alinhamento favorável.... Desenvolvimento de software de qualidade é
uma questão de Arquitetura, Processo e Ferramentas XXXXXXXXXXXXXX
21
Por que Modelar?????
Modelagem é uma técnica de engenharia aprovada e bem aceita modelos de arquitetura de casas e de grandes
prédios modelos matemáticos a fim de analisar os efeitos de
ventos e tremores de terra --> causas
O que é um MODELO?
22
Definição: Modelo Um modelo é uma simplificação da realidade.
Planos de detalhes, podem ser estruturais (organização do sistema) ou comportamentais (dinâmica do sistema)
Construímos modelos para compreender melhor o sistema que estamos desenvolvendo. ajudam a visualizar o sistema como desejamos que seja especificar a estrutura e comportamento guia para construção do sistema documentam as decisões tomadas
23
Definição: Modelo Construímos modelos de sistemas complexos porque não é
possível compreendê-los em sua totalidade. ajudam a visualizar o sistema como desejamos que seja especificar a estrutura e comportamento guia para construção do sistema documentam as decisões tomadas
Os melhores modelos estão relacionados à realidade (modelos simplificam a realidade)
Nenhum modelo único é suficiente. Conjunto de modelos independentes
24
Processo de SoftwareEstrutura comum de processo
Atividades guarda-chuva
Atividades da estrutura
Conjunto de tarefas
Tarefas
Marcos de controle
Controle de qualidade (pontos SQA)
25
Processo de Software Estrutura Comum de Processo
definição das atividades de estrutura aplicáveis a todos os projetos de software
Conjuntos de Tarefa adaptação das atividades da estrutura às
características do projeto e aos requisitos da equipe Atividades guarda-chuva
apóiam o modelo de processo (garantia de qualidade, gerenciamento de configuração, produção de documentos, etc...)
26
Processo de Software Atualmente: maturidade de processo O SEI (Software Engineering Institute)
desenvolveu um modelo de maturidade da competência (CMM - Capability Maturity Model ), que define as atividades chave requeridas nos diferentes níveis de processo
Os 5 níveis de maturidade de processo do modelo CMM (KPA - key process areas ~18) Inicial, Repetitivo, Definido, Gerenciado,
Otimizado
27
O que é o CMM? Uma estrutura que descreve os elementos elementos
chaveschaves de um processoprocesso de software eficazeficaz.
Um caminho de melhoramento evolucionáriomelhoramento evolucionário (5 níveis de maturidade) para organizações de software mudaremmudarem de um processo de software imaturo, ad hocad hoc, para um processo maduro, disciplinado.disciplinado.
28
CMM - Capability Maturity Model
Capability Maturity ModelCapability Maturity Model (Modelo de Maturidade da Competência)
Maturidade da CompetênciaMaturidade da Competência : competência em controlar o Processo de Software (desenvolvimento, gerenciamento e manutenção)
Maturidade da CompetênciaMaturidade da Competência Maturidade do Processo de SoftwareMaturidade do Processo de Software
29
Maturidade de Processo de Software A maturidade dos processosmaturidade dos processos de
software de uma organização influencia na sua capacidade de atingir metas de custocusto, qualidadequalidade e cronogramacronograma
A qualidade do processo de softwarequalidade do processo de software pode ser analisada através do nível de nível de maturidade do processomaturidade do processo.
30
Premissa Básica Premissa básicaPremissa básica que está por baixo do trabalho da
SEISEI sobre maturidade de processo:
A qualidade de um produto é profundamente determinada pela qualidade do processo de
desenvolvimento e de manutenção usado para construí-lo.
31
INICIAL
Organizações Caóticas
REPETITIVO
Organizações Disciplinadas
DEFINIDO
Organizações Padronizadas
GERENCIADO
Organizações Previsíveis
OTIMIZADOOrganizações com Melhoria Contínua
Os 5 Níveis de Os 5 Níveis de Maturidade do CMMMaturidade do CMM
32
INICIAL
Organizações Caóticas
CMM: CMM: Nível 1 de MaturidadeNível 1 de Maturidade
• O processo de software é caracterizado como ad hoc, e ocasionalmente até mesmo caótico.
• Poucos processos são definidos e o sucesso depende de esforços individuais e heróicos.
33
REPETÍVEL
Organizações Disciplinadas
CMM: CMM: Nível 2 de MaturidadeNível 2 de Maturidade
• Sabe-se o que se faz
• Intuição dos gerentes
• Processos administrativos básicos são estabelecidos para acompanhar custo, cronograma e funcionalidade.
• A disciplina de processo está em repetir sucessos anteriores em projetos com aplicações similares.
34
DEFINIDO
Organizações Padronizadas
• Os processos de software, tanto para atividades administrativas quanto para de engenharia estão documentados, padronizados e integrados em um processo de software padrão para a organização.
• Todos os projetos usam uma versão aprovada do processo de software padrão da organização para desenvolvimento e manutenção de software.
CMM: CMM: Nível 3 de MaturidadeNível 3 de Maturidade
35
GERENCIADO
Organizações Previsíveis
• São coletadas medidas detalhadas da qualidade do processo e do produto (métricas)
• Tanto o processo de software quanto os produtos são quantitativamente compreendidos e controlados.
CMM: CMM: Nível 4 de MaturidadeNível 4 de Maturidade
36
OTIMIZADOOrganizações com Melhoria Contínua
CMM: CMM: Nível 5 de MaturidadeNível 5 de Maturidade
• Contínua melhoria de processo é possível por retornos quantitativos dos processos e das idéias e tecnologias inovadoras
37
Visão Profissional de QualidadeVisão Profissional de Qualidade
requisitosrequisitos
PROCESSO DE CONSTRUÇÃO
PRODUTO
usuáriorequisitosrequisitosatendidosatendidos
PRODUTO COM QUALIDADE
38
Modelos de Processo ou Paradigmas de Engenharia de Software Uma estratégia de desenvolvimento que
englobe processos, métodos e ferramentas, e as fases de desenvolvimento...
39
1.1. Modelo Seqüencial (ciclo de vida clássico)Modelo Seqüencial (ciclo de vida clássico)
2.2. Modelo de PrototipaçãoModelo de Prototipação
3.3. Modelo RAD (Rapid Application Development)Modelo RAD (Rapid Application Development)
4.4. Modelos EvolutivosModelos Evolutivos
1.1. Modelo Incremental e EspiralModelo Incremental e Espiral
5.5. Modelo de Espiral WinWinModelo de Espiral WinWin
6.6. Modelo de desenvolvimento ConcorrenteModelo de desenvolvimento Concorrente
7.7. Modelo de Montagem de ComponentesModelo de Montagem de Componentes
8.8. Modelo de Métodos FormaisModelo de Métodos Formais
9.9. Técnicas de 4a geraçãoTécnicas de 4a geração
10.10. Modelo do RUPModelo do RUP
Modelos de Processo
40
Escolha de um Modelo de Processo: Qual o processo de desenvolvimento será adotado? Adequação do modelo de processo à aplicação Métodos e ferramentas a serem utilizados Controles e produtos que precisam ser entregues Características dos processos: Visibilidade, Clareza,
Apoio de Ferramentas, Produtividade, Qualidade, etc.
41
Modelo de Ciclo de Vida Clássico (Cascata) modelo mais antigo e o mais amplamente usado
da engenharia de software modelado em função do ciclo da engenharia
convencional requer uma abordagem sistemática e seqüencial
para o desenvolvimento de software cada atividade é uma fase em separado. A
passagem entre fases é formal.
42
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Teste
Manutenção
Ciclo de Vida Clássico
43
Atividades do Ciclo de Vida Clássico
1- ENGENHARIA DE SISTEMASENGENHARIA DE SISTEMAS software faz parte de um sistema amplo envolve a coleta de requisitos em nível do
sistema, com uma pequena quantidade de projeto e análise de alto nível
esta visão é essencial quando o software deve fazer interface com outros elementos (hardware, pessoas e banco de dados)
44
Engenharia de Sistemas Análise de Sistemas engloba as tarefas da
engenharia de sistemas: Identificar as necessidades dos usuários executar a análise econômica e técnica estabelecer as restrições de prazo e custo um modelo arquitetônico do sistema é produzido e representações
de cada subsistema importante são desenvolvidas
PRODUTO: Especificação do Sistema - documento que forma as bases e definição do sistema para todo o trabalho de engenharia subseqüente
45
Engenharia de Sistemas Exige uma intensa comunicação entre o cliente e o
analista
O cliente deve ser capaz de entender as metas do sistema e ser capaz de especificar para o analista
O analista deve saber quais perguntas fazer, quais conselhos dar
46
2- ANÁLISE DE REQUISITOS DE SOFTWAREANÁLISE DE REQUISITOS DE SOFTWARE É o primeiro passo técnico do processo de
engenharia de software o processo de coleta dos requisitos é
intensificado e concentrado especificamente no software
tarefa de descoberta, refinamento, modelagem e especificação
escopo definido inicialmente é refinado e aperfeiçoado em detalhes
Atividades do Ciclo de Vida Clássico
47
O analista deve compreender o domínio da informação, a função, desempenho e interfaces exigidos
os requisitos (para o sistema e para o software) são documentados e revistos com o cliente
Métodos: Análise Estruturada, Análise Orientada a Objetos, Métodos Formais
PRODUTO: Especificação de Requisitos
Análise de Requisitos
48
3- PROJETOPROJETO tradução dos requisitos do software para um
conjunto de representações que podem ser avaliadas quanto à qualidade, antes que a codificação se inicie
se concentra em 4 atributos do programa: Estrutura de Dados Arquitetura de Software Detalhes Procedimentais Caracterização de Interfaces
Atividades do Ciclo de Vida Clássico
49
Projeto de Fluxo de Dados
Projeto Orientado a Objetos
Projeto
50
4- CODIFICAÇÃOCODIFICAÇÃO tradução das representações do projeto para
uma linguagem artificial resultando em instruções executáveis pelo computador
Atividades do Ciclo de Vida Clássico
51
5- TESTESTESTESConcentra-se:
nos aspectos lógicos internos do software, garantindo que todas as instruções tenham sido testadas
nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados.
Atividades do Ciclo de Vida Clássico
52
6- MANUTENÇÃOMANUTENÇÃO provavelmente o software deverá sofrer
mudanças depois que for entregue ao cliente
Caracterizada como o “iceberg”
Atividades do Ciclo de Vida Clássico
53
Tipos de Manutenção Manutenção Corretiva: diagnóstico e correção de erros Manutenção Adaptativa: adaptação do software para
acomodar mudanças em seu ambiente externo (Hardware / Software)
Manutenção Perfectiva: exigência do cliente para acréscimos funcionais e de desempenho
Manutenção Preventiva: melhorar a confiabiliade e manutenibilidade futura (técnicas de engenharia reversa e reengenharia) PAROU AQUI
Manutenção
54
Problemas com o Ciclo de Vida Clássico
projetos reais raramente seguem o fluxo seqüencial que o modelo propõe
logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural
o cliente deve ter paciência. Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento
55
Problemas com o Ciclo de Vida Clássico
Iterações e dificuldades para o planejamento e a supervisão
Congelamento de fases iniciais e comprometimento do atendimento aos requisitos reais do cliente
56
Visibilidade do processo Embora o Ciclo de Vida Clássico
tenha fragilidades, ele é significativamente melhor do que uma abordagem casual ao desenvolvimento de software
Vantagens do Ciclo de Vida Clássico
57
APROPRIADO QUANDO o cliente definiu um conjunto de objetivos
gerais para o software, mas não identificou requisitos de entrada, processamento e saída
com detalhes desenvolvedor não tem certeza da eficiência
de um algoritmo, forma da interação homem/máquina
Prototipação
58
Prototipação
Conversar com o Cliente
Construir/Revisarprotótipo
Revisão e Testepelo Cliente
59
fim
início
construção produto
refinamento protótipo
avaliação protótipo
construção protótipo
projeto rápido
obtenção dos requisitos
60
Atividades da Prototipação1-1- OBTENÇÃO DOS REQUISITOS:OBTENÇÃO DOS REQUISITOS:
desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais
2-2- PROJETO RÁPIDO:PROJETO RÁPIDO:representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída)
61
3-3- CONSTRUÇÃO PROTÓTIPOCONSTRUÇÃO PROTÓTIPO::
implementação do projeto rápidoserve como o “primeiro sistema” - recomendado que se jogue fora futuramente
4-4- AVALIAÇÃO DO PROTÓTIPO:AVALIAÇÃO DO PROTÓTIPO:
cliente e desenvolvedor avaliam o protótipo
Atividades da Prototipação
62
5-5- REFINAMENTO DOS REQUISITOS:REFINAMENTO DOS REQUISITOS:cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido.Ocorre neste ponto um processo de iteraçãoiteração que pode conduzir a atividade 1 até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito
Atividades da Prototipação
63
6-6- CONSTRUÇÃO PRODUTO:CONSTRUÇÃO PRODUTO:identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade
Atividades da Prototipação
64
Prototipação processo que possibilita que o desenvolvedor crie
um modelo do software que deve ser construído idealmente, o modelo (protótipoprotótipo) serve como um
mecanismo para identificar os requisitos de software protótipo em papel ou sistema que retrata a interação com o
usuário protótipo que implemente algumas funções exigidas
Protótipo serve como mecanismo para identificar os requisitos do software
65
cliente não sabe que o software que ele vê não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo.
não aceita bem a idéia que a versão final do software vai ser construída e “força” a utilização do protótipo como produto final
desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo.
Depois de um tempo ele familiariza com essas escolhas, e esquece que elas não são apropriadas para o produto final
Problemas com a Prototipação
66
ainda que possam ocorrer problemas, a prototipação é um ciclo de vida eficiente.
a chave é definir as regras do jogo logo no começo
o cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos
67
RAD (Rapid Application Development)
Adaptação do sequencial Modelo de desenvolvimento de software
incremental que enfatiza um ciclo de desenvolvimento bastante curto (60 a 90 dias)
Desenvolvimento em equipe (team) e modular Fases: Modelagem do Negócio, Modelagem dos
Dados, Modelagem do Processo, Geração da Aplicação, Teste e Turnover
68
Modelos EvolutivosSão iterativos ( REPETIDO, REITERADO )Desenvolvendo novas versões ...
Modelo Espiral acopla a natureza iterativa do modelo de prototipação com os
aspectos controlados e sistemáticos do modelo sequencial
Modelo Incremental combina elementos do modelo sequencial com a filosofia iterativa do
modelo de prototipação, liberação por incrementos
69
Ciclo de Vida em Espiral Engloba as melhores características do ciclo de vida Clássico como o da Prototipação, adicionando um novo elemento: a ANÁLISE DOS RISCOS
Segue a abordagem de passos sistemáticos do Ciclo de Vida Clássico incorporando-os numa estrutura iterativa, repetitiva, que reflete mais realisticamente o mundo real
Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos AQUI
70
decisão de continuar ou não
na direção de um sistema concluído
avaliação do cliente
engenharia
análise dos riscosplanejamento
71
Atividades do Ciclo de Vida em Espiral
1-1- PLANEJAMENTO:PLANEJAMENTO: determinação dos objetivos, alternativas e restrições
2-2- ANÁLISE DE RISCO: ANÁLISE DE RISCO: análise das alternativas e identificação / resolução dos riscos
3-3- CONSTRUÇÃO: CONSTRUÇÃO: desenvolvimento do produto no nível seguinte
4-4- AVALIAÇÃO DO CLIENTE: AVALIAÇÃO DO CLIENTE: avaliação do produto e planejamento das novas fases
72
Comentários sobre o Ciclo de Vida em Espiral
É uma abordagem realística para o desenvolvimento de software em grande escala.
usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva.
pode ser difícil convencer os clientes que uma abordagem "evolutiva" é controlável
exige considerável experiência na determinação de riscos e depende dessa experiência para ter
sucesso
73
A cada iteração ao redor da espiral, versões progressivamente mais completas do software são construídas
o modelo é relativamente novo e não tem sido amplamente usado
Comentários sobre o Ciclo de Vida em Espiral
74
Modelo Incremental Cada seqüência linear produz produz uma
liberação por incremento do software Exemplo: Processador de Texto Primeiro incremento: núcleo do produto Em cada incremento: entrega de um produto
operacional
75
DBC - Desenvolvimento Baseado em Componentes
Evolução da Tecnologia OO Adaptação do modelo espiral para o
desenvolvimento de software Modelo de Componentes: CORBA (Common
Object Request Broker Architecture), COM (Component Object Model - Microsoft), UML
Componentes são construídos/empacotados para serem reutilizados em diferentes aplicações (Reuso)
76
Modelo de desenvolvimento Concorrente
Engenharia concorrente (1994) - aplicações cliente/servidor
Representado esquematicamente como uma série de atividades técnicas, tarefas e os estados associados a elas
Atividades concorrentemente em diferentes estados
Ex: Atividade de Engenharia do ModeloEspiral tarefas: prototipação, análise, especificação de
requisitos e projeto
77
Modelo de Métodos Formais Atividades que conduzem a uma
especificação matemática formal Notação matemática rigorosa: especificar,
desenvolver e verificar/analisar Eliminar ambiguidade, inconsistência,
incompletitude Abordagem: engenharia de software
Cleanroom (sala limpa) Consomem tempo e custo
78
Técnicas de 4a GeraçãoConcentra-se na capacidade de se especificar o
software a uma máquina em um nível que esteja próximo à linguagem natural.
Engloba um conjunto de ferramentas de software que possibilitam que:
o sistema seja especificado em uma linguagem de sistema seja especificado em uma linguagem de alto nívelalto nível e
o código fonte seja gerado automaticamentecódigo fonte seja gerado automaticamente a partir dessas especificações
79
Técnicas de 4a Geração
Não há muito o que contestar:
Quanto mais alto o nível em que o software pode ser especificado a uma máquina, mais rapidamente o programa pode ser construído
80
Ferramentas do ambiente de desenvolvimento de software de 4a Geração
O ambiente de desenvolvimento de software que sustenta o ciclo de vida de 4a geração inclui as ferramentas: 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 capacidade de planilhas eletrônicas
81
Obtenção dos Requisitos
Estratégia de “Projeto”
Implementação usando 4GL
Testes
82
Atividades das Técnicas de 4a Geração
1- OBTENÇÃO DOS REQUISITOS:OBTENÇÃO DOS REQUISITOS: o cliente descreve os requisitos os quais são traduzidos para um protótipo operacional
o cliente pode estar inseguro quanto aos requisitos o cliente pode ser incapaz de especificar as
informações de um modo que uma ferramenta 4GL possa consumir
as 4GLs atuais não são sofisticadas suficientemente para acomodar a verdadeira "linguagem natural"
83
2- ESTRATÉGIA DE "PROJETO":ESTRATÉGIA DE "PROJETO": para pequenas aplicações é possível mover-se do passo de Obtenção dos Requisitos para o passo de Implementação usando uma linguagem de quarta geração
Para grandes projetos é necessário desenvolver uma estratégia de projeto. De outro modo ocorrerão os mesmos problemas encontrados quando se usa abordagem convencional (baixa qualidade, manutenibilidade ruim, má aceitação do cliente)
Atividades das Técnicas de 4a Geração
84
3- IMPLEMENTAÇÃO USANDO 4GL:IMPLEMENTAÇÃO USANDO 4GL: 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 4GL
4- TESTE:TESTE: 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.
Atividades das Técnicas de 4a Geração
85
Comentários sobre as Técnicas de 4a Geração
PROPONENTES:PROPONENTES: redução dramática no tempo de desenvolvimento do software (aumento de produtividade)
OPONENTESOPONENTES: as 4GL atuais não são mais fáceis de usar do que as linguagens de programação
o código fonte produzido é ineficiente a manutenibilidade de sistemas usando técnicas
4G ainda é questionável
86
Mudança na natureza de desenvolvimento de software
métodos convencionais
aplicação de técnicas de 4a
Geração
demanda global
demanda por software
1970 1980 1990 2000
87
Engenharia de Softwareuma visão genérica
O processo de desenvolvimento de software contém 3 fases genéricas, independentes do modelo de engenharia de software escolhido:
DEFINIÇÃODEFINIÇÃO DESENVOLVIMENTODESENVOLVIMENTO MANUTENÇÃOMANUTENÇÃO
88
FASE DE DEFINIÇÃO:FASE DE DEFINIÇÃO: ““o quê”o quê” será desenvolvido Análise do SistemaAnálise do Sistema:: define o papel de cada elemento num
sistema baseado em computador, atribuindo em última análise, o papel que o software desempenhará.
Planejamento do Projeto de SoftwarePlanejamento do Projeto de Software:: assim que o escopo do software é estabelecido, os riscos são analisados, os recursos são alocados, os custos são estimados, e tarefas e programação de trabalho são definidas.
Análise de RequisitosAnálise de Requisitos:: o escopo definido para o software proporciona uma direção, mas uma definição detalhada do domínio da informação e da função do software é necessária antes que o trabalho inicie.
Engenharia de Softwareuma visão genérica
89
FASE DE DESENVOLVIMENTO:FASE DE DESENVOLVIMENTO: ““como”como” o software vai ser desenvolvido
Projeto de SoftwareProjeto de Software:: traduz os requisitos do software num conjunto de representações (algumas gráficas, outras tabulares ou baseadas em linguagem) que descrevem a estrutura de dados, a arquitetura do software, os procedimentos algorítmicos e as características de interface
CodificaçãoCodificação:: as representações do projeto devem ser convertidas numa linguagem artificial (a linguagem pode ser uma linguagem de programação convencional ou uma linguagem não procedimental) que resulte em instruções que possam ser executadas pelo computador
Realização de Testes do SoftwareRealização de Testes do Software:: logo que o software é implementado numa forma executável por máquina, ele deve ser testado para que se possa descobrir defeitos de função, lógica e implementação
Engenharia de Softwareuma visão genérica
90
FASE DE MANUTENÇÃO:FASE DE MANUTENÇÃO: concentra-se nas “mudanças” que ocorrerão depois que o software for liberado para uso operacional
Correção Adaptação Melhoramento Funcional
Engenharia de Softwareuma visão genérica
91
Correção:Correção: mesmo com as melhores atividades de garantia de qualidade de software, é provável que o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir defeitos.
AdaptaçãoAdaptação:: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional e periféricos) para o qual o software foi desenvolvido provavelmente mudará. A manutenção adaptativa muda o software para acomodar mudanças em seu ambiente.
Engenharia de Softwareuma visão genérica
92
Melhoramento FuncionalMelhoramento Funcional:: a medida que o software é usado, o cliente/usuário reconhecerá funções adicionais que oferecerão benefícios.
A manutenção perfectiva estende o software para além de suas exigências funcionais originais.
Engenharia de Softwareuma visão genérica
93
ATIVIDADES DE PROTEÇÃO ATIVIDADES DE PROTEÇÃO as fases e etapas correlatas descritas são complementadas por uma série de atividades de proteção.
RevisõesRevisões:: efetuadas para garantir que a qualidade seja mantida à medida que cada etapa é concluída.
DocumentaçãoDocumentação:: é desenvolvida e controlada para garantir que informações completas sobre o software estejam disponíveis para uso posterior.
Controle das MudançasControle das Mudanças:: é instituído de forma que as mudanças possam ser aprovadas e acompanhadas.
Engenharia de Softwareuma visão genérica
94
Conclusão
ENGENHARIA DE SOFTWAREENGENHARIA DE SOFTWARE
pode ser vista como uma abordagem de desenvolvimento de software elaborada com disciplina e métodos bem definidos.
.....“a construção por múltiplas pessoas de um software de múltiplas versões” (Parnas 1987)