Buscar

Desenvolvimento de Software Distribuído e Processos

Prévia do material em texto

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL 
FACULDADE DE INFORMÁTICA 
PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 
 
 
 
 
 
 
 
 
Curso de Mestrado 
 
 
 
 
 
 
Desenvolvimento Distribuído 
de Software e Processos de 
Desenvolvimento de Software 
 
 
 
 
 
 
Trabalho Individual II 
 
 
 
 
Rafael Prikladnicki 
 
 
 
 
Orientador 
Prof. Dr. Jorge Luis Nicolas Audy 
 
 
 
 
Porto Alegre, 30 de agosto de 2002. 
 ii
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
O que é o desenvolvimento de software? 
Uma arte, ciência, engenharia ou algo mais como um todo? 
Será que isto importa? 
Sim, isto importa, e importa para todos nós. 
Nossas ações e os resultados que são gerados podem ser diferentes, 
de acordo com a definição que for mais correta. 
Então, a idéia principal é: 
Todos nós precisamos que o nosso software seja desenvolvido 
da forma mais rápida possível e sem erros. 
Mas muito mais do que isso, 
nós precisamos sempre saber como a nossa equipe 
está desenvolvendo ao longo deste caminho. 
 
Alistair Cockburn 
 
 iii
SUMÁRIO 
LISTA DE FIGURAS........................................................................................... v 
LISTA DE TABELAS .......................................................................................... vi 
LISTA DE ABREVIATURAS E SIGLAS...................................................................vii 
INTRODUÇÃO .................................................................................................. 8 
1 Desenvolvimento Distribuído de Software (DDS) ............................................. 10 
1.1 Critérios que caracterizam o nível de DDS................................................ 13 
1.1.1 Distância física dos atores ............................................................ 15 
1.1.2 Distribuição da Equipe de Desenvolvimento..................................... 17 
1.2 Alguns Cenários de Desenvolvimento Distribuído de Software (DDS) ........... 18 
1.2.1 Cenário 1: Centro de Pesquisa em E-Business DELL/PUCRS............... 19 
1.2.2 Cenário 2: Centro de Desenvolvimento da Oikodomo Brasil ............... 20 
1.3 Fatores de Sucesso de Desenvolvimento Distribuído de Software (DDS)....... 21 
1.4 Sintetizando a Pesquisa sobre DDS ......................................................... 22 
2 Os Principais Processos de Desenvolvimento de Software ................................. 26 
2.1 A ISO e a IEC ...................................................................................... 26 
2.2 Norma ISO/IEC 12.207 (NBR ISO/IEC 12207) .......................................... 27 
2.2.1 Os Processos Fundamentais .......................................................... 28 
2.2.2 Processos de Apoio ...................................................................... 28 
2.2.3 Processos Organizacionais ............................................................ 29 
2.2.4 Limitações da NBR ISO/IEC 12207................................................. 30 
2.3 Rational Unified Process – RUP ............................................................... 31 
2.3.1 Análise Crítica............................................................................. 35 
2.4 Microsoft Solutions Framework – MSF ..................................................... 37 
2.4.1 Modelo de Gerência de Risco do MSF.............................................. 37 
2.4.2 Modelo de Equipe do MSF ............................................................. 38 
2.4.3 Modelo de Processo do MSF .......................................................... 39 
2.4.4 Análise Crítica............................................................................. 40 
 iv
2.5 Agile Software Development - ASD ......................................................... 42 
2.5.1 Análise Crítica............................................................................. 47 
2.6 Extreme Programming – XP ................................................................... 48 
2.6.1 Análise Crítica............................................................................. 54 
3 Análise Comparativa entre os Processos de Desenvolvimento ............................ 56 
3.1.1 Definição dos Critérios de Análise .................................................. 56 
3.1.2 Análise Comparativa .................................................................... 58 
CONCLUSÕES ................................................................................................ 62 
REFERÊNCIAS BIBLIOGRÁFICAS ....................................................................... 64 
 
 v
LISTA DE FIGURAS 
Figura 1 – Mesma localização Física. ................................................................. 15 
Figura 2 – Distância Municipal. ......................................................................... 15 
Figura 3 – Distância Regional. .......................................................................... 16 
Figura 4 – Distância Continental. ...................................................................... 16 
Figura 5 – Distância Global. ............................................................................. 17 
Figura 6 – Distribuição em sub-equipes. ............................................................ 17 
Figura 7 – Distribuição individual. ..................................................................... 17 
Figura 8 – Equipe de Desenvolvimento Centralizada. ........................................... 18 
Figura 9 – Ilustração do Cenário 1. ................................................................... 20 
Figura 10 - Ilustração do Cenário 2. .................................................................. 21 
Figura 11 – Fatores de Sucesso do DDS............................................................. 21 
Figura 12 – Os três atores envolvidos................................................................ 24 
Figura 13 – Critérios de definição do nível de distribuição do DDS. ........................ 24 
Figura 14 – Relação da distância com os processos de desenvolvimento. ................ 24 
Figura 15 – Estrutura da NBR ISO/IEC 12207. .................................................... 27 
Figura 16 – o Rational Unified Process - Fonte: [PRI 02a]..................................... 32 
Figura 17 – Gerência de Risco no MSF. .............................................................. 38 
Figura 18 – Os papéis definidos no MSF. ............................................................ 38 
Figura 19 – O modelo de processo do MSF. ........................................................ 40 
Figura 20 – Os elementos de um ...................................................................... 46 
Figura 21 – As três dimensões do escopo de um processo - Fonte: [COC 02] .......... 46 
Figura 22 – A instância de um escopo................................................................ 47 
Figura 23 – As quatro dimensões do XP. ............................................................ 49 
Figura 24 – O XP é visto como um conjunto de peças. ......................................... 50 
 
 vi
LISTA DE TABELAS 
Tabela 1 – Os critérios definidos para a análise comparativa. ................................ 58 
Tabela 2 – Análise comparativa. ....................................................................... 61 
 
 
 
 vii
LISTA DE ABREVIATURAS E SIGLAS 
ACM - Association for Computing Machinery 
ASD – Agile Software Development 
DDS – Desenvolvimento Distribuído de Software 
IEC – International Electrotechnical Commission 
ISO – International Organization for Standardization 
MCS – Microsoft Consulting Services 
MSF - Microsoft Solutions Framework 
NBR – Normas Brasileiras 
OOPSLA - Object Oriented Programming, Systems, Languages and Applications 
PDTSD - Process Support Distributed Team-Based Software Development 
RUP – Rational Unified Process 
TI – Tecnologia da Informação 
XP – ExtremeProgramming 
 
 
 
8 
INTRODUÇÃO 
Hoje em dia, ao mesmo tempo em que a área da engenharia de software se 
desenvolve de uma forma cada vez mais rápida, é necessário desenvolver software de 
altíssima qualidade. Com o passar dos anos e durante a evolução desta área, é 
interessante observar como alguns dos princípios fundamentais desse 
desenvolvimento permanecem os mesmos de 30 anos atrás e como os desafios que os 
engenheiros de software encontram hoje são semelhantes aos existentes quando a 
engenharia de software ainda engatinhava. Após 30 anos, ainda temos que nos 
esforçar para desenvolver softwares confiáveis [PET 01]. 
Neste contexto, percebe-se cada vez mais a necessidade das organizações 
desenvolverem software tendo por base um processo bem definido. De acordo com o 
que foi escrito em [PRI 02b], um processo de software é representado por um modelo. 
Existem diversos modelos na área de desenvolvimento de software. Sendo assim, as 
empresas adotam um determinado modelo como referência, customizando-o e 
adequando este modelo de acordo com a sua realidade. Este modelo deve ser 
operacionalizado por meio de uma metodologia, estabelecendo basicamente a 
seqüência de atividades existentes e a relação entre elas, incluindo neste contexto os 
métodos e as ferramentas que dão suporte ao modelo, procurando sempre a 
qualidade total, tanto do processo como do produto final gerado seguindo-se o 
processo. 
Também se verificou em [PRI 02b] que existem diversos problemas e desafios 
ainda presentes no processo de desenvolvimento de software. Um dos problemas mais 
significativos é o planejamento, pois ele é o ponto de partida de qualquer atividade 
relacionada ao desenvolvimento de software. Considerando os desafios apresentados, 
um dos mais significativos envolve o processo de desenvolvimento de software 
 9
baseado em equipes e ambientes fisicamente distribuídos, ou seja, o Desenvolvimento 
Distribuído do Software (DDS). Hoje em dia as grandes organizações estão cada vez 
mais distribuindo seus processos de desenvolvimento de software ao redor do mundo, 
visando ganhos de produtividade, redução de custos, diluição de riscos e melhorias na 
qualidade. Ou seja, o software está ficando cada vez mais sofisticado, o processo de 
desenvolvimento de software está evoluindo de uma forma muito rápida e, além disso, 
se vê a necessidade de distribuir o desenvolvimento, trazendo muitos benefícios para 
as organizações. 
Por este motivo, o Trabalho Individual II tem como objetivo realizar um estudo 
aprofundado sobre o estado da arte do Desenvolvimento Distribuído de Software 
(DDS), suas características e definições, e dos principais modelos de processo de 
desenvolvimento de software existentes. Pretende-se analisar os diferentes cenários 
do DDS e descrever e analisar os seguintes modelos de processo: 
- o Rational Unified Process (RUP); 
- o Microsoft Solutions Framework (MSF); 
- o Agile Software Development (ASD); 
- o Extreme Programming (XP). 
Juntamente com a análise comparativa, pretende-se verificar que tipo de 
suporte cada um destes modelos de processo possui para um desenvolvimento 
distribuído de software. 
O capítulo 1 irá abordar a questão do desenvolvimento distribuído de software, 
analisando os diferentes cenários existentes. O capítulo 2 pretende descrever e 
analisar os principais modelos de processo de desenvolvimento software, identificando 
o estado da arte destes modelos. Por último, o capítulo 3 faz uma análise comparativa 
entre os processos analisados no capítulo 2, procurando sistematizar esta análise 
através de um critério de comparação previamente definido, e explicado no próprio 
capítulo. 
 
10 
1 Desenvolvimento Distribuído de Software (DDS) 
Ao longo dos anos, cada vez mais se percebe que o desenvolvimento de 
software nunca foi uma tarefa simples. Conforme foi abordado em [PRI 02b], viu-se 
que existe uma série de problemas e desafios inerentes ao processo de 
desenvolvimento de software. Entre os problemas encontrados, os projetos de 
software freqüentemente apresentam cronogramas atrasados, execução orçamentária 
abaixo do previsto e produtos defeituosos. Uma das razões para estas situações, 
especialmente para projetos grandes, está na coordenação das atividades da equipe 
de projeto e na manutenção do controle do projeto. 
Hoje em dia, gerenciar grandes projetos de desenvolvimento de software tem 
se tornado uma tarefa cada vez mais complexa. Não apenas por causa do crescimento 
dos projetos, mas também por que as equipes de projeto vêm se distribuindo no 
tempo e no espaço, inserido no conceito de globalização que a sociedade têm 
vivenciado nos últimos anos. Isto configura então o Desenvolvimento Distribuído de 
Software (DDS), onde algumas pessoas envolvidas no processo de desenvolvimento 
estão fisicamente distantes. 
Várias ferramentas e ambientes têm sido desenvolvidos ao longo dos últimos 
quatro anos para ajudar no controle e coordenação das equipes de desenvolvimento 
que estão inseridas neste tipo de ambiente. Muitas destas ferramentas estão focadas 
no suporte aos procedimentos de comunicação formal tais como elaboração de 
documentos, processos automatizados e outros canais de comunicação não 
interativos. Um estudo de caso feito por [KRA 95] concluiu que o desenvolvimento de 
software necessita de um suporte extensivo para a comunicação informal e interativa. 
Além disso, viu-se em [PRI 02b] que trabalhar com DDS talvez seja um dos 
maiores desafios que o atual ambiente de negócios apresenta do ponto de vista do 
 11
processo de desenvolvimento de software. Muitas empresas estão distribuindo seu 
processo de desenvolvimento de software em países como Índia e Brasil. Muitas vezes 
este processo se dá dentro de um mesmo país, em regiões com incentivos fiscais ou 
de concentração de massa crítica em determinadas áreas. As empresas buscam 
vantagens competitivas em termos de custos, qualidade ou flexibilidade na área de 
desenvolvimento de sistemas [PRI 02], além de ganhos de produtividade e diluição de 
riscos [McC 96]. Neste caso, ao optar por instanciar um ambiente de desenvolvimento 
distante fisicamente da sua sede, uma organização começa a encarar diversos 
desafios de adaptação, diferenças culturais, planejamento do trabalho, treinamento da 
nova equipe, entre outros. Sendo assim, surgem os conceitos de outsourcing e 
offshore outsourcing, e todos os desafios existentes no DDS ganham proporções 
maiores. 
Outsourcing é a prática de contratar uma organização externa para 
desenvolver um sistema, ao invés de desenvolver na sua própria sede (in-house) [McC 
96]. As organizações que utilizam outsourcing podem se especializar em uma 
determinada área, ter mais desenvolvedores para trabalhar em um determinado 
projeto e ter uma grande biblioteca de código reutilizável. A combinação destes 
fatores pode resultar numa significativa redução no tempo necessário para 
desenvolver um produto. Muitas vezes os custos de desenvolvimento também podem 
diminuir. Uma das opções do outsourcing que vem se tornando bastante popular ao 
longo dos últimos anos é o offshore outsourcing. Organizações offshore são empresas 
que estão localizadas em algum outro país, e que oferecem custos mais baixos de 
desenvolvimento. Além disso, também oferecem uma qualidade que é, no mínimo, 
equivalente à qualidade das organizações localizadas no próprio país [McC 96]. 
O desenvolvimento de ambientes tecnológicos, modelos e ferramentas para 
atuar neste tipo de ambiente é um desafio cada vez mais importante, tanto para a 
teoria na área de engenharia de software como para as empresas que enfrentam as 
dificuldades criadas por este tipo de ambiente. E é por isto que nos últimos anos 
diversos estudos e eventos têm dado uma grande importância para este assunto. 
 12
Em 2001, em uma conferência anual em programação, sistemas, linguagens e 
aplicações orientadosa objeto (OOPSLA1), promovida pela ACM (Association for 
Computing Machinery), um painel com alguns dos principais pesquisadores da área de 
desenvolvimento de software que estavam participando da conferência apresentou a 
seguinte questão: “Como é possível ter um desenvolvimento ágil se a equipe de 
desenvolvimento estiver fisicamente distribuída, cada um trabalhando na sua casa?”. 
Todos os “painelistas” foram mais ou menos pela mesma resposta, dizendo "We 
wouldn't even try!”, ou seja, “Nós nunca tentamos!” [DAD 02]. 
Além disso, neste mesmo painel foram citados alguns pontos relacionados com 
a questão apresentada e o cenário mundial de desenvolvimento de software naquele 
momento. O principal ponto discutido foi o de que diversas experiências envolvendo o 
desenvolvimento distribuído de software estavam sendo realizadas, mas nenhuma 
delas tratava de casos reais, incluindo as pressões de prazos, custo e escopo, tão 
comuns em projetos da área de software. Eram estudos basicamente acadêmicos, 
com o objetivo de aproximar os pesquisadores desta nova realidade, permitindo a 
ampliação de conhecimento nesta área. O que se sabia era que o DDS podia se 
transformar em um caminho real a ser seguido no futuro. Desde então, a comunidade 
científica está desenvolvendo estudos empíricos na área de DDS. 
Por este motivo, devido à multiplicidade de possibilidades existentes neste 
contexto de DDS, neste capítulo busca-se identificar os principais critérios que 
caracterizam um ambiente distribuído de desenvolvimento de software e seu nível de 
distribuição, além de identificar cenários que combinam alguns destes critérios e 
ilustram o DDS. Alguns destes critérios já existem, como resultado de trabalhos 
publicados em congressos internacionais, como o OOPSLA’01 ou ainda o workshop 
PDTSD’022. Outros critérios foram identificados através de um estudo aprofundado da 
 
1 OOPSLA - http://oopsla.acm.org/, ACM - http://www.acm.org. 
2 3o International Workshop on Process Support for Distributed Team-Based Software 
Development, no 6o World MultiConference on Systemics, Cybernetics and Informatics 
(SCI) - http://www.iiisci.org/sci2002. 
 13
realidade em que as empresas estão inseridas, considerando diversos cenários 
possíveis para o DDS. 
Estes critérios consideram a existência de três atores principais no processo, 
tendo papéis distintos uns dos outros, cada um com a sua importância. Estes atores 
são: 
 
Equipe de Desenvolvimento
Cliente
Usuário
DD
CC
UU 
A equipe de desenvolvimento representa todas as pessoas envolvidas no 
desenvolvimento de um determinado projeto, podendo também ser formada por um 
conjunto de sub-equipes. Esta equipe pode envolver pessoas responsáveis pela área 
de negócios, gerência de projetos, desenvolvimento, testes, controle de qualidade, 
responsáveis pelo suporte de ferramentas dentro do projeto, entre outros. O cliente é 
a pessoa física ou jurídica que solicitou e contratou o desenvolvimento de um 
determinado projeto. O usuário representa as pessoas responsáveis por fornecer 
todas as informações necessárias (requisitos) para o correto desenvolvimento do 
projeto e são responsáveis por utilizar o produto gerado. Às vezes, clientes e usuários 
podem ser as mesmas pessoas, representando os dois papéis simultaneamente. 
1.1 Critérios que caracterizam o nível de DDS 
Ao longo deste trabalho [ALT 98], [DAD 02], [EVA 00], [EVA 01], [BIU 02], 
[HAY 00] [McC 96] foram encontrados diversos critérios que, envolvendo os atores 
acima e combinados nas suas diversas possibilidades, podem caracterizar o nível de 
DDS. Os critérios encontrados são apresentados a seguir: 
- Distância física dos atores [DAD 02]; 
- Distribuição da equipe de desenvolvimento [DAD 02]; 
- Terceirização do desenvolvimento [McC 96]; 
- Diferenças culturais [DAD 02], [EVA 01]; 
 14
- Tamanho do projeto [DAD 02], [EVA 01]; 
Ao aprofundar-se a análise referente a estes critérios, concluiu-se que: 
- a terceirização (normalmente citada na literatura como outsourcing) não se 
caracteriza especificamente como um critério de DDS. Diversas empresas têm 
utilizado o conceito de outsourcing para representar uma estratégia de negócios onde 
uma unidade (subsidiária) da empresa localizada em outro país ou estado torna-se 
responsável pela atividade envolvendo o processo de desenvolvimento de software. 
Neste caso, o outsourcing não envolve uma terceirização no conceito tradicional, pois 
a unidade responsável pelo desenvolvimento é da própria empresa contratante. São 
inúmeros os exemplos de organizações que adotam esta estratégia na área de 
desenvolvimento de software (DELL Computers, Nestlê, HP, Bank of Boston, entre 
outras). Neste sentido, a questão da terceirização será abordada como uma 
característica das equipes participantes do processo de desenvolvimento e não como 
um critério de DDS. 
- cultura é, por definição, um fator multidimensional que pode afetar em 
diferentes maneiras a performance de projetos geograficamente distribuídos [EVA 01]. 
As diferenças culturais em um ambiente de DDS surgem das diferenças culturais 
entre os membros das equipes e entre os locais fisicamente distantes. Por isso, 
diferenças culturais são aspectos importantes para o DDS, pois diversos problemas 
podem ser causados por estas diferenças. Apesar de ser um critério importante, ele 
não se aplica para este estudo no sentido de ser um critério que caracterize a 
distribuição. As diferenças culturais são consideradas um fator crítico de sucesso no 
processo de DDS. 
- o tamanho de um projeto é um critério importante quando se opta pelo 
DDS, pois este critério pode indicar o tamanho da equipe, o volume de documentação 
existente e exigido, etc. Mas este critério também não se aplica para este estudo para 
efeito de caracterização do DDS e sim como uma dos fatores que podem levar uma 
empresa a optar por um desenvolvimento distribuído, assim como custo ou prazos. 
 15
Sendo assim, a seguir serão detalhados os critérios julgados convenientes para 
esta pesquisa, para efeito de caracterização de um ambiente de DDS. 
1.1.1 Distância física dos atores 
A distância física dos atores participantes do processo é um critério utilizado 
para definir o quão distantes estão os três atores envolvidos e suas respectivas áreas 
de negócio. Para este critério foram definidas cinco situações que ajudam a verificar 
qual o tipo de distância física existente e suas características principais. As situações 
para a distância física dos atores estão definidas da seguinte maneira: 
- Mesma localização física: esta é a situação onde a empresa possui toda a 
sua equipe instalada em um mesmo local (sala, prédio, universidade), considerando 
todos os atores envolvidos. A figura 1 ilustra esta situação: 
D
D
D
D
C
U
DD
D
D
D
C
U
 
Figura 1 – Mesma localização Física. 
- Distância municipal: esta é uma situação onde a equipe está localizada 
dentro da mesma cidade, estando fisicamente distante no máximo em 50km. Neste 
cenário a equipe pode se reunir quase que diariamente. A figura 2 ilustra esta situação 
mostrando uma equipe localizada dentro da cidade de Porto Alegre. 
D
C
U
DD
CC
UU
 
Figura 2 – Distância Municipal. 
 16
- Distância Regional: esta situação caracteriza-se por ter a equipe localizada 
dentro de um mesmo Estado ou de um mesmo País, estando distante entre três e seis 
horas de viagem de avião, em zonas de fuso horário igual ou vizinho. Nesta situação, 
a equipe pode se reunir em curtos intervalos de tempo. A figura 3 ilustra este cenário, 
mostrando uma equipe localizada dentro do estado do Rio Grande do Sul. 
DD
CC
UU
 
Figura 3 – Distância Regional. 
- Distância Continental: esta situação caracteriza-se por ter a equipe 
separada dentro de um mesmo continente, onde cada integrante deve estar em uma 
zona de fuso horário de no máximo 4 horas de diferença do outro.Nesta situação já 
se torna inconveniente uma reunião com toda a equipe de forma freqüente, mas 
algumas viagens podem ocorrer. A figura 4 ilustra este cenário, mostrando uma 
equipe de desenvolvimento localizada dentro do continente Europeu. 
DD
CC
UU
 
Figura 4 – Distância Continental. 
- Distância Global: esta situação caracteriza-se por ter a equipe separada, 
onde cada integrante está em algum lugar do mundo, de forma que o tempo de uma 
viagem para reunir toda a equipe em um lugar comum ultrapassa a duração de 24 
horas. Nesta situação, normalmente os membros da equipe se reúnem por algumas 
 17
semanas no início de um projeto. A figura 5 ilustra este cenário, mostrando uma 
equipe distribuída em 3 continentes (América do Norte, América do Sul e Ásia). 
DD
CC
UU
 
Figura 5 – Distância Global. 
1.1.2 Distribuição da Equipe de Desenvolvimento 
Ter toda a equipe participante do processo de desenvolvimento de software 
(cliente, usuário e equipe de desenvolvimento) distante fisicamente de acordo com 
alguma das cinco situações previstas no item anterior não indica que a equipe de 
desenvolvimento esteja distribuída. Sendo assim, um ambiente de desenvolvimento 
distribuído de software pode ter a equipe de desenvolvimento estruturada em duas 
situações principais: 
- Equipe de desenvolvimento distribuída: esta situação indica que a equipe 
de desenvolvimento pode ser distribuída de forma a trabalhar distante fisicamente. 
Esta distribuição pode ter cada integrante da equipe distante fisicamente, ou podem 
existir subequipes de desenvolvimento que estão distribuídas. As figuras 6 e 7 a seguir 
ilustram estas possibilidades: 
DD DD DD DD
 
DD
DD
DD
DD
 
Figura 6 – Distribuição em sub-equipes. Figura 7 – Distribuição individual. 
 18
- Equipe de desenvolvimento centralizada: esta situação indica que a 
equipe de desenvolvimento estará localizada no mesmo espaço físico, ou seja, 
trabalhará sempre fisicamente junta. A figura 8 ilustra a equipe de desenvolvimento 
localizada em um mesmo espaço físico. 
DD DD
DD DD DD DD
DD DD
 
Figura 8 – Equipe de Desenvolvimento Centralizada. 
Cabe salientar que a distribuição da equipe de desenvolvimento não leva em 
conta a localização dos outros atores, cliente e usuário. 
1.2 Alguns Cenários de Desenvolvimento Distribuído de Software (DDS) 
Um ambiente para o desenvolvimento distribuído de software (DDS) tem 
diversas possibilidades de configuração. Conforme foi apresentado no item 1.1, dois 
critérios podem auxiliar na definição do nível de distribuição existente. Cada critério 
possui um conjunto de situações, e a combinação de uma determinada situação de 
cada critério indica como a empresa realiza o desenvolvimento de um projeto de 
software, considerando os atores envolvidos. Um ambiente DDS pode ser visto sob 
duas perspectivas principais: 
- Considerando apenas a equipe de desenvolvimento; 
- Considerando a equipe de desenvolvimento, clientes e usuários. 
O nível de DDS a ser utilizado no processo de desenvolvimento de software 
depende da organização e do projeto a ser desenvolvido. Este processo de DDS pode 
ser implementado internamente na própria empresa, onde cliente, usuário e equipe de 
desenvolvimento são da própria empresa, ou envolvendo outras empresas, onde os 
clientes e os usuários não pertencem à empresa que desenvolverá o projeto. 
Baseando-se nestas perspectivas e nos critérios anteriormente citados, a seguir serão 
 19
apresentados dois cenários diferentes, baseados em casos reais, que possuem um 
desenvolvimento distribuído de software. O primeiro cenário corresponde a uma 
empresa que possui os três atores (equipe de desenvolvimento, cliente e usuário) no 
seu quadro de funcionários, cada um na sua área de negócio. Já o segundo cenário 
corresponde a uma empresa que possui apenas uma equipe de desenvolvimento, 
sendo que clientes e usuários são atores externos, que contratam o serviço de 
desenvolvimento de software desta empresa. 
Para efeito deste estudo, foram considerados dois centros de desenvolvimento 
de software, pertencentes a duas empresas localizadas em Porto Alegre (Dell 
Computers e Oikodomo Brasil). Estes centros de desenvolvimento são cenários reais 
de desenvolvimento distribuído de software, cada um com suas características 
específicas. Portanto, foram analisados: 
- o Centro de Pesquisa em E-Business DELL/PUCRS; 
- o Centro de Desenvolvimento da Oikodomo no Brasil; 
1.2.1 Cenário 1: Centro de Pesquisa em E-Business DELL/PUCRS 
Neste cenário, a empresa DELL Computers possui um centro de pesquisa e 
desenvolvimento de software voltado para e-business, sendo responsável, entre 
outras atividades, pelo desenvolvimento dos softwares de e-business corporativos da 
empresa, ou seja, sistemas que serão utilizados na própria empresa (sistemas para 
outros setores, automatização de determinadas atividades, entre outros). Sabendo-se 
dos dois critérios definidos no item 1.1, pode-se enquadrar este centro de pesquisa e 
desenvolvimento no seguinte cenário: 
Considerando que a empresa possui este centro em Porto Alegre e a sua sede 
está localizada nos Estados Unidos, os atores participantes do processo de 
desenvolvimento possuem uma distância continental, onde o cliente e/ou o usuário 
podem estar localizados nos Estados Unidos enquanto que a equipe de 
desenvolvimento está localizada em Porto Alegre. Além disso, existe uma 
possibilidade de distribuição da equipe de desenvolvimento, visto que o 
analista de negócios pode estar nos Estados Unidos, bem como a pessoa responsável 
 20
pela instalação do sistema, caso o sistema esteja sendo desenvolvido para ser 
utilizado em toda a empresa e sua instalação seja feita na sede, ou seja, nos Estados 
Unidos. Por último, alguns integrantes da equipe de desenvolvimento podem ser 
terceirizados, sendo contratados para um período específico de tempo, mas estes 
integrantes não estão distribuídos, estando fisicamente próximos de todo o resto da 
equipe. A figura 9 ilustra a configuração deste cenário de desenvolvimento. 
DD
CCUU
DD
DD
 
Figura 9 – Ilustração do Cenário 1. 
O que se percebe na figura 9 é que os atores estão fisicamente distribuídos, 
mas a equipe de desenvolvimento está localizada no mesmo espaço físico, tendo um 
integrante terceirizado. 
1.2.2 Cenário 2: Centro de Desenvolvimento da Oikodomo Brasil 
Neste cenário, a empresa Oikodomo Global Technologies possui um centro de 
desenvolvimento de software no Brasil, localizado em Porto Alegre, sendo responsável 
por todo o desenvolvimento de software da empresa num âmbito mundial, podendo 
desenvolver para qualquer cliente, dentro ou fora da empresa. Sabendo-se dos dois 
critérios definidos no item 1.1, pode-se enquadrar este centro de desenvolvimento de 
software no seguinte cenário: 
Considerando que a empresa possui este centro de desenvolvimento em Porto 
Alegre e a sua sede está localizada nos Estados Unidos, os atores participantes do 
processo de desenvolvimento possuem uma distância continental, onde o cliente e 
o usuário estão localizados nos Estados Unidos enquanto que a equipe de 
desenvolvimento está localizada em Porto Alegre e também nos Estados Unidos, 
caracterizando assim a distribuição da equipe de desenvolvimento, visto que o 
analista de negócios está nos Estados Unidos, enquanto que os outros integrantes da 
equipe de desenvolvimento estão em Porto Alegre. Por último, alguns integrantes da 
 21
equipe de desenvolvimento podem ser terceirizados, sendo contratados para um 
período específico de tempo, mas estes integrantes não estão distribuídos, estando 
fisicamente próximos de todo o resto da equipe. A figura 10 ilustra como ocorre o 
desenvolvimento de um projeto de software dentro desta empresa, neste exemplo 
específico. 
DD
CCUU
DD
DD
DD
 
Figura 10 - Ilustração do Cenário 2. 
O que se percebe na figura 10 é que, além de os atores estarem fisicamente 
distribuídos,existe a distribuição da equipe de desenvolvimento, onde existe um 
analista de negócios localizado nos Estados Unidos junto com clientes e usuários, e o 
restante da equipe de desenvolvimento está localizada em Porto Alegre, tendo esta 
equipe ainda um integrante terceirizado. 
1.3 Fatores de Sucesso de Desenvolvimento Distribuído de Software (DDS) 
A pesquisa realizada com relação à identificação dos critérios de DDS [ALT 98], 
[DAD 02], [EVA 00], [EVA 01], [BIU 02], [HAY 00], mostrou a existência de uma série 
de fatores envolvidos no processo. Alguns destes fatores foram utilizados para 
caracterizar o DDS e seu nível de presença (distância física e distribuição da equipe de 
desenvolvimento). Outros fatores identificados podem ser considerados como fatores 
críticos de sucesso dos processos de DDS. Desta forma, para o sucesso de um projeto 
em um ambiente de DDS, identifica-se um conjunto de fatores (figura 11): 
DDS
DIFERENÇAS
CULTURAIS
COORDENAÇÃO
COOPERAÇÃO
CONFIANÇA
COMUNICAÇÃO
 
Figura 11 – Fatores de Sucesso do DDS 
 22
- Comunicação: a comunicação em um DDS é a chave para o bom andamento 
e execução de um projeto. Já a falta de comunicação faz com que as equipes 
fisicamente distantes não saibam de informações básicas sobre o projeto, sobre a 
equipe de projeto, entre outros. Por isso, deve existir um fluxo de informações ágil e 
eficaz entre os membros da equipe; 
- Confiança: confiança em um DDS é de vital importância para o bom fluxo de 
informações entre as equipes distribuídas. Ter confiança é ter segurança e firmeza no 
trabalho da equipe como um todo, independente de quem faça este trabalho. Por isso, 
torna-se essencial a procura de mecanismos que propiciem o estabelecimento de um 
clima de confiança nas relações e ações entre os atores envolvidos; 
- Cooperação: cooperação em um DDS significa colaboração da equipe para 
um objetivo comum, ou seja, ajudar e pensar como equipe. Por isso, é fundamental a 
cooperação entre as equipes fisicamente distantes, pois de nada adianta uma boa 
coordenação e uma ótima comunicação se não existir cooperação entre os membros 
das equipes; 
- Coordenação: a coordenação em um DDS é um fator que visa dispor as 
atividades de forma ordenada baseando-se em processos e regras previamente 
definidos. Por isso, deve existir um eficiente suporte para a coordenação das 
atividades de desenvolvimento; 
- Diferenças Culturais: quando se desenvolve software em um cenário onde 
exista o DDS, uma das primeiras atividades deve ser verificar qual o nível de 
diferenças culturais existentes entre as equipes fisicamente distantes, pois às vezes 
determinadas ações podem ser mal interpretadas pelo simples fato de ser parte da 
cultura de uma equipe e não da outra. Estas diferenças devem ser identificadas e 
acomodadas entre os participantes do processo. 
1.4 Sintetizando a Pesquisa sobre DDS 
A partir da análise crítica do estudo realizado, buscou-se identificar os critérios 
a serem adotados na pesquisa com relação ao DDS visando o futuro do trabalho. Num 
 23
primeiro momento procurou-se definir situações onde exista o desenvolvimento 
distribuído de software. Sendo assim, chegou-se na seguinte definição: 
A caracterização de um ambiente de Desenvolvimento Distribuído de 
Software (DDS) ocorre sempre que pelo menos um dos atores envolvidos (equipe de 
desenvolvimento, clientes, usuários) estiver fisicamente distante dos demais. 
Ao considerar esta definição para DDS, verificou-se a necessidade de utilizar 
uma escala para definir o nível (grau) da distribuição existente. Verificaram-se 
inúmeras tentativas de representação, até chegar em uma representação tida como a 
mais adequada. Como resultado deste estudo, propõem-se os seguintes critérios que 
definem o nível de DDS. 
- Distância física inter-atores; 
- Distância física intra-atores. 
A distância física inter-atores é o critério que, considerando os três atores 
existentes (equipe de desenvolvimento, clientes e usuários), define a distância física 
existente entre estes atores. Por outro lado, a distância física intra-atores é o 
critério que define a distância física existente dentro de cada equipe de atores (por 
exemplo, dentro da equipe de desenvolvimento, ou do conjunto de usuários). Esta 
distância física, tanto inter-atores quanto intra-atores pode assumir qualquer uma das 
cinco possibilidades existentes no item 1.1.1. 
Apesar do DDS já estar caracterizado quando pelo menos um dos atores está 
distante fisicamente dos demais, o problema do DDS torna-se crítico somente a partir 
do momento que a distância física inter-atores ou intra-atores passa a ser regional. 
Isto se deve ao fato de que em uma distância no máximo municipal, reuniões entre 
todos os integrantes da equipe são facilmente agendadas e é relativamente fácil 
seguir um processo de desenvolvimento de software usual, como o RUP, MSF, 
Extreme Programming ou o Agile Software Development. Já a partir de uma distância 
regional, outros tipos de mecanismos são necessários para gerenciar as equipes e os 
projetos fisicamente distribuídos, tais como mecanismos de comunicação, 
 24
padronização, além de outras características importantes (citadas anteriormente neste 
estudo). 
Buscando-se uma representação gráfica para os critérios que definem o nível 
de distribuição do DDS, propõe-se primeiramente, na figura 12, uma representação 
para os três atores envolvidos na definição do nível de distribuição de DDS. 
ClientesUsuáriosEquipe deDesenvolvimento
DD CCUU
 
Figura 12 – Os três atores envolvidos. 
Lodo a seguir, utilizando os atores identificados, a figura 13 representa 
graficamente os critérios propostos para definir o nível de distribuição do DDS (de 
distância física inter-atores e distância física intra-atores) e a relação entre eles. 
ClientesEquipe de
Desenvolvimento
Usuários
DD CC
UU
Distância
Legenda
Inter-atores
Intra-atores Intra-atores
Intra-atores 
Figura 13 – Critérios de definição do nível de distribuição do DDS. 
Considerando a distância que pode existir inter-atores ou intra-atores e 
sabendo-se que o DDS torna-se crítico muitas vezes somente a partir da distância 
regional, é possível relacionar esta distância com os processos de desenvolvimento 
de software existentes hoje em dia, de acordo com a figura 14. 
Inexistente
Municipal
Regional
Continental
Global
Processos de Desenvolvimento de Software Usuais
Processos de Desenvolvimento de Software voltado para DDS
 
Figura 14 – Relação da distância com os processos de desenvolvimento. 
 25
É bom lembrar que os cenários do item 1.2 ilustram os critérios previamente 
definidos, utilizando para isto os atores existentes. Existem muitas outras 
possibilidades de configuração para o DDS, e não é difícil verificar nas empresas hoje 
em dia diversas possibilidades de distribuição do desenvolvimento de software, pois 
cada empresa tem suas próprias características e configura o desenvolvimento da 
forma mais alinhada às suas estratégias, seja ele offshore ou não. 
Além disso, é difícil encontrar na literatura um material que permita obter 
critérios e classificações genéricas para ambientes distribuídos. Neste sentido, muita 
pesquisa vem sendo feita e muitos autores têm estudado este assunto [EVA 00], [EVA 
01], [LAY 00], [HAY 00], mas o que se pode concluir é que o desenvolvimento 
distribuído de software (DDS) e o desenvolvimento offshore são processos bastante 
dinâmicos que podem ter inúmeras configurações e diversos cenários possíveis, dentro 
de uma mesma empresa ou apenas dentro de uma mesma área de uma empresa, 
dependendo do tamanho desta empresa e dos seus objetivos com este tipo de 
configuração. 
Neste estudo não se aprofundou a análise das razões que levam uma 
organização a adotar estratégias de distribuição do seu processo de desenvolvimento 
de software. Aspectos como custos, oportunidades estratégicas e políticas 
empresariaisdesempenham relevante papel neste sentido. 
Finalmente, existe uma forte tendência hoje em dia de as empresas 
distribuírem seu processo de desenvolvimento de software ao redor do mundo, 
aproveitando os incentivos fiscais e buscando vantagens competitivas em termos de 
custos, flexibilidade, qualidade e produtividade. Mas trabalhar com DDS é um grande 
desafio do atual ambiente de negócios, e ter mecanismos capazes de gerir e suportar 
este tipo de configuração é uma linha de pesquisa que está crescendo cada vez mais.
26 
2 Os Principais Processos de Desenvolvimento de Software 
Como foi descrito em [PRI 02b], não existe um único processo ou metodologia 
de desenvolvimento de software. Podem existir diversos modelos de processo de 
desenvolvimento, que por sua vez podem ter diversas metodologias que os 
operacionalizam. Por este motivo, neste capítulo o objetivo é descrever de forma clara 
e objetiva alguns dos principais modelos de processos de desenvolvimento de software 
existentes atualmente. Uma metodologia pode utilizar-se apenas de algumas partes 
de um modelo de processo. Além disso, é prática comum das empresas de utilizar 
contribuições de um conjunto de diferentes metodologias e modelos. 
A seguir serão descritos quatro modelos de processo de desenvolvimento de 
software: o Rational Unified Process, o Microsoft Solutions Framework, o Agile 
Software Development e o Extreme Programming. Mas antes de descrevê-los, 
considerou-se necessária a descrição de um norma ISO/IEC, a NBR ISO/IEC 12207, 
que é uma norma para organizar processos de ciclo de vida de software. 
2.1 A ISO e a IEC 
A ISO (International Organization for Standardization) e a IEC (International 
Electrotechnical Commision), juntas, formam um sistema unificado para padronização 
no âmbito mundial. Organismos nacionais que são membros da ISO ou da IEC 
participam do desenvolvimento de Normas Internacionais através de comitês técnicos 
criados pela respectiva organização para tratar de áreas específicas de atividades 
técnicas. Comitês técnicos da ISO e da IEC colaboram em campos de interesse mútuo. 
Outras organizações internacionais, governamentais ou não, mantém ligações com a 
ISO e a IEC e também participam deste trabalho de padronização [ISO 02], [IEC 02]. 
 27
2.2 Norma ISO/IEC 12.207 (NBR ISO/IEC 12207) 
A NBR ISO/IEC 12207 tem como objetivo organizar processos de ciclo de vida 
de software. Esta norma visa estabelecer uma estrutura comum para os processos de 
desenvolvimento, sendo uma referência para a indústria de software. Cabe ressaltar 
que esta norma não detalha metodologias, métricas e métodos, nem ambientes, 
ferramentas e técnicas utilizadas nos processos. Ela se concentra apenas na definição 
e descrição dos processos. Sendo assim, a seguir faz-se uma síntese da NBR ISO/IEC 
12207 apresentando como um processo pode e deve ser estruturado [ISO 98]. 
A NBR ISO/IEC 12207 está dividida em três conjuntos de processos, como 
mostra a figura 15: 
- Processos Fundamentais (Primary Processes); 
- Processos de Apoio (Supporting Processes); 
- Processos Organizacionais (Organizational Processes). 
Cada conjunto é formado por processos que possuem objetivos comuns que se 
destinam a um mesmo fim. Cada processo é formado por uma ou várias atividades. 
 
Figura 15 – Estrutura da NBR ISO/IEC 12207. 
A seguir será apresentada uma descrição dos conjuntos de processos. 
 28
2.2.1 Os Processos Fundamentais 
Os Processos Fundamentais visam descrever as partes indispensáveis de um 
ciclo de vida de software. Em termos gerais, são os processos que tratam desde a 
aquisição, passando pelo desenvolvimento, manutenção, até o fornecimento do 
software [ISO 98]. Estes processos são divididos em cinco processos menores, citados 
logo a seguir: 
- Processo de Aquisição (Acquisition): define as atividades e as tarefas de 
quem adquire um produto ou serviço de software através de um contrato. 
- Processo de Fornecimento (Supply): define as atividades e as tarefas do 
fornecedor de software. 
- Processo de Desenvolvimento (Development): define as atividades e 
tarefas das pessoas que desenvolvem um software. Isto inclui tanto um novo 
desenvolvimento quanto um desenvolvimento em um produto de software já 
existente; 
- Processo de Operação (Operation): define as atividades e tarefas de um 
operador de um sistema de software. O processo cobre a operação de software e o 
suporte operacional aos usuários. 
- Processo de Manutenção (Maintenance): define as atividades e tarefas 
do responsável pela manutenção de um produto de software, preservando a 
integridade do produto existente; 
2.2.2 Processos de Apoio 
Os Processos Fundamentais, como foi dito anteriormente, são processos 
indispensáveis, ou seja, sem eles não existe software. Mas geralmente esses 
processos necessitam de apoio, que pode ocorrer através de um conjunto de outros 
processos, com intenções específicas de oferecer suporte para partes distintas dos 
Processos Fundamentais. Tais processos são denominados de Processos de Apoio. 
Os Processos de Apoio são utilizados por outros processos com o objetivo de 
oferecer algum suporte a eles. Eles contribuem essencialmente com a qualidade e o 
sucesso do projeto de software e são divididos em oito processos menores, que são: 
 29
- Processo de Documentação (Documentation): processo definido para 
armazenar a informação produzida por um ciclo de processo, incluindo atividades de 
planejar, projetar, desenvolver, editar, distribuir e manter todos os documentos; 
- Processo de Gerência de Configuração (Configuration Management): 
processo definido para identificar, definir e criar uma linha de base para controlar 
modificações e liberação dos itens contidos em um software; 
- Processo de Garantia da Qualidade (Quality Assurance): provê um 
framework para garantir a qualidade e a aderência dos produtos de software com os 
seus requisitos e com o plano estabelecido para o desenvolvimento; 
- Processo de Verificação (Verification): provê a avaliação de um produto 
ou serviço de uma atividade qualquer. As verificações determinam quando os 
requisitos de um sistema estão completos e corretos. Também indicam quando as 
saídas de uma atividade irão satisfazer todos os requisitos ou condições impostas nas 
atividades anteriores. Este processo cobre a verificação de processo, requisitos, 
projeto, codificação, integração e documentação; 
- Processo de Validação (Validation): a validação determina se o sistema, 
ao seu final, esta de acordo com o que foi especificado para o seu uso. A validação 
não substitui outras avaliações; 
- Processo de Revisão Conjunta (Joint Review): provê um framework para 
interações entre o revisor e o revisado. As revisões ocorrem tanto no nível gerencial 
quanto no nível técnico; 
- Processo de Auditoria (Audit): provê um framework para uma auditoria 
formal nos produtos e serviços dos fornecedores; 
- Processo de Resolução de Problema (Problem Resolution): provê o 
mecanismo para solucionar problemas e tomar as corretas providências assim que os 
problemas foram detectados. 
2.2.3 Processos Organizacionais 
Os Processos Fundamentais, além de necessitarem de apoio para executar as 
suas tarefas, também precisam ser administrados. Para isto, existem os Processos 
 30
Organizacionais, cujo objetivo é a evolução da organização. Os Processos 
Organizacionais estão comprometidos com o melhoramento contínuo da estrutura, das 
pessoas e dos processos dentro de uma empresa. Estes processos geralmente são 
empregados fora dos domínios dos projetos, mas seus ensinamentos podem e 
devem contribuir para o melhoramento da organização como um todo [ISO 98]. Estes 
processos são divididos em quatro processos menores, a saber: 
- Processo Gerencial (Management): define as atividades genéricas e as 
tarefas de um gerente, tais como os processos de aquisição, fornecimento, operação, 
manutenção ou suporte;- Processo de Infra-Estrutura (Infrastructure): define as atividades 
necessárias para estabelecer e manter uma infra-estrutura base para o ciclo de vida 
de software; 
- Processo de Melhoria (Improvement): provê as atividades básicas que 
uma organização necessita para avaliar, medir, controlar, e melhorar o seu ciclo de 
vida de software; 
- Processo de Treinamento (Training): processo utilizado para identificar e 
fazer um plano de treinamento nos níveis técnico e gerencial para os recursos e 
habilidades que necessitam ser treinadas ou melhoradas. 
2.2.4 Limitações da NBR ISO/IEC 12207 
A NBR ISO/IEC 12207 não substitui a gerência e a engenharia disciplinada dos 
sistemas de software. Ela apenas provê um framework onde os processos, atividades 
e tarefas relacionadas com o software podem ser identificadas, planejadas e ações 
podem ser realizadas. Um ponto que deve ser lembrado é que a norma apenas 
contém um conjunto de blocos bem definidos (processos). A organização ou a pessoa 
que utilizar esta norma deve selecionar e agrupar estes processos, suas atividades e 
tarefas de tal modo que seja apropriado e efetivo para a organização e para o projeto. 
 31
2.3 Rational Unified Process – RUP 
O Rational Unified Process (RUP) é um framework para processos de 
desenvolvimento de software criado por Ivar Jacobson, Grady Booch, James 
Rumbaugh, auxiliado por outros nomes importantes, entre eles Philippe Kruchten, em 
1998, na Rational Software Corporation3. Suas principais características são um 
desenvolvimento iterativo e incremental, orientado a objetos, com foco na criação de 
uma arquitetura robusta, análise de riscos e utilização de casos de uso para o 
desenvolvimento. Ele cobre as seguintes práticas [KRU 00]: 
- Processo interativo de desenvolvimento de software; 
- Gerenciamento de requisitos; 
- Uso de arquiteturas baseadas em componentes; 
- Modelagem visual; 
- Verificação contínua de qualidade; 
- Controle de mudanças; 
O RUP foi desenvolvido para ser aplicável a uma grande classe de projetos 
diferentes e pode ser considerado como um framework genérico para modelos de 
processos de desenvolvimento. Isso significa que ele deve ser configurado para ser 
usado eficientemente. A configuração pode ser feita para empresas (para definir o 
processo padrão de desenvolvimento da empresa) ou mesmo para projetos específicos 
e normalmente envolve a remoção e/ou modificação de atividades do framework, 
instanciando assim alguns modelos de processo de desenvolvimento [ALC 02]. 
O RUP é composto por quatro fases bem definidas: concepção (inception), 
elaboração (elaboration), construção (construction) e transição (transition), 
cada uma com objetivos específicos. 
Na fase de concepção deve-se estabelecer o escopo e a viabilidade econômica 
do projeto. Na fase de elaboração o objetivo é eliminar os principais riscos e 
estabelecer uma arquitetura estável a partir da qual o sistema poderá evoluir. 
 
3 Rational Software Corporation – http://www.rational.com. 
 32
Na fase de construção um produto completo é desenvolvido de maneira 
iterativa até que esteja pronto para ser entregue aos usuários, o que ocorre na fase 
de transição, onde uma versão beta do sistema é disponibilizada. 
No final da fase de transição pode ser iniciado um novo ciclo de 
desenvolvimento para a evolução do produto, o que envolveria todas as fases 
novamente. Todas as fases são finalizadas com um milestone (marco) que verifica se 
os objetivos da fase foram alcançados. 
Cada fase pode comportar várias iterações e cada iteração, por sua vez, está 
organizada em workflows (figura 16) que descrevem o que deve ser feito em termos 
de atividades, responsáveis e os artefatos que devem ser gerados, além do fluxo das 
atividades. O RUP fornece modelos (templates) para cada artefato e guias (guidelines) 
para a execução de suas atividades. 
As iterações também são finalizadas com milestones, que devem controlar se 
foram cumpridos os objetivos específicos da iteração, como a modelagem de um 
grupo de casos de uso, por exemplo. 
 
Figura 16 – o Rational Unified Process - Fonte: [PRI 02a]. 
O RUP possui 9 workflows, 6 de engenharia de software e 3 de suporte Os 
workflows da engenharia de software são descritos sucintamente a seguir [RAT 98]. 
- Modelagem do Negócio (Business Modeling): um dos grandes problemas 
hoje em dia é que a comunidade da engenharia de software e a comunidade da 
engenharia de negócios não se comunicam como deviam. Com isso, os requisitos de 
negócio não são utilizados corretamente como entrada para o desenvolvimento de um 
determinado software. Por isso, a modelagem do negócio envolve o entendimento da 
 33
estrutura e dinâmica da organização cliente, garantindo que clientes, usuários e 
desenvolvedores tenham a mesma visão da organização para a qual será feito o 
desenvolvimento. Isto é feito através da documentação dos processos de negócio 
utilizando casos de uso de negócio. Mesmo assim, muitos projetos optam por não 
fazer a modelagem do negócio; 
- Requisitos (Requirements): em linhas gerais, envolve a definição dos 
requisitos do sistema e de como gerenciar escopo e mudanças de requisitos. O 
objetivo é descrever o que o sistema deve fazer e permitir que os desenvolvedores e o 
cliente concordem com esta descrição. Para isto são gerados alguns artefatos para 
documentar estes requisitos. Os requisitos podem ser funcionais (o que o sistema 
deve fazer) e não-funcionais (interface, idioma, etc.). Os requisitos funcionais são 
modelados utilizando-se casos de uso, enquanto que os requisitos não-funcionais são 
descritor em uma especificação adicional; 
- Análise e Projeto (Analysis and Design): envolve a tradução dos 
requisitos numa especificação que descreve como implementar o sistema. Nesta 
atividade a linguagem UML é utilizada para a modelagem do sistema. Esta atividade 
deve ser feita de forma a satisfazer todos os requisitos e permitir uma estrutura 
robusta com facilidade para possíveis mudanças no futuro. O resultado é um modelo 
de projeto e opcionalmente um modelo de análise, que servem como uma abstração 
do código a ser implementado e devem estar centrados na noção de arquitetura do 
sistema; 
- Implementação (Implementation): envolve o desenvolvimento de código. 
O objetivo da implementação é definir a organização do código, organizando os 
subsistemas em camadas, além de implementar as classes, objetos e componentes. 
Além disso, envolve o teste de unidade e o teste de integração. O RUP trabalha muito 
forte com o conceito de componentes e reutilização, facilitando a manutenção do 
sistema; 
- Teste (Test): envolve a verificação do sistema como um todo. Devem ser 
verificadas as interações entre os objetos, a integração entre todos os componentes 
 34
do software, a conformidade com todos os requisitos especificados e identificar e 
assegurar que todos os defeitos encontrados devem ser resolvidos antes de liberar o 
software para distribuição. O RUP propõe esta atividade de forma iterativa, ou seja, o 
teste deve ser feito ao longo de todo o projeto. Isto faz com que os erros sejam 
identificados o mais cedo possível, reduzindo os custos de possíveis correções. Além 
disso, testes automatizados devem ser feitos e três dimensões de qualidade devem 
ser consideradas: confiabilidade, funcionalidade e performance; 
- Distribuição (Deployment): envolve o empacotamento, distribuição e 
instalação do software, além de um treinamento para os usuários, assim como o 
planejamento e condução de beta testes. Também devem ocorrer migrações de dados 
existentes em sistemas antigos, além de ocorrer a aceitação formal por parte do 
cliente. Embora quase todas as atividades estejam concentradas na fase de transição, 
muitas delas podem e devem ser incluídas em fases anteriores, para preparar a 
distribuição do software assim que acabar o seu desenvolvimento.Os workflows de suporte compreendem atividades necessárias para a execução 
dos workflows de engenharia de software [RAT 98]. São eles: 
- Gerência de Projeto (Project Management): envolve o gerenciamento de 
riscos, planejamento e acompanhamento do projeto. Para isto, o RUP provê um 
framework para gerenciar os projetos de forma intensiva, com guias práticos de 
planejamento, controle de recursos humanos, execução e monitoramento dos 
projetos; 
- Gerência de Configuração e Mudanças (Configuration and Change 
Management): envolve o gerenciamento de todos os artefatos gerados durante o 
desenvolvimento do software. Este gerenciamento ajuda a evitar confusões nos 
artefatos gerados, bem como alterações simultâneas de um determinado artefato, ou 
ainda, evita que sejam geradas múltiplas versões de um artefato ou do próprio 
software. Este workflow descreve como se pode gerenciar um desenvolvimento 
paralelo, além de auxiliar na automatização do processo de construção. Por último, 
provê mecanismos para gerência de mudança, ou seja, como reportar os defeitos 
 35
encontrados ou alteração de requisitos, gerenciá-los ao longo do desenvolvimento e 
utilizar estes dados para gerar métricas e controlar a evolução do software ao longo 
do tempo; 
- Configuração do Ambiente (Environment): envolve a organização do 
ambiente de trabalho para a equipe do projeto e a configuração do RUP para o 
projeto. A organização do ambiente de trabalho envolve o suporte ao processo e às 
ferramentas que serão utilizadas. Além disso, este workflow fornece um Development 
Kit com guias, modelos e ferramentas necessárias para personalizar o processo. 
Aspectos tais como seleção, aquisição e funcionamento das ferramentas e a 
manutenção do ambiente de desenvolvimento não são considerados neste workflow. 
2.3.1 Análise Crítica 
O Rational Unified Process (RUP) é um framework para processos de 
desenvolvimento de software que permite a configuração e a instanciação de diversos 
modelos de processos. Para ser utilizado, uma tarefa a ser executada é justamente a 
configuração do que será utilizado. 
Em junho de 2001, Martin Fowler publicou no seu website a sua visão sobre o 
RUP. Ele disse que por várias vezes ouviu as pessoas falarem que utilizavam o RUP 
com um ciclo de vida de desenvolvimento tradicional (modelo cascata4). Para sua 
surpresa, ele sabia que a equipe responsável pelo RUP, entre eles Philippe Kruchten, 
eram totalmente adeptos ao desenvolvimento iterativo e ao ciclo de vida de 
desenvolvimento espiral5. Por isso, ele acha que os líderes do RUP devem enfatizar as 
reais e principais características deste framework para o desenvolvimento de software, 
para ele ser bem aproveitado. 
Como vantagens, pode-se dizer que este framework tem sido utilizado por 
diversas empresas desde o final de 1999, sendo aplicado em vários contextos de 
aplicações (e-business, sistemas corporativos, etc.) e em diferentes portes de projeto. 
Alem disso, é versátil e tem mais de 50% do seu uso focado no e-business e no 
 
4 Definições sobre o ciclo de vida tradicional podem ser encontradas em [PRI 02b]. 
5 Definições sobre o ciclo de vida espiral podem ser encontradas em [PRI 02b]. 
 36
planejamento [KRU 01]. Hoje em dia é um padrão de referência conceitual para as 
empresas que trabalham com desenvolvimento de software e é utilizado como base 
para outros processos, tal como o Microsoft Solutions Framework (MSF), que utiliza 
vários conceitos da RUP dentro do seu processo de desenvolvimento. 
Por outro lado, por ser um framework que possui diversas opções de modelos a 
serem configurados, é um processo que não diz exatamente o que deve ser feito, mas 
diz tudo o que pode ser feito. Por este motivo, dependendo da configuração e de como 
este framework é utilizado, ele pode se transformar tanto num processo que utiliza 
um ciclo de vida tradicional (cascata) ou num processo que utiliza um ciclo de vida 
espiral. Isto significa que, por um lado o RUP pode se transformar num processo 
pesado e seqüencial, e por outro lado por ser um processo dinâmico e ágil. Uma outra 
desvantagem é que o RUP pode utilizar apenas a linguagem UML para modelar os 
sistemas, pois ela faz parte do Processo Unificado, sendo um padrão do próprio 
framework. Por último, pode-se dizer que o RUP não oferece suporte adequado para 
gerência de comunicação nem para a gerência de recursos humanos, além de ser 
proprietário, ou seja, não é possível encontrar, gratuitamente, informações completas 
sobre todas as suas práticas. Existem relatórios e artigos escritos por diversos autores 
falando sobre o RUP, mas apenas adquirindo livros ou o próprio software de suporte 
ao RUP é possível ter um conhecimento completo, configurar e colocá-lo em prática. 
Concluindo, as empresas que utilizam o RUP precisam saber como absorver 
tudo o que ele pode oferecer em termos de desenvolvimento de software, para tornar 
os seus modelos de processo condizentes com a realidade em que o mundo atual está 
inserido e com os objetivos principais do RUP, que é o desenvolvimento iterativo e 
incremental. E hoje em dia se torna cada vez mais necessário que o RUP ofereça um 
conjunto de atividades que dê suporte para o Desenvolvimento Distribuído de 
Software, desde o planejamento, passando pela execução, até a avaliação dos 
softwares desenvolvidos pelas empresas. E no RUP, tudo o que existe hoje em relação 
ao DDS são apenas observações e comentários de alguns autores, mas nenhuma 
prática ou atividade formalizada. 
 37
2.4 Microsoft Solutions Framework – MSF 
Originalmente baseado nas “best practices” (melhores práticas) coletadas do 
desenvolvimento de produtos da Microsoft, o Microsoft Solutions Framework foi criado 
em 1994 para o Microsoft Consulting Services (MCS) promover a resolução de 
problemas de negócios utilizando-se de soluções técnicas. Devido ao sucesso 
conseguido, a Microsoft saiu um pouco da sua missão original e começou um plano de 
desenvolvimento e expansão. Hoje em dia existe um grande grupo que coleta as 
melhores práticas dos desenvolvedores, grupos de TI (Tecnologia da Informação), 
consultores, clientes e parceiros em todo o mundo. Estas práticas são analisadas e 
integradas ao MSF, que hoje é formado por conceitos, modelos, práticas e princípios 
utilizados pelo MCS, desenvolvedores, parceiros e consultores [MIC 99]. 
Segundo a Microsoft, a tecnologia não é a única peça em uma solução de 
sucesso. Pessoas, processos e a gerência de risco têm um papel importante no 
sucesso de um projeto, e são estes os três fatores considerados mais importantes 
dentro do MSF. Além disso, trabalhar e ter uma comunicação efetiva, alinhando as 
soluções técnicas com os requisitos de negócio são fatores críticos para o sucesso e 
são as vezes os mais difíceis de se alcançar [MIC 99]. 
A partir dos três fatores citados anteriormente, a seguir serão detalhados os 
modelos correspondentes a cada um destes fatores, que são considerados a base 
deste framework de desenvolvimento de software proposto pela Microsoft. Estes 
modelos procuram dar uma visão das melhores práticas com relação à gerência de 
pessoal, gerência de riscos, processos e tecnologia. 
2.4.1 Modelo de Gerência de Risco do MSF 
O MSF identifica as seguintes características em um risco: 
- O risco é inerente em todo o projeto, está sempre presente como uma 
possibilidade de acontecer, nunca como uma certeza; 
- O risco não é nem ruim nem bom, e não é algo a ser evitado. É apenas uma 
oportunidade identificada; 
 38
- O risco não é algo para se ter medo, mas sim algo para ser gerenciado, 
minimizando as incertezas e criando soluções para cada risco identificado. 
O modelo de gerência de risco do MSF utiliza três estratégias para gerenciar o 
risco: redução do risco, transferir o risco e prevenir o risco. Além disto, este modelo 
possui cinco passos onde a equipe é capazde identificar os riscos e decidir pela 
melhor ação (figura 17). 
Identificar Analisar
Controlar Planejar
Monitorar
Documento
de avaliação
de riscos
os 10+
Documento
de avaliação
de riscos
os 10+
Riscos
Identificados
1 2
3
4
5
Riscos
Liberados
Este processo gera um documento de avaliação de 
riscos que é constantemente atualizado
Este processo gera um documento de avaliação de 
riscos que é constantemente atualizado
 
Figura 17 – Gerência de Risco no MSF. 
A figura 17 mostra os cinco passos propostos pelo MSF para gerenciar os riscos 
de um projeto. Após serem identificados, os riscos são transformados em informação 
que podem ser analisadas pelos integrantes da equipe com objetivo de tomar algumas 
decisões. Depois é feito um planejamento para suportar as decisões tomadas no passo 
anterior, para então monitorar os riscos e passar a controlá-lo. 
2.4.2 Modelo de Equipe do MSF 
O modelo de equipe do MSF é composto por equipes pequenas e disciplinadas, 
onde cada membro tem o seu papel e suas responsabilidades bem definidas. Existem 
seis papéis neste modelo (figura 18) e a chave para que este modelo funcione é a 
comunicação [MIC 99]. 
Gerência de
Projeto
Gerência de
Logística
Gerência de
Produto
Educação do
Usuário
Desenvolvimento
Teste
Comunicação
 
Figura 18 – Os papéis definidos no MSF. 
 39
Este modelo possibilita que as equipes de projeto sejam flexíveis e escaláveis, 
para todos os tipos de projetos. O modelo pode ser aplicado tanto para pequenos 
quando para grandes projetos. Embora o modelo possua seis papéis, uma equipe não 
necessita sempre de no mínimo seis pessoas. O importante é que estes papéis 
estejam representados dentro de cada equipe, mas quando uma pessoa assume mais 
de um papel começam a surgir alguns riscos no projeto. O desenvolvimento, em 
particular, não deve ser combinado com nenhum outro tipo de papel. 
Para formar as equipes, o MSF considera três tipos de projetos que podem 
existir, que são: 
- Enterprise Architecture (EA): projetos que incluem melhorias do processo 
de negócio, desenvolvimento de aplicações de negócio, consolidação de plataformas e 
infra-estrutura de desenvolvimento, avaliações de tecnologia, consolidação de 
sistemas de negócios; 
- Application Development (AD): projetos onde existe o desenvolvimento de 
sistemas, com codificação, teste e resolução de possíveis problemas, antes que os 
sistemas sejam liberados para uso em ambiente de produção; 
- Infrastructure Deployment (ID): projetos que implementam tecnologias 
no nível de plataformas de desenvolvimento, foram testadas e estabilizadas e estão 
prontas para serem liberadas. São projetos tais como sistemas operacionais ou 
sistemas de transferência de mensagens (Messaging Systems). 
Em cada um destes tipos de projetos existe um conjunto de papéis que devem 
ser considerados na formação das equipes. Para mais detalhes, a descrição das 
responsabilidades de cada papel em cada tipo de projeto pode ser vista em [MIC 99]. 
2.4.3 Modelo de Processo do MSF 
O modelo de processo do MSF estabelece uma ordem para a execução das 
atividades. Hoje em dia existem diferentes tipos de modelos de processos e o modelo 
do MSF se originou do processo utilizado pela Microsoft para desenvolver suas 
aplicações. A partir disto, ela utilizou modelos de processos que continham os 
princípios que ela julgava serem mais efetivos e populares para criar um único modelo 
 40
que poderia ser aplicado para qualquer tipo de projeto, baseando-se em fases, dirigido 
por marcos ao longo do processo e seguindo um modelo iterativo. O processo do MSF 
combina os melhores princípios do ciclo de vida espiral com o ciclo de vida em 
cascata, incorporando os benefícios da possibilidade de planejamento, previsões e 
certezas do ciclo de vida em cascata com os benefícios do feedback e criatividade do 
ciclo de vida espiral. 
O modelo de processo do MSF tem como proposta a existência de quatro fases 
distintas. Cada fase acaba com um marco (milestone). O nome de cada fase ou marco 
depende do tipo de projeto em que o modelo vai ser aplicado (figura 19). 
Fase Dois
Fa
se
Um
Fase Quatro Fa
se
Tr
ês
Marco
Marco
MarcoMarco
 
Figura 19 – O modelo de processo do MSF. 
O processo proposto pelo MSF pode ser aplicado para todos os tipos de 
projetos, e dependendo do tipo os nomes das fases mudam. Para os projetos do tipo 
EA e AD o processo possui as fases de concepção, planejamento, 
desenvolvimento e estabilização. Nos projetos do tipo ID o processo possui as 
fases de concepção, planejamento, desenvolvimento e distribuição. Cada uma 
destas fases tem seus objetivos específicos e suas atividades são idênticas às 
atividades propostas pelo RUP. 
2.4.4 Análise Crítica 
O Microsoft Solutions Framework (MSF) é formado por conceitos, modelos, 
práticas e princípios originários de coletas das melhores práticas utilizados pelos 
funcionários, parceiros e consultores da Microsoft. 
Este framework tem uma grande vantagem que é o fato de pertencer a 
Microsoft, uma empresa com uma grande representatividade no mercado, e com uma 
 41
grande força para fazer seus produtos serem vistos e aproveitados por outras 
empresas, como a DELL Computers, que tem a maioria dos seus processos de 
desenvolvimento baseados no MSF. Além disso, o MSF é baseado em três fatores 
principais: as pessoas, os processos e a gerência de riscos. Isto significa que existe 
uma preocupação um pouco mais abrangente, cujo objetivo é assegurar que as 
pessoas, os recursos e as técnicas existentes são suficientes para garantir que a infra-
estrutura de tecnologia pode satisfazer os objetivos do negócio. 
Desde a criação do MSF, uma grande quantidade de projetos dentro da 
Microsoft já foi desenvolvida tendo como base este processo de desenvolvimento. E os 
resultados têm sido bastante favoráveis para a empresa, pois é um framework que 
está sendo sofrendo atualizações, baseando-se na prática dos seus funcionários. 
Apesar destas vantagens, o MSF também possui algumas desvantagens. 
Mesmo sendo um processo abrangente, que engloba três fatores muito importantes, o 
MSF não possui muitos detalhes das definições que envolvem as atividades mais 
técnicas dentro de um projeto. Todos os documentos que explicam alguma parte deste 
processo mostram apenas as atividades que devem existir, mas não existe um 
workflow que descreva como as atividades devem ser feitas, como existe na RUP, por 
exemplo. Além disso, não se sabe como o MSF se aplicaria para ambientes 
geograficamente distribuídos. Não existem práticas formalmente definidas para este 
contexto específico. Na literatura não se encontrou nada falando a respeito disto, e 
por isso, seria interessante utilizar o MSF em alguma empresa que possui um cenário 
de DDS para ver como este processo seria utilizado e quais os problemas que seriam 
encontrados. 
Em suma, o Microsoft Solutions Framework é muito mais do que um processo 
de desenvolvimento de software. É todo um ambiente construído pela própria 
Microsoft para dar o máximo de suporte para suas equipes, oferecendo diversos 
modelos de documentos e guias de desenvolvimento. Como suas práticas não se 
aprofundam muito na parte técnica, de como as atividades devem ser feitas, o MSF 
utilizou-se de diversos princípios definidos pelo RUP no que diz respeito ao modo como 
 42
o desenvolvimento deve evoluir, que atividades devem ser feitas em cada fase, para 
poder assim oferecer um suporte completo para o desenvolvimento de software, 
considerando tipos de projetos, documentos, disciplinas, papéis, além de outras 
práticas. 
2.5 Agile Software Development - ASD 
No começo de 2001, num encontro ocorrido em Utah nos Estados Unidos, um 
grupo de 17 pesquisadores, entre eles Martin Fowler, Alistair Cockburn, Jim Highsmith 
e Kent Beck, motivados pela observação de equipes de desenvolvimento de software 
em diversas empresas em todo o mundo, começarama discutir sobre os valores e os 
princípios que permitiam estas equipes a desenvolver software de forma rápida e ao 
mesmo tempo responder à mudanças. Neste encontro, com duração de dois dias, eles 
trabalharam na criação de um documento com uma lista de valores e fundaram a 
Agile Alliance [AGL 02]. O resultado deste trabalho foi a elaboração de um manifesto 
da Agile Alliance [COC 02] para o desenvolvimento ágil do software. A mensagem 
principal deste manifesto, assinada pelos 17 pesquisadores, dizia: 
“Nós desejamos descobrir melhores caminhos para desenvolver software, 
fazendo e ajudando outros a fazerem. Através deste trabalho, chegamos aos seguintes 
valores”: 
- Indivíduos e interações através de processos e ferramentas; 
- Desenvolvimento de software com uma documentação compreensiva; 
- Colaboração do cliente através de contratos e negociações; 
- Resposta a mudanças através de um plano específico; 
“Ou seja, enquanto existirem valores nos itens mais à direita, é possível 
manter os valores dos itens mais à esquerda”. 
Este manifesto deu origem ao Agile Software Development (Desenvolvimento 
Ágil do Software), um conjunto de idéias que visa um objetivo comum: melhorar o 
processo de desenvolvimento de software e sempre trazer novas idéias. A palavra ágil 
surgiu para mostrar a importância da necessidade de existirem processos ágeis. É 
 43
importante comentar que esta proposta de desenvolvimento não é contra os modelos 
de processo já existentes, é apenas uma proposta diferente que busca a melhoria dos 
processos existentes, tornando-os mais ágeis e menos burocráticos. 
Algumas idéias que esta proposta defende é a de que devem existir práticas 
como a modelagem, documentação e planejamento do software que está sendo 
construído. Mas a modelagem não serve apenas para armazenar os diagramas em um 
repositório de dados de uma empresa, a documentação não serve apenas para gastar 
papel escrevendo documentos que nunca mais serão alterados ou que freqüentemente 
serão utilizados e em um ambiente turbulento o planejamento tem seus limites e eles 
devem ser conhecidos. 
Assim como todos os modelos de processo de desenvolvimento citados até 
agora, o Agile Software Development também possui alguns princípios. Os principais 
princípios existentes são [FOW 01]: 
- A prioridade é satisfazer o cliente através da entrega contínua e 
rápida de uma versão do software. Em um workshop, um gerente de projeto, 
questionado sobre a importância dos documentos de especificação de requisitos e 
arquitetura, disse que estes documentos são muito importantes para o projeto, mas a 
maioria dos clientes não quer saber dos documentos técnicos, diagramas UML. Eles 
estão interessados em saber quando será possível ver o software com alguma das 
funcionalidades de negócio que ele pediu, para provar que o software pode satisfazer 
as suas necessidade. 
- Bem vindos à mudança de requisitos, mesmo que ela ocorra tarde, 
pois isto dá uma vantagem competitiva ao cliente. Hoje em dia os ambientes 
turbulentos, tanto no mundo dos negócios quanto da tecnologia, causam mudanças. 
Estas mudanças podem ser vistas como uma ameaça ou uma grande oportunidade. Ao 
invés de resistir às mudanças, os processos ágeis tentam acomodá-las da maneira 
mais fácil e eficiente, tendo plena consciência das suas conseqüências. Embora muitas 
pessoas concordam que o feedback é importante, a maioria delas ignoram o fato de 
que um feedback aceito pode ocasionar uma mudança. E os processos ágeis 
 44
consideram este feedback, pois acreditam que é mais efetivo facilitar a mudança do 
que tentar preveni-la. 
- Entregar uma versão do software freqüentemente, a cada semana ou 
a cada mês, sempre visando o menor tempo possível. Por muitos anos, muitos 
especialistas da área de processos de desenvolvimento diziam para utilizar um 
desenvolvimento interativo e incremental, com múltiplas entregas a cada evolução do 
sistema que está sendo desenvolvido. Apesar de esta prática ter aumentado e ser 
essencial para um processo ágil, ainda não é o que predomina nas empresas. É muito 
importante não confundir a entrega com a liberação do software, pois a liberação 
significa que um determinado módulo já pode ir para produção, enquanto que a 
entrega é somente uma avaliação interna do produto que está sendo desenvolvido. 
 - As pessoas da área de negócio e os desenvolvedores trabalham 
juntos no projeto, diariamente. Muitas pessoas gostam de comprar um software da 
mesma forma que compram um carro. Eles têm uma lista de características e 
funcionalidades na cabeça, negociam um preço e pagam pelo que solicitaram. Este 
modelo pode ser interessante, mas para a maioria dos projetos de desenvolvimento 
isto não funciona. Sendo assim, os desenvolvedores dentro dos processos ágeis 
sofreram uma mudança bem radical com relação aos conceitos da especificação de 
requisitos. Não é necessário se comprometer com uma lista detalhada de requisitos no 
início do projeto. A idéia é ter uma visão geral dos requisitos, conhecendo aqueles que 
podem sofrer mudanças ao longo do processo. Como isto não é suficiente para 
projetar e implementar o sistema, a existência de freqüentes interações entre as 
pessoas de negócio e os desenvolvedores se torna necessária. 
 - Ter uma equipe motivada e fornecer o ambiente, a confiança e o 
suporte necessários para o trabalho ser executado. Mesmo com as melhores 
ferramentas, tecnologias, e processos, são as pessoas que fazem a diferença no 
caminho entre o sucesso e o fracasso. Além disso, as decisões devem ser tomadas 
pelas pessoas que tem mais conhecimento para isto. Isto significa que os gerentes 
 45
devem confiar na sua equipe e preparar cada integrante para tomar qualquer decisão 
que esteja dentro do escopo do seu trabalho. 
- O método mais eficiente para trocar informações dentro ou fora da 
equipe de desenvolvimento é uma conversa “cara-a-cara”. Os processos ágeis 
não possuem uma grande quantidade de documentação. Eles consideram que a 
diferença não está na documentação, mas sim no entendimento. Uma documentação 
pode não dar o real entendimento para uma pessoa que a lê. Sendo assim, a 
documentação deve ser gerada por questões de obrigação e formalismo, mas sempre 
que possível deve se também tentar utilizar técnicas de comunicação direta. 
- A simplicidade é essencial. Qualquer tarefa de desenvolvimento por ser 
realizada de diferentes maneiras. Em um projeto que utiliza o conceito do 
desenvolvimento ágil é importante a utilização de uma forma simples para realizar as 
tarefas, uma forma que seja simples de mudar. Em termos de resultado, uma pessoa 
pode produzir muito mais se, ao invés de existirem regras rígidas e complexas, existir 
apenas um conjunto básico de regras que encoraje a sua criatividade. 
- Em intervalos regulares de tempo, a equipe deve refletir sobre como 
tornar o trabalho mais efetivo e então ajustar seu comportamento de acordo 
com esta reflexão. Processos ágeis não são práticas que existem apenas para ler, 
aprender e serem seguidas. Sempre existe um processo aconselhado para uma 
determinada situação, mas este processo pode deixar de ser válido com o tempo. O 
refinamento e a reflexão devem ser atividades sempre presentes dentro das equipes 
de desenvolvimento. Por isso, confiar nas pessoas e acreditar que a capacidade 
individual e o trabalho em grupo podem ser as chaves para o sucesso são fatores que 
estão ligados à confiança que uma equipe deve ter para monitorar e melhorar os seus 
próprios processos de desenvolvimento. 
Além dos princípios anteriormente descritos, são válidas algumas considerações 
sobre o ASD. Segundo [COC 02], um processo de desenvolvimento de software (no 
livro o autor chama de metodologia), deve conter 13 elementos (figura 20). Estes 
elementos são aplicáveis tanto para o desenvolvimento de software como para 
 46
atividades como montanhismo ou escrever poesias.

Continue navegando