Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de
Software e Engenharia
de Requisitos
Prof Elisamara de Oliveira
Prof Marcelo de Freitas Pintaud
1
Apresentao 3
Sumrio
O Produto Software
Aplicaes do Software
10
Mitos do Software
12
Exerccios do Captulo 1
15
Processo de Software
16
16
18
Exerccios do Captulo 2
20
Modelos de Processo
21
21
24
Modelo em Cascata
24
25
Prototipao
25
Modelo Espiral
26
28
29
Modelo Incremental
29
32
33
Processo Unificado
34
Desenvolvimento gil
37
Exerccios do Captulo 3
41
Engenharia de Requisitos
44
44
45
Requisitos de Produto
45
Requisitos Organizacionais
45
Requisitos Externos
46
49
49
Elicitao de Requisitos
53
55
59
60
Consideraes Finais
62
63
Captulo 1
63
Captulo 2
65
Captulo 3
66
Captulo 4 Parte 1
68
Captulo 4 Parte 2
68
Glossrio de Siglas
71
Referncias Bibliogrficas
72
Apresentao
Atualmente o software est presente, explicitamente ou mesmo sem se fazer notar, em diversos aspectos
da vida, inclusive nos sistemas crticos que afetam nossa sade e nosso bem estar. Diferentemente de outras
reas da Engenharia, novas aplicaes de software aparecem a cada dia e isso torna a rea de desenvolvimento de software um desafio constante, necessitando de pessoas treinadas, capacitadas e em constante
evoluo para desempenhar adequadamente as funes necessrias para a produo de software de qualidade.
As dificuldades em se obter software de qualidade, obedecendo a prazos, custos e escopo estabelecidos,
se mostram presentes desde os primrdios da rea de computao. Devido a isso, uma base slida sobre
a teoria e a prtica da Engenharia de Software essencial para sabermos como construir bons softwares e
avaliarmos os riscos e as oportunidades que ele pode trazer para o bom desempenho dos negcios.
A Engenharia de Software trilhou um longo caminho desde quando o termo foi usado pela primeira vez.
Convidamos voc, caro aluno, a percorrer esse caminho. Ao longo dessa disciplina, iremos destacar aspectos-chaves da Engenharia de Software, abordando, dentre outras, as seguintes questes:
Quando essas questes forem respondidas, voc, caro aluno, estar melhor preparado para entender os
conceitos de gesto e os aspectos tcnicos da atividade de Engenharia de Software que sero abordados nas
disciplinas subsequentes do nosso curso.
Marcelo Pintaud
Elisamara de Oliveira
Antecedentes Histricos da
Engenharia de Software
Caros alunos, para entendermos melhor os conceitos fundamentais que envolvem a rea de Engenharia de Software, vamos fazer um breve histrico dos
principais fatos que ocorreram no mundo da tecnologia que justificaram a criao deste ramo da computao. interessante vocs notarem que h algumas
dcadas atrs, no se tinha ideia da importncia que
os computadores e, em especial, o software (programas de computadores), iriam ter e como iriam afetar
profundamente a vida de todos ns.
Fonte: http://profcarolinadgs.webnode.com.br/unip/engenhariade-software/
A Crise do Software
A crise do software foi um termo criado para descrever as dificuldades enfrentadas no desenvolvimento de
software no final da dcada de 1960. A complexidade dos problemas, a ausncia de tcnicas bem estabelecidas
e a crescente demanda por novas aplicaes comeavam a se tornar um problema srio. Essa crise teve como
origem a introduo de computadores mais poderosos. O advento deste hardware com mais recursos tornava
viveis softwares bem maiores e mais complexos que os sistemas existentes. A experincia inicial de construo
desses sistemas mostrou que uma abordagem informal de desenvolvimento de software no era suficiente.
Projetos importantes sofriam atrasos (s vezes, de alguns anos). Os custos eram muito maiores do que os inicialmente projetados. As solues de software no eram confiveis. Os programas eram de difcil manuteno.
Novas tcnicas e novos mtodos eram necessrios para controlar a complexidade inerente aos grandes sistemas
de software.
Desta forma, como o principal objetivo dessa conferncia foi estabelecer prticas mais maduras para o
processo de desenvolvimento de software, considerado como o evento que deu origem disciplina de Engenharia de Software.
Duas dcadas depois, em 1986, Alfred Spector, presidente da Transarc Corporation, foi co-autor de um
artigo comparando a construo de pontes ao desenvolvimento de software. Sua premissa era de que As
pontes normalmente eram construdas no tempo planejado, no oramento e nunca caam. Por outro lado, os
softwares nunca ficavam prontos dentro do prazo e do oramento, e, alm disso, quase sempre apresentavam problemas.
Uma dcada mais tarde, em 1995, a organizao The Standish Group (1995) publicou um estudo analisando as estatsticas sobre sucesso e fracasso dos projetos de desenvolvimento de software: o Chaos Report.
Neste estudo foi revelado que:
quase 84% dos projetos de software eram mal-sucedidos, sejam por serem cancelados ou apresentarem falhas crticas (dentre elas concluso fora do tempo previsto, fora do oramento previsto ou com
menos funcionalidades do que o planejado)
31.1% dos projetos eram cancelados antes de serem concludos
52.7% dos projetos apresentavam custo real 189% maior que o estimado e o tempo de concluso
222% maior que o previsto
16.2% dos projetos eram concludos dentro de prazo, custo e escopo estimados
estimou-se que, naquele ano, as agncias governamentais e companhias privadas americanas teriam
gasto US$ 81 bilhes apenas em projetos cancelados, e mais US$ 59 bilhes em projetos concludos
fora do tempo previsto.
O Standish Group continuou publicando regularmente seu relatrio nos anos seguintes e, apesar de 35%
dos projetos de software iniciados em 2006 terem obtido sucesso, ainda assustador saber que dois teros
de todos eles fracassam. Vejam as estatsticas de 2004:
Definies e Conceitos de
Software e Engenharia de Software
Apesar da sua indiscutvel importncia, caro, aluno, as tcnicas e mtodos da Engenharia de Software so, atualmente, amplamente, mas no universalmente, utilizadas.
Engenharia de Software uma disciplina da engenharia que se ocupa de todos os aspectos da produo de software, desde os estgios iniciais de especi-
Mas no podemos falar da Engenharia de Software, sem antes, entendermos o software e seus
fundamentos. Assim, os conceitos de software so
apresentados aqui como uma referncia inicial para
o estudo do software, propriamente dito, e de seus
processos de desenvolvimento.
Comecemos pelo significado lxico da palavra software e seu significado nos dicionrios:
Diferentemente da curva terica de falhas do hardware, a de software leva em conta que o software
no sofre processos de envelhecimento como o hardware, pois o software no algo fsico.No incio do
ciclo de vida do software, teremos problemas (bugs)
que sero ajustados no decorrer do desenvolvimento
e se estabilizaro gerando uma tendncia de achatamento da curva. Notemos que esta apenas uma
teoria, j que a curva real do ndice de falhas de um
software considera o processo de manuteno e mudanas. Durante o processo de refinamento do produto ou mudanas aumenta-se, consideravelmente,
a probabilidade de insero de novos erros, gerando
picos na curva de falhas. As sucessivas alteraes do
software tendem a introduzir mais erros antes da estabilizao dos erros de alteraes anteriores, ocasionando a tendncia crescente do ndice de falhas,
conforme pode ser visto na figura 2.
Desta forma, o software sofre deteriorao ocasionada por diversos fatores sendo uma caracterstica peculiar do produto. Segundo Pressman (2010),
no caso do hardware, temos um alto ndice de falhas no incio do seu ciclo de vida ocasionadas por
defeitos de fabricao e projeto. Posteriormente os
defeitos so corrigidos dando estabilidade nas falhas
ou mantendo-a em um nvel muito baixo e suportvel para a estrutura. J no final do ciclo de vida
do produto podem surgir problemas relacionados ao
envelhecimento, acmulo de poeira, vibrao, abuso,
temperaturas extremas, entre outros. Este processo
pode ser visto no grfico apresentado na figura 1.
Como veculo usado para entrega do produto, o software trabalha como elemento essencial para o controle do computador e seus recursos (como o sistema
operacional), para a comunicao e transmisso da
informao (redes) e para a criao e controle de
outros programas (ferramentas e ambientes de desenvolvimento).
Quando o hardware projetado e construdo, faz-se uso de catlogos de componentes digitais. Cada
circuito integrado tem um cdigo de componente,
uma funo definida e validada, uma interface bem
delineada e um conjunto padro de integrao. Depois que cada componente selecionado, ele pode
ser requisitado do estoque e utilizado em diferentes
projetos de hardware com alta confiabilidade.
No mundo do software, isso algo que est apenas comeando a ser utilizado numa escala mais
ampla, apesar de existirem alguns casos antigos de
reuso, como as bibliotecas de subrotinas cientficas. Atualmente, a viso de reuso foi ampliada para
abranger no apenas algoritmos consagrados, mas
tambm estruturas de dados, interfaces grficas e
diferentes classes e componentes orientados a objetos.
O programador solitrio de antigamente foi substitudo por uma equipe de especialistas de software,
com cada um se concentrando numa parte da tecnologia necessria para produzir uma aplicao complexa. Mas, os mesmos questionamentos feitos ao programador solitrio continuam sendo feitos quando
modernos sistemas baseados em computador esto
sendo construdos:
Por que se leva tanto tempo para concluir um
software?
Por que os custos de desenvolvimento so to
altos?
Por que no podemos achar todos os erros antes de entregar o software aos clientes?
Por que continuamos a ter dificuldade em avaliar o seu progresso enquanto o software desenvolvido?
O Produto Software
Na realidade atual, o software assume um duplo
papel: ele o produto e, ao mesmo tempo, o veculo
para entrega do produto. Esta afirmao do conhecido autor Roger Pressman (Pressman, 2010), que
explica que o software, como produto, permite que
o potencial de processamento do hardware do computador ou da rede de computadores seja utilizado,
pois transforma informaes em um amplo espectro
de aplicaes, das mais simples s mais complexas.
Essas perguntas so manifestaes da preocupao sobre o software e a maneira pela qual ele
10
Aplicaes do Software
O software pode ser aplicado em qualquer situao para a qual um conjunto previamente especializado de procedimentos (um algoritmo) tenha sido
definido.
11
Software para web: as pginas da web recuperadas por um browser constituem software
que incorpora instrues executveis na forma
de scripts, permitindo a incluso de elementos dinmicos, animaes, acesso a banco de
12
Mitos do Software
Mito:
Se ns estamos atrasados nos prazos, podemos
adicionar mais programadores e tirar o atraso.
Realidade:
Desenvolvimento de software no um processo mecnico. Quando novas pessoas so
adicionadas, pessoas que estavam trabalhando devem gastar tempo educando os novatos.
Pessoas podem ser adicionadas, mas de um
modo planejado e bem coordenado.
Para que voc, caro aluno, no seja enganado pelos mitos, pois eles ainda esto presentes em nosso
meio, vamos apresent-los a voc nesta seo, com
base na abordagem de Pressman (2010).
Mitos Administrativos ou Gerenciais
Mito:
Se decidirmos terceirizar um projeto vamos poder relaxar e deixar que a empresa o elabore.
Realidade:
Se uma organizao no sabe como gerir e
controlar seus projetos de software, terceiriz-los certamente trar outros problemas, talvez
maiores.
13
Mitos do Cliente
Mitos do Profissional
Os mitos que ainda tm crdito entre os profissionais de software sobreviveram a mais de 50 anos de
cultura de programao. No incio a programao era
vista como uma forma de arte.
Mito:
Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estar completo.
Realidade:
Estudos mostram que, entre 60% a 80%, de
todo o esforo gasto em um programa sero
despendidos depois dele ter sido entregue,
pela primeira vez, para o usurio.
Mito:
Enquanto no tiver o programa funcionando,
eu no terei realmente nenhuma maneira de
avaliar sua qualidade.
Realidade:
Um dos mecanismos mais efetivos para garantia de qualidade do software pode ser aplicado
desde o seu incio a Reviso Tcnica Formal
(um filtro de qualidade).
Mito:
Os requisitos de projeto modificam-se continuamente, mas as mudanas podem ser facilmente acomodadas, porque o software flexvel.
Realidade:
verdade que os requisitos de software mudam, mas o impacto das mudanas varia de
acordo com o momento na qual ela ocorre. Em
termos de custos, na fase de definio (x1), na
fase de desenvolvimento (1,5 a 6x) e na fase
de manuteno (60 a 100x). Deve ser dada
muita ateno s definies iniciais.
Mito:
A nica coisa a ser entregue em um projeto
bem-sucedido o programa funcionando.
Realidade:
O programa executvel uma das partes da
configurao do software. A documentao
um fator importante tambm (alicerce para o
desenvolvimento e guia para a manuteno).
Mito:
A engenharia de software vai nos fazer criar
documentao volumosa e desnecessria que
certamente nos atrasar.
Realidade:
A engenharia de software no se relaciona
criao de documentos. Refere-se criao de
qualidade. Melhor qualidade leva reduo de
14
15
Exerccios do Captulo 1
1) Qual das questes abaixo no mais uma das grandes preocupaes de um engenheiro
de software?
a) Por que normalmente se gasta tanto tempo para desenvolver software?
b) Por que, via de regra, software custa to caro?
c) Por que quase sempre no se consegue remover todos os erros do software antes da sua entrega?
d) Por que hardware to caro?
2) Software um produto que pode ser manufaturado usando as mesmas tecnologias
usadas para outros artefatos de engenharia.
a) Verdadeiro
b) Falso
3) Software deteriora-se ao invs de se desgastar porque:
a) Software sofre quando exposto a ambientes hostis
b) Defeitos so mais provveis de surgir quando o software usado vrias vezes
c) Mudanas frequentes aumentam a probabilidade de se introduzir erros no software
d) Componentes de reposio de sofware so difceis de se encontrar no mercado
4) Atividades guarda-chuva de engenharia de software so aplicadas somente durante
as fases iniciais do desenvolvimento de software:
a) Verdadeiro
b) Falso
5) O que caracterizou a chamada crise do software?
6) Conforme vimos, Engenharia de Software uma disciplina da Engenharia que se ocupa
de todos os aspectos da produo de software. Seu principal objetivo fornecer uma
estrutura metodolgica para a construo de software com alta qualidade. O que necessrio para que isso acontea?
7) Normalmente, para o leigo, software se constitui no cdigo fonte + cdigo executvel. Vimos que para a Engenharia de Software, o conceito de software algo mais
abrangente. Como Pressman conceitua software?
8) O processo de desenvolvimento do software apresenta diferenas fundamentais em
relao ao hardware. Cite algumas dessas diferenas.
9) Faa um esboo das curvas de taxa de falhas do hardware e do software. Explique as
diferenas entre as curvas.
16
Processo de Software
Caro aluno, neste captulo descreveremos o que um processo de software, mostraremos as
camadas em que a Engenharia de Software se divide, descreveremos os padres de processo, a
avaliao e as ferramentas que apoiam o processo.
Mas, caro aluno, voc pode estar se perguntando: processo e engenharia de software so a mesma
coisa?
A resposta sim e no. Processo de software
define a abordagem que adotada quando o software elaborado. A Engenharia de Software engloba
tambm as tecnologias que constituem um processo,
como mtodos, tcnicas e ferramentas de desenvolvimento. Assim, a Engenharia de Software engloba
os processos de software.
Figura 3
Engenharia de Software: uma tecnologia em camadas
17
Para que a Engenharia de Software possa ser aplicada como uma abordagem disciplinada para o desenvolvimento, operao e manuteno de um software, um processo deve ser definido. De uma forma
geral, um processo caracterizado por fases:
1. Fase de Definio
2. Fase de Desenvolvimento
3. Fase de Manuteno
18
Inteno do padro: descreve o que o padro faz, qual a sua inteno e qual problema o
padro se prope a resolver.
Tambm conhecido como: um outro nome
pelo qual o padro conhecido, caso exista.
Motivao: um exemplo de problema de projeto e como a utilizao do padro resolve este
problema.
Aplicabilidade: condies em que o padro
pode ser aplicado, exemplo de situao em que
o padro aplicado e como identificar essas
situaes.
Estrutura: uma representao grfica das
classes no padro utilizando uma linguagem de
modelagem, em que possam ser representados
os relacionamentos entre os objetos e sequncias de requisies.
Participantes: apresenta as classes e objetos
que fazem parte do padro e quais as suas responsabilidades.
Colaboraes: como os participantes colaboram para atender as suas responsabilidades.
Consequncias: descreve como o padro alcana seus objetivos, quais as decises e resultados de usar o padro e que aspectos da
estrutura do sistema podem ser variados independentemente.
Implementao: que detalhes de implementao devem ser observados se o padro for
implementado. Deve ser observado se existem
detalhes especficos para uma determinada linguagem.
Exemplo de cdigo: um exemplo de cdigo
que mostre como o padro deve ser implementado em alguma linguagem.
Usos conhecidos: exemplos do padro encontrados em sistemas reais.
Padres relacionados: padres que se assemelham a este padro e quais as diferenas.
Apresenta tambm outros padres que podem
ser utilizados em conjunto.
19
A existncia ou a simples escolha de um processo de software no garante que o software ser entregue
no prazo, que ele atenda as necessidades do projeto e possua as caractersticas tcnicas que garantiro sua
qualidade no longo prazo. Os padres de processo precisam estar ligados de forma slida s prticas da
Engenharia de Software. Alm disso, o processo em si deve ser avaliado para garantir que ele satisfaa a um
conjunto de critrios essenciais para o desenvolvimento bem sucedido. O relacionamento entre o processo
de software e os mtodos aplicados para sua avaliao e melhoria mostrado na figura 4.
Figura 4
Processo de Software, Avaliao e Melhoria de Processo
Como vimos neste captulo, a Engenharia de Software uma disciplina que integra processo, mtodos
e ferramentas para o desenvolvimento de projetos de
software. H diversos modelos de processo, mas todos
possuem algumas caractersticas em comum, definindo
um conjunto de atividades de arcabouo, uma coleo
de tarefas para que se consiga realizar as atividades,
produtos de trabalho produzidos nas tarefas e um conjunto de atividades guarda-chuva que apiam as ativi-
20
Exerccios do Captulo 2
1) Processos de software podem ser construdos de modelos pr-existentes objetivando
se adequar s necessidades de um determinado projeto
a) Verdadeiro
b) Falso
2) A essncia da prtica da engenharia de software pode ser resumida em compreender o
problema, planejar a soluo, executar o plano e examinar o resultado.
a) Verdadeiro
b) Falso
3) Qual dos itens listados abaixo no se constitui numa das camadas da engenharia de
software?
a) Processo
b) Manufatura
c) Mtodos
d) Ferramentas
4) Cite que tipos de manuteno um software pode sofrer.
5) As atividades guarda-chuva do cobertura para as fases envolvidas na produo de
software. Cite algumas dessas atividades.
6) H uma iluso por parte de alguns desenvolvedores que basta selecionar um modelo
de processo e aplic-lo para se obter software de qualidade, dentro do prazo e custos
estabelecidos. Comente sobre esse mito.
21
Modelos de Processo
Caro aluno, neste captulo definiremos o que ciclo de vida de software, quais suas principais
etapas e descreveremos os principais modelos de processo de software: Modelo em Cascata, Modelos Evolucionrios (Modelo de Prototipagem, Modelo Espiral e Modelo Concorrente), Modelos
Incrementais (Modelo RAD e Modelo Incremental), Modelo Baseado em Componentes, Modelo de
Mtodos Formais, Processo Unificado e Mtodos geis de Desenvolvimento.
de
de
de
de
Definio
Desenvolvimento
Operao
Retirada
1. Fase de Definio
A fase de definio do software ocorre em conjunto com outras atividades como a BPM Business
Process Modeling ou Modelagem de Processos de
Negcios e Anlise de Sistemas. Nestas atividades,
diversos profissionais fazem o levantamento da situao atual em busca da identificao de problemas,
para que possam elaborar propostas de soluo de
sistemas computacionais que os resolvam. Dentre as
propostas apresentadas, deve-se fazer um Estudo de
22
2. Fase de Desenvolvimento
A fase de desenvolvimento ou de produo do software inclui todas as atividades que tm por objetivo
a construo do produto. Esta fase inclui as atividades de projeto, implementao, verificao e validao do software.
DDProjeto
A atividade de projeto compreende todo o esforo de concepo e modelagem que tem por
objetivo descrever como o software ser implementado. O projeto inclui:
Projeto conceitual: envolve a elaborao das
ideias e conceitos bsicos que determinam os
elementos fundamentais do software a ser desenvolvido.
Projeto da interface com o usurio: envolve
a elaborao das formas como o usurio vai
interagir para realizar suas tarefas, a escolha
dos objetos de interfaces (botes, menus, caixas de texto, etc.), o layout de janelas e telas,
dentre outros; a interface deve garantir uma
usabilidade satisfatria do software e um fator fundamental de sucesso do software.
Projeto da arquitetura do software: se refere
elaborao de uma viso macroscpica do software em relao aos componentes que interagem entre si. So exemplos de vises arquitetnicas, a viso conceitual, viso de mdulos,
viso de cdigo e viso de execuo.
Projeto dos algoritmos e estruturas de dados:
objetiva determinar, de maneira independente
da linguagem de programao a ser adotada,
as solues algortmicas e as estruturas de dados associados.
DDVerificao e Validao
So atividades que se destinam a mostrar que
o sistema est de acordo com a especificao
e que ele atende s expectativas de clientes e
usurios. A validao visa assegurar que o programa est fazendo o que foi definido na sua
especificao. A verificao visa certificar se o
programa est correto, isto , se no possui
erros de execuo e est fazendo de forma correta suas funcionalidades. Existem diferentes
formas de verificao e validao. Os testes de
correo, desempenho, confiabilidade, robustez, usabilidade, dentre outros, podem ser usados para avaliar diversos fatores de qualidade
a partir da execuo do software.
3. Fase de Operao
A fase de operao envolve diferentes tipos de atividades:
DDImplementao
A implementao envolve as atividades de codificao, compilao, integrao e testes. A
codificao visa traduzir o projeto num programa utilizando linguagens e ferramentas ade-
23
Distribuio e entrega
Instalao e configurao
Utilizao
Manuteno
O processo de instalao e configurao, normalmente, pode ser feito com a ajuda de software de
instalao disponibilizados pelos fabricantes dos ambientes operacionais.
A utilizao a efetiva entrada em operao
do software. A qualidade da utilizao reflete a usabilidade do software.
Modelo em Cascata
Modelo de Prototipao
Modelo RAD
Modelo Incremental
Modelo Espiral
Modelo de Desenvolvimento Baseado em Componentes
Modelo de Desenvolvimento Concorrente
Modelo de Mtodos Formais
Modelos de Processos geis
4. Fase de retirada
A fase de retirada ou desuso de um software um
grande desafio para os tempos atuais. H diversos
sistemas que esto em funcionamento em empresas, que possuem timos nveis de confiabilidade e
de correo. No entanto, estes sistesmas precisam
evoluir para novas plataformas operacionais ou para
permitirem a incorporao de novos requisitos e funcionalidades. A retirada desses sistemas legados em
24
tos explcitos de tarefas explcitas para o desenvolvimento. Cada modelo prescritivo de processo tambm
prescreve um fluxo de trabalho ou maneira como os
elementos se inter-relacionam.
Processos prescritivos so uma categoria que engloba os processos que possuem pontos observveis
que a cada passo podem ser verificados e classificados como vlidos ou sujeitos a ajustes.
Modelo em Cascata
Modelos Evolucionrios
o Modelo de Prototipagem
o Modelo Espiral
o Modelo Concorrente
Modelos Incrementais
o Modelo RAD
o Modelo Incremental
Modelo Baseado em Componentes
Modelo de Mtodos Formais
Processo Unificado
Os instrumentos prescritivos do processo de planejamento estratgico explicitam o que deve ser feito pela organizao para se direcionar o esforo de
desenvolvimento de software. Um modelo prescritivo
de processo atua como complemento com conjun-
Modelo em Cascata
No modelo em cascata, tambm conhecido como ciclo de vida clssico, o processo de desenvolvimento
de software visto como uma abordagem sistemtica e sequencial que comea com a especificao dos
requisitos do cliente e progride seguindo as etapas de planejamento, modelagem, construo e implantao
do sistema, conforme ilustra a figura 5, culminando na manuteno progressiva do produto entregue.
Figura 5
Modelo em Cascata
Este modelo o paradigma mais antigo da Engenharia de Software e bastante criticado em funo
dos problemas encontrados nos projetos em que
aplicado. A realidade tem mostrado que num projeto
raramente se segue o fluxo sequencial que o modelo
prope, gerando problemas futuros que oneram os
custos e prazos. Uma das causas mais comuns deste
problema a dificuldade do cliente em declarar claramente todas as suas necessidades e expectativas,
25
de software. apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software,
mas no identificou requisitos de entrada, processamento e sada com detalhes.
Os trabalhos de desenvolvimento de software atuais seguem ritmos muito rpidos, sujeitos a diversas
modificaes, o que torna o modelo em cascata inadequado para estes tipos de projeto. Mas, cumpre
ressaltar, caro aluno, que embora o Modelo em Cascata ou Ciclo de Vida Clssico tenha fragilidades, ele
significativamente melhor do que uma abordagem
casual para o desenvolvimento de software.
Modelos Evolucionrios de
Processo
Figura 6
Modelo de Prototipao
26
Um dos riscos envolvidos neste modelo o descomprometimento com a anlise do produto, visto que os envolvidos podem se apoiar totalmente no modelo prototipado gerando uma expectativa muitas vezes irrealista de desempenho, em funo do prottipo ser muito mais enxuto do que o produto final e estar em ambiente controlado.
Alm disso, o cliente no sabe que o software que ele v no considerou, durante o desenvolvimento, a qualidade
global e a manutenibilidade a longo prazo. Ele pode, tambm, no aceitar facilmente a ideia de que a verso final
do software est sendo construda e tentar forar a utilizao do prottipo como produto final.
Outro risco deste modelo que o desenvolvedor frequentemente faz uma implementao comprometida (utilizando partes de programas existentes, geradores de relatrios, geradores de janelas) com o objetivo de produzir
rapidamente um prottipo executvel. Depois de um tempo ele se familiariza com essas escolhas, e pode se esquecer que elas no so apropriadas para o produto final.
Ainda que possam ocorrer problemas, a prototipao um modelo eficiente. A chave para seu sucesso
definirem-se as regras do jogo logo no comeo. O cliente e o desenvolvedor devem ambos concordar que o
prottipo seja construdo para servir como um mecanismo a fim de se definir os requisitos do projeto. A figura
7 traz uma outra viso deste processo.
Modelo Espiral
Desenvolvido para abranger as melhores caractersticas do Modelo em Cascata e da Prototipao, acrescentando, ao mesmo tempo, um novo elemento: a anlise de riscos.
27
O modelo em espiral foi desenvolvido por Barry Boehm (1988) em seu artigo intitulado A Spiral Model of
Software Development and Enhancement. Este modelo foi o primeiro a explicar o porqu do modo iterativo
e elencar suas vantagens. As iteraes tm uma durao tpica de seis meses a dois anos. Cada fase inicia-se
com um objetivo esperado e termina como uma reviso pelo cliente do progresso (que deve ser interna) e
assim por diante. Esforos de anlise e engenharia so aplicados em cada fase do projeto, tendo sempre o
foco no objetivo do projeto. A figura 8 ilustra este processo.
uma abordagem realstica para o desenvolvimento de software de grande porte. Como o software evolui na medida em que o processo avana, o
cliente e o desenvolvedor entendem melhor e reagem aos riscos em cada nvel evolucionrio. Para pequenos projetos, os conceitos de desenvolvimento de
software gil tornam-se uma alternativa mais vivel.
Como vantagens deste modelo, podemos citar as
estimativas realsticas dadas identificao de pro-
28
blemas importantes logo no incio do processo, versatilidade para lidar com mudanas (quando inevitveis), desenvolvimento antecipado por parte dos
engenheiros de software que tm visibilidade das
necessidades por fases, Usa prototipagem (em qualquer estgio de evoluo do produto) como mecanismo de reduo de risco.
Figura 9
Transies de Estado no Modelo de Desenvolvimento Concorrente
29
Caro aluno, h diversas situaes em que os requisitos iniciais do software esto razoavelmente
bem definidos, mas o escopo global do processo de
desenvolvimento claramente elimina uma abordagem puramente linear ou sequencial. Adicionalmente
pode haver a necessidade de se fornecer rapidamente
um conjunto limitado de funcionalidades do software
aos usurios e depois refinar, melhorar e expandir
aquela funcionalidade em verses mais avanadas
do software. Nestes casos, os modelos de processo
que produzem software em incrementos so os mais
indicados.
Os processos incrementais que discutiremos aqui
incluem o Modelo Incremental e o Modelo RAD Rapid Application Development (Desenvolvimento Rpido de Aplicao).
Modelo Incremental
O modelo incremental combina elementos do modelo em cascata, mas aplicados de forma interativa.
O modelo de processo incremental interativo como
a prototipagem, mas diferentemente da prototipagem, o incremental tem como objetivo apresentar
um produto operacional a cada incremento realizado.
Este processo pode ser visto na figura 10.
O software moderno caracterizado por modificaes contnuas, prazos muito curtos e por uma necessidade premente de satisfazer o usurio ou cliente.
Os modelos evolucionrios de processo foram criados
com o objetivo de resolver estes problemas, mas tambm tm suas fragilidades. Uma delas que a prototipagem pode trazer problemas para o planejamento
30
Figura 10
Modelo de Processo Incremental
31
Projetos em que os requisitos esto bem definidos, o objetivo do sistema restrito e se deseja
criar um sistema plenamente funcional dentro de perodos muito curtos (por exemplo, de
60 a 90 dias, como a figura 11 sugere)
32
Desenvolvimento Baseado em
Componentes
Figura 12
Modelo do Desenvolvimento Baseado em Componentes
33
O reuso de software se refere utilizao de software existente para o desenvolvimento de um novo software. A deciso quanto utilizao de componentes reutilizveis envolve comparaes entre o investimento
necessrio para a sua aquisio e os gastos para o desenvolvimento de uma soluo customizada. Devem ser
estimados os custos e benefcios lquidos no investimento em reuso de software e serem avaliados os ganhos
com a adoo do reuso.
Muitos mtodos para o reuso esto em prtica no mercado atual, sendo sua escolha determinada pela sua
adequao ao modelo de negcio ou s tecnologias utilizadas.
O RiSE - Reuse in Software Engineering, por exemplo, um esforo em direo a um efetivo framework de
mtodos, processos, ferramentas e boas prticas relacionados ao reuso de software que compreende aspectos
tcnicos e no tcnicos.
O CRUISE - Component Reuse in Software Engineering, no formato de livro on line e livre com foco em
reuso de software, um dos primeiros esforos em mapear o reuso de software que cita as reas chave, desenvolvimento baseado em componentes, reengenharia, ferramentas, qualidade de componentes de software,
mtricas para reuso, repositrios, engenharia de domnio, linhas de produtos, entre outros aspectos.
O RAD - Rapid Application Development, visto anteriormente, um modelo de processo de desenvolvimento de software iterativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto (entre 60
e 90 dias) tendo um foco considervel no reuso para se atingir um prazo to justo tornando-o uma tcnica de
quarta gerao que reutiliza componentes de programas existentes ou cria componentes reutilizveis.
Os mtodos formais so tcnicas baseadas em formalismos matemticos que podem ser usados para a
especificao, desenvolvimento e verificao de sistemas de software. Seu uso para o desenvolvimento
de software motivado pela base que fornecem garantindo confiabilidade e robustez a um projeto, uma
34
No modelo de Mtodos Formais, tambm conhecido como Engenharia de Software Cleanroom (Sala
Limpa), uma questo fundamental garantir que o
software realmente uma soluo para o problema
proposto. Para realizar tal tarefa, deve-se primeiro
construir um modelo da soluo (especificao) utilizando uma linguagem formal. Tendo este modelo
formal como base, o mtodo permite:
Caro aluno,
Para mais informaes sobre os Mtodos Formais,
consulte o link:
http://www.tiosam.org/enciclopedia/index.
asp?q=Mtodos_formais
Para entender como funciona o controle de trfego
areo (projeto crtico), assista ao filme:
http://youtu.be/7wsrs3a-y3M
Processo Unificado
De uma maneira mais abrangente, podemos caracterizar assim o modelo de Mtodos Formais:
Permite especificar, desenvolver e verificar um
software atravs de uma rigorosa notao matemtica.
Fornece um mecanismo para eliminar muitos
problemas encontrados nos outros modelos,
como por exemplo, ambiguidade, incompletude e inconsistncia, que podem ser descobertos e corrigidos mais facilmente atravs de
anlise matemtica.
Promete o desenvolvimento de software livre
de defeitos.
Consome muito tempo de desenvolvimento e
muito caro.
35
Fases
Uma fase definida como a dimenso de tempo entre duas maiores marcas (major milestones) de
processos, durante a qual um conjunto bem definido
de objetivos encontrado, artefatos so completados e a deciso tomada no sentido de ir para a
prxima fase ou no. Maiores marcas podem ser
definidas como eventos de grandes sistemas organizados no final de cada fase de desenvolvimento para
fornecer visibilidade aos seus problemas, sincronizar
o gerenciamento com as perspectivas de engenharia
e verificar se os objetivos de cada fase foram obtidos. Este conceito est intimamente relacionado ao
risco que deve ser considerado na medida em que o
sistema estiver evoluindo. Para cada fase os maiores
milestones buscam identificar e antecipar os riscos.
Figura 13
Fonte: http://isosoftware.blogspot.com/2010/02/processo-unificado-pu-unified-process.html
36
37
Desenvolvimento gil
Inicialmente, os mtodos geis foram denominados de mtodos leves. Em 2001, Kent Beck e 16 outros notveis profissionais da rea de Engenharia de
Software se reuniram, adotaram o nome mtodos
geis, e publicaram o Manifesto gil, documento
que rene os princpios e prticas desta metodologia de desenvolvimento. Esses veteranos formaram
a Agile Alliance ou Aliana gil, uma organizao no
lucrativa que promove e fomenta o desenvolvimento
gil.
38
Alguns crticos do processo gil afirmam que o maior risco deste tipo de abordagem a baixa qualidade
ou mesmo inexistncia de documentao do projeto devido interao humana face-a-face que, se por um
lado traz agilidade na comunicao, por outro traz a informalidade nas definies. Assim sendo, necessrio
um bom acompanhamento do gestor do projeto para garantir a qualidade dos trabalhos independente do
processo utilizado.
De uma forma geral, os processos geis atendem aos projetos de software que, normalmente, apresentam:
Dificuldade em prever com antecedncia quais requisitos vo persistir e quais sero modificados, bem
como prever quais prioridades dos clientes sofrero mudanas ao longo do projeto;
Intercalao das etapas de projeto e construo, que vo sendo realizadas juntas de modo que os
modelos de projeto vo sendo comprovados na medida em que so criados;
Anlise, projeto, construo e testes no so to previsveis, do ponto de vista do planejamento, como
seria desejado.
39
Caro aluno, em defesa dos mtodos geis e fazendo uma crtica ao chamado desenvolvimento tradicional, encontramos a seguinte comparao na pesquisa que fizemos na internet:
Fonte: http://icarovinicius.com.br/blog/tag/metodologias-ageis/
A metodologia gil vem gerando grande debate, fazendo muitos desenvolvedores apaixonados e muitos
outros crticos ferrenhos. Mas temos que manter a imparcialidade profissional e questionarmos o que realmente tem que ser observado, como:
Qual a melhor forma de se alcanar a agilidade nos processos e prticas do desenvolvimento de software?
Como construir softwares que satisfaam s necessidades do cliente e possua caractersticas de qualidade que permitam sua extenso e ampliao para satisfazer as necessidades do cliente no longo
prazo?
40
Scrum e Extreme Programming so algumas metodologias geis que esto em voga no momento.
Elas refletem o esprito deste manifesto gil?
Com a nossa cultura de fast food, de querer achar uma receita mgica para tudo, o mundo gil ganhou fora
dentro de um certo nicho de desenvolvimento. A gente ouve falar muito hoje de Scrum, de Extreme Programming,
mas se usam essas ferramentas apenas como ferramentas. Isso no funciona. Tem gente que at discute se o pico
recente de Scrum no foi mais negativo que positivo, porque muita gente est aplicando e no atinge os resultados,
simplesmente porque usa o raciocnio antigo com ferramentas novas. Os valores no foram entendidos. Scrum um
template. Ele te diz que voc tem esse papel chamado product owner, voc tem este tempo chamado sprint, tem
essa atividade chamada scrum dirio, e essas coisas chamadas retrospectiva e backlog. Ele te d nomes e elementos
que voc aplica. Mas no s aplicar e ponto. Isso s o comeo. A grande mensagem da forma gil de pensar
que o procedimento no importante. irrelevante se eu chamo o meu tempo de trabalho de sprint ou o dono
do projeto de product owner. absolutamente irrelevante, se eu no entendi os valores que so entregar valor ao
cliente, criar uma organizao de aprendizado, acreditar nas pessoas e dar suporte a elas. Esses princpios que so
importantes, mas no so explcitos. Em vez disso eu tenho papis, cargos e atividades. No se explicam os porqus
e no entendendo os porqus voc vai fazer exatamente a mesma coisa, mas em vez de chamar o sujeito de gerente
de projeto voc vai cham-lo de product owner. Mas nada mudou.
41
Exerccios do Captulo 3
1) Em relao ao modelo Em Cascata podemos afirmar que :
a) Uma abordagem razovel quando os requisitos esto bem estabelecidos
b) Uma boa abordagem quando se tem pressa em entregar o software
c) A melhor abordagem para se usar quando se tem uma grande equipe de desenvolvimento
d) Um modelo ultrapassado que raramente utilizado atualmente
2) Quais so as 5 atividades gerais da Engenharia de Software, tambm caracterizadas no
modelo Em Cascata?
a) Especificao, gerenciamento de risco, medida, produo, reviso
b) Anlise, projeto, implementao, testes, manuteno
c) Especificao, planejamento, modelagem, construo, implantao (entrega)
d) Anlise, planejamento, projeto, programao, anlise de risco
3) Podemos dizer que o modelo incremental :
a) Uma abordagem razovel quando os requisitos esto bem estabelecidos
b) Uma boa abordagem quando um produto de trabalho ncleo requerido rapidamente
c) A melhor abordagem para se usar quando se tem uma grande equipe de desenvolvimento
d) Um modelo revolucionrio que normalmente no utilizado para desenvolver produtos comerciais
4) Podemos afirmar que modelos de processo evolucionrios:
a) So iterativos por natureza
b) Podem facilmente acomodar mudanas de requisitos
c) Quase sempre no produzem produtos descartveis
d) Todas as alternativas anteriores esto corretas
5) O modelo de prototipagem :
a) Uma abordagem razovel quando os requisitos esto bem definidos
b) A melhor abordagem para usar em projetos com grandes equipes de desenvolvimento
c) Uma abordagem razovel quando o cliente no consegue definir os requisitos claramente
d) Um modelo de alto risco que raramente produz software de qualidade
6) O modelo espiral de desenvolvimento de software:
a) Finaliza com a entrega do software
b) mais catico que o modelo incremental
c) Inclui avaliao de riscos a cada iterao
d) Todas as afirmativas anteriores esto corretas
42
43
44
Engenharia de Requisitos
Caro aluno, neste captulo definiremos o que so requisitos de software e a sua importncia dentro da
Engenharia de Requisitos. Todas as etapas, conceitos e definies ligadas ER sero apresentadas.
Requisitos e Engenharia de
Requisitos
Para que o processo de desenvolvimento de software seja bem sucedido fundamental que haja
uma compreenso completa dos requisitos de sof-
45
tware. Tanto o desenvolvedor como o cliente desempenham um papel ativo na anlise e especificao
dos requisitos. O desenvolvedor age como indagador,
consultor e solucionador de problemas e o cliente
tenta traduzir os conceitos relativos ao desempenho
do software que ele tem concebido apenas em sua
mente, tarefa que , s vezes, bastante complicada e
nebulosa, em detalhes concretos.
Requisitos Organizacionais
So requisitos derivados das polticas organizacionais do cliente e do desenvolvedor, como por exemplo:
Requisitos de Implementao: ligados s regras de codificao e restries de software e
hardware usados para desenvolver ou executar
o sistema
Requisitos de Padres: referem-se definio
da linguagem de programao e s normas que
2. Requisitos No-Funcionais
So requisitos que no dizem respeito diretamente funcionalidade do sistema, mas expressam propriedades do sistema e/ou restries sobre os servi-
46
3. Requisitos de Domnio
So requisitos derivados do domnio da aplicao
do sistema. Ao invs de serem obtidos a partir das
necessidades especficas dos usurios do sistema,
eles podem se transformar em novos requisitos funcionais, ou serem regras de negcios especfica do
domnio do problema. Por exemplo:
DDUtilizao de uma interface padro utilizando a
norma Z39.50;
DDDisponibilizao de arquivos somente para leitura devido aos direitos autorais;
Requisitos Externos
4. Requisitos do Usurio
Exemplos: o sistema no dever revelar aos operadores nenhuma informao pessoal sobre os clientes, alm de seus nomes e o nmero de referncia
(legislao de privacidade); em razo das restries
apresentam problemas como falta de clareza, confuso e fuso, ou seja, requisitos diferentes escritos como
um nico requisito.
5. Requisitos do Sistema
So descries mais detalhadas dos requisitos do usurio. So a base para que os engenheiros de software possam fazer o projeto do sistema. Servem como base para um contrato destinado implementao
do sistema.
47
Stakeholders (Influenciadores/Envolvidos)
So as partes interessadas no projeto, ou seja,
so pessoas e organizaes envolvidas no projeto ou que possuem interesses que podem ser
afetados pelo projeto, podendo exercer influncia sobre os resultados do projeto.
Baseline
Conjunto de artefatos de software que servem
A Engenharia de Requisitos rene as primeiras atividades a serem realizadas nos diversos modelos de
processo de software. Seu objetivo definir o que
deve ser feito e no a forma como ser implementado o sistema. Serve como ponte entre o projeto e a
construo do software e define as bases do contrato
entre o desenvolvedor e o cliente. Realiza a aquisio, o refinamento e a verificao das necessidades do sistema. A meta sistematizar o processo de
definio dos requisitos, obtendo uma especificao
correta e completa do sistema para elaborao do
DERS.
48
49
Tarefas da Engenharia de
Requisitos
DDO sistema pode ser implementado com a utilizao de tecnologia atual dentro das restries
de custo e prazo?
DDO sistema pode ser integrado com outros sistemas j em operao?
DDAps responder essas questes necessrio
questionar as fontes de informao (stakeholders). Para isso, so recomendadas algumas
perguntas, como:
DD Como a empresa se comportaria, se esse sistema no fosse implementado?
DDQuais so os problemas com os processos atuais e como um novo sistema ajudaria a diminuir
esses problemas?
DDQue contribuio direta o sistema trar para os
objetivos da empresa?
DDAs informaes podem ser transferidas para
outros sistemas e tambm podem ser recebidas a partir deles?
DDO sistema requer tecnologia que no tenha
sido utilizada anteriormente na empresa?
DDO que precisa e o que no precisa ser compatvel com a empresa?
DDQuem vai usar o sistema?
A Engenharia de Requisitos fornece um mecanismo adequado para entender o que o cliente deseja,
analisar as suas necessidades, negociar uma soluo
adequada ao seu problema, validar a especificao
e administrar os requisitos medida que eles so
transformados em um sistema em operao. Para
isso, o processo de ER realizado por meio de 7 etapas distintas, que sero explicadas no que se segue,
com base em Pressman (2006).
1. Concepo ou Estudo de Viabilidade do
Sistema
O estudo de viabilidade um estudo breve, direcionado, que se destina a responder a algumas perguntas:
DDO sistema contribui para os objetivos gerais da
empresa?
50
As etapas de Levantamento e Anlise de Requisitos so conhecidas em conjunto como Elicitao de Requisitos e envolvem:
de
conflitos:
Quando
mltiplos
3. Anlise de Requisitos
As informaes obtidas do cliente durante a concepo e o levantamento so expandidas e refinadas durante a anlise (ou elaborao) de requisitos.
Esta atividade da ER tem por objetivo desenvolver
um modelo tcnico refinado das funes, caractersticas e restries do software. guiada pela criao
e refinamento de cenrios do usurio que descrevem
como o usurio final (e outros atores) vo interagir
com o sistema.
do sistema.
51
52
26.4.1. Pressman, 2006). Em uma RTF com esse propsito, a equipe de desenvolvimento deve conduzir
o cliente pelos requisitos do sistema, explicando as
implicaes de cada requisito. A equipe de reviso
deve verificar cada requisito, em termo de sua consistncia e verificar os requisitos como um todo sob
o ponto de vista de sua completeza. A RTF uma
atividade que garante a qualidade do software.
7. Gesto de Requisitos
Gesto de Requisitos um conjunto de atividades
que ajuda a equipe de projeto a identificar, controlar
e rastrear requisitos e modificaes de requisitos a
qualquer momento no desenvolvimento do sistema.
Para auxiliar na gesto de requisitos tabelas de rastreamento so criadas com o objetivo de verificar as
relaes entre requisitos e o impacto da mudana
de requisitos. Os requisitos mudam e h uma srie
de razes para isso, como: os problemas podem ser
muito intricados, as especificaes podem ficar incompletas, o aumento do entendimento do sistema
ocorre ao longo do projeto, como h vrios usurios,
h vrias vises, quem paga pelo sistema geralmente diferente de quem o usa, a empresa e o ambiente se modificam e, na medida em que os usurios se
familiarizam com o sistema, novos requisitos surgem.
A gesto de requisitos precisa de apoio automatizado
como ferramentas CASE - Computer Aided Software
Engineering para:
DDArmazenamento de requisitos: os requisitos
devem ser mantidos em um depsito de dados
seguro, gerenciado, que seja acessvel por todos os envolvidos no processo de engenharia
de requisitos.
DDGerenciamento de mudanas: esse processo
pode ser simplificado se o apoio de ferramentas estiver disponvel.
DDGerenciamento de facilidade de rastreamento:
o apoio de ferramentas para a rastreabilidade
permite que sejam descobertos requisitos relacionados.
Com base na animao que voc acabou de assistir, caro aluno, as dicas que podemos lhe dar para
quando voc estiver tentando descobrir o que o seu
cliente quer do seu novo software so:
Em primeiro lugar evite perguntar ao cliente o
que ele quer que o novo sistema faa
Entenda, primeiro, como so atualmente os
processos do seu cliente
Pergunte ao cliente quais processos que ele
sabe que funcionam bem no sistema atual.
Faa o cliente explicar porque ele acha que funcionam bem. Faa o mesmo com os processos
que existem e funcionam mal.
Descubra quais so os processos atuais que
existem, mas que ningum usa e porque no
so usados.
Baseado nessas informaes, desenvolva uma
lista ou um prottipo do que voc acredita que
o cliente precisa. Quanto mais claramente esse
prottipo puder ser compreendido pelo cliente
melhor. Por exemplo, se for um cliente da rea
tcnica voc poder lhe mostrar os casos de
uso ou usar diagramas mais tcnicos. Se for
um cliente de negcio, voc vai precisar de
algo mais visual, ento faa desenhos ou crie
uma animao
Faa o cliente analisar o seu prottipo ou sua
lista, mesmo que seja difcil para ele. Procure
estar sempre cara-a-cara com seu cliente enquanto ele estiver fazendo a anlise.
53
Elicitao de Requisitos
De acordo com o PMBoK Project Management
Body of Knowledge, um guia que rene o conjunto
de Melhores Prticas em Gerenciamento de Projetos
produzido pelo PMI - Project Management Institute
(2008), o processo de elicitao de requisitos envolve:
Coleta
Processo de definir e documentar as funes e
funcionalidades do projeto e do produto necessrias para atender s necessidades e expectativas dos stakeholders. O sucesso do projeto
diretamente influenciado pela ateno na coleta e gerenciamento dos requisitos do projeto
e do produto. Os requisitos incluem as necessidades quantificadas e documentadas e as
expectativas do patrocinador, cliente e demais
stakeholders. Estes requisitos precisam ser obtidos, analisados e registrados com detalhes
suficientes para serem medidos uma vez que a
execuo do projeto se inicie. Coletar os requi-
54
55
Para que este processo ocorra com sucesso, os requisitos devem ser claros, completos, sem ambiguidade,
implementveis, consistentes e testveis como mostra a tabela 1. Os requisitos que no apresentem estas
qualidades so problemticos: eles devem ser revistos e renegociados com os clientes e usurios.
No ambguo
Correto
Completo
contm tudo o que o software deve fazer e atender em todas as situaes possveis.
Compreensvel
Verificvel
atendem ao conjunto de tcnicas que podem ser usadas para verificar que todo requisito est implementado pelo sistema.
Internamente Consistente
Externamente Consistente
Realizvel
Conciso
to pequeno quanto possvel, sem afetar qualquer outra qualidade que deva atender.
Rastrevel
Modificvel
sua estrutura e estilo so tais que qualquer mudana pode ser feita facilmente, completamente e consistentemente.
permite que se possa facilmente determinar qual requisito mais importante para os
clientes.
Anotado por Estabilida- permite que se possa facilmente determinar qual requisito mais suscetvel mudande Relativa
a.
Organizado
56
Questionrios
uma forma rpida de se obter dados de uma
grande quantidade de usurios que podem estar em
lugares geograficamente distintos. Os tipos de dados
que podem ser coletados atravs de questionrios
so:
DDDados sobre a utilizao do sistema atual
DD Problemas e dificuldades que os usurios enfrentam em seu trabalho
DDExpectativa dos usurios em relao ao novo
sistema
Brainstorming
uma tcnica bsica para gerao de ideias. Devem ser realizadas uma ou vrias reunies que per-
57
58
59
Prototipao
Caro aluno, as tcnicas apresentadas visam superar as dificuldades inerentes ao processo de extrao dos requisitos. Nenhuma tcnica suficiente
por si s. Voc, como desenvolvedor, deve escolher
um conjunto de tcnicas que melhor se adaptem ao
produto a ser desenvolvido. Mas podemos elencar alguns procedimentos gerais que podem fazer parte de
qualquer processo de extrao de requisitos e ajud-lo neste processo:
DD Voc deve perguntar e identificar as pessoas
apropriadas para responder quais so os requisitos
DDVoc deve observar o comportamento dos usurios de um produto existente e inferir suas necessidades a partir de seu comportamento
DDVoc deve discutir com os usurios suas necessidades e junto com eles formular um entendimento comum dos requisitos
DD importante voc negociar com os usurios,
a partir de um conjunto-padro de requisitos,
quais sero includos, excludos ou modificados
DDVoc deve estudar e identificar os problemas,
isso ajuda a identificar os requisitos que podem
melhorar o produto
-17592009000400014&script=sci_arttext
Manual em Portugus sobre Certificao PMI em Gerenciamento de Projetos PMBok:
http://www.pmi.org/~/media/PDF/Certifications/PT_
PMP_Handbook_Full_Portuguese.ashx
60
61
62
Consideraes Finais
Caro aluno, essa disciplina introduziu muitos aspectos essenciais para a prtica da Engenharia de Software. Vimos que o processo de desenvolvimento de software envolve atividades, recursos e produtos.
Vimos que um modelo de processo til para orientar o comportamento quando voc estiver trabalhando em grupo. Modelos de processo detalhados nos dizem como coordenar e colaborar com nossos colegas,
enquanto se projeta e se contri um sistema. Os modelos tambm mostram a cada membro da equipe quais
atividades ocorrem, quando e por quem elas so realizadas, de modo a tornar clara a diviso de tarefas.
Vimos que os requisitos podem ser modificados at mesmo enquanto analisamos o problema e desenvolvemos a soluo. E que a soluo deve estar bem documentada e ser flexvel, devendo-se documentar as
suposies e os algoritmos utilizados, de tal modo que seja fcil mud-los posteriormente.
Possivelmente, caro aluno, voc far grande parte do seu trabalho como membro de uma equipe de
desenvolvimento maior. Como vimos nessa disciplina, o desenvolvimento de software envolve anlise de
requisitos, projeto, implementao, teste, gerncia de configurao, garantia da qualidade, dentre outras
atividades. Voc e outras pessoas de sua equipe podem desempenhar vrios papis, e o sucesso do projeto
depende em larga escala da comunicao e coordenao entre os membros da equipe.
Vimos tambm que voc pode ajudar no sucesso de seu projeto, selecionando um processo de desenvolvimento apropriado ao tamanho da equipe, ao nvel de risco do projeto e ao domnio do aplicativo, bem
como utilizando ferramentas bem integradas que apiem o tipo de comunicao necessria ao seu projeto.
No andamento do nosso curso, vrios aspectos fundamentais estudados nesta disciplina sero abordados
em maiores detalhes, proporcionando a voc, caro aluno, um entendimento e um conhecimento maior dos
conceitos, mtodos, tcnicas e ferramentas da Engenharia de Software que auxiliam na obteno de um
produto de qualidade, respeitando os prazos, custos e escopo estabelecidos.
Prof. Marcelo Pintaud e Profa. Elisamara
63
64
Software:
Diferenas: no caso do hardware, h um alto ndice de falhas no incio do seu ciclo de vida originadas de
defeitos de fabricao e projeto; depois os defeitos so corrigidos dando estabilidade nas falhas; no final do
ciclo de vida do produto podem surgir problemas relacionados ao desgaste do uso. Diferentemente da curva
terica de falhas do hardware, o software no sofre processos de envelhecimento como o hardware, pois
o software no algo fsico. No incio do ciclo de vida do software, h problemas que sero ajustados no
decorrer do desenvolvimento e se estabilizaro gerando uma tendncia de achatamento da curva; durante o
processo de refinamento do produto ou mudanas aumenta-se a probabilidade de insero de novos erros,
gerando picos na curva de falhas; as sucessivas alteraes do software tendem a introduzir mais erros antes
da estabilizao dos erros de alteraes anteriores, ocasionando a tendncia crescente do ndice de falhas.
65
Captulo 2
1) Processos de software podem ser construdos de modelos pr-existentes objetivando se
adequar s necessidades de um determinado projeto
a) Verdadeiro
2) A essncia da prtica da engenharia de software pode ser resumida em compreender o
problema, planejar a soluo, executar o plano e examinar o resultado.
a) Verdadeiro
3) Qual dos itens listados abaixo no se constitui numa das camadas da engenharia de software?
b) Manufatura
4) Cite que tipos de manuteno um software pode sofrer.
DDManuteno Corretiva: modifica o software para corrigir defeitos
DDManuteno Adaptativa: modifica o software para
acomodar mudanas no seu ambiente externo
(processador, sistema operacional, etc)
DDManuteno de Aperfeioamento: aprimora o software alm dos requisitos funcionais originais (cliente/
usurio reconhece e solicita funcionalidades adicionais que traro benefcios, medida que o software
usado).
DDManuteno Preventiva: faz modificaes nos programas de modo que eles possam ser mais facilmente
corrigidos, adaptados e melhorados.
5) As atividades guarda-chuva do cobertura para as fases envolvidas na produo de
software. Cite algumas dessas atividades.
DDControle e Rastreamento do Projeto
DDGesto de Riscos
DDRevises Tcnicas Formais
DDGarantia de Qualidade
DDGesto de Configurao de Software
DDProduo e Preparao de Produtos do Trabalho (documentos)
DDGesto de Reusabilidade
DDMedio
6) H uma iluso por parte de alguns desenvolvedores que basta selecionar um modelo de
processo e aplic-lo para se obter software de qualidade, dentro do prazo e custos estabelecidos. Comente sobre esse mito.
A existncia ou a simples escolha de um processo de software no garante que o software ser entregue
no prazo, que ele atenda as necessidades do projeto e possua as caractersticas tcnicas que garantiro sua
qualidade no longo prazo. Os padres de processo precisam estar ligados de forma slida s prticas da
Engenharia de Software. Alm disso, o processo em si deve ser avaliado para garantir que ele satisfaa a um
conjunto de critrios essenciais para o desenvolvimento bem sucedido.
66
Captulo 3
1) Em relao ao modelo Em Cascata podemos afirmar que :
a) Uma abordagem razovel quando os requisitos esto bem estabelecidos
2) Quais so as 5 atividades gerais da Engenharia de Software, tambm caracterizadas no
modelo Em Cascata?
c) Especificao, planejamento, modelagem, construo, implantao (entrega)
3) Podemos dizer que o modelo incremental :
b) Uma boa abordagem quando um produto de trabalho ncleo requerido rapidamente
4) Podemos afirmar que modelos de processo evolucionrios:
d) Todas as alternativas anteriores esto corretas
5) O modelo de prototipagem :
c) Uma abordagem razovel quando o cliente no consegue definir os requisitos claramente
6) O modelo espiral de desenvolvimento de software:
c) Inclui avaliao de riscos a cada iterao
7) O modelo de desenvolvimento concorrente:
e) Somente a e b so verdadeiras
8) Podemos dizer que o modelo de desenvolvimento baseado em componentes:
c) Depende da tecnologia de objetos como suporte
9) O modelo de mtodos formais faz uso de mtodos matemticos para:
d) Todas as alternativas anteriores so corretas
10) Qual dos nomes abaixo no representa uma das fases do modelo de processo unificado?
b) Fase de validao
11) O que se entende por ciclo de vida?
Ciclo de vida de um software descreve as fases pelas quais o software passa desde a sua concepo at
a descontinuidade de seu uso.
12) Qual a diferena entre um modelo descritivo e um modelo prescritivo de processo?
Enquanto um modelo descritivo retrata como um processo executado, um modelo prescritivo retrata
como um processo deveria ser executado. Assim, um modelo prescritivo uma recomendao que pode ser
adaptada ou melhorada pela empresa/equipe de software que for adot-la.
13) O que caracteriza os modelos evolucionrios de processo?
67
68
20) Nos modelos de processos geis o nico produto de trabalho gerado o programa de
trabalho.
b) Falso
Captulo 4 Parte 1
a) Aponte as ambiguidades e omisses.
DDO texto est mal formulado.
DD dito duas vezes que o usurio deve apresentar um carto de crdito e um nmero de identificao.
DDTambm dito primeiro que "o carto deve ser apresentado" e posteriormente que "o usurio insira
um carto de crdito". "Apresentar", "inserir", o que se quer dizer com isso?
DDMesma coisa para o nmero de identificao, sendo que no fica claro o que quer se dizer com as palavras "apresentar" e "fornecer".
DD Inicialmente dito que o usurio escolhe seu destino, mas no diz como isso feito. Posteriormente,
dito que o usurio pressiona o boto iniciar e uma tela de menu apresentada com possveis destinos.
DDUm usurio pode comprar vrias passagens para o mesmo destino ao mesmo tempo ou deve comprar
uma de cada vez?
DDUm usurio pode cancelar uma compra?
DDO sistema acusar caso um carto invlido seja inserido?
b) Descreva os requisitos funcionais.
DDO sistema emitir passagens de nibus
DDO usurio poder escolher seu destino atravs de um menu
DDO sistema incluir o preo da passagem no carto de crdito do usurio
c) Descreva os requisitos no-funcionais (e de interface).
DDDever haver um boto para iniciar
DDUma mensagem deve ser apresentada solicitando que o usurio selecione o destino
DDUma mensagem ser apresentada solicitando que o usurio insira o carto de crdito
d) Identifique os stakeholders.
DDUsurios
DDDesenvolvedores
DDoutros stakeholders podem ser supostos, mas no esto identificados no texto
Captulo 4 Parte 2
1) Stakeholder qualquer pessoa que v comprar o software em desenvolvimento.
a) Falso
69
2) relativamente comum para diferentes usurios propor requisitos conflitantes, cada qual
argumentando que sua verso a mais adequada ou melhor.
a) Verdadeiro
3) Na validao de requisitos, o modelo de requisitos revisto para assegurar sua viabilidade
tcnica.
b) Falso
4) Faa a associao e assinale a resposta correta sobre a tcnica PIECES:
a) i-C ii-E iii-A iv-Bv-F vi-D
5) Qual o principal objetivo da Engenharia de Requisitos?
O principal objetivo da ER a obteno de uma especificao correta e completa dos requisitos de um
sistema de software.
6) Qual a definio de requisitos segundo o IEEE?
Uma condio ou capacidade que um usurio necessita para resolver um problema ou alcanar um objetivo. Uma condio ou capacidade que deve ser satisfeita por um sistema para satisfazer um contrato ou um
padro.
7) Defina Requisitos Funcionais e Requisitos No-Funcionais.
Requisitos Funcionais: So requisitos que descrevem a funcionalidade (funes que o sistema deve realizar) ou os servios que se espera que o sistema faa. Exemplos de requisitos funcionais: cadastro de cliente;
emisso de nota fiscal; consulta ao estoque; gerao de pedido.
Requisitos No-Funcionais: So requisitos que no dizem respeito diretamente funcionalidade do sistema, mas expressam propriedades do sistema e/ou restries sobre os servios ou funes por ele providas.
8) O que se entende por stakeholder?
So as partes interessadas no projeto, ou seja, so pessoas e organizaes envolvidas no projeto ou que
possuem interesses que podem ser afetados pelo projeto, podendo exercer influncia sobre os resultados do
projeto.
9) Quais os benefcios que se espera de um documento de especificao de requisitos?
DDQue estabelea a base de acordo entre os clientes e a empresa fornecedora sobre o que o software
ir fazer;
DDQue reduza o esforo de desenvolvimento;
DDQue fornea uma base para estimativas de custo e prazos;
DDQue fornea uma base para validao e verificao do produto;
DDQue facilite a manuteno do produto de software final.
10) Um dos principais pontos a se considerar em qualquer projeto o chamado estudo de
viabilidade. Para projetos de software no diferente. Relacione as principais questes que se
deve considerar no estudo de viabilidade de um projeto de software.
O estudo de viabilidade um estudo breve, direcionado, que se destina a responder a algumas perguntas:
DDO sistema contribui para os objetivos gerais da empresa?
70
DDO sistema pode ser implementado com a utilizao de tecnologia atual dentro das restries de custo
e prazo?
DDO sistema pode ser integrado com outros sistemas j em operao?
Aps responder essas questes necessrio questionar as fontes de informao (stakeholders). Para isso,
so recomendadas algumas perguntas, como:
DDComo a empresa se comportaria, se esse sistema no fosse implementado?
DDQuais so os problemas com os processos atuais e como um novo sistema ajudaria a diminuir esses
problemas?
DDQue contribuio direta o sistema trar para os objetivos da empresa?
DDAs informaes podem ser transferidas para outros sistemas e tambm podem ser recebidas a partir
deles?
DD O sistema requer tecnologia que no tenha sido utilizada anteriormente na empresa?
DDO que precisa e o que no precisa ser compatvel com a empresa?
DDQuem vai usar o sistema?
11) Cite algumas tcnicas de levantamento de requisitos estudadas na disciplina.
Entrevistas, Prototipao, JAD, Brainstorming, PIECES.
71
Glossrio de Siglas
ASD - Adaptive Software Development (Desenvolvimento de Software Adaptativo)
BPM Business Process Modeling (Modelagem de Processos de Negcio)
CASE - Computer-Aided Software Engineering (Engenharia de Software Auxiliada por Computador)
CBD - Component-based Development (Desenvolvimento Baseado em Componentes)
CBSE - Component-based Software Engineering (Engenharia de Software Baseada em Componentes)
COTS commercial-off-the-shelf (software comercial de prateleira)
CRUISE - Component Reuse in Software Engineering (Reuso de Componentes em Engenharia de Software)
DERS - Documento de Especificao de Requisitos de Software
DSDM - Dynamic Systems Development Method (Mtodo de Desenvolvimento de Sistemas Dinmico)
FDD- Feature Driven Development (Desenvolvimento Dirigido por Caracterstica)
IDEF0 - Integration Definition for Function Modeling (Definio Integrada para Modelagem de Funo)
IEEE - Institute of Electrical and Electronics Engineers (Instituto de Engenheiros Eletricistas e Eletrnicos)
JAD - Joint Application Development (ou Design)(Desenvolvimento de Aplicaes em Equipe)
PMI - Project Management Institute (Instituto de Gerenciamento de Projetos)
PMBoK Project Management Body of Knowledge. (Conjunto de Melhores Prticas em Gerenciamento de Projetos)
UML Unified Modeling Language (Linguagem de Modelagem Unificada)
RAD Rapid Application Development (Desenvolvimento Rpido de Aplicao).
RiSE - Reuse in Software Engineering (Reuso em Engenharia de Software)
ROM Read Only Memory (Memria Somente de Leitura)
RTF- Reviso Tcnica Formal
XP eXtreme Programming (Programao Extrema)
72
Referncias Bibliogrficas
BLAHA, Michael. Modelagem e projetos baseados em objetos com UML. Rio de Janeiro: Elsevier, 2006.
PETERS, J. F.; PEDRYC, W. Engenharia de software: teoria e prtica. Rio de Janeiro: Campus,
2001.
73
74