Você está na página 1de 31

ANÁLISE E PROJETO

DE SISTEMAS - APS
REVISÃO
Engenharia de Software
Conceitos Básicos

 Software:
São programas de computadores, em suas diversas formas, e
a documentação associada.
Um programa é um conjunto de soluções algorítmicas,
codificadas numa linguagem de programação, executado
numa máquina real.
 Software é um produto conceitual e lógico.
 Produtos genéricos : stand-alone. Produzidos e vendidos no
mercado.
Produtos sob encomenda : sistemas encomendados.
Engenharia de Software
Conceitos básicos

Características do Software

 Invisibilidade – Software é invisível e invisualizável


 Complexidade – Software é mais complexo do que qualquer outro
produto construídos por seres humanos
 Mutabilidade – Existe sempre uma pressão para se fazer mudanças em
um software
 Conformidade – O software deve ser desenvolvido conforme o ambiente.
Não é o ambiente que deve se adaptar ao software.
Se o software esta conforme os requisitos (o ambiente) todo o
suporte operacional deve se adaptar ao software.

[Brooks, F. No Silver Bullet]


Engenharia de Software
Conceitos Básicos

 O estabelecimento de objetivos gerais é suficiente para


se começar a escrever programas.
 Dê a uma pessoa técnica um bom livro de programação e
você terá um programador.
 Mudanças no software podem ser feitas facilmente
porque ele é "flexível".
 Até que o programa esteja "rodando" não é possível
verificarmos a sua qualidade.
 Uma vez que o programa esteja escrito e funcionando,
nosso trabalho está feito.
 Um projeto é bem sucedido se conseguirmos um
programa funcionando corretamente.
Mitos do Software [Pressman]
Engenharia de Software
Conceitos Básicos

Falhas de Software
 Problema de Gerência de Software:
– Responsáveis contrataram uma empresa
desconhecida cujo valor cobrado era menor que
os cobrados pelas empresas de renome.
– Colocaram o sistema no ar sem os devidos
testes.
– Não foi feita uma migração correta do sistema
antigo para o novo.
Engenharia de Software
Conceitos Básicos

 Bug do Milênio

 Datas no formato : dd/mm/aa


Na virada do ano 2000 -> 00 que vai ser entendido como 1900

O bug pode aparecer em harware, software (sistemas e


aplicativos), bases de dados, arquivos, scripts, enfim, onde
houver processamento de datas, ali pode estar o problema.

No caso dos computadores e programas, a solução é relativamente


simples (se não considerarmos os custos) - atualização
(upgrade) de software, hardware e utilização dos remendos
(patches) que estão sendo lançados pelos fabricantes.
Engenharia de Software
Conceitos Básicos
Desafios para a Indústria de Software
 Sistemas legados
– Sistemas antigos, mas de extrema importância para
uma organização e que funcionam bem.
Linguagens antigas – falta de pessoal
Específico de plataformas obsoletas
 Heterogeneidade
– Os sistemas são distribuídos e incluem diversidade de
hardware e plataforma operacional
 Entrega
– Existe sempre uma pressão forte para diminuir o
tempo de entrega.
Engenharia de Software
Conceitos Básicos

 Objetivos da Engenharia de Software


Aplicação de teoria, modelos, formalismos, técnicas
e ferramentas da ciência da computação e áreas
afins para o desenvolvimento sistemático de
software.

Aplicação de métodos, técnicas e ferramentas para o


gerenciamento do processo de desenvolvimento.

Produção da documentação formal destinada a


comunicação entre os membros da equipe de
desenvolvimento bem como aos usuários.
Engenharia de Software

Projeto

Um projeto é um empreendimento temporário


empreendido para alcançar um único conjunto de
objetivos.
(PMI,PMBOK Guide)
Engenharia de Software
Projeto

Projeto de TI

 Projetos de desenvolvimento de Softwares, podem


ser de desenvolvimento de um novo projeto ou a
atualização de programas existentes;
 A seleção, aquisição e implementação de pacotes de
Softwares , os quais podem incluir aspectos de
customização;
 A seleção, aquisição e implementação de Softwares,
o que pode incluir equipamento de mainframe ,
servidores, estações de trabalho e outros
equipamentos de suporte;
Engenharia de Software
Conceitos Básicos

Ciclo de Vida do Software

O ciclo de vida de um software descreve as


fases pelas quais o software passa desde a sua
concepção até ficar sem uso algum.
Engenharia de Software
Conceitos Básicos

Fases do Ciclo de Vida de Sistemas

 Fase de definição
– Análise e Especificação
– Estudo de Viabilidade
– Estimativas Planejamento

 Fase de desenvolvimento
– Design
– Implementação e integração
– Verificação e Validação
Engenharia de Software
Conceitos Básicos

Fases do Ciclo de Vida

 Fase de operação
– Distribuição, Instalação e Configuração
– Utilização e administração
– Manutenção – corretiva, evolutiva e adaptativa

 Fase de retirada
– Migração, reengenharia, engenharia reversa
Engenharia de Software
Conceitos Básicos

 Fases de Definição

Deve-se analisar os requisitos, recursos e restrições para


• apresentar soluções,
• estudar a viabilidade,
• planejar e gerenciar o desenvolvimento

a partir de estimativas e análise de riscos que se utilizam


de métricas

Esta fase encerra-se com o contrato de desenvolvimento.


Engenharia de Software
Conceitos Básicos

Fase de desenvolvimento
 Design de Software
– Design conceitual, design da interface de usuário,
design da arquitetura de software,
design de algoritmos e estruturas de dados

 • Implementação e integração
– Codificação, compilação, integração e verificação
de programas (testes, inspeção, depuração)

 • Verificação da qualidade
– Testes beta, avaliação de usabilidade, avaliação
de desempenho, etc.
Engenharia de Software
Conceitos Básicos
Fase de Operação
Distribuição e entrega
 Instalação e configuração
 Utilização
 Manutenção
– corretiva – correção de erros
– evolutiva ou adaptativa – novas versões

 Novos requisitos
- novas situações de operação – hardware
- sistemas operacionais
Engenharia de Software
Conceitos Básicos

 FASE DE RETIRADA

Evolução do software
- Sistemas legado
- Reengenharia de Software
Engenharia de Software
Conceitos

Processos de Software

Conjunto coerente de atividades para


especificar, projetar, implementar e
testar sistemas de software
Engenharia de Software
Processos

Objetivos :
 Apresentar os modelos de processo de software
 Descrever os diferentes modelos de processos e
quando eles podem ser utilizados
 Descrever em formas gerais os modelos de
processo para engenharia de requisitos,
desenvolvimento de software, testes e evolução
 Apresentar a tecnologia CASE para apoiar
atividades do processo de software
Engenharia de Software
Processos

Modelos genéricos de modelos de processo de software


 O modelo cascata
• Fases de especificação e desenvolvimento separadas e
distintas
 Desenvolvimento evolucionário
• Especificação e desenvolvimento são interfoliadas
 Desenvolvimento formal de sistemas
Um modelo matemático do sistema é transformado
formalmente em uma implementação
 Desenvolvimento baseado em reuso
O sistema é montado a partir de componentes
existentes
Engenharia de Software
Processos

Fases do modelo Cascata


 Definição e análise de requisitos
 Projeto do sistema e do software
 Implementação e testes de unidade
 Integração e testes do sistema
 Operação e manutenção

A desvantagem do modelo cascata é a dificuldade


de acomodar as mudanças após o processo ter
sido iniciado
Engenharia de Software
Modelo Cascata[sommerville]
Engenharia de Software
Processos

Problemas da fase do modelo cascata

 Particionamento inflexível do projeto em fases


distintas
 Isso torna difícil responder a requisitos do usuário que
mudam
 Portanto, esse modelo é apropriado somente quando
os requisitos são bem compreendidos
Engenharia de Software
Processos

Desenvolvimento Evolucionário
 Desenvolvimento exploratório
O objetivo é trabalhar com os clientes e evoluir um sistema
final a partir de uma especificação genérica inicial. O
desenvolvimento se inicia com as partes do sistema que estão
compreendidas.

 Fazer protótipos descartáveis


O objetivo é compreender os requisitos do sistema.
O protótipos e concentra em fazer experimentos com partes
dos requisitos que estejam mal compreendidas
Engenharia de Software
Evolucionários [summerville]
Engenharia de Software
Desenvolvimento Evolucionário

 Problemas
- Falta de visibilidade do processo
- Os sistemas freqüentemente possuem pouca estrutura

Podem ser exigidas habilidades especiais (p.ex.em


linguagens para desenvolvimento rápido)

 Aplicabilidade
-Para sistemas interativos pequenos ou de médio porte
-Para partes de sistemas grandes (p.ex., a interface com
o usuário)
-Para sistemas de vida curta
Engenharia de Software
Processos

Desenvolvimento formal de sistemas


 Baseia-se na transformação de uma especificação
matemática por meio de diferentes representações
para um programa executável

 As transformações 'preservam a corretude', de tal


forma que possa ser diretamente mostrado que o
programa está de acordo com a sua especificação

 Embutida na abordagem de desenvolvimento de


software chamada ‘Cleanroom’
Engenharia de Software
Desenvolvimento Formal
Engenharia de Software
Desenvolvimento Formal

 Problemas
Necessidade de habilidades especiais e treinamento para
aplicar a técnica
Dificuldade de especificar formalmente alguns aspectos do
sistema, tais como a interface com o usuário

 Aplicabilidade
Sistemas críticos, especialmente aqueles onde um estudo de
segurança deve ser feito antes de pôr o sistema em operação
Engenharia de Software
Processos

 Desenvolvimento orientado ao reuso

Baseia-se no reuso sistemático, onde sistemas são


integrados a partir de componentes existentes ou
sistemas COTS (Commercial-off-the-shelf)

 Estágios do processo
• Análise dos componentes
• Modificação de requisitos
• Projeto do sistema com reuso
• Desenvolvimento e integração

Esta abordagem está se tornando mais importante, mas ainda há uma


experiência limitada com ela
Engenharia de Software
Desenvolvimento orientado ao
reuso

Você também pode gostar