Você está na página 1de 6

Documento de Validao

de Produtos e Tecnologias

Qualiti Software Processes


www.qualiti.com.br

Centro XML Recife


Cliente: Qualiti
Projeto: Q.METRIC C#

Verso: 0.2

Histrico de Alteraes
Data

Verso

Descrio

Autor

06/08/2003

0.1

Versoinicial

AndrFurtado

06/08/2003

0.2

ConclusessobreavalidaotecnolgicadeAndr
Furtado

AndrFurtado

08/0/2003

0.3

Conclusessobreavalidaotecnolgicade
AdelineSousa

AdelineSousa

Contedo
1.

INTRODUO..............................................................................................................................................4

2.

ESCOPO DE VALIDAO..........................................................................................................................4

3.

PROCESSOS DE VALIDAO...................................................................................................................4
3.1
CHECAR A DIFICULDADE EM INSERIR UM PLUG-IN NO VS.NET............................................................4
3.1.1
Mtodo..............................................................................................................................................4
3.1.2
Resultados.........................................................................................................................................4
3.2
VERIFICAR A EXISTNCIA DE PARSERS C# NO VS.NET..........................................................................4
3.2.1
Mtodo..............................................................................................................................................4
3.2.2
Resultados.........................................................................................................................................4

4.

REFERNCIAS..............................................................................................................................................5

Documento de Requisitos / Pro.NET


Arquivo: 317864537.doc

Pgina 3 de 6
ltima Atualizao: 22/10/2003 08:31:00 PMh

1.

Introduo

Este documento tem com objetivo registrar as validaes (ou rejeies) tecnolgicas do
projeto Q.Metric C#. Basicamente, procura-se saber se as tecnologias propostas para
desenvolver a soluo funcionam conforme especificado pelas suas documentaes.

2.

Escopo de validao

A validao se restringiu ao escopo apresentado a seguir:

Checar a dificuldade em inserir um plug-in no VS.NET.

Verificar a existncia de parsers em C# VS.NET

Checar a viabilidade
Microsoft.CSharp

Verificar a existncia de outros parsers para C#

da

soluo

System.CodeDom

em

3.

Processos de Validao

3.1

Checar a dificuldade em inserir um plug-in no VS.NET

conjunto

com

3.1.1 Mtodo
Foram seguidas as instrues de um livro especializado em VS.NET [1]. Seu captulo 8
(Automation, Macros, and Add-ins) foi abordado. Eventuais dificuldades no cobertas pelo
livro foram pesquisadas na Internet e em fruns de discusso.
3.1.2 Resultados
Resultados provaram que isto possvel, atravs de um mecanismo chamado Add-In,
presente no VS.NET. Entretanto, cuidados devem ser tomados para:

Garantir que a integrao do VS.NET com o VSS no cause problemas

Evitar que o Add-In simplesmente desaparea entre uma instncia e outra do VS.NET

3.2

Verificar a existncia de parsers C# no VS.NET

3.2.1 Mtodo
Consultas MSDN [3] foram utilizadas para checar o Automation Object Model. Eventuais
dificuldades no cobertas pelo site foram pesquisadas na Internet em geral.
3.2.2 Resultados
A API do VS.NET intitulada Automation Object Model, responsvel pela interao
programtica com o VS.NET possui alguns mtodos/propriedades no-implementados (como
Child, mais informaes em [2]). Entretanto, um esforo adicional permitiu que outros
mtodos/propriedades da API fossem utilizados para realizar o parse do arquivo. Entretanto,
assim como o Automation Object Model especifica, o nvel de profundidade mxima que esse
Documento de Requisitos / Pro.NET
Arquivo: 317864537.doc

Pgina 4 de 6
ltima Atualizao: 22/10/2003 08:31:00 PMh

parsing atinge so mtodos. Em outras palavras, no possvel criar uma estrutura de rvore
automaticamente para extrair de um mtodo seus laos for, foreach ou outras estruturas
sintticas com o if.

3.3 Checar a viabilidade da soluo System.CodeDom em conjunto


com Microsoft.CSharp
3.3.1 Mtodo
Foram
realizados
testes
com
as
APIs
System.CodeDom
e
Microsoft.CSharp.CSharpCodeProvider [3], a fim de se conseguir instanciar um parser que
fosse capaz de ler um arquivo C# e criar uma rvore sinttica.
3.3.2 Resultados
A API do .NET Framework intitulada System.CodeDom , que contm as definies de classes
que representam as estruturas sintticas de um programa .NET possui uma representao
razovel da rvore sinttica, entretanto, no possui mtodos para criao dos objetos a partir
de uma String, por exemplo. A classe Microsoft.CSharp.CSharpCodeProvider no possui a
funcionalidade para criao do parser implementada. O que inviabiliza esta soluo.

3.4

Verificar a existncia de outros parsers para C#

3.4.1 Mtodo
Foram feitas consultas na Internet em busca de parsers para a linguagem C# que fossem,
preferencialmente, escritos na prpria linguagem C#. A preferncia era por cdigos de fontes
conhecidas, que possussem algum grau de confiana.
3.4.2 Resultados
Foram encontrados alguns parsers, um deles escrito na linguagem C#, com a especificao
completa da rvore sinttica. Dada a existncia da especificao da gramtica do parser,
utilizando uma sintaxe similar do Yacc, esta soluo se mostrou vivel para a utilizao no
projeto. Pois novas funcionalidades podem ser facilmente acrescentadas. O framework
escolhido foi o do projeto Mono[4].

Documento de Requisitos / Pro.NET


Arquivo: 317864537.doc

Pgina 5 de 6
ltima Atualizao: 22/10/2003 08:31:00 PMh

4.

Referncias

[1] Griffiths I., Flanders J., Sells C., Mastering Visual Studio .NET, OReilly 2003.
[2] http://www.dotnet247.com/247reference/msgs/7/39909.aspx. (visitado em 05/08/03)
[3] MSDN http://www.microsoft.com/msdn (visitado em 06/08/03)
[5] Mono Project http://www.go-mono.com (visitado em 08/08/03)

Documento de Requisitos / Pro.NET


Arquivo: 317864537.doc

Pgina 6 de 6
ltima Atualizao: 22/10/2003 08:31:00 PMh