8
Avaliação do 2º Bimestre – V3 Responda às seguintes questões e reencaminhe via email até o dia 03/12, antes das 19h00. Atividade individual Cuidado com cópias de colegas. NOME: FERNANDA PEREIRA FERNANDES 1) Descreva o que é feito em cada etapa do processo de desenvolvimento de software a) Definição de requisitos: Esta atividade tem como objetivo, compreender o problema, dando aos desenvolvedores e usuários, a mesma visão do que deve ser construído para resolução do problema. Desenvolvedores e clientes, em conjunto, buscam levantar e priorizar as necessidades dos futuros usuários do software. E como um sistema de informações geralmente é utilizado para automatizar processos de negócio em uma organização, esses processos da organização devem ser bem compreendidos para que o restante das atividades do processo de desenvolvimento flua de acordo com as reais necessidades do cliente. b) Projeto de sistema Nesta fase é considerado, como o sistema funcionará internamente, para que os requisitos do cliente possam ser atendidos. Alguns aspectos devem ser considerados, como: arquitetura do sistema, linguagem de programação utilizada, Sistema Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica, entre outros. No projeto é gerada uma descrição computacional, mencionando o que o software deve fazer, e deve ser coerente com a descrição realizada na fase de análise de requisitos. O projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e projeto detalhado (ou projeto de baixo nível). Em um processo de desenvolvimento orientado a objetos, o projeto da arquitetura normalmente é realizado por um arquiteto de softwares. O projeto da arquitetura visa

Prova 2 - 2bimestre 2015-2 v3 Prova

Embed Size (px)

DESCRIPTION

prova de engenharia de software

Citation preview

Page 1: Prova 2 - 2bimestre 2015-2 v3 Prova

Avaliação do 2º Bimestre – V3

Responda às seguintes questões e reencaminhe via email até o dia 03/12, antes das 19h00.Atividade individualCuidado com cópias de colegas.

NOME: FERNANDA PEREIRA FERNANDES

1) Descreva o que é feito em cada etapa do processo de desenvolvimento de software

a) Definição de requisitos:Esta atividade tem como objetivo, compreender o problema, dando aos desenvolvedores e usuários, a mesma visão do que deve ser construído para resolução do problema. Desenvolvedores e clientes, em conjunto, buscam levantar e priorizar as necessidades dos futuros usuários do software. E como um sistema de informações geralmente é utilizado para automatizar processos de negócio em uma organização, esses processos da organização devem ser bem compreendidos para que o restante das atividades do processo de desenvolvimento flua de acordo com as reais necessidades do cliente.

b) Projeto de sistema

Nesta fase é considerado, como o sistema funcionará internamente, para que os requisitos do cliente possam ser atendidos. Alguns aspectos devem ser considerados, como: arquitetura do sistema, linguagem de programação utilizada, Sistema Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica, entre outros. No projeto é gerada uma descrição computacional, mencionando o que o software deve fazer, e deve ser coerente com a descrição realizada na fase de análise de requisitos. O projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e projeto detalhado (ou projeto de baixo nível).Em um processo de desenvolvimento orientado a objetos, o projeto da arquitetura normalmente é realizado por um arquiteto de softwares. O projeto da arquitetura visa distribuir as classes de objetos relacionados do sistema em subsistemas e seus componentes, distribuindo também esses componentes pelos recursos de hardware disponíveis.Já no projeto detalhado, são modeladas as relações de cada módulo com o objetivo de realizar as funcionalidades do módulo. Além de desenvolver o projeto de interface com o usuário e o projeto de banco de dados.

c) Desenvolvimento de subsistemaEsta etapa agrupa as atividades relacionadas ao desenvolvimento de cada subsistema definido no projeto. Cada subsistema terá suas funções bem definidas e suas especificidades quanto às competências necessárias ao seu desenvolvimento. No caso de um subsistema de software,

Page 2: Prova 2 - 2bimestre 2015-2 v3 Prova

um processo de desenvolvimento caracterizado pelas etapas clássicas de desenvolvimento será iniciado.

Em raras situações, o desenvolvimento de um sistema impõe a construção, a partir do zero, de todos os subsistemas que o compõem. O mais comum é que alguns subsistemas sejam adquiridos e incorporados ao sistema. Embora seja o caso mais comum, nem sempre é fácil integrar subsistemas "de prateleira" a um sistema; em muitos casos, são necessárias modificações no sentido de adaptar o subsistema adquirido às necessidades do sistema a ser desenvolvido. Além disso, nem sempre é possível prever a disponibilidade de um subsistema de prateleira no momento em que ele é necessário.

d) Integração do sistemaO conjunto de atividades a ser desenvolvido nesta etapa é o de conexão dos diferentes subsistemas construídos ou adquiridos para compor o sistema. É uma atividade bastante complexa, devido principalmente, à grande diversidade de tecnologias envolvidas na concepção dos diferentes sistemas.

Um problema comumente encontrado nesta etapa é o mal funcionamento de um subsistema como conseqüência de uma definição imprecisa de funcionalidade de outro subsistema.

Uma forma de realizar a integração de um sistema é o processo "big-bang", onde todos os seus subsistemas são conectados num passo único. Entretanto, por razões técnicas e gerenciais, a forma mais adequada é a integração incremental dos diferentes subsistemas. As principais razões para adoção desta estratégia são:

Na maior parte dos casos, é impossível sincronizar o fim do desenvolvimento de todos os subsistemas;

A integração incremental reduz os custos de identificação e correção de erros de integração. Quando um número muito grande de subsistemas são integrados simultaneamente, uma falha no sistema pode ser conseqüência de um ou mais erros presentes nos diferentes subsistemas. No caso da integração incremental, a ocorrência de uma falha pode ser mais facilmente controlada, pois ela será, muito provavelmente, conseqüência de um erro no subsistema mais recentemente integrado.

No caso de sistemas em que os subsistemas foram construídos por diferentes fornecedores, é muito comum ocorrer desentendimentos quando um problema de integração acontece. Os fornecedores tendem a acusar um ao outro como o responsável do problema detectado. Este tipo de ocorrência é bastante prejudicial ao desenvolvimento do sistema, podendo tomar muito tempo para que o problema seja resolvido.

Page 3: Prova 2 - 2bimestre 2015-2 v3 Prova

e) Instalação do sistema

Implantação compreende a instalação do software no ambiente do usuário. O que inclui os manuais do sistema, importação dos dados para o novo sistema e treinamento dos usuários para o uso correto e adequado do sistema. Em alguns casos quando da existência de um software anterior, também é realizada a migração de dados anteriores desse software.

f) Desativação do sistemaEsta etapa consiste em retirar o sistema de operação, quando seu tempo previsto de funcionamento esgota ou quando ele será substituído por um novo sistema. A desativação deve ser feita de forma bastante rigorosa, principalmente no caso de sistemas cujos componentes podem ser nocivos ao ambiente. Sistemas que utilizam componentes radioativos são os exemplos mais comuns de sistemas cuja desativação deve ser feita com o maior cuidado possível.

Por outro lado, no caso dos sistemas de software, a desativação pode ser extremamente simples. A maior parte dos sistemas de software construídos atualmente já vem dotada de um utilitário de desativação (ou "desinstalação") que retira automaticamente todos os componentes do sistema e as referências a estes componentes do sistema computacional.

Outro aspecto importante da desativação dos sistemas são as informações que este manipulava ou gerava. Esta, normalmente, deverão ser armazenadas em mídia específica para posterior adaptação à utilização num novo sistema.

2) Descreva CINCO dos seguintes tipos de teste de softwarea) Testes de desenvolvimento

O sistema é testado durante seu desenvolvimento para descobrir bugs e defeitos. Nos Testes de desenvolvimento incluem todas as atividades de testes que são realizas pela equipe de desenvolvimento do sistema.

b) Testes de releaseTestes de release, em que uma equipe de testes separada testa uma versão completa do sistema antes que ele seja liberado para os usuários.

Teste de release é o processo de testes de uma versão particular de um sistema que se destina para uso fora da equipe de desenvolvimento. O principal objetivo do processo de teste de release é convencer o fornecedor de que o sistema é bom o suficiente para o uso. Portanto, os testes de release precisam mostrar que o sistema oferece a funcionalidade, o desempenho e confiabilidade especificados, e que não falha durante o uso normal.Geralmente, os testes de release são um processo de teste caixa-preta, em que os testes são derivados somente a partir da especificação do sistema.

Page 4: Prova 2 - 2bimestre 2015-2 v3 Prova

c) Testes de usuárioTestes de usuário, em que os usuários ou potenciais usuários de um sistema testam o sistema em seu próprio ambiente.

d) Testes de unidade

Teste de unidade, em que são testadas as unidades de programa individual ou classes de objetos. Os testes de unidade devem se concentrar em testar a funcionalidade dos objetos ou métodos.

Teste de unidade é o processo de teste de componentes individuais isoladamente.• é um processo de teste de defeitos.• as unidades podem ser: Funções individuais ou métodos dentro de um objeto Classes de objetos com vários atributos e métodos Componentes compostos com interfaces definidas usados para acessar suas funções.

e) Testes de componentesTestes de componentes, em que várias unidades individuais são integradas para criar componentes compostos. Testes de componentes devem se concentrar em testar as interfaces dos componentes.

• geralmente, os componentes de software são componentes compostos de vários objetos que interagem. Por exemplo, no sistema da estação meteorológica, o componente reconfiguração inclui objetos que lidam com cada aspecto da reconfiguração. • você acessa a funcionalidade desses objetos através da interface do componente definido. • portanto, os testes de componentes compostos devem focar em mostrar que a interface do componente se comporta de acordo com sua especificação. Você pode supor que já foram concluídos os testes de unidade sobre os objetos individuais dentro do componente.

f) Testes de regressãoEssa é uma técnica de teste aplicável a uma nova versão de software ou à necessidade de se executar um novo ciclo de teste durante o processo de desenvolvimento. Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. Inclui-se nesse contexto a observação de fases e técnicas de teste de acordo com o impacto de alterações provocado pela nova versão ou ciclo de teste. Para efeito de aumento de produtividade e de viabilidade dos testes, é recomendada a utilização de ferramentas de automação de teste, de forma que, sobre a nova versão ou ciclo de teste, todos os testes anteriores possam ser executados novamente com maior agilidade.

Testes de regressão testam o sistema para verificar se as mudanças não "quebram" o código previamente trabalhado.

Page 5: Prova 2 - 2bimestre 2015-2 v3 Prova

• em um processo de teste manual, os testes de regressão são caros, mas, com testes automatizados, são simples e diretos. • Todos os testes são reexecutados toda vez que é feita uma alteração no programa. • Os testes devem ser executados com 'sucesso' antes da mudança ser executada.

g) Teste de desempenhoParte dos testes de release podem envolver ensaios sobre as propriedades emergentes de um sistema, tais como desempenho e confiabilidade. • os testes devem refletir o perfil de uso do sistema. • geralmente, os testes de desempenho envolvem o planejamento de uma série de testes, nos quais a carga é aumentada continuamente até que o desempenho do sistema se torne inaceitável. • Testes de estresse são uma forma de testes de desempenho em que o sistema é deliberadamente sobrecarregado para testar seu comportamento até falhar

h) Teste de aceitação

3) Marque com um “X” a etapa do processo de software onde ocorre as respectivas atividades de teste de software

Atividade de teste Etapa do processo de software

Defin

ição

de

requ

isito

s

Proj

eto

de S

istem

a

Dese

nvol

vim

ento

de

subs

istem

a

Inte

graç

ão d

o sis

tem

a

Inst

alaç

ão d

o sis

tem

a

Evol

ução

do

siste

ma

Desa

tivaç

ão d

o sis

tem

a

Testes de desenvolvimentoTestes de releaseTestes de usuárioTestes de unidadeTestes de componentesTestes de sistemasTeste de interfaceTestes de caso de usoTestes de regressãoTeste de desempenhoTeste de aceitaçãoEspecificação de testes

Page 6: Prova 2 - 2bimestre 2015-2 v3 Prova

4) Descreva os fatores que afetam o custo da manutenção de um software?

A manutenibilidade é afetada por muitos fatores: (cont.) – disponibilidade de um computador próprio para a manutenção – disponibilidade da pessoa ou grupo que desenvolveu o software – o planejamento para manutenibilidade (fator mais importante que afeta a manutenibilidade)

É muito difícil entender programas "de outras pessoas". A dificuldade aumenta conforme o número de elementos na configuração de software diminui. • "As outras pessoas" frequentemente não estão presentes para explicar

Outros Custos não Monetários – Adiamento de oportunidades de desenvolvimento – Redução da qualidade global do software – Insatisfação do cliente – Insatisfação do pessoal de manutenção

5) Quais são as alternativas para decidir sobre a continuidade de sistemas legados, no caso de:

a) Baixa qualidade e baixo valor para o negócio:b) Baixa qualidade e alto valor para o negócio:c) Alta qualidade e baixo valor para o negócio:d) Alta qualidade e alto valor para o negócio: