Faculdade de Tecnologia de Mauá
Tecnologia em Informática e Negócios
Engenharia de Software
Jarbas Thaunahy Santos de Almeida
Home page: www.professorjarbas.com.br
e-mail: [email protected]
MSN: [email protected]
A importância do software
Atualmente, uma grande parte da população
mundial depende de aplicações de
software para realizar suas operações
diárias. Se alguns sistemas de uso global
deixarem de funcionar, aproximadamente
40% da população mundial sofrerá as
conseqüências do problema (Reed, 2000).
A importância do software
O
principal objetivo da engenharia de
software é, sem dúvida, melhorar a
qualidade do software. A qualidade de
produtos de software, entretanto está
fortemente relacionada à qualidade do
processo de software. (Fuggetta, 2000).
A importância do software
Para muitos engenheiros de software, a
qualidade do processo de software é tão
importante quanto à qualidade do produto.
Assim, na década de 90 houve uma grande
preocupação com a modelagem e melhorias
no processo de software. (Rocha, 2001).
Software

Consiste em um conjunto de informações
em diferentes níveis de abstração e em
um conjunto de transformações e decisões
associadas a essas transformações.
Software

A engenharia de software, embora possua
várias definições, segundo Pressman
(2000) é uma disciplina que pode ser
vista, de forma objetiva, como o
estabelecimento e o uso dos princípios
básicos da engenharia com a finalidade de
desenvolver
software
de
maneira
sistemática e econômica, resultando em
um produto confiável e eficiente.
Engenharia de software
Elementos fundamentais:

Métodos

Ferramentas

Procedimentos
Métodos
Envolvem um amplo conjunto de tarefas que incluem:
1.
2.
3.
4.
planejamento e estimativa de projeto,
análise de requisitos de software e de sistemas,
projeto da estrutura de dados,
arquitetura de programas e algoritmo de
processamento,
5. codificação,
6. teste e
7. manutenção.
Ferramentas
Proporcionam apoio automatizado ou semiautomatizado aos métodos. Atualmente,
existem ferramentas para sustentar cada
um dos métodos citados anteriormente.
Ferramentas
Quando as ferramentas são integradas de
forma que a informação criada por uma
ferramenta possa ser usada por outra, é
estabelecido um sistema de suporte ao
desenvolvimento de software chamado
engenharia de software auxiliado por
computador (CASE – Computer-Aided
Software Engineering).
Procedimentos
Constituem o elo que mantém juntos os
métodos e as ferramentas e possibilita o
desenvolvimento racional e oportuno do
software de computador.
Definem a seqüência em que os métodos
serão aplicados.
Mitos do software



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?
Visão genérica

Fases do processo de desenvolvimento

Definição

Desenvolvimento

Manutenção
Paradigmas da
engenharia de software

O ciclo de vida clássico;

Prototipação;

O modelo espiral;

Técnicas de 4ª geração.
Ciclo de vida clássico
Também chamado modelo cascata,
o
paradigma do ciclo de vida requer uma
abordagem sistemática, seqüencial ao
desenvolvimento do software, que se inicia
no nível do sistema e avança ao longo da
análise, projeto, codificação, teste e
manutenção.
Ciclo de vida clássico
Engenharia
de
sistemas
Análise
Projeto
Codificação
Teste
Manutenção
Prototipação
É um processo que capacita o desenvolvedor
a criar um modelo do software que será
implementado. Pode assumir uma das
seguintes formas:
1.
2.
3.
Protótipo em papel;
Protótipo de trabalho;
Programa existente.
Prototipação
Início
Fim
Coleta e
refinamento de
requisitos
Engenharia
Projeto
do
rápido
produto
Refinamento
Construção
do
do
protótipo
protótipo
Avaliação do
protótipo pelo
cliente
Modelo espiral
Foi desenvolvido para abranger as melhores
características tanto do ciclo de vida
clássico
como
da
prototipação,
acrescentando, ao mesmo tempo, um novo
elemento – a análise de riscos – que falta a
esses paradigmas.
Modelo espiral
Planejamento
Coleta inicial dos
requisitos e
planejamento do
projeto
Planejamento baseado
nos comentários
do cliente
Análise de riscos
Análise de riscos baseada
nos requisitos iniciais
Análise de riscos baseada
na reação do cliente
Decisão de prosseguir/
não prosseguir
Protótipo de
software inicial
Avaliação do cliente
Protótipo no
nível seguinte
Sistema construído
pela engenharia
Avaliação do cliente
Engenharia
Técnicas de 4ª geração
Abrange um amplo conjunto de ferramentas de
software que possuem algo em comum: cada
uma delas possibilita que o desenvolvedor de
software especifique alguma característica do
software num nível elevado.
A ferramenta gera então, automaticamente, o
código-fonte,
tendo
como
base
a
especificação do desenvolvedor.
Técnicas de 4ª geração
Coleta de
requisitos
Estratégia
de
“projeto”
Implementação
usando
4ª geração
Teste
Obtenção preliminar dos requisitos
Análise de
requisitos
Prototipação
Técnicas de
4ª geração
Modelo
espiral
Técnicas de
4ª geração
Projeto
Prototipação
enésima iteração
Codificação
Modelo espiral
enésima iteração
Técnicas de
4ª geração
Realização
de testes
Sistema operacional
Manutenção
Garantia de qualidade de software

Todos os métodos, ferramentas e
procedimentos trabalham na direção de
uma meta única: produzir software de alta
qualidade.

O que significa qualidade de software?
SQA – Software Quality Assurance
1.
2.
3.
4.
5.
6.
Métodos e ferramentas de análise, projeto, codificação
e teste;
Revisões técnicas formais que são aplicadas durante
cada fase de engenharia de software;
Uma estratégia de teste de múltiplas fases;
Controle da documentação de software e das
mudanças feitas nela;
Um procedimento para garantir a adequação aos
padrões de desenvolvimento de software (quando
aplicáveis);
Mecanismos de medição e divulgação.
Qualidade de software
Conformidade a requisitos funcionais e de
desempenho explicitamente declarados, a
padrões de desenvolvimento claramente
documentados e a características implícitas que
são esperadas de todo software
profissionalmente desenvolvido.
Qualidade de software
Os requisitos de software são a base a partir da qual a qualidade é
medida. A falta de conformidade aos requisitos significa falta de
qualidade.
Padrões especificados definem um conjunto de critérios de
desenvolvimento. Se os critérios não forem seguidos, o resultado
quase que seguramente será a falta de qualidade.
Há um conjunto de requisitos implícitos que freqüentemente não são
mencionados (a manutenibilidade, por exemplo).
Fatores de Qualidade de software
McCall
Manutenibilidade
Portabilidade
Flexibilidade
Reusabilidade
Testabilidade
Interoperabilidade
Revisão
do
produto
Transição
do
produto
Operação
do
produto
Corretitude / Confiabilidade / Eficiência / Integridade / Usabilidade
Revisão do produto



Manutenibilidade: o esforço exigido para localizar e reparar erros num
programa.
Flexibilidade: o esforço exigido para modificar um programa
operacional.
Testabilidade: o esforço exigido para testar um programa a fim de
garantir que ele execute sua função pretendida.
Transição do produto



Portabilidade: o esforço exigido para transferir o programa de um
ambiente de sistema de hardware e/ou software para outro.
Reusabilidade: à medida que um programa (ou partes de um
programa) pode ser reusado em outras aplicações – relacionada ao
empacotamento e escopo das funções que o programa executa.
Interoperabilidade: o esforço exigido para se acoplar um sistema a
outro.
Operação do produto





Corretitude: à medida que um programa satisfaz sua especificação e cumpre
os objetivos visados pelo cliente.
Confiabilidade: à medida que se pode esperar que um programa execute sua
função pretendida com a precisão exigida.
Eficiência: a quantidade de recursos de computação e de código exigida para
que um programa execute sua função.
Integridade: à medida que o acesso ao software ou a dados por pessoas nãoautorizadas pode ser controlado.
Usabilidade: O esforço para aprender, operar, preparar a entrada e
interpretar a saída de um programa.
Algumas Métricas utilizadas





Auditabilidade: a facilidade com que se pode checar a conformidade aos
padrões.
Inteireza: o quanto a implementação total da função requerida foi
conseguida.
Concisão: a compactação do programa em termos de linhas de código.
Consistência: o uso de técnicas de projeto e documentação uniformes ao
longo do projeto de desenvolvimento de software.
Expansibilidade: o quanto o projeto de arquitetura, procedimental e de dados
podem ser ampliados.
Algumas Métricas utilizadas


Independência de hardware: o quanto o software é desvinculado do hardware
que opera.
Instrumentação: o quanto o programa monitora sua própria operação e
identifica erros que venham a ocorrer.

Modularidade: a independência funcional dos componentes do programa.

Operabilidade: a facilidade de operação de um programa.

Simplicidade: o quanto um programa pode ser entendido sem dificuldade.
Bibliografia


REED, K. Software engineering – a new millenium? IEEE
Software, jul-ago, 2000.
FUGGETTA, A. Software process: a roadmap. In: The future of
software engineering, 2000.

PRESSMAN, Roger S. Engenharia de Software. São Paulo: Makron
Books, 1995.

ROCHA, Ana Regina Cavalcanti da. Qualidade de software. São
Paulo: Prentice Hall, 2001.
Download

Aula 1 - Jarbas Thaunahy Home