Escolar Documentos
Profissional Documentos
Cultura Documentos
Abraços.
Profa Patrícia Lima Quintão
patricia@pontodosconcursos.com.br
Twitter: http://www.twitter.com/pquintao
Facebook: http://www.facebook.com/patricia.quintao
Roteiro da Aula
-Notas de Aula.
- Questões de provas comentadas.
- Bibliografia.
- Considerações finais.
- Lista das questões apresentadas na aula.
- Gabarito.
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
-NOTAS DE AULA-
Antes de partir para as questões, vamos a algumas observações importantes!
Definição e Objetivos
O Instituto de Engenharia de Software (SEI – Software Engineering Institute)
foi criado para aumentar a capacitação da indústria de software dos EUA. Em
meados da década de 1980, o SEI iniciou um estudo de formas de avaliação de
capacitação de fornecedores. O resultado dessa avaliação de capacitação foi o
Modelo de Maturidade de Capacitação (CMM – Capability Maturity Model) do
SEI. Esse modelo exerceu forte influência no convencimento da comunidade de
engenharia de software em considerar seriamente o aprimoramento de
processos.
O modelo CMM que tem sido largamente adotado pela comunidade de software
internacional é focado na capacidade organizacional e categoriza as
organizações em cinco níveis de maturidade, desde um processo ad hoc e
desorganizado (nível 1), até um estágio altamente gerenciado de melhoria
contínua (nível 5).
Esses níveis de maturidade são definidos em áreas-chave de processo, que
por sua vez, possuem metas que devem ser atingidas por meio da
implementação de práticas-chaves, categorizadas no que o modelo chama de
características comuns (VASCONCELOS, 2006).
O CMM para software foi seguido por uma variedade de outros modelos de
maturidade de capacitação. Assim, no mercado, existem vários modelos e não
apenas “um CMM”. Existe o SW-CMM (software-CMM), voltado ao
desenvolvimento e manutenção de software; o SECM (Systems Engineering
Capability Model), voltado à engenharia de sistemas; o SACMM (Software
Acquisition Capability Maturity Model), voltado ao processo de compras ou
aquisição; entre outros.
Outras organizações desenvolveram modelos de maturidade de processos
semelhantes. A abordagem do SPICE para avaliação de capacitação e o
aprimoramento de processos é mais flexível do que o modelo do SEI. Ele inclui
níveis de maturidade comparáveis aos níveis do SEI, mas também identifica
processos, como processos cliente-fornecedor, que atravessam esses níveis. À
medida que a maturidade aumenta, o desempenho dos processos principais
deve melhorar.
Assim, em uma tentativa de integrar a grande quantidade de modelos que
foram desenvolvidos (entre eles os seus próprios modelos), o SEI embarcou
em um novo programa para desenvolver um Modelo Integrado de
Maturidade e de Capacidade (CMMI - Capability Maturity Model
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 2
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
Conceitos Básicos
Segundo destaca a revista “Engenharia de Software Magazine”, na edição 21,
o modelo CMMI possui duas abordagens: contínua e por estágios,
permitindo à organização optar pela mais adequada a seu contexto.
Atendendo a requisitos de “componentização”, a versão 1.2 do CMMI
apresenta tais abordagens reunidas em um mesmo documento, dentro do
escopo de cada constelação.
Uma constelação é uma coleção de componentes do CMMI que
compreende um modelo, seus materiais de treinamento e documentos
relacionados à avaliação para uma área de interesse. “Adições” podem
ser usadas para expandir constelações com conteúdos específicos adicionais.
Atualmente, três constelações (ou modelos) são suportadas pela versão 1.2 do
CMMI:
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 3
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
Testes de Software
O teste é somente um elemento de um conceito mais amplo da engenharia de
software, conhecido como Verificação e Validação.
• A verificação refere-se ao conjunto de atividades que garante que o
software realiza corretamente uma função específica.
• A validação refere-se a um conjunto diferente de atividades que
garante que o software que foi construído e é rastreável às exigências do
cliente. Sob outro ponto de vista, proposto por Boehm:
• Verificação: "Estamos construindo certo o produto?"
• Validação: "Estamos construindo o produto certo?"
Teste Caixa-branca
O teste estrutural é também chamado de teste de caixa-branca ou
orientado à lógica. A técnica de caixa-branca avalia o comportamento
interno do componente de software, trabalhando diretamente sobre o código
fonte do componente de software para avaliar aspectos tais como: teste de
condição, teste de fluxo de dados, teste de ciclos, teste de caminhos lógicos,
códigos nunca executados. Podemos dizer que os testes caixa-branca são
baseados em um exame rigoroso do detalhe procedimental e que caminhos
lógicos e colaborações entre componentes são testadas.
Testes de Integração
O teste de integração é uma técnica sistemática para a construção da
estrutura do programa, realizando testes para descobrir erros associados a
interface. O objetivo deste teste é construir a estrutura de programa que foi
determinada pelo projeto a partir dos testes realizados em unidades.
Mesmo que todos os módulos estejam funcionando individualmente, não se
pode garantir que eles funcionarão em conjunto.
– Dados podem ser perdidos na interface
– Imprecisão aceitável individualmente pode ser amplificada
– Estruturas de dados globais podem apresentar problemas
O Teste de integração é uma técnica sistemática para construir a arquitetura
do software enquanto se conduz testes para descobrir erros.
Abordagens de Integração
• Abordagem big-bang
– Todos os componentes são combinados com antecedência.
– O programa inteiro é testado de uma vez.
– Usualmente resulta em caos!
• A correção é difícil, porque fica complicado isolar as causas dos erros.
• Uma vez corrigidos os erros, novos erros aparecem.
• Integração incremental
– É a antítese da abordagem big-bang.
– O programa é construído e testado em pequenos incrementos.
– Erros são mais fáceis de isolar e corrigir.
– Pode ser aplicada uma interface sistemática de testes.
– Há várias estratégias incrementais de integração.
• Integração descendente
• Integração ascendente
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 7
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
• Teste de regressão
• Teste fumaça
Integração Descendente
– Na integração descendente (top-down) os módulos são integrados
movendo-se de cima para baixo na hierarquia de controle.
– Começa pelo módulo de controle principal.
– Os módulos subordinados são incorporados à estrutura de uma de duas
maneiras:
• Primeiro-em-profundidade (depth-first)
• Primeiro-em-largura (breadth-first)
Integração Ascendente
• Na integração ascendente (bottom-up) os módulos são integrados movendo-
se de baixo para cima na hierarquia de controle.
– Inicia a construção e teste pelos módulos atômicos.
– Elimina a necessidade de pseudocontrolados complexos.
Integração Ascendente
– Desvantagem: o programa como um todo não é testado até o final.
– Vantagem: ausência de pseudocontrolados e projeto de casos de teste
facilitados.
DIMENSÕES DO TESTE
A realização de testes é, quase sempre, limitada por restrições de cronograma
e orçamento; eles determinam quantos testes será possível executar. É
importante que os testes sejam bem planejados e desenhados, para conseguir-
se o melhor proveito possível dos recursos alocados para eles.
No planejamento temos que nos preocupar com:
• Quando testar?
• O que testar?
• Como testar?
• Qual Ambiente do teste executar o teste?
Devemos:
• Planejar os testes de forma organizada
• Testar a aplicação com bastante precisão.
“Afinal, mesmo que você não esteja vendo os “bugs”, eles estarão lá na
aplicação, esperando para ser encontrado e aguardando o momento certo para
aparecer...”. (SQA User Mailing List)
• Teste de Documentação
• Teste de Integridade
• Teste de Segurança
Comentários
1. Inicial.
2. Gerenciado.
3. Definido.
4. Gerenciado Quantitativamente.
5. Em Otimização ou Otimizado.
Comentários
Para dar suporte àqueles que utilizam a abordagem por estágios, todos os
modelos CMMI trazem níveis de maturidade em seu desenho e conteúdo (vide
figura a seguir).
• Nível 1 – Inicial
É o nível de maturidade CMMI mais baixo. Em geral, as organizações
desse nível têm processos imprevisíveis que são pobremente controlados
e reativos. Nesse nível de maturidade os processos são normalmente “ad
hoc” e caóticos. A organização geralmente não fornece um ambiente
estável.
• Nível 2 – Gerenciado
Neste nível, o foco é o gerenciamento básico de projetos da organização,
proporcionando-lhes a garantia de que os requisitos são gerenciados,
planejados, executados, medidos e controlados. Quando essas práticas
são adequadas, os projetos são executados e controlados de acordo com
o planejado.
• Nível 3 – Definido
Neste nível, processos são bem caracterizados, compreendidos e
descritos em padrões, procedimentos, ferramentas e métodos. O
conjunto de processos padrão da organização, que é a base para o nível
3 de maturidade, é estabelecido e melhorado ao longo do tempo. Esses
processos padronizados são usados para estabelecer consistência em
toda a organização. Todos os projetos utilizam uma versão de um desses
processos padrão adaptando-a às suas características específicas.
Áreas de Processo:
- Desempenho do Processo Organizacional (OPP) – tem como objetivos
estabelecer e manter uma visão quantitativa do desempenho dos
processos padrões, e prover modelos e baselines de desempenho,
visando melhorar a gestão dos projetos através de métricas de processo
e produto.
- Gestão Quantitativa do Projeto (QPM) – tem por objetivo gerenciar
quantitativamente (através de métricas) o processo definido do projeto,
visando o alcance dos objetivos preestabelecidos de desempenho de
qualidade e processo.
Áreas de Processo:
- Inovação e Desenvolvimento Organizacional (OID) – tem por objetivo
selecionar e implantar melhorias incrementais e inovações nos processos
e nas tecnologias que promovam, quantitativamente, o aumento da
habilidade da organização para cumprir os seus objetivos de
desempenho de processos e qualidade.
Comentários
I – Os testes de interface são classificados de caixa preta, pois não avaliam a
estrutura interna do que foi implementado.
II – Está correto. Os testes caixa preta são chamados de comportamentais.
Além disso, focam na verificação se os requisitos foram atendidos.
III - Correto. Os testes de caixa preta abrangem classes diferentes dos de
caixa branca.
Portanto, estão certos apenas os itens II e III.
Gabarito: letra D.
c) sistema.
d) unidade.
e) validação.
Comentários
Segundo Pressman uma estratégia de teste de software segue a sequência:
teste unitário, teste de integração, teste de validação e teste de sistema.
Gabarito: letra D.
Comentários
Os testes de integração têm por objetivo verificar se as funcionalidades dos
módulos testados atendem aos requisitos.
Gabarito: letra C.
Comentários
O teste caixa preta é também chamado de teste funcional e é baseado nos
requisitos funcionais do software.
Gabarito: letra D.
7. (Cesgranrio/2010/IBGE/Análise de Sistemas/Desenvolvimento de
Aplicações) O XP (Extreme Programming) usa uma abordagem orientada a
objetos como seu paradigma de desenvolvimento predileto. Nessa
perspectiva, analise as afirmativas abaixo.
Comentários
Item I. Item FALSO. Segundo Beck e Fowler (2001), o XP procura assegurar
que o cliente tome todas as decisões de negócio, enquanto a equipe de
desenvolvimento cuida das questões técnicas. Teles (2004) destaca que todas
as funcionalidades do sistema são levantadas através de estórias, que são
registradas em pequenos cartões. Essas estórias devem ser escritas sempre
pelo próprio cliente, com suas próprias palavras. A equipe de desenvolvimento
utiliza os cartões para saber quais são as funcionalidades desejadas pelo
Surgimento
A eXtreme Programming foi criada por Kent Beck baseada em seus vários anos
de prática em desenvolvimento de softwares orientados a objetos, juntamente
com Ward Cunningham seu parceiro de programação, sendo muito usada com
sucesso por grandes empresas do mercado de software.
Ela baseia-se em permanente revisão do código, testes frequentes,
participação do usuário final, refinação contínua da arquitetura e
planejamento, design e redesign a qualquer hora.
A XP não é novidade, ela é baseada nas conclusões atingidas após mais de
uma década de pesquisas e aplicações de diversas práticas em projetos de
software; na verdade XP é uma recombinação das melhores práticas de
engenharia de software que comprovadamente contribuem para o sucesso dos
projetos.
O nome “eXtreme Programming” vem trazendo a idéia de maximizar as
práticas e técnicas de sucesso, como por exemplo:
• Se revisar o código é bom, revisaremos código o tempo inteiro
(programação em par, pair programming);
• Se testar é bom, todos vão testar o tempo inteiro (testes de unidade,
unit testing), até mesmo os clientes (testes funcionais, functional
testing);
• Se o projeto é bom, ele fará parte do dia-a-dia de todos (refinamento,
refactoring).
Valores
Para implantar a XP é necessário que se norteie o trabalho baseado em quatro
valores:
o Comunicação: é o principal valor da XP. Grande parte das
técnicas da XP está baseada na comunicação, e se esta não for
eficiente, pode causar problemas e atrasos no desenvolvimento do
sistema. Uma equipe deve ter meios de se comunicar de maneira
rápida e eficiente com o cliente, com o gerente do projeto e com os
outros desenvolvedores envolvidos.
o Simplicidade: a XP está fazendo uma aposta. Ela está apostando
que é melhor fazer algo simples e de desenvolvimento rápido hoje,
e ter de gastar um pouco mais no futuro se for necessário
remodelar um processo. A XP utiliza-se da simplicidade para
implementar apenas aquilo que é suficiente para o cliente, não se
procura fazer especulações sobre necessidades futuras, pois quase
sempre são especulações errôneas, deixamos os problemas do
futuro para o futuro.
o Feedback: o cliente deve receber o sistema o quanto antes, a fim
de poder dar um feedback rápido, guiando assim o
desenvolvimento do software. Quanto mais cedo o cliente tiver
Práticas
A XP é baseada em um conjunto de técnicas fundamentais (práticas), que
podem ser aplicadas individualmente, cada uma delas gerando melhorias no
processo de desenvolvimento, mas que funcionam melhor em conjunto, uma
vez que uma técnica reforça o resultado da outra. Apresenta-se a seguir uma
descrição de cada prática.
Por outro lado, se for muito pequena, deve ser agregada a outras para formar
uma estória de tamanho adequado. Normalmente, entende-se por adequadas
estórias que possam ser desenvolvidas em dois ou três dias ideais de
programação. A relação entre as funcionalidades entregues e as
funcionalidades solicitadas por um cliente para uma iteração é chamada de
velocity (velocidade) da equipe de desenvolvimento.
De posse dos cartões com as estórias do usuário e das estimativas da equipe
de desenvolvimento, os clientes devem definir o escopo da próxima iteração,
selecionando aquelas que desejam que sejam implementadas. Para tanto,
devem levar em consideração o princípio de que devem receber antes o que
vai gerar mais retorno para o negócio. Desta forma, busca-se que o retorno
sobre o investimento comece a vir já nos primeiros releases.
Este é um ponto importante: caso não seja possível cumprir tudo o que havia
sido planejado para a data de entrega de cada iteração, deve-se negociar com
o cliente quais estórias devem ficar para a próxima, e não atrasada a data de
entrega da iteração.
Na XP o planejamento é um processo contínuo, e o mesmo é constantemente
refinado pelo cliente e pela equipe de desenvolvimento, deixando assim a
metodologia bastante flexível e entregando para o cliente sempre o máximo
valor pelo investimento dele.
Para definir uma liberação, é necessário que haja negociação entre os clientes
e os programadores. Os clientes escolhem as estórias que são mais
importantes de serem implementadas e que façam sentido estarem juntas. A
quantidade de estórias que poderá ser implementada durante uma liberação
deve ser definida considerando-se o histórico de velocidade do time de
desenvolvimento. Cada estória deve ser estimada da melhor forma possível,
conforme descrito anteriormente, utilizando comparações com estórias
semelhantes implementadas no passado, sempre que possível.
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 31
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
• Refatoração (Refactoring)
É o processo de mudar um sistema de software de tal forma que não se altera
o comportamento externo do código, mas melhora sua estrutura interna. É um
meio disciplinado de limpar o código e que reduz as possibilidades de introduzir
erros. Em essência quando você refina o código, você melhora o projeto depois
que este foi escrito.
"Melhorar o projeto depois que foi escrito" é uma premissa do XP. Em nosso
entendimento atual de desenvolvimento de software nós acreditamos que
projetamos e então codificamos. Um bom projeto vem primeiramente, e a
• Metáfora (Metaphor)
Equipes XP mantêm uma visão compartilhada do funcionamento do sistema.
Isto é feito através do uso de metáforas. Fazendo uso de metáforas podemos
facilitar a explicação de qualquer aspecto dentro do projeto e ao mesmo tempo
fixá-la com mais força na mente do ouvinte.
Utilizam-se metáforas para vários aspectos na XP, dentre eles procura-se criar
uma visão comum sobre todo o projeto de forma simples e objetiva facilitando
assim a comunicação entre toda a equipe, uma vez que serve de base para os
padrões de codificação e entre a equipe e o cliente, visto que o cliente, na
maioria das vezes, não entende os termos técnicos relacionados ao
desenvolvimento e usados diversas vezes pelos desenvolvedores e equipe.
8. Como o código é coletivo todos irão visitar alguma parte do código algum
dia o que força o desenvolvedor a escrever o código da maneira mais simples
possível para que outra pessoa possa entender. Outro ponto a ponderar é que
o código coletivo demanda coragem, pois o desenvolvedor terá que mexer em
partes do código que não foram construídas por ele.
Comentários
Na XP todas as decisões sobre o rumo do projeto devem ser tomadas pelo
cliente. Com o cliente sempre presente reforçamos a necessidade de
comunicação entre as partes.
Gabarito: letra C.
Comentários
Define-se Scrum como uma metodologia para desenvolvimento ágil e
Gerenciamento de Projetos. Esta metodologia foi concebida como uma
forma de gerência de projetos em empresas automobilísticas e de produtos de
consumo, a partir da observação de que projetos usando equipes pequenas e
multidisciplinares produziram os melhores resultados, e associaram estas
equipes altamente eficazes à formação Scrum do Rugby.
Product Backlog;
• Ao iniciar-se um Sprint, faz-se uma reunião de planejamento (Sprint
Planning Meeting) na qual o Product Owner prioriza as funcionalidades do
Product Backlog e a equipe seleciona as atividades que ela será capaz de
implementar;
• As tarefas do respectivo Sprint são transferidas do Product Backlog para
o Sprint Backlog.
• Diariamente, a equipe faz uma breve reunião (Daily Scrum), em geral
pela manhã, visando disseminar conhecimento sobre o trabalho realizado
no dia anterior, identificar impedimentos e priorizar o trabalho do dia; e
• No término de um Sprint, a equipe apresenta as funcionalidades
implementadas em uma Sprint Review Meeting. Após isso, faz-se uma
Sprint Retrospective e a equipe parte para o planejamento do próximo
Sprint.
• Reinicia-se assim o ciclo.
Vale destacar que a granularidade de cada Sprint Backlog deve ser pequena.
Sua estimativa não deve ultrapassar 8 horas de trabalho e isso se constitui em
A cada novo Sprint, o Agile Radiator deve ser modificado para retratar a
situação atual novamente. E este ciclo se inicia: planejamento, execução,
controle e avaliação do que foi feito para cada nova Release necessária.
Comentários
Artefatos são produtos de trabalho tangíveis e bem definidos consumidos,
produzidos ou modificados por tarefas. Artefatos podem ser compostos por
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 46
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
Comentários
Observe bem essa questão, pois você pode confundi-la na hora da resposta. A
pergunta menciona a fase do RUP em que são implementados os cenários
críticos dos casos de uso, e não onde são identificados. Caso fosse a
identificação, a resposta seria na fase de Concepção. Porém a questão destaca
que é durante a sua implementação, esta é realizada na fase de Elaboração.
Ao analisar a figura que destaca as fases e disciplinas do RUP, observe que na
fase de Elaboração já temos o INÍCIO da implementação e testes dos cenários
críticos (Esse detalhe pode ser visualizado no fluxo de trabalho/disciplina
Implementação).
Resumindo, na fase de elaboração já temos parte da implementação dos
casos de uso mais críticos, conforme visto na figura. Veja no texto da aula que
um dos resultados da fase de elaboração é um protótipo arquitetônico
executável, e não a implementação por completo!!
Gabarito: letra B.
Comentários
Um modelo de ciclo de vida do software deve conter a descrição precisa
dos produtos de software gerados e dos critérios de término para cada fase,
pois sem os mesmos o modelo em questão é considerado de pouca utilidade
prática.
A escolha de um modelo de processo de software deve considerar as
características do sistema, os métodos e as ferramentas a serem utilizados, os
Planejamento
Análise de
Risco
Comunicação com o
cliente
Engenharia
Comentários
Importante O Processo Unificado possui características específicas, como
ser orientado a casos de uso, ser centrado na arquitetura, ser iterativo e
incremental. Quanto ao princípio “ser centrado em arquitetura” cabe
destacar:
• A arquitetura é a visão de todos os modelos que juntos representam o
sistema como um todo.
• O conceito de arquitetura de software engloba os aspectos estáticos e
dinâmicos mais significantes do sistema. A arquitetura cresce além das
necessidades do empreendimento, como percebido pelos usuários e
suporte, e refletido nos casos de uso.
• “Significante” em um sistema depende do ponto de vista de cada
desenvolvedor
• A arquitetura também é influenciada por muitos outros fatores, como a
plataforma na qual o software será implantado, os blocos de construção
reutilizáveis, requisitos de desenvolvimento e requisitos não funcionais.
• A arquitetura é a visão do projeto do sistema como um todo, destacando
suas características mais importantes, mas sem entrar em detalhes.
• O processo ajuda o arquiteto a concentrar-se nas metas corretas, como
inteligibilidade, poder de recuperação para mudanças futuras e
reutilização.
• A relação existente entre casos de uso e a arquitetura é que os casos de
uso estão ligados à funcionalidade de um sistema e a arquitetura, por
sua vez está ligada à forma deste.
• Funcionalidade e forma devem estar balanceadas para se alcançar um
produto final de qualidade, ou seja, casos de uso e arquitetura devem
estar ligados a tal ponto que o primeiro seja desenvolvido de acordo com
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 50
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
Comentários
Item I. Item correto. O DFD é uma representação em rede dos processos
(funções) do sistema e dos dados que ligam esses processos. Ele mostra “o
que” o sistema faz e não “como” é feito. É a ferramenta central da análise
estruturada, descrevendo o modelo funcional. Na elaboração de um DFD
utilizaremos quatro símbolos que nos permitirão debater e apresentar ao
usuário todo o processo, sem assumir nenhum compromisso com
implementações e sem a preocupação com a hierarquização e tomadas de
decisão. Cada um desses símbolos tem um nome e possivelmente um rótulo
associado:
Gabarito: letra D.
Comentários
A UML (Unified Modeling Language - Linguagem Unificada para
Modelagem) normalmente é definida como uma linguagem de modelagem e
não um método propriamente dito. A UML apresenta uma série de diagramas
para a modelagem de sistemas orientados a objetos.
De todos os diagramas da UML, é o diagrama de classes o mais comumente
utilizado pelas empresas. Esse diagrama, de forma simplificada, descreve os
“tipos” de objetos do software e os vários tipos de relacionamentos estáticos
que existem entre eles. Uma proposta de processo de desenvolvimento que
pode ser utilizada em conjunto é o RUP (Rational Unified Process), definido por
Booch, Jacobson e Rumbaugh.
Objetos
Classes
Comentários
A sequência de atividades e eventos apresentada está relacionada ao ciclo de
vida do PRODUTO. No ciclo de vida do projeto seriam mencionadas atividades
do PMBOK, a abordagem XP utiliza Scrum para gerenciamento, etc.
Gabarito: letra A.
Comentários
Vamos às considerações da questão:
Item a. Não temos uma diferença nesse quesito, os 2 modelos apresentados
são iterativos.
Item B. Nenhum dos 2 modelos apresentados partem do princípio de que
precisamos conhecer todos os requisitos a priori.
Item C. Não temos uma diferença nesse quesito, ambos fazem isso!
Item D. A banca considerou essa assertiva como a correta. No entanto, a
questão dá margens a recursos!! A entrega não será de um sistema em cada
incremento, entregará um conjunto de funcionalidades (uma parte do
software) em cada incremento.
Item E. Nenhum dos 2 modelos apresentados irão projetar os testes antes da
implementação do sistema.
Gabarito: letra D.
F Incremento n
u
Comunicação
n Planejamento
c Modelagem
i Construção
o Implantação
n
a
Incremento 2
Comunicação
...
Planejamento
l
Modelagem
i Incremento 1 Construção
d Comunicação Implantação
a Planejamento
d Modelagem
Construção
e Implantação
Tempo Decorrido
Em cada iteração do ciclo acrescentam-se novas funcionalidades ao software.
Este modelo possui como vantagem o fato de apresentar constantemente
novas versões aos usuários. Pode ser aplicado também quando não houver
mão-de-obra disponível para uma implementação completa, ou quando for
necessário gerenciar riscos técnicos. No entanto, algumas críticas podem ser
feitas:
• sem uma estrutura de gerenciamento e controle eficaz, o modelo pode
deteriorar-se; e
• a premissa de que o sistema em desenvolvimento será flexível bastante
para acomodar todas as evoluções, pode não ser realista em muitas
circunstâncias.
Prototipagem
O paradigma de prototipagem começa com a definição dos requisitos. Um
projeto rápido é realizado e concentra-se na representação daqueles aspectos
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 57
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
Benefícios
• Equívocos entre os usuários de software e desenvolvedores são
expostos.
• Serviços esquecidos podem ser detectados e serviços confusos podem
ser identificados.
• Um sistema funcionando está disponível nos primeiros estágios no
processo de desenvolvimento.
• O protótipo pode servir como uma base para derivar uma especificação
do sistema com qualidade de produção.
• O protótipo pode ser usado para treinamento do usuário e teste de
sistema
Críticas:
• forte dependência das linguagens e ambientes utilizados, bem como da
experiência da equipe;
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 58
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
Prototipação Evolucionária
Uma abordagem para o desenvolvimento do sistema em que um protótipo
inicial é produzido e refinado através de vários estágios até atingir o sistema
final.
Na Prototipação Evolucionária, o protótipo evolui até se transformar no
próprio produto entregue ao cliente, enquanto na Prototipação Descartável
o protótipo é utilizado para esclarecer requisitos e avaliar riscos, sendo
descartado ao final do processo.
O objetivo da prototipação evolucionária é fornecer aos usuários finais um
sistema funcionando. O desenvolvimento começa com aqueles requisitos que
são melhores compreendidos.
Prototipação Descartável
Um protótipo o qual é usualmente uma implementação prática do sistema é
produzida para ajudar a levantar os problemas com os requisitos e depois
descartado. O sistema é então desenvolvido usando algum outro processo de
desenvolvimento.
O objetivo da prototipação descartável é validar ou derivar os requisitos do
sistema. O processo de prototipação começa com aqueles requisitos que não
são bem compreendidos.
Pontos-chave
• Um protótipo de sistema pode ser usado para dar aos usuários finais uma
impressão concreta das capacidades desse sistema.
• A prototipação está se tornando cada vez mais comum para o
desenvolvimento de sistema onde o desenvolvimento rápido é essencial.
• Protótipos descartáveis são usados para a compreensão dos requisitos do
sistema.
• Na prototipação evolucionária, o sistema é desenvolvido pela evolução de
uma versão inicial em uma versão final do sistema.
• O desenvolvimento rápido é importante na prototipação de sistemas. Isso
pode levar à exclusão de algumas funcionalidades do sistema ou na
diminuição dos requisitos não funcionais.
• Entre as técnicas de prototipação estão o uso de linguagens de nível muito
elevado, a programação de bando de dados e a construção de protótipos a
partir de componentes reutilizáveis.
• A prototipação é essencial para o desenvolvimento de interfaces com o
usuário, as quais são difíceis de serem especificadas usando um modelo
estático. Os usuários deveriam estar envolvidos na avaliação e na evolução
do protótipo.
Comentários
Item a. Item errado. Criarei um protótipo para entender melhor o problema,
assim os clientes teriam acesso a uma visualização dos progressos do
desenvolvimento.
Item b. Item errado. Nesse caso, ainda não conhecemos o problema direito.
Item c. Item errado. Posso ter requisitos variáveis, e, nesse caso, a todo
momento o protótipo vai variando.
Item d. Item correto. Esse número de iterações pode variar de acordo com o
sistema a ser desenvolvido.
Comentários
Cabe destacar que a banca misturou elementos da análise estruturada com a
análise orientada a objetos, mas todas as respostas estão corretas já que são
Comentários
O modelo em Cascata (Waterfall), também chamado de Clássico, é o mais
tradicional processo de desenvolvimento de software. Este modelo sugere uma
abordagem seqüencial para o desenvolvimento de software, aplicando as
atividades de maneira linear. Esse modelo possui como vantagem principal a
simplicidade para a sua aplicação e gerência. No entanto, algumas
desvantagens podem ser observadas:
• projetos reais raramente seguem este fluxo seqüencial.
• dificuldade do cliente em declarar todas as suas necessidades no início do
projeto, dificultando a implementação de mudanças que surjam nas fases
posteriores;
• demora em apresentar resultados ao cliente.
Gabarito: letra C.
Comentários
Em cada fase do modelo de ciclo de vida em cascata desenvolvem-se artefatos
(produtos de software) que servem de base para as fases seguintes.
A figura seguinte, proposta por Eduardo Bezerra, mostra o modelo do ciclo
de vida clássico da engenharia de software, que é dividido em seis
atividades. São elas:
Com unicação
Planejam ento
Modelagem
Construção
Im plantação
Comentários
Dentre as assertivas, a B é a que destaca as principais atividades do modelo
em Cascata. Uma especificação das fases desse modelo pode ser vista na
questão anterior.
Gabarito: letra B.
Comentários
O modelo de ciclo de vida em cascata enfatiza a progressão seqüencial entre
uma fase e a seguinte.
Gabarito: letra A.
Comentários
Se eu detectar um erro no início do projeto, ou seja, na fase de requisitos,
melhor. Quanto mais tarde eu detectar um problema, pior será.
Gabarito: letra D.
Comentários
Item I. Item correto. A rastreabilidade de requisitos é essencial para que o
controle de mudanças possa avaliar o impacto de uma solicitação de mudança.
Importante
Define-se rastreabilidade dentro de um ambiente de desenvolvimento como
a capacidade de relacionar um elemento a outros correlatos, especialmente
àqueles relacionados a requisitos. Os elementos do projeto envolvidos em
rastreabilidade são chamados de itens de rastreabilidade. Os itens típicos
de rastreabilidade incluem diferentes tipos de requisitos, elementos de modelo
de projeto e de análise, artefatos de testes, entre outros. Para que o controle
de mudanças avalie o impacto de uma solicitação é necessário identificar,
portanto, seus itens de rastreabilidade.
Fonte: http://qualidadebr.wordpress.com/2008/07/10/furps/.
Item IV. Item errado. Um caso de uso pode especificar requisitos não-
funcionais. Exemplo de requisito: ao clicar em um botão, o sistema deverá
responder em menos de um segundo, mostrando a resposta em uma página
diferente e de forma gráfica.
Gabarito: letra B.
Comentários
Dentre as assertivas apresentadas, a única falsa é a letra C, já que é o analista
que irá utilizar as melhores práticas de engenharia de requisitos na tarefa de
descrever as necessidades do cliente.
Algumas observações:
Engenharia de Requisitos
É o uso sistemático de princípios, técnicas, linguagens e ferramentas
comprovadas para análise, documentação, evolução continuada das
necessidades dos usuários e especificação do comportamento externo de um
sistema para satisfazer as necessidades do usuário, que sejam efetivas em
termos de custos. Visa, principalmente, o entendimento escrito do problema.
Concepção
O primeiro passo da Engenharia de requisitos é a Concepção, onde é realizada
a definição do escopo e a natureza do problema, a análise da sua viabilidade, o
reconhecimento dos interessados (stakeholders).
Observação: Stakeholders são as pessoas que têm interesse direto no sistema
a ser desenvolvido ou que se beneficie dele. Deve-se observar que para cada
classe de interessados, podem ser definidos diferentes pontos de vista,
gerando requisitos conflitantes.
Na literatura, é sugerido que, nesta fase, os engenheiros de software adotem a
estratégia do P&R (pergunta e resposta), empregando questões de livre
contexto. As perguntas não são fixas, podendo surgir novas perguntas durante
a realização das entrevistas. As perguntas são elaboradas e respondidas a
partir das seguintes fontes de informação:
• Interessados (stakeholders), como clientes, usuários e desenvolvedores;
• Documentos;
• Livros;
• Sistemas de Software;
• Livros relacionados à aplicação em discussão; e
• Documentos mais referenciados pelos atores.
Levantamento de Requisitos
Neste passo busca-se descobrir, tornar explícito (elicitar), obter o máximo de
informações para o conhecimento do software em questão. Para tanto, é
necessário:
2.4. Restrições
2.5. Dependências
3. Requisitos Específicos
3.1. Requisitos Funcionais
3.2. Requisitos Não-Funcionais
Deve-se ressaltar que nem todos os itens serão sempre necessários. Com
relação aos requisitos funcionais, algumas regras devem ser observadas:
Iniciar os requisitos com “O sistema deverá...”
Os requisitos devem estar organizados logicamente. Por exemplo, inicialmente
todos os requisitos de entrada depois os de processamento e por último os
requisitos de saída.
Cada requisito deve ter um identificador único, por exemplo, um número, para
posterior referência, e deve conter sempre uma única ação.
Gabarito: letra C.
Comentários
Dentre as assertivas, a incorreta é a letra I. Uma entrevista não estruturada
deve “fluir” entre o entrevistado e o entrevistador e, para isso, questões a
serem feitas podem ser definidas previamente.
Comentários
Item a. Item errado. Abordagem antiga, que apresenta inconvenientes, usada
no modelo em Cascata.
Item b. Item errado. Realizar essa estimativa com precisão logo no início é
bastante difícil.
Item c. Item errado. Não se tem essa exigência de providenciar, desde o início
do projeto, mecanismos para prevenir e bloquear solicitações de mudanças.
Isso contradiz com metodologias de desenvolvimento modernas.
Item d. Item correto. A maioria das metodologias modernas de
desenvolvimento de software recomenda a divisão do trabalho em iterações
curtas, com prazos fixos, e não permitir que as mesmas avancem sobre os
prazos, reduzindo o escopo da iteração, em caso de necessidade.
Item e. Item errado Recomenda-se documentar pelo menos o essencial!
Gabarito: letra D.
Comentários
Importante A Lei de Pareto (também conhecido como princípio 80-20),
afirma que para muitos fenômenos, 80% das consequências advém de 20%
das causas.
Na questão, tem-se a Lei do Pareto na letra A, que destaca que 20% das
ocorrências causam 80% dos problemas.
Uma outra adaptação do princípio de Pareto: 80% de uma aplicação pode ser
entregue em 20% do tempo total do projeto.
Gabarito: letra A.
Comentários
• Mesmo com este tipo de processo iterativo, algum trabalho tem que ser
deixado para ser feito no fim, na fase de Transição (Transition). Nesta
fase são realizados os treinamentos dos usuários e a transição do
produto para utilização. Este trabalho pode incluir também testes beta e
ajuste de performance.
Cada uma das quatro fases do RUP é dividida em iterações, onde cada
uma delas é um ciclo completo de desenvolvimento resultando em uma versão
de um produto executável que constitui um subconjunto do produto final.
Cada iteração é organizada em fluxos de trabalho (workflows) de
processo, com uma ênfase diferente em cada fase.
Gabarito: letra C.
Complementando….
Concepção
A meta da fase de concepção é alcançar o consentimento de todos os
interessados no objetivo do ciclo de vida para o projeto. Os objetivos primários
da fase de concepção incluem:
• Estabelecer a extensão de software do projeto limitar condições,
inclusive um conceito operacional, critérios de aceitação e descrições do
que é e não é pretendido estar no produto;
• Discriminar os casos de uso críticos do sistema, quer dizer, os cenários
primários do comportamento que dirigirá a funcionalidade do sistema e
amoldará os intercâmbios de projeto principais;
• Exibir, e talvez demonstrar, pelo menos uma arquitetura candidata
contra alguns dos cenários primários;
• Estimar o custo global e programar o projeto inteiro, e fornecer as
estimativas detalhadas para a fase de elaboração que se seguirá
imediatamente; e
• Estimar os riscos e as fontes de imprevisibilidade.
Elaboração
O propósito da fase de elaboração é analisar o domínio de problema,
estabelecer uma fundação arquitetônica sadia, desenvolver o plano de projeto
e eliminar os elementos de alto risco do projeto. Devem ser tomadas decisões
arquitetônicas com uma compreensão do sistema inteiro: sua extensão,
funcionalidade principal e exigências não funcionais, como exigências de
desempenho.
Construção
Durante a fase de construção, todos os componentes restantes e
características da aplicação são desenvolvidos e integrados ao produto, e todas
as características são completamente testadas. A fase de construção é, de
certo modo, um processo industrial no qual é colocada ênfase em gerenciar
recursos e controlar operações para aperfeiçoar custos, prazos e qualidade. De
certo modo, o quebra-cabeça do gerenciamento sofre uma transição do
desenvolvimento de propriedade intelectual durante a concepção e a
elaboração para desenvolvimento de produtos para distribuição durante a
construção e a transição.
Transição
O propósito da fase de transição é levar o produto de software à comunidade
de usuários. Depois do produto ser dado ao usuário final, normalmente surgem
questões exigindo-lhe que desenvolva novos lançamentos, corrija alguns
problemas ou as características finais que foram adiadas.
Porém, este fluxo do Rational Unified Process não tenta cobrir todos os
aspectos de gerenciamento de projeto. Por exemplo, não cobre questões
como:
• Administrar pessoal: contratando, treinando, instruindo;
• Administrar orçamentos: definindo, alocando; e
• Administrar contratos com os provedores e clientes.
Fluxo de Requisitos
As metas do fluxo de requisitos (exigências) são:
• Estabelecer e manter acordo com os clientes e outros interessados no
que o sistema deveria fazer – e por que!
• Proporcionar ao desenvolvedor de sistemas um entendimento melhor das
exigências de sistema;
• Definir os limites do sistema (delimitar);
• Fornecer uma base para planejamento dos conteúdos técnicos de
iterações;
• Fornecer uma base para cálculo do custo e do tempo para desenvolver o
sistema; e
• Definir uma interface do usuário para o sistema, focalizado nas
necessidades e metas dos usuários.
Para atingir estas metas, o fluxo de exigências descreve como definir uma
visão do sistema e traduzi-lo num modelo de caso de uso que, com
especificações adicionais, define as exigências de software detalhadas do
sistema. Além disso, o fluxo de exigências descreve como usar atributos de
exigências para ajudá-lo a administrar a extensão e as mudanças de
exigências de seu sistema.
Tradicionalmente, as exigências são vistas com especificações textuais
detalhadas que se ajustam numa das categorias mencionadas acima,
expressar na forma de “O sistema deve...”.
Para administrar efetivamente o processo é útil obter uma compreensão do
usuário atual e outras necessidades do interessado que estão para serem
cumpridas pelo sistema que estiver sendo desenvolvido. Esta compreensão
arma a equipe de desenvolvimento com o por que (“Por que este sistema
precisa operar com 99,3% de precisão?”) e o que. Sabendo disso, a equipe
poderá fazer um trabalho melhor de interpretação das exigências (“Precisa
também operar com 99,3% de precisão enquanto a rotina de manutenção
Fluxo de Implementação
O fluxo de implementação tem quatro propostas principais:
• Definir a organização do código em termos de subsistemas de
implementação organizados em camadas;
• Implementar classes e objetos em termos de componentes (arquivos-
fonte, binários, executáveis e outros);
• Testar os componentes desenvolvidos como unidades; e
• Integrar num sistema executável os resultados produzidos por
implementadores individuais ou equipes.
Fluxo de Testes
A proposta do teste é avaliar a qualidade do produto, o que não só envolve o
produto final como inicia logo no projeto com a avaliação da arquitetura e
continua pela avaliação do produto final entregue aos clientes. O fluxo de teste
envolve:
• Verificar as interações de componentes;
• Verificar a própria integração de componentes;
• Verificar que todas as exigências tenham sido implementadas
corretamente; e
• Identificar e assegurar que todos os defeitos descobertos estejam
endereçados antes do software ser distribuído.
Fluxo de Entrega
Os desenvolvedores de software às vezes declaram vitória muito cedo. Eles
esquecem que a vontade do cliente em usar o produto terminado, em lugar de
uma compilação limpa, é que é a marca de um projeto de desenvolvimento
bem sucedido.
O propósito da distribuição é voltar o produto de software terminado aos seus
usuários. O fluxo de desenvolvimento envolve os seguintes tipos de atividades:
• Testar o software em seu ambiente operacional final (teste beta);
• Empacotar o software para a entrega;
• Distribuir o software;
• Instalar o software;
• Treinar os usuários finais e a força de vendas (saída do produto); e
• Migrar o software existente ou converter bancos de dados.
Fluxo de Ambiente
A proposta do fluxo de ambiente é suportar a organização do desenvolvimento
com processos e ferramentas. Este suporte inclui:
• Seleção de ferramenta e sua aquisição;
• Configuração de ferramentas para harmonizar a organização;
• Configuração de processo;
• Melhoria de processo; e
• Serviços técnicos para suportar o processo: a infraestrutura da
tecnologia da informação (IT), administração de conta, backup e assim
por diante.
Produto
I – Relatório de teste beta.
II – Documento de visão.
III – Protótipo arquitetural executável.
IV – Plano e procedimento de teste.
Fase
P – Concepção
Q – Construção
R – Elaboração
Comentários
Produto Fase
I – Relatório de teste beta. T – Transição (não está listada aqui)
II – Documento de visão. P – Concepção
III – Protótipo arquitetural executável. R – Elaboração
IV – Plano e procedimento de teste. Q – Construção
Gabarito: letra D.
Considerações Finais
Bem, por hoje é só!! Espero ter conseguido passar de forma bem didática a
resolução das questões e seus fundamentos que são muito importantes para a
prova. Fiquem com Deus. A parte de MPS-Br será disponibilizada na próxima
aula.
Um abraço.
Profa Patrícia Lima Quintão
Referências Bibliográficas
a
Notas de aula, prof Patrícia Lima Quintão.2011.
http://www.deinf.ufma.br/~acmo/MOO_PUintro.pdf
PRESSMAN, R. S. Engenharia de Software. 6ª edição. Rio de Janeiro: Ed Mc
GrawHill, 2006.
Artigo: “Get Ready for Agile Methods, with Care”, Computer, 35, 1 (January
2002) 64-69 escrito por Boehm, B.
Agile Software Development with Scrum, Prentice Hall, (October 2001).
Revista de Engenharia de Software. Diversas.
Schwaber, K; Beedle, M, Agile Software Development, Cockburn Highsmith
Series Editors, Alistair Cockburn 2000
http://improveit.com.br/scrum
TELES, V. M. Extreme Programming. Novatec, 2004.
BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML - 2ª edição,
LTC Editora, 2003.
IBM, R., Rational Unified Process, 2010. Disponível em: <http://www-
01.ibm.com/software/br/rational/rup.shtml>. Acesso em: jun. 2011
.
KRUCHTEN, P., Introdução ao RUP Rational Unified Process, 2. ed., Rio de
Janeiro: Ciência Moderna, 2003.
Non-Functional Requirements in Software Engineering. Disponível em:
<http://www.utdallas.edu/~chung/BOOK/book.html>. Acesso em fev. 2011.
PRESSMAN, R. S., Engenharia de Software, 5a Ed. Makron Books do Brasil ,
2002.
SANTOS, R., Introdução à Programação Orientada a Objetos usando
JAVA , 4. ed., Rio de Janeiro: Elsevier, 2003.
SOMMERVILLE, I., Engenharia de Software, 8. ed., São Paulo: Pearson
Addison - Wesley, 2007.
UFMG, Desenvolvimento de Sistemas Baseados em Arquiteturas, 2006.
Disponível em: < homepages.dcc.ufmg.br/~mgoncalv/fsi06-
1/DesenvolvimentoSistemasBaseadoArquitetura.ppt>. Acesso em: nov. 2011.
Profa. Patrícia Lima Quintão www.pontodosconcursos.com.br 90
INFORMÁTICA EM EXERCÍCIOS PARA BNDES
FORMAÇÃO: ANÁLISE DE SISTEMAS - DESENVOLVIMENTO
7. (Cesgranrio/2010/IBGE/Análise de Sistemas/Desenvolvimento de
Aplicações) O XP (Extreme Programming) usa uma abordagem orientada a
objetos como seu paradigma de desenvolvimento predileto. Nessa
perspectiva, analise as afirmativas abaixo.
(B) transição.
(C) implementação.
(D) requisitos.
(E) manutenção.
Produto
I – Relatório de teste beta.
II – Documento de visão.
III – Protótipo arquitetural executável.
IV – Plano e procedimento de teste.
Fase
P – Concepção
Q – Construção
R – Elaboração
Gabarito