You are on page 1of 74

 Revisão de conceitos e exercícios aplicados

de Engenharia de Software.
 Software Engineering — A Practioner’s
Approach (de Roger Pressman)
 Software Engineering (de Ian Sommerville)
 Engenharia de Software, Robert Pressmann
 Estudo ou aplicação de abordagens
sistemáticas, econômicas e quantificáveis para o
desenvolvimento, operação e manutenção de
software de qualidade.

 Engenheiros de software devem adotar uma


abordagem sistemática e organizada para seu
trabalho e usar ferramentas e técnicas/métodos
apropriados dependendo do problema a ser
solucionado, das restrições de desenvolvimento e
dos recursos disponíveis
 Programas de computador e documentação
associada
 Produtos de software podem ser
desenvolvidos para um cliente particular ou
podem ser desenvolvidos para um mercado
geral.
 Controle sobre o desenvolvimento de
software dentro de custos, prazos e níveis de
qualidade desejados;;
 Produtividade no desenvolvimento, operação
e manutenção de software;
 Qualidade versus Produtividade;
 Permitir que profissionais tenham controle
sobre o desenvolvimento de software dentro
de custos, prazos e níveis de qualidade
desejados;
• A Engenharia de Software se refere a software
(sistemas) desenvolvidos por grupos ao invés
de indivíduos;
• usa princípios de engenharia ao invés de arte,
e inclui tanto aspectos técnicos quanto não
técnicos.
 Elementos  Atividades
◦ Modelos do ciclo de ◦ Modelagem do negócio
vida do software ◦ Elicitação de requisitos
◦ Análise e Projeto
◦ Linguagens
◦ Implementação
◦ Métodos ◦ Testes
◦ Ferramentas ◦ Distribuição
◦ Processos ◦ Planejamento
◦ Gerenciamento
◦ Gerência de Configuração
e Mudanças
◦ Manutenção
O software que satisfaz os requisitos solicitados
pelo usuário. Deve ser fácil de manter, ter boa
performance, ser confiável e fácil de usar
Alguns atributos de qualidade
• Manutenibilidade
• O software deve evoluir para atender os requisitos
que mudam
• Eficiência
• O software não deve desperdiçar os recursos do
sistema
• Usabilidade
• O software deve ser fácil de usar pelos usuários para
os quais ele foi projetado
 Correto
◦ A loja não pode deixar de cobrar por produtos
comprados pelo consumidor
 Robusto e altamente disponível
◦ A loja não pode parar de vender
 Eficiente
◦ O consumidor não pode esperar
◦ A empresa quer investir pouco em recursos
computacionais (CPU, memória, rede)
 Amigável e fácil de usar
◦ A empresa quer investir pouco em treinamento
 Altamente extensível e adaptável
◦ A empresa tem sempre novos requisitos (para ontem!)
◦ A empresa quer o software customizado do seu jeito
(interface, teclado, idioma, moeda, etc.)
 Reusável
◦ Várias empresas precisam usar partes de um mesmo
sistema
 Aberto, compatível, de fácil integração com outros
sistemas
◦ A empresa já tem controle de estoque, fidelização,
etc.
 Portável e independente de plataforma (hw e sw)
◦ A empresa opta por uma determinada plataforma
 Baixo custo de instalação e atualização
◦ A empresa tem um grande número de PDVs
 Custo de desenvolvimento reduzido
◦ A empresa consumidora quer investir pouco em
software
◦ A empresa produtora tem que oferecer “software
barato”
 Tempo de desenvolvimento reduzido
◦ Suporte rápido às necessidades do mercado
Nem tanto resultado de baixos custos de
desenvolvimento, mas principalmente da
distribuição dos custos entre vários clientes.

Reuso, extensibilidade e adaptabilidade são


essenciais para viabilizar tal distribuição.
 Qualidade de software e produtividade
garantem:
◦ Disponibilidade de serviços essenciais
◦ Segurança de pessoas
◦ Competitividade das empresas
 Produtores
 Consumidores
 Uma representação abstrata e
simplificada do processo de
desenvolvimento software, tipicamente
mostrando as principais atividades e
dados usados na produção e
manutenção de software
 Cascata
 Modelos Iterativos
◦ Espiral
◦ Incremental (ex: do RUP)
 ...
 Requisitos de sistema SEMPRE evoluem
durante curso de um projeto. Assim a
iteração do processo sempre faz parte do
desenvolvimento de grandes sistemas
 Iterações podem ser aplicadas a quaisquer
dos modelos de de ciclo de vida
 Duas abordagens (relacionadas)
◦ Desenvolvimento espiral
◦ Desenvolvimento incremental
EXERCÍCIO
A figura ao lado ilustra o paradigma
do ciclo de vida clássico da
Engenharia de Software que é
composto de seis atividades.
Observe que estão faltando duas
atividades. As duas atividades que
completam, na ordem correta, a
sequência acima são:
a) Estratégia e Teste.
b) Estratégia e Planejamento.
c) Análise e Teste.
d) Análise e Planejamento.
e) Análise e Estratégia.
EXERCÍCIO
A figura ao lado ilustra o paradigma
do ciclo de vida clássico da
Engenharia de Software que é
composto de seis atividades.
Observe que estão faltando duas
atividades. As duas atividades que
completam, na ordem correta, a
seqüência acima são:
a) Estratégia e Teste.
b) Estratégia e Planejamento.
c) Análise e Teste.
d) Análise e Planejamento.
e) Análise e Estratégia.
Acrescenta aspectos gerenciais ao processo de
desenvolvimento de software.
• análise de riscos em intervalos regulares do processo
de desenvolvimento de software
• planejamento
• controle
• tomada de decisão
O processo é representado como uma espiral em vez de
uma seqüência de atividades
Cada volta na espiral representa uma fase no processo
Não há fases fixas como especificação ou projeto - voltas
na espiral são escolhidas dependendo do que é
requerido
Riscos são avaliados explicitamente e resolvidos ao longo
do processo
 EXERCÍCIO
O modelo espiral para a Engenharia de
Software foi desenvolvido acrescentando-
se novos elementos às melhores
características de outros modelos.
Segundo o modelo espiral, a
determinação dos objetivos, alternativas e
restrições está relacionada à atividade de:
a) avaliação feita pelo cliente.
b) análise de risco.
c) engenharia.
d) planejamento.
e) prototipação.
EXERCÍCIO
Analise as seguintes afirmações relativas à Engenharia de Software:
I. A análise de requisitos é responsável pela especificação dos
requisitos de software e hardware que serão utilizados durante o
processo de desenvolvimento de um sistema.
II. A análise de requisitos define a metodologia de programação a ser
utilizada no desenvolvimento do sistema.
III. A especificação de requisitos fornece ao desenvolvedor e ao
cliente os parâmetros para avaliar a qualidade logo que o sistema
for construído.
IV. A análise de requisitos possibilita que o engenheiro de software
especifique a função e o desempenho do sistema e estabeleça
quais são as restrições de projeto que o sistema deve atender.
Estão corretos os itens:
a) I e II
b) II e III
c) III e IV
d) I e III
e) II e IV
EXERCÍCIO
Analise as seguintes afirmações relativas à Engenharia de Software:
I. A análise de requisitos é responsável pela especificação dos
requisitos de software e hardware que serão utilizados durante o
processo de desenvolvimento de um sistema.
II. A análise de requisitos define a metodologia de programação a ser
utilizada no desenvolvimento do sistema.
III. A especificação de requisitos fornece ao desenvolvedor e ao
cliente os parâmetros para avaliar a qualidade logo que o sistema
for construído.
IV. A análise de requisitos possibilita que o engenheiro de software
especifique a função e o desempenho do sistema e estabeleça
quais são as restrições de projeto que o sistema deve atender.
Estão corretos os itens:
a) I e II
b) II e III
c) III e IV
d) I e III
e) II e IV
EXERCÍCIO
Considere as seguintes assertivas sobre o processo
evolutivo de software conhecido com modelo em
espiral WINWIN:
I- Cada passo da espiral termina com um conjunto de
atividades de negociação.
II- Cada atividade de negociação inicia com a
identificação das partes interessadas.
III- A definição do Ciclo de vida arquitetural é um dos
três marcos do processo conhecidos como pontos de
ancoragem (anchor points).
As assertivas corretas são:
(A) somente I;
(B) somente II;
(C) somente III;
(D) somente II e III;
(E) I, II e III.
EXERCÍCIO
Considere as seguintes assertivas sobre o processo
evolutivo de software conhecido com modelo em
espiral WINWIN:
I- Cada passo da espiral termina com um conjunto de
atividades de negociação.
II- Cada atividade de negociação inicia com a
identificação das partes interessadas.
III- A definição do Ciclo de vida arquitetural é um dos
três marcos do processo conhecidos como pontos de
ancoragem (anchor points).
As assertivas corretas são:
(A) somente I;
(B) somente II;
(C) somente III;
(D) somente II e III;
(E) I, II e III.
EXERCÍCIO
Considere as seguintes assertivas sobre o processo de
desenvolvimento de software conhecido como
Engenharia de Software Baseada em Componentes
(ESBC):
I- O ESBC dá ênfase ao paralelismo entre tarefas.
II- A atividade de Engenharia de Domínio produz uma
lista de componentes que podem ser reutilizados.
III- O modelo de troca de dados é um dos
ingredientes arquiteturais necessários para a
atividade de composição de componentes.
As assertivas corretas são:
(A) somente I;
(B) somente II;
(C) somente III;
(D) somente I e II;
(E) I, II e III.
EXERCÍCIO
Considere as seguintes assertivas sobre o processo de
desenvolvimento de software conhecido como
Engenharia de Software Baseada em Componentes
(ESBC):
I- O ESBC dá ênfase ao paralelismo entre tarefas.
II- A atividade de Engenharia de Domínio produz uma
lista de componentes que podem ser reutilizados.
III- O modelo de troca de dados é um dos
ingredientes arquiteturais necessários para a
atividade de composição de componentes.
As assertivas corretas são:
(A) somente I;
(B) somente II;
(C) somente III;
(D) somente I e II;
(E) I, II e III.
 EXERCÍCIO
O modelo espiral para a Engenharia de
Software foi desenvolvido acrescentando-
se novos elementos às melhores
características de outros modelos.
Segundo o modelo espiral, a
determinação dos objetivos, alternativas e
restrições está relacionada à atividade de:
a) avaliação feita pelo cliente.
b) análise de risco.
c) engenharia.
d) planejamento.
e) prototipação.
 Em vez de entregar o sistema como um todo,
o desenvolvimento e a entrega são divididos
em incrementos, com cada incremento
entregando parte da funcionalidade
requerida
 Requisitos dos usuários são priorizados e os
requisitos de mais alta prioridade são
incluídos nas iterações iniciais
 Uma vez que o desenvolvimento de um
incremento é iniciado, os requisitos são
"congelados". Embora os requisitos possam
continuar a evoluir para incrementos
posteriores
 Notação com sintaxe e semântica bem
definidas
◦ com representação gráfica ou textual
 Usada para descrever os artefatos gerados
durante o desenvolvimento de software
 Exemplos: UML, Java
 Descrição sistemática de como deve-se
realizar uma determinada atividade ou tarefa
 A descrição é normalmente feita através de
padrões e guias
 Exemplos: Método para descoberta das
classes de análise no RUP.
 Provê suporte computacional a um
determinado método ou linguagem
 Ambiente de desenvolvimento: conjunto de
ferramentas integradas (CASE)
 Exemplos: Rational Rose, JBuilder
 Conjunto de atividades
◦ bem definidas
◦ com responsáveis
◦ com artefatos de entrada e saída
◦ com dependências entre as mesmas e ordem de
execução
◦ com modelo de ciclo de vida
 Um conjunto de atividades cujo objetivo é o
desenvolvimento ou a evolução do software
 Conjunto coerente de atividades para
especificação, projeto, implementação e teste
de sistemas de software
 Conjunto de métodos + processo
EXERCÍCIO
Analise as seguintes afirmações relacionadas à Engenharia de Software, modelos de
desenvolvimento e análise de requisitos:

I. O modelo de desenvolvimento denominado 4GT (técnicas de quarta geração) caracteriza-se pelo


desaparecimento da atividade de Teste, que normalmente é a última atividade para os demais
modelos de desenvolvimento de software. Essa característica especial do modelo 4GT é
consequência do uso de ferramentas de desenvolvimento de software, que permite ao
desenvolvedor especificar características do software em um nível elevado, garantindo a
qualidade em qualquer etapa do ciclo de vida do projeto.

II. Durante a análise de requisitos, são especificados a função e o desempenho do software, bem
como a sua interface com outros elementos do sistema. Nessa etapa, também, são estabelecidas
as restrições de projeto, a que o software deve atender.

III. Durante a análise de requisitos, o principal foco do analista recai sobre "como" e não sobre "o
que". Nesse caso, o analista concentra-se em como o sistema produz ou consome dados, como
o sistema deve executar as funções e como as restrições e interfaces são definidas.

IV. Durante a especificação dos requisitos, são estabelecidos os critérios que permitirão ao
desenvolvedor e ao cliente avaliar a qualidade, assim que o software for construído.

Indique a opção que contenha todas as afirmações verdadeiras.


a) I e II
b) II e III
c) II e IV
d) I e III
e) III e IV
EXERCÍCIO
Analise as seguintes afirmações relacionadas à Engenharia de Software, modelos de
desenvolvimento e análise de requisitos:

I. O modelo de desenvolvimento denominado 4GT (técnicas de quarta geração) caracteriza-se pelo


desaparecimento da atividade de Teste, que normalmente é a última atividade para os demais
modelos de desenvolvimento de software. Essa característica especial do modelo 4GT é
consequência do uso de ferramentas de desenvolvimento de software, que permite ao
desenvolvedor especificar características do software em um nível elevado, garantindo a
qualidade em qualquer etapa do ciclo de vida do projeto.

II. Durante a análise de requisitos, são especificados a função e o desempenho do software, bem
como a sua interface com outros elementos do sistema. Nessa etapa, também, são estabelecidas
as restrições de projeto, a que o software deve atender.

III. Durante a análise de requisitos, o principal foco do analista recai sobre "como" e não sobre "o
que". Nesse caso, o analista concentra-se em como o sistema produz ou consome dados, como
o sistema deve executar as funções e como as restrições e interfaces são definidas.

IV. Durante a especificação dos requisitos, são estabelecidos os critérios que permitirão ao
desenvolvedor e ao cliente avaliar a qualidade, assim que o software for construído.

Indique a opção que contenha todas as afirmações verdadeiras.


a) I e II
b) II e III
c) II e IV
d) I e III
e) III e IV
 Engenharia de software é uma disciplina de
engenharia que está envolvida com todos os
aspectos da produção de software
 Produtos de software consistem de programas
desenvolvidos e documentação associada. Alguns
atributos de qualidade do produto são
manutenibilidade, eficiência e usabilidade
 O processo de software consiste nas atividades que
são envolvidas no desenvolvimento de produtos de
software
 EXERCÍCIO
Segundo a abordagem do paradigma do ciclo de vida
clássico para a Engenharia de Software, é correto
afirmar que, durante a atividade de:
a) análise e engenharia de sistemas, as exigências são
traduzidas em uma representação do software, que
pode ser avaliada quanto à quantidade, antes que a
codificação se inicie.
b) codificação, o projeto deve ser traduzido em uma
forma legível por máquina. Quando o projeto é bem
detalhado, essa etapa pode ser realizada
mecanicamente.
c) prototipação, são realizados os testes para garantir
que a entrada definida produza resultados reais que
concordem com os resultados exigidos.
d) projeto, requisitos em nível de sistema são
coletados, com uma pequena quantidade de projeto
e análise de alto nível.
e) análise de riscos, ocorrem adaptações a fim de
acomodar mudanças no ambiente externo e
acréscimos funcionais ou de desempenho.
EXERCÍCIO
Segundo a abordagem do paradigma do ciclo de vida
clássico para a Engenharia de Software, é correto
afirmar que, durante a atividade de:
a) análise e engenharia de sistemas, as exigências são
traduzidas em uma representação do software, que
pode ser avaliada quanto à quantidade, antes que a
codificação se inicie.
b) codificação, o projeto deve ser traduzido em uma
forma legível por máquina. Quando o projeto é bem
detalhado, essa etapa pode ser realizada
mecanicamente.
c) prototipação, são realizados os testes para garantir
que a entrada definida produza resultados reais que
concordem com os resultados exigidos.
d) projeto, requisitos em nível de sistema são
coletados, com uma pequena quantidade de projeto
e análise de alto nível.
e) análise de riscos, ocorrem adaptações a fim de
acomodar mudanças no ambiente externo e
acréscimos funcionais ou de desempenho.
 Métodos são formas organizadas de produzir
software. Eles incluem sugestões para o processo a
ser seguido, as notações a serem usadas, regras
que governam as descrições do sistema que são
produzidas e diretrizes de projeto
 Ferramentas CASE são sistemas de software que
são projetados para suportar as atividades
rotineiras no processo de software, como edição de
diagramas de projeto e verificação de consistência
dos diagramas
 EXERCÍCIO
 Assinale a metodologia de
desenvolvimento de software que tem
como prática a programação em pares.
 a) MSF
 b) XP
 c) RUP
 d) PMBOK
 e) CMMI
EXERCÍCIO
Assinale a metodologia de desenvolvimento
de software que tem como prática a
programação em pares.
a) MSF
b) XP
c) RUP
d) PMBOK
e) CMMI
CMM - Capability Maturity Model

 Definido no Software Engineering Institute


(SEI) - Carnegie Mellon University
 Motivação: Projetos do Departamento de
Defesa
 5 Níveis de Maturidade para o Processo:
descreve princípios e práticas dos quais
depende a maturidade do processo de
software
tem como objetivo auxiliar as organizações a
aumentarem a maturidade de seu processo por um
caminho evolutivo
pode ser usado por empresas contratantes para
identificar as características do processo usado por
seus fornecedores
 descreve princípios e práticas dos quais
depende a maturidade do processo de
software
tem como objetivo auxiliar as organizações a
aumentarem a maturidade de seu processo por um
caminho evolutivo
pode ser usado por empresas contratantes para
identificar as características do processo usado por
seus fornecedores
CMM
Características dos Níveis

 Inicial
o processo é caracterizado como ad-hoc e
algumas vezes caótico. Poucos processos são
definidos e o êxito depende do esforço
inidividual
CMM
Características dos Níveis

 Repetível
é estabelecido um processo gerencial
basicamente para monitorar custos,
cronograma e funcionalidade. A disciplina
necessária ao processo está estabelecida de
forma a poder ser repetida com sucesso em
projetos com aplicações semelhantes
CMM

 Definido
o processo de software tanto para as
atividades de gerência quanto de engenharia
está documentado, normalizado e integrado
em um processo padrão para a organização.
Todos os projetos da organização usam o
processo
CMM

 Gerenciado
são coletadas medidas detalhadas da
qualidade do processo e do produto O
processo e o produto são quantitativamente
entendidos e controlados
CMM

 Otimizado
o processo sofre contínuas melhorias através
do feedback quantitativo do processo e da
introdução de idéias e tecnologias inovadoras
5. Otimizado melhoria
contínua

4. Gerenciado
medição e
controle

3. Definido
padronização e
consistência

2. Repetível
disciplina e estabilidade

1. Inicial
Imprevisível
CMM
1-
Enorme dificuldade para previsão de:
 cronogramas
 orçamento
 funcionalidades
 qualidade do produto

Gerência Reativa
CMM
2
Disciplinado e Estável
 gerenciamento de projeto
 experiência anterior guia o planejamento de novos
projetos
 existência de padrões
 acompanhamento de custos, cronogramas e
funcionalidades
Gerência Reativa
CMM
3
 todos os projetos usam uma versão aprovada
e individualmente adaptada do processo
padrão da organização para o
desenvolvimento e manutenção de software
 evolução do produto é visível através do
processo

Gerência Pró-ativa
CMM
4
 processo de software e qualidade do
produto medidos e controlados
quantitativamente

bases objetivas para a tomada de decisão


CMM
5 Nível Otimizado

Melhoria contínua do processo proporcionada por:


• realimentação quantitativa do processo
• novas idéias e tecnologias

capacidade gerencial para estimar e


acompanhar quantitativamente o
impacto e a eficácia das mudanças
CMM

Níveis de Maturidade

contém

Áreas-chave (KPAs)

metas
definidas para um único nível
de maturidade
identificam as questões
essenciais para caracterizar um
nivel

Atividades Realizadas
CMM - Níveis de Maturidade e KPAs
5. Otimizado Gerência de mudanças no processo
Gerência de mudanças na tecnologia
Prevenção de defeitos

4. Gerenciado Gerência da qualidade de software


Gerência quantitativa do processo

3. Definido Revisões
Coordenação entre grupos
Engenharia do produto de software
Gerência de software integrada
Programa de treinamento
Definição do processo da organização
Foco no processo da organização
2. Repetível Gerência de configuração
Garantia da qualidade de software
Gerência de contratos de software
Acompanhamento de projetos de software
Planejamento de projetos de software
Gerência de requisitos
1. Inicial
Considere as seguintes assertivas sobre o
processo de melhoria da qualidade de software
conhecida como Capability Maturity Model
Integrated – CMMI:
I- Uma das áreas de conhecimento
disponibilizadas pelo CMMI é a Engenharia de
Sistemas (Systems Engineering).
II- O CMMI usa dois tipos de representação dos
modelos: em estágios e continuada.
III- O nível de capacidade de uma área de
processo é avaliado em uma escala que vai de 1
a 5.
 As assertivas corretas são:
 (A) somente I;
 (B) somente II;
 (C) somente III;
 (D) somente I e II;
 (E) I, II e III.
Considere as seguintes assertivas sobre o
processo de melhoria da qualidade de software
conhecida como Capability Maturity Model
Integrated – CMMI:
I- Uma das áreas de conhecimento
disponibilizadas pelo CMMI é a Engenharia de
Sistemas (Systems Engineering).
II- O CMMI usa dois tipos de representação dos
modelos: em estágios e continuada.
III- O nível de capacidade de uma área de
processo é avaliado em uma escala que vai de 1
a 5.
As assertivas corretas são:
(A) somente I;
(B) somente II;
(C) somente III;
(D) somente I e II;
(E) I, II e III.
5 A Em Otimização

4 B Gerenciado Quantitativamente

C Definido
3
D Largamente Definido

E Parcialmente Definido
2
F Gerenciado

G
Parcialmente Gerenciado
Relacionamento
com o CMMI
MR-MPS
A que nível do CMMI é equivalente o nível de
maturidade B do MPS.Br?
a) 1
b) 2
c) 3
d) 4
e) 5
A que nível do CMMI é equivalente o nível de
maturidade B do MPS.Br?
a) 1
b) 2
c) 3
d) 4
e) 5
O modelo CMMI foi concebido para apoiar a
implantação e a mensuração de maturidade
organizacional no gerenciamento de serviços
operacionais de TI.
 Certo
 Errado
O modelo CMMI foi concebido para apoiar a
implantação e a mensuração de maturidade
organizacional no gerenciamento de serviços
operacionais de TI.
 Certo
 Errado
Aspectos da disciplina de gerência de
configuração e mudanças, proposta no RUP,
com ênfase na construção e manutenção de
uma base de gerência de configuração,
também são apresentados nos modelos
CMMI, ITIL e COBIT.
 Certo
 Errado
Aspectos da disciplina de gerência de
configuração e mudanças, proposta no RUP,
com ênfase na construção e manutenção de
uma base de gerência de configuração,
também são apresentados nos modelos
CMMI, ITIL e COBIT.
 Certo
 Errado
Aspectos da disciplina de gerência de
configuração e mudanças, proposta no RUP,
com ênfase na construção e manutenção de
uma base de gerência de configuração,
também são apresentados nos modelos
CMMI, ITIL e COBIT.
 Certo
 Errado
Aspectos da disciplina de gerência de
configuração e mudanças, proposta no RUP,
com ênfase na construção e manutenção de
uma base de gerência de configuração,
também são apresentados nos modelos
CMMI, ITIL e COBIT.
 Certo
 Errado