Você está na página 1de 50

INSTITUTO SUPERIOR POLITÉCNICO SUPERIOR DA CAÁLA

CIÊNCIAS DA COMPUTAÇÃO

Eng. Aguinaldo Sachitue


aguinaldosachitue@gmail.com

1
Conteúdo

 1-Introdução à Engenharia de Software


 2-Fundamentos Organizacionais de Sistemas de
Informação
 3-Gerência de projeto de software
 4-Gerenciamento para a qualidade de software
 5- Acompanhamento do processo de
desenvolvimento de software.
Software

1- Instruções
quando executadas produzem a função e o desempenho desejados

2 - Estruturas de Dados
possibilitam que os programas manipulem adequadamente a
informação

3 - Documentos
descrevem a operação e o uso dos programas
Características do Software

1. Desenvolvido ou projetado por engenharia, não manufaturado no


sentido clássico

2. não se desgasta mas se deteriora

3. a maioria é feita sob medida em vez de ser montada a partir de


componentes existentes
Curva de falhas para o
Hardware
Curva de falhas do Software
Aplicações do Software
BÁSICO programas de apoio a outros programas
DE TEMPO REAL monitora, analisa e controla eventos do
mundo real
COMERCIAL operações comerciais e tomadas de
decisões administrativas
CIENTÍFICO E DE algoritmos de processamento de números
ENGENHARIA
EMBUTIDO controla produtos e sistemas de mercados
industriais e de consumo
DE COMPUTADOR processamento de textos, planilhas
PESSOAL eletrônicas, diversões, etc.
DE INTELIGÊNCIA algoritmos não numéricos para resolver
ARTIFICIAL problemas que não sejam favoráveis à
computação ou à análise direta
Evolução do Software
(1950 - 1965)
 O hardware sofreu contínuas mudanças
 O software era uma arte "secundária" para a qual havia poucos
métodos sistemáticos
 O hardware era de propósito geral
 O software era específico para cada aplicação
 Não havia documentação
Evolução do Software
(1965 - 1975)
 Multiprogramação e sistemas multiusuários
 Técnicas interativas
 Sistemas de tempo real
 1a geração de SGBD’s
 Produto de software - software houses
 Bibliotecas de Software
 Cresce no de sistemas baseado em computador
 Manutenção quase impossível
..... CRISE DE SOFTWARE
Evolução do Software
(1975 - hoje)
 Sistemas distribuídos
 Redes locais e globais
 Uso generalizado de microprocessadores - produtos
inteligentes
 Hardware de baixo custo
 Impacto de consumo
..... CRISE DE SOFTWARE (aflição crônica???)
Evolução do Software

(Quarta era do software: atualidade)


atualidade
 Tecnologias orientadas o objetos
 Sistemas especialistas e software de inteligência artificial usados na
prática
 Software de rede neural artificial
 Computação Paralela
 Internet

..... CRISE DE SOFTWARE (aflição crônica???)


Crise de Software
Refere-se a um conjunto de problemas encontrados
no desenvolvimento de software:
(1) As estimativas de prazo e de custo freqüentemente são
imprecisas
“Não dedicamos tempo para coletar dados sobre o processo
de desenvolvimento de software”
“Sem nenhuma indicação sólida de produtividade, não
podemos avaliar com precisão a eficácia de novas
ferramentas, métodos ou padrões”
Crise de Software

(2) A produtividade das pessoas da área de software


não tem acompanhado a demanda por seus serviços
“Os projetos de desenvolvimento de software
normalmente são efetuados apenas com um vago indício
das exigências do cliente”
Crise de Software
(3) A qualidade de software às vezes é menos que
adequada
Só recentemente começam a surgir conceitos quantitativos
sólidos de garantia de qualidade de software
(4) O software existente é muito difícil de manter
A tarefa de manutenção devora o orçamento destinado ao
software
A facilidade de manutenção não foi enfatizada como um
critério importante
Crise de Software

estimativas de prazo e de custo 


produtividade das pessoas 
qualidade de software 
software difícil de manter 
Causas dos problemas associados à
Crise de Software

1. próprio caráter do Software


O software é um elemento de sistema lógico e não físico (produto
intangível)
Conseqüentemente, o sucesso é medido pela qualidade de uma
única entidade e não pela qualidade de muitas entidades
manufaturadas

O software não se desgasta, mas se deteriora!!!


Causas dos problemas associados à
Crise de Software

2. falhas das pessoas responsáveis pelo desenvolvimento


de Software
Gerentes sem nenhum background em software
Os profissionais da área de software têm recebido pouco
treinamento formal em novas técnicas para o
desenvolvimento de software
Resistência a mudanças.
Engenharia de Software
Definições

 Boehm: Engenharia de software envolve a


aplicação prática de conhecimento científico para o
projeto e construção de programas de computador e
a documentação associada necessária para
desenvolvê-los, operá-los e mantê-los.
Engenharia de Software
Definições

 IEEE Standard Glossary of Software Engineering


terminology: Engenharia de software é uma
abordagem sistemática para o desenvolvimento,
operação, manutenção de software

Software: programas de computador, procedimentos,


regras, documentação possivelmente associada, e
dados sobre sua operação.
Engenharia de Software
Definições

 Fairley: Engenharia de software é a disciplina


tecnologica e gerencial preocupada com a produção
sistemática e manutenção de produtos de software
que são desenvolvidos e modificados no prazo
estabelecido e dentro das estimativas de custo.
abrange um conjunto de três elementos fundamentais:
Métodos, Ferramentas e Procedimentos

Principais metas: melhorar a qualidade de produtos de software,


aumentar a produtividade do pessoal técnico e aumentar a
satisfação do cliente.
Engenharia de Software

métodos:
métodos proporcionam os detalhes de como fazer
para construir o software
Engenharia de Software

 Planejamento e estimativa de projeto


 Análise de requisitos de software e de sistemas
 Projeto da estrutura de dados
 Algoritmo de processamento
 Codificação
 Teste
 Manutenção
Engenharia de Software

ferramentas:
ferramentas dão suporte automatizado
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
Engenharia de Software

procedimentos:
procedimentos constituem o elo de
ligação entre os métodos e ferramentas
 seqüência em que os métodos serão aplicados
 produtos 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

conjunto de etapas que envolve


Métodos

ferramentas

procedimentos

Essas etapas são conhecidas como componentes de CICLO DE VIDA DE SOFTWARE


ou Processo de Software
Engenharia de Software

Alguns ciclos de vida mais conhecidos são:


 Ciclo de Vida Clássico
 Prototipação
 Modelo Espiral
 Técnicas de 4a Geração
para escolha de um Ciclo de Vida de
Software:

 natureza do projeto e da aplicação

 métodos e ferramentas a serem usados

 controles e produtos que precisam ser entregues


Engenharia de Software uma
visão genérica

O processo de desenvolvimento de software contém


3 fases genéricas, independentes do modelo de
engenharia de software escolhido:

1. DEFINIÇÃO,
DEFINIÇÃO
2. DESENVOLVIMENTO e
3. MANUTENÇÃO.
MANUTENÇÃO
Engenharia de Software uma
visão genérica

Construção Operação
Definição
“o que” Desenvolvimento Manutenção
1. Análise de “como” “mudanças”
SOFTWARE
Sistema 1. Projeto de  
PRODUTO 1. Entender
2. Planejamento  Software
do Projeto 2. Modificar
2. Codificação 3. Revalidar
3. Análise de
3. Teste
Requisitos

 Atividades de Apoio
1. Revisões

2. Documentação
3. Controle de
Mudanças
Engenharia de Software uma
visão genérica

DEFINIÇÃO : “o que” será desenvolvido.


Aná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 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
definidas.
Engenharia de Software uma visão
genérica

 Aná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 Software uma
visão genérica

DESENVOLVIMENTO:
DESENVOLVIMENTO “como” o software vai ser
desenvolvido.

 Projeto 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.
Engenharia de Software uma
visão genérica

Codificaçã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 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 Software uma
visão genérica

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 Software uma
visão genérica

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çã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 Software uma
visão genérica

Melhoramento 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 Software uma
visão genérica

Atividades de Proteção: as fases e etapas correlatas


descritas são complementadas por uma série de
atividades de proteção.
Revisões: efetuadas para garantir que a qualidade seja mantida à
medida que cada etapa é concluída.
Documentação: é desenvolvida e controlada para garantir que
informações completas sobre o software estejam disponíveis para
uso posterior.
Controle das Mudanças: é instituído de forma que as mudanças
possam ser aprovadas e acompanhadas.
Engenharia de Software uma
visão genérica

A Engenharia de Software também se preocupa com


questões gerenciais, que encontra-se do lado oposto ao
domínio da programação
Gerenciamento: necessário para coordenar as atividades
técnicas em projetos de produtos de software.
Engenharia de Software uma
visão genérica

Em geral, um produto de software inclui:


-> Código fonte, e documentação relacionada:
 documento de requisitos
 especificação do projeto
 planos de teste
 princípios de operação
 procedimentos para garantia da qualidade
Engenharia de Software uma
visão genérica

Em geral, um produto de software inclui:


-> Cogido fonte, e documentação relacionada:
 relatórios de problemas com o software
 procedimentos de manutenção
 manuais do usuário
 instruções para instalação
 auxílio para treinamento
Engenharia de Software uma
visão genérica

Qualidade de software : preocupação principal dos


gerentes de software.
-> Principal atributo de qualidade: utilidade
-> outros atributos de qualidade:
- transportabilidade
- eficiência
- clareza
- confiabilidade
Engenharia de Software uma
visão genérica

Fatore de Qualidade e Produtividade :


Fatores que influenciam a qualidade:
Habilidade Individual
Comunicação da equipe
Complexidade do produto
Notações apropriadas
Abordagens sistemáticas
controle de mudanças
Engenharia de Software uma
visão genérica

Fatore de Qualidade e Produtividade :


Fatores que influenciam a qualidade:
Adequação de treinamento
Habilidades de gerenciamento
Metas apropriadas
Entendimento do problema
Estabilidade dos requisitos
Habilidades necessárias
Engenharia de Software uma
visão genérica
Questões gerenciais
Os gerentes de software:
controlam os recursos e o ambiente no qual as atividades técnicas ocorrem.
 responsáveis pela entrega do produto no prazo e dentro das estimativas de
custo.
 devem garantir que o produto tenha os atributos funcionais e de qualidade
desejados pelo cliente.
Treinam empregados.
 desenvolvem planos e estratégias de marketing.
Engenharia de Software uma
visão genérica

Preocupações de gerenciamento de projeto:


métodos para organizar e monitorar um projeto.
técnicas de estimativa de custo.
política de alocação de recursos.
controle orçamentário.
 avaliação do progresso.
realocação de recursos.
ajustes no cronograma.
Engenharia de Software uma
visão genérica

Preocupações de gerenciamento de projeto:


estabelecer procedimentos para garantia de qualidade.
manter o controle de várias versões do produto.
facilitar a comunicação entre os membros do projeto.
comunicação com o cliente.
estabelecer contratos com o cliente.
garantir que os termos legais e contratuais do projeto sejam
cumpridos.
Engenharia de Software uma
visão genérica
Problemas na área de gerenciamento:
falta de planejamento para projetos de software.
falta de técnicas e procedimentos para selecionar gerentes de projeto.
falta de habilidade em estimar os recursos necessários para o projeto.
falta de um processo de desenvolvimento bem estabelecido.
falta de estratégias para o gerente acompanhar o progresso do projeto.
falta de padrões e técnicas para medir produtividade.
Engenharia de Software uma
visão genérica
Fatores que melhoram o gerenciamento:
treinar gerentes, e desenvolvedores de software.
estabelecer o uso de padrões, procedimentos e documentação.
analisar dados de projetos passados para avaliar métodos efetivos.
definir objetivos em termos de qualidade desejada.
definir qualidade em termos de produtos a ser entregues.
Selecionar gerentes de projetos com habilidades para gerenciamento.
Desenvolver uma maneira de avaliar os desenvolvedores de software.
Conclusão
ENGENHARIA DE SOFTWARE
pode ser vista como uma abordagem de desenvolvimento de
software elaborada com disciplina e métodos bem definidos.

Você também pode gostar