Barne-, likestillings- og inkluderingsdepartementet
4.8. Manglende varslingsrutiner i under- under-liggende virksomheter
Este é o cenário mais complexo de organização de uma equipa de desenvolvimento de software. Neste tipo de organização, os membros da equipa encontram-se todos geograficamente dispersos e trabalham em horários diferentes.
A dispersão geográfica e a não sobreposição dos horários de trabalho dificulta substancialmente o estabelecimento de fluxos de comunicação síncronos e de relações entre os membros. Estes factores têm um impacto negativo na qualidade da comunicação que é um factor determinante da qualidade do trabalho.
A comunicação face a face torna-se muito difícil, nomeadamente a presencial, porque envolve a deslocação de vários membros para um local de encontro comum. A comunicação informal é seriamente afectada pela distância das pessoas e pela dificuldade em estabelecer comunicação síncronas.
Este tipo de equipa tem a vantagem de possibilitar o aproveitamento dos melhores recursos humanos para a execução do projecto, independentemente da sua localização actual. As tarefas deverão caracterizar-se pela independência. Usando um processo de desenvolvimento clássico:
• Sistema de workflow para a definição, execução e controlo do processo de desenvolvimento adoptado;
• Sistema de correio electrónico para troca de mensagens assíncronas entre os elementos da equipa;
• Agendas electrónicas partilhadas que permitam aos elementos da equipa consultar a disponibilidade de cada pessoa e facilitar o agendamento de reuniões;
• Gestão e partilha electrónica de documentos; • Mensagens instantâneas;
• Grupos de discussão; • Vídeo-conferência.
• Sistema de correio electrónico para troca de mensagens assíncronas entre os elementos da equipa;
• Agendas electrónicas partilhadas que permitam aos elementos da equipa consultar a disponibilidade de cada pessoa e facilitar o agendamento de reuniões;
• Gestão e partilha electrónica de documentos; • Mensagens instantâneas;
• Grupos de discussão; • Vídeo-conferência.
Este tipo de equipa colocará uma ênfase muito maior na utilização das ferramentas de groupware que facilitam a comunicação assíncrona.
Capítulo 8
8 Conclusões
O objectivo deste trabalho foi o estudo de uma arquitectura de alto nível para um hipotético sistema de suporte ao desenvolvimento de software utilizando as tecnologias de groupware e workflow. A definição deste sistema, naturalmente, só seria possível compreendidos os seus requisitos. Para o efeito foi analisado o processo de desenvolvimento de software, os tipos de actividades efectuadas e a forma como se organizam as equipas de desenvolvimento deste tipo de projectos.
O processo de desenvolvimento de software é um factor determinante para o sucesso de um projecto. O processo de desenvolvimento de software confere organização e estrutura ao trabalho efectuado durante o projecto. O processo define o tipo de actividades a executar, qual a sua sequência e os produtos resultantes de cada fase do projecto.
Não existe um processo de desenvolvimento de software ideal para todos os projectos, cada projecto é uma realidade própria e o processo deverá ser adaptado aos requisitos de qualidade pretendidos. Um projecto de maior dimensão com requisitos muito exigentes implicará a adopção de mais formalismos, no entanto um projecto mais simples poderá abdicar de carga burocrática ganhando agilidade e adaptabilidade.
Existem duas grandes abordagens ao processo de software: a abordagem clássica e abordagem ágil. A abordagem clássica baseia-se no fundamento de que o sucesso do projecto está intimamente relacionado com o processo adoptado. Esta abordagem coloca a ênfase no processo deixando para segundo plano a colaboração entre os membros da equipa. Os processos clássicos são estruturados e dotados de inúmeras formalidades a cumprir. Estes processos são adequados para projectos complexos, com um elevado grau de exigência de qualidade final do software.
A abordagem ágil defende que o factor determinante para o sucesso do projecto não é o processo, mas as pessoas e a forma como colaboram com o objectivo de desenvolver software. Os processos ágeis colocam a ênfase nas actividades de colaboração, comunicação e coordenação. A interacção entre os membros da equipa é elevada permitindo um constante ajuste do esforço individual e do projecto. Este tipo de processos
adequa-se a projectos de dimensão mais reduzida, com menores requisitos de rigor e em que o tempo de desenvolvimento deve ser o mais curto possível.
Independentemente do tipo de processo adoptado num projecto, o factor mais importante para o seu sucesso são as pessoas e a forma como se organizam em equipa. Existem inúmeras organizações possíveis de equipas de software, umas mais eficazes do que outras, e existem factores que determinam ou condicionam essa eficácia. É importante estruturar a equipa de projecto com pessoas competentes para o trabalho a realizar, mas também é importante organizá-las correctamente facilitando a sua colaboração.
Existem quatro classes de equipas de software de acordo com a divisão espaço/tempo. Existem requisitos de trabalho comuns aos quatro tipos de equipa, assim requisitos particulares. A adopção de um ambiente de suporte ao desenvolvimento de software permite aumentar a eficácia da equipa porque estabelece uma plataforma tecnológica comum de colaboração e comunicação.
O trabalho em equipa pode ser caracterizado em três dimensões: comunicação, colaboração e coordenação, e o trabalho no projecto é estruturado de acordo com o processo adoptado. Estes dois aspectos, equipa e processo, possuem características diferentes que não podem ser supridos pela mesma tecnologia. Por esta razão, consideraram-se duas tecnologias (groupware e workflow) para a definição do ambiente de suporte ao desenvolvimento. O trabalho em equipa foca-se na eficaz colaboração entre as pessoas, desta forma a componente de groupware pretende facilitar a interacção entre pessoas por meios tecnológicos. O processo foca-se na sequência de execução de actividades, sendo a componente de workflow o elemento tecnológico que permite definir um processo e as suas actividades, atribui-las a pessoas e controlar a sua execução.
A tecnologia de workflow é uma tecnologia ainda pouco difundida, mas em crescente adopção pelo mercado. Existem inúmeros tipos de sistemas de workflow, no entanto para um ambiente de suporte ao desenvolvimento de software pretende-se que o sistema de workflow seja altamente flexível e permite adaptar e modificar o processo durante a sua execução. Isto é necessário porque durante o desenrolar do projecto será necessário proceder a alterações do plano de actividades.
Groupware é a designação que engloba um conjunto vasto de tecnologias de comunicação e colaboração. Algumas das tecnologias de groupware, como por exemplo o e-mail ou as mensagens instantâneas, encontram-se bastante difundidas e o seu uso é corrente e habitual. As tecnologias de groupware possuem um elevado potencial porque
fornecem os meios que facilitam a interacção entre as pessoas, independentemente da sua localização geográfica.
O maior problema das tecnologias de groupware reside na dispersão das funcionalidades por vários programas, o que dificulta a adopção de todas as potencialidades. Idealmente, as várias funcionalidades de groupware deveriam estar disponíveis numa única interface coerente.
O ambiente de desenvolvimento de software aqui definido é construído recorrendo a duas tecnologias distintas: workflow e groupware, esta é uma hipótese, na nossa opinião, viável embora existam outras alternativas no mercado.
Ambientes como, por exemplo o Teamspace, baseados em tecnologia Web fornecem um conjunto básico de funcionalidades: lista de tarefas, mensagens instantâneas, fóruns de discussão, definição de planos de actividades, etc. numa única interface acedida por um browser. Este sistema tem a vantagem de possuir uma interface única (browser) para todas a funcionalidades, no entanto algumas das funcionalidades são pouco sofisticadas suprindo apenas as necessidades mais básicas. Por exemplo, é possível definir tarefas e atribui-las a pessoas da equipa, mas a modificação do processo é uma actividade penosa.
É mais comum as equipas de projectos de software adoptarem ferramentas de gestão de projecto, como Microsoft Project, para a definição do plano de trabalho e das actividades e recorrerem diariamente ao e-mail como meio privilegiado de comunicação assíncrona. O ambiente de suporte ao desenvolvimento de software descrito neste trabalho é superior a este cenário, pois permite suportar eficazmente os vários tipos de equipa independentemente do processo e organização adoptada.
Trabalhos futuros
Descreveu-se, neste trabalho, de forma abstracta um ambiente de suporte ao desenvolvimento de software. Seria um trabalho interessante investigar que tecnologias de workflow e de groupware existem disponíveis no mercado, avaliá-las e especificar o ambiente recorrendo a tecnologias concretas.
Durante um projecto de software forma-se um corpo de conhecimento, técnico e de negócio, muito importante e que deve ser preservado e disponibilizado. Este conhecimento é um activo importante que deveria ser gerido. Um trabalho futuro seria investigar as melhores estratégias tecnológicas para a sua captação e disponibilização, estas
funcionalidades deveriam estar integradas no ambiente de suporte ao desenvolvimento de software.
O gestor de projecto desempenha um papel extremamente importante na coordenação do trabalho da equipa e na gestão do relacionamento com entidades externas às equipas, cliente ou parceiros. A gestão do projecto é um esforço contínuo ao longo de todo o projecto e que possui características próprias. Seria interessante avaliar as necessidades da função gestão de projecto e procurar integrar no ambiente as soluções tecnológicas para essas necessidades.
9 Referências bibliográficas
[Abrahamsson02] Abrahamsson, P. et al. - Agile Software development methods:
review and analysis. Espoo: VTT Publications, 2002.
[Atwood95] Atwood, M. E. et al. - Facilitating Communication in Software
Development. Michigan: ACM, 1995.
[Bart95] Barthelmess, P.; Wainer, J. - Workflow Systems: a few definitions and a few
suggestions. COOCS: ACM, 1995.
[Boehm00] Boehm, B.; Basili, V. R. - Gaining Intellectual Control of Software Development. Computer: Vol. 33: nº 5 (2000), p.27-33.
[Bogia95] Bogia, D. P.; Kaplan, S. M. - Flexibility and Environment Control for
Dynamic Workflows in the worlds environment. Milpitas: ACM, 1995.
[Brereton99] Brereton, P. et al. - The Future of Software. Communications of the ACM. Vol. 42: nº 12 (1999), p.78-84.
[Brooks75] Brooks, F. - The Mythical Man-Month. 1ª edição. Addison-Wesley, 1975. 322 p. ISBN 0-201-83595-9.
[Buhrer03] Buhrer, H. K.. - Software Development: What is it, What it should be, and
How to get There. SIGSOFT: ACM, 2003.
[Carstensen01] Carstensen, P. H.; Nielsen, M.. - Characterizing Modes of Coordination. SIGGROUP: ACM, 2001.
[Cich98] Cichocki, A. et al. - Workflow and Process Automation Concepts and
Technology. Kluwer Academic Publishers, 1998. 136 p. ISBN 0-792-38099-1.
[Cockburn02] Cockburn, A.. - Agile Software Development. 1ª edição. Addison-Wesley, 2002. 256 p. ISBN 0-201-69969-9.
[Curtis88] Curtis, B.; Krasner, H.; Iscoe, N.. - A Field Study of the Software Design Process for Large Systems. Communications of the ACM, Vol. 31, nº 11: ACM, 1988.
[Curtis92] Curtis, Bill et al. - Process Modeling. Communications of the ACM, Vol. 35, nº 9. ACM, 1992.
[Deminors97] Deminörs, E. et al. - The Role of Teamwork in Software Development:
Microsoft Case Study. 23ª Conferência EUROMICRO: IEEE, 1997.
[Dumas05] Dumas, M. et al. - Process-aware information systems – Bridging people
and software through process technology. John Wiley & Sons, 2005. 432 p. ISBN: 978-
0-471-66306-5
[Ellis91] Ellis, C. A. et al. - Groupware some Issues and Experiences. Communications of
the ACM. Vol. 34: nº 1 (1991), p.39-58.
[Ellis95] Ellis, C. e Rozenberg, G.. - Dynamic Change within Workflow Systems. Conference on Supporting Group Work: ACM. 1995.
[Elm98] Elmagarmid, A.; Du, W.. - Workflow Management: State of the Art Versus
State of the Products. Workflow Management Systems and Interoperability. Springer
Verlag, 1998.
[Fayad97] Fayad, M. E. - Software Development Process: A Necessary Evil.
Communications of the ACM. Vol. 40: nº 9 (1997), p. 101-103.
[Fugetta00] Fugetta, A. - Software Process: A Roadmap. Conference on The future of Software Engineering: ACM, 2000.
[Gary97] Gary, K. et al. - Automated Process Support for Organizational and Personal
Processes. ACM SIGGROUP Conference on Supporting group work: the integration
[Grinter99] Grinter, R. E., Herbsleb, J. D. - The Geography of Coordination: Dealing
with distance in R&D work. ACM SIGGROUP Conference on Supporting group work.
ACM, 1999.
[Grudin94] Grudin, J.. - Groupware and Social Dynamics. Eight Challenges for Developers. Communications of the ACM. Vol. 37: nº 1 (1994), p. 92-105.
[Highsmith00] Highsmith, J. A. - Adaptive Software Development. Dorset House Publishing. 2000. 392 p. ISBN 0-932-63340-4.
[Johnson99] Johnson, J. J. - A Field Study of Partially Distributed Group Support. 32nd
International Conference on Systems Sciences: IEEE, 1999.
[Kaplan97] Kaplan, S. - The CSCW Column: The Quadrant Model of Groupware. ACM
SIGGROUP Bulletin. Vol. 18: nº 2. (1997), p. 11-14.
[Kraul95] Kraul, R. E.; Streeter, L. A. - Coordination in Software Development.
Communications of the ACM. Vol. 38: nº 3 (1995), p. 69-81.
[Marquis06] Marquis, H. A. - Finishing off IT. MITSloan Management Review. Vol. 47: nº 4 (2006), p. 12-15.
[McAfee06] McAfee, A. P. - Enterprise 2.0: The Dawn of Emergent Collaboration.
MITSloan Management Review. Vol. 47: nº 43(2006), p. 21-28.
[Michailidis01] Michailidis, A.; Rada, R.. - Organizational Roles and Communication
Modes in Team Work. 34th Annual Hawaii International Conference on System Sciences:
IEEE, 2001.
[Miguel03] Miguel, A.. - Gestão de Projectos de Software. Lisboa: FCA, 2003. 498 p. ISBN 972-722-352-4.
[Narendra00] Narendra, N. C. - Adaptive Workflow Management- An Integrated
Approach and System Architecture. ACM symposium on Applied computing: ACM,
2000.
[Newkirk02] Newkirk, J. - Introduction to Agile Processes and Extreme
Programming. 24th International Conference on Software Engineering: ACM, 2002.
[Pereira04] Pereira, J. L. - Sistemas de informação para o novo paradigma
organizacional: O contributo dos sistemas de informação cooperativos. Guimarães:
Universidade do Minho, 2004. 343 p. Tese de doutoramento.
[Piccoli00] Piccoli, G.; Ives, B. - Virtual Teams: Managerial Behavior Control’s Impact
on Team Effectiveness. International Conference on Information Systems: Association
for Information Systems, 2000.
[Pressman00] Pressman, R. S. - Software Engineering A Practitioner’s Approach.
European Adaptation. 5ª edição. McGraw-Hill, 2000. ISBN 0-071-23840-9.
[Ribeiro07] Ribeiro, M.; Pereira, J. L. - A Utilização de Sistemas Groupware/Workflow
para Suportar o Desenvolvimento de Software em Equipa. Aveiro: CAPSI, 2007.
[Sagheb02] Sagheb-Tehrani, M.. - Software Development Process: Strategies for Handling Business Rules and Requirements. ACM SIGSOFT Software Engineering Notes. Vol. 27: nº 2 (2002), p. 58-62.
[Simth01] Smith, S.; Stoecklin, S. - What we can learn from Extreme Programming.
Journal of Computing Sciences in Colleges. Vol. 17: nº 2 (2001), p. 144-151.
[Sommerville01] Sommerville, I. - Software Engineering. 6ª edição. Addison-Wesley. 2001. 693 p. ISBN 0-201-39815-X.
[Steinfeld99] Steinfeld, C. et al. - Supporting Virtual Team Collaboration: The
TeamSCOPE System. ACM SIGGROUP conference on Supporting group work: ACM,
[Swebok04] Abran, A. et al. – Swebok: Guide to the Software Engineering Body of
Knowledge. Software Engineering Coordinating Committee, 2004. 204 p. ISBN 0-7695-
2330-7.
[WfMC95] Hollingsworth, D. – Workflow Management Coalition The Workflow