Escolar Documentos
Profissional Documentos
Cultura Documentos
ENGENHARIA DE SOFTWARE
CONTEXTUALIZANDO
Observe as frases:
TEMA 1 – SOFTWARES
02
Estruturas de dados: possibilitam que os programas manipulem
adequadamente a informação.
Documentos: descrevem a operação e o uso dos programas.
(1950 – 1965)
O hardware sofreu contínuas mudanças.
O software arte "secundária" para poucos métodos.
O hardware era de propósito geral.
O software específico para cada aplicação.
Sem documentação.
(1965 – 1975)
Multiprogramação e sistemas multiusuários.
Sistemas tempo real.
Primeira geração de SGBD’s.
Bibliotecas de Software.
Cresce o número de sistemas baseado em computador.
Manutenção quase impossível.
03
TEMA 2 – CRISE DE SOFTWARE
04
Lenda: Em nossa empresa, possuímos um manual com todos os padrões
para desenvolvimento de um software. Minha equipe terá tudo o que é
necessário em termos de conhecimento?
Verdade: Esse material é usado pela equipe? Todos os profissionais têm
conhecimento da sua existência? Nele já estão contidas as formas
modernas de desenvolvimento? O material está completo?
Lenda: Minha equipe usa ferramentas de última geração para o
desenvolvimento dos sistemas. Recentemente, também adquirimos novas
máquinas para o desenvolvimento.
Verdade: É necessário possuir mais que apenas novos computadores para
produzir software com qualidade. Todo o conhecimento, aqui também, deve
estar incluso.
Lenda: Como nosso projeto de desenvolvimento de software está atrasado,
incluiremos novos profissionais na equipe e, com isso, tiraremos o atraso.
Verdade: Desenvolver um software é diferente de produzir um produto em
um processo industrial. Incluir mais pessoas em um projeto pode torná-lo
mais atrasado ainda. Há que se ter um critério bem definido e planejado
para a inclusão de novos profissionais em uma equipe de projeto.
Lenda: Ter uma visão superficial dos objetivos para o desenvolvimento de
determinado software é o suficiente para começar a desenvolver os
programas. O detalhamento pode ser feito posteriormente.
Verdade: Uma pobre definição inicial dos requisitos é a grande vilã e,
talvez, a maior causa de fracassos dos projetos de desenvolvimento de
software. Ter uma descrição formal e detalhada de toda a informação,
funcionalidade, desempenho, interfaces internas e externas, restrições e
validações dos sistemas desenvolvidos são vitais para o sucesso do
projeto.
Lenda: O nosso usuário, constantemente, sugere mudanças em nosso
projeto. Sem problemas, pois qualquer mudança pode ser facilmente
implementada, porque o nosso projeto é totalmente flexível.
Verdade: Pequenas alterações, solicitadas quando o projeto já está em
desenvolvimento avançado, podem causar problemas muito maiores do
que uma grande alteração solicitada durante as fases iniciais do
desenvolvimento. Tal feito pode ocasionar consideráveis prejuízos à
qualidade final do produto e do projeto.
05
Lenda: A partir do momento em que o programa/sistema entrar em
funcionamento, o trabalho de nossa equipe de desenvolvimento estará
encerrado.
Verdade: É errado pensar dessa forma. Pelas estatísticas das empresas
de desenvolvimento de software, serão usados, após a entrega do
programa aos usuários, de 50% a 70% do tempo e esforço gastos com o
seu desenvolvimento.
Lenda: Sem ter em mãos o sistema já funcionando, não é possível avaliar
a sua qualidade.
Verdade: Hoje em dia, ter o programa funcionando é apenas uma parte da
configuração de Software. Além do mais, com novas formas de
desenvolvimento, com as metodologias ágeis, temos sempre a entrega de
artefatos agregando funcionalidades aos programas em que a qualidade é
vital.
3.1 Métodos
3.2 Ferramentas
3.3 Procedimentos
06
Constituem o elo entre os métodos e as ferramentas. São as sequências
em que os métodos serão aplicados. Informam quais produtos devem ser
entregues. Definem os controles que ajudam assegurar a qualidade e a coordenar
as alterações. Trazem as referências que ajudam a administrar o progresso do
software.
O conjunto das etapas que envolvem métodos, ferramentas e
procedimentos é conhecido como componente de Ciclos de Vida de software.
Para a escolha de um Ciclo de Vida de software, devemos levar em conta
a natureza do projeto e da aplicação, os métodos e as ferramentas a serem
usados e saber quais controles e produtos precisam ser entregues.
07
Deve-se compreender o funcionamento do software e todo o domínio da
informação, como também saber quais interfaces serão exigidas pelo sistema.
Esses requisitos devem ser documentados, revistos e validados junto aos
usuários/clientes.
4.3 Projeto
a. Estrutura de dados.
b. Arquitetura de software.
c. Detalhes procedimentais.
d. Caracterização de interfaces.
4.4 Codificação
4.5 Testes
Concentram-se, principalmente:
4.6 Manutenção
08
ambiente, solicitações dos usuários para que sejam incluídas alterações
funcionais e de melhora do desempenho.
Podemos citar várias situações-problema na utilização desse modelo,
como:
Figura 2 – Prototipação
FINALIZANDO
010
REFERÊNCIAS
011
AULA 2
ENGENHARIA DE SOFTWARE
CONTEXTUALIZANDO
Criado por Gustav Karner, o método serve para informar o esforço que será
gasto em projetos de software orientados a objetos. Ele baseia-se em casos de
uso, o que permite ser possível, já no início dos projetos, verificar qual será o
esforço desprendido para o desenvolvimento. Isso ocorre já na fase do
levantamento de requisitos. Para utilizar esse método, necessitamos seguir 4
passos no nosso desenvolvimento:
Os 4 passos do Método de Gustav Karner.
1. Avaliar o Ator.
2. Avaliar o Fluxo (Path).
3. Fazer o ajuste do UCP pelos fatores técnicos (TF) e pela Equipe EV.
4. Calcular o Esforço.
02
2.1.2 Avaliar o fluxo (path)
Fazer o ajuste do UCP pelos fatores técnicos (TF) e da Equipe EV, sendo
UCP = UUCP * TF * EF.
03
2.1.3.2 Fatores ambientais
04
Motivação
São os programadores motivados para trabalhar no projeto?
05 Instabilidade no projeto vai sempre levar para as pessoas que 1 none 0 0
saem no meio do caminho através do seu código-fonte. E a mão
sobre torna-se realmente difícil.
Requisitos estáveis
É ao usuário clara sobre o que ele quer? Tenho visto as
06 expectativas dos clientes são o fator mais importante na 2 none 0 0
estabilidade dos requisitos. Se o cliente é de uma natureza
altamente mudar, colocar esse valor máximo.
Part-time trabalhadores
07 Há pessoal em tempo parcial no projeto, como consultores, etc? -1 none 0 0
05
TEMA 3 – ANÁLISE POR PONTOS DE FUNÇÃO
A análise por ponto de função também pode ser usada para verificar o
tamanho de softwares adquiridos ou já existentes em uma empresa. Também
pode ser utilizada para dar apoio à análise no desenvolvimento de softwares,
visando mais qualidade no produto final (software). E, ainda, pode ser utilizada
como uma ferramenta de apoio à manutenção de software, bem como no controle
06
de custos do desenvolvimento, ajudando nas negociações de contratos nas áreas
de TI junto aos usuários.
Esses itens podem ter a sua dimensão analisada pela figura abaixo:
07
Figura 1 – Contagem de pontos de função não ajustados
08
manutenção realizada pela aplicação), arquivos de mensagens de auxilio e
arquivos de mensagens de erro.
Com essas definições, vamos iniciar o processo de atribuição da
complexidade.
Tabela 2 – Complexidade EE
Tabela 3 – Complexidade SE e CE
010
TEMA 4 – ANÁLISE DE PONTOS DE FUNÇÃO – CÁLCULO DO FATOR DE
AJUSTE
1. Comunicação de Dados;
2. Processamento Distribuído;
3. Performance;
4. Utilização do Equipamento;
5. Volume de Transações;
6. Eficiência do Usuário Final;
7. Entrada de dados “on-line”;
8. Atualização “on-line”;
9. Processamento Complexo;
10. Reutilização de Código;
11. Facilidade de Implantação;
12. Facilidade Operacional;
13. Múltiplos Locais;
14. Facilidade de Mudanças.
012
Tabela 8 – Contagem: consultas externas
013
TEMA 5 – ANÁLISE POR PONTOS DE FUNÇÃO SIMPLIFICANDO COM O
NESMA
014
5.2 Contagem estimativa
1º PASSO:
Encontram-se todos os tipos (ALI, AIE, EE, SE, CE). Não é necessário
a identificação dos TAR e TED de cada função.
2º PASSO:
Todos os ALI e AIE têm sua complexidade avaliada como baixa. Todos
os EE, SE, CE são avaliados como de complexidade.
3º PASSO:
Calcula-se o total de pontos de função não ajustados, utilizando a
classificação de complexidade. A diferença à contagem usual de
pontos de função é que a complexidade não é determinada
individualmente, mas pré-definida para todos.
Exemplo:
O usuário deseja adicionar, alterar, excluir e consultar dados de
Clientes, necessita de 4 diferentes tipos de relatórios contendo dados
calculados; deseja adicionar, alterar, excluir e consultar dados de Produtos,
necessita de um relatório de produtos; deseja consultar o Fornecedor por
meio de seu número e precisa de um relatório sobre Fornecedor com
totalização de resultados. Veja como ficariam essas requisições:
015
Quadro 3 – Requisições
FINALIZANDO
016
desenvolvimento. A precisão da estimativa do tamanho de uma aplicação
varia de acordo com o grau de conhecimento adquirido sobre ela, ou, em
outras palavras, da fase em que se encontra o projeto. Segundo a empresa
Software Produtivity Research, “ao final da fase de desenho do sistema é
possível se fazer estimativas com margem de erro de +/- 10%.” Nesta aula,
apresentamos técnicas em que pudemos mensurar os esforços que teremos
no desenvolvimento de nossas apresentações. Tais métodos fazem parte da
Engenharia de Software como ferramentas que auxiliam o analista a tomar
decisões sobre condução e controle do desenvolvimento das aplicações em
TI.
017
REFERÊNCIAS
018
AULA 3
ENGENHARIA DE SOFTWARE
Olá! Nesta aula, vamos estudar sobre as metodologias ágeis e seus tipos,
pois elas também fazem parte do processo de engenharia de software.
1.2.1 Valores
2
a adaptação a mudanças do sistema tem uma maior importância que
seguir um plano inicial.
1.2.2 Princípios
3
Leitura obrigatória
Para ampliar seus estudos, leia o capítulo 5, itens 1 a 3 do livro:
PRESSMAN, R.; MAXIM, B. Engenharia de software – uma abordagem
profissional. 8. ed. Porto Alegre: Amgh Editora, 2016.
2.1 Princípios
2.1.1 Comunicação
2.1.2 Simplicidade
2.1.3 Feedback
2.1.4 Coragem
2.2 O processo
5
cliente: no XP, o cliente deve trabalhar ou estar com equipe de
desenvolvimento.
Leitura obrigatória
Para ampliar seus estudos, leia o capítulo 5, item 4.
PRESSMAN, R.; MAXIM, B. Engenharia de software – uma abordagem
profissional. 8. ed. Porto Alegre: Amgh Editora, 2016.
TEMA 3 – SCRUM
6
II. Scrum master – É o responsável pelo sucesso do Scrum, ensinando-o
para a equipe de projeto. Deverá verificar se cada pessoa envolvida no
projeto está seguindo os papéis e as regras do Scrum, a fim de garantir
que aquelas não responsáveis pelo processo interfiram no
desenvolvimento.
III. Time – É a equipe. Serão os responsáveis por escolher as
funcionalidades a serem desenvolvidas em cada interação e
desenvolvê-las. A equipe de se autogerenciar. Todos os membros são
coletivamente responsáveis pelo sucesso de cada entrega do
desenvolvimento.
3.1 O processo
Figura 2 – SCRUM
Fonte: Elaborado com base em Agile Software Development with Scrum (Schraber & Beedle).
Leitura obrigatória
Para ampliar seus estudos, leia o capítulo 5, item 2.
PRESSMAN, R.; MAXIM, B. Engenharia de software – uma abordagem
profissional. 8. ed. Porto Alegre: Amgh Editora, 2016.
7
TEMA 4 – ESTIMATIVAS
Figura 3 – Tamanhos/estimativas
carta com valor 0 (zero), indicando que uma estória está finalizada ou é
muito pequena, podendo ser resolvida rapidamente;
9
carta com ? (interrogação), indicando que o membro da equipe não tem o
conhecimento apropriado para estimar/opinar sobre o esforço necessário
para a estória/requerimento.
10
Isso faz com que cada membro da equipe pense por si próprio na hora de
uma decisão da estimativa. Todos avaliam os resultados e verificam se houve
convergência entre as cartas mostradas, ou seja, todas as estimativas têm
valores aproximados para a mesma estória/requerimento.
Se não houver essa convergência, o scrum master solicita aos membros
que mostraram o menor e o maior valor que expliquem o motivo que os levou a
tal decisão. Isso faz com que os integrantes reflitam sobre alguns pontos da
estória/requerimento, o que pode fazer com que mudem os valores propostos
para as estimativas. Então, uma nova rodada é realizada até que as estimativas
cheguem a uma convergência.
A estimativa final será o valor que tiver maior ocorrência ou a média entre
as estimativas informadas. Então, começa uma nova rodada com a leitura da
próxima estória/requerimento pelo product owner. O processo se repete até que
tenha sido concluída a estimativa das estórias dos itens do product backlog.
Leitura obrigatória
Para ampliar seus estudos, leia o capítulo 33, item 9.
PRESSMAN, R.; MAXIM, B. Engenharia de software – uma abordagem
profissional. 8. ed. Porto Alegre: Amgh Editora, 2016.
FINALIZANDO
12
AULA 4
ENGENHARIA DE SOFTWARE
CONTEXTUALIZANDO
TEMA 1 – TERMINOLOGIAS
1.2 Validação
1.3 Verificação
1.4 Teste
02
1.5 Defeito
1.6 Erro
1.7 Falha
2.1 Defeitos
2.2 Teste
2.3 Depuração
03
É uma situação não previsível ocorrida no teste. Depois de revelada a
presença do erro, ele deve ser corrigido. O processo de depuração é a parte
mais imprevisível do processo de teste.
2.4 Falha
2.5 Erro
04
Executar todos os ciclos nos seus limites e dentro de seus intervalos
operacionais;
Executar as estruturas de dados internas.
Nessa ideia, temos o Teste do Caminho Básico. Trata-se de uma técnica
que vai permitir a definição de um conjunto-base de caminhos de testes a serem
executados. Ele é baseado no fluxo de controle e no conceito da complexidade
ciclomática.
Antes, porém, vamos ver uma notação para representar o fluxo de controle.
3.1 Grafos
05
Figura 2 – Regiões de grafo
Exemplo:
08
Nessa técnica, podemos ter alguma dificuldade em quantificar os
testes e acontecer de deixarmos partes essenciais críticas do sistema sem os
devidos testes. Também podemos citar como uma dificuldade nessa técnica
a questão da automatização dos testes.
1. Construa testes isolados uns dos outros: um caso de teste não deve
depender do sucesso de outro para funcionar. Deve ser possível executar
um caso de testes isoladamente, sem executar nenhum outro;
2. Comece definindo uma “Test List”: de modo geral, para uma mesma
classe ou método que será testado, existirão diferentes casos de teste.
Devem-se listar todos primeiro;
3. Primeiro o teste: é chance de refletir sobre o projeto das classes do
sistema e controlar o escopo. A codificação deve atender somente o
necessário para o teste corrente;
4. Primeiro a assertiva: é necessário refletir sobre o que significará se o teste
executar com sucesso antes de seguirmos adiante.
5. Dados para teste: para realizar o teste, procure não escolher números
complexos caso eles não tenham algum significado para o teste. Seja
simples. Não passe os mesmos valores para diferentes parâmetros. Ex.:
Ao fazer o teste de um método Operacao (int x, int y), não o faça utilizando
valores iguais Operacao (2,2). O método “Operacao” poderá inverter o “x”
e o “y” fazendo o teste passar assim mesmo, dificultando sua análise.
Procure usar informações do mundo real em seu sistema.
6. Dados com significado evidente: procurar codificar de forma explicativa
(comentar), pois vale lembrar que estamos escrevendo testes para outras
pessoas lerem, e não apenas para ser executados pelo computador.
FINALIZANDO
010
constantemente testado; nesse caso, pelo cliente. E ninguém deseja que ele
encontre algum tipo de erro.
011
REFERÊNCIA
012
AULA 5
ENGENHARIA DE SOFTWARE
CONTEXTUALIZANDO
TEMA 1 – CONCEITOS
1.1 Qualidade
1.2 Funcionalidade
1.3 Resumindo
02
Leitura complementar
Engenharia de Software – Uma abordagem profissional. 8.ª edição. Por
Roger Pressman e Bruce Maxim. Capítulo 21.
03
2.2.1 Revisão
2.2.2 Operação
2.2.3 Transição
3.1 Padrões
04
3.3 Testes
Leitura complementar
Engenharia de Software – Uma abordagem profissional, 8.ª edição, por
Roger Pressman e Bruce Maxim – capítulo 21, itens 1 e 2.
05
Revisões de qualidade, que farão uma análise técnica do produto ou
documentação para verificar se existem inconsistências entre a
especificação e o projeto, entre o código e documentação e também
assegurar se padrões de qualidade foram seguidos.
Leitura complementar
Engenharia de Software – Uma abordagem profissional. 8. ed. Por Roger
Pressman e Bruce Maxim. Capítulo 21, item 3.
06
também se modificava. Interessante também era a punição para quem não
aceitava a mudança: a morte.
A ISO 9000 descreve elementos de garantia da qualidade em termos gerais
que podem ser aplicados a qualquer empresa, independentemente do tipo de
produtos ou serviços oferecidos. A necessidade das organizações se tornarem
competitivas passa a ser enfatizada como motivo para a adoção de sistemas que
resultem na qualidade. A ISO tem como princípios:
07
Quadro 1 – Características da norma NBR 13596
08
os requisitos mínimos para assegurar a qualidade de produtos de software e
serviços, porém não define modelos ou impõe sistemas de qualidade.
Ela agrupa as atividades do ciclo de vida em nove categorias: análise crítica
do contrato, especificação dos requisitos do comprador, planejamento do
desenvolvimento, planejamento da qualidade, projeto e implementação, ensaios
e validação, aceitação, cópia, entrega e instalação, manutenção.
Ela agrupa as atividades relacionadas a suporte em nove situações: gestão
de configuração, controle de documentos, registros da qualidade, medição,
regras, práticas e convenções, ferramentas e técnicas, aquisição, produto de
software incluído e treinamento.
A seguir, o fluxo do processo para a certificação.
09
Quadro 3 – Normas ISO e características
Leitura complementar
Engenharia de Software – Uma abordagem profissional 8. ed. Por Roger
Pressman e Bruce Maxim. Capítulo 21, item 8.
FINALIZANDO
010
REFERÊNCIAS
011
AULA 6
ENGENHARIA DE SOFTWARE
CONTEXTUALIZANDO
02
1.2 Problema da manutenção múltipla
Ocorre quando cada desenvolvedor trabalha com uma cópia “local” do que
seria o mesmo software. Isso dificultará a identificação das funcionalidades que
foram implementadas e em quais versões, bem como quais erros foram corrigidos.
Podemos evitá-lo por intermédio do uso de uma biblioteca central com o software.
Nessa proposta, cada software é copiado para a biblioteca sempre que for
alterado. Contudo, ainda não é o ideal.
03
O desenvolvedor B encontra o software e corrige outro erro em sua versão do
componente, sem saber do defeito corrigido por A. O desenvolvedor B copia sua
versão do componente para a biblioteca central. Além do trabalho de A ser
desperdiçado, a versão que está na biblioteca central continua apresentando erro,
sendo que o desenvolvedor A pensa que o problema foi resolvido.
Para resolver essa situação, precisamos ter um mecanismo de controle
para gerenciar a entrada e saída das versões da biblioteca central.
Leitura complementar
Engenharia de Software: uma abordagem profissional. 8. Ed. Por Roger
Pressman e Bruce Maxim. Capítulo 29.
04
Quadro 1 – Tarefas de um gerenciamento de configuração de software
05
3.1 Check in/Check out
06
TEMA 4 – CONTROLE DE MUDANÇAS
07
4.1 Ferramentas de GCS
Leitura complementar
Engenharia de Software: uma abordagem profissional. 8. ed. Por Roger
Pressman e Bruce Maxim. Capítulo 29.
08
5.1 Confidencialidade
5.2 Integridade
5.3 Disponibilidade
5.4.1 Financeiros
09
foram destruídas, causando bilhões de dólares em perdas financeiras para os
proprietários. Não há como mensurar as perdas financeiras resultantes da
destruição de fauna e flora selvagem.
010
Não salvar senhas de acesso em navegadores;
Ter controle de acesso aos sistemas;
Ter logs para saber quem acessou o sistema e o porquê;
Trocas automáticas de senha de tempos em tempos.
Ter controle de acesso aos locais de desenvolvimento.
Leitura complementar
Engenharia de Software: uma abordagem profissional. 8. ed. Por Roger
Pressman e Bruce Maxim. Capítulo 27.
FINALIZANDO
011
REFERÊNCIAS
012