Upload
vannhu
View
212
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL DE SANTA CATARINA
CURSO DE GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO
Ana Marta Borgonovo
Roberta Santos da Silva
APLICAÇÃO DE METODOLOGIA
ÁGIL EM GRANDES EMPRESAS
COM PEQUENOS GRUPOS DE TI
Trabalho de Conclusão de Curso
Prof. João Candido Dovicchi, Dr.
Orientador
Florianópolis, 2007
Sumário
1Introdução........................................................................................................................7
1.1 Justificativa.............................................................................................................7 1.2 Objetivos.................................................................................................................8
1.2.1 Objetivo Geral................................................................................................ 8 1.2.2 Objetivos Específicos..................................................................................... 8
1.3 Metas...................................................................................................................... 8 1.4 Fundamentação Teórica..........................................................................................9 1.5 Problematização e Metodologia........................................................................... 10 1.6 Estrutura do Trabalho........................................................................................... 10
2Cenário.......................................................................................................................... 11
3Open Unified Process (OpenUP)...................................................................................12
3.1 Visão Geral........................................................................................................... 13 3.2 Princípios.............................................................................................................. 13
3.2.1 Colaboração.................................................................................................. 14 3.2.2 Equilíbrio...................................................................................................... 14 3.2.3 Foco.............................................................................................................. 15 3.2.4 Evolução....................................................................................................... 15
3.3 Sub-Processos.......................................................................................................16 3.3.1 Colaboração e Comunicação........................................................................ 17 3.3.2 Propósito.......................................................................................................17 3.3.3 Gerenciamento..............................................................................................17 3.3.4 Solução......................................................................................................... 18
3.4 Atores....................................................................................................................18 3.4.1 Analista.........................................................................................................18 3.4.2 Any Role.......................................................................................................19 3.4.3 Arquitetos..................................................................................................... 19 3.4.4 Desenvolvedor.............................................................................................. 20 3.4.5 Gerente de Projetos.......................................................................................21 3.4.6 Tester............................................................................................................ 21 3.4.7 Stakeholder................................................................................................... 22
3.5 As disciplinas do OpenUp/Basic.......................................................................... 22 3.5.1 Requisitos..................................................................................................... 22 3.5.2 Análise e Design...........................................................................................23 3.5.3 Implementação..............................................................................................23 3.5.4 Testes............................................................................................................ 24 3.5.5 Gestão de Projeto..........................................................................................24 3.5.6 Gestão de Configuração e Mudança.............................................................25
3.6 Ciclo de Vida do OpenUp/Basic.......................................................................... 25 3.6.1 Inception Phase Iteration.............................................................................. 26 3.6.2 Elaboration Phase Iteration...........................................................................28 3.6.3 Construcion Phase Iteration..........................................................................31 3.6.4 Transiction Phase Iteration........................................................................... 33
4Eclipse Process Framework...........................................................................................35
5EPF e OpenUP/Basic – Customização e Aplicação...................................................... 37
6Conclusão...................................................................................................................... 38
6.1 Sugestões para trabalhos futuros.............................................................................. 38
Referências Bibliográficas...............................................................................................39
Índice de Figuras
Ilustração 1: Sub-Processos do OpenUP/Basic............................................................... 16
Ilustração 2: Tarefas e Artefatos relacionados ao Analista............................................. 19
Ilustração 3: Tarefas e Artefatos relacionados ao Any Role........................................... 19
Ilustração 4: Tarefas e Artefatos relacionados ao Arquiteto........................................... 20
Ilustração 5: Tarefas e Artefatos relacionados ao Desenvolvedor.................................. 21
Ilustração 6: Tarefas e Artefatos relacionados ao Gerente de Projeto.............................21
Ilustração 7: Tarefas e Artefatos relacionados ao Tester.................................................22
Ilustração 8: Ciclo de Vida OpenUp/Basic.................................................................... 25
Ilustração 9: Inception Phase Iteration............................................................................ 26
Ilustração 10: Elaboration Phase Iteration.......................................................................28
Ilustração 11: Construcion Phase Iteration......................................................................31
Ilustração 12: Transiction Phase Iteration....................................................................... 33
Ilustração 13: Representação bi-dimensional da separação entre conteúdos do método e
o processo do Unified Process.........................................................................................36
Índice de Tabelas
Lista de Siglas
Capítulo 1
1 Introdução
Tendo em vista a evolução das grandes empresas e seus negócios nos últimos
anos, podemos perceber o quanto as pequenas e médias empresas estão estacionadas em
relação ao gerenciamento dos seus processos.
A grande dificuldade das empresas que já estão há mais tempo no mercado é a
de que provavelmente seus processos são/estão “engessados”.
A mudança é um risco que poucas estão dispostas a correr. Gerando então uma
insatisfação dentro da própria organização. Com isso, surgindo dois segmentos: um que
quer modernizar ou até criar processos e outro que prefere a “comodidade” e a
“segurança” da empresa, que já caminha dessa forma por toda a sua história.
Visando essas empresas, procuramos encontrar, nas metodologias existentes, a
melhor maneira de implantar gerenciamento de processos sem causar grandes abalos
nas convicções da organização.
1.1 Justificativa
Mostrar à empresa que mudanças são saudáveis, fazendo com que ela
mantenha-se no mercado de forma mais competitiva.
Em particular, as organizações pequenas e médias, não possuem recursos
suficientes para adotar o uso de processos pesados, ou mesmo não necessitam de tanto
formalismo. Por esta razão, muitas organizações não utilizam nenhum processo. O
resultado desta falta de sistematização na produção de software é a baixa qualidade do
produto final. Esse cenário pode ainda prejudicar prazos e custos predefinidos,
inviabilizando a futura evolução do software.
Existem vários processos de software definidos na literatura da Engenharia de
Software. É comum algumas organizações criarem seus próprios processos ou
adaptarem algum à sua realidade. Dentre as várias conhecidas, existem as metodologias
tradicionais e as ágeis: a primeira, orientada à documentação e a segunda, que procura
desenvolver software com o mínimo de formalismos.
1.2 Objetivos
1.2.1 Objetivo Geral
Apresentar uma metodologia, por meio do projeto Eclipse Process Framework
(EPF) e o processo de desenvolvimento Open Unified Process Basic (OpenUP/Basic).
Inserindo nesse contexto empresas novas, onde não há metodologias de
desenvolvimento, e empresas antigas, onde não se criou uma cultura de planejamento e
desenvolvimento organizado.
1.2.2 Objetivos Específicos
− Justificar a escolha do framework EPF e processo OpenUP/Basic.
− Demonstrar a importância do uso de uma metodologia, mesmo sendo um
processo de desenvolvimento enxuto.
− Mostrar às empresas que uma metodologia pode ajudá-las a crescer e a
colocar seus produtos em uma melhor posição no mercado.
− Criar uma cultura dentro da empresa, de que os métodos são para melhorar
os processos e qualificar seus produtos e/ou serviços.
1.3 Metas
Utilizar o projeto EPF e a ferramenta EPF Composer para demonstrar como a
modelagem de processos pode ser flexível. Para isso, serão apresentadas possibilidades
de customização do processo OpenUP/Basic às necessidades específicas de cada
empresa.
1.4 Fundamentação Teórica
O projeto EPF é um projeto open-source amparado pela fundação Eclipse,
sendo sua doação inicial feita pela IBM Rational no início do ano de 2006. Esse projeto
tem a intenção de tornar a engenharia de software mais acessível e promover um
desenvolvimento ágil e prático.
OpenUp/Basic é uma parte do processo Open Unified Process (OpenUP). É um
processo iterativo de desenvolvimento de software mínimo, completo e extensível [BAL
07]. Os princípios centrais do OpenUp/Basic são: colaboração, equilíbrio, evolução e
foco. Colaboração para alinhar os interesses dos envolvidos no processo e compartilhar
entendimentos. Equilíbrio para atender as prioridades dos stakeholders1 sem interferir
no bom andamento do projeto. Evolução para obter feedback e realizar melhorias. Foco
na importância de uma arquitetura de sistema bem definida.
Segundo Filev, os métodos pesados e lentos não mostraram muita utilidade no
atual mercado dinâmico dos negócios. Orçamentos apertados exigem mais resultados; a
burocracia nunca foi a melhor escolha em termos de retorno sobre investimento (ROI).
O poder dos métodos ágeis reside na colaboração, na flexibilidade e na dedicação ao
valor comercial do software, como refletido nos princípios fundamentais do Manifesto
Ágil: indivíduos e interações em processos e ferramentas, software funcional em
documentação abrangente, colaboração de clientes em negociação de contratos e
resposta a alterações no acompanhamento de um plano. Os métodos ágeis são
extremamente adequados à nova onda de empresas emergentes baseadas na Internet
(com freqüência chamadas de Web 2.0). O desenvolvimento de software ágil permite
que algumas dessas empresas emergentes obtenham mais por menos e iniciem projetos
significativos com pequenas equipes e orçamentos curtos. [FIL 07].
1 Parte interessada ou interveniente, refere-se a todos os envolvidos em um processo (clientes, colaboradores, investidores, fornecedores, entre outros).
1.5 Problematização e Metodologia
Buscamos uma metodologia que permita a constante evolução da empresa e
processos, sem deixar de lado a qualidade do produto.
As metodologias ágeis aplicam uma gama de boas práticas, guiadas por
princípios e valores que podem ser aplicados no dia a dia. Tiveram como principal
motivação criar alternativas para o modelo de desenvolvimento em cascata.
Devemos deixar claro que metodologia ágil é um suplemento de metodologias
existentes, é uma forma efetiva de se trabalhar em conjunto para atingir as necessidades
dos stakeholders no projeto. Não se trata de uma teoria acadêmica ou mesmo um ataque
à documentação. Ao contrário, aconselha a criação de documentos que realmente
tenham valor, torna o cliente parte da equipe de desenvolvimento e utiliza o modelo
incremental.
1.6 Estrutura do Trabalho
Este trabalho está organizado em seis capítulos, organizados da seguinte forma:
− Capítulo 2: apresenta um cenário onde o estudo proposto poderá ser
aplicado.
− Capítulo 3: apresenta uma visão geral do processo OpenUp/Basic. Serão
abordados os seus princípios, processos e subprocessos, atores, disciplinas
e atividades. O foco principal desse capítulo estará na disciplina de
Gerencia de Projetos.
− Capítulo 4: será apresentada a ferramenta EPF Composer, seus princípios
fundamentais e terminologia.
− Capítulo 5: com auxílio da ferramenta EPF Composer, serão apresentadas
possibilidades de customização do processo OpenUP/Basic ao cenário
apresentado.
− Capítulo 6: serão apresentadas as conclusões deste trabalho, considerações
finais e propostas de trabalhos futuros.
Capítulo 2
2 Cenário
Com o aumento no número de aplicações, se faz necessário a criação ou
adaptação de processos, que estejam aptos a enfrentar os problemas oriundos da
velocidade de mudanças, que ocorrem durante o desenvolvimento de um projeto e isso
envolve toda a estrutura da organização.
(...)
Desenvolvedores precisam entender os métodos e adquirir boas práticas de
trabalho. É necessário tornar bem difundidas práticas básicas: clareza na definição dos
requisitos, análise e design, implementação de casos de testes, gerenciamento e
modificação do escopo do projeto, entre outras [HAU 06].
Com essas boas práticas bem definidas, é necessário ainda, definir como elas
serão aplicadas durante o ciclo de vida do projeto. Com isso, começamos a entender o
que é um processo de desenvolvimento. Adquirir boas práticas de desenvolvimento,
saber onde aplicá-las durante o ciclo de vida do projeto, definir claramente os papéis e
tarefas de cada um, alcançar os objetivos dos stakeholders, entre outros aspectos [HAU
06].
Definindo um processo de desenvolvimento adequado é possível trazer à
equipe organização e objetivos claros a serem alcançados.
Capítulo 3
3 Open Unified Process (OpenUP)
O OpenUp foi desenvolvido pela IBM com base nos processos RUP e XP, tendo
como principal objetivo reunir as melhores características de cada uma dessas
metodologias. A estrutura do OpenUp é extremamente adaptável a cada projeto e
permite o desenvolvimento de extensões.
A duração média de um projeto é de três a seis meses e as equipes variam de três
a dez pessoas, com isso vemos que esse tipo de projeto não suporta uma metodologia
robusta como é o caso do RUP [JAC 99] e também utilizam todos os recursos
oferecidos pelo XP [BEC 99].
As equipes de pequeno porte devem manter o foco nas atividades do
desenvolvimento visando à entrega do produto no prazo requisitado pelos stakeholders.
“For companies and organizations evolving into on demand
businesses to compete in a world increasingly enabled by
multiple technologies and the disappearance of geopolitical
boundaries -- "flatteners," as Thomas Friedman terms these
enablers -- the creation, integration, modernization, extension,
and deployment of systems and software applications has
become critical. Today, information technology not only
supports the business but, in many organizations, actually
defines the business. We are witnessing the emergence of a new
computing paradigm, which IBM calls "business-driven
development"; BDD organizations fully integrate and align
flexible development processes with business process
development for different lines of businesses as well as IT
operations to improve business performance” 2.
3.1 Visão Geral
OpenUP é um projeto open-source que define um framework de processo de
desenvolvimento de software. O OpenUP/Basic é uma parte do OpenUP que apresenta
conceitos ágeis de desenvolvimento de software, definindo um conjunto fundamental e
simplificado de atores, tarefas e artefatos. Atores que irão executar tarefas e consumir
ou produzir artefatos.
Este processo de desenvolvimento de software é iterativo e pode ser definido
como:
− mínimo, apenas conteúdos fundamentais do processo são definidos;
− completo, o processo abrange todas as fases do ciclo de vida de
desenvolvimento;
− e extensível, o processo pode ser utilizado na forma como foi definido, mas
permite que novos conteúdos de processos sejam acrescentados para
atender de forma mais completa as características de um determinado
projeto [BAL 07].
3.2 Princípios
O OpenUp/Basic é caracterizado por quatro princípios fundamentais:
Colaboração, Equilíbrio, Foco e Evolução.
Esses princípios determinam as intenções gerais do OpenUP e criam os 2 Para as organizações envolvidas em negócios sob demanda, competir em um mundo repleto de
diferentes tecnologias e frente ao desaparecimento de fronteiras geopolíticas - “flatteners” segundo Thomas Friedman - a criação, integração, modernização, extensão e desenvolvimento de sistemas e aplicações de software, começam a ficar críticos. Hoje, a tecnologia da informação não somente provê suporte aos negócios como também, em muitas organizações, o define. Nós acreditamos na urgência de um novo paradigma de computação, que a IBM chama de “bissiness-driven-development”; organizações BDD interagem completamente e alinham processos de desenvolvimento flexíveis com processos de desenvolvimento de negócios, para diferentes linhas de negócios, bem como operações de TI, para melhorar o desempenho da organização. (HAUMER, 2005, tradução nossa).
fundamentos para a interpretação das regras, produtos e tarefas a serem cumpridas
pelos atores envolvidos no processo.
As próximas subseções detalham mais sobre cada um desses princípios.
3.2.1 Colaboração
Os envolvidos no projeto devem trabalhar em conjunto para que o produto final
esteja de acordo com as especificações iniciais. Os participantes devem manter o senso
comum em relação ao projeto, devem ter boa comunicação e serem encorajados à pró-
atividade.
O ambiente deve ser confiável e agradável, onde os colaboradores são incitados
a terem novas idéias e a compartilhá-las com a equipe. A manutenção desse ambiente é
de responsabilidade de todos.
As responsabilidades devem ser distribuídas a cada colaborador, mas todos
possuem responsabilidade sobre o andamento do projeto. Todos devem estar dispostos a
ajudar e serem ajudados nas suas atividades.
As pessoas têm habilidades diferentes e estas devem estar em constante
aprimoramento. É necessária trocas de experiências, pois isso influencia de maneira
positiva nas resoluções de problemas que possam surgir.
3.2.2 Equilíbrio
O equilíbrio no processo de desenvolvimento é atingido com o passar do
tempo. A equipe e os stakeholders irão aprender mais sobre o sistema que estão
desenvolvendo, e dessa forma, melhor balancear as prioridades.
As prioridades do projeto podem ser alteradas durante o processo de
desenvolvimento por vários motivos, entre eles, novas oportunidades, funcionalidades,
riscos.
Stakeholders e participantes do projeto devem convergir a um claro
entendimento e acordo do problema a ser resolvido. Pontos críticos do desenvolvimento
(custos, cronograma, etc.) e da solução devem ser bem definidos.
As equipes têm por desafio desenvolver soluções que maximizem as
experiências dos usuários. O equilíbrio está em escolher o melhor custo-benefício entre
os requisitos e as decisões de design na construção de arquitetura.
Algumas práticas podem ser usadas para atingir o melhor equilíbrio: conhecer
os stakeholders, separar o problema da solução, usar cenários e casos de uso para obter
requisitos, estabelecer e manter prioridades, gerenciar o escopo, etc.
3.2.3 Foco
Esse princípio tem como característica a importância de uma sólida definição
de arquitetura.
A arquitetura mal definida pode evoluir de forma ineficiente e autodestrutiva,
dificultando a evolução, reuso e integração com outros sistemas.
Uma arquitetura bem definida auxilia na comunicação dentro da equipe e
permite aos desenvolvedores elaborarem melhores decisões técnicas, garantindo assim
uma evolução eficiente do sistema.
As práticas associadas a esse princípio são: criar uma arquitetura baseada nos
conhecimentos da equipe; aumentar a abstração; adotar soluções baseado nos problemas
e não em tecnologias; aumentar a coesão; diminuir o acoplamento; incentivar o reuso,
etc.
3.2.4 Evolução
A equipe também evolui juntamente com o projeto. Encontrando melhores
maneiras de realizar as tarefas e buscando em conjunto, soluções para o dia-a-dia do
desenvolvimento.
Dentro desse princípio, a prática de desenvolvimento em iterações é uma
estratégia que permite retorno constante às necessidades do projeto e disponibiliza
funcionalidades aos stakeholders, aumentando a qualidade do produto.
Outra prática importante é o gerenciamento de riscos. Essa prática procura
evitar a descoberta tardia dos mesmos, dessa forma, problemas como: design de
arquitetura ruim, escolha errônea da tecnologia e implementação equivocada dos
requisitos, poderão ser contornados.
A gerência de alterações é também uma prática muito útil, pois são inevitáveis
mudanças durante o ciclo de vida do projeto. Alterações tardias afetam a qualidade do
produto e o esforço necessário para produzi-lo. Nesse ponto, a documentação é
essencial, para se verificar os possíveis impactos dentro do projeto.
3.3 Sub-Processos
OpenUP/Basic é organizado em quatro áreas de conteúdos ou sub-processos:
Ilustração 1: Sub-Processos do OpenUP/BasicFonte: OpenUp/Basic [OPE 07]
3.3.1 Colaboração e Comunicação
O sub-processo Colaboração e Comunicação é a fundação para o
OpenUp/Basic, refletindo a natureza colaborativa do processo. O processo contém todos
os papéis necessários ao projeto: Cliente, Analista, Colaborador, Arquiteto, Verificador,
Gerente de Projeto, entre outros[OPE 07]. Os membros da equipe fazem uma avaliação
da necessidade de cada papel e definem conjuntamente, as intenções dos stakeholders, o
desenvolvimento de soluções e o controle do projeto.
Os diferentes estilos e habilidades dos membros da equipe, fazem com que o
produto final esteja de acordo com as especificações iniciais. A criação de atividades
que mantenham o ambiente saudável se faz necessário, possibilitando assim o
entendimento do projeto, e o alinhamento das expectativas e interesses de todos os
participantes.
3.3.2 Propósito
Esse sub-processo trata da canalização dos propósitos dos stakeholders para a
equipe de desenvolvimento, assegurando-se que builds desenvolvidos sejam entregues
em conformidade com as expectativas dos mesmos. Isso é conseguido através da
comunicação do documento visão e de sua tradução por meio de casos de testes e
requisitos.
A maioria das tarefas e produtos de trabalho deste subprocesso, estão nas
disciplinas e domínios dos Requisitos e Testes
O Propósito tem como base a Colaboração e Comunicação. É escrito de forma
a possibilitar a organização modificá-lo de acordo com suas necessidades, sem impactar
em outros sub-processos
3.3.3 Gerenciamento
Está fundamentado na Colaboração e Comunicação, refletindo a natureza
colaborativa da gerência de projetos do OpenUp.
O Gerente não deve planejar sozinho uma iteração. Deve envolver toda a
equipe, garantindo que:
− o conhecimento de todos seja refletido dentro do planejamento;
− estimativas sejam realizadas por quem irá realizar o trabalho;
− a escolha das tarefas deve ser feita pelos próprios integrantes da equipe
conforme suas habilidades.
As tarefas e produtos de trabalho do Gerenciamento serão encontradas da
disciplina e domínio Gerenciamento de Projetos.
3.3.4 Solução
Fundamentada na camada de Colaboração e Comunicação, esse sub-processo
constitui a espinha dorsal do OpenUp, que afirma que todos os papéis são envolvidos no
desenvolvimento da solução, as configurações validadas são de responsabilidade de
toda a equipe e as melhores práticas para o desenvolvimento colaborativo auxiliam no
desenvolvimento de soluções [OPE 07].
3.4 Atores
3.4.1 Analista
O objetivo do Analista é capturar e definir prioridades nos requisitos recolhidos
dentro do problema apresentado pelos stakeholders.
As principais habilidades que o Analista deve apresentar são: experiência em
entender os problemas e oportunidades; habilidade para articular necessidades
associadas e oportunidades a serem resolvidas; boa comunicação; conhecimento do
negócio e da tecnologia, ou aprendizado rápido desses tipos de informações.
As principais tarefas são: Define Vision, Detail Requirements e Find and
Outline Requirements. Com base nessas tarefas, o Analista é responsável pelo
desenvolvimento dos seguintes artefatos: Actor, Glossary, Supporting Requirements,
Use Case, Use case Model e Vision.
Ilustração 2: Tarefas e Artefatos relacionados ao AnalistaFonte: OpenUp/Basic [OPE 07]
3.4.2 Any Role
A definição desse ator foi concebida com a finalidade de que, qualquer
membro da equipe possa realizar tarefas gerais: acessar a efetuar manutenção de
artefatos já presentes no sistema; enviar pedido de alteração do projeto; participar de
revisões e definições de prioridades e ser voluntário de uma iteração em particular.
Ilustração 3: Tarefas e Artefatos relacionados ao Any RoleFonte: OpenUp/Basic [OPE 07]
3.4.3 Arquitetos
A principal função do Arquiteto é coordenar a criação do design técnico do
sistema, e ser responsável pelo gerenciamento de decisões técnicas relacionadas ao
projeto, ou seja, o Arquiteto deve identificar e documentar todas as visões da arquitetura
do sistema, incluindo os requisitos, design, implementação e liberação do deploy.
O membro da equipe que desempenha essa função deve trabalhar juntamente
com o Gerente de Projeto no momento de recrutamento de pessoal e do planejamento
do projeto, ele também é responsável por reduzir riscos técnicos, gerenciar os anseios
dos stakeholders e garantir a comunicação entre os membros da equipe que devem ser
validadas e seguidas por todo grupo.
O Arquiteto deve ser uma pessoa com maturidade e agilidade para julgar
mesmo não tendo todas as informações à sua disposição, suas habilidades devem ser:
domínio de engenharia de software e solução de problemas; liderança; comunicação;
pró-ativo e deve seguir os objetivos. Esse membro deve estar pronto para realizar as
seguintes tarefas: Analyze Architectural Requirements, Demonstrate the Architecture e
Develop the Architecture. Deverá também ser responsável pela criação dos seguintes
artefatos: Architectural Proof-of-Concept e Architecture.
Ilustração 4: Tarefas e Artefatos relacionados ao ArquitetoFonte: OpenUp/Basic [OPE 07]
3.4.4 Desenvolvedor
Esse ator é responsável pelo desenvolvimento de parte do sistema e caso seja
necessário adaptá-lo à arquitetura, possibilitando a prototipação de user-interface e
efetuando a implementação, realizando os testes e fazendo a integração das partes da
solução.
Suas principais habilidades são definir e desenvolver solução técnica fazendo
uso das tecnologias adotadas no projeto; identificar e construir casos de testes para
efetuar a validação de comportamentos do sistema e descrever designs de forma clara
que facilite o entendimento dos demais membros da equipe. O Desenvolvedor deve ser
capaz de executar as seguintes tarefas: Design the Solution, Implements Developer
Tests, Implements the Solution e Run Developer Tests. Ele também criará e dará
manutenção nos seguintes artefatos: Build. Design, Developer Tests e Implementation.
Ilustração 5: Tarefas e Artefatos relacionados ao DesenvolvedorFonte: OpenUp/Basic [OPE 07]
3.4.5 Gerente de Projetos
O membro da equipe que desempenhar esse papel será responsável pelo
planejamento e avaliação de riscos do projeto, coordenação de iterações com os
stakeholders e manter a equipe focada no desenvolvimento para que sejam alcançados
os objetivos do projeto.
Suas principais habilidades são boa apresentação, comunicação e negociação;
forte liderança; ser capaz de ensinar, guiar e prestar suporte à equipe devido à sua
experiência com ciclos de vida; ser muito hábil em resolução de conflitos e técnicas
para solucionar problemas. O Gerente de Projetos deve estar apto para executar as
seguintes tarefas: Assess Results, Manage Iteration, Plan Iteration, e Plan Project. Ele
também será responsável pela criação e manutenção dos seguintes artefatos: Iteration
Plan, Project Plan, Risk List, Status Assessmentes e Work List.
Ilustração 6: Tarefas e Artefatos relacionados ao Gerente de ProjetoFonte: OpenUp/Basic [OPE 07]
3.4.6 Tester
Este é o ator responsável pelas atividades na área de teses, tem como função
identificar os testes e o modo como eles serão realizados, configurar, executar,
documentar e analisar os testes realizados, comunicar os resultados a toda equipe.
O tester deverá ter habilidade para diagnosticar e solucionar problemas;
conhecimento do sistema e sobre a arquitetura do sistema; se forem usados testes
automatizados, o tester deverá ter mais algumas habilidades, tais como, habilidade em
diagnóstico e debbugging; programação; conhecimento de ferramentas de automação de
testes e deverá ter treinamento apropriado para fazer uso da ferramenta de automação.
Ilustração 7: Tarefas e Artefatos relacionados ao TesterFonte: OpenUp/Basic [OPE 07]
3.4.7 Stakeholder
Esse ator representa grupos interessados cujas necessidades precisam ser
satisfeitas durante e ao término do projeto. Pode ser atribuído a qualquer pessoa que
será afetada (financeiramente) pelo resultado do projeto.
3.5 As disciplinas do OpenUp/Basic
3.5.1 Requisitos
Esta disciplina é responsável por obter, analisar, especificar, validar e gerenciar
os requisitos do sistema a ser produzido. Os principais objetivos são entender o
problema e as necessidades dos stakeholders; definir os requisitos, o escopo e as
interfaces do sistema; identificar as limitações técnicas da solução; prover a base para
planejamento da solução e a base inicial para estimar os custos e o cronograma. O
gerenciamento de requisitos acontece durante todo o ciclo de vida.
A disciplina de requisitos está relacionada com análise e design, que recebem
os requisitos como seu artefato de entrada; testes, que validam o sistema de acordo com
os requisitos; gerenciamento de configuração e mudança, que lhe dá os mecanismos
para o gerenciamento nas alterações e mudanças; gerenciamento de projeto, que planeja
o projeto relacionando requisitos e iterações de acordo com as prioridades estabelecidas.
3.5.2 Análise e Design
Esta disciplina agrupa tarefas que auxiliarão na criação do design que será
implementado pelos Desenvolvedores a partir dos requisitos do sistema, tendo as
seguintes tarefas, Analyze Architectural Requirements, Demonstrate the Architeture,
Design the Solution e Develop the Architecture.
Os principais objetivos estão entre transformar requisitos em design do
sistema, desenvolver uma arquitetura robusta para a solução e adaptar o design às
características do ambiente de desenvolvimento, essa disciplina está relacionada com
outras da seguinte forma: requisitos produzem artefatos primários para execução das
tarefas de Análise e Design; implementação, receberá os designs do sistema; testes
realizam validações do design do sistema; e gerenciamento de projeto, planeja o projeto
e cada iteração.
3.5.3 Implementação
Essa disciplina está associada ao desenvolvimento das iterações do sistema que
tem por objetivo verificar se as unidades técnicas utilizadas na construção do sistema
funcionam como especificadas e desenvolver o produto final. Possui as seguintes
atividades: Implement Developer Tests, Implement the Solution e Run Developer Tests.
A cada iteração as tarefas realizadas serão capazes de produzir builds mais
estáveis, assim, os Desenvolvedores estarão cada vez mais interados a arquitetura
planejada.
A implementação possui os seguintes relacionamentos: requisitos, definem o
que será implementado; análise e design, organizam a implementação; testes, validam a
implementação dos requisitos; gerenciamento de configurações e alterações, gerencia as
alterações realizadas nos builds do sistema; e gerenciamento de projeto, planeja qual a
funcionalidade será implementada em cada iteração.
3.5.4 Testes
A disciplina de testes é um conjunto de atividades necessárias para o
planejamento, implementação, execução e avaliação de testes do sistema. As atividades
relacionadas a essa disciplinas são Create Tests Cases, Implement tests e Run Tests,
seus objetivos principais são encontrar e documentar defeitos e garantir que o produto
funciona conforme o design, validar o design e as especificações de requisitos e garantir
que a implementação está de acordo com definição dos requisitos.
Esta disciplina está relacionada com as demais da seguinte forma, requisitos,
que relaciona quais requisitos serão testados; análise design, que ajuda na definição dos
tipos de testes a serem realizados; implementação, que disponibiliza os builds para
serem testados; gerenciamento de projetos, que descreve os planos de iterações e define
a missão correta para avaliação da iteração; gerenciamento de configuração e mudança,
os testes verificam se as alterações foram concluídas corretamente, as propriedades dos
testes são gerenciadas pelo gerenciamento de configurações.
3.5.5 Gestão de Projeto
O gerenciamento de projeto pode ser definido como a ligação stakeholders e a
equipe de desenvolvimento. É primordial que esse gerenciamento desenvolva ambientes
de alta produtividade onde stakeholders tenham confiança na habilidade do time de
desenvolvimento no momento da entrega do produto condizente a suas expectativas e
que a equipe do projeto entenda essas necessidades, produzindo, assim, softwares de
qualidade.
Esse gerenciamento é formado por quatro tarefas: Assess Results, Manage
Iteration, Plan Iteration e Plan Project, que tem por objetivos principais manter o foco
da equipe no desenvolvimento e entrega do produto para avaliação do stakeholder, criar
ambiente produtivo, manter a equipe e os stakeholders informados sobre o andamento
do projeto, acompanhar os riscos e adaptação do projeto e priorizar a seqüência de
trabalhos.
3.5.6 Gestão de Configuração e Mudança
O Gerenciamento de Configurações é a habilidade de manter versões dos
artefatos e suas configurações consistentes com os objetivos citados. Gerenciamento de
Alterações refere-se ao gerenciamento de modificações relacionadas ás configurações
dos artefatos apresentados.
Esse processo possui como objetivo manter um conjunto consistente dos
produtos dos trabalhos realizados através de sua evolução, manter builds consistentes do
software, prover formas eficientes de adaptar-se as mudanças e problemas e replanejar o
trabalho e prover dados para avaliação de progresso.
3.6 Ciclo de Vida do OpenUp/Basic
Ilustração 8: Ciclo de Vida OpenUp/BasicFonte: OpenUp/Basic [OPE 07]
O ciclo de vida apresentado é um processo de desenvolvimento de software,
baseado no OpenUp/Basic, definido para suportar equipe de pequeno porte e que
trabalham em um projeto durante três a seis meses. As finalidades desse processo são:
oferecer guias para projetos de pequena escala; permitir aos Gerentes de Projeto a
criação dos planos de projeto baseados nas estruturas de trabalho propostas; permitir
que os Gerentes de Projeto tracem metas baseados nos objetivos; permitir que os
membros da equipe compreendam como executar seu trabalho para alcançar os
objetivos do projeto; fornecer um processo completo da entrega que sirva de exemplo
para definir processos alternativos [OPE 07].
3.6.1 Inception Phase Iteration
Ilustração 9: Inception Phase IterationFonte: OpenUp/Basic [OPE 07]
Este molde da iteração define as atividades (e papéis associados e produtos do
trabalho) executadas em uma iteração típica na fase do Inception. Cada atividade e
objetivos relacionados são descritos a seguir. O projeto começa com a suposição de que
o case do negócio já esteja criado, o Gerente de Projeto foi identificado, a equipe (pelo
menos para a primeira iteração) foi definida, o ambiente do desenvolvimento está
pronto para receber a equipe, e no processo a ser seguido é o processo da entrega
sugerido por OpenUP/Basic. O número e a duração de cada iteração do Inception irão
variar dependendo das necessidades do projeto.
− Initiate Project: esta atividade ocorre no começo da primeira iteração,
quando o projeto começa. O objetivo desta atividade é estabelecer a visão
para o projeto e o plano do projeto em uma elevação – em nível de
granularidade. Tendo como principais objetivos, estabelecer a visão e o
planejamento do projeto em um mais alto grau de abstração. É realizado no
começo da fase de Inception na primeira iteração.
− Manage Iteration: tarefa desempenhada unicamente pelo Gerente de
Projeto, seu objetivo é gerenciar todas as atividades dentro de cada
iteração, acompanhando e comunicando aos stakeholders o status do
projeto, identificando riscos e “repriorizando” o trabalho. Esta atividade
está presente em todas as fases do ciclo de vida.
− Manage Requirements: atividade que tem como foco o mapeamento das
necessidades dos stakeholders e têm por resultado os requisitos do sistema,
lista de riscos e planejamento o cronograma do projeto. Ocorrendo durante
todo o ciclo de vida de desenvolvimento por meio da colaboração de todos
os membros da equipe juntamente com os stakeholders com o objetivo de
estabelecer um conjunto consistente, correto e passível de validação de
requisitos do sistema. Os objetivos dessa tarefa são obter, especificar,
analisar e validar o conjunto esses requisitos.
− Determine Architectural Feasibility: essa atividade é realizada pelo
Arquiteto. Aqui são criados os protótipos de algumas possíveis arquiteturas
para o sistema baseados nos requisitos do projeto, o Arquiteto deverá
propor uma arquitetura de alto nível que esteja de acordo com as
funcionalidades e restrições do sistema, maximizando os benefícios aos
stakeholders.
3.6.2 Elaboration Phase Iteration
Ilustração 10: Elaboration Phase IterationFonte: OpenUp/Basic [OPE 07]
Este molde da iteração define as atividades (e papéis associados e produtos do
trabalho) executadas em uma iteração típica na fase do Elaboration. Cada atividade e
objetivos relacionados são descritos a seguir.
O objetivo dessa fase é estabelecer um baseline da arquitetura do sistema que
seja o suporte de todas as atividades seguintes do desenvolvimento, está focada nos ris-
cos relacionados à arquitetura do sistema. Esta fase acompanha o gerenciamento de ris-
cos juntamente com os requisitos, o cronograma, os custos e a arquitetura do projeto,
tendo como metas o entendimento mais detalhado dos requisitos; o design, implementa-
ção, validação e estabelecimento de baseline da arquitetura; tratamento de prioridades e
produção de cronogramas e construção de estimativas de custos mais precisos.
− Manage iteration: atividade desempenhada somente pelo Gerente de
Projeto. Seu objetivo é o de gerenciar todas as atividades que compõem
cada iteração, fazendo a monitoração e a comunicação do status do projeto
aos stakeholders, essa verificação, em alguns projetos, pode ser feita em
reuniões diárias, que permitem uma compreensão mais precisa de como o
trabalho em uma iteração está progredindo, caso seja necessário a equipe
efetua as devidas correções para alcançar o objetivo planejado. Essa
atividade está presente em todas as fases do ciclo de vida.
− Manage requirements: essa atividade ocorre durante todo o ciclo de vida
de desenvolvimento, é necessária a colaboração de todos os membros da
equipe e dos stakeholders para juntos estabelecerem o conjunto consistente,
correto e passível de validação de requisitos do sistema. Os objetivos gerais
dessa atividade são obter, especificar, analisar e validar esse conjunto de
requisitos. Durante a fase Elaboration, as exigências podem ainda ser
capturadas e esboçadas enquanto as necessidades do cliente são levantadas,
as exigências de alto risco ou de arquitetura são mais detalhadas e suas
informações são usadas como entrada para a iteração atual e são
importantes para o planejamento da iteração seguinte.
− Define the architecture: o principal propósito dessa atividade é a definição
da arquitetura que possibilita a implementação dos requisitos de alta
prioridade, dando uma base sólida e resistente onde são desenvolvidas as
funcionalidades. Essa atividade está presentes em todas as iterações da fase
de Elaboration. Durante todas as iterações o Arquiteto deve identificar os
pontos em comum entre os diferentes requisitos, definir estratégias para
obter as exigências relacionadas à qualidade e observar e comunicar as
decisões arquiteturais.
− Develop solution for requirement within context: os objetivos dessa
atividade são design, implementar, testar e integrar em um determinado
contexto, a solução para um requisito. O contexto é especificado quando o
Desenvolvedor recebe o requisito, seu foco pode ser em uma camada, em
um componente, entre outros. Essa atividade é instanciada em diferentes
épocas, para cada tarefa do desenvolvimento dessa iteração. O objetivo
principal é um sistema executável que forneça a qualidade e a
funcionalidade incrementais para as exigências específicas dentro do
contexto especificado.
− Validate build: essa atividade é repetida durante todo o ciclo de vida do
projeto. O objetivo principal desta atividade é validar o incremento atual do
sistema de encontro às exigências alocadas a ele, criando e executando
testes que validem as funcionalidades desenvolvidas de acordo com os
requisitos do sistema.
− Ongoing tasks: esta atividade inclui as tarefas que acontecem durante toda
a iteração, mas não é necessariamente parte de um plano. Criada com a
finalidade de “acomodar” outras tarefas, essa tarefa é executada por
qualquer membro da equipe em qualquer fase do ciclo de desenvolvimento.
3.6.3 Construcion Phase Iteration
Ilustração 11: Construcion Phase IterationFonte: OpenUp/Basic [OPE 07]
Este molde da iteração define as atividades (e papéis associados e produtos do
trabalho) executadas em uma iteração típica na fase do Transiction. Cada atividade e os
objetivos relacionados são descritos a seguir. Sua estrutura de trabalhos é semelhante à
Elaboration Phase, pois suas atividades são executadas em paralelo. Nesse nomento a
arquitetura deverá estar consolidada, devendo ter somente requisitos de baixo impacto
para serem implementadas, as funcionalidades serão testadas e validadas tendo como re-
sultado builds mais completos.
O Gerente de Projeto terá seu foco direcionado para a redução dos custos e ge-
renciamento e análise da eficiência da equipe. Devem ser contemplados dois objetivos
principais, desenvolvimento de produtos completos e minimização de custos de desen-
volvimento e atingir o paralelismo no desenvolvimento.
− Manage iteration: esta atividade é executada durante todo o ciclo de vida
do projeto. O objetivo desta atividade é identificar riscos cedo o bastante
para contorná-los, para estabelecer os objetivos para a iteração, e para dar
suporte à equipe do desenvolvimento para alcançar estes objetivos. Um dos
objetivos dessa atividade é a liberação de uma versão beta do sistema aos
stakeholders.
− Manage requirements: esta atividade é repetida durante todo o ciclo de
vida. Seu objetivo é compreender e dar prioridade as necessidades da parte
interessada e a exigências associadas para o sistema. Os requisitos
prioridade mais baixa são detalhados e repassados à equipe de
desenvolvimento.
− Develop solution: tendo como objetivo principal um sistema executável
que forneça qualidade e funcionalidade especificadas dentro do contexto do
projeto, essa atividade tem como foco a implementação de requisitos de
níveis média a baixa prioridade.
− Validate build: atividade que tem por meta a liberação de versão beta do
sistema ao final da iteração. Ela é repetida em todo o ciclo de vida do
projeto, validando a atividade do incremento da iteração.
3.6.4 Transiction Phase Iteration
Ilustração 12: Transiction Phase IterationFonte: OpenUp/Basic [OPE 07]
O propósito dessa fase é a de assegurar que todas as funcionalidades estarão
contempladas na entrega do produto. Tem como principais objetivos avaliar, por meio
de testes, se o produto atende as expectativas o cliente; os stackhoders validam o
deploy, aprender com as lições desse projeto para aplicar nos projetos futuros. Nessa
fase as maiorias das atividades acontecem de forma paralela, é avaliado o desempenho a
qualidade e a funcionalidade do produto.
− Manage iteration: tendo como objetivo a identificação de riscos e
possíveis alterações cedo o bastante para poderem ser solucionadas. É uma
atividade que se repete ao longo de todo o ciclo de vida do projeto, deve
estabelecer metas e dar suporte á equipe de desenvolvimento. Essa
atividade tem como foco a liberação de uma versão estável do produto,
permitindo a aprovação por parte dos stakeholders.
− Ongoing tasks: submissões de pedidos da mudança durante a fase da
Transition são trabalhadas diferentemente do que em outras fases. As
exigências novas serão raramente identificadas nesse estágio do ciclo de
vida do desenvolvimento, caso haja novos pedidos para o release, os
mesmos podem ser listados e alocados para uma liberação futura, quando
um novo ciclo de vida do desenvolvimento do software começar. Nesse
caso, as exigências serão esboçadas e detalhadas de acordo com os
requisitos da nova iteração.
− Develop solution for requirement within context: esta atividade é repetida
durante o ciclo de vida do projeto, em paralelo com as demais atividades,
para cada atividade do desenvolvimento dessa iteração. Um sistema
executável que forneça qualidade e funcionalidade incrementais é o
principal objetivo dessa atividade, cumprindo as exigências especificadas
dentro do contexto do projeto. Os erros que possam ter sido apresentados
em outras iterações deverão ser corrigidos e validados antes de ser efetuado
o deploy.
− Validate build: o objetivo principal dessa atividade é validar o incremento
atual do sistema tendo em vista as exigências alocadas a ele. Essa atividade
é repetida durante todo o ciclo de vida do projeto e é executada em paralelo
com as demais atividades. É feito a verificação da implementação dos
requisitos e atestado a estabilidade da versão.
Capítulo 4
4 Eclipse Process Framework
O EPF Composer é uma ferramenta de gerenciamento de processos que
possibilita um fácil aprendizado e métodos simples de autoria, customização e criação
de processos de desenvolvimento [HAU 06].
A IBM oferece uma versão comercial do EPF Composer chamada IBM Rational
Method Composer (RMC), que trabalha com o IBM Rational Unified Process (RUP)
[HAU 06].
Eclipse Process Framework é uma plataforma que se destina a engenheiros de
processos, líderes e gerentes de projeto ou qualquer responsável por manter e
implementar processos de desenvolvimento em organizações ou projetos individuais.
O EPF possui dois propósitos principais que buscam solucionar as seguintes
necessidades:
1. Prover aos profissionais de desenvolvimento uma base de conhecimento
intelectual onde seja possível criar, alterar, gerenciar e divulgar
conteúdos. Esse conteúdo inclui princípios, boas práticas, definições de
métodos, templates, procedimentos e regulamentações internas, material
de treinamento, entre outras descrições que auxiliem no desenvolvimento
do projeto. A vantagem da divulgação por essa ferramenta está no fácil
acesso pelos interessados no projeto: todo conteúdo gerenciado no EPF
Composer pode ser publicado em html e disponibilizado em um browser.
2. Prover aos responsáveis pelo processo de desenvolvimento uma
ferramenta de fácil customização de processos de acordo com as
necessidades de cada organização. EPF Composer disponibiliza
catálogos de processos pré-definidos que podem ser utilizados da
maneira como foram determinados, ou adaptados de acordo com as
características individuas de cada projeto.
A principal característica do Eclipse Process Framework é a separação dos
conteúdos de métodos3 de suas aplicações ao longo dos processos.
Conteúdos de métodos descrevem o que deve ser produzido, e são
independentes do ciclo de vida de desenvolvimento. Processos são os responsáveis por
inserir os conteúdos nesse ciclo, através de sequências semi-ordenadas, de forma
flexível.
A figura abaixo demonstra essa separação de forma mais clara. A
representação é a mesma já adotada pelo Unified Process (UP).
Ilustração 13: Representação bi-dimensional da separação entre conteúdos do método e o processo do Unified Process.Fonte: [HAU 06]
O conteúdo do método descreve como o trabalho de desenvolvimento é
realizado. Na figura, pode ser visualizado através de disciplinas ao longo do eixo y.
Esse trabalho então, é referenciado de forma sequencial, em processos, ao longo do eixo
x, representando uma linha de tempo. Esse é o ciclo de vida de um projeto, e expressa
quando uma determinada tarefa será realizada. Os gráficos no centro, representam uma
estimativa de esforço para cada disciplina [HAU 06].
3 Nomenclaturas, atores, tarefas, produtos de trabalho [HAU 07]
Capítulo 6
6 Conclusão
O trabalho proposto não tem intenção de tirar a importância das metodologias
tradicionais, apenas visa apresentar uma alternativa a empresas que desejam aumentar a
produtividade e qualidade, sem deixar de lado a definição e documentação dos
processos.
O propósito do projeto é justamente, a partir de uma metodologia com menos
formalismo, abrir portas para práticas sólidas de gerência e engenharia de software.
Dessa forma, a medida que a empresa cresce no mercado, seu processo de
desenvolvimento poderá acompanhar sua evolução.
6.1 Sugestões para trabalhos futuros
. Referências Bibliográficas
[BAL 07] BALDUINO, R., LYONS, B. OpenUP/Basic – A Process for Small and
Agile Projects. Disponível em <http://www.eclipse.org/epf/general/
getting_started.php>. Acesso em: 06/2007.
[BEC 99]BECK. K. Extreme Programing Explained: Embrace Change. Pearson
Education Canada, 1999. 224 p.
[BEE 07] BEEDLE, M. et al. Manifesto for Agile Software Development. Disponível
em <http://agilemanifesto.org>. Acesso em: 02/2007.
[CUN 07] CUNHA, C. E. A.. D. Utilizando OpenUp/Basic para Desenvolvimento de
Aplicações Web. 2007. 73 f. Trabalho de Conclusão de Curso (Graduação em
Ciência da Computação) – Universidade Federal de Pernambuco, Recife,
2007.
[ECL 07] ECLIPSE. Eclipse Process Framework project. Disponível em
<http://www.eclipse.com/epf>. Acesso em: 02/2007.
[ERU 07] ERUDIO. Erudio. Disponível em <http://www.erudio.com.br/component/
option,com_docman/task,cat_view/gid,20/dir,DESC/order,date/
limit,5/limitstart,0/>. Acesso em: 02/2007.
[FIL 07] FILEV, A. Adotando e se beneficiando de processos ágeis no
desenvolvimento de software no exterior. Disponível em: <http://
www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/Proc_Ageis.mspx>.
Acesso em: 02/2007.
[HAU 06] HAUMER, P. Eclipse Process Framework Composer Part 1: Key
Concepts. Eclipse, [S. l.], 15 dezembro 2005. Disponível em
<http://www.eclipse.org/epf/general/ getting_started.php>. Acesso em:
12/2006.
[HAU 07] HAUMER, P. IBM Rational Method Composer Part 1: Key concepts.
Eclipse, [S. l.], abril 2007. Disponível em <http://www.ibm.com/
developerworks/rational/library/dec05/haumer/>. Acesso em: 01/2007.
[IBM 07]IBM. IBM. Disponível em <http://www.ibm.com>. Acesso em: 02/2007.
[INF 07] INFOCOMP. Infocomp. Disponível em < http://www.dcc.ufla.br/infocomp/
artigos/v3.2/art02.pdf>. Acesso em: 02/2007.
[JAC 99] JACOBSON, I., BOOCH, G., RUMBAUGH, J., The Unified Software
Development Process. Addisson-Wesley, 1999. 512 p.
[NER 07] NERI, H. S. Notas de aula da disciplina Engenharia de Software
Utilizando Orientação a Objetos. Disponível em <http://dns.redes.unb.br/
material/ESOO/ Metodologias%20%C1geis.pdf>. Acesso em: 02/2007.
[OPE 07] OPENUP/BASIC. OpenUP/Basic published Web site. Disponível em
<http://www.eclipse.org/epf/downloads/openup/ openup_downloads.php>.
Acesso em: 06/2007.