Beruflich Dokumente
Kultur Dokumente
INTRODUO
ENGENHARIA DE
SOFTWARE
Pedro de Alcntara dos Santos Neto
Ministrio da Educao - MEC
Universidade Aberta do Brasil - UAB
Universidade Federal do Piau - UFPI
Universidade Aberta do Piau - UAPI
Centro de Educao Aberta e a Distncia - CEAD
Introduo Engenharia
de Software
COORDENADORES DE CURSOS
ADMINISTRAO Francisco Pereira da Silva Filho
CINCIAS BIOLGICAS Maria da Conceio Prado de Oliveira
FILOSOFIA Zoraida Maria Lopes Feitosa
FSICA Miguel Arcanjo Costa
MATEMTICA Joo Bencio de Melo Neto
PEDAGOGIA Vera Lcia Costa Oliveira
QUMICA Rosa Lima Gomes do Nascimento Pereira da Silva
SISTEMAS DE INFORMAO Luiz Cludio Demes da Mata Sousa
ISBN
CDD 004.21
2011. Universidade Federal do Piau - UFPI. Todos os direitos reservados.
A responsabilidade pelo contedo e imagens desta obra do autor. O contedo desta obra foi licenciado temporria e
gratuitamente para utilizao no mbito do Sistema Universidade Aberta do Brasil, atravs da UFPI. O leitor se compromete
a utilizar o contedo desta obra para aprendizado pessoal, sendo que a reproduo e distribuio ficaro limitadas ao mbito
interno dos cursos. A citao desta obra em trabalhos acadmicos e/ou profissionais poder ser feita com indicao da fonte.
A cpia desta obra sem autorizao expressa ou com intuito de lucro constitui crime contra a propriedade intelectual, com
sanses previstas no Cdigo Penal.
proibida a venda ou distribuio deste material.
Os Sistemas de Informao (SI) so produtos de softwares cada vez
mais importantes no dia a dia das pessoas. Tais sistemas so usualmente com-
postos por muitos elementos que operam juntos para recuperar, processar, ar-
mazenar e distribuir informaes, que normalmente so utilizadas para auxiliar a
anlise e tomada de deciso em uma organizao. Por conta disso, necessrio
o uso de mtodos, tcnicas e ferramentas para sua construo, para que se
possa obter altos nveis de qualidade a baixos custos.
Neste livro apresentamos uma introduo Engenharia de Software,
que a rea da computao que aborda a sua construo, incluindo os
Sistemas de Informao, como um produto de engenharia.
Na Unidade I apresentamos as origens da Engenharia de Software,
bem como os conceitos bsicos existentes, explorando os conceitos de
processo e dos modelos de ciclo de vida, os quais so elementos bsicos
para entender a rea.
Na Unidade II faremos uma breve apresentao dos principais fluxos
da Engenharia de Software que so chaves para o desenvolvimento de um
projeto e sero abordados com mais profundidade em outras disciplinas do
curso.
Por fim, na Unidade III apresentamos um Processo de Software
baseado nos princpios geis, exemplificando seu uso para controle de um
projeto envolvendo tarefas simples.
UNIDADE 1
09 CONCEITOS BSICOS
Conceitos Bsicos................................................................................11
Introduo...........................................................................................11
Ser que a crise acabou.......................................................................13
O que Engenharia de Software.........................................................15
Problemas no desenvolvimento de software......................................18
Software: Mitos e Realidade................................................................21
Mitos do Gerenciamento.....................................................................21
Mitos do Cliente...................................................................................22
Mitos do Profissional...........................................................................23
Processos de Software.........................................................................24
Modelos de ciclo de vida............................................................ .........26
Codifica-Remenda..................................................................... ..........27
Cascata....................................................................................... .........28
Espiral.......................................................................................... ........29
Incremental................................................................................. ........30
Entrega Evolutiva......................................................................... ........33
Outros modelos de ciclo de vida................................................. ........34
UNIDADE 2
37 AS PRINCIPAIS DISCIPLINAS DA ENGENHARIA DE SOFTWARE
Requisitos...................................................................................... ......39
O Processo Prxis.......................................................................... ......39
O Fluxo de Requisitos................................................................... .......40
Fluxo de anlise...................................................................................45
Fluxo de desenho............................................................. ...................48
Implementao...................................................................................53
Gesto de Projetos..................................................................... .........61
UNIDADE 3
67 EXEMPLO DE UM PROCESSO DE SOFTWARE
Os papeis............................................................................................. 68
As cerimnias...................................................................................... 69
A reunio inicial................................................................................... 70
A reunio de planejamento................................................................. 73
A reunio diria................................................................................... 79
Acompanhamento do projeto............................................................. 79
Apresentao do Sprint....................................................................... 80
Retrospectiva....................................................................................... 80
Aplicando o Scrum............................................................................... 82
O exemplo........................................................................................... 82
Discusso sobre o uso do Scrum......................................................... 86
UNIDADE 01
Conceitos Bsicos
Resumindo
Nesta unidade apresentamos os conceitos bsicos da Engenharia de Software, definindo
os pontos bsicos para o seu entendimento. Apresentamos o evento que deu origem
rea, conhecido como a Crise do software, discutindo se ela realmente foi superada.
Fazemos ainda uma definio precisa sobre o conceito de processo, que fundamental
para a Engenharia de software.
Por fim, apresentamos os mitos do software que, diferentemente dos mitos tradicionais,
trazem desinformao e geram problemas, em vez de histrias interessantes e cativantes.
CONCEITOS BSICOS 9
10 unidade 01
CONCEITOS BSICOS
INTRODUO
CONCEITOS BSICOS 11
dado anualmente pela Association for Computing Machinery (ACM), para
uma pessoa selecionada pelas contribuies de natureza tcnica feitas para
a comunidade da computao. Seu discurso no recebimento do prmio,
intitulado O Pobre Programador (The Humble Programmer), tornou-se um
clssico da Engenharia de Software. Um trecho desse discurso, traduzido
para o portugus e que resume a crise, exibido a seguir:
12 unidade 01
A Figura 2 exibe um quadro da situao relacionada ao
desenvolvimento de software na poca da crise. Nesse perodo, apenas
4% dos projetos eram finalizados e o produto gerado era utilizado tal qual
foi entregue; 29% dos produtos no eram entregues, embora tenham sido
pagos; 45% eram entregues, porm, o produto resultante era impossvel
de ser utilizado, normalmente, por conter uma quantidade de incorrees
que impediam sua utilizao e 22% eram modificados e em muitos casos
extremamente modificados para que pudessem ser utilizados.
Considerando todos os projetos que foram entregues, alm do prazo e Ainda hoje diversos
com custo maior, na mdia, apenas 61% das funcionalidades originais foram projetos de
desenvolvimento de
includas. Mesmo os projetos cuja entrega feita respeitando os limites de
software fracassam.
prazos e custos possuem qualidade suspeita, uma vez que, provavelmente,
foram feitos com muita presso sobre os desenvolvedores, o que pode
quadruplicar o nmero de erros de software, segundo a mesma pesquisa.
CONCEITOS BSICOS 13
Figura 3: Dificuldades durante o desenvolvimento de software.
Ainda hoje diversos
A Figura 3 apresenta uma ilustrao muito conhecida na rea de
projetos de
desenvolvimento de Engenharia de Software. Ela apresenta um grande problema relacionado
software falta de entendimento entre os grupos que fazem parte de um projeto. O
fracassam. quadro inicial da figura apresenta uma ilustrao tentando expressar como
o cliente explicou o que necessitava para a equipe de desenvolvimento. O
quadro seguinte exibe como o lder do projeto entendeu. Podemos notar que
existe uma diferena significativa entre as figuras. Isso no deveria acontecer
ou deveria haver o mnimo possvel de diferenas.
14 unidade 01
auxiliam muito o desenvolvimento. Uma vez aplicados por pessoas com os
conhecimentos adequados, podemos ter certeza do sucesso em um projeto.
Por conta disso, existem diversos projetos grandes com sucesso absoluto.
Para isso, necessrio aplicar corretamente a Engenharia de Software! Ou
seja, respondendo questo inicialmente formulada nesta seo: a crise
acabou, mas apenas para aqueles que utilizam a Engenharia de Software
como base para a construo de produtos de software.
Um grande problema
a ser superado a
falha na comunicao
O que Engenharia de Software?
entre as equipes.
J comentamos sobre as origens da Engenharia de Software, mas Assim como na
at agora no fizemos uma definio precisa do que seja exatamente isso. construo civil,
Nesta seo faremos isso. Mas antes da definio, vamos fazer uma analogia muitas empresas
estouram custos
muito interessante: voc sabe como funciona o processo de fabricao de um
e prazos, mesmo
carro? tendo mtodos
e tcnicas bem
estabelecidos. No
desenvolvimento de
software a situao
a mesma: aqueles que
utilizam os princpios
corretamente tm
grandes chances de
sucesso.
CONCEITOS BSICOS 15
Com a identificao dos requisitos possvel iniciar a montagem de
um prottipo, avaliando diversos pontos que necessitam de esclarecimento
antes da construo efetiva do carro. Essa prototipao poder ser feita via
ferramentas de simulao, como as famosas ferramentas CAD existentes, ou
a partir da criao de verses em miniatura do produto (Figura 4, Projeto e
Simulaes).
16 unidade 01
processo de fabricao de um carro tem tudo a ver com a Engenharia de
Software. De modo geral, podemos dizer que Engenharia de Software poderia
ser resumida utilizao de princpios de engenharia para o desenvolvimento
de software, ou seja, levantar os requisitos associados, construir modelos
para representar a soluo a ser desenvolvida, implementar as diversas
unidades que iro compor o produto, verificando se tais unidades atendem
aos requisitos identificados, realizar a integrao entre as unidades, tambm
verificando seu funcionamento, at que tenhamos o produto por completo, que
deve passar por uma srie de verificaes (testes funcionais, desempenho e
estresse, usabilidade, etc.) para que possamos concluir o desenvolvimento.
CONCEITOS BSICOS 17
procedimentos de contabilidade tenham sido corretamente efetuados.
Processos Pessoas
Tecnologia
18 unidade 01
Hardware
Hardware Vias
Vias de
de comunicao
comunicao
Bases
Bases de
de dados
dados Software
Software
CONCEITOS BSICOS 19
tero capacidade) de detectar e corrigir os eventuais erros de execuo.
20 unidade 01
o que deveriam fazer porque os problemas tm que ser minuciosamente
definidos para que possam ser resolvidos. Se no entendermos bem sobre o
domnio do problema, certamente no desenvolveremos uma boa soluo.
fundamental levantarmos os requisitos de um software antes de procedermos
com sua construo. O custo para o levantamento desses requisitos um fator
a ser considerado, mas no fazer tal levantamento provavelmente seja bem
mais caro! Alm disso, importante que os usurios do produto participem
desse levantamento, caso contrrio, os dados obtidos no levantamento no
devero expressar aquilo que realmente importante para o processo de
negcio.
Mitos de gerenciamento
CONCEITOS BSICOS 21
Mito 2. A equipe tem ferramentas de desenvolvimento de software de ltima
gerao, uma vez que eles dispem de computadores modernos.
Mitos do cliente
22 unidade 01
adicional em relao ao custo de desenvolvimento. O fator de multiplicao
nos custos de desenvolvimento do software devido a alteraes nos requisitos
cresce em funo do estgio de evoluo do projeto, como mostra a Figura 7.
CUSTO 60~100X
1.5~6X
1X
Mitos do profissional
CONCEITOS BSICOS 23
Exerccios de fixao
Processos de Software
24 unidade 01
2. O desenvolvimento, a partir da identificao dos requisitos e sua
transformao em itens a serem entregues ao cliente;
CONCEITOS BSICOS 25
o caso dos Processos geis, o qual vero mais adiante ou completamente
detalhado, como o caso dos processos baseados no Processo Unificado.
26 unidade 01
3. Desenho (ou projeto): definio de uma estrutura implementvel para um
produto que atenda aos requisitos especificados.
Codifica-remenda
CONCEITOS BSICOS 27
A grande utilizao desse modelo se d em virtude de boa parte dos
profissionais responsveis pelo desenvolvimento de software no terem
qualquer conhecimento sobre a Engenharia de Software. possvel que o
uso desse modelo de ciclo de vida gere resultados aceitveis para produtos
pequenos e com equipes formadas por poucas pessoas, normalmente por um
nico desenvolvedor, mas certamente ele s gerar problemas em qualquer
projeto envolvendo produtos que requeiram equipes maiores.
28 unidade 01
preterido por outros modelos. Dentre essas falhas, destacam-se as relatadas
por Pressman (2002):
3. O cliente precisa ter pacincia, uma vez que a primeira verso executvel
do produto somente estar disponvel no fim do projeto. Erros grosseiros
podem ser desastrosos e causar perda de praticamente todo o trabalho. Esse
, talvez, o maior problema: a baixa visibilidade por parte do cliente.
Espiral
Ativao Anlise
Operao Desenvolvimento
CONCEITOS BSICOS 29
pequena parte do software. Durante essa volta na espiral, deve ser realizado o
levantamento de requisitos para a pequena parte do software que desejamos
abordar: a modelagem desses requisitos (anlise), o projeto das partes que
sero desenvolvidas (desenho), a codificao dessas partes (implementao)
e sua verificao (teste). Quando isso acontece temos o incio de um novo
ciclo e tudo se repete, at que tenhamos todo o produto desenvolvido.
Incremental
30 unidade 01
Embora os processos
geis prescrevam
pouca burocracia, eles
prescrevem alguma
burocracia. No segui-
las pode significar
anarquia total no
desenvolvimento.
Existem muitas
Figura 11: Modelo de ciclo de vida incremental (prototipagem evolutiva) organizaes que
dizem seguir os
No modelo incremental, um projeto dividido em vrias interaes, preceitos geis,
apenas porque no
os quais que so divises do produto que sero consideradas durante a
seguem nada, o que
construo. Escolhe-se uma dessas interaes para iniciar o desenvolvimento, um completo absurdo
comeando pelo planejamento da mesma, levantamento de requisitos, e podem manchar as
anlise, desenho, implementao, testes e avaliao, geralmente realizada metodologias geis.
com a participao do cliente, conforme apresentado na Figura 11. Essa
verso do software normalmente liberada para uso e, caso o produto no
tenha sido concludo, uma nova interao planejada para prosseguir com
o desenvolvimento.
CONCEITOS BSICOS 31
ao software funcionando do que qualquer outro artefato gerado durante o
desenvolvimento.
32 unidade 01
O Manifesto gil no rejeita os processos, as ferramentas,
a documentao, a negociao de contratos ou o planejamento, mas
simplesmente mostra que eles tm importncia secundria quando
comparados com os indivduos e interaes com o software estar executvel,
com a colaborao do cliente e as respostas rpidas a mudanas e alteraes.
Esses conceitos aproximam-se melhor forma com que pequenas companhias
de Tecnologia da Informao trabalham e respondem a mudanas.
Entrega evolutiva
CONCEITOS BSICOS 33
realimentao quanto s decises tomadas, de forma bem similar ao que
acontece na Prototipagem Evolutiva. Isso facilita o acompanhamento dos
projetos, tanto por parte dos gerentes, quanto por parte dos clientes, que
podem acompanhar o que est sendo realizado.
34 unidade 01
RAD sejam modelos de ciclo de vida. No nosso ponto de vista, isso apenas
a definio de uso de certas tecnologias e que no geram ciclos de vida,
diferenciados do que j foi exposto neste captulo.
Exerccios de fixao
11. Os dois modelos de ciclo de vida recomendados para uso e mais utilizados
atualmente so o modelo incremental e o modelo de entrega evolutiva.
Quando um mais apropriado que outro?
CONCEITOS BSICOS 35
36 unidade 01
UNIDADE 02
As Principais Disciplinas da
Engenharia de Software
Resumindo
Nesta unidade apresentamos os principais fluxos (ou subprocessos) que guiam a execuo de
projetos de desenvolvimento de software baseados em princpios de Engenharia. Este captulo
totalmente baseado no livro do prof. Wilson de Pdua Filho (2003) e seu Processo Prxis, uma vez
que o mesmo possui exemplos ilustrativos de todas as partes que compem o desenvolvimento
de software, aliados a uma definio precisa das atividades, mtodos e tcnicas relacionados a
cada fluxo.
Requisitos
Processo Prxis
Fluxo de requisitos
40 unidade 02
resultado principal do fluxo de requisitos um documento de Especificao de
Requisitos de Software (que abreviaremos ERSw). Esse documento possui uma
caracterizao do problema do cliente e que deve ser utilizado para criao de
um produto.
42 unidade 02
mais detalhados, sendo provavelmente mais adequado que participem os
Um Caso de Uso
usurios chaves e no necessariamente pessoal gerencial do cliente. Ela
uma fatia de
ser revista nesta fase, normalmente com a participao de um nmero funcionalidade
maior de partes interessadas. do sistema, sem
superposio
NR CASO DE USO DESCRIO ou lacunas, que
Cadastro dos hospitais com leitos controlados representa algo de
1 Gesto de Hospitais
pelo SRLEP.
valor para os usurios
Cadastro dos leitos hospitalares controlados finais.
2 Gesto de Leitos
pelo SRLEP.
Autorizao de envio para Registro da autorizao da solicitao para
3
lista de espera constar na lista de espera por leitos.
Controle das internaes em leitos, com pos- Um Ator
sibilidade registro de alta, e consequente libera-
4 Controle de Internaes o do leito, alm de transferncias para outros representao dos
leitos. usurios e outros
sistemas que
5 Consulta Escala Visualizao de quadro de escala hospitalar.
interagem com o
Tabela 2: Exemplo de requisitos para um produto de software
produto.
44 unidade 02
Exerccios de fixao
aconselhvel a
utilizao de um
1. Qual o objetivo do fluxo de requisitos? formato independente
de tecnologia para
2. Por que o levantamento de requisitos para produtos novos geralmente mais descrio das telas
difcil que para produtos j existentes? de um sistema. Isso
evita uma reduo no
3. O que deve conter uma especificao de requisitos? espao das solues.
Utilizar um componente
4. Quais as atividades de requisitos?
do tipo Select ou Radio
5. Em qual atividade feita uma descrio dos requisitos de forma sucinta? Button pode bloquear a
viso de desenvolvedor
6. Como so representados os grupos de usurios do produto? para solues mais
interessantes!
7. Que notao utilizada para descrio dos requisitos funcionais?
Um Diagrama de
8. Por que aconselhado fazer um esboo das telas de forma independente de Casos de Uso exibe os
tecnologia? relacionamentos entre
atores e casos de uso,
deixando claro que
grupos utilizam quais
Fluxo de anlise
funes.
O fluxo da anlise tem como objetivos: Na disciplina
1. Modelar de forma precisa os conceitos relevantes do domnio do problema, Requisitos de Software
ser detalhado o
identificados a partir do levantamento de requisitos;
fluxo de requisitos e
2. Verificar a qualidade dos requisitos identificados; anlise. Iremos realizar
diversas prticas
3. Detalhar esses requisitos o suficiente para que atinjam o nvel de detalhe relacionadas ao tema.
adequado aos desenvolvedores.
46 unidade 02
das classes, na qual so analisados os fluxos dos casos de uso e outros
documentos relevantes em relao ao produto desejado. Os conceitos candidatos
a classes so localizados e filtrados de acordo com vrios critrios. Prossegue
com a Organizao das classes que organiza as classes em pacotes lgicos
(agrupamentos de classes correlatas) e lhes atribui os esteretipos de entidade,
fronteira e controle, dependendo do papel que desempenham no modelo. A
Identificao dos relacionamentos determina os relacionamentos de vrios
tipos que podem existir entre os objetos das classes identificadas.
Exerccios de fixao
Fluxo de desenho
48 unidade 02
Alguns processos de software prescrevem que a Anlise e o Desenho devam ser
um nico fluxo, com o intuito de modelar a soluo para o problema. Conforme
detalhado aqui, o Processo Prxis separa bem esses dois conceitos. Nesse
caso, ento, o desenho de um produto de software deve considerar os
seguintes aspectos:
50 unidade 02
prazo e custos estimados. Uma deciso fundamental a escolha do ambiente
definitivo de implementao, se isso j no fizer parte das restries de desenho
constantes da Especificao dos Requisitos do Software. Faz parte dessa
atividade, tambm, a definio estratgica e estrutural da documentao para
usurios.
52 unidade 02
que sejam comuns s realizaes de diferentes casos de uso.
Exerccios de fixao
Implementao
54 unidade 02
A Figura 20 exibe as atividades do Fluxo de Implementao. Ele inicia
com o Desenho detalhado que preenche os detalhes restantes do Modelo
de Desenho em nvel necessrio para guiar a codificao. Nessa reviso so
conferidos os detalhes de interfaces, lgica e mquinas de estado das operaes.
O uso de linguagens
orientadas a
objetos virou um
padro mundial
de programao
atualmente.
Linguagens como C e
Java so disparadas
como as linguagens
mais utilizadas para o
desenvolvimento de
novos sistemas.
Um teste de unidade nada mais que uma classe que invoca mtodos
de outra classe e verifica se essa ativao, com certos parmetros, gera a
resposta correta, previamente conhecida. Um exemplo de um teste de unidade
exibido na Figura 22. Essa classe um teste para a classe tringulo, que possui
um mtodo, denominado classifica que retorna o tipo do tringulo. Podemos
facilmente notar que em cada teste existe a criao de um objeto tringulo, com
certos valores para seus vrtices, seguido da chamada ao mtodo que retorna o
tipo do tringulo e a posterior comparao desse resultado com o valor esperado.
56 unidade 02
Figura 22: Um exemplo de teste de unidade.
Exerccios de fixao
4. O que so as IDEs?
58 unidade 02
REQUISITOS ESPECIAIS A TELA PRINCIPAL DEVE ESTAR NO ESTADO SEM USUARIO.
O fluxo de teste tem dois grandes grupos de atividades para cada bateria
a ser desenvolvida: preparao e realizao. O plano da bateria elaborado
durante a preparao, juntamente com o desenho das especificaes de cada
teste. Durante a realizao, os testes so executados, os defeitos encontrados
so corrigidos e os relatrios de teste so redigidos. A preparao e realizao
de cada bateria correspondem a uma execuo completa do fluxo de Testes. As
atividades do Fluxo de Teste so exibidas na Figura 23.
60 unidade 02
pelas baterias de testes de aceitao. Esse tipo de teste tem por objetivo validar
o produto, ou seja, verificar se ele atende aos requisitos identificados. Na medida Na Web-bibliografia
apresentamos o
em que a cultura da organizao absorva esses testes, passa a preparar e
stio do Brazilian
realizar tambm os testes de integrao. Software Testing
Qualification Board,
que responsvel
Exerccios de fixao pela Certificao
Brasileira de Teste
de Software. Essa
1. O que o teste de software? certificao atribuda
ao profissional que
2. O que um procedimento de teste? O que um caso de teste? Qual a ligao aprovado na prova e
que existe entre esses dois conceitos? garante, assim, que ele
possui conhecimento
3. As atividades de teste so divididas em dois grandes grupos. Quais so eles? na rea. De acordo
com diversas
4. Quais so os objetivos do teste de aceitao?
pesquisas de mercado
feitas recentemente,
os profissionais de
Gesto de Projetos teste esto entre os
mais procurados e
Este tpico trata dos principais mtodos de gesto de projetos de desenvolvimento
mais bem remunerados
de software. Os seguintes tpicos so brevemente apresentados aqui: profissionais de
informtica do mundo.
1. Os procedimentos de gesto dos requisitos, que regulam o cadastramento, a
manuteno e a alterao dos requisitos de um projeto de software;
62 unidade 02
Exerccios de fixao
Resumindo
Nesta unidade apresentaremos um processo de software baseado nos princpios da agilidade, alm
de apresentarmos seu uso para uma tarefa simples. No capitulo 9 apresentaremos as prescries
do processo SCRUM, que vem se destacando no cenrio industrial de desenvolvimento de
software, sendo cada dia mais utilizado por diversas organizaes. Apresentaremos os principais
papis associados ao seu uso, alm das cerimnias previstas durante sua utilizao, detalhando
os artefatos que devem ser gerados. No captulo 10 apresentaremos um exemplo da aplicao do
SCRUM para guiar a execuo de um projeto simples, ilustrando como utilizar o processo para
qualquer atividade em que se desejar ter mais controle sobre sua execuo.
Google, Philips, Siemens, Nokia e vrias outras usam o Scrum como mtodo
de desenvolvimento na confeco de softwares comerciais, desenvolvimento
interno, projetos de preo fixo, aplicaes financeiras, videogames, websites e O Scrum utiliza o
modelo de ciclo de
muitas outras aplicaes.
vida incremental,
Ken Schwaber define o Scrum como um guia geral de como fazer conforme discutido
desenvolvimento de produtos, com a finalidade de fazer a equipe pensar anteriormente.
diferente.
Segundo ele, o desenvolvimento de produtos uma tarefa complexa
e no deve depender de um conjunto de regras, pois elas no so suficientes
para todas as circunstncias. A equipe deve descentralizar as decises porque,
provavelmente, no haver uma nica resposta para cada tipo de questionamento.
Scrum um mtodo interativo e incremental baseado no modelo de
ciclo de vida interativo, em que o foco principal est na entrega do produto, no
menor tempo possvel. Isso permite uma rpida e contnua inspeo do software
Papis
O Scrum possui trs papis associados sua execuo: o Scrum
Master, o Product Owner e a Equipe de Desenvolvimento.
O Product Owner o membro com maior conhecimento das
funcionalidades do produto, decidindo as datas de lanamento e contedo. Ele
prioriza as funcionalidades de acordo com o valor de mercado, mas para isso
deve entender o produto a ponto de priorizar sem gerar problemas. Da mesma
forma, ele tem a tarefa contnua de ajustar as funcionalidades e prioridades,
revendo descries e conversando com os membros da equipe sempre que
uma dvida surgir. fundamental para o sucesso de um projeto a presena de
um Product Owner com domnio do problema. O ideal seria que a pessoa com
tal responsabilidade fosse um representante dos clientes do produto, embora
68 unidade 03
em casos excepcionais um desenvolvedor possa assumir esse papel, devendo
assim manter contato permanente com os clientes reais.
O Scrum Master representa a gerncia para o projeto, ao mesmo tempo
em que responsvel pela aplicao dos valores e prticas do Scrum. Ele O Scrum Master o
papel chave no Scrum.
deve manter uma vigilncia contnua sobre o uso correto das prescries do
Ele deve garantir o uso
Scrum, garantindo assim a disciplina de todos os membros da equipe. Embora do processo e eliminar
os processos geis tenham um mnimo de burocracia, ainda existe burocracia interferncias externas.
a ser seguida. No segui-la pode levar ao caos e a mais completa anarquia no
desenvolvimento.
Embora o Scrum Master seja uma espcie de gerente do projeto,
removendo todo e qualquer obstculo que atrapalhe o trabalho da equipe
e devendo ter bom relacionamento com os nveis mais altos da organizao,
ele tambm deve ter conhecimento tcnico suficiente para entender todo o
desenvolvimento e ajudar sempre que necessrio.
A Equipe no Scrum normalmente composta de 5 a 9 membros, embora Embora o Scrum
tenha sido criado para
o Scrum possa ser aplicado com mais colaboradores ou apenas um colaborador.
equipes pequenas,
A diferena que aplicar o Scrum com um membro apenas torna sem sentido existem relatos de
algumas das prticas previstas no processo. No entanto, ainda assim o seu uso projetos com grandes
garante um controle nas atividades sendo executadas e um conhecimento na equipes utilizando essa
produtividade, fato esse que s tem a acrescentar a qualquer tipo de trabalho. metodologia. Existe
o conceito de Scrum
Os membros da equipe devem ser multifuncionais, ou seja, eles devem ser
aplicado justamente
capazes de executar diversos tipos de tarefas, desde a modelagem at o teste nesse caso.
das funcionalidades.
Em alguns casos possvel associar colaboradores a tarefas especficas,
mas isso no deve ser utilizado de modo contnuo, pois pode gerar o que
chamamos de ilhas de conhecimento, onde apenas uma pessoa entende sobre
determinado aspecto. Essa caracterstica pssima para um projeto e deve ser
evitada sempre que possvel, sendo uma das premissas bsicas da agilidade: o
cdigo coletivo! A equipe deve ser auto-organizada, ou seja, cada um escolhe
o que quer fazer. Uma caracterstica importante da equipe que ela deve sentar
junto e se ajudar sempre que necessrio, pois isso a premissa bsica para o
trabalho em conjunto.
Cerimnias
As cerimnias se referem aos rituais que devem ser seguidos no uso
do processo. As principais cerimnias previstas no Scrum so as seguintes
reunies: Inicial, Planejamento, Apresentao, Retrospectiva e Reunio Diria.
70 unidade 03
Um ponto interessante em cada questo tentar identificar quem o
responsvel pelas aes. Isso normalmente est relacionado a papis dentro do
produto, os quais representam responsabilidades e no pessoas. Cada estria
normalmente possui um papel associado a sua execuo.
As estrias e os papis podem ser representados utilizando diagramas
de caso de uso. Essa notao ser abordada com mais detalhes na disciplina
Requisitos de Software. Nesse diagrama, os papis so representados por
bonecos e as funcionalidades (estrias) so representadas por elipses,
chamadas de casos de uso.
Diagramas de caso
de uso fornecem
uma boa viso dos
grupos de usurios
do sistema e suas
funcionalidades
associadas.
Nmero de
Ator Definio
ordem
Mdico plantonista que
coordena a UTI no hospital
1. Intensivista
e faz a solicitao das
vagas.
Mdico regulador da
Central de Leitos, que
2. Regulador recebe, avalia e gerencia
as solicitaes e eventuais
internaes..
Tabela 5: Detalhamento dos atores
72 unidade 03
conjunto dos requisitos do produto que retrata todo o trabalho desejado no
projeto. Cada estria deve ter sua prioridade definida pelo Product Owner e
repriorizado em vrios momentos do processo.
Reunio de planejamento
74 unidade 03
O prximo passo selecionar as estrias que faro parte do Sprint.
Elas comporo o que denominamos Sprint Backlog ou os requisitos do Sprint.
Para que possamos inserir uma estria no Sprint teremos que conversar sobre
ela e tentar descobrir todas as atividades associadas ao seu desenvolvimento.
Observe que uma estria pode desencadear vrias atividades ou apenas uma.
Tudo depende da situao.
Cada estria a ser inserida no Sprint deve ser representada por um
carto, com o formato exibido na Figura 28. Ele possui diversos compartimentos,
cada um com um significado especfico:
1. ID: identificador da tarefa;
2. Nome: descrio resumida da tarefa para fcil identificao;
3. Descrio: texto simples e objetivo descrevendo a tarefa com mais detalhes;
4. Como verificar: indicao de como deve ser feita a verificao dessa tarefa,
quando a mesma estiver concluda;
5. Tempo estimado: tempo especificado pela equipe para realizao da tarefa;
6. Tempo real: tempo efetivamente utilizado para realizao da tarefa;
7. Responsvel: colaborador encarregado de realizar a tarefa.
Para o clculo do tempo estimado, a maioria das equipes que usa Scrum
utiliza o Jogo do Planejamento. Nesse jogo, cada membro da equipe deve opinar
com uma estimativa de tempo para uma atividade. Essa estimativa deve ser
feita a partir do lanamento de cartas com o valor estimado. Isso ocorre dessa
maneira para tentar no influenciar os outros membros da equipe em suas
76 unidade 03
partir do confrontamento entre o tempo estimado e o tempo real que poderemos
apurar nossas estimativas e assim chegarmos a um ponto onde o erro possa ser
considerado desprezvel.
A princpio, os responsveis pelas tarefas no devem ser definidos:
cada um escolhe, dentre as tarefas do Sprint, aquilo que for mais interessante
em seu ponto de vista, sempre respeitando as prioridades envolvidas. Embora
o campo Como verificar parea dispensvel, quando existem muitas tarefas
a verificar, podemos perder o foco no que importante. Esse campo ajuda a
sempre mantermos o foco em como a tarefa deve ser verificada, garantindo
assim que ela realmente tenha sido concretizada.
Outro item importante a ser verificado durante o planejamento a
Definio de Feito (DoD). Todo projeto deve ter uma definio clara sobre o que
considerado feito! Para uma tarefa de modelagem, por exemplo, poderamos
considerar uma tarefa efetivamente concluda apenas se existisse:
1. Diagrama representando a modelagem feita na ferramenta de modelagem Sem a definio de
feito clara e precisa
definida no projeto;
comum que as tarefas
2. Diagrama contido em um repositrio do projeto; entrem e saiam da
3. Reviso em conjunto com o Scrum Master. coluna Concluda,
Outro ponto prescrito pelo Scrum so as reunies dirias, que retornando para em
abordaremos a seguir. Durante o planejamento importante a definio do local Execuo, por diversas
vezes, sem que
e horrio dessas reunies.
estejam efetivamente
Por fim, um quadro com as informaes do Sprint precisa ser criado. Um terminadas.
exemplo desse quadro exibido na Figura 30. O quadro deve ter as seguintes
divises para tarefas: No iniciadas, Em execuo, Concludas e Verificadas.
Tarefas Concludas so aquelas em que seus executores acreditam ter finalizado
todo o trabalho associado.
No entanto, elas podem no estar totalmente finalizadas, por conta do
esquecimento de algum item a ser feito, e por conta disso no recebem o status
de Verificadas, devendo retornar para em Execuo. As possveis mudanas de
estado permitidas so exibidas no diagrama de estados contido na Figura 31.
Nessa figura podemos notar que uma tarefa em execuo pode ser considerada
concluda pelo seu responsvel, mas ela pode retornar para em execuo, caso
o Scrum Master no a considere concluda durante a verificao que sempre
exigida nesses casos.
78 unidade 03
Reunio diria
A Reunio Diria uma prtica feita com toda a Equipe, o Scrum Master
e o Product Owner, com durao de no mximo 15 minutos, apenas para uma
avaliao das aes do dia anterior e o planejamento do dia. O objetivo principal
da reunio consiste em cada membro responder s seguintes perguntas: O que
voc fez de ontem para hoje? O que far de hoje at amanh? Existe algum
impedimento?
Na reunio no se resolvem problemas: eles devem apenas ser
identificados e os envolvidos em sua resoluo devem se reunir posteriormente
para tentar chegar a uma possvel resoluo.
Os impedimentos identificados na reunio devem ser registrados, assim
como os itens no planejados. Todos esses elementos precisam ser registrados
para acompanhamento. importante garantir que todos falem, sob a superviso
do Scrum Master. A reunio diria tem
que ser rpida, caso
contrrio, perder
Acompanhamento do projeto sua efetividade.
O Scrum Master possui diversas tarefas no controle dirio do projeto,
alm da reunio diria:
1. Verificar tarefas concludas;
2. Atualizar grfico de acompanhamento;
3. Resolver impedimentos;
4. Atuar quando houver desvio no planejamento.
Para a verificao das tarefas concludas, normalmente aconselhado
a presena do Scrum Master e do Product Owner. O que deve ser feito a
utilizao da definio de como verificar existente no carto para analisar se
realmente o item est concludo. Se algo discordar do que foi acertado para o
projeto, isso deve ser indicado ao responsvel para correo e efetiva concluso
do item. Conforme ser visto na disciplina de Qualidade de Software, importante
ter muito cuidado com os testes para as tarefas que envolvem implementao.
Tambm necessrio incluir a anlise do cdigo fonte para evitar surpresas
futuras.
A atualizao do grfico de acompanhamento deve seguir a seguinte
diretriz: para cada tarefa concluda e verificada, baixar o nmero correspondente
estimativa da tarefa no grfico. Muito importante: baixar a estimativa e no
o tempo efetivamente gasto! Essa ao prov uma informao visual de fcil
interpretao e de grande valia para qualquer gerente de projeto. Talvez seja
aquilo que mais chamativo no Scrum.
Apresentao do Sprint
Retrospectiva
80 unidade 03
base nessa identificao que registraremos o que foi mais consensual para
cada uma das trs questes. O Scrum Master deve ficar atento a esses itens e
garantir que eles sero levados em considerao no prximo Sprint.
De forma geral, as atividades para se utilizar o Scrum em um projeto so
as seguintes:
Aplicando o Scrum
ID NOME PRIORIDADE
1 Estudar conceitos bsicos, proces- 80
sos e ciclo de vida
2 Escrever captulo introdutrio 60
3 Escrever captulo sobre processos 60
4 Estudar as disciplinas da Engen- 50
haria de Software
5 Escrever captulos sobre as princi- 40
pais disciplinas
6 Estudar a metodologia Scrum 30
7 Escrever captulo sobre o Scrum 20
Tabela 8 : Product Backlog para o exemplo considerado
82 unidade 03
Figura 32: Dados do Sprint e Grfico de Acompanhamento
84 unidade 03
Na primeira semana de trabalho no conseguimos finalizar nenhuma das
tarefas, o que nos gerou um grfico de acompanhamento conforme exibido na
Figura 33. Observe que analisando o grfico podemos facilmente perceber que
estamos atrasados em relao ao que foi previsto nas estimativas de execuo
das tarefas. A linha de acompanhamento acima da ideal indica atraso, assim
como a linha abaixo indica um adiantamento em relao ao previsto.
Ao final de duas semanas e finalizado o Sprint, obtivemos o grfico
exibido na Figura 34. Observe que apenas uma tarefa foi finalizada. Por conta
disso, ao final do Sprint o grfico de acompanhamento indica que produzimos
bem menos que o estimado.
TEMPO TEMPO
ID NOME PRIORIDADE
ESTIMADO GASTO
Estudar conceitos bsi-
1 cos, processos e ciclo 80 4 3
de vida
Escrever captulo in-
2 60 4
trodutrio
Exerccios de fixao
WEB-BIBLIOGRAFIA
86 unidade 03
<http://www.ambysoft.com/>
<http://www.bstqb.org.br/>
<http://www.comp.lancs.ac.uk/computing/resources/IanS/>
<http://www.controlchaos.com/>
<http://www.inf.pucrs.br/~rafael/Scrumming/>
<http://www.infoq.com/br/>
<http://www.mountaingoatsoftware.com/>
STORM (Software Testing Online Resources). Stio com diversos materiais sobre
testes, desde ferramentas, artigos, livros, etc. Disponvel em:
Vdeos e tutoriais sobre o Scrum disponvel em:<http://www.mtsu.edu/~storm/>
Project Management Institute (PMI) disponvel em: <http://www.pmi.org/>
<http://www.rspa.com/>
Stio de apoio ao processo Prxis, com exemplos da aplicao dos fluxos em
um exemplo real de desenvolvimento disponvel em: <http://www.Scrumalliance.
org/ >
<http://www.sei.cmu.edu/>
Relatrios do Standish Group, incluindo dados sobre desenvolvimento de
software disponvel em: <http://www.standishgroup.com>
Pgina da Universidade Aberta do Brasil- UAB disponvel em:
<http://www.uab.gov.br>
Pgina da Universidade Aberta do Piau UAPI disponvel em: <http://www.ufpi.
br/uapi>
Certificao Brasileira de Teste de Software disponvel em:
Empresa com diversos artigos e casos de sucesso no uso de prticas geis
disponvel em:
Instituto de Engenharia de Software do MIT disponvel em:
Organizao divulgadora do Scrum mundialmente disponvel em:
Pgina de Scott Ambler com boas prticas para o desenvolvimento de software
disponvel em:
Stio com um livro disponvel para download em:
Stio de apoio ao livro de Ian Sommerville disponvel em:
Stio de apoio ao livro de Roger Pressman disponvel em:
Srcumming - Ferramenta Educacional para Apoio ao Ensino de Prticas de
Scrum disponvel em:
GLENFONRD, Myers. The art of the software testing. John Wiley & Sons,
1979.
90 unidade 03
Pedro de Alcntara dos Santos Neto