sexta-feira, 13 de junho de 2008

Rational SW Modeler x Enterprise Architect (de 13/05/07)

No momento, estou envolvido em um projeto de desenvolvimento de um sistema para um grande cliente do Rio de Janeiro. Meu papel no projeto é o de Arquiteto, embora também exerça outros papéis.

Ainda em fase de elaboração, um dos desafios é montar o ambiente de análise do sistema, ou seja, definir a ferramenta Case e o processo de análise. Há de se levar em consideração aspectos relacionados às etapas de Design e codificação, pois é interessante que uma única ferramenta seja utilizada em todo o projeto, a fim de otimizar a comunicação e a integração entre as etapas do ciclo de desenvolvimento.

O sistema em questão será desenvolvido em plataforma .NET, utilizando tecnologias como ASP.Net Web Forms, Ajax, .NET Remoting, ADO.Net e muito provavelmente o Windows Workflow Foundation.

Algumas características do sistema e do ambiente desenvolvimento:

  1. Por exigência do cliente, o sistema será desenvolvido em linguagem VB.NET, visto que a equipe do cliente é especializada nesta linguagem. Isto é fundamental pois a proposta é que a manutenção do sistema seja feita por esta equipe do cliente
  2. A equipe do projeto estará geograficamente dispersa: Analistas dentro das instalações do cliente, no Rio de Janeiro, e demais etapas do desenvolvimento na Fábrica de Software, em Porto Alegre. Os modelos UML são compartilhados entre as equipes.

Por forte recomendação do cliente, que utiliza esta plataforma de modelagem, a primeira opção a ser avaliada é a ferramenta Rational SW Modeler, da IBM. A ferramenta possui integração com repositório de fontes do tipo CVS (Concurrent Version System), que é o habilitador do cenário de compartilhamento dos modelos. A deficiência da ferramenta fica por conta de não oferecer engenharia de código para a linguagem VB.NET. No caso de utilização desta ferramenta, geração de código não existe e sincronização de modelos vira um processo manual. A impressão que fica é que o Rational SW Modeler é um gigante que faz muito pouco.

Outra ferramenta análisada foi o Enterprise Architect, da Sparx Systems. Esta, por sua vez, parece ser uma ferramenta muito mais focada na plataforma .NET. Oferece engenharia de código com VB.NET e integração com repositório de fontes do tipo CVS, VSS (Visual Source Safe) e o TFS (Team Foundation Server). No que se refere a UML, o Enterprise Architect parece muito superior ao SW Modeler. A única questão que não fica muito interessante é que o Enterprise Architect força um mesmo modelo de manipulação do repositório para todos os repositórios (no caso, o modelo de check-out com lock e check-in do VSS). Nisto o SW Modeler é mais flexível.

Embora a tendência a termos que utilizar o SW Modeler, por exigência do cliente, estamos com uma iniciativa forte para convencermos a equipe técnica do mesmo a aceitar a utilização do Enterprise Architect. Este segundo parece muito mais aderente ao cenário do projeto e ao futuro do sistema. Além de ter um custo muito inferior ao custo do primeiro.

6 Comments:

Henrique Narciso said...

Olá,
que tal essa alteração de Rational para EA? correu bem?

Estamos a avaliar o EA e queria um contacto real para partilhar ideias.

Unknown said...

Oi Henrique.
A adoção do EA foi muito positiva. A ferramenta abrange a UML 2, está em constante evolução e trabalha muito bem com as linguagens do .NET
Para o trabalho em equipe, utilizamos o modelo compartilhado de forma muito eficiente. A geração de documentos RTF dos modelos é muito boa.
Qualquer detalhe em especial que você queira me questionar, sinta-se a vontade.
Abraço,
Eduardo

Henrique Narciso said...

Olá Eduardo,

como deves perceber, estou á procura de uma ferramenta que ajude a automatizar o desenvolvimento de software.
esta tem que ser uma ferramenta que abranja pelo menos a parte de requisitos, alguma parte de reverse engineering do codigo e que permita controlar as inumeras alterações que ocorrem no dia a dia.

Penso que com o reverse engineering e o uso dos diagramas e matrizes de dependência sempre que se efectua uma alteração nos requisitos vai ser algo muito util.

Estive a ver que existe a RAQuest para a parte de gestão de requisitos, é realmente bom ou não conheces?

Eu conheço muito bem o tool set da Rational, mas é incomportável em termos de preço.

Gostava de ir trocando algumas experiências contigo se fosse possível, pois não tenho agora todas as questões :)

obrigado!

Unknown said...

Oi,
No que se refere aos ítens que você citou do desenvolvimento de software:
1. O EA possui matriz de rastreabilidade. Além disso, é possível manipular métricas de Casos de Uso para cálculo automático de UCPs, tempo e custo.
2. Considero a engenharia de código (code generation e reverse engineering) um dos melhores recursos do EA. Ao menos no que se refere ao .NET, o EA sempre acompanha as evoluções das linguagens... Quanto à outras linguagens de programação, não posso lhe assegurar.
3. O histórico de versões dos modelos você só consegue controlar com o apoio de um repositório tipo TFS, VSS, CVS. Utilizando o modo compartilhado do EA (que para modelagem em equipe é muito bom) vc tem que fazer controle de versão 'na mão', através de campos dos elementos do modelo.

Quanto ao RAQuest, não conheço a ponto de poder lhe dar uma opinião... Mas se você tiver um link interessante a respeito dele, gostaria que o compartilhasse comigo.

Abraço,
Eduardo

Henrique Narciso said...

Oi Eduardo,
gostava que me fala-se um pouco mais da parte de gestão de versões. Por exemplo, tenho um use case que está na versão 1.0.
Penso que preciso de colocar o package sobre versionamento (TFS).
Após estar versionado,altero um dos steps do usecase.
Terei que alterar manualmente a versão? e depois gravar o package de novo é isso?

O link para o RAQUEST :
http://www.raquest.com/products/

Unknown said...

Henrique,

Se você optar pelo uso do TFS, o versionamento será controlado pelo próprio TFS, no momento em que você fizer o 'Commit' das alterações.
Seja qual for o repositório que você utilizar (CVS, VSS, TFS, etc), o EA sempre irá trabalhar no modelo check out / check in.

A outra possibilidade é você utilizar um único arquivo de modelo compartilhado em um diretório da sua rede. Vários usuários fazem acesso ao mesmo arquivo de modelo, simultaneamente. Nesta abordagem, não existe registro de versões e, por conseqüência, você terá que fazê-lo manualmente.