Escolar Documentos
Profissional Documentos
Cultura Documentos
Software
Aula 1 – Manifesto Ágil
Você está iniciando o estudo da disciplina Tópicos Avançados em Engenharia de Software. Nela
você irá conhecer outras metodologias de desenvolvimento de sistemas e em qual a situação cada
uma delas será utilizada.
Nesta primeira aula será abordado sobre a situação atual do desenvolvimento de sistemas e a
criação do manifesto ágil
Ao final, você deverá ser capaz de identificar quais são os principais problemas existentes no
desenvolvimento de sistemas e o porque da criação do manifesto ágil.
Boa aula!
Quando lidamos com sistemas grandes, seu desenvolvimento pode levar anos, o que torna a sua
utilização inviável contando com o ambiente empresarial que relatamos anteriormente. Nesse
contexto o software ideal nunca fica pronto ou o sistema nunca é construído utilizando padrões de
desenvolvimento de software.
O que é uma metodologia de desenvolvimento?
Pressman (2002) relata que a Engenharia de Sistemas é um processo de modelagem onde a visão
do mundo real ou numa visão detalhado do que tem que ser construído, criando modelos para
representar a visão dos processos de negócios, seus comportamentos e seus pressupostos.
Tratam as entradas e a ligações dos processos permitindo ao engenheiro entender melhor a visão
dos processos de negócios.
Outro ponto a ser observado é que os desenvolvedores, na maioria das vezes, não gostam de
gerar a documentação exigida pelo processo e, dessa forma, quando necessário as mesmas são
geradas de qualquer forma, sem levar em consideração o processo nem as consequências futuras
na utilização dessa documentação gerada de forma incompleta.
Um ponto importante que deve ser trabalhado é que a utilização de uma metodologia padrão,
gerando documentação em todas as fases do desenvolvimento de software, tornará o processo
independente das pessoas, onde antigamente o conhecimento sobre o negócio e sistema estava
depositado nos desenvolvedores. Isso poderá gerar séria resistência ao processo, a partir do
momento que os desenvolvedores perceberem que perderão essa condição.
A utilização de uma metodologia padrão é facilitado com a utilização de ferramentas CASE, uma
vez que as ferramentas criam uma série de procedimentos que devem ser seguidos pelos
desenvolvedores.
Em algumas situações, ferramentas CASE de alto nível permitem que a organização faça a
padronização dos artefatos e dos passos que devem ser seguidos pelos desenvolvedores, de tal
forma que não é permitido que determinadas atividades sejam ignoradas ou simplesmente deixem
de ser realizadas.
Vai depender muito do segmento de negócios em que essa organização está inserida. Por
exemplo, o segmento bancário não tem como foco a venda de software e sim de produtos e
serviços bancários.
Vamos por partes, se o banco não contar com sistemas de última geração, atendendo diversos
canais de atendimento, dificilmente ele conseguirá fidelizar o cliente e se manter no mercado.
Portanto, a existência de sistemas informatizados é uma necessidade e uma realidade.
Aí levantamos outra situação, porque não terceirizar todo o desenvolvimento de sistemas e partir
para vender os produtos e serviços. Nesse contexto entra uma nova variável, o conhecimento
sobre o negócio, embutido nos sistemas. Esse conhecimento irá estar nas mãos das empresas
terceirizadas e não do banco. Isso passará a ser um problema, se a empresa terceirizada for
embora, esse conhecimento vai com ela. E os sistemas da empresa, quem irá mantê-los. Aí entra
a necessidade de existência de uma equipe interna de desenvolvimento de sistemas, que irá
concentrar todo esse conhecimento, tornando a organização independente das empresas
terceirizadas.
Se existe uma equipe interna, temos que ter um processo definido para esse grupo de
profissionais, visando padronizar a sua atuação. A adoção de ferramentas CASE fica condicionada
ao tamanho dessa equipe e a forma como o processo de desenvolvimento foi definido.
Outra razão para que a empresa se preocupe com a sua equipe de desenvolvimento de sistemas
são as regulamentações legais, que exigem que as empresas tenham uma documentação mínima
sobre os seus sistemas, dependendo do segmento em que a mesma se encontra. Por exemplo, o
sistema bancário é controlado de perto pelo Banco Central do Brasil, visando garantir que os
correntistas desses bancos não tenham nenhum prejuízo financeiro, caso ocorram problemas nos
sistemas informatizados dos bancos.
Muito bem, falamos muito sobre metodologia padrão, ferramentas CASE, processo de
desenvolvimento, mas ainda não entramos no ponto principal que é como desenvolver sistemas,
atendendo as reais necessidades das empresas.
Ficou claro que o desenvolvimento de sistemas está muito aquém daquilo que as empresas
esperam desses sistemas. Para atender esse contexto foi criado o Manifesto Ágil.
Um dos aspectos desse grupo é que todos vieram de diferentes áreas de formação e ainda assim
são capazes de concordar em questões que normalmente metodologistas não concordam. O grupo
definiu um manifesto para encorajar melhores meios de desenvolver software. Esse manifesto é
composto por um conjunto de princípios que definem critérios para o desenvolvimento ágil de
software, como a Modelagem Ágil.
Ambler (2004) declara que o Manifesto Ágil é composto por quatro simples declarações de valores,
onde o importante é entender que ao mesmo tempo em que você deve valorizar conceitos, são
definidas preferências, não alternativas, dando enfoque em certas áreas, sem contudo eliminar
outras. Os valores do Manifesto Ágil são:
Ambler (2004) relata que para ajudar as pessoas a compreenderem o desenvolvimento ágil de
software, os membros da Aliança Ágil refinaram as filosofias constantes de seu manifesto em doze
princípios aos quais as metodologias de desenvolvimento de software devem se adequar. Esses
princípios são:
todo o projeto.
Construa projetos ao redor de indivíduos motivados. Dê-lhes o ambiente e o apoio que eles
Ambler (2004) relata que quando se pensa a respeito desses princípios nos perguntamos:
Olhando para eles, algumas pessoas podem dizer que são objetivos radicais e impossíveis de
serem aplicados na prática. Outros podem dizer que tem bom senso.
Eles representam alicerces que podem ser adotados para o desenvolvimento de software bem-
sucedido.
Algumas empresas utilizam esses princípios, dependendo das reais necessidades de seu
desenvolvimento de sistemas e das regulamentações legais que a mesma está subordinada.
Ambler (2004) relata que a Modelagem Ágil (MA) é uma metodologia para modelagem e
documentação eficaz de sistemas baseados em software.. Ela é um conjunto de práticas guiada
por princípios e valores para profissionais aplicarem em seu dia a dia, não sendo um processo
prescritivo. Não define procedimentos detalhados sobre como criar um determinado tipo de
modelo. Ela fornece conselhos sobre como modelar sistemas de forma eficiente. Ela não significa
que você deve criar menos modelagem do que antes. Como veremos em outras aulas, a
modelagem existe nos processos ágeis, tais como o SCRUM com as histórias de usuários ou
modelos CRC (Class Reponsability Collaborator).
Definir e mostrar como praticar um conjunto de valores, princípios e práticas relativas a uma
modelagem eficaz e leve. A MA é uma catalisadora de melhorias que não são as técnicas de
modelagem em si, tal como os modelos de casos de uso, de classe, de dados ou de interface
com o usuário e sim como aplicá-las.
Lidar com a questão de como aplicar técnicas de modelagem em projetos de software
códigos.
Ela não inclui atividades de teste, embora lhe diga para considerar a possibilidade de teste
enquanto modela.
Ela não cobre as atividades de gerenciamento de projeto e as operações de suporte ao
sistema.
Ela deve ser utilizada com outros processos, como o XP – eXtreming Programming, DSDM –
processos de software já existente para formar o seu próprio processo, dependendo das
características da organização e de seus negócios.
Os modelos criados devem cumprir os seus propósitos, ou seja devem ter uma razão para
serem gerados. Um modelo não deve ser criado se ele não for utilizado em algum ponto do
desenvolvimento
Devem ser compreensíveis
Devem ser suficientemente precisos
Devem ser suficientemente consistentes
Devem ser suficientemente detalhados, ou seja, devem conter somente os detalhes
clientes do projeto
É eficaz e trata de eficácia
É algo que funciona na prática, não é uma teoria acadêmica
Não é uma bala de prata (“silver bullet”)
Foi feita para o desenvolvedor médio, mas não é uma substituição de pessoas competentes
Não é um ataque à documentação
Não é um ataque às ferramentas CASE
O que é comunicação?
Comunicação é o processo nos quais informações são trocadas entre indivíduos por meio de um
sistema comum de símbolos, sinais ou comportamento, segundo o Merriam Webester’s Collegiate
Dictionary 10th Edition.
É uma via de duas mãos, onde duas ou mais partes fornecem e obtêm informações como
resultado. Em algumas situações, é um requisito fundamental para o sucesso no desenvolvimento
de software. Uma das principais razões para modelar é ajudar a melhorar a comunicação. A
modelagem é uma das formas onde as ideias são comunicadas para as partes interessadas em um
projeto de software.
O que é Simplicidade?
A Modelagem Ágil prega a simplicidade dos projetos, onde a aplicação de padrões complexos cedo
demais, criar arquiteturas em excesso para que seu sistema para dar suporte a requisitos futuros
ainda não definidos e desenvolver uma estrutura complexa podem ser fatores contrários à
agilidade no desenvolvimento de software.
O ideal é se basear especificamente naquilo que será necessário para o momento, atuando de
forma simples e objetiva.
Retorno
Para se obter um retorno efetivo sobre o desenvolvimento de sistemas, os modelos devem ser
desenvolvidos em equipe, revisados com o seu público-alvo e somente após ter um feedback a
respeito é que o modelo deve ser implantado. É importante ainda a realização de um teste de
aceitação para verificar o retorno a respeito do que foi desenvolvido.
Coragem
Ambler (2004) relata que a modelagem ágil exige que você trabalhe com outras pessoas, acredite
nelas e em si próprio, e isso exige coragem. A MA requerer que as coisas sejam feitas de modo
mais simples possível e acredite que pode resolver os problemas futuros que ocorrerem. A
documentação de software somente deve ser gerada quando você precisar dela. Caso você esteja
gerando uma documentação que não será utilizada, porque gera-la? Só para fazer volume?
Humildade
Ambler (2004) relata que os melhores desenvolvedores de software devem ter a humildade de
reconhecer que não sabem tudo. Os modeladores ágeis devem entender que seus colegas e os
clientes possuem pontos fortes e sempre têm algo a acrescentar ao projeto. A humildade também
deve fazer parte da forma como você interage com as pessoas. O fato de denegrir as pessoas ou a
sua imagem não é um ato de humildade, é sim um ato de arrogância.
Para tanto deve ser produzida uma documentação mínima, suficiente para dar continuidade nos
trabalhos. O seu foco deve estar em transferir as habilidades de seus desenvolvedores, motivar o
pessoal existente a permanecer e desenvolver a próxima versão do sistema.
Devem ser considerados fatores como a natureza dos desenvolvedores e do próximo trabalho. O
importante é desenvolver sistemas sem perder o foco nos futuros projetos.
Podem ser alteradas as quantidades de modelos a serem utilizados em cada projeto. Quanto mais
complexos os modelos ou documentos criados, mais difícil pode ser a sua manutenção.
Jim Highsmith, apud Ambler (2004), faz um questionamento sobre qual a carga ideal que um
viajante deve levar no deserto. Uma carga excessiva pode dificultar a locomoção. Da mesma
forma um mínimo de suprimentos pode inviabilizar a viagem. Será necessário contrabalançar o
ponto ideal de suprimentos para atravessar o deserto levando em consideração a quantidade de
água, suprimentos, etc..
Diminuir a carga é ter coragem de acreditar que a documentação gerada, mesmo que mínima será
suficiente para ou projeto ou estar preparado para criá-los caso seja identificada essa
necessidade.
Adote a simplicidade
À medida que o projeto anda, um dos pressupostos é de que a solução mais simples é a melhor.
Na maior parte do tempo a solução mais simples funciona bem.
Ambler (2004) relata que a vantagem é que você não está gastando tempo com a implementação
de soluções difíceis. Outra vantagem é quando uma solução simples não funciona bem, você terá
tempo de trabalhar e gerar a solução difícil. Adotar a solução mais simples irá funcionar sempre?
Aprenda com as experiências vivenciadas, aproveitando as lições em desenvolvimentos futuros.
Encampe as mudanças
Aceite que as mudanças acontecem e elas tornam o desenvolvimento de software emocionante.
Os requisitos mudam com o tempo e os clientes podem mudar com o tempo, pessoas entram e
outras saem na área de negócios.
Os pontos de vista podem ser alterados, bem como os objetivos do negócio. O ambiente
tecnológico e de negócios podem sofrer modificações à medida que o projeto avança, os
modeladores ágeis tem a mudança como uma coisa normal.
Podem ocorrer problemas no desenvolvimento com a pressuposição de que o que está sendo
desenvolvido irá ser modificado no futuro.
Mude incrementalmente
Como dissemos anteriormente a mudança faz parte do dia a dia de um desenvolvedor ágil. Para
encampar essas mudanças, você necessita usar uma estratégia incremental em seu próprio
trabalho de desenvolvimento. Elas devem ser feitas em pequenas partes do sistema. Você pode
executar uma grande alteração com a programação de pequenas mudanças incrementais.
Os princípios básicos da Agile Alliance dizem que você deve entregar software funcionando com a
frequência de semanas a alguns meses, de preferência com a frequência mais curta possível.
É inútil tentar desenvolver o modelo completo no início do projeto. É ideal desenvolver um modelo
completo pequeno no início ou um modelo de alto nível. É necessário ter a humildade que você
pode não acertar tudo na primeira vez, ou na enésima vez. Basta ter coragem para administrar e
buscar construir o software mais próximo possível da necessidade do cliente.
Um modelo deve ser utilizado para entender melhor o que tem que ser feito ou realizar uma
modificação no futuro. O nível de detalhamento depende da necessidade de entendimento do
produto a ser criado ou mantido.
Você está usando um processo prescritivo que lhe diz para fazê-lo, então você o faz sem
É importante que todos tenham a coragem de levantar e dizer que precisa de mais tempo para
realizar um bom trabalho. É necessário buscar utilizar o tempo de modo inteligente para gerar um
produto de qualidade e que corresponda às necessidades do cliente e às expectativas das pessoas
envolvidas no projeto
A construção de sistemas com um ciclo mais curto é outro fator importante. Os problemas podem
ser corrigidos à tempo, principalmente quando os principais problemas estão situados no
entendimento dos requisitos ou nas fases iniciais do projeto. É necessário manter o foco e buscar
trabalhar de forma a ter um retorno rápido e efetivo para o cliente.
Adaptação local
A utilização da Modelagem Ágil deve levar em consideração a cultura da organização ou do cliente.
A adaptação pode ser feita no nível individual ou do projeto. A Modelagem Ágil pode não funcionar
em todas as situações. Em algumas empresas, dependendo do contexto do negócio, pode não ser
realista adotar a Modelagem Ágil. Isso pode acontecer em função do tipo de negócio ou das
disposições legais sobre ele.
para quando criar cada tipo de modelo. As versões mais recentes do RUP apresentam
conselhos para artefatos não-UMO, como modelo de dados e storyboards de interface com o
usuário, que podem ser muito utilizados para a MA.
Promova a posse coletiva – Aqui precisarão ser feitas algumas adaptação no UP,
permitindo que qualquer pessoa no projeto acesse qualquer artefato que deseje e trabalhe
no mesmo, incluindo documentos e modelos. O UP concentra-se em temas de
gerenciamento de configuração que controlam o acesso dos desenvolvedores.
Considere a testabilidade – O UP incluí uma disciplina de Teste em seu ciclo de vida,
fazendo que todos tenham isso em mente quando trabalham. Tem também muitas
oportunidades de revisar artefatos de modelagem, caso necessário.
Crie diversos modelos em paralelo – O UP inclui esse conceito. Basta ver os diagramas
de atividades que mostram cada disciplina para ver que diversos artefatos podem ser
trabalhados em paralelo. As equipes UP devem mudar um pouco o foco para ler nas
entrelinhas dos diagramas de atividades das disciplinas e do ciclo de vida do UP e decidir
quando desempenhar diversas disciplinas simultaneamente, quando for o caso.
Crie conteúdos simples – O modelador poderá decidir simplificar o conteúdo dos modelos,
entretanto os demais membros da equipe devem concordar com essa simplificação. Esse
pode ser um problema cultural, que muitas empresas podem encontrar dificuldades em
implantar.
Mostre os modelos de modo simples – Essa prática segue a mesma linha da simplificação
dos conteúdos.
Descarte os modelos temporários – Os modeladores UP tem a mesma liberdade de
externos, seja da organização ou fora da empresa. Essa interação pode ser especificada com
um ou mais casos de uso em então a realização de caso de uso correspondente se torna o
modelo de contrato formalizado.
Itere em outro artefato – Uma descrição infeliz das atividades de modelagem UP como
incremental, dando preferência a modelos menores e mais simples que possam levar mais
rapidamente à implementação e ao teste.
Modele para comunicar – O importante é modelar sabendo quem é o público alvo dessa
produtividade expandindo seus horizontes para incluir ferramentas simples como quadros,
cartões de índices e notas autocolantes, além das ferramentas CASE, quando for o caso.
Inicialmente realize uma sessão de modelagem para explorar os requisitos iniciais visando
construir uma visão comum do negócio com o cliente. Vai depender do tempo disponível e o nível
de detalhamento que for decidido que será utilizado para a modelagem.Pode envolver Requisitos
Ágeis e Análise e Projeto Ágeis. Quando não puder se chegar a uma visão comum, várias sessões
de modelagem devem ser realizadas.
Alguns artefatos podem ser gerados durante essa sessão. São eles:
Todos aprendem a partir desse modelo sobre o negócio e sobre o desenvolvimento de software. A
figura abaixo mostra um exemplo desse diagrama.
Visão de Negócio
O documento com a Visão do Negócio visa identificar uma visão comum do negócio dentro do
grupo, buscando chegar a um consenso com os clientes. O RUP sugere a criação de um
documento com a visão de negócio para registrar o resultado dos trabalhos nesta fase. O template
desse documento pode ser obtido a partir do RUP – Visão de Negócio.
O Índice Analítico, apresentado a seguir, permite uma visão dos tópicos que envolvem o
documento Visão de Negócio.
1.1 Finalidade
1.2 Escopo
1.4 Referências
2. Posicionamento
4.1 <anObjective>
4.2 <anotherObjective>
5. Restrições
6. Intervalos de Qualidade
7. Precedência e Prioridade
8. Outros Requisitos
O ideal seria a realização de uma ou mais sessões formais de modelagem dos requisitos do
projeto, visando identificar os requisitos iniciais do sistema e chegar a uma visão do mesmo. Essas
sessões permitiriam chegar ao escopo do sistema ou pelo menos ter uma versão do que se está
trabalhando no momento.
Um ponto importante é conseguir ter acesso imediato aos clientes, para que eles nos ajudem a
identificar e priorizar requisitos, gerandouma Especificação de Requisitos de Software, conhecida
como Modelo de Requisitos nas versões anteriores do RUP.
Modelode Contexto
Esse modelo visa mostrar como o sistema se ajusta no seu ambiente global. Para essa modelagem
podemos nos utilizar o Diagrama de Casos de uso. A utilização do tipo de artefato depende do
contexto do software, conforme a figura abaixo. Esse diagrama depende do contexto em que está
envolvido a organização e o sistema que está sendo especificado.
Uma outra abordagem que pode ser utilizada é o desenvolvimento do modelo de contexto que
mostre como o sistema se ajusta em um determinado ambiente global, conforme as figuras
abaixo.
Diagrama de Fluxo de Dados- DFD
Especificação Suplementar
É onde a grande maioria dos seus requisitos de sistema está documentada. Ela serve como
documento auxiliar paraos casos de uso incluindo regras de negócios, restrições, requisitos
técnicos e qualquer outro requisito não relacionado a casos de uso do sistema. O importante é que
os modeladores ágeis devemdiscutir todos os documentos criados.
Nesta aula você continuará estudando a especificação de um sistema, partindo para a Análise e
Projeto Ágeis.
Boa aula!
casos de uso ou casos de uso que são significativos para a arquitetura, mostrando como os
elementos se ajustam nas quatro primeira visões.
A figura abaixo permite visualizar um modelo de implantação da UML e seus diversos dispositivos.
A figura abaixo permite visualizar como poderíamos organizar o nosso código de negócio através
de um diagrama de componentes da UML.
Diagrama de Implantação da UML
A figura seguinte permite visualizar a explicação de um desenvolvedor que uma interface para o
componente é definida em uma ou mais sessões de beans e que sua experiência levou a não
fornecer acesso direto a entidades beans. Uma sessão bean irá realizar a interação com as
entidades bean EJB, com outras sessões bean EJB, objetos Java normais ou com o banco de
dadosbackend (AMBLER, 2004).
Um breve esboço descrevendo uma estratégia de implementação de um componente de negócio
A seguir apresentamos um diagrama de robustez e uma figura lógica do caso de uso Fazer Pedido.
Diagrama de Robustez
Uma vez que as classes foram identificadas, ficou fácil a elaboração de um diagrama de
sequência, conforme mostra a figura abaixo.
Pegar um conjunto de parâmetros que representam o critério de busca – Nesse contexto pode ser
utilizado o protótipo da interface do usuário.
Formular um comando SQL SELECT que represente o critério de busca – A partir dos componentes
interpretados na interface, modelar as informações que devem ser armazenadas referente aos
componentes identificados gerando um modelo de dados.
Modelo de dados
Retorne o resultado de cada busca – Avaliar o resultado das instruções SQL geradas e avaliar o
modelo para verificar se ele atenderá todas as necessidades, representadas pelo protótipo da
interface com o usuário.
O próximo passo é a definição e especificação dos próximos casos de uso que compõem o sistema.
Com certeza, mudanças irão estar presentes durante o desenvolvimento desse sistema e devem
ser encarados com normalidade, levando em consideração o princípio Encampe as Mudanças. A
Modelagem Ágil tem como premissa principal que a mudança faz parte do processo e deve ser
encarada normalmente, o que não ocorre com muita naturalidade no desenvolvimento tradicional.
Aula 6 - Scrum
As abordagens das aulas anteriores se caracterizavam por estarem centradas nos valores,
princípios e a Modelagem Ágil em consonância com o Processo Unificado. A partir desta aula você
estudará as metodologias de Modelagem Ágil existentes no mercado e que podem ser utilizadas
nas empresas, dentre elas a Scrum, objeto de estudo desta aula.
Boa aula!
6.1 Scrum
Segundo Schwaber e Sutherland (2010), milhares de pessoas contribuíram para o Scrum,
destacando aquelas que contribuíram em seus primeiros dez anos. Primeiro havia o Jeff
Sutherland, trabalhando com o Jeff McKenna, e Ken Schwaber com Mike Smith e Chris Martin. O
Scrum foi formalmente apresentado e publicado no OOPSLA 1995. Durante os cinco anos
seguintes, Mike Beadle e Martine Devos fizeram contribuições significativas. E então todos os
outros, que sem a sua ajuda do Scrum não teria sido aprimorado no que é atualmente.
Scrum é baseado nas melhores práticas aceitas pelo mercado, utilizadas e provadas por décadas.
Ele é definido então em uma teoria de processos empíricos. Como Jim Coplien certa vez observou
para o Jeff, “todos irão gostar de Scrum; isso é o que já fazemos quando nos pressionam contra a
parede” (SCHWABER; SUTHERLAND, 2010).
Scrum é um framework que pode ser empregado conjugado com diversos processos e técnicas.
Seu papel é fazer transparecer a eficácia relativa das suas práticas de desenvolvimento para que
você possa melhorá-las, enquanto provê um framework dentro do qual, produtos complexos
podem ser desenvolvidos. Ele funciona bem dentro de ambientes controlado.
Segundo Schwaber e Sutherland (2010), o Scrum, que é fundamentado na teoria de controle de
processos empíricos, emprega uma abordagem iterativa e incremental para otimizar a
previsibilidade e controlar riscos. Três pilares sustentam cada implementação de controle de
processos empíricos. Seus pilares são transparência, adaptação e inspeção.
Transparência – garante que os aspectos do processo que afetam o resultado devem ser
visíveis para aqueles que gerenciam os resultados. Esses aspectos não apenas devem ser
transparentes, mas também o que está sendo observado deve ser conhecido. Ou seja,
quando alguém que inspeciona um processo acredita que algo está pronto, isso deve ser
equivalente à sua definição de pronto.
Inspeção – se um ou mais aspectos do processo devem ser inspecionados com uma
frequência suficiente para verificar as variações inaceitáveis no processo para que possam
ser detectadas e tratadas. A frequência da inspeção deve considerar que qualquer processo
pode ser modificado pelo próprio ato da inspeção. O problema acontece quando a frequência
de inspeção necessária excede a tolerância do processo à inspeção. Felizmente, isso não
parece ser verdade no desenvolvimento de software. Os outros fatores são a habilidade e a
aplicação das pessoas na inspeção dos resultados do trabalho.
Adaptação – Se um inspetor determinar, a partir de uma inspeção, que um ou mais
aspectos do processo estão fora dos limites aceitáveis e que o produto resultante será
inaceitável, ele deverá ajustar o processo ou o material que está sendo processado. Esse
ajuste deverá ser feito o mais rápido possível para minimizar os desvios posteriores.
Existem três pontos para inspeção e adaptação em Scrum: Reunião diária, Reuniões de revisão
de Sprint e de Planejamento da Sprint e, finalmente, Retrospectiva da Sprint. Esses pontos serão
detalhados nos próximos tópicos que compõem esta aula.
6.2 Conteúdo do Scrum
O Framework Scrum é formado por um conjunto formado por Times do Scrum com papéis
associados, eventos com duração fixa, artefatos e regras. Os times são formados visando à
otimização, flexibilidade e produtividade. Os times devem ser auto-organizáveis, multidisciplinares
e devem trabalhar em iterações.
Scrum Master – Responsável por garantir que o processo seja entendido e seguido. Ele é o
O Scrum emprega os eventos com duração fixa, chamados de TIME-BOXES, que são usados para
criar uma regularidade. Entre os elementos do Scrum que têm uma duração fixa citamos:
O ponto central do Scrum é a Sprint, que deve ser representada por uma iteração de um mês ou
menos, de duração consistente de esforço de desenvolvimento. Ao final de uma Sprint espera-se
um incremento no produto final, que é potencialmente entregável. O início da próxima Sprint deve
ser logo após o término da Sprint encerrada.
ProductBacklog – Trata-se de um documento que contém uma lista priorizada de tudo que
do ProductBacklog e que foram selecionadas para fazer parte de uma Sprint gerando uma
parte do produto solicitado pelo cliente.
Burndownda Release – Trata-se de um documento que mede o Product Backlog restante
6.3.2 ProductOwner
O ProductOwner é a única pessoa responsável pelo gerenciamento do Product Backlog e por
garantir o valor do trabalho realizado pelo Time. Essa pessoa mantém o Product Backlog e garante
que ele está visível para todos. Todos sabem quais itens têm a maior prioridade, de forma que
todos sabem em que se irá trabalhar.
O Product Owner é uma pessoa, e não um comitê. Podem existir comitês que aconselhem ou
influenciem essa pessoa, masquem quiser mudar a prioridade de um item, terá que convencer o
ProductOwner. Empresas que adotam Scrum podem perceber que isso influencia seus métodos
para definir prioridades e requisitos ao longo do tempo.
Para que o Product Owner obtenha sucesso, todos na organização precisam respeitar suas
decisões. Ninguém tem a permissão de dizer ao Time para trabalhar em um outro conjunto de
prioridades, e os Times não podem dar ouvidos a ninguém que diga o contrário. As decisões do
Product Owner são visíveis no conteúdo e na priorização do Product Backlog. Essa visibilidade
requer que o Product Owner faça seu melhor, o que faz o papel de Product Owner exigente e
recompensador ao mesmo tempo. (SCHWABER; SUTHERLAND, 2010, p. 7-8)
6.3.3 Time
Desenvolvedores que transformam o Product Backlog em incrementos de funcionalidades
potencialmente entregáveis em cada Sprint. São interdisciplinares e devem possuir todo
conhecimento necessário para criar um incremento no trabalho. Membros que se recusam
programar por serem arquitetos ou designers não se adaptam bem aos times. Todos contribuem,
mesmo que isso exija aprender novas habilidades ou lembrar-se de antigas. São auto-
organizáveis. Ninguém diz ao time como transformar Product Backlog em incrementos de
funcionalidades entregáveis. Nem mesmo o Scrum Master.
O tamanho ótimo para um time é de cinco a nove pessoas. Menos que isso gera menor interação e
consequentemente menor ganho de produtividade. E mais que isso poderá encontrar limitações de
conhecimento e há a necessidade de muita coordenação. Há times bem-sucedidos que excederam
esses limites. Product Owner e Scrum Master não estão incluídos na conta, a menos que também
sejam “porcos”. Deve-se tomar cuidado ao mudar a composição do time.
6.4 Time-Boxes
Os time-boxes (caixas de tempo) no Scrum são eventos com duração fixa e são os seguintes:
6.4.1 Reunião de Planejamento da Release
Tem como propósito o estabelecimento de um plano e metas que o Time Scrum e a organização
possam entender e comunicar. Responde às questões: “Como podemos transformar a visão em
um produto vencedor da melhor maneira possível? Como podemos alcançar ou exceder a
satisfação do cliente e o Retorno sobre Investimentos desejados?” (SCHWABER; SUTHERLAND,
2010, p. 9). Estabelece a meta da versão, maiores prioridades do Sprint Backlog, principais riscos
e as características gerais e funcionalidades que estarão contidas na versão; além da data de
entrega e custos prováveis, se nada mudar. Geralmente não requer mais do que 15 a 20% do
tempo que uma organização costumava utilizar para produzir um plano de versão para entrega
tradicional. P orém, consome mais esforços, pois o planejamento é realizado em cada reunião de
Revisão de Sprint e de Planejamento de Sprint da mesma forma como também é realizado no
planejamento diário. Requer estimar e priorizar o Sprint Backlog para versão.
6.4.2 Sprint
É uma iteração com duração fixa. Sprints consistem na Reunião de Planejamento da Sprint, o
desenvolvimento, a Revisão da Sprint e a Retrospectiva da Sprint. Ocorrem sucessivamente sem
intervalos entre elas. Scrum Master deve garantir que não haverá nenhuma mudança que afete a
meta daquele Sprint. A composição do time e metas de qualidade devem permanecer constantes
durante a Sprint.
Podem ser canceladas antes do prazo fixado. Somente o ProductOwner, influenciado ou não pelos
stakeholders, Time ou Scrum Master, tem autoridade para cancelar a Sprint. A Sprint pode ser
cancelada pela gerência se a meta se tornar obsoleta pelas condições de mercado ou tecnologia.
Porém, raramente isso ocorre devido à curta duração das Sprints. Quando a Sprint é cancelada,
todos os itens do Sprint Backlog completados e feitos são revisados e aceitos se representarem
um incremento entregável. Os demais itens do Sprint Backlog são devolvidos com suas
estimativas iniciais. Qualquer trabalho realizado nesses itens é tomado como perdido. Todos têm
que se reagrupar em outra Reunião de Planejamento da Sprint para iniciar uma nova Sprint.
Cancelamentos consomem recursos e são traumáticos para o Time e não são muito comuns
(SCHWABER; SUTHERLAND, 2010).
Primeira Parte – Evento com duração fixa em quatro horas onde “o quê será feito na Sprint”
é decidido. O Product Owner apresenta ao time o que é mais prioritário. Entradas para essa
reunião: Sprint Backlog, incremento mais recente ao produto, a capacidade do time,
histórico de desempenho do time. Somente o time decide o quanto do Backlog ele deve
selecionar. Selecionado o Sprint Backlog, a meta da Sprint é delineada. A meta define um
objetivo que será alcançado por meio da implementação do Sprint Backlog. É uma descrição
que fornece orientações ao time sobre a razão pela qual está desenvolvendo o incremento. A
Meta da Sprint é um subconjunto da meta de Versão para Entrega. Dá ao time alguma
margem com relação à funcionalidade.
Segunda Parte – Outro evento com duração fixa de quatro horas onde o time entende como
Para minimizar o retrabalho, apenas os itens de maior prioridade precisam ser detalhados. As
estimativas dos itens de Sprint Backlog são inicialmente calculadas durante o Planejamento da
Versão para entrega e, posteriormente, à medida que forem sendo criados. Durante a preparação
do documento, os itens são revistos e revisados. No entanto, podem ser atualizados a qualquer
momento. O time é responsável por todas estimativas. O Product Owner pode auxiliar o time além
de manter o Sprint Backlog e o Burndown do Backlog da Versão sempre atualizados e publicados
todo o tempo (SCHWABER; SUTHERLAND, 2010). O gráfico de Release Burndown registra a soma
das estimativas dos esforços restantes do Sprint Backlog ao longo do tempo.
Gráfico de Release Burndown
Fonte: http://msdn.microsoft.com/pt-br/library/ff731579.aspx
Fonte: http://w
ww.mountaingoatsoftware.com/scrum/figures
Nesta aula você estudou o Scrum e conseguiu identificar a forma de trabalho dessa Metodologia
Ágil. Tão logo tenha oportunidade experimente colocá-la em prática na primeira oportunidade que
tiver no desenvolvimento de um sistema.
(testes funcionais).
Se projetar é bom, vamos fazer disso parte do trabalho diário de cada pessoa (refatoração).
Se simplicidade é bom, sempre deixaremos o sistema com os projetos mais simples possível
que suporte a funcionalidade atual (a coisa mais simples que possa funcionar).
Se a arquitetura é importante, todos irão definir e refinar a arquitetura o tempo inteiro
(metáfora).
Se integrar é bom, vamos integrar a maior quantidade de vezes possível (integração
continua).
Se iterações curtas é bom, vamos deixar as iterações realmente curtas( o jogo do
De repente quando voltou a prestar a atenção o carro entrou no acostamento. Aí a sua mãe
suavemente colocou o carro de novo na estrada. Ela relata que ela realmente o ensinou a dirigir:
“Dirigir não é fazer o carro andar na direção certa. Dirigir é prestar a atenção constantemente,
fazendo uma pequena correção para um lado, outra pequena correção para o outro”.
Ele declara que esse é o paradigma da XP onde mesmo que as coisas pareçam estar bem, você
não deve tirar os olhos da estrada. A mudança é uma certeza e você deve estar preparado para ir
um pouco para um lado ou um pouco para o outro. Em algumas situações talvez seja necessário ir
em uma direção totalmente diferente. Essa é a vida do programador.
Analisando esses quatro valores percebe-se que se tratam dos mesmos valores que aprendemos
nas primeiras aulas, ligados à Modelagem Ágil.A seguir são apresentadas as práticas aplicadas no
XP:
O Jogo do Planejamento
Beck (2004) relata que é necessário determinar o escopo da próxima versão combinando
estimativas técnicas com prioridades do negócio. Quando acontecer algum problema que se
oponha ao planejamento, faça a atualização do planejamento.
Entregas Frequentes
As entregas devem levar em consideração os requisitos que têm maior valor para o negócio e
devem ser entregues no menor tempo possível. Deve ser considerado ainda que a entrega
somente faz sentido se ela for tratada como um todo, não adianta implementar somente meia
função para tornar o ciclo de entrega mais curso, nesse contexto não importa se será necessário
planejar um dois meses para cada ciclo de entrega (BECK, 2004).
Metáfora
Uma metáfora no XP representa o que chamamos na engenharia de software como arquitetura.
Cada projeto de software deve ser guiado por uma única metáfora abrangente, em algumas
situações é simplória, como o cálculo de pensão alimentícia é como uma planilha de cálculos. A
metáfora apenas ajuda os envolvidos no projeto a entenderem os elementos básicos do sistema e
seus relacionamentos (BECK, 2004).
Projeto Simples
Um projeto correto de software é aquela que executa todos os testes, não tem lógica duplicada,
expressa todas as intenções importantes para os programadores e tem o menor número possível
de classe e métodos. Cada parte do projeto deve justificar a sua existência e conter somente o
essencial.
Esse é um conselho que se opões ao que se ouve: “Implemente para hoje, projete para o
amanhã”. Caso você acreditar que o futuro é incerto e que você tem a possibilidade de mudar de
idéia sem grandes gastos, acrescentar funcionalidades baseando-se em especulações é loucura.
Somente faça acréscimos daquilo que você precisar (BECK, 2004).
Testes
Qualquer aspecto ou função do programa que não tenha um teste automatizado simplesmente não
existe. Os testes de unidade são escritos pelos programadores para que as operações do
programa estejam confiáveis. Os testes de funcionalidade são escritos pelos clientes para que ele
possa confiar que as operações dos programas estão sendo feitas de modo correto. Um programa
se torna mais confiável com o tempo a partir de seus resultados.
Não é necessário escrever um teste para cada método que for programado, apenas para os
métodos de produção que possam vir a falhar (BECK, 2004).
Refatoração
Os programadores sempre se perguntam se existe uma maneira de implementar uma função de
um programa a partir da alteração de um programa existente, fazendo que a adição dessa nova
função seja simples. Depois da adição eles se perguntam se há uma forma de simplificar o
programa, mantendo ainda todos os testes funcionando. Esse procedimento é chamado de
refatoração (refactoring).
Isso pode significar que em algumas situações será necessário um esforço maior para acrescentar
uma função. Entretanto, trabalhando dessa forma, você poderá garantir que a adição de uma
próxima função será realizada com um esforço aceitável e todas as demais também Entretanto,
você não conseguirá a refatoração com especulações, você irá refatorar realmente aquilo que for
preciso. Em situações de código duplicado será possível a refatoração (BECK, 2004).
Programação em Pares
Todo código deve ser construído por duas pessoas em uma única máquina. Nesse contexto
existem dois papéis em cada par. Um dos componentes deve assumir o teclado e o mouse o outro
terá o papel de pensar mais estrategicamente se a abordagem como um todo irá funcionar, se
outros casos de testes podem não funcionas ou se existe uma maneira de simplificar todo o
sistema para que um problema simplesmente desapareça.
Nesse contesto, um par que trabalha junto pela manhã, à tarde pode vir a formar novo par com
outro e assim por diante. A programação em pares é dinâmica. É recomendável que sempre esteja
uma pessoa experiente com uma menos experiente, mas isso não é uma restrição e sim uma
situação desejável. Na realidade, qualquer pessoa do time deverá servir com o parceiro (BECK,
2004).
Propriedade Coletiva
Antigamente, todos poderiam alterar todos os códigos. Isso fazia com que os códigos se
tornassem complexos e extensos, gerando várias inconsistências. Para controlar essa situação,
surgiu a propriedade individual, onde os programadores se tornavam proprietário de determinados
códigos e se algum programador identificasse que era necessária alguma alteração no código, o
mesmo deveria conversar com o proprietário do código e convencê-lo de que aquela
implementação era necessário. Isso poderia ser urgente e algumas vezes o proprietário do código
não estava disponível para conversar.
No XP, todas as pessoas são responsáveis por todo o sistema. Nem todas as pessoas conhecem
todas as partes bem, mas todos sabem um pouco sobre algumas partes do sistema. Se um par
que está trabalhando em uma determinada implementação percebe uma oportunidade de
melhoria no código, eles devem ir em frente e melhorá-lo, se isso for facilitar as suas vidas (BECK,
2004).
Integração Contínua
Um código deve ser integrado e testado após algumas horas de codificação, sendo no máximo um
dia. O ideal é que tenha uma máquina dedicada, onde possa ser feita a integração. Nesse contexto
um par se encaminha para essa máquina com os produtos gerados e testa os módulos até que os
testes estejam 100% completos. Isso faz com que cada par reconheça o que está acertando e o
que está errando uma vez que se alguma coisa não está funcionando, o problema é da dupla,
posto que o par anterior deixou tudo funcionando corretamente. Daí resta a sensação de que
aquilo que foi feita talvez não seja o correto e em algumas situações pode ser que seja necessário
jogar tudo fora e começar novamente (BECK, 2004).
Semana de 40 horas
Nesse contexto, a regra do XP é simples – você não pode trabalhar uma segunda semana com
horas extras. Uma semana é aceitável que você trabalhe algumas horas extras. No caso da
seguinte você já tem um problema que não poderá ser resolvido somente com horas extras.
As pessoas devem estar dispostas e animadas a cada manhã e cansadas e satisfeitas todas as
noites. Numa sexta-feira estar cansado e satisfeito o suficiente pra se sentir bem com dois dias
para aproveitar com alguma coisa que não seja o trabalho. Isso permitirá que na segunda-feira as
pessoas estejam novamente dispostas e animadas.
Na realidade cada pessoa tem seus limites. Uns conseguem se manter concentradas por 35 horas,
outras com 45 horas. Traduzir uma semana em precisamente 40 horas não é importante.
Ninguém consegue aguentar 60 horas por semana durante muitas semanas. Todos têm os seus
limites (BECK, 2004).
Cliente Presente
O XP recomenda que um cliente real deve estar presente no Time, ficando disponível para
responder questões, resolver disputas e definir prioridades de menor escala. O cliente real é
aquele que realmente conhece o negócio e aquele que irá usar efetivamente o sistema.Nesse
contexto existe uma restrição que muitas vezes esse cliente real é também considerado prioritário
na área negociável e não consegue a liberação por essa razão.Os gerentes deverão optar em ter
um sistema que realmente atenda os seus negócios no menor tempo possível ou não, caso o
cliente real não possa ser liberado (BECK, 2004).
Padrões de Codificação
Tendo em vista a prática de codificação em pares e a troca constantes dos pares, é fundamental
que se adote um padrão, que deve exigir a menor quantidade de trabalho possível, seja
consistente com a regra de não existência de código duplicado, enfatizando a comunicação e que
deve ser aditado voluntariamente por todo o time (BECK, 2004).
7.3 Papéis no XP
Beck (2004, p. 137) diz que certos papéis precisam estar preenchidos para que um time eXtremo
funcione. Ele relata ainda que um “time esportivo funciona melhor quando são definidos papéis
pelos quais alguém é responsável. No futebol existe o goleiro, o zagueiro, o atacante, etc., no
basquete o armador, o pivô, o ala e outros”.
Programador
O programador é o coração do XP. O programador será o responsável pela estimativa de prazos
para os módulos a serem desenvolvidos. Eles devem trabalhar em pares para desenvolver e
implementar os códigos em produção. Serão responsáveis pelas correções dos erros e pelo
refatoramento dos códigos.Eles não devem criar ou alterar funcionalidades nem serem os
responsáveis pela elaboração dos testes de aceitação.
Cliente
Representa a outra parte importante do XP, da mesma forma que o programador sabe como
programar, o cliente sabe o que programar, não em princípio, mas o que ele está tão disposto a
aprender quanto o programador.Ser um cliente XP não é fácil, será necessário habilidades de
aprender como escrever boas histórias e é uma atitude que fará você ter sucesso.Ele deve ser o
responsável por definir prioridades, os testes de aceitação, validar os testes de aceitação e tirar
todas as dúvidas relacionadas ao negócio.Ele não deve ser o responsável pela implementação de
código e nem pela definição do tempo que uma tarefa levará para ser implementada.
Testador
O testador terá o papel de ajudar o cliente a escolher e escrever testes. Um testador XP não é
uma pessoa separada que se dedica a fazer o sistema falhar e a humilhar o programador, porém
ele deve executar os testes regularmente.Grande parte da responsabilidade pela realização dos
testes pertence ao programador XP.
Rastreador
O rastreador é considerado a consciência do time. Será dele a responsabilidade de dar
o feedback a respeito do que ocorre no desenvolvimento e sobre as estimativas. Por exemplo, as
últimas estimativas estavam 50% abaixo do que realmente foi gasto.Ele deve ser o historiador do
time, mantendo os registros dos testes funcionais, registro de defeitos e quem assumiu a
responsabilidade por cada um deles entre outros.
Treinador
O treinador é responsável pelo processo como um todo. Será responsável por chamar a atenção
das pessoas quando essas estiverem se desviando dos objetivos. Deve permanecer calmo quando
todos os outros estão em pânico.
Consultor
A ênfase na simplicidade reduz a necessidade de existência de especialistas no time. Quando o
time precisa de um especialista técnico, aí entra a figura do consultor. Provavelmente um
consultor não esteja acostumado ao trabalho eXtremo. Em algumas situações pode encarar a
maneira de trabalhar do time com um certo ceticismo. O time deve ser extremamente claro
quanto ao problema que necessita ser resolvido. O que não deve acontecer é que o consultor
resolva o problema sozinho. Será necessário compartilhar a solução, pois o time poderá necessitar
dessa informação técnica em problemas futuros.
O Chefão
Um chefão verá que o que o time mais quer é coragem, confiança e insistência ocasional para que
eles façam o que dizem fazer. Talvez no princípio seja difícil trabalhar com o time. Eles, com
certeza pedirão atenção neles frequentemente (BECK, 2004).
O DSDM Consortium é uma organização sem fins lucrativos e independente, responsável pela
propriedade e administraçãodo DSDM. A primeira versão do DSDM foi finalizada em janeiro de
1995 e publicada em Fevereiro de 1995. Em julho de 2006, foi publicadae disponibilizada para uso
a versão 4.2.
O DSDM – Dynamic System DynamicMethod, que traduzindo para o português podemos chamá-lo
de Metodologia de Desenvolvimento Sistema Dinâmico, é uma metodologia de desenvolvimento
rápido de aplicação que utiliza o princípio de ser iterativo e incremental contando com a
participação constante do usuário.
Seu objetivo segue a mesma linha da Metodologia Ágil, entregar os projetos no prazo e dentro dos
orçamentos previstos, contando com a participação efetiva dos usuários, com uma equipe que
tenha alto poder de decisão e que tenha condições de ajustar às mudanças ao longo de sua
caminhada.
Como uma extensão do desenvolvimento rápido de aplicativos, DSDM é aplicável a projetos que
tenham prazos e orçamentos apertados. O DSDM incentiva o desenvolvimento rápido de aplicado,
entretanto exige disciplina na sua aplicação uma vez que caso isso não aconteça, os riscos do
projeto podem ser aumentados.
O DSDM pode ser integrado e complementado com outras metodologias, como o Rational Unified
Process – RUP, eXtreme Programming – XP. Ele é um método ágil que tem semelhança no
processo e conceito com o Scrum. Ele emprega uma abordagem iterativa e incremental visando a
otimização, a previsibilidade e o controle os riscos do projeto.
8.2 Princípios do DSDM
O DSDM, segundo o DSDM CONSORTIUM (2008), está baseado em oito princípios:
1. Tenha foco nas necessidades do negócio (Focus onthe business need)
2. Entregue a tempo (Deliveron time)
3. Use a Colaboração (Colaborate)
4. Nunca comprometa a qualidade (Never compromisse quality)
5. Construa gradativamente a partir de bases sólidas (Build incrementallyfromfirmfoundations)
6. Desenvolva iterativamente (Developiteratively)
7. Comunique de forma clara e contínua (Communicatecontinuoslyandclearly)
8. Demonstre controle (Demonstratecontrol)
8.3 Ciclo de Vida do Projeto
Para que o desenvolvimento de software utilizando o DSDM tenha sucesso, são necessários alguns
pré-requisitos. Um dos pontos fundamentais é a interatividade da equipe do projeto com os
usuários finais e com a alta gerência. Um outro ponto é a decomposição do produto em partes
menores, possibilitando a abordagem iterativa. A seguir apresentamos a figura com o Ciclo de
Vida do Projeto e suas partes.
funcionando de forma eficaz e eficiente. Para isso são realizadas manutenções, melhorias e
correções de acordo com os princípios DSDM. A manutenção pode ser vista como contínuo
desenvolvimento com base na natureza iterativa e incremental do DSDM. Ocorre o
refinamento do projeto, a partir do momento que novas iterações são realizadas,
implementando mudanças solicitadas pelos clientes, agregado a novas funcionalidades.
8.4 Papéis no DSDM
No DSDM existe a definição prévia do papel de cada membro no projeto antes do início das
atividades do projeto, com suas respectivas responsabilidades. Os papéis existentes no DSDM são:
Timeboxing – É uma técnica utilizada pelo DSDM para estimar prazo, custo e a qualidade
permitindo descobrir falhas no sistema de forma que o usuário possa testá-lo. Essa é uma
característica forte do DSDM.
Testes – No DSDM os testes são realizados a cada iteração criando um sistema de boa
qualidade, onde o grupo escolhe a melhor forma de realizar o gerenciamento dos testes.
Grupos de Trabalho – É uma das técnicas do DSDM que permite que os envolvidos em
membro responsável para tomar certas decisões evitando que a gerência o faça.
Escolha a melhor tecnologia, incluindo ambiente de desenvolvimento, ferramentas de
gerenciamento, etc.
É necessária a definição do suporte necessário, gerando documentação.
Na próxima aula você estudará mais um modelo de Modelagem Ágil, o FDD – Feature Driven
Development.
de um processo.
A existência de bons processos na retaguarda permite que a equipe se dedique ao alcance
dos resultados.
São indicados ciclos de vida mais curtos para cada iteração no desenvolvimento de sistemas.
de software.
A metodologia não tem o foco específico na programação ou no modelo e sim aproveitar,
com bom senso utilizar o que existe de melhor nos dois mundos.
O time da FDD deve estar entre 16 e 20 membros, podendo ser composta de equipes bem
maiores.
A cada duas semanas espera-se que seja entregue produtos úteis, tangíveis e funcionais.
Existe um planejamento detalhado e um guia utilizado para a medição do produto a ser
desenvolvido.
Possuí rastreabilidade e relatórios com incrível precisão.
Realiza um monitoramento detalhado dentro do projeto, contando com resumos de alto nível
necessidades do mercado.
9.3 Práticas
Utiliza oito técnicas que são conhecidas como “boas práticas” para o desenvolvimento de sistemas.
entrega por funcionalidade busca garantir que o projeto produza aquilo que os clientes
necessitam, uma vez o o desenvolvimento é direcionado a partir dos requisitos funcionais
que agregam valor ao negócio e particionados em partes menores.
Propriedade de Classe (Individual class ownership) – Cada programados é responsável por
uma ou mais classes e o grupo de classes fica a cargo do programador. A adoção dessa
estratégia gera nos desenvolvedores o aumento do senso de responsabilidade sobre os
códigos produzidos e minimiza problemas quando se trabalha com muitos desenvolvedores
realizando modificações ao mesmo tempo nos códigos.
Equipes por Funcionalidade (Featureteams) – A montagem das equipes devem ser feitas
artefatos que compõem o projeto deve ser verificada de acordo com as características do
projeto.
Papéis – Cargos e responsabilidades – No FDD existem vários papéis que os membros
da equipe podem assumir. O mesmo papel pode ser assumido por vários membros e cada
membro pode assumir vários papéis simultaneamente.Dentro de cada categoria os papéis
podem ser atribuídos a vários participantes para multiplicar uma função ou compartilhar
responsabilidades.
9.4 Papéis
Os papéis são divididos em três grupos:
atividades diárias do projeto resolvendo problemas que poderão ocorrer com a equipe.
Programador chefe (Chief programmer) – Programador com maior experiência.
cliente ou qualquer pessoa que conheça bem o domínio do problema. Sua tarefa é
informar as funcionalidades que deverão ser atendidas pelo software e entender como
os requisitos estão sendo desenvolvidos.
Gerente do domínio (Domain manager) – Conduz os peritos de domínio a resolver as
requisitos do sistema.
Instaladores (Deployers) – Responsáveis por converter dados existentes ao formato
As três primeiras são feitas no início do projeto instituindo um planejamento de nível médio, as
duas últimas são repetidas iterativamente para construir o planejado.
Os cinco processos FDD são bem definidos e detalhados e são realizados de forma integrada:
Desenvolver um Modelo Abrangente (DMA) – É uma atividade inicial que abrange todo
projeto, para identificar as funcionalidades que satisfaçam aos requisitos, formando assim a
lista categorizada de funcionalidades, decompondo funcionalmente o domínio (negócio) em
áreas de negócio, atividades de negócio e funcionalidades.
Planejamento por Funcionalidade (PPF) – É uma atividade inicial que abrange todo o
funcionalidade, para produzir uma função com valor para o cliente (funcionalidade).
Os donos das classes implementam.
O código passa por testes e inspeção.
O código é promovido à versão atual (build).
9.6 Informações Suplementares do FDD
A seguir são apresentadas outras informações importantes a respeito do FDD.
funcionais.
Oferece vantagens dos métodos prescritivos (rigorosos), pois implementa o conceito
Engenharia de Software.
Pode ser feita uma combinação de Scrum, XP e FDD. O Scrum para o gerenciamento, o
Nesta aula você estudou sobre a metodologia FDD e a sua aplicabilidade no desenvolvimento de
sistemas. Na próxima aula você estudará mais três metodologias ágeis. Até lá!
Aula 10 - Outras Metodologias
Nas aulas anteriores você navegou sobre diversas Metodologias Ágeis para desenvolvimento de
sistemas. Esta é aúltima aula e nela você estudará superficialmente sobre mais três metodologias
ágeis, o ASD – Agile Software Development, a Integração Contínua e o Crystal Clear.
Ao final desta aula espera-se que você tenha conhecido mais três metodologias ágeis e a forma
como aplicá-las no desenvolvimento de sistemas.
Boa aula!
10.1 ASD – Agile Software Development
Jim Highsmith trabalhou vários anos com metodologias prescritivas e chegou à conclusão que não
eram eficientes para empresas modernas, cujo ambiente de desenvolvimento é extenso e
imprevisível. Em ambiente com essas características fica mais propício para a colaboração para
lidar com as adversidades, tendo em vista que a inovação éa nova boa prática.
Por esse motivo Highsmith enfatiza em lidar com a parte mais complicada do desenvolvimento
adaptativo, que é o processo de colaboração e aprendizado dentro do projeto.
10.1.1 ASD –Características
Iterativo e incremental
Sistemas grandes e complexos
Arcabouço para evitar o caos
Cliente sempre presente
Desenvolvimento de aplicações em conjunto (Joint Application Development – JAD)
10.1.2 Ciclo de Vida
Especular (Speculate)
Fixa prazos e objetivos.
Define um plano baseado em componentes.
Colaborar (Collaborate)
Construção concorrente de vários componentes.
Aprender (Learn)
Repetitivas revisões de qualidade e foco na demonstração das funcionalidades
projeto.
Baseado em componentes (Component-based)
Construir o sistema em pequenos pedaços
Iterativo (Iterative)
Desenvolvimento em cascata (Waterfall) só funciona em ambientes bem definidos e
conjunto (JAD)
Facilitador (Facilitator)
Liderar e planejar as sessões
Escriba (Scribe)
Efetuar anotações
Cliente (Customer)
Sempre presente
Gerente de Projetos (Project Manager)
Desenvolvedores (Developers)
10.2 Crystal Clear
Segundo Fowler (2005), Alistair Cockburn tem se envolvido com esta metodologia desde o início
dos anos 90. A sua abordagem não é igual à maioria dos demais metodologistas. Em vez de
construir agrega a experiência pessoal com a procura ativa de entrevistas em projetos visando
verificar o seu funcionamento. Ele ainda não está preocupado em alterar os seus pontos de vista
partindodas suas descobertas.
A família Crystalsl compartilha uma orientação humana com o XP, mas a sua centralidade nas
pessoas é realizada de forma diferente. Segundo Fowler (2005), Alistair parte da consideração de
que as pessoas não têm preferência em seguir um processo disciplinado. O XP é baseado em uma
alta disciplina e a metodologia Crystal explora uma metodologia menos rígidae que apesar dessa
flexibilidade ainda pode ter sucesso, conscientemente trocando a produtividade pela facilidade de
execução do projeto. Apesar da metodologia Crystal sermenos produtiva que o XP, mais pessoas
poderão segui-la, devido à sua maior flexibilidade.
Fowler (2005) relata ainda que a metodologia coloca bastante peso nas revisões de cada iteração,
encorajando as pessoas a evoluírem os produtos gerados. Ela parte do pressuposto que o
desenvolvimento iterativo está lá para identificaros problemas mais cedo possível, e permitir então
às pessoas corrigi-los. Isto coloca uma ênfase muito grande nas pessoas e nomonitoramentodo
seu processo afinando-o à medida que desenvolvem.
Métodos da família
Crystal Clear
Crystal Yellow
Crystal Orange
Crystal Red
Qual usar?
A escolha de qual método aplicar vai de acordo com cada projeto, dependendo do seu tamanho e
sua criticidade.
Crystal Clear
A metodologia Crystal Clear é um dos tipos da metodologia Crystal. Cada projeto é moldado em
função do processo utilizado para atender os projetos, levando em consideração três fatores: a
criticidade do projeto, a prioridade do projeto e a carga de comunicação.
Método Crystal Clear
O método Crystal Clear é destinado a projetos em que a equipe é composta por, no máximo, seis
pessoas e seu risco é classificado como D(baixo custo). Cada incremento gerado no projeto,
executado sob esse método, tem duração de dois a três meses. Asespecificações e o projeto são
feitos informalmente, através de esboços e anotações.
Princípios
Segundo Siqueira (2003), os princípios do Crystal Clear são:
Comunicação interativa face a face é o canal mais barato e rápido para intercâmbio de
informações.
O excesso de peso do método é custoso.
Times maiores precisam de métodos mais pesados.
A maior cerimônia é apropriada para projetos com maior criticidade.
Aumentando a retroalimentação (feedback) e comunicação é reduzida a necessidade de itens
intermediários entregues.
Disciplina, habilidade e entendimento contra processo, formalidade e documentação.
Pode-se perder eficiência em atividades que não são o gargalo do processo.
Siqueira (2003) relata ainda que o interessante dos métodos Crystal é que esse método não
possuí aparência de métodos não ágeis. Apesar de terem seus princípios e seus valores
claramente alinhados ao manifesto ágil, eles apresentam elementos(papéis, documentação,
artefatos, etc.) que são normalmente podem ser vistos em métodos, talcomo o Processo
Unificado. Essa característica permite que os métodos Crystal possam ser mais facilmente
utilizados por uma equipeque adota o XP.
Características
Políticas: As políticas adotadas no método Crystal Clear compreendem a entrega incremental a
cada dois ou três meses, participação direto do cliente, testes automatizados, participação de dois
usuários para validação dos incrementos e revisão dos processos através de workshops, o
processo é rastreado por pontos que consistem em entrega de versões ou decisões importantes.
Artefatos: os artefatos adotados são os planos de liberação de incrementos e do sistema para
validação e entrega, cronograma para a verificação dos usuários e entrega, esboço do projeto e da
interface do sistema bem como notas necessárias, código executável, casos de teste, casos de uso
e descrição das funcionalidades e código de migração caso necessário.
Vantagens
Problemas de integração são detectados no mesmo dia em que são criados.
Aviso rápido de código quebrado ou incompatível.
Testes unitários para todas as alterações são executados imediatamente.
Disponibilidade constante da versão “atual” para testes.
O Impacto imediato da integração de código incompleto ou com erros é os desenvolvedores
Cenário típico
Um cenário típico de integração continua geralmente inclui os seguintes passos:
relacionadas ao atribuído tarefa, ela corre uma construção privada (que integra as mudanças
de o resto da equipe) e depois comete suas mudanças para o controle de versão repositório.
2° Passo – Logo após um commit ocorre, o servidor de CI detecta que as mudanças no
versão.
CI Server
O servidor de CI monitora periodicamente o repositório de controle de versão a fim de verificar
mudanças no repositório, recuperaos arquivos de origeme executa buildscript ouscripts. Além
disso, os servidores CI geralmente fornecem um painel conveniente, onde resultados da
construçãosão publicados.Embora seja recomendado, um servidor CI não é necessário pararealizar
a integraçãocontínua.Você pode escrevero seuspróprios scripts personalizados.
Existem várias ferramentas que podem ser utilizadas para esta tarefa. Entre as mais utilizadas
temos a Cruise Control, Hudson e BuildBot – todas são open-source. Existem ferramentas menos
complexas, tais como Make, Rake, Ant e Maven e Buildoutque podem ser utilizadas pra gerar
builds de forma mais simples. Essas últimas ferramentas se comparadas com as primeiras
ferramentas citadas, possuem mais funcionalidades podendo até enviar e-mails, realizar o
agendamento builds e até permitem comandar diferentes máquinas para que as builds sejam
executadas.
Build Script
Um conjunto de atividades realizadas para gerar, testar, inspecionar e implantar software.
Riscos
Falta de desenvolvimento.
Baixa qualidade de software.
Falta de visibilidade no projeto.
Atraso para descobrir defeitos.
Identificar – Identificar um processo que requer automação. O processo pode ser nas áreas
consistente.
Compartilhar – Ao utilizar um sistema de controle de versão, como Subversion, tornasse
Com esta aula você encerrou seus estudos sobre as metodologias ágeis para desenvolvimento
rápido de software. Nada impede que você se aprofunde mais nessas metodologias acrescentando
mais conhecimentos na sua “Caixa de Ferramentas Pessoal”. Esperamos que você possa aplicar
as três novas metodologias apresentadas nessa aula no desenvolvimento de sistemas.
Algumas dessas metodologias não são amplamente aplicadas e divulgadas no Brasil, entretanto
isso não impede que as mesmas venham a fazer parte do rol de metodologias num futuro
próximo.