Escolar Documentos
Profissional Documentos
Cultura Documentos
&OHFOIBSJBEF4PGUXBSF
PROFª. TÂNIA BARBOSA SALLES GAVA
ENGENHARIA DE SOFTWARE
SERRA
2009
2
Governo Federal
Ministro de Educação
Fernando Haddad
Pró-Reitora de Ensino
Cristiane Tenan Schlittler dos Santos
Designer Instrucional
Danielli Veiga Carneiro / José Mário Costa Júnior
Professor Especialista/Autor
Tânia Barbosa Salles Gava
CDD 005.1
DIREITOS RESERVADOS
Ifes – Instituto Federal do Espírito Santo
Av. Vitória – Jucutuquara – Vitória – ES - CEP - (27) 3331.2139
Revisão de texto:
Ilioni Augusta da Costa
Maria Madalena Covre da Silva
COPYRIGHT – É proibida a reprodução, mesmo que parcial, por qualquer meio, sem autorização escrita dos autores
e do detentor dos direitos autorais.
Olá, Aluno(a)!
Equipe do Ifes
Engenharia de Software
4
ICONOGRAFIA
Veja, abaixo, alguns símbolos utilizados neste material para guiá-lo em seus estudos.
Fala do Professor
ENGENHARIA DE SOFTWARE
Engenharia de Software
6
ANEXO A 121
ANEXO B 129
Engenharia de Software
8
APRESENTAÇÃO
Olá!
Meu nome é Tânia Barbosa Salles Gava, responsável pela disciplina de
Engenharia de Software. Sou professora atualmente do Instituto Federal
do Espírito Santo, Centro Universitário Vila Velha (UVV), mas já lecionei
em outras instituições de ensino superior como Centro Universitário São
Camilo, Universidade Federal do Espírito Santo e Faculdade Salesiana
de Vitória. Também atuo como professora em cursos de pós-graduação
latu-sensu do IFES, UVV, e cursos a distância, fornecidos pelo programa
ProInfo, em parceria com o MEC-UFES-UFRGS.
Sou graduada em Matemática Aplicada e Computacional (1995)
e Ciência da Computação (1996), Mestre em Informática (1998)
e Doutora em Engenharia Elétrica-Automação, todos cursados na
UFES.
Nesta disciplina serão discutidos assuntos relacionados à disciplina de en-
genharia de software. Muitos dos conceitos que serão discutidos já foram
vistos com diferentes níveis de profundidade nas disciplinas de Análise de
Sistema e Projeto de Sistemas, e outros assuntos serão novos para você.
O objetivo deste material é auxiliá-lo no estudo da disciplina de engenha-
ria de software, por meio de dicas e sugestões que destacam os pontos mais
importantes a serem estudados. O objetivo do material é dar um enfoque
mais prático à disciplina, citando exemplos sempre que possível, e dando
sugestões de leituras complementares.
Em geral, para ser bem sucedido neste curso, é importante que você faça
as atividades sugeridas e estude os exercícios resolvidos, além dos estudos
regulares, evitando, dessa forma, o acúmulo de conteúdo. A participação
no ambiente e, consequentemente, a interação com os colegas e tutores é
extremamente importante para o sucesso na disciplina e no curso como
um todo. Procure realizar com afinco todas as atividades sugeridas.
Desejo sinceramente que este material venha lhe agregar valores e que lhe
ajude a construir conhecimento sobre os assuntos estudados.
Profª Tânia Barbosa Salles Gava
INTRODUÇÃO À ENGENHARIA DE
SOFTWARE
Prezado aluno,
Neste primeiro capítulo abordarei como temas principais uma introdução
à engenharia de software, um breve histórico dessa disciplina e falarei um
pouco sobre qualidade de software. Também serão apresentados os três
tipos básicos de atividades envolvidas na engenharia de software: ativida-
des de desenvolvimento, atividades de gerência de projeto e atividades de
garantia da qualidade. Para cada um destes três tipos de atividades será
dedicado um capítulo. A saber, capítulos 5, 6 e 7 respectivamente.
Bons estudos!
Engenharia de Software
10
Capítulo 1
Quando você pensa em software, o que vem a sua mente? Se você res-
pondeu que software é um programa de computador você pensa como
a maioria das pessoas. No entanto, software não é apenas um programa,
mas também toda a documentação associada e os dados de configuração
necessários para fazer com que esse programa opere de forma correta.
Além disso, Pressman (2006) nos apresenta sete tipos de categorias im-
portantes de software de computadores. São elas:
Engenharia de Software
12
Capítulo 1
Atividades
Após ler o tópico 1.1 responda:
1. Diferencie os conceitos de software, ciência da computação,
engenharia de sistemas e engenharia de software.
2. Fale um pouco sobre como um software é produzido.
3. Quais são os dois tipos de produtos de software? Fale sobre
cada um desses tipos.
4. Cite as três categorias de software que você considera mais
importantes para nossa sociedade e justifique suas escolhas.
Engenharia de Software
14
Capítulo 1
Já para um cliente, o produto de software deve agregar valor a seu negócio. Ob-
serve que quer seja em uma perspectiva externa, interna ou sobre a qualidade
de uso, o conceito de qualidade está sempre associado ao produto de software.
Um outro aspecto muito importante a ser observado é que a qualidade deve
ser incorporada ao produto ao longo de todo o seu desenvolvimento. Ou seja,
a qualidade dos produtos de software depende fortemente da qualidade dos
processos usados para desenvolvê-lo e mantê-los. E essa é a grande preocupa-
ção da engenharia de software, produzir software de qualidade!
Engenharia de Software
16
Capítulo 1
Atividades
Após ler os itens 1.2 e 1.3 responda:
1. Por que é importante que um software tenha qualidade?
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Engenharia de Software
18
Capítulo 1
CARACTERÍSTICAS DO
SOFTWARE
Prezado aluno,
Agora que você já tem uma visão geral da engenharia de software,
neste capítulo estudaremos o software como um produto, além de
discutirmos sobre o processo de desenvolvimento de um software.
Bom estudo!
Engenharia de Software
20
Capítulo 2
t Quarta era (do final dos anos 80 até os dias de hoje). Os sis-
temas passam a ter interfaces muito amigáveis com o usuário;
surgem as redes de computadores; os sistemas orientados a
objetos; os sistemas especialistas, as redes neurais e os algorit-
mos genéticos; a programação paralela; a Internet, o Cybers-
pace e a “information superhighway”.
Atividades
Engenharia de Software
22
Capítulo 2
2. O software não “se desgasta”: você já teve que trocar sua impres-
sora, comprar um mouse novo, trocar seu modem por um mais
moderno ou trocar alguma peça quebrada ou deteriorada de seu
computador? Se você possui um computador pessoal, certamen-
te sim. Mas e o software? Precisamos trocá-lo de vez em quan-
do por que ele “quebrou”? Embora não tenhamos essa relação
de desgaste ou de quebra, o software tem uma outra caracterís-
tica muito particular, o software torna-se obsoleto. Basta lembrar
quantas vezes você teve que atualizar seu sistema operacional ou
um pacote de ferramentas como o “Microsoft Office” ou o “Open
Office”. Além disso, quando um hardware se desgasta, ele tem que
ser substituído por um outro, ou ser feita uma troca de peças. Já
com o software isso não acontece. Não há peças sobressalentes
para um software. Isso significa que toda falha de software é gera-
da por um erro de projeto. Isso faz com que a manutenção de um
software seja consideravelmente muito mais complexa do que a
manutenção de um hardware qualquer.
Mitos da Gerência
Os gerentes com responsabilidade sobre um software geralmente trabalham
sob pressão para obedecer a orçamentos, cumprir cronogramas e melhorar
a qualidade desse software. A fim de diminuir a pressão, pelo menos
temporariamente, eles se agarram aos seguintes mitos:
Mito: Já temos um livro que está cheio de padrões e procedimentos para elaborar
o software. Isso não fornece ao meu pessoal tudo o que o eles precisam saber.
Realidade: O livro de padrões pode até existir, mas será que ele é usado?
Os profissionais de software sabem de sua existência? Ele reflete as práticas
modernas da engenharia de software? Ele é completo? É adaptável? Está
voltado para melhorar o prazo de entrega, mantendo o foco na qualidade?
Em muitos casos, a resposta a essas perguntas é negativa.
Mito: Se nos atrasarmos no cronograma, podemos adicionar mais
programadores e ficar em dia.
Realidade: Esse tipo de pensamento é um grande erro, pois o processo de
desenvolvimento de software não é um processo mecanizado como o de um
hardware, por exemplo. Como citado por Brooks (1975), “Adicionar pessoas a
um projeto de software atrasado atrasa-o mais ainda”. Não podemos esquecer que
sempre que novas pessoas são adicionadas a um projeto, a equipe já constituída
precisa gastar tempo orientando os novatos, o que reduz a quantidade de tempo
investida no desenvolvimento produtivo. Isso NÃO quer dizer que pessoas não
podem ser adicionadas a um projeto. Absolutamente, mas desde que isso seja
feito de maneira planejada e bem coordenada.
Mito: Se eu decidir terceirizar um projeto de software, vou poder relaxar
e deixar que a empresa contratada o elabore.
Realidade: Se uma organização não sabe como gerir e controlar projetos de
software internamente, certamente terá problemas na terceirização de seus
projetos.
Engenharia de Software
24
Capítulo 2
Mitos do Cliente
Um cliente pode ser uma pessoa ou empresa que encomendou um software,
geralmente sob contrato. Frequentemente, os clientes acreditam em certos mitos
por falta de informações mais precisas sobre o desenvolvimento do software
por parte dos gerentes ou profissionais de software. Isso pode levar a falsas
expectativas e à insatisfação do cliente.
Mito: Estabelecer um objetivo geral para um projeto de software é suficiente para
iniciar o seu desenvolvimento – podemos fornecer os detalhes posteriormente.
Realidade: uma das principais causas do fracasso de um projeto de software
é ter uma definição inicial mal feita. Num projeto de software, fazer uma
descrição formal e detalhada do domínio da informação, das funcionalidades,
do comportamento, do desempenho das interfaces, das restrições do projeto
e dos critérios de validação é algo essencial. E isso só é possível por meio de
intensa comunicação entre os envolvidos no projeto (stakeholders).
Mitos do Profissional
Os mitos entre os profissionais de software que serão apresentados a seguir
existem desde os primórdios da programação, persistindo até hoje.
Mito: Quando escrevemos um programa e o fazemos funcionar, nosso trabalho
está completo.
Realidade: Dados da indústria indicam que entre 60% e 80% de todo o
esforço despendido em software vai acontecer depois de o software ter sido
entregue ao cliente pela primeira vez, pois é quando o cliente usa o software
que ele percebe suas falhas, e quais de suas necessidades que não foram
atendidas por esse programa.
Mito: Até que eu esteja com o programa “rodando” não tenho como avaliar a
sua qualidade.
Mito: O único produto de trabalho que pode ser entregue para um projeto de
software bem-sucedido é o programa executável.
Realidade: Um programa executável é apenas um dos elementos
produzidos em um projeto de software. A documentação fornece a base
para uma engenharia bem-sucedida e funciona como uma orientação
para o suporte ao software.
Mito: A engenharia de software vai nos fazer criar documentação volumosa
e desnecessária que fará atrasar o projeto.
Realidade: A engenharia de software tem a ver com a criação de qualidade,
e não somente com a criação de documentos. Uma melhor qualidade leva à
redução de trabalho e retrabalho. Reduzir (re)trabalho resulta em tempos de
entrega mais rápidos.
Engenharia de Software
26
Capítulo 2
Atividades
1. Descreva as características de um software que o tornam dife-
rente dos demais produtos que você conhece.
2. Fale sobre pelo menos um mito da gerência, do cliente e do
profissional.
3. Baseado no que você leu até aqui, fale da importância da
engenharia de software para a construção de software com
qualidade.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Engenharia de Software
28
Capítulo 2
PROCESSOS DE SOFTWARE
Prezado aluno,
Neste capítulo apresentarei a diferença entre engenharia de softwa-
re e processo de desenvolvimento de software, dando detalhes sobre
o processo de desenvolvimento de um software, apresentando ativi-
dades principais e atividades de apoio ao processo de software.
Bom estudo!
Engenharia de Software
30
Capítulo 3
t Engenharia do sistema;
Engenharia de Software
32
Capítulo 3
t Projeto do software;
t Geração de código;
t Testes.
t Corretiva;
t Adaptativa;
t Evolutiva;
t Preventiva (reengenharia).
Segundo Falbo (2005), “Um processo de software pode ser visto como o
conjunto de atividades, métodos, práticas e transformações que guiam
pessoas na produção de software. Um processo eficaz deve, claramente,
Engenharia de Software
34
Capítulo 3
8) Manutenção: Sem dúvida, o software sofrerá mudanças após ter sido en-
tregue para o usuário. Alterações ocorrerão por diversos motivos: porque
erros foram encontrados, porque o software precisa ser adaptado para aco-
modar mudanças em seu ambiente externo ou porque o cliente necessita
de funcionalidade adicional ou aumento de desempenho. Muitas vezes, de-
pendendo do tipo e do porte da manutenção necessária, essa atividade pode
requerer a definição de um novo processo, em que cada uma das fases prece-
dentes é re-aplicada no contexto de um software existente, ao invés de iniciar
um processo de criação de um novo software.
Engenharia de Software
36
Capítulo 3
Atividades
1) Faça um paralelo entre os conceitos de engenharia de software
e de processo de software.
2) A engenharia de software pode ser considerada uma tecno-
logia em camadas. Diante dessa afirmação, descreva cada uma
dessas camadas.
2) Identifique as atividades principais e as atividades de apoio
de um processo de software. Fale um pouco sobre cada uma
dessas atividades.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Engenharia de Software
38
Capítulo 3
Prezado aluno,
Neste capítulo apresentaremos o que é o ciclo de vida de um sof-
tware, bem como as categorias mais comuns de modelos de ciclo
de vida: Modelo Linear Seqüencial, Modelo Incremental, Mo-
delo Espiral e Modelo de Prototipagem. Neste capítulo também
serão apresentados as principais atividades e documentos típicos
relacionados ao ciclo de vida de um software.
Bom estudo!
Atividade Objetivo
Determina se o desenvolvimento
Viabilidade
proposto é viável.
Determina se existe mercado potencial
Análise de mercado
para esse produto.
Determinam quais as funcionalidades o
Requisitos
software deve ter.
Elucidação de Requisitos Obtém dos requisitos do usuário.
Engenharia de Software
40
Capítulo 4
Atividade Objetivo
Determina quais tarefas e estruturas
Análise de Domínio
são comuns ao problema.
Planejamento do Projeto Determina como desenvolver o software.
Análise de Custos Determina a estimativa dos custos.
Constrói o cronograma para o
Cronograma
desenvolvimento.
Garantia da Qualidade de Determina atividades que irão ajudar a
Software garantir a qualidade do produto.
Determina como o software deverá
Projeto
prover as funcionalidades.
Projeto Arquitetural Projeta a estrutura do sistema.
Especifica as interfaces entre as partes
Projeto de Interface
do sistema.
Projeto Detalhado Projeta os algoritmos para cada parte.
Implementação Construção do software.
Execução do software com dados
Teste para ajudar a garantir que o software
funcione corretamente.
Teste do desenvolvedor original que
Teste de Unidade focaliza o esforço de verificação na
menor unidade de projeto do software.
Teste de Integração Teste durante a integração do software.
Teste do software em um ambiente
Teste do Sistema
semelhante ao ambiente operacional.
Teste pelo cliente no ambiente do
Teste Alpha
desenvolvedor.
Teste pelo cliente em seu ambiente
Teste Beta
operacional.
Teste de Aceitação Teste para satisfazer o cliente.
Teste de armazenamento da versão
anterior para garantir que a nova
Teste de Regressão
versão possui todas as capacidades
anteriores.
Provê o cliente com uma solução de
Entrega
software eficiente.
Torna o software disponível no
Instalação
ambiente operacional do cliente.
Treinamento Capacita o usuário a operar o software.
Responde a questões (dúvidas) dos
Help Desk
usuários.
Atualização e evolução do software
Manutenção
para garantir usabilidade constante.
Atividade Objetivo
Descrição preliminar das
Contrato de Trabalho funcionalidades desejadas, geralmente
produzidas pelo usuário.
Especificação dos Descreve o que o software final irá
Requisitos de Software fazer.
Apresenta as classes e os objetos
Modelo de Objetos
principais.
Mostram a sequência de possíveis
Diagramas de Casos de
comportamentos do ponto de vista do
Uso
usuário.
Descreve a ordem das tarefas e
Cronograma do Projeto as estimativas de tempo e esforço
necessários.
Descreve como o software será testado
Plano de Teste do
para garantir o comportamento
Software
apropriado.
Testes elaborados pelo cliente para
Testes de Aceitação
determinar a aceitabilidade do sistema.
Projeto de Software Descreve a estrutura do software.
Estrutura de alto nível com as
Projeto Arquitetural
interconexões.
Projeto de baixo nível dos módulos ou
Projeto Detalhado
objetos.
Plano de Garantia da Descreve as atividades que serão
qualidade do software desenvolvidas para garantir a
(SQA) qualidade.
Manual do Usuário Descreve como usar o software pronto.
Código Fonte O código fonte do produto atual.
Descreve como os testes foram feitos e
Relatório de Teste
como o sistema se comportou.
Descreve as insatisfações do cliente
com os comportamentos específicos
Relatório de Falhas
do sistema, geralmente suas falhas ou
erros.
Engenharia de Software
42
Capítulo 4
2. Modelo Incremental;
3. Modelo Espiral;
4. Modelo de Prototipagem.
Engenharia de Software
44
Capítulo 4
Como todo sistema complexo, o software também evolui com o tempo. Seus
requisitos, de negócio ou do próprio produto, muitas vezes são difíceis de se-
rem definidos ou mudam frequentemente durante o desenvolvimento. Dessa
forma, é importante que os profissionais de software possam contar com mo-
delos de ciclo de vida que tenham sido explicitamente projetados para lidar
com incertezas e contínuas mudanças. Por serem iterativos, os modelos in-
crementais podem ser aplicados a esses casos, permitindo o desenvolvimento
de versões cada vez mais completas do software. Vale ressaltar que a grande
maioria dos modelos evolutivos toma como pressuposto que os requisitos es-
tejam muito bem definidos. Faz parte desta categoria o Modelo Espiral.
Engenharia de Software
46
Capítulo 4
Atividades
1) Quais são as diferenças entre um modelo de ciclo de vida do
software e um modelo processo?
2) Pesquise sobre outras versões do modelo em cascata e des-
creva em forma de diagrama de atividades as versões que você
encontrar.
3) Descreva com suas próprias palavras o modelo de
prototipagem.
Exercícios Resolvidos
Engenharia de Software
48
Capítulo 4
3.
- Manual final do usuário – fase de implementação
- Projeto arquitetural – fase de projeto
- Plano de SQA – fase de planejamento de projeto
- Especificação de Módulos - fase de projeto
- Código Fonte - fase de implementação
- Sequência de Trabalho – fase de viabilidade
- Plano de Teste – fase de teste
- Manual de Usuário Preliminar – fase de requisitos
- Projeto detalhado - fase de projeto
- Estimativa de custo - fase de planejamento de projeto
- Plano de Projeto - fase de planejamento de projeto
- Relatório de Teste – fase de teste
- Documentações - fase de implementação
Engenharia de Software
50
Capítulo 4
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
ATIVIDADES DE
DESENVOLVIMENTO
Prezado aluno,
Como visto na seção 1.3, em um processo de software, em uma abor-
dagem de engenharia de software, podemos considerar três tipos de
atividades principais: de desenvolvimento, de gerência de projetos e
de garantia da qualidade. No entanto, a espinha dorsal do desenvol-
vimento de um software é formada pelas atividades chamadas de
atividades de desenvolvimento, técnicas ou atividades de cons-
trução. As atividades de gerência e de controle da qualidade são
muitas vezes consideradas atividades de apoio. Neste capítulo apre-
sentarei as atividades de desenvolvimento, que são as atividades
que contribuem diretamente para o desenvolvimento do produto de
software a ser entregue ao cliente. As atividades de desenvolvimen-
to compreendem basicamente as seguintes atividades: especificação
e análise de requisitos, projeto de sistema, implementação e testes,
entrega e manutenção.
Bom estudo!
Engenharia de Software
52
Capítulo 5
Engenharia de Software
54
Capítulo 5
Tabela 5.1
Engenharia de Software
56
Capítulo 5
Engenharia de Software
58
Capítulo 5
Para tornar este capítulo o mais prático possível, nesta seção apresenta-
remos exemplos das principais documentações relacionadas a um pro-
jeto de software. Trata-se de um projeto de informatização de uma loja
chamada “Loja Vitória”. Serão inicialmente apresentados os documen-
tos de especificação de requisitos. Os documentos de análise e projeto
podem ser consultados no Anexos A e B, respectivamente, ao final do
material impresso.
1. Introdução
2. Descrição do Mini-mundo
Engenharia de Software
60
Capítulo 5
Descrição:
Este caso de uso é responsável pelo controle de clientes, abrangen-
do a inclusão de um novo cliente, alteração, consulta, e exclusão de
clientes existentes.
Curso Normal:
Ativar Cliente
Pré-requisito: cliente selecionado.
O sistema calcula o total de compras do cliente, dado pela soma do valor total de
cada uma de suas notas fiscais de saída. Se o total for superior a R$ 2.000,00, o esta-
do do cliente é alterado para “preferencial”. Caso contrário é alterado para “ativo”.
Desativar Cliente
O administrador informa o cliente que deseja desativar. O estado do cliente é
alterado para “inativo”.
Excluir Cliente
O administrador ou operador informa o cliente que deseja excluir. Um cliente
somente poderá ser excluído se não houver nenhum vínculo com notas ficais
de saída. Os dados do cliente são apresentados e é solicitada a confirmação.
Caso confirmado, o cliente é excluído.
Engenharia de Software
62
Capítulo 5
Cursos Alternativos:
Incluir Novo Cliente / Alterar Dados de Cliente
t Dados do cliente inválidos: uma mensagem de erro é exibida,
solicitando correção da informação inválida.
Excluir Cliente
t Cliente possui notas fiscais de saída: uma mensagem de erro é
exibida indicando que o cliente possui notas ficais de saída.
Restrições de Integridade:
Não há restrições de integridade.
Descrição:
Este caso de uso é responsável pelo controle de produtos, abrangendo a
inclusão de um novo produto, alteração, consulta e exclusão de produ-
tos existentes.
Curso Normal:
Incluir Novo Produto
O administrador informa os dados do novo produto, incluindo nome, des-
crição, valor de venda, estoque mínimo e fornecedores. O estoque do pro-
duto é inserido como zero. Caso os dados sejam válidos, serão registrados.
Excluir Produto
O administrador informa o produto que deseja excluir. Um produto so-
mente poderá ser excluído se não houver nenhum vínculo com itens
de notas ficais. Os dados do produto são apresentados e é solicitada a
confirmação. Caso confirmado, o produto é excluído.
Cursos Alternativos:
Excluir Produto
Restrições de Integridade:
Não há restrições de integridade.
Descrição:
Este caso de uso é responsável pelo controle de fornecedores, abrangen-
do a inclusão de um novo fornecedor, alteração, consulta e exclusão de
fornecedores existentes.
Curso Normal:
Excluir Fornecedor
O administrador informa o fornecedor que deseja excluir. Um fornece-
Engenharia de Software
64
Capítulo 5
dor somente poderá ser excluído se não houver nenhum vínculo com
notas ficais de entrada. Os dados do fornecedor são apresentados e é
solicitada a confirmação. Caso confirmado, o fornecedor é excluído.
Cursos Alternativos:
Incluir Novo Fornecedor / Alterar Dados de Fornecedor
t Dados do fornecedor inválidos: uma mensagem de erro é exi-
bida, solicitando correção da informação inválida.
Excluir Fornecedor
t Fornecedor possui notas fiscais de entrada: uma mensagem de
erro é exibida indicando que o fornecedor possui notas ficais
de entrada.
Restrições de Integridade:
Não há restrições de integridade.
O ator que atua neste subsistema é o Ator Operador, que representa o papel
desempenhado pelos operadores do sistema da loja.
Descrição:
Este caso de uso é responsável pelo controle de Notas Fiscais de Saída,
abrangendo a emissão e consulta de notas fiscais de saída.
Curso Normal
Emitir Nota Fiscal de Saída
Pré-requisito: cliente informado não deve ser inativo.
Cursos Alternativos
Emitir Nota Fiscal de Saída
t Há produtos com quantidade em estoque inferior à pedida:
Uma mensagem é exibida solicitando a alteração da quanti-
dade pedida.
t Desconto informado superior ao permitido: Uma mensagem
é exibida solicitando a correção do desconto.
Restrições de Integridade
Não há restrições de integridade.
Engenharia de Software
66
Capítulo 5
Descrição:
Este caso de uso é responsável pelo controle de Notas Fiscais de Entrada,
abrangendo o registro e a consulta de notas fiscais de entrada.
Curso Normal
Registrar Nota Fiscal de Entrada
O administrador ou operador informa o fornecedor e o número da nota
fiscal e, em seguida, os produtos e suas respectivas quantidades. Os da-
dos são validados. As quantidades em estoque de cada item contido na
Nota Fiscal são acrescidas das quantidades informadas na nota.
Cursos Alternativos
Registrar Nota Fiscal de Entrada
t Dados da nota fiscal inválidos: uma mensagem de erro é exibi-
da, solicitando correção da informação inválida.
Restrições de Integridade
Não há restrições de integridade.
Descrição:
Este caso de uso é responsável pela emissão dos relatórios que auxiliam
o controle do estoque da empresa.
Curso Normal
Cursos Alternativos
Listar Notas Fiscais de Entrada / Listar Notas Fiscais de Saída
Restrições de Integridade
Não há restrições de integridade.
Engenharia de Software
68
Capítulo 5
Atividades
1. Quais são as atividades que compõem a espinha dorsal de de-
senvolvimento de um software? Descreva cada uma dessas ativi-
dades de forma sucinta, com suas próprias palavras.
2. Todas as atividades envolvidas no processo de desenvolvimen-
to de software produzem artefatos. Um artefato é um produto de
trabalho, que pode ser um modelo, documento ou código fonte
produzido por uma atividade, entre outros. Pesquise em livros,
internet ou outras fontes sobre os artefatos produzidos em cada
uma das atividades de desenvolvimento. Discuta os artefatos pes-
quisados com seus colegas em um fórum de discussão.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Engenharia de Software
70
Capítulo 5
GERENCIAMENTO DE PROJETO
DE SOFTWARE
Prezado aluno,
Bom estudo!
6.1. Introdução
Engenharia de Software
72
Capítulo 6
Engenharia de Software
74
Capítulo 6
α (Alfa) = custo marginal por KLOC (1000 linhas de código), que repre-
senta o custo adicional para 1000 linhas de código;
Engenharia de Software
76
Capítulo 6
Arquivos Internos: são arquivos lógicos que o usuário entende que de-
vem ser mantidos pelo sistema. Um arquivo que contenha 1.000 entradas
de dados pessoais provavelmente será contado como um único arquivo.
No entanto, se um arquivo contém dados pessoais, dados sumários de
um departamento, e outros dados do departamento, para o propósito de
pontos de função, provavelmente esses arquivos seriam contados como
três arquivos separados;
Engenharia de Software
78
Capítulo 6
Engenharia de Software
80
Capítulo 6
No entanto, muitas vezes uma organização não tem ainda esses dados
históricos disponíveis. Embora as características do projeto sejam deter-
minantes para a distribuição do esforço, uma diretriz inicial útil consiste
em considerar a distribuição mostrada na Tabela 6.5 (Falbo, 2005).
Engenharia de Software
82
Capítulo 6
Modelo 1
1. Introdução
1. Escopo e propósito do documento
2. Objetivos do Projeto
1. Objetivos
2. Funções Principais
3. Questões de desempenho
4. Restrições técnicas e administrativas
3. Recursos humanos
4. Estimativas de Projeto
1. Dados históricos
2. Técnicas de estimativas
3. Estimativas
5. Riscos do projeto
6. Cronograma
1. Rede de tarefas
2. Gráfico de linha-de-tempo (timeline)
3. Tabela de recursos
Engenharia de Software
84
Capítulo 6
7. Recursos materiais
9. Orçamento
Modelo 2
Dados Gerais:
Projeto: <<Nome do Projeto>>
Versão: <<Número da Versão do Plano de Projeto>>
Responsáveis: <<Nome dos Responsáveis>>
2. Escopo do Projeto
Texto introdutório sobre o problema a ser tratado, seguido de uma iden-
tificação de subsistemas e módulos/macro-funções que o sistema deverá
tratar, apresentada na forma de diagramas de casos de uso e descrições
sucintas dos mesmos.
Processo de Desenvolvimento
<<Nome da Atividade>>
Preatividades: <<Nomes das preaatividades>>
Subatividades: <<Nomes das subatividades>>
Artefatos Insumo: <<Artefatos requeridos pela atividade>>
Artefatos Produzidos: <<Artefatos produzidos pela atividade>>
Recursos Necessários:
Recursos Humanos: <<Papéis necessários para realizar a
atividade>>
Ferramentas de Software: <<Tipos de Ferramentas
necessárias>>
Hardware: <<Equipamentos necessários para realizar a
atividade>>
Procedimentos: <<Procedimentos a serem adotados>>
Tecer comentários sobre os demais processos, sobretudo quando
houver mudanças em relação ao processo padrão.
4. Equipe do Projeto
Apresentar a equipe do projeto, identificando as pessoas e os papéis que
as mesmas vão desempenhar no projeto.
5. Estimativas
5.1 – Estimativa de Tamanho
Apresentar a estimativa e a base de cálculo para se chegar a ela, infor-
mando o procedimento utilizado em sua elaboração.
5.2 – Estimativa de Esforço
Apresentar a estimativa e a base de cálculo para se chegar a ela, infor-
mando o procedimento utilizado em sua elaboração.
Engenharia de Software
86
Capítulo 6
6. Plano de Riscos
Anexar o plano de riscos, desenvolvido segundo o modelo de pla-
no de riscos.
Atividades
1. Tanto a estimativa de linha de código (LOC), quanto a análise
de pontos de função (APF), são estimativas do tamanho do sof-
tware. A análise de pontos de função também tem como objetivo
medir o desenvolvimento e a manutenção de uma aplicação de
software. Descreva com suas palavras cada uma dessas estimati-
vas, destacando as características principais de cada uma delas, e
as principais diferenças.
2. Em relação à medição do tamanho de uma aplicação de sof-
tware, na sua opinião, qual das estimativas citadas na Atividade
1 é a melhor?
3. Compare os dois modelos de plano de projeto apresentados na
seção 6.4 e registre suas observações. Qual dos modelos você con-
sidera ser o melhor? Descreva os motivos da escolha.
Engenharia de Software
88
Capítulo 6
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
MÉTRICAS DE SOFTWARE
Prezado aluno,
Bom estudo!
Engenharia de Software
90
Capítulo 7
Engenharia de Software
92
Capítulo 7
Engenharia de Software
94
Capítulo 7
Como exemplo, podemos citar que uma métrica possível seria o núme-
ro de parágrafos que consistem na especificação de requisitos.
Engenharia de Software
96
Capítulo 7
Atividades
1. Após ler o capítulo, pesquise mais sobre o tema e fale com suas
próprias palavras sobre o que são:
t Métricas de Processo
t Métricas de Projeto
t Métricas de Produto
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Engenharia de Software
98
Capítulo 7
ANÁLISE E GERENCIAMENTO
DE RISCO
Prezado aluno,
Bom estudo!
8.1. Introdução
Existe uma certa discordância sobre quais riscos devem ser gerencia-
dos. Alguns especialistas sugerem que riscos comuns a vários projetos
devem ser incorporados ao processo do software, devendo apenas ser
gerenciados os riscos que são únicos a um projeto corrente.
Engenharia de Software
100
Capítulo 8
- Tamanho do projeto.
Os riscos do projeto são diretamente proporcionais ao tama-
nho do projeto.
- Características do cliente.
Já trabalhou com este cliente antes?
O cliente mostra-se acessível e disposto a gastar tempo em reuniões?
O cliente tem conhecimento (treinamento) de processos de de-
senvolvimento de software?
- Ambiente de desenvolvimento.
Há ferramentas adequadas para dar suporte a todas as fases do
desenvolvimento do projeto?
Engenharia de Software
102
Capítulo 8
Plano de
Risco Probabilidade Impacto gerência de
riscos
Tamanho estima- baixa crítico
do pode ser muito
menor que o real
Equipe inexperiente média catastrófico
Troca de membros alta crítico
da equipe
Complexidade da baixa marginal
tecnologia muito
maior que a prevista
Cliente pouco alta negligenciável
disponível
... ... ... ...
Engenharia de Software
104
Capítulo 8
Diminuir
Risco Diminuir Impacto
Probabilidade
Equipamento não- Acelerar o desenvolvi-
Construir simulador
disponível mento do hardware
Requisitos Ampliar revisão dos
incompletos requisitos
Aumentar treinamen-
Uso de metodologias
tos da equipe, consul-
Especializadas
tar especialistas.
Problemas na busca
Projetar para
da confiabilidade
confiabilidade
requerida
Retenção de Empregar pessoal
Pagar mais
pessoas-chave adicional
Desenvolver no
Subestimativa do Contratar especialista
tempo estimado, re-
esforço requerido externo
estimar sempre
Desistência do único Ter avaliação externa Identificar outros
cliente em potencial da área potenciais clientes
1. Identificador do risco
2. Descrição do risco
3. Estimativa de probabilidade do risco
4. Estimativa do impacto do risco
5. Lista de estratégias de mitigação dos riscos
6. Planos de contingência
7. Marcos de risco
8. Indivíduos responsáveis (equipe)
Atividades
1. Depois de ler todo este capítulo, descreva com suas próprias pala-
vras se você acha importante o gerenciamento de risco e por quê.
2. Quando o gerenciamento de risco deve ser feito dentro do pro-
cesso de desenvolvimento de software? Por quê?
3. Considere que você esteja indo ao aeroporto para viajar por
uma companhia que você nunca usou antes. Descreva quais os
riscos que você considera serem únicos para essa viagem (risco
especial) e quais devem ser gerenciados como riscos comuns a
qualquer viagem (risco comum).
Engenharia de Software
106
Capítulo 8
Exercícios Resolvidos
1. Descreva alguns riscos normais que podem acontecer em qual-
quer projeto de software.
2. Considere um projeto que tem 0.5% de probabilidade de
uma falta não-detectada causar à companhia um prejuízo de R$
100.000,00. Calcule a exposição do risco.
3. Considere o uso de uma revisão adicional para o problema 2
que custaria R$ 100,00, mas eliminaria tal falta em 50% das vezes.
Calcule essa nova exposição de risco usando a revisão adicional.
A abordagem de revisão adicional é melhor?
4. O que mudaria na Atividade 3 se uma revisão adicional fosse
efetiva em 10% das vezes?
5. A companhia X possui dados históricos que mostram que a mé-
dia de erros normais é de 0,0036 erros por KLOC. Uma nova téc-
nica de revisão custa R$ 1000,00 por 100 KLOC e decresce o nú-
mero de erros em 50%. Assuma que cada erro custe à companhia
uma média de R$ 10.000,00. O projeto em andamento é estimado
em 50 KLOC. Calcule a exposição do risco de cada abordagem. A
nova técnica de revisão é eficiente?
Fonte: Adaptado de Gustafson, 2003;
Observe que este novo cálculo foi feito diminuindo 10% da probabilida-
de do risco, que é de
Note que a média de erros caiu em 50% (de 00,36 para 00,18) do caso 1
para o caso 2, que foi adicionado ao caso 2 o valor de R$ 500,00, já que o
custo da revisão é de 1.000 por 100 KLOC e o projeto está estimado em
50 KLOC (metade do custo de revisão).
Engenharia de Software
108
Capítulo 8
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
GARANTIA DE QUALIDADE DE
SOFTWARE
Prezado aluno,
Bom estudo!
9.1. Introdução
Engenharia de Software
110
Capítulo 9
Checlists
Um checkist é uma lista de itens que devem ser verificados durante
uma revisão técnica. Algumas vezes os itens são colocados como
questões que devem ser respondidas. A vantagem de uma checklist
é focar a atenção do revisor nos problemas potenciais. Qualquer
falha encontrada deve ser analisada para verificar se o item da lista
garante o foco no problema detectado. Itens de uma checklist que
não são eficientes em encontrar erros durante a inspeção devem
ser removidos, pois uma quantidade grande de itens na checklist
irá prejudicar a eficiência da inspeção.
Engenharia de Software
112
Capítulo 9
Para aplicar SQA estatística, a tabela da Figura 9.1 foi construída. A ta-
bela indica que IES, MCC e EDR são as poucas causas vitais que corres-
pondem a 53% de todos os erros. Deve-se notar, todavia, que IES, EDR,
PLT e EDL seriam selecionadas como as poucas causas vitais, se ape-
nas fossem considerados erros sérios. Uma vez determinadas as pou-
cas causas vitais, a organização de engenharia de software pode iniciar
ação corretiva. Por exemplo, para corrigir MCC, o desenvolvedor de
software poderia implementar técnicas facilitadas de coleta de requi-
sitos para aperfeiçoar a qualidade das especificações e da comunicação
com o cliente. Para aperfeiçoar EDR, o desenvolvedor poderia adquirir
ferramentas para a modelagem de dados e realizar revisões mais estritas
do projeto dos dados.
Engenharia de Software
114
Capítulo 9
Fonte: http://www.comexito.com.br/ISO9001/sobre_a_ISO9001.doc
Engenharia de Software
116
Capítulo 9
Atividades
Pesquise sobre as normas NBR ISO 2001, NBR ISO 9000:2000,
NBR ISO/IEC 12207, ISO/IEC 15504, SGQTEC, ISO/IEC 9126 e
os modelos CMMI e MPS-BR e discuta com seus colegas no fó-
rum “Normas e Modelos de Qualidade de Processo de Software”.
Para saber mais sobre as Normas da Série ISO 9000 visite o link:
http://allchemy.iq.usp.br/sedimentando/iso.htm
Acesso em 07/03/2009.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
Engenharia de Software
118
Capítulo 9
Engenharia de Software
120
ANEXO A
1. Introdução
2. Modelo de Classes
Engenharia de Software
122
ANEXOS
3. Modelo Comportamental
Engenharia de Software
124
ANEXOS
Engenharia de Software
126
ANEXOS
Caso de Uso Controlar Nota Fiscal de Saída / Evento Emitir Nota Fiscal
Engenharia de Software
128
ANEXOS
ANEXO B
1. Introdução
2. Plataforma de Implementação
3. Arquitetura do Sistema
Engenharia de Software
130
ANEXOS
Engenharia de Software
132
ANEXOS
Engenharia de Software
134
ANEXOS
Engenharia de Software
136
ANEXOS
Engenharia de Software
138
ANEXOS
6. O Pacote Utilitário
Este pacote contém vários pacotes de utilitários, que podem ser úteis
em diversos sistemas. Nesta seção são apresentados somente os pacotes
utilizados neste sistema.
Este pacote contém classes para tratar aspectos gerais de pessoas físicas
e jurídicas, comuns a vários sistemas, como mostra a figura B.14a.
Este pacote possui classes de cunho geral para o sistema, assim como
para manipulação de listas, iteradores, comparadores, datas etc. A figura
B.15 mostra a classe Data utilizada neste sistema.
Engenharia de Software
140
ANEXOS