Você está na página 1de 23

Engenharia de Software

-A noção de Engenharia de SW surgiu em 1968, em uma conferência


organizada para discutir a chamada “crise do software”.
- Essa crise tinha como origem a introdução de hardwares “mais
poderosos”. Eles tornavam viáveis softwares bem maiores e mais
complexos que os sistemas anteriores.
- A experiência inicial de construção desses sistemas mostrou que uma
abordagem informal de desenvolvimento de SW não era suficiente.
- Projetos importantes sofriam atrasos (às vezes, de alguns anos).
- Os custos eram muito maiores do que os inicialmente projetados.
- Softwares não eram confiáveis
- Eram de difícil manutenção
Novas técnicas e novos métodos eram necessários para controlar a
complexidade inerentes aos grandes sistemas de software:
Engenharia de Software
Engenharia de Software:
-disciplina da engenharia que se ocupa de todos os aspectos da
produção de software, desde os estágios iniciais de especificação do
sistema até a manutenção desse sistema, depois que ele entrou em
operação.

Isso significa:
- aplicar teorias, métodos e ferramentas nas situações apropriadas
- trabalhar de acordo com as restrições organizacionais e financeiras
procurando soluções que estejam dentro dessas restrições
- gerenciar projetos de software
- adotar uma abordagem sistemática e organizada (maneira mais
eficaz de produzir software de alta qualidade)
As técnicas e métodos da Engenharia de Software são,
atualmente, amplamente, mas não universalmente, utilizadas.
1. O Produto

- Atualmente, o SW assume um duplo papel:


➢ produto
➢ veículo para entrega do produto

-A importância do SW na nossa sociedade continua a crescer

-O programador solitário de antigamente foi substituído por uma


equipe de especialistas de software, com cada um se concentrando
numa parte da tecnologia necessária para produzir uma aplicação
complexa.
- Os mesmos questionamentos feitos ao “programador solitário”
continuam sendo feitos quando modernos sistemas baseados em
computador estão sendo construídos:
• 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 dificuldade em avaliar o progresso
enquanto o software é desenvolvido?

-Essas perguntas são manifestações da preocupação sobre o


software e a maneira pela qual ele é desenvolvido.

- Questões levaram à criação e adoção da Engenharia de Software.


1.1. Definição de Software:

i). Instruções (programas de computadores) que quando


executados fornecem a função e o desempenho desejados

ii). Estruturas de dados que permitem aos programas manipular


adequadamente a informação

iii). Documentos que descrevem a operação e o uso dos programas


1.2. Características do Software:

-O software é um elemento de um sistema lógico e não de um


sistema físico => software tem características diferentes do
hardware:

a). O software é desenvolvido (elaborado). Não é manufaturado no


sentido clássico

b). Software não “se desgasta” mas se deteriora


- A figura abaixo mostra a taxa de falhas como função do tempo
para o hardware (curva da banheira).

-HW exibe taxas de falha altas no início de vida (defeitos de


projeto ou fabricação)
- Defeitos são corrigidos e a taxa de falhas cai para um nível
constante por um certo período de tempo
- Com o passar do tempo, HW começa a se desgastar (poeira,
vibração, gradientes de temperatura, maltrato, etc.)
- O software não é suscetível aos males ambientais que causam o
desgaste do hardware.
- A curva da taxa de falhas para o software deveria tomar a “forma
idealizada” mostrada na figura abaixo.

-Nessa curva, defeitos não detectados poderão causar altas taxas


de falhas no início da vida de um programa. Idealmente, eles são
corrigidos sem a introdução de outros erros e a curva se achata,
conforme mostrado.
- A “curvareal” mostra que durante sua vida o software passará por
modificações (manutenção).

-Modificações podem introduzir novos defeitos, causando um


aumento na taxa de falhas (“dente” na curva).

- Antesque a curva possa voltar ao seu estado original de taxa de


falhas estável, outra modificação pode ser solicitada, causando
novo “dente” na curva.

-A taxa de falhas mínima começa a subir lentamente: o software


está se deteriorando devido a modificações.
c). A maior parte de software continua a ser construída sob
encomenda, apesar da indústria estar se movendo em direção a
montagem baseada em componentes.

-Quando HW é projetado e construído, faz-se uso de catálogos de


componentes digitais. Cada circuito integrado tem um código de
componente, uma função definida e validada, uma interface bem
delineada e um conjunto padrão de integração. Depois que cada
componente é selecionado, ele pode ser requisitado do estoque.

-No mundo do software, isso é algo que está apenas começando


em ampla escala, apesar de alguns casos antigos de “reuso”:
. bibliotecas de subrotinas científicas – reusam algoritmos
(domínio de aplicação limitado)
- Atualmente, visão de reuso foi ampliada para abranger não
apenas algoritmos mas também estruturas de dados (interface
gráfica)
O Processo
O que é Processo de Software?
é um arcabouço (framework) das tarefas requeridas para
construir software de alta qualidade

“Processo” = Engenharia de Software ?


-A resposta é “sim” e “não”
- Processo de SW define a abordagem que é adotada qdo o SW
é elaborado
- Engenharia de Software engloba também as tecnologias,
como métodos técnicos e ferramentas
Uma Definição para Engenharia de SW

Eng. de SW é a criação e a utilização de sólidos princípios de engenharia


a fim de obter software:
1. de alta qualidade
2. de maneira econômica
3. que seja confiável
4. que trabalhe eficientemente em máquinas reais
5. que seja entregue no prazo
6. que satisfaça o cliente
1/6

É uma Tecnologia em Camadas

ferramentas
métodos
processo
foco na qualidade
1/5

Eng. de SW: Visão Genérica


- Para realizar a engenharia de software um processo
deve ser definido.

- Características genéricas de um processo:

1. Fase de Definição

2. Fase de Desenvolvimento

3. Fase de Manutenção
2/5

Eng. de SW: Visão Genérica


1. Fase de Definição: se concentra no “quê”, i.e., identifica:
a. que informação deve ser processada
b. que função e desempenho são desejados
c. que comportamento deve ser esperado do sistema
d. que interfaces devem ser estabelecidas
e. que restrições de projeto existem
f. que critérios de validação são necessários

- Nessa fase, os requisitos-chave do sistema e do


software são identificados.
- Três tarefas principais ocorrerão:
i). Engenharia de sistemas ou de informação
ii). Planejamento do projeto
iii). Análise de requisitos
3/5

Eng. de SW: Visão Genérica


2. Fase de Desenvolvimento: focaliza o “como”, i.e., define:
a. como os dados devem ser estruturados
b. como a função deve ser implementada
c. como os detalhes procedimentais devem ser
implementados
d. como as interfaces devem ser caracterizadas
e. como o projeto deve ser traduzido em uma linguagem
de programação
f. como o teste vai ser realizado

- Três tarefas técnicas específicas ocorrerão:


i). Projeto do Software
ii). Geração de Código
iii). Teste de Software
4/5
Eng. de SW: Visão Genérica
3. Fase de Manutenção: focaliza as modificações.

Quatro tipos de modificações são encontradas durante essa


fase:
a. Manutenção Corretiva: modifica o software para corrigir
defeitos
b. Manutenção adaptativa: modifica o software para acomodar
mudanças no seu ambiente externo (CPU, S.O., etc)
c. Manutenção de Aperfeiçoamento: aprimora o software além
dos requisitos funcionais originais (cliente/usuário reconhece
funções adicionais que trarão benefícios, à medida que o
software é usado).
d. Manutenção Preventiva: faz modificações nos programas de
modo que eles possam ser mais facilmente corrigidos,
adaptados e melhorados.
5/5
Eng. de SW: Visão Genérica
As fases anteriores são complementadas
por atividades guarda-chuva:

• Controle e Rastreamento do
Projeto
• Revisões Técnicas Formais
• Garantia de Qualidade
• Gerenciamento de Configuração
• Produção e Preparação de
Documentos
• Gerenciamento de Reusabilidade
• Medição
• Gerenciamento de Risco
- Essas atividades são aplicadas ao longo do processo de
software.
1/5

Processo de Software
Para resolver problemas reais, um engenheiro de
SW deve incorporar uma estratégia de
desenvolvimento que abrange as camadas de
processo, métodos e ferramentas e as fases
genéricas. Essa estratégia é referida como:

Modelo de Processo
Paradigma de Engenharia de Software
Ciclo de Vida
2/5

Processo de Software

◼ É escolhido com base:

– na natureza do projeto e da aplicação


– nos métodos e ferramentas a serem
utilizados
– nos controles e produtos que precisam ser
entregues
3/5

Processo de Software
Todo desenvolvimento de software pode ser
caracterizado como um ciclo de solução de
problema, composto de 4 estágios:
definição do
problema
situação desenvolvimento
atual técnico

integração
da solução
4/5

Processo de Software

- Situação Atual: representa o estado atual “das coisas”

- Definição do Problema: identifica o problema específico a ser


resolvido

- Desenvolvimento Técnico: resolve o problema aplicando


alguma tecnologia

- Integração da Solução: entrega os resultados (documentos,


programas, dados, nova função de negócios, novo produto)
Modelos de Processo de Software
Alguns Modelos de Processo:
Modelo Seqüencial Linear
Modelo de Prototipação
Modelo RAD
Modelo Incremental
Modelo Espiral
Modelo de Desenvolvimento Baseado em Componentes
Modelo de Desenvolvimento Concorrente
Modelo de Métodos Formais
Modelos de Processos Ágeis (Scrum, XP, ...)

Você também pode gostar