Engenharia de Software e Sistemas - 2o. Exercício Escolar
Universidade Federal de Pernambuco- Centro de Informática
IF682 - Engenharia de Software e Sistemas
Prof. Alexandre Vasconcelos
2o. Exercício Escolar
Data: 02/08/2007
01) O que você entende por modelo de ciclo de vida de
processo de software? Cite 3 modelos de ciclo de vida e descreva um deles em
detalhe. (2,5)
1
ponto para a definição do conceito de ciclo de vida. Aqui o aluno deve dizer
algo como:
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
0.5
para os modelos citados
(ex: cascata, iterativo e incremental,
desenvolvimento evolucionário - prototipagem descartável, programação
exploratória, desenvolvimento baseado em reuso, transformação formal)
1,0
para o detalhamento de um modelo.
02) Descreva o conceito de processo de software. (1,0)
Aqui o aluno deveria dizer algo como:
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
ou
Conjunto parcialmente ordenado de atividades (ou
passos) para se atingir um objetivo, definindo quem está fazendo o que, quando
e como para atingir um certo objetivo
03) Em relação à FALTA, FALHA e ERRO, a seqüência correta é: (1,0)
a)
|
FALTA à FALHA à ERRO
|
b)
|
ERRO à FALHA à FALTA
|
c)
|
FALTA à ERRO à FALHA
|
d)
|
ERRO à FALTA à FALHA
|
04) Descreva uma similaridade e uma diferença entre o
RUP e o XP. (1,0)
Aqui o aluno deve dizer algo como:
0,5 para as similaridades – ex: ambos são
iterativos e incrementais; ambos definem atividades, artefatos e papéis.
0,5 para as diferenças – ex: no RUP os requisitos a
serem tratados nas iterações são priorizados com base nos riscos, no XP a
priorização é feita com base unicamente nas necessidades dos clientes; o RUP
procura produzir uma arquitetura flexível e extensível, o XP procura produzir a
arquitetura para resolver o problema imediato; o RUP usa casos de uso para
especificar requisitos funcionais, o XP usa estórias
Para mais detalhe veja o documento em anexo.
05) Assinale V (verdadeiro) ou F (falso) nas sentenças a seguir. (1,0)
V
|
F
|
Quando todos os testes são executados com sucesso, podemos
garantir que o software será entregue sem nenhum erro para o cliente.
|
V
|
F
|
Os testes têm como objetivo verificar se os requisitos
especificados foram implementados corretamente.
|
V
|
F
|
Os testes de integração são utilizados para testar a interface
entre as unidades integradas.
|
V
|
F
|
Os testes de sistema são realizados com a participação do
usuário final e têm como objetivo homologar o sistema
|
05) Apresente o grafo do fluxo de controle para (2,5)
public int
search(int[] tabela; int item) {
int comeco = 1;
int fim = size_of (tabela);
int onde = -1; à 1
boolean achou = false;
while (comeco <= fim & achou == false) { à
2
int meio= (comeco+fim)/2;
if (item >
tabela [meio]) à 3
começo = meio + 1; à 4
else if (item == tabela [meio]) à 5
achou = true; à 6
onde = meio;
else fim = meio -1;
à 7
} à 8
return onde;
}
|
1,5 para o
gráfico correto (veja gráfico abaixo)
bem como
dois casos/dados de testes gerados com base neste fluxo.
0.,5 para cada caso/dado de teste
Possíveis casos e dados de
testes são:
·
[1, 2, 3, 4, 8, 2, 9] para
comeco = 1, fim = 1, onde = -1, achou = false, tabela = [1], item = 2;
·
[1, 2, 9];
·
[1, 2, 3, 5, 6, 8, 2, 9];
·
[1, 2, 3, 5, 7, 8, 2, 9]
Obs: para cada caso de
teste gerado deve ser determinada pelo menos uma entrada de dados
06) Assinale V (verdadeiro)
ou F (falso) sobre os tipos de teste. (1,0)
V
|
F
|
Os testes de integração são realizados após os testes de
unidade, e todas as unidades devem ser integradas ao mesmo tempo durante os
testes.
|
V
|
F
|
Os testes de aceitação utilizam a abordagem caixa preta e são
realizados pelo usuário com a finalidade de verificar se o sistema foi
implementado de acordo com os requisitos.
|
V
|
F
|
|
V
|
F
|
O teste de integridade de dados verifica se todos os mecanismos
de proteção de acesso estão funcionando satisfatoriamente
|
Boa
sorte!
Planejamento
O
RUP sugere um template específico para o plano de projeto e procura estabelecer
uma estimativa de esforços para cada fase de desenvolvimento. O Planejamento de
um projeto se divide em macro planejamento (planejamento das fases) e micro
planejamento, ou seja, o planejamento das iterações. Para a maioria dos
projetos o tempo de desenvolvimento em cada fase pode ser distribuído em 10%
para Concepção, 30% para Elaboração, 50% para Construção e 10% para Transição.
Krutchen
[Kruchten1998] destaca também os marcos de referência que são elaborados no
planejamento. No nível de planejamento das iterações (micro planejamento),
procura-se identificar os builds e os releases.
O XP procura através das estórias estabelecer uma
arquitetura para o sistema. O planejamento de XP é elaborado em conjunto pelos
desenvolvedores e pelo cliente, no qual o cliente define as estórias que serão
elaboradas em cada release, baseando-se nas necessidades do negócio. Os
desenvolvedores estimam quanto tempo levarão para desenvolver cada estória e
alertam o cliente para as dificuldades técnicas relacionadas a cada estória.
Engenharia de Requisitos
O
RUP se fundamenta nos casos de uso para a obtenção dos requisitos e utiliza o
modelo de casos de uso para dirigir os modelos futuros do projeto. Os casos de
uso servem também para: se formar um acordo entre o cliente e os usuários sobre
o que o sistema fornecerá; dar aos desenvolvedores do sistema um entendimento
dos requisitos do sistema; definir a funcionalidade do sistema; fornecer uma
base para o planejamento das iterações; fornecer estimativas de custo e tempo para
o desenvolvimento do sistema; e definir a interface do usuário do sistema.
O
XP substitui os casos de uso pelas estórias, faz uso dos testes antes da
codificação e utiliza o cliente no local tanto para esclarecer os requisitos
bem como para elaborar os testes de aceitação.
Análise e Projeto
O
RUP procura traduzir os requisitos, guiados pelos casos de uso, numa
especificação que descreva como implementar o sistema, através de um conjunto
de classes e subsistemas os quais são restringidos, por exemplo, pelos
requisitos não funcionais e pelo ambiente de implementação.
O
XP usa qualquer recurso na modelagem de um projeto, desde o rascunho num pedaço
de papel até diagramas UML. A abordagem inicial se concentra nas partes
essenciais do projeto, a qual é codificada da forma mais simples. Em seguida o
código sofre um processo de refactoring, modelando o projeto, antes de ser
incrementado. Ao longo das iterações o código pode também sofrer novo
refactoring a fim de manter o código (e o projeto) sempre pronto para um novo
incremento e fácil de ser compreendido.
Implementação
O
fluxo de implementação do RUP consiste na construção das partes do sistema,
cujas unidades e componentes individuais são testados e combinados de forma
incremental.
O
principal foco do XP é a implementação do código por meio da programação em
pares. O código é constantemente refatorado e integrado.
Testes
O
RUP usa o fluxo de testes para verificar a interação entre objetos e
componentes, a integração de todos os componentes do software, se todos os
requisitos foram corretamente implementados, e para identificar os defeitos e
certificar-se que os mesmos foram tratados antes que o software seja
implantado.
No
caso do XP os testes de unidade e os de aceitação são de responsabilidade tanto
dos desenvolvedores quanto do cliente. Os desenvolvedores elaboram os testes de
unidade, auxiliados pelo cliente. Durante a implementação do código, efetuam
também os testes de integração de forma contínua. Os testes de aceitação
(elaborados pelo cliente juntamente com os desenvolvedores) são executados
antes da liberação do build.
Implantação
O
fluxo implantação do RUP envolve: a produção e montagem de um release do
software; o empacotamento do software; a distribuição do software; a instalação
do software; o treinamento dos usuários; o fornecimento de ajuda e assistência
aos usuários; o planejamento e condução de testes beta; a migração dos
softwares e dados existentes; e a aceitação formal pelo cliente.
O
XP utiliza a integração contínua, o que permite que diariamente exista uma
versão funcional do software. Portanto, se o desenvolvimento for no ambiente
físico do cliente, a implantação pode ocorrer de forma diária.
[amlv1]Esta
questão será anulada, pois na literatura existem duas: top-down e bottom-up,
mas a combinação das mesmas gera a estratégia sandwich
0 comentários