Home
VHS-AM - Centro de Informática da UFPE
Contents
1. 48 Go To Reference Outlining b Figura 22 Esbo o de interface para o caso de uso UC10 example hs main IO main return TODO add code to start application here SSS Task List 1 task l w Description TODO Add code to start application here p Figura 23 Esboco de interface para o caso de uso UC11 3 3 12 UC12 Navegar por uma navigation bar espec fica para Haskell O Programador Haskell deve ser capaz de visualizar as fun es de seu c digo e se mover rapidamente entre elas A navigation bar um combo box que cont m as fun es declara das no arquivo corrente sendo o usu rio redirecionado para o local do c digo que cont m a declara o da fun o ap s a sele o do nome da mesma na navigation bar A Figura 24 apresenta um esbo o de interface para este caso de uso 39 Math hs fib int n f4 pes n module Math fac where fac Int gt Int fac O 1 fac n n fac n 1 Figura 24 Esboco de interface para o caso de uso UC12 3 3 13 UC13 Efetuar consultas interativas ao programa via GHCi O Programador Haskell deve ser capaz de realizar consultas aplica o que ele est de senvolvendo chamando o interpretador GHCi isto sem a necessidade de compilar a apli ca o Isto pode ser til para a invoca o de fun es com o objetivo de realizar testes unita rios por exemplo A Figura 25 apresenta um esbo o de interface para este caso de
2. 22 O VS NET parte principal da estrat gia da Microsoft para a difus o do NET Fra mework a recente plataforma para desenvolvimento de software criada pela empresa O detalhamento do NET Framework foge ao escopo deste trabalho mais informa es sobre a tecnologia podem ser encontradas no Microsoft NET Framework Developing Center 56 O Visual Studio NET 2003 retrata adequadamente o estado da arte dos ambientes integrados de desenvolvimento Entre algumas de suas funcionalidades muitas delas exclu sivas pode se destacar e Suporte ao desenvolvimento e comunica o de projetos em diferentes linguagens de pro grama o e Desenvolvimento visual de formul rios Windows Web ou para dispositivos m veis inclu sive atrav s do conceito de heran a entre formul rios e Rico suporte edi o atrav s das funcionalidades oferecidas pelo Microsoft Intellisense e Ajuda din mica sens vel a contexto e Amplo conjunto de wizards para facilitar a execu o de tarefas como a cria o de projetos e classes por exemplo e Depura o com um conjunto rico de funcionalidades depura o remota depura o multi liguagem breakpoints quick watches etc e Cria o de projetos instaladores baseados na tecnologia Microsoft Installer para a implan ta o de aplica es e Suporte ao desenvolvimento depura o e implanta o de Web Services e Desenvolvimento de paginas para a Web como HTML ASP e ASP NET sem a
3. Diferentes projetos VHS e VHS AM compartilham objetivos Algum trabalho pode ser desperdi ado Divulga o do escopo do projeto VHS AM na lista do VHS coordena o colaborativa de atividades Discuss o clara e aberta na lista VisualHaskell so bre divis o de responsabi lidades e tarefas inclus o das responsabilidades das diferentes equipes no site A maior parte da equipe desconhece a metodologia a ser utilizada O projeto pode ser condu zido de maneira informal demais prejudicando sua qualidade Explica o da metodolo gia aloca o de tempo para estudo da mesma e acompanhamento para eventuais d vidas Reuni es para explica o do que est indo errado e apresenta o do processo correto da metodologia A equipe n o possui um dom nio avan ado da lin guagem Haskell O produto final pode n o ser aplic vel realidade dos programadores Has kell Estudo avan ado da lin guagem estimular feed back cont nuo e proativo Priorizar atividades de estudo da linguagem e an lise de feedback N o h previs o para a integra o do VHS de Simon com o parser do GHC Algumas funcionalidades n o poder o ser ofereci das pelo VHS AM Acompanhar os avan os de Simon Marlow Utilizar o parser atual mais limitado 82 Durante a Fase de Planejamento o aluno desenvolveu o Documento de Especifica c o Funcional do projeto tamb m em ingl s q
4. Quando os estudantes fizerem o download do exerc cio a partir do AM Student Cli ent no lugar dos trechos de c digo marcados como student code pelo professor agora apa recer o coment rios indicando que houve uma supress o de c digo nestes locais Uma vez conclu dos os exerc cios os estudantes devem submet los ao AM Server atrav s do AM Student Client Ap s a execu o dos testes de auto build auto check pelo AM Server o pro fessor pode verificar o projeto resposta do aluno para por fim atribuir sua nota final acessi vel pelos alunos posteriormente Como p de ser observado os conceitos por tr s da ferramenta Assignment Manager s o simples embora bastante aplic veis na pr tica De modo a enriquecer o conjunto de funcionalidades oferecido pela ferramenta existem atualmente diversos projetos para es tend la al m do projeto VHS AM Esses e demais projetos relacionados a este Trabalho de Gradua o ser o apresentados na se o a seguir 2 5 Trabalhos Similares e Anteriores 2 5 1 Projetos de Extens o do Assignment Manager Os projetos apresentados abaixo foram originados a partir da mesma RFP que viabilizou o projeto VHS AM mais detalhes no Cap tulo 1 O status atual de cada projeto pode ser en contrado a partir da rea de projetos da Microsoft Academic Shared Source Community ASSC 61 2 5 1 1 Monitora o do desempenho do aluno atrav s do Assignment Manager A Universidade de Monash 67 na Austr
5. essencial ao sucesso de um projeto e Focar no valor agregado ao neg cio do cliente a equipe deve estar atenta ao que real mente importante para o neg cio do cliente Desde o in cio deve estar claro que a tecnologia utilizada como meio e n o como foco e Permanecer gil e esperar mudan as todos os membros da equipe devem estar cientes de que mudan as ocorrer o e modificar o seu trabalho Deve ser estimulada a pr tica de re vis es e sugest es no trabalho realizado por outros membros assim como o estabelecimento de medidas de rastreamento para garantir efici ncia na implanta o de mudan as e Incentivar comunica o aberta a comunica o entre os membros da equipe deve ser es timulada e coordenada Isso reduz os enganos provenientes da falta de informa o Se preci sarem existir informa es secretas a equipe deve estar ciente que existe o sigilo e que ele contribui para o sucesso do projeto e Compartilhar responsabilidade cada membro da equipe ciente das suas atribui es e di vide a responsabilidade pelo sucesso do projeto e Dar a liberdade necess ria e confiar nos membros da equipe significa entregar aos membros da equipe a autoridade e os recursos necess rios para preencher as responsabili dades associadas com seus pap is Os pap is desempenhados pelos membros de um projeto segundo o Modelo de E quipe da Pro NET n o s o hierarquizados isto cada papel da equipe nico importante e i
6. passi Ambiente e Ger ncia de Configura o i t Administrar ambientes Figura 46 Atividades de acordo com o tempo e as reas de conhecimento na Pro NET Cada atividade possui um objetivo um respons vel passos artefatos de entrada e sa da e possivelmente guias O objetivo indica o que a realiza o daquela atividade pre tende atingir dentro do contexto de desenvolvimento do projeto O respons vel um mem bro do Modelo de Equipe que ir liderar a execu o da atividade respondendo pelo seu su cesso Os passos s o a divis o do trabalho a ser realizado na atividade em unidades meno res Os artefatos de entrada s o necess rios execu o da atividade que gera artefatos de sa da Os guias cont m um conjunto de orienta es para facilitar a execu o da atividade A metodologia fornece tamb m guias e templates para artefatos sendo estes ltimos bastante utilizados no projeto VHS AM Os guias apresentam boas pr ticas no contexto de determinadas atividades enquanto templates auxiliam na gera o dos artefatos durante a execu o de um projeto Tais artefatos devem ser permanentemente atualizados refletindo as mudan as e o pr prio amadurecimento do projeto 87 7 CONCLUSAO Esta se o apresenta uma reflex o cr tica sobre os resultados at ent o obtidos no projeto VHS AM identificando suas virtudes e defici ncias Adicionalmente s o apontados os ca minhos futuros a serem seguidos pelo a
7. 07 04 2004 5 SUMARIO MN sO CAO Ee ceo ECKE HELME 9 1 1 A Origem do Projeto VHS AM eritis teinte pe censeri e aiies baieie arinki dioii eiee 10 1 2 O Trabalho de Gradua o no Contexto dos Demais Projetos Apresentados sssesssss 12 1 3 Organizacao deste DoGumoento 5 er ane eee ae red eA ee rrt e ERES 15 2 Contexto cssc ere bi e O Rob doa od Naa era UU 16 2 1 Uma Breve Hist ria das Linguagens de Programa o ssssssseseeeeeeeeeneennnnes 2 2 Compreendendo Linguagens Funcionais Virtudes e Defici ncias 2 3 Do Vi o Visual Studio NET 2008 ss a api es 2 4 A Ferramenta Assignment Manager e nreiteeaeeareearera nara raranaranaranaraaanaa 2 5 Trabalhos Similares e Anteriores etida o siaaa idan anda ayaa nnne enne enne sene nnns 26 Ko np las 32 331 Atores d Aplica o issues eet ert e RH T ERE COS ECA EN DESSAS E E RUN Renan PS ge SEG pasa e essas jee 32 3 2 CONVEN ES sos seve oe eee enit uem Pain e e e rg ipte oU qiiid 33 3 3 Casos de Uso do Projeto VHS AM sssssssssssesseeeeeeeenennen nennen rre rennen tenete tree nene 33 3 4 Requisitos N o Funcionais do Projeto VHS AM e rennen neret netten 41 3 5 Distribui o dos Casos de Uso atrav s dos Releases Internos do Projeto 42 3 6 Demais Propostas de C
8. Com o in cio do desenvolvimento do segundo release interno o foco da equipe passou do AM para o pr prio VS NET Este suporte a projeto havia sido abandonado porque a implementa o sugerida por Krasimir An gelov era mais extens vel permitindo a adi o de mais funcionalidades no futuro Segundo a metodologia Pro NET os release notes de uma aplica o devem ser elaborados ao fim de cada release interno ou n o apresentando suas funcionalidades defeitos conhecidos requisitos de hardware e software instru es de instala o e informa es de contato 73 ie vshaskell Welcome to the yshaskell Setup Wizard v Ago VHS AM The installer will quide you through the steps required to install vshaskell on your computer WARNING This computer program is protected by copyright law and international treaties Unauthorized duplication or distribution of this program or any portion of it may result in severe civil or criminal penalties and will be prosecuted to the maximum extent possible under the law Figura 39 Screenshot do Instalador do suporte a projetos Haskell para o VS NET Com a conclus o da implementa o do suporte a projetos no primeiro release inter no foi aberto o caminho para a implementa o de casos de uso que dependiam desse su porte a projetos como a adi o de um novo m dulo Haskell a um projeto UCO5 e a imple menta o de um module viewer para Haskell UCO6 n o havendo a princ pio
9. Os componentes COM s o constitu dos de c digo execut vel distribu do na forma de bibliotecas de liga o din mica DLLs ou dynamic link libraries ou arquivos execut veis EXEs Estes componentes podem ser acoplados dinamicamente a uma aplica o e en capsulam seus detalhes de implementa o publicando apenas quais s o os servi os que implementam Eles podem ser implementados independente de linguagem atualizados sem quebrar seus clientes e realocados transparentemente em rede isto o componente em um sistema remoto tratado da mesma maneira que um componente no sistema local Por fim componentes COM anunciam sua exist ncia tamb m de uma maneira padr o permitin do que clientes encontrem dinamicamente os componentes que precisam utilizar O principal conceito por tr s da utiliza o de componentes COM s o as interfaces COM Grosso modo uma interface COM consiste no conjunto de servi os m todos ou fun es exportadas por um componente COM mas que n o entra em detalhes de implemen ta o Dessa forma o desenvolvimento de um componente COM consiste prioritariamente em definir os servi os oferecidos e especific los como interfaces COM para em seguida implement los interessante observar portanto que v rias interfaces podem ser imple mentadas por um mesmo componente COM A diferen a de interfaces COM para o conceito tradicional de interfaces que interfa ces COM possuem uma estrutura de mem
10. as macro atividades a serem realizadas naquelas fases e disciplinas Macro atividades con t m um conjunto de atividades que s o executadas conjuntamente para a realiza o de um objetivo Elas fornecem um n vel mais elevado de abstra o na descri o do trabalho a ser 86 realizado Para cada macro atividade a metodologia descreve o fluxo de execu o de suas atividades A Figura 46 apresenta macro atividades associadas cada uma a uma disciplina e v rias fases A barra de cada macro atividade representa o per odo do projeto em que e xistir esfor o para execut la Fase Planejamento Desenvolvimento Estabiliza o Implanta o Planejamento amp pacas in cio do projetos i f Desenvolver Plano de Projeto ESEC ES Gerenciamento Planejar releases internos SE pire ar corre es H E Finalizar projeto Gerenciar projeto Avaliar riscos Desenvolver Plano de Ger ncia de Riscos Requisitos Analisar problema E Elaborar S conceitual An lise amp Projeto i Elaborar projeto l gico 2 SSS o Elaborariprojeto f sico Executar valida es de implementa o EEE Desenvolver aplica o Ajustar aplica o Implementa o 1 planejar testes i Projetar testes Conduzir testes de desenvolvimento Conduzir testes de estabiliza o HER Implanta o Planejar implanta o 1 Produzir artefatos de instala o e documenta o Efetuar implanta o
11. dispon vel em http www microlink com br buick dragons freevslinux html 24 03 2004 Microsoft MSND Visual Studio Industry Partner Distribution Agreement dispon vel em http Awww vsipdev com LicenseAgreement aspx 27 03 2004 Microsoft PressPass Microsoft Selects Five Universities To Enhance Visual Studio NET 2003 Academic dispon vel em http www microsoft com presspass press 2003 nov03 1 1 04UniversitiesVSTOPR asp 21 03 2004 Microsoft Research Microsoft Research Cambridge disponivel em http research microsoft com cambridge 22 03 2004 Microsoft Research Simon Marlow Microsoft Cambridge Research disponivel em http research microsoft com simonmar 22 03 2004 Microsoft Visual Studio Developer Center Automation and Extensibility Overview disponivel em http msdn microsoft com vstudio extend pull library en us dv_vstechart html vsoriautomationextensibilityoverview asp 26 03 2003 Microsoft ASP NET Starter Kits disponivel em http Awww asp net Default aspx tabindex 9 amp tabid 47 21 03 2004 Microsoft Internet Information Services disponivel em http www microsoft com WindowsServer2003 iis default mspx 25 03 2004 Microsoft Microsoft NET Framework Developing Center Technology Overview dis pon vel em http msdn microsoft com netframework technologyinfo overview default aspx 25 03 2004 Microsoft Microsoft Message Queuing MSMQ Center dispon vel em http www microsoft com windows2000 technol
12. do Centro de Tecnologia XML do Recife 63 para este ambiente ao qual o aluno possui a cesso e bastante grato A configura o das m quinas neste ambiente apresentada na Tabela 5 68 Tabela 5 Ambiente de testes do projeto VHS AM Hardware Software Finalidade Nome da m quina Faramir Configura o Pentium 4 1 8Ghz 640MB AM Server Servidor AM SO Windows XP Professional Edition Nome da m quina Boromir Configura o Pentium 4 1 8Ghz 640MB SO Windows XP Professional Edition Nome da m quina Krasimir Configura o Pentium 4 1 8Ghz 640MB VS NET 2003 com Simular o uso do AM Faculty Client Professor AM VS NET 2003 com Simular o uso do SO Windows XP Professional Edition Gece cna aa Nome da maquina Denethor Simular o uso do Configura o Pentium 4 1 8Ghz 640MB VS NET 2003 programador SO Windows XP Professional Edition Haskell 5 3 4 Valida es tecnol gicas Uma vez com o ambiente de desenvolvimento e testes estabelecidos a equipe do projeto VHS AM passou a executar valida es tecnol gicas com o objetivo de investigar mais pro fundamente as tecnologias a serem utilizadas no projeto Ao aluno Marden Menezes foi de legada a tarefa de estudar o ent o rec m lan ado VSIP Extras Beta enquanto Mauro Ara jo ficou respons vel por verificar o funcionamento da ferramenta Assignment Manager O aluno deste Trabalho de Gradua o se responsabilizou por testar o MyC exemplo de lingu
13. e indica o de mensagens de erro em uma barra de ferra 1 O detalhamento dos recursos oferecidos por uma IDE em rela o ao suporte edi o ser apre sentado no Cap tulo 3 27 mentas A compila o feita invocando se o GHC Um screenshot da ferramenta em exe cuGao pode ser visualizado na Figura 9 Haskell HelloWorld hs Eclipse Platform File Edit Navigate Search Project Run Window Help j ey m E amp e T ey gS x lt a sr E f Navigator wx acus X E G S ks T main IO e main do Al T putStrLn HelloWorld out i P na x sghk1 Helloworld hs E hsproject 1 E project e Problems 1 items uw BP Description E out O parse error possibly incorrect indentation G2 src hsproject E project Figura 9 A IDE Eclipse com suporte a Haskell Apesar desta ser uma interessante abordagem o autor deste trabalho acredita que o modelo de extens o do VS NET apresentado no Cap tulo 4 consideravelmente mais completo do que o do Eclipse podendo oferecer um suporte a Haskell mais satisfat rio 2 5 2 2 WinHugs O WinHugs uma vers o visual e mais amig vel para Windows da ferramenta Hugs 35 um interpretador para a linguagem Haskell Nao oferecido nenhum suporte para a edic o de c digo o WinHugs apenas dispara o editor definido pelo programador A principal vanta gem da utiliza o do WinHugs consiste na sua interface que permite um
14. lia pretende estender o AM de modo a permitir que o conte do de um projeto em desenvolvimento por um estudante assim como o pro gresso e erros advindos de sua compila o sejam capturados em diversos momentos per mitindo a cria o de um relat rio para que o professor entenda melhor a evolu o do aluno na realiza o do exerc cio Um estudante de mestrado ITA Instituto Tecnol gio da Aeron utica Daniel Pegas tamb m est desenvolvendo um trabalho similar ainda que em fase inicial Atualmente algumas experi ncias es t o sendo trocadas entre ele e a equipe do projeto VHS AM 26 2 5 1 2 Extens o do conceito de exerc cios do Assignment Manager A Universidade de Hull 77 na Inglaterra esta implementando funcionalidades para ampliar o campo de aplica o do AM na comunidade acad mica ao permitir a submiss o de docu mentos e exerc cios que n o sejam apenas projetos do VS NET Al m disso o projeto tam b m pretende integrar o AM com ferramentas desenvolvidas na pr pria universidade para obten o de feedback de trabalhos pr ticos submetidos aos alunos por um professor 2 5 1 3 Extens o do Assignment Manager para cursos de programa o introdut rios A Universidade de Yale 82 nos EUA est estendendo o AM para que o mesmo se adapte a cursos de programa o introdut rios suportando a atribui o de notas a exerc cios base ados na programa o da GUI graphical user interface 2 5 1 4
15. o direta nos casos de uso do projeto VHS AM demandariam que a equipe do projeto dominasse t cnicas de im plementa o de componentes para linguagens n o gerenciadas o que provavelmente teria um impacto significativo no cronograma Entretanto n o deixa de ser interessante a utiliza o desta tecnologia no futuro tanto para suportar projetos Haskell que contenham interface gr fica como para a inclus o em qualquer tipo de projeto Haskell de recursos mais avan ados como timers datasets componentes de impress o e de ajuda ao usu rio 4 4 Macros 4 4 1 A tecnologia A utiliza o das VS NET macros uma das maneiras mais f ceis de estender a IDE Apesar de pouco poderosa esta abordagem implica em um ganho consider vel de produtividade ao permitir a grava o de um conjunto de a es executadas no VS NET e posteriormente a reprodu o dessas a es como um nico comando permitido tamb m verificar e alterar o c digo fonte da macro criada por uma grava o sendo poss vel a execu o de altera es pontuais nas mesmas Devido a sua simplicidade o conceito de macros pode ser utilizado como uma ferramenta para o aprendizado do pr prio automation object model Macros s o gerenciadas a partir de um ambiente parte do VS NET chamado VS Macros IDE que cont m um conjunto de funcionalidades bastante rico Este ambiente sepa rado possui uma janela de exibi o de c digo document window e uma variedade de jane l
16. poss vel ainda visualizar o efeito highlight braces em que o par de par nteses chaves fica em negrito quando o cursor passa sobre um deles 74 Start Page Math hs module Math where 1 d inc i Int gt Int ine n n 1 xoqj fac is Int gt Int fac 0 1 fac n n fac n up Figura 40 Brace matching para Haskell no VS NET Similarmente avan os parciais foram realizados em rela o s outras funcionalida des relativas ao suporte edi o baseado no Babel poss vel verificar com sucesso o sur gimento de uma popup list cujos itens dependem do escopo no qual est o cursor imple mentado pelo aluno deste Trabalho de Gradua o conforme mostra a Figura 41 Start Page Math hs module Math where Start Page Math hs module Math where inc inc ss Inte Int inc inc p pe4 tl1 fac fac Int gt Int fac O 1 i fac i 1 fac Figura 41 Popup list dependente do escopo no qual esta o cursor Entretanto ainda nao se conseguiu visualizar funcionalidades como quick info e me thod tip Infelizmente a documenta o do VSIP espec fica sobre o Babel parece estar desa tualizada o que dificulta a busca pela causa dos problemas de suporte edi o ainda n o resolvidos Atualmente de modo a isolar esses problemas o aluno deste Trabalho de Gra dua o est realizando depura es n o apenas no parser Haskell utilizado pelo Haskell VSPackage como tam
17. sees ene nentes etant tn etes ath saisi seres anna na nada a ads aa aa asas sena n sain e 30 Figura 12 JGreator com suporte a Haskell 4 err te o eee rere pere en rane fe eden nea 31 Figura 13 Esbo o de interface para o caso de uso UCO1 sssssssssssssssssssssssseeeneeenneenneennattnretnrenn entre strr iter n rines 34 Figura 14 Esbo o de interface para o caso de uso UCO2 e seeeseeesaeeseeseeseesaeeseesnaeseeeseaeeege 35 Figura 15 Esbo o de interface para o caso de uso UCOB e seeeseeseeescaeseeseesaeesaeseaeseeeseaeeeaae 35 Figura 16 Esbo o de interface para o caso de uso UCOL ee cece cee eeee senesced cease se sees seseeeesaeseeseeesaeesaeseaeseeeseateage 36 Figura 17 Esbo o de interface para o caso de uso UCO5 sssssssssssssssssssssessseeseneeenneeneennrt tnr etnrenns inna stri tnr et nenas 36 Figura 18 Esbo o de interface para o caso de uso UCO6 Figura 19 Esbo o de interface para o caso de uso UCO7 sssssssssssssssssssssssseseeenee neret nre tnr etnr inns itnr stri teretes 37 Figura 20 Esbo o de interface para o caso de uso UCOB8 ssssssssssssssssssssseeeneeenneeeeennatteretnr enn setnr terret rennes 38 Figura 21 Esbo o de interface para o caso de uso UCOG sssssssssssssssssssseseeneeeneeeneeeneennrttnretnrenn set itrr etr inne nnas 38 Figura 22 Esbo o de interface para o ca
18. Add ins amp managed packages live together dispon vel em http blogs msdn com allend archive 2004 03 31 104829 aspx 26 03 2003 Bagley D Computer Language Shootout Scorecard dispon vel em http www bagley org doug shootout craps shtml 26 03 2004 Barry amp Associates Inc Web Services and Service Oriented Architectures dispon vel em http www service architecture com 24 03 2004 Boekhoudt G The Big Theory of IDEs ACM Queue p 74 83 outubro 2003 BYTE COM A Brief History of Programming Languages dispon vel em http www byte com art 9509 sec7 art19 htm 29 03 2004 C Corner Cobol NET Programming dispon vel em http Awww c sharpcorner com cobolnet code asp 23 03 2004 C2 com Cunningham amp Cunningham Inc Haskell Language disponivel em http c2 com cgi wiki HaskellLanguage 23 03 2004 C2 com Cunningham amp Cunningham Inc s Visual Basic Preferred Over Csharp At Dot Net dispon vel em http c2 com cgi wiki IsVisualBasicPreferredOverCsharpAtDotNet 22 03 2004 C2 com Cunningham amp Cunningham Inc Literate Programming dispon vel em http c2 com cgi wiki LiterateProgramming 23 03 2004 Caml org The Caml language dispon vel em http caml inria fr 23 03 2004 Cunha C Pro NET Processos de Desenvolvimento de Software para a Plataforma NET Encontro da Qualidade e Produtividade em Software EQPS Fortaleza setembro 2003 Donzeau Gouge V Huet G Kahn G Lang B Programming e
19. Haskell que semelhantemente ao WinHugs n o possui suporte na tivo edi o de c digo mas se comunica com editores externos como o Vim ou Emacs Ela permite a cria o de projetos Haskell e suporta o processo de compila o invocando o GHC Adicionalmente poss vel navegar pelos arquivos e m dulos Haskell do projeto al m de obter relat rios contendo uma documenta o simples de cada m dulo e gerenciar uma lista das tarefas a fazer todo list Um screenshot da ferramenta em execu o pode ser visualizado na Figura 11 29 File Project Build Cys Settings Tools Windows Split into global system mese e pre o Added module Version to project Added module GlobalData to project Project hIDE saved add font selection dialog and make this an option How to recognize difference between Foo datatype and If a project with the same targetName already exists a Modules GOOG Modules ConfigParser Dialogs Dir Walk Editor Eq TagEntry File Handling LTagEntry a Find O Area rd TagEn O Result are LT O search createResultWindow E disnlasRaculte Figura 11 Ferramenta hIDE em execu o O hIDE est dispon vel apenas para plataformas Unix o que diminui consideravel mente seu campo de aplica o Adicionalmente o fato desta IDE ser feita do zero implica em muito trabalho para a adi o de novas funcionalidades que poderiam ser mais facilmen te obtidas a partir da adapta o de u
20. Melhorias Gerais do Assignment Manager A Universidade Estadual Paulista Julio de Mesquita Filho UNESP 79 est implementando um conjunto de melhorias para o AM como a divis o de estudantes em classes dentro de um mesmo curso o acesso a informa es de estudantes por parte de professores e admi nistradores do AM Server extra o de an lises estat sticas e acesso a informa es mais ricas sobre exerc cios pendentes e submetidos 2 5 2 Ferramentas de Suporte a Projetos e Edi o de C digo Haskell Esta subse o apresenta algumas op es atualmente dispon veis ao programador Haskell para o desenvolvimento de aplica es Existem alguns esfor os relativos extens o de ou tras IDEs al m do VS NET para suportar a utiliza o de Haskell Outros projetos por sua vez apresentam ambientes desenvolvidos exclusivamente para Haskell 2 5 2 1 Extens o do Eclipse O Eclipse 16 uma IDE aberta e extens vel implementada em Java e que roda em v rias plataformas Uma express o que define muito bem a ferramenta uma IDE para tudo e nada em particular 74 Alguns projetos realizados com base no Eclipse tornaram se muito bem sucedidos como a extens o da IDE para Java Recentemente Leif Frenzel publicou a vers o 0 1 0 de um projeto que estende o Eclipse para o suporte a Haskell 22 No momen to este projeto suporta apenas a compila o execu o e edi o de c digo Haskell com recursos como syntax coloring
21. O primeiro permitir que o leitor visualize com mais clareza o produto final a ser atingido pelo projeto VHS AM O segundo viabilizar que o modelo de extens o do VS NET detalhado no cap tulo a seguir seja discutido em termos dos casos de uso e RNFs aqui apresentados justificando de maneira mais precisa a escolha da abordagem utilizada no projeto De acordo com a metodologia Pro NET apresentada em mais detalhes no Cap tulo 6 o aluno deste Trabalho de Gradua o por executar fun es de ger ncia de projeto foi o respons vel pela elabora o do Documento de Especifica o Funcional DEF que detalha e relaciona os casos de uso e requisitos n o funcionais da aplica o a ser desenvolvida Em uma etapa posterior este documento foi validado com toda a equipe permitindo o in cio da Fase de Desenvolvimento do projeto As informa es contidas neste cap tulo portanto t m como base o DEF j validado pela equipe do projeto VHS AM 3 1 Atores da Aplica o A metodologia Pro Net define que um passo anterior identifica o dos casos de uso de uma aplica o consiste na defini o de seus atores isto dos pap is desempenhados pe los usu rios da aplica o Al m de representar pessoas os atores tamb m podem ser dis positivos de hardware ou at mesmo outras aplica es que devam trocar informa es com a aplica o a ser desenvolvida A lista dos atores identificados no projeto exibida na Tabela 1 que mostra
22. ao projeto VHS AM devido ao fato do primeiro estar inserido no segundo As atividades realizadas por um outro desenvolvedor por sua vez ser o devidamente creditadas ao mesmo de modo a evitar a atribui o indevida de resultados obtidos nos projetos VHS e VHS AM ao aluno deste Trabalho de Gradua o 14 1 3 Organiza o deste Documento O restante deste relat rio est estruturado da seguinte maneira o Cap tulo 2 apresenta o contexto tecnol gico que motivou e embasou o desenvolvimento deste trabalho assim como trabalhos similares e anteriores O Cap tulo 3 por sua vez apresenta o escopo do projeto em termos de seus principais casos de uso O Cap tulo 4 discute os diferentes mecanismos de extens o do VS NET luz dos casos de uso especificados enquanto o Cap tulo 5 deta lha a abordagem de implementa o e apresenta os resultados obtidos com este Trabalho de Gradua o o que se reflete no atual status do projeto VHS AM O Cap tulo 6 apresenta a metodologia Pro NET e como a mesma foi aplicada para o gerenciamento do projeto en quanto o Cap tulo 7 conclui acerca do trabalho apontando os pr ximos passos a serem rea lizados A lista das Refer ncias Bibliogr ficas utilizadas na elaborac o deste documento por fim encerra o trabalho 2 CONTEXTO Esta se o tem como objetivo inserir o leitor no contexto da realiza o deste trabalho per mitindo um melhor entendimento da motiva o e relev ncia do mesmo Ser o
23. apresentados os conceitos ferramentas e tecnologias necess rias ao desenvolvimento do projeto VHS AM assim como alguns trabalhos similares e anteriores que influenciaram seu desenvolvi mento 2 1 Uma Breve Hist ria das Linguagens de Programa o Quando o ser humano passou a manusear aparelhos mais complexos do que o baco e as arcaicas m quinas somadoras para computar seus c lculos 24 tornou se evidente a ne cessidade pela automa o do procedimento a ser executado pelos instrumentos que um dia evoluiriam at o hardware da atualidade Surgiram ent o os cart es perfurados fios el tri cos e v lvulas que algum tempo depois foram substitu dos por um procedimento um pouco mais automatizando de programa o a escrita de c digo bin rio ou hexadecimal capaz de ativar e desativar transistores N o demorou muito para que este m todo primitivo de pro grama o efetuado instru o por instru o fosse considerado uma atividade entediante demorada e bastante sujeita a erros 71 Adicionalmente os programas elaborados eram bastante dif ceis de ler e ainda mais complexos de se manter principalmente pelo endere camento absoluto de mem ria O desenvolvimento de linguagens de baixo n vel como as diferentes vers es de As sembly chegou a reduzir o problema mas de maneira bastante limitada Os programadores ainda desejavam um maior poder de abstra o como estruturas de c digo pontos flutuan tes e indexa
24. beneficiados pela exist ncia de uma estrutura para o ensino e aprendizado da lingua gem Haskell Desenvolvedores do VSIP VS NET e Assignment Manager ser o beneficiados pela base de conhecimento a ser gerada com o projeto VHS AM permitindo que os mesmos tenham acesso a um n mero maior de li es aprendidas 81 Tabela 8 Lista de Riscos do projeto VHS AM ao fim da Fase de Vis o Risco Conseq ncia Mitiga o Conting ncia N o h documenta o rica sobre o modelo de exten s o automa o do VS NET Maior possibilidade de defeitos no c digo curva de aprendizado maior Leitura do manual do VSIP procura por novida des na Web Elabora o de um mini workshop para estudo mais profundo da tecnolo gia pedir aux lio externo A equipe n o experiente em COM combinado ou n o com Haskell A curva de aprendizado pode ser maior Estudo da tecnologia ela bora o de exemplos b sicos manuten o de uma base de conhecimento Elabora o de um mini workshop para estudo mais profundo da tecnolo gia pedir aux lio externo Sigbjorn algu m experi ente no pr prio Cln etc O tarball de Simon n o est est vel nem foi com preendido Inexist ncia de um baseli ne concreto para a imple menta o da aplica o Estudo mais profundo do tarball possivelmente do cumentando o Realiza o de um code review entre os membros para discussao do c digo pedir a
25. es comuns a todos os projetos como controle de vers o por exemplo Um exerc cio do Assignment Manager por tanto nada mais do que um projeto criado pelo professor no VS NET que cont m possi velmente trechos de c digo omitidos a serem preenchidos pelos estudantes Para publicar um exerc cio atrav s do Faculty Client o professor precisa inicialmen te estar com um projeto aberto no VS NET e consequentemente com uma solu o aberta tamb m Nos arquivos contendo o c digo fonte do projeto o professor pode marcar trechos de c digo e solicitar ao AM Faculty Client que considere o trecho selecionado como student code isto c digo que dever ser elaborado pelos estudantes para a conclus o do exer c cio Ap s a solicita o da publica o do exerc cio pelo professor atrav s do menu do VS NET o AM Server se encarrega de omitir os trechos de c digo marcados como student code Adicionalmente o professor pode especificar ao AM Server a execu o de auto build 25 e ou auto check nas respostas submetidas pelos alunos O auto build verifica que o projeto esta compilando sem erros enquanto o auto check verifica a corretude da resposta do aluno atrav s da especifica o de arquivos de entrada e de sa da para a aplica o Caso a sa da especificada pelo arquivo de sa da seja igual obtida atrav s da execu o do projeto resposta do aluno a partir do arquivo de entrada o teste considerado bem sucedido
26. fato de isso ser um requisito para formalizar e oficializar o trabalho diante da Microsoft 3 4 2 NF02 Integra o com o lexer parser do GHC O lexere o parser a serem utilizados pela solu o devem ser os mesmos do GHC Isto per mite uma s rie de vantagens como uma melhor extensibilidade da solu o em rela o evolu o da linguagem Haskell e uma maior facilidade na extra o de informa es semanti cas do c digo elaborado pelo programador por exemplo 3 4 3 NF03 Usabilidade Uma vez que a aplica o desenvolvida esteja devidamente instalada o usu rio do VS NET e do Assignment Manager n o precisar o acessar modificar qualquer configura o especifi ca dessas ferramentas para poder utiliz las com a linguagem Haskell Em outras palavras o usu rio deve se sentir como se estivesse utilizando qualquer uma das linguagens que ori ginalmente acompanham o VS NET como C ou VB NET por exemplo 3 4 4 NF04 Estabilidade O VS NET e o Assignment Manager devem se comportar de maneira est vel ap s a aplica o ser registrada N o se deve esperar que a aplica o aborte ou trave durante a utiliza o de Haskell em um determinado cen rio se este comportamento n o observado esperado com outras linguagens que originalmente acompanham o VS NET como C ou VB NET por exemplo 41 3 4 5 NF05 Performance O VS NET e o Assignment Manager durante a utilizac o de Haskell devem apresentar per formance semelh
27. http gcc gnu org 28 03 2004 Griffiths l Flanders J Sel C Mastering Visual Studio NET 1a edi o editora O Reilly mar o 2008 Haaften R JCreator with Haskell Support dispon vel em http www students cs uu nl people rjchaaft JCreator 25 03 2004 Hampton W What is a Tarball How do extract it dispon vel em http www redhat linux com my faq common15 html 27 03 2004 Haskell org A Gentle Introduction to Haskell Version 98 dispon vel em http www haskell org tutorial 23 03 2004 Haskell org Alex A lexical analyser generator for Haskell dispon vel em http www haskell org alex 28 03 2004 Haskell org Building the Glasgow Functional Programming Tools Suite Notes for building under Windows dispon vel em http Avww haskell org ghc docs latest html building winbuild html 28 03 2004 Haskell org Building the Glasgow Functional Programming Tools Suite The Makefile Archi tecture dispon vel em http www haskell org ghc docs latest html building sec makefile arch html 28 03 2004 Haskell org Happy The Parser Generator for Haskell dispon vel em http www haskell org happy 28 03 2004 Haskell org Haskell A Purely Functional Language dispon vel em http www haskell org 23 03 2004 Haskell org Hugs Online dispon vel em http Avww haskell org hugs 25 03 2004 Haskell org Libraries and Tools For Haskell Integrated Development Environments dis ponivel em http Awww haskell org lib
28. ncias e li es aprendidas por terceiros com a tecnologia 46 ser o encontradas com maior dificuldade Por fim importante observar que todas as ca madas de extens o t m acesso ao automation object model do VS NET Este um objeto exposto pelo VS NET que permite a programadores invocarem m todos relativos ao pr prio ambiente de desenvolvimento permitindo a automa o de tarefas que normalmente seriam feitas de maneira manual Estes e demais conceitos ser o apresentados detalhadamente nas subse es a seguir 4 2 Automation Object Model AOM 4 2 1 A tecnologia O VS NET composto por v rias janelas de ferramentas como a toolbox e a tasklist e v rias janelas de documento como os editores de c digo fonte todas relacionadas entre si O automation object model AOM do VS NET cont m objetos e interfaces da IDE que podem ser acessados programaticamente para o controle e extens o da IDE manipulando seus comandos e janelas O AOM inclu do no VS NET e est publicamente documentado Os objetos propriedades e interfaces do AOM prov em acesso a diversos aspectos do VS NET Alguns lidam com projetos e solu es outros com a interface gr fica outros com controle de vers o outros com comandos outros com o depurador e outros por fim com configura es gerais da IDE por exemplo Em outras palavras o Automation Object Model composto de varios submodels cada um cobrindo uma determinada categoria de func
29. nos ajudou a chegar at aqui Em especial agradeco a Andr Amaral Fernando e Gustavo vulgos Coe Iho Passaro e Danzi por todos os momentos projetos e discuss es pelas quais passamos juntos Agradeco tamb m a Igor Gatis pelas horas e horas de MSN Messenger compartilha das durante a realiza o deste projeto madrugada ap s madrugada A Mauro Ara jo e Marden Menezes agradeco a oportunidade de estar trabalhando com eles neste projeto por poder compartilhar n o apenas todas as conquistas como tam b m todas as dificuldades Apenas para n o perder o costume voc s j deram uma olhada nas suas pend ncias A todos do Centro XML Qualiti fica o agradecimento pelos recursos disponibiliza dos assim como pela a flexibilidade e bom senso essenciais para a conclus o deste traba lho A Adeline um agradecimento especial pelo apoio de sempre e as velhas discuss es t cnicas Aos amigos dos tempos de col gio obrigado por ainda estarem presentes pela dis posi o sempre renovada a cada encontro e a cada lembran a Simon e Krasimir ser que algum dia voc s v o ler e entender isso Caso sim agradeco pela cooperac o e ajuda sem as quais este trabalho n o seria poss vel ou seria bem mais complexo assim como pela paci ncia nos momentos dif ceis Por fim agrade o ao Google a maior inven o da Web por todas as buscas propor cionadas As coisas seriam realmente mais dif ceis sem voc Anar W B Furtado
30. o A disciplina de Planejamento amp Gerenciamento abrange os principais aspectos do planejamento e gerenciamento de projetos em um conjunto de atividades bem definidas O planejamento agrupa os v rios planos criados sendo alguns deles em outras disciplinas em um Plano de Projeto integrado considerando uma data fixa para a entrega da solu o e o uso de buffer time para acomodar futuros problemas ao longo do desenvolvimento O ge renciamento do projeto deve assegurar que as atividades programadas est o sendo execu tadas gerenciar mudan as e garantir a qualidade dos artefatos produzidos e dos processos executados Ao final do projeto devem ser capturadas as li es aprendidas A disciplina de Riscos por sua vez descreve uma maneira pr ativa de lidar com incerteza e a considera nas decis es no ciclo de vida do projeto A disciplina inclui identifica o prioriza o plane jamento monitora o e controle dos riscos Ao longo do projeto essencial a captura de li es aprendidas com os riscos A disciplina Ambiente amp Gerencia de Configura o por fim descreve como tratar a evolu o dos artefatos produzidos a gera o de releases e builds de uma aplica o sendo desenvolvida e o controle das solicita es de mudan as na solu o Uma pr tica sugerida a integra o cont nua do c digo da aplica o Outro objeti vo planejar e gerenciar o ciclo de vida dos ambientes e dos recursos de hardware e soft ware do p
31. o de arrays sendo necess ria portanto uma separa o maior entre as tare fas especificadas por um programa e os passos executados pelo hardware O surgimento dos compiladores na d cada de 50 viabilizou a concretiza o de tal desejo 8 As primeiras linguagens de m dio n vel como Fortran 1957 Lisp 1958 e Co bol 1959 foram aos poucos dividindo espa o com as linguagens Assembly 46 Hoje meio s culo depois cerca de 2500 linguagens de programa o est o catalogadas 45 sendo es ta variedade constitu da das populares C C e Java s praticamente desconhecidas Pizza TESSARACAT e Woodenman Entre essas milhares de linguagens de programa o h uma que se destaca por fa zer parte das principais tecnologias utilizadas em reas que empregam o paradigma de pro grama o funcional a linguagem Haskell 34 Apesar de ser bastante difundida neste nicho espec fico a linguagem funcional Haskell enfrenta atualmente algumas limita es que im pedem sua maior populariza o e o aumento de seu campo de aplica o 80 16 2 2 Compreendendo Linguagens Funcionais Virtudes e Defici ncias C Java e Pascal s o linguagens de programa o imperativas no sentido de que progra mas constru dos nessas linguagens consistem em uma seq ncia de comandos executa dos estritamente um ap s o outro Um programa feito em uma linguagem funcional como Haskell por outro lado uma nica express o A execu o de um progra
32. programa como simplesmente VSIP termo ainda comumente usado para designar o mesmo e que contribuir para n o sobrecarregar o texto aqui apresentado Apesar de gratuito necess rio concordar com uma licen a para a inscri o no VSIP 49 O aluno deste Trabalho de Gradua o foi o respons vel por ler integralmente es ta licen a para levantar eventualmente discuss es sobre a n o conformidade dos projetos VHS VHS AM com algum item da licen a Fazer parte do VSIP significa ter acesso s interfaces utilizadas no pr prio desenvol vimento do VS NET usando o VS NET Integration SDK Atrav s da implementa o de com ponentes COM a partir destas interfaces poss vel criar Visual Studio Packages ou VS Packages que trocam servi os e dados com a IDE e seus built in VSPackages como o CSharpProjectPackage HtmlEditorPackage etc Um VSPackage um componente COM registrado de uma maneira especial que publica servi os atrav s de entradas no registro do Windows O VS NET carrega VSPackages automaticamente quando seus servi os s o ne cess rios Apesar de todos os VSPackages implementarem a mesma interface VsPackage o conjunto de funcionalidades oferecido por cada um pode variar bastante VSPackages permitem a implementa o de funcionalidades antes imposs veis com macros e add ins Obviamente do mesmo modo que add ins s o mais custosos de se im plementar do que macros a constru o de um VSPackage muito mais c
33. projeto VHS AM que pretende oferecer um ambiente de programa o que d suporte utiliza o pr tica e produtiva de Haskell atrav s do modelo de extens o e auto ma o oferecido pela IDE Visual Studio NET 2003 Adicionalmente validada a integra o da IDE estendida com a ferramenta acad mica Assignment Manager com o objetivo de dis seminar o uso de Haskell e ampliar seu o campo de aplica o Por fim realizada uma dis cuss o em torno da utiliza o da metodologia de desenvolvimento de software Pro NET na condu o formal do projeto Palavras chave Haskell integra o extens o Visual Studio NET Assignment Manager Pro NET ABSTRACT Haskell is one of the most popular programming languages in areas that use the functional programming paradigm However it is known that some language constraints make Haskell to be overlooked in other major programming areas Such limitations include the loose inte gration with commonly used tools and the lack of an integrated development environment which would lead to a more productive and less error prone programming process The work presented in this paper is a subset of the VHS AM project which intends to offer to the Has kell community an integrated development environment that supports a practical and pro ductive use of the Haskell language The approach is based on Microsoft Visual Studio NET 2003 extensibility and automation model In addition the extended IDE is v
34. que a quest o da performance definitivamente nao pode ser usada como argu mento para justificar a n o utiliza o de linguagens funcionais Comprovando tal afirmativa um trabalho publicado pelo pr prio aluno deste Trabalho de Gradua o 23 juntamente com seu orientador constatou que as performances de duas vers es de um mesmo jogo n o muito complexo uma desenvolvida em Haskell e outra na linguagem C tendem a se igualar quando uma configura o razo vel de hardware est presente Outras defici ncias de linguagens funcionais entretanto realmente contribuem para restringir sua aplica o em mais areas da computa o O conjunto de bibliotecas para adi cionar recursos a linguagens funcionais por exemplo ainda limitado O processo de insta la o e manuten o de compiladores depuradores e outras ferramentas que d o suporte a este tipo de linguagem por sua vez n o trivial Tal afirma o justificada essencialmen te devido ao fato de que muitas dessas ferramentas e suas op es s podem ser implanta das atrav s da compila o de seus c digos fonte e realiza o de configura es pontuais na m quina do usu rio Como boa parte dos desenvolvedores de ferramentas Haskell s o a deptos das plataformas Unix a quest o da configura o correta da m quina de um usu rio Windows de modo a suportar essas ferramentas exige um esfor o ainda maior Outro problema ocorre devido ao passado isolacionista das lingu
35. rio apenas manipular corretamente as chaves necess rias no registro do Windows e especificar a localiza o do arquivo de tem plate do m dulo Haskell Wizards de contexto por sua vez n o mostraram nenhuma aplica o para o projeto VHS AM pois nenhum caso de uso especificado se refere a skeleton insertion isto adi o de tipos da linguagem como fun es tipos abstratos de dados etc a um m dulo Has kell Entretanto este tipo de wizard ser certamente utilizado no futuro quando as propostas levantadas para o projeto VHS referentes a skeleton insertion forem implementadas 56 4 7 Visual Studio Industry Partner VSIP Program 4 7 1 A tecnologia As se es anteriores mostraram diversos mecanismos de automa o extens o e integra o do VS NET Apesar de suas vantagens esses mecanismos de uma maneira geral n o atendem s necessidades do projeto VHS AM sendo necess rio um n vel mais profundo de integra o O VSIP um programa lan ado pela Microsoft significando Visual Studio Industry Partner Desse modo dando uma maior aten o nomenclatura utilizada pela Microsoft o termo VSIP se refere pessoa ou empresa que est inscrita no programa e n o ao progra ma em si sendo este ltimo corretamente referenciado como VSIP Program Entretanto es ta nomenclatura recente pois VSIP significava Visual Studio Integration Program ainda no segundo semestre de 2003 Este documento se referir ao
36. tamb m uma breve descri o para cada um deles Tabela 1 Atores identificados no projeto VHS AM Ator Descri o Indiv duo que utilizar o VS NET estendido com o objetivo de elabo Programador Haskell rar aplica es em Haskell Indiv duo que utilizar o AM Faculty Client beneficiado pelo VS NET estendido com o objetivo de criar e publicar exerc cios acad micos Manager da linguagem Haskell que envolvam codifica o Este ator uma especializa o do ator Programador Haskell Professor Assignment Indiv duo que utilizar o AM Student Client beneficiado pelo VS NET estendido com o objetivo de responder e submeter exerc cios aca Manager d micos da linguagem Haskell que envolvam codifica o Este ator uma especializa o do ator Programador Haskell Aluno Assignment GHC Glasgow Haskell Compiler Compilador Haskell a ser eventualmente invocado pelo VS NET 32 3 2 Conven es Os casos de uso foram rotulados unicamente atrav s de uma numera o espec fica que inicia com o identificador UCO1 e prossegue sendo incrementada O mesmo se aplica para requisitos n o funcionais que iniciam com RNF01 Ao contr rio do Documento de Especifica o Funcional do projeto este cap tulo ir apresentar apenas a descri o o ator relacionado em texto sublinhado e um esbo o de interface para cada caso de uso sendo omitidos atributos como prioridade casos de uso relac
37. uso Interactive query GHC lt gt Figura 25 Esbo o de interface para o caso de uso UC13 3 3 14 UC14 Instalar o suporte a Haskell no VS NET O Programador Haskell deve ser capaz de instalar no Visual Studio NET 2003 a aplica o desenvolvida no projeto VHS AM fazendo com que a IDE passe a oferecer suporte lin guagem Haskell 3 3 15 UC15 Compilar uma aplica o Haskell Atrav s do comando CTRL SHIFT B padr o do VS NET o Programador Haskell deve ser capaz de compilar a solu o do VS NET em desenvolvimento de modo a gerar um exe cut vel e verificar se seu c digo fonte est livre de erros de compila o 40 3 3 16 UC16 Executar uma aplica o Haskell Atrav s do comando CTRL F5 padrao do VS NET o Programador Haskell deve ser ca paz de executar a aplica o em desenvolvimento de modo a interagir com a mesma pro cura de defeitos e aferir sua qualidade 3 4 Requisitos N o Funcionais do Projeto VHS AM 3 4 1 NF01 VSIT Compliance O VSIT Visual Studio NET Integration Test desenvolvido pela Microsoft consiste em uma suite de testes de integra o Sua fun o verificar que um pacote de extens o do VS NET n o quebra nenhuma funcionalidade principal do Visual Studio NET garantindo que a insta la o e desinstala o da aplica o desenvolvida funcionem como esperado Portanto a a plica o desenvolvida deve estar em concord ncia com o VSIT at mesmo pelo
38. veis inclusive a partir da MSDN Brasil 68 estes kits s o e xemplos de aplicac es ASP NET onde poss vel encontrar c digos completos documen tados e gratuitos que auxiliam no desenvolvimento de tarefas comuns na Web podendo ser estendidos inclusive para prop sitos comerciais No caso do VHS AM o programa da Microsoft Shared Source Initiative que viabilizou o projeto foi o Visual Studio NET Academic Tools Source Licensing Program 65 Este pro grama permite que estudantes professores e pesquisadores acad micos entre outros indi v duos possam ter acesso e alterar o c digo fonte do conjunto de componentes que formam a ferramenta Assignment Manager 1 1 3 RFP para Extens o do Assignment Manager No segundo semestre de 2003 a Microsoft anunciou mundialmente uma chamada por pro postas termo mais comumente conhecido como request for proposals ou RFP para a ex tensao da ferramenta Assignment Manager cujo c digo acess vel atrav s da Microsoft Shared Source Initiative como explicado acima O aluno deste Trabalho de Gradua o ofereceu sugest es para a proposta inicial mente elaborada pelo seu orientador em resposta ao RFP contribuindo portanto para a vers o final da mesma Em resumo a proposta enviada consistiu na extens o da ferramenta Assignment Manager para que a mesma suportasse projetos desenvolvidos na linguagem Haskell al m de altera es no pr prio VS NET que tamb m objetivassem o suporte a Ha
39. 12 UC13 De acordo com o cronograma inicial do projeto VHS AM e com o prazo de entrega deste Trabalho de Graduac o era esperado que o release interno 2 estivesse conclu do na entrega deste documento Conforme ser discutido no Cap tulo 5 alguns casos de uso e requisitos n o funcionais tiveram sua prioriza o repensada havendo mudan as na ordem de implementa o dos mesmos e provocando atualiza es no cronograma Atualmente o projeto VHS AM encontra se no processo de conclus o de seu release interno 2 43 3 6 Demais Propostas de Casos de Uso Algumas propostas iniciais tiveram que ficar de fora do escopo do projeto VHS AM devido a restri es de recursos e cronograma Entretanto tais propostas podem voltar a ser discuti das no projeto VHS original ou ainda no pr prio projeto VHS AM caso o escopo inicialmente definido seja conclu do antes do prazo Uma listagem dessas propostas segue abaixo e Auto identac o de texto e Inser o de tipos da linguagem tipos abstratos de dados fun es etc em um m dulo a par tir de wizards e Documenta o de c digo baseada em XML como o caso da linguagem C e Ajuda din mica ligada documenta o existente na Haskell org e Suporte a um modelo de c digo code model e Suporte depura o e Suporte a projetos Windows e Web para Haskell e Suporte cria o de c digo gerenciado pelo Common Language Runtime CLR do NET Framework 4
40. 4 4 ESTENDENDO O VISUAL STUDIO NET 2003 Uma das primeiras certezas estabelecidas para este Trabalho de Gradua o e os projetos VHS VHS AM foi a escolha de n o criar uma IDE totalmente nova para Haskell e sim adap tar uma IDE extens vel j existente para que a mesma oferecesse suporte linguagem Acredita se que a escolha do Visual Studio NET 2003 como IDE a ser estendida foi extre mamente feliz tendo em vista o rico conjunto de funcionalidades oferecido pelo modelo de extens o e automa o desta IDE Apesar das vers es originais do VS NET oferecerem um amplo conjunto de ferra mentas e o poder para a concretiza o de diferentes tarefas como mostrou o Cap tulo 2 alguns desenvolvedores ou empresas podem necessitar de um nivel de intera o mais de talhado com a IDE 53 Este n vel pode ser proporcionado pela utiliza o do modelo e ex tens o e automa o do VS NET que possibilita enriquecer as funcionalidades j existentes e adicionar uma infinidade de novas funcionalidades IDE Este cap tulo discute os diferentes mecanismos de extens o e automa o do VS NET luz dos casos de uso discutidos no cap tulo anterior Boa parte do conte do a presentado neste cap tulo foi documentado e apresentado pelo aluno deste Trabalho de Gradua o equipe do projeto VHS AM na Fase de Planejamento do projeto em que se gundo a metodologia Pro NET ocorrem discuss es sobre a escolha das tecnologias a se rem utilizad
41. AOM sendo o mesmo utilizado em menor es cala para a implementa o de casos de uso nesta abordagem Em resumo o AOM n o par ticipou da escolha dos mecanismos de extens o a serem utilizados sendo uma tecnologia acionada sob demanda de acordo com as necessidades e decis es do projeto ocasiona das por outras vari veis 4 3 Componentes Customizados na VS NET Toolbox 4 3 1 A tecnologia A toolbox do Visual Studio NET exibida na Figura 28 permite a inser o de componentes como bot es ou caixas de texto atrav s de comandos simples como arrastar e soltar Data Components Windows Forms h Pointer Bb Button v CheckBox ER CheckedListBox ColorDialog EB ComboBox E ContextMenu CrystalReportviewer S DataGrid Clipboard Ring v General Figura 28 Toolbox do VS NET 48 Uma vez presente em um formulario um componente pode ter suas propriedades e eventos acessados a partir da janela de propriedades do VS NET como mostra a Figura 29 importante observar que componentes podem ter uma representa o visual associada ao mesmo como o caso de bot es e caixas de texto ou nao como o caso de timers e da tasets Start Page Form1 cs Design Form cs 1 JO xo q je aZ Form1 BE Properties button1 System windows Forms Button E A Modifiers Private RightToLeft No Size 75 23 TabIndex 0 TabStop True Tag Text OK TextAlign MiddleCenter Micihla True Tex
42. Application1 Location d temp Browse C Add to Solution Close Solution Project will be created at d temp HaskellConsoleApplication1 HaskellConsoleApplication1 Figura 14 Esboco de interface para o caso de uso UC02 EI Rp 4 b v Sab 3 a Add Assignment To Course Web Page Dialog 24 xi Cou rse M a nagem Assignment Name Ep Assignment Description Work with Courses parser h ExpressionPars Work With Courses EE Ef Edit ES Delete Curso disponivel para alunos Compila o Conceitos basic Assignment Web Page Aspectos e Ferramentas pare sint tica e sem ntica Geraci ambientes de tempo de exec de c digo objeto Add Assignmentto Course res ww cin ufpe br ifl 20 Exp html El Course Links Add A Course Web Page http Choose Starter Project for Assignment e SableCC Object Orie El Course Assignments IV Remove code marked as student code No assignments listed OK Cancel Help ozmmmmnm Visa construir um parser para express es aritm ticas The assignment Web page is displayed in Visual Studio when a student downloads the assignment starter project E E E E M p R 2 Figura 15 Esbo o de interface para o caso de uso UC03 35 Student Course Tools Work With Courses ERA f Delete igi xi compiladores pane El Course Description Curso disponivel para al Compila o Co
43. Desse modo com o amadurecimento e submiss o da proposta deste Trabalho de Gradua o o aluno passou a estar envolvido em tr s projetos bastante correlacionados o projeto VHS o projeto VHS AM e o pr prio Trabalho de Gradua o TG Uma organiza o comparativa entre esses tr s projetos em rela o ao tempo pode ser visualizada atrav s da Figura 3 E ee INN out nov dez jan fev mar abr mai jun legenda Ll TG O VHS AM O vus Figura 3 Organiza o dos tr s projetos em rela o ao tempo Esta organiza o dos projetos no tempo revela que e Este Trabalho de Gradua o e o projeto VHS AM possuem prazos bem definidos ao contr rio do projeto VHS que um projeto da comunidade Haskell como um todo e pode vivenciar melhorias cont nuas sem compromissos temporais e Ap s a finaliza o do prazo deste Trabalho de Gradua o o aluno ainda estar envolvido di retamente com os projetos VHS AM e VHS sendo esperado que o conjunto de resultados a presentado neste documento seja enriquecido e melhorado no futuro Uma organiza o comparativa dos projetos em rela o ao escopo por sua vez po de ser visualizada na Figura 4 13 VHS VHS AM Figura 4 Organiza o dos tr s projetos em rela o ao escopo No tocante ao escopo dos tr s projetos pode se constar que As atividades executadas pelo aluno neste Trabalho de Gradua o na verdade s o um sub conjunto do projeto VHS A
44. M Este subconjunto se refere s atividades realizadas pelo aluno no projeto VHS AM at o prazo de entrega deste Trabalho de Gradua o isto meados de abril de 2004 O projeto VHS AM possui uma importante interse o com o projeto VHS Entretanto exis tem atividades espec ficas para cada projeto o projeto VHS n o possui necessariamente nenhum compromisso com a ferramenta Assignment Manager enquanto o projeto VHS AM n o pode assumir compromissos relativos conclus o da implementa o de novas funciona lidades que eventualmente sejam planejadas no projeto VHS Em outras palavras o planeja mento decorrente do uso da metodologia Pro NET est restrito equipe do projeto VHS AM Algumas atividades executadas pelo aluno satisfazem a todos os tr s projetos enquanto ou tras s o compartilhadas apenas pelo projeto VHS AM e este Trabalho de Gradua o Essas informa es apresentadas referentes modelagem da correla o entre os tr s projetos mostram se n o apenas necess rias para um melhor entendimento deste tra balho como tamb m se revelaram essenciais para que os pr prios desenvolvedores dos projetos tivessem uma no o clara sobre suas fronteiras de atua o Isto permitiu um traba lho mais consciente e consequentemente mais produtivo importante estar claro ao leitor que a utiliza o do termo este projeto no restante deste documento se referir ao Trabalho de Gradua o e consequentemente
45. UNIVERSIDADE FEDERAL DE PERNAMBUCO h Ay GRADUA O EM CI NCIA DA COMPUTA O CENTRO DE INFORM TICA VHS AM EXTENS O DO VISUAL STUDIO NET PARA A IN TEGRA O DE HASKELL COM A FERRAMENTA ASSIGNMENT MANAGER TRABALHO DE GRADUA O Andr Wilson Brotto Furtado awbf cin ufpe br Aluno Andr Lu s de Medeiros Santos alms cin ufpe br Orientador Abril de 2004 ASSINATURAS Este Trabalho de Gradua o resultado dos esfor os do aluno Andr Wilson Brotto Furta do sob a orienta o do professor Andr Lu s de Medeiros Santos na participa o do proje to VHS AM conduzido pelo Centro de Inform tica da Universidade Federal de Pernambuco e aprovado pela Microsoft Shared Source Initiative Todos abaixo est o de acordo com o conte do deste documento e os resultados deste Trabalho de Gradua o Andr Wilson Brotto Furtado Andr Lu s de Medeiros Santos RESUMO A linguagem funcional Haskell consolidada como uma das principais linguagens em reas que empregam o paradigma de programa o funcional Entretanto reconhecido que al gumas limita es provocam uma sub utiliza o do potencial da linguagem A timidez na in tegra o com ferramentas de mercado e a aus ncia de ambientes de desenvolvimento ob jetivando tornar a etapa de programa o mais produtiva e menos sujeita a erros s o duas das principais restri es identificadas O trabalho apresentado neste documento um sub conjunto do
46. a necessi dade de esperar a conclus o dos trabalhos de Krasimir Angelov A implementa o da adi o de um novo m dulo a um projeto Haskell foi realizada com sucesso pelo aluno deste Trabalho de Gradua o atrav s de um wizard de item ver Cap tulo 4 A implementa o do module viewer entretanto mostrou se um desafio muito mais complexo Ap s uma semana e meia de an lises chegou se conclus o de que n o seria poss vel implementar o module viewer sem a exist ncia de um suporte a projeto im plementado atrav s do VSIP trabalho que estava sendo realizado por Krasimir Angelov Deste modo decidiu se por mover este caso de uso para o terceiro release interno trocan do o pelo o caso de uso UCO1E Desenvolver c digo Haskell com suporte edi o method tip Assim o foco principal do segundo release interno consistiu em implementar demais funcionalidades de suporte edi o atrav s do Babel A implementa o de brace matching casamento entre pares de chaves par nteses foi parcialmente bem sucedida Atrav s do Babel o professor Andr Santos conseguiu im plementar o redirecionamento do cursor entre pares de chaves par nteses atrav s da com bina o de teclas CTRL e padr o do VS NET Adicionalmente exibida com sucesso na satus bar do VS NET a linha de c digo que cont m o par correspondente de um par nte se chave conforme mostra a Figura 40 Entretanto por raz es ainda desconhecidas n o foi
47. a utiliza o mais amig vel dos comandos do Hugs original carregar um m dulo haskell executar a fun o main sair da aplica o copiar colar recortar etc e tamb m navegar pelas estruturas de dados das bibliotecas padr o de Haskell Um screenshot da ferramenta em execu o pode ser visualizado na Figura 10 28 Hugs for Windows 32 DER File Edit Interpreter Browse Help HH FEM ted tE IA Hugs 98 Based on the Haskell 98 standard RS E Du RR Copyright c 1994 2003 11 World Wide Web http haskell org hugs Il Report bugs to hugs bugs haskell org Version Nov 2003 Haskell 98 mode Restart with command line option 98 to enable extensions Type for help Prelude 1 c temp Math hs Math fac 5 120 Math is 5 a amp S lA 3e i fee e Figura 10 WinHugs em execu o Uma desvantagem evidente do WinHugs al m de suas limita es funcionais o fa to dele apenas interpretar e n o compilar c digo Haskell diminuindo seu campo de aplica o Entretanto a equipe do projeto VHS AM reconhece que a interpreta o de c digo importante em determinados casos como a an lise est tica de um m dulo Haskell em de senvolvimento e pretende incluir no VS NET estendido uma barra de ferramentas que per mita ao usu rio a invoca o de comandos de um interpretador como o pr prio Hugs ou o GHCi que acompanha o GHC 2 5 2 3 hIDE O hIDE uma IDE para
48. agao da metodologia Pro NET para um projeto externo ao Centro de Tecnologia XML do Recife esta sendo um trabalho bastante interessante Uma base de con quistas desafios e li es aprendidas em rela o ao uso da metodologia est sendo monta da de modo a permitir que a Pro NET seja melhorada em um futuro pr ximo 7 3 Trabalhos Futuros Dar seq ncia ao projeto VHS AM uma atividade natural a ser efetuada pelo aluno deste Trabalho de Gradua o Depois da conclus o do segundo e terceiro releases internos deve ser avaliada a possibilidade de uma nova itera o no projeto abordando funcionalidades que ficaram de fora desta primeira itera o como o suporte depura o por exemplo Mesmo que elas n o sejam implementadas como parte do escopo do projeto VHS AM h a possibilidade delas serem realizadas como parte do projeto VHS Entretanto popularizar a linguagem Haskell e ampliar seu campo de atua o o ver dadeiro sentido deste trabalho n o est limitado pela integra o a uma IDE ou qualquer ou tra ferramenta Existem v rias restri es para a linguagem assim como identificado no Ca p tulo 2 que podem e devem ser atacadas no futuro Desse modo existem muitas possibili dades diferentes de contribui o para o crescimento de Haskell como linguagem e como comunidade Uma extens o deste trabalho que visa tal objetivo consiste em permitir a gera o de c digo gerenciado para a plataforma NET a partir de c d
49. agem suportada pelo VS NET que acompanha o VSIP Em uma etapa posterior o MyC foi testado em conjunto com o Assignment Manager revelando surpreendentemente uma falha nesta valida o tecnol gica integrada o AM n o reconheceu como v lido o tipo de projeto imple mentado no exemplo do MyC colocando em quest o se o AM seria capaz de suportar no vos tipos de projeto criados a partir do VSIP Este problema foi levantado no newsgroup do VSIP e diagnosticado como poss vel bug por alguns mas n o houve uma conclus o mais concreta sobre o assunto Uma outra valida o tecnol gica realizada em conjunto com Mauro Ara jo p de tranquilizar a equipe de projeto a ferramenta AM reconheceu sem pro blemas o tipo de projeto implementado pelo SML NET revelando que o ocorrido com o MyC provavelmente deveria se tratar de um bug 5 3 5 Implementa o das interfaces do VSIP pelo projeto VHS Ap s as valida es tecnol gicas efetuadas na etapa anterior o Unico conhecimento ainda n o dominado pela equipe do projeto VHS AM consistia no procedimento utilizado pelo c digo original do projeto VHS para a implementa o das interfaces do VSIP Esse c digo foi 69 portanto estudado em mais detalhes e debatido em algumas discuss es t cnicas lideradas pelo professor Andr Santos Um resumo dessas discuss es segue abaixo As interfaces do VSIP incluindo as do framework do Babel estao especificadas em IDL Desse modo necess rio utilizar
50. agens funcionais is to sua compatibilidade com outras tecnologias de certa forma limitada Atualmente es for os est o sendo realizados com o objetivo de superar tal defici ncia como a integra o de Haskell tecnologia COM por exemplo 70 Adicionalmente a pr pria falta de popularidade das linguagens funcionais consiste em um problema visto que elas s o menos difundidas do que linguagens como C C C e Java Aliando isto ao fato de que a sintaxe de linguagens funcionais difere bastante do pa dr o apresentado por estas outras linguagens h um impacto negativo na curva de aprendi zado de programadores que desejem migrar para o paradigma de programa o funcional Por fim para aplica es cuja performance cr tica outros tipos de linguagens s o mais adequados do que linguagens funcionais Por exemplo a constru o de uma aplica o de controle de tr fego a reo em tempo real para uma regi o de movimenta o muito inten sa pode abrir m o da produtividade de linguagens funcionais em troca da garantia de um tempo m nimo de execu o para suas rotinas De todas as defici ncias relativas a Haskell e linguagens funcionais em geral como as apresentadas acima existe uma bastante cr tica cujo impacto negativo prontamente reconhecido a aus ncia de ambientes integrados de desenvolvimento que d em suporte ao programador na execu o produtiva de suas atividades Em outras palavras a etapa de co 19
51. al Studio NET 2003 para que o mesmo ofere a suporte linguagem funcional Haskell Adicionalmente tamb m faz parte do escopo do pro jeto a integra o desse ambiente estendido intitulado Visual Haskell Studio ou VHS com a ferramenta acad mica Assignment Manager ou simplesmente AM que gerencia para professores e alunos o processo de publica o e submiss o de tarefas acad micas que envolvem codifica o Deste modo foi escolhido VHS AM como codinome para o projeto indicando que seu produto final integrar portanto tr s diferentes componentes a lingua gem Haskell a IDE Visual Studio NET 2003 e a ferramenta Assignment Manager O tipo de suporte a ser oferecido pelo Visual Studio NET 2008 linguagem Haskell suporte edi o suporte a projetos na IDE etc assim como um maior detalhamento da ferramenta Assignment Manager e do pr prio Visual Studio NET 2003 ser o apresentados no decorrer deste trabalho Esta se o por sua vez est focada em apresentar em linhas gerais o que levou ao surgimento do projeto VHS AM e discutir a rela o do mesmo com este Trabalho de Gradua o De modo a evitar que o texto aqui apresentado se torne muito carregado o restante deste documento poder se referir ao Visual Studio NET 2003 como simplesmente VS NET Analogamente poder ser utilizada a sigla AM para realizar refer ncias ferra menta Assignment Manager IDE Integrated Development Environm
52. al Studio NET IDE difus o da tecnologia Figura 26 Diferentes n veis de extens o do VS NET Os VS NET add ins por sua vez est o um n vel acima das VS NET macros Eles permitem a integra o de novos comandos a toolbars e menus adi o de novas janelas de ferramentas e uma automa o mais poderosa de fluxos de atividades executados de manei ra mais frequente no VS NET No mesmo n vel os VS NET wizards permitem extens o dos templates de projetos suportados pelo VS NET assim como dos itens de projetos que comp em esses projetos Por fim no topo da pir mide encontra se o VSIP Visual Studio Industry Partner Este programa oferecido pela Microsoft a desenvolvedores a ltima palavra na rea de automa o extens o do VS NET Atrav s da exposi o e intera o com toda a arquitetura e interfaces do pr prio VS NET o VSIP permite estender a IDE em diversos aspectos n o abordados pelos demais mecanismos de automa o extens o como a adi o de uma lin guagem de programa o ao ambiente por exemplo Algumas informa es adicionais podem ser extra das da Figura 26 Em primeiro lu gar intuitivo observar que quanto maior o n vel de integra o oferecido por uma tecnolo gia mais custosa a implementa o da integra o Al m disso quando mais especializada a tecnologia menor a sua difus o isto menos pessoas a utilizam Isto bastante ne gativo no sentido de que experi
53. alidated against a Microsoft academic tool called Assignment Manager aiming at spreading around the utiliza tion of Haskell and expanding its application boundaries Finally this work discusses the use fulness of the Pro NET software development methodology as a means to formally conduct the VHS AM project Keywords Haskell integration extensibility Visual Studio NET Assignment Manager Pro NET AGRADECIMENTOS Agradecer correr o risco de esquecer algu m Aqueles que nao foram listados aqui peco profundas desculpas e espero que compreendam que tal injustica n o foi causada por von tade pr pria mas por traic o da mem ria minha fam lia pais e irm s n o h palavras que sejam suficientes Voc s sabem mais do que eu mesmo que tudo isto se deve a voc s Obrigado por todo o apoio seja ele do quarto ao lado do estado ao lado ou do continente ao lado L cia de quem o Word insiste em tirar o acento vai um pacote conjunto de agra decimentos e desculpas Obrigado pela palavra pelo sil ncio e pelos momentos nas horas certas que tornaram o caminho at aqui tao mais leve Ao amigo e professor Andr Santos hora de agradecer n o apenas pela realiza o deste trabalho como tamb m por todas as oportunidades ao longo de uma longa gradua o Obrigado n o apenas pelo empenho mas tamb m pela confian a e motiva o durante todo esse tempo Obrigado a toda a turma CC99 1 pelo companheirismo e amizade que
54. anhada de uma solicita o ao prompt de comando o redirecionamento do output de standart error stderr para um arqui vo Isto evitou que o VS NET abortasse e o tarball p de finalmente ser testado Os testes realizados revelaram que o tarball apesar de ainda mostrar algumas defi ci ncias de performance e instabilidade superadas atualmente j apresentava com suces so a funcionalidade de syntax coloring implementada atrav s da segunda das abordagens disponibilizadas pelo Babel Figura 35 Uma vez completos os testes de caixa preta n o apenas o c digo do tarball como tamb m o seu build system passaram ser estudados em maior profundidade Essa etapa seguinte coincidiu com o surgimento oficial do projeto VHS AM precisando ser definido portanto um processo sistem tico para a adi o de novas fun cionalidades aplica o e uma infra estrutura para o ambiente de desenvolvimento do pro jeto 5 3 Novas Tecnologias e Ferramentas a Serem Dominadas A primeira dificuldade encontrada na identifica o do que era necess rio para a adi o de novas funcionalidades aplica o consistiu na n o familiariza o do aluno deste Trabalho de Gradua o com a tecnologia COM indispens vel para o entendimento da arquitetura de implementa o presente no tarball e em seu build system Desse modo um estudo sobre a tecnologia foi realizado sendo o resultado do mesmo documentado na Base de Conheci mento do projeto e apresentado eq
55. ante utiliza o dessas ferramentas com outras linguagens que original mente acompanham o VS NET como C ou VB NET por exemplo Entretanto durante o carregamento da aplica o pelo VS NET pela primeira vez pode se esperar um eventual delay 3 4 6 NF06 Implanta o O processo de implanta o da aplica o desenvolvida deve ser f cil e intuitivo n o exigindo experi ncia mais avan ada do usu rio N o se deve esperar nenhum procedimento a mais do que o processo padr o normalmente utilizado para implanta o registro de pacotes de extens o no VS NET Um manual do usu rio deve apresentar um passo a passo para esse processo de implanta o referenciando uma bibliografia mais completa Adicionalmente este manual deve especificar quais os pr requisitos necess rios para a implanta o da so lu o como a exist ncia do GHC por exemplo 3 4 7 NF07 Software A aplica o deve suportar obrigatoriamente a vers o 2003 do Visual Studio NET A princi pio a vers o 2002 n o faz parte do escopo do projeto 3 4 8 NF08 Hardware A aplica o n o deve exigir nenhuma configura o de hardware a mais do que o especifica do como m nimo para o VS NET e o Assignment Manager 3 5 Distribui o dos Casos de Uso atrav s dos Releases Internos do Projeto Segundo o gloss rio da metodologia Pro NET um release interno significa um estado co nhecido do produto em desenvolvimento obtido de maneira incremental Release
56. ar a produtividade do Programador Haskell um duplo clique em um erro exibido na taskbar deve posicionar o cursor para o local do c digo fonte que ocasionou o erro A Figura 21 apresenta um esbo o de interface para este caso de uso example hs main IO aae y Description Figura 21 Esbo o de interface para o caso de uso UCO9 3 3 10 UC10 Navegar para a defini o de um termo go to definition O Programador Haskell deve ser capaz de facilmente ser redirecionado para o local em que foi declarada uma vari vel ou em que foi implementada uma fun o Para isto a op o Go to definition deve estar dispon vel no menu popup que acionado quando o usu rio clica com o bot o direito do mouse no identificador A Figura 22 apresenta um esbo o de interface para este caso de uso 3 3 11 UC11 Adicionar comentarios TODO HACK UNDONE taskbar O Programador Haskell deve ser capaz de visualizar na taskbar tarefas que ele mesmo ou outro desenvolvedor definiu como pendentes Para adicionar tais tarefas o programador deve fazer uso de coment rios especiais TODO HACK UNDONE ao seu c digo fonte A Figura 23 apresenta um esbo o de interface para este caso de uso 38 Start Page Math hs module Math where increments a value by one inc Int Int incon somn et teste ihe 3 b Cut Copy im Paste 4I Insert Breakpoint tm New Breakpoint M Go To Definition Go To Declaration
57. arch Cambridge As atividades iniciais do aluno en volvido neste Trabalho de Gradua o portanto consistiram em estudar analisar e testar o trabalho at ent o desenvolvido no projeto VHS O mesmo tamb m foi respons vel por con sistir o status e os objetivos do projeto em um website acess vel em http www cin ufpe br haskell vhs sendo criada uma identidade visual para o projeto apre sentada na Figura 1 Deste modo o aluno foi integrado ao projeto VHS juntando se equi pe inicialmente formada por seu orientador professor Andr Santos o pesquisador Simon Marlow e o desenvolvedor b lgaro Krasimir Angelov yo Visual Studio net Figura 1 Identidade visual para o projeto VHS Na poca a vers o 2002 do Visual Studio NET ainda era a mais popular entre os desenvolvedores sendo a vers o 2003 uma novidade 10 1 1 2 A Microsoft Shared Source Initiative De modo a disponibilizar seu c digo fonte de maneira mais ampla para clientes parceiros o governo e principalmente para a academia a Microsoft criou uma s rie de programas e licengas especiais para atingir tal objetivo obtendo tamb m beneficios a partir deles Este conjunto de licen as e programas chama se Microsoft Shared Source Initiative 58 Um dos casos mais bem sucedidos da Microsoft Shared Source Initiative por exem plo consiste nos ASP NET Starter Kits 54 utilizados pela empresa para a difus o da tec nologia ASP NET 64 Dispon
58. as de ferramentas similares s do VS NET mas que funcionam especificamente para ma cros A Figura 30 apresenta a VSMacros IDE revelando sua semelhan a com o VS NET Caso o programador n o sinta a necessidade de editar e depurar macros abrindo m o portanto da VSMacros IDE ainda sim ele poder ter um controle sobre as macros gravadas por ele e demais macros dispon veis no VS NET Este controle realizado pela janela de ferramentas intitulada Macro Explorer que exibe todas as macros do sistema permitindo sua deleta o renomea o e execu o al m de disparar a VSMacros IDE caso esta seja a vontade do usu rio O Macro Explorer apresentado na Figura 31 50 Samples Microsoft Visual Studio Macros design VSEditor DEAR File Edit View Project Debug Tools Window Help ie i EMi E mi o c 8 5 yl EL Ba m Y AMM Project Explorer Sa M X E Modulei EnvironmentEvents EnvironmentEvents SEditor q Px EB MyMacros Option Strict Off E Samples Option Explicit Off E References E DevStudioeEditor o Imports EnvDTE d ee le Imports System Diagnostics MakeAddin E DR E Utilities Imports Microsoft VisualBasic im VSDebugger Imports Microsoft VisualBasic ControlChars E vsEditor m 9 9 E R A 8 c E Public Module VSEditor CommentRegion puts line oriented comment Of every line the selection touches and ci there is only one undo action for all the CommentRegi
59. as para a implementa o da aplica o a ser desenvolvida 4 1 Vis o Geral dos Mecanismos de Extens o do VS NET Antes de escrever qualquer linha de c digo necess rio definir a profundidade da extens o que se deseja obter a partir do VS NET A Figura 26 apresenta esses diferentes n veis de extens o comparativamente Na base da pir mide est o as possibilidades de extens o b sicas como a customi za o geral do ambiente e a adi o de componentes na toolbox do VS NET o que ser a presentado a seguir Um n vel acima est o as macros do VS NET conceito que tradicionalmente apli cado na automa o de tarefas rotineiras mas que no contexto do VS NET aumenta o poder dos programadores atrav s de novos recursos suportados por uma rica infra estrutura da 13 A t tulo de ilustra o as empresas IBM Rational CompuWare e Crystal estendem o VS NET para o desenvolvimento de ferramentas como o popular Crystal Reports para gera o de relat rios en quanto empresas como a Fujitso e a ActiveState estendem o VS NET para o suporte a novas lingua gens como o Cobol NET 9 45 IDE como a edi o e depura o de macros previamente gravadas acesso ao object model do VS NET liga o a comandos no menu e utiliza o do Macro Explorer para o gerencia mento de macros por exemplo n vel de custo de integra o integra o Macros gt ee 3 oy d o c LM D 2 et a 2 Visu
60. asos de Uso esee nemen rnnt etre trennen 44 4 Estendendo o Visual Studio NET 2003 e nennen nennen nenne 45 4 1 Vis o Geral dos Mecanismos de Extens o do VS NET erra 45 4 2 Automation Object Model AOM 4 3 Componentes Customizados na VS NET Toolbox sse 48 4 4 MACIOS it eec ke oe e ben dd o n a ad ee 50 S dope cR 52 4 6 WiZards itc eR iic e e i oes et pe inter aec idet ra ted dudes 54 4 7 Visual Studio Industry Partner VSIP Program sse 57 5 Abordagem de Desenvolvimento e Resultados Obtidos ereta 60 5 1 Uma Escolha Dentro da Escolha cee eece eee eeeeeeaee tee eneseaeecaeeeaeesaeeseeeseeeseaeseaeseaeeeeseneeseeeenees 60 5 2 O tarball de Simon Marlow g iaeoa nnutata 62 5 3 Novas Tecnologias e Ferramentas a Serem Dominadas sese 64 5 4 Casos de Uso e RNFs Implementados o Status Atual do Projeto VHS AM sese 71 6 A Metodologia Pro NET no Projeto VHS AM cee eee cece eee eteee teas seas eeae seas eeaeesaeeseeeseeeseaeseaeseaeesaeeeeeseeeeeaees 77 6 1 O Centro de Tecnologia XML e a Cria o da Pro NET ou ee ee cece eee 77 6 2 Estrutura o da Pro NET Pix Soleil TL M 7 1 Considera es sobre o Cronograma do Projeto VHS AM cece eee e cere tees tees nennen 88 7 2 Reflex o sobre os Resu
61. b m no pr prio VSPackage do Babel cujo c digo fonte acompanha a vers o Extras do VSIP 75 Paralelamente o restante da equipe do projeto VHS AM avanca em outras reas Marden Menezes verificou com sucesso o procedimento para a obten o de uma Package Load Key necess ria para registrar um VSPackage em vers es n o experimentais do VS NET Atualmente Menezes est iniciando a implementa o do caso de uso referente consultas ao interpretador GHCi Enquanto isso Mauro Araujo foi alocado para integrar o Haskell VSPackage com o GHC permitindo que a equipe verifique os avan os j obtidos por Simon Marlow e possa estend los Tal tarefa implica em compilar o c digo fonte do GHC com o objetivo de gerar uma dll que exp e funcionalidades do pr prio GHC como seu veri ficador de tipos que podem ser utilizadas no Haskell VSPackage Atualmente a equipe do projeto VHS AM utiliza um parser standalone e n o o parser do pr prio GHC Este parser tamb m feito em Haskell foi disponibilizado com a publica o do tarball de Simon Marlow 76 6 A METODOLOGIA PRO NET NO PROJETO VHS AM Todo projeto que integra diferentes tecnologias envolve riscos Al m disso a intera o entre projetos de objetivos similares uma tarefa que demanda disciplina e coordena o Por fim a ger ncia de tempo escopo recursos e dos pr prios riscos implica na necessidade de um processo pr tico sistem tico e bem definido para a con
62. brasil com br tecnologias aspnet starterkits 21 03 2004 Network Integrated Access Netia com The Next Major Platform Shift Java Computing Changes Everything dispon vel em http www netia com Sun Java Sea Change pdf 23 03 2004 Peyton Jones S Meijer E Leijen D Scripting COM components in Haskell IEEE Fifth Inter national Conference on Software Reuse Vancouver BC 1998 Sebesta R W Concepts of Programming Languages The Benjamin Cummings Publishing Company Inc 1993 SMLNJ Standard ML 97 dispon vel em http www smlnj org sml97 html 23 03 2004 Software Technology Research Group Homepage of Clean dispon vel em http www cs kun nl clean 23 03 2004 Steele K Eclipse The IDE for Everything and Nothing in Particular The Cursor Official Publi cation of the Software Association of Oregon dezembro 2003 Teitelbaum T Reps T The Cornell program synthesizer A syntax directed programming environment Communications of the ACM vol 24 no 9 p 563 573 setembro 1981 The Lambda Complex Why does Haskell matter dispon vel em http www haskell org complex why does haskell matter html 23 03 2003 The University of Hull dispon vel em www hull ac uk 25 03 2004 Univeristy of Cambridge SML NET dispon vel em http www cl cam ac uk Research TSG SMLNET 25 03 2004 Universidade Estadual Paulista Julio de Mesquita Filho dispon vel em http www unesp br 25 03 2004 Wadler P Why no one uses functional lang
63. cen rio extremamente diferente Alguns exemplos das necessidades atuais de desenvolvedores de software s o 7 e Dominar um conjunto diversificado de linguagens de programa o b sicas como um sub conjunto qualquer de C Java C Visual Basic Delphi Haskell etc e Conhecer as peculiaridades das diferentes plataformas em que suas aplica es ser o im plantadas Microsoft Windows Linux Pocket PC Palm etc e Entender as linguagens de descri o de dados para a Web HTML WML XML XSLT XSD DTD CSS e Saber lidar com tecnologias de acesso a bases de dados SQL JDBC RDO ADO A DO NET etc e Compreender a aplica o de tecnologias de scripting s camadas de frente da aplica o JavaScript VBScript ASP ASP NET Servlets JSP CGI PHP etc e Entender as tecnologias de componentiza o de aplica es EJB COM COM etc e Estar atualizado em rela o a conceitos recentes como os Web Services que deram uma nova din mica utiliza o da arquitetura orientada a servi o 6 Em resumo a produtividade do programador atual est diretamente relacionada capacidade de integra o de tecnologias oferecida pelas ferramentas que ele utiliza Sob o slogan vision rio por m pr tico 62 o Visual Studio NET 2003 uma IDE desenvolvida pela Microsoft cujo objetivo principal atender necessidade pela produtividade atrav s da automa o de tarefas e integra o de tecnologias 60
64. cess ria pois j existe um implementado e dispon vel para o interpretador Hugs ver Cap tulo 2 Entretanto esta abordagem revelou uma s rie de desvantagens ap s uma an lise mais profunda e O parser utilizado pelo compilador GHC o Happy 33 seria diferente do parser utilizado para o suporte a Haskell no VS NET Desse modo haveria um trabalho adicional em manter o sin cronismo entre ambos e N o seria poss vel tirar proveito do analisador de tipos do GHC dispon vel atrav s de seu parser contribuindo para que a extra o de mensagens de erro de tipo fosse uma tarefa mais complexa e A implementa o dos casos de uso do projeto se daria em C por quest es de integra o com o lex yacc e n o em Haskell Isto uma contradi o filos fica para o projeto se ele a credita em Haskell como linguagem de programa o e deseja ampliar seu campo de aplica o ent o ele deveria ser o primeiro a dar o exemplo e utilizar Haskell em sua implementa o Al m das desvantagens apresentadas acima a escolha dessa terceira abordagem inuti lizaria o trabalho at ent o desenvolvido no projeto VHS original no qual o pesquisador Si mon Marlow defendeu e utilizou a segunda abordagem Este trabalho apresentado na se o a seguir 5 2 O tarball de Simon Marlow Como informado no Cap tulo 1 o projeto VHS j vinha realizando alguns avan os em rela o integra o do Visual Studio NET 2002 com Haskel
65. co a projetos Haskell no VS NET a partir da implementa o das interfaces do VSIP pois n o existe um framework como o Babel para auxiliar o desenvolvimento de suporte a projetos ao contr rio do suporte edi o Ao iniciar a Fase de Desenvolvimento portanto este foi o cen rio encontrado pela equipe do projeto VHS AM syntax coloring e mensagens de erro na tasklist advindas do GHC j estavam funcionando enquanto um suporte b sico a projetos estava sendo inicia do De modo a visualizar os avan os relativos ao suporte edi o entretanto a equipe pre cisou passar passou por um complexo processo de configura o do ambiente de projeto a compila o do GHC de modo que seu runtime system suportasse m ltiplas threads funcio nalidade rec m criada pelos desenvolvedores da Haskell org Isso foi necess rio porque a vers o mais recente do Haskell VSPackage era chamada pelo Babel atrav s de duas thre ads simult neas uma principal e outra espec fica para a invoca o do parser De certa for ma a utiliza o desse threaded runtime system pela equipe do projeto VHS AM serviu como um teste beta para a sua incorpora o definitiva a vers es posteriores do GHC De acordo com a prioriza o dos casos de uso discutida no Cap tulo 3 o primeiro re lease interno do projeto VHS AM deveria suportar uma integra o m nima de Haskell com a ferramenta Assignment Manager permitindo a publica o e resolu o de exerc cios nessa li
66. da foi delegada ao aluno Mauro Ara jo a configurac o do ambiente de de senvolvimento do projeto sendo o mesmo respons vel pela instala o dos softwares ne cess rios nas m quinas como o Cygwin VS NET AM etc A pedido do professor Andr Santos o suporte do Cln liberou o laborat rio C6 para a equipe do projeto sendo o mesmo utilizado como ambiente de desenvolvimento juntamente com as m quinas pessoais de ca da desenvolvedor A configurac o deste ambiente apresentada na Tabela 4 Infelizmente devido concorr ncia do laborat rio C6 com alunos do mestrado e tamb m a alguns incidentes isolados como a formata o completa do C6 sem aviso pr vio equipe do projeto algumas medidas adicionais foram tomadas duas baias no antigo CE SAR foram alocadas para o projeto sendo uma ocupada por uma m quina do laborat rio C6 e outra pela pr pria m quina que ficava na sala do professor Andr Santos 19 Um ambiente de desenvolvimento de projeto consiste em um conjunto de m quinas com uma con figurac o de hardware e software espec fica que ser utilizado pelos desenvolvedores do projeto Este conceito nao deve ser confundido com ambientes integrados de desenvolvimento ou IDEs 67 Tabela 4 Ambiente de desenvolvimento do projeto VHS AM Hardware Software Finalidade VS NET 2003 Nome da m quina c6c01 NEI Suportar desen Configura o Athlon XP 2000 786Mb volvimento de VSIP Extras SO Windows 2000 Profess
67. dagens representadas pelos pequenos c rculos amarelos Para o entendimento das abordagens necess rio compreender inicialmente que o VSIP oferece v rios conjuntos de interfaces cada um relacionado com uma funcionalidade a ser implementada Para implementar o suporte a um novo tipo de projeto por exemplo necess ria a implementa o das interfaces VsProject IVsProjectFactory e IVsHierarchy entre muitas outras O conjunto de interfaces que necess rio implementar para se obter o suporte edi o de uma nova linguagem por sua vez chama se language service interfa ces A primeira abordagem para implementar o suporte edi o a partir do VSIP consiste em implementar diretamente as language service interfaces Esta a abordagem mais po derosa de implementa o por m ela exige um esfor o consider vel do programador Uma segunda alternativa consiste em implementar a interface BabelService exposta por um VSPackage intitulado Babel que acompanha o VSIP e implementa as language ser vice interfaces expondo as para o desenvolvedor em um n vel maior de abstra o O Babel considerado um helper framework que permite a implementa o das funcionalidades b 60 sicas de suporte edi o como o exigido pelos casos de uso do projeto VHS AM sem a necessidade do entendimento das complexas language service interfaces De modo a poder utilizar esta abordagem entretanto necess ria a presen a de um compilador co
68. difica o de um projeto de software que utiliza Haskell como linguagem n o beneficiado por mecanismos destinados melhoria da usabilidade das interfaces manuseadas pelo pro gramador sendo o processo atual realizado de maneira ad hoc e portanto mais sujeito a erros Acreditando na linguagem Haskell como uma alternativa concreta para a implemen ta o de aplica es em larga escala exatamente atrav s da resolu o dessa ltima defi ci ncia que este projeto se prop e a contribuir para a comunidade Haskell A se o a seguir justifica a necessidade por Ambientes Integrados de Desenvolvimento culminando com o surgimento do Visual Studio NET 2008 2 3 Do Vi ao Visual Studio NET 2003 Na mesma poca do surgimento das linguagens de baixo e m dio n vel foi consolidada a maneira padr o utilizada at hoje por desenvolvedores para programar uma aplica o a escrita de c digo fonte que substituiu o uso de cart es perfurados e fios el tricos Nesses est gios iniciais portanto a etapa de implementa o de um processo de desenvolvimento de software envolvia ferramentas independentes utilizadas ciclicamente um editor de texto simples como o Vi o compilador da linguagem utilizada e um mecanismo de depura o trivial quando n o a inser o de comandos de impress o de mensagens no pr prio c digo fonte 7 Com o tempo os programadores passaram a utilizar editores de texto direcionados sintaxe 15 75 de mod
69. disciplina de Requisitos busca entender a estrutura e a din mica do cliente seus problemas corren tes e identificar melhorias de processos de modo a garantir que os clientes os usu rios fi nais e a equipe de desenvolvimento tenham um entendimento comum da solu o a ser de senvolvida e de como esta solu o atende aos objetivos da organiza o O uso de prot ti pos estimulado para aprimorar a especifica o An lise amp Projeto por sua vez a disci plina que possibilita a transforma o dos requisitos em um projeto da aplica o sugerindo uma arquitetura em camadas robusta e uma solu o que atenda aos requisitos de implanta o 84 A disciplina de Implementa o produz o c digo em v rias camadas implementa as fun es e estruturas de dados testa o c digo desenvolvido como unidade e realiza inspe o nos artefatos criados A disciplina de Testes verifica a integra o de partes de c digo implementadas separadamente se todos os requisitos foram corretamente implementados e identifica e garante que defeitos ser o resolvidos antes da implanta o da solu o A disci plina de Implanta o por fim disponibiliza vers es da solu o para os usu rios e realiza treinamentos As disciplinas de suporte s o formadas por um conjunto de atividades de apoio que possibilitam a execu o das disciplinas de processo S o elas Planejamento amp Gerencia mento Riscos e Ambiente amp Gerencia de Configura
70. du o de projetos de desenvolvi mento de software Por esses e demais motivos a aluno deste Trabalho de Gradua o su geriu que ao projeto VHS AM fosse aplicada a metodologia Pro NET desenvolvida pelo Centro de Tecnologia XML do Recife e cuja cria o teve a participa o do pr prio aluno Es te cap tulo apresenta a metodologia e ao mesmo tempo discute como ela vem sendo aplica da ao projeto Boa parte das informa es aqui descritas resultou do trabalho desenvolvido no Centro de Tecnologia XML tendo sido reproduzidas neste relat rio e tamb m e apresen tadas aos demais membros do projeto VHS AM pelo aluno deste Trabalho de Gradua o com a anu ncia do pr prio Centro de Tecnologia XML 6 1 O Centro de Tecnologia XML e a Cria o da Pro NET O Centro de Tecnologia XML do Recife uma iniciativa que faz parte de um projeto maior lan ado pela Microsoft em 2002 para a cria o de 20 centros de excel ncia tecnol gica no pa s Em Recife o Centro tem como gestores o Centro de Estudos e Sistemas Avan ados do Recife CESAR e a Qualiti Software Processes sendo financiado pela Microsoft Brasil HP Brasil e a Financiadora de Estudos e Pesquisas FINEP Como demais parceiros o Centro de Tecnologia XML do Recife conta com o Centro de Inform tica Cln da UFPE o complexo tecnol gico Porto Digital e a Empresa de Fomento Inform tica do Estado de Pernambuco FISEPE A FINEP est apoiando o Centro XML atrav s de um projeto i
71. e de conhecimento ex Ingl s Implantac o Andr Furtado terna Relat rio de Fechamento do E Ingl s Implantac o Andr Furtado Projeto A Fase de Desenvolvimento dividida em tr s releases internos a atual fase na qual se encontra o projeto VHS AM Al m de alocar os recursos do projeto na implementa o dos casos de uso e requisitos nao funcionais com a orienta o e aprova o do profes sor Andr Santos o pr prio aluno deste Trabalho de Graduac o participa da implementac o dos mesmos dividindo se entre tarefas gerenciais e de desenvolvimento Esta fase ser fi nalizada quando o escopo total da aplica o for constru do embora ainda possam existir defeitos 83 Na Fase de Estabiliza o os defeitos ainda existentes da aplica o ser o corrigi dos A equipe estara focada em testar priorizar e corrigir os defeitos encontrados gerando novos releases internos e em preparar a solu o para a implanta o no ambiente de pro du o Um dos releases internos gerados devidamente testado e aprovado ser utilizado para implanta o final da solu o e marcar o final desta fase A ltima fase de uma itera o a Fase de Implanta o nela que a implanta o final ser realizada e o conhecimento adquirido no projeto ser capturado e documentado No projeto VHS AM esta implanta o ser bastante breve compreendendo apenas tr s ati vidades e O c digo final modificado d
72. ect suporta tanto o dialeto IIOP CORBA especificado pela OMG Object Management Group como dialeto OSF especificado pelo DCE Distributed Computing Environment e que pos sui v rias extens es do compilador IDL da Microsoft 5 3 3 Estrutura o do Ambiente de Desenvolvimento do Projeto Com o tempo ficou clara a necessidade pela cria o de um reposit rio centralizado para o projeto VHS visto que estava havendo dificuldades para consistir as atualizac es do tarball de Simon Marlow realizadas por diferentes desenvolvedores Deste modo foi solicitada pelo pr prio Marlow a criac o de uma rea espec fica para o projeto VHS no reposit rio ofi cial da Haskell org Entretanto para o acesso com permiss o de escrita de uma rea de pro jeto do reposit rio da Haskell org um desenvolvedor necessita cadastrar uma conta no re posit rio ter o conhecimento dos utilit rios CVS e SSH e dominar a gera o de chaves p blicas e privadas para satisfazer as medidas de seguranca demandadas pela Haskell org O aluno deste Trabalho de Graduagao interagiu com os respons veis pelo reposit rio da Has kell org e documentou no Plano de Ambiente e no Plano de Ger ncia de Configurac o o procedimento necess rio para a configura o do CVS SSH em uma m quina cliente e a uti lizagao desses utilit rios para o acesso e submiss o de arquivos ao reposit rio de modo a facilitar o trabalho dos demais desenvolvedores do projeto VHS AM Em segui
73. eleton insertions para uma classe C e testes sane snesnaeseeeeeaeeeaae 56 Figura 35 Alternativas de implementa o de suporte linguagem com o VSIP eterna 61 Figura 36 Fluxo de eventos em uma chamada de um cliente a um componente COM 66 Figura 37 Implementa o em Haskell de suporte linguagem com o Babel 71 Figura 38 Mensagens de erro do pr prio GHC exibidas na tasklistdo VS NET e eretreanna 72 Figura 39 Screenshot do Instalador do suporte a projetos Haskell para o VS NET sese 74 Figura 40 Brace matching para Haskell no VS NET Figura 41 Popup list dependente do escopo no qual est o cursor enne nnns 75 Figura 42 Modelo de Time da Pro NET n o traduzido e esse seaeeseeeeaeeseesaeeseeeseesaeseaeseeseaeeagae 79 Figura 43 Mod lo de Processo da Pto NET 3 i esa ana vEn e he eene ai iride dtp idees 81 Figura 44 Relacionamento entre disciplinas na Pro NET ssssssssssssseeseeneeene ener tenet rtne nnns rtr itr entes 86 Figura 45 Reposit rio do projeto VHSAM rane ai iari reet Nra e aeaa ae eae a TATAEE Sa TATE AATE ts ais ET 86 Figura 46 Atividades de acordo com o tempo e as reas de conhecimento na Pro NET eee e accesses tees teaneeae 87 NDICE DE TABELAS Tabela 1 Atores identificados no projeto VHS AM area 32 Tabela 2 Distribui o d
74. ent ou Ambiente Integrado de Desenvolvimento um tipo de programa que oferece suporte etapa de implementa o de aplica es da edi o de c digo s tare fas de compila o e depura o aumentando a produtividade do desenvolvedor 1 1 A Origem do Projeto VHS AM Em um dado momento a id ia original para este Trabalho de Gradua o consistia apenas na integrac o do VS NET com a linguagem funcional Haskell o que seria realizado em par ceria com a Microsoft Research Cambridge 51 Entretanto devido a uma oportunidade cap tada atrav s da Microsoft Shared Source Initiative e de um request for proposals RFP da pr pria Microsoft foi poss vel inserir este Trabalho de Gradua o em um contexto maior tornando o portanto um subconjunto do projeto VHS AM Esse processo de evolu o do projeto apresentado em mais detalhes nesta subse o 1 1 1 O Projeto VHS Original Alguns meses antes da aprova o da proposta do projeto VHS AM o orientador deste Tra balho de Gradua o j havia estabelecido contato com outros pesquisadores da Microsoft Research Cambridge UK no sentido de planejar uma futura coopera o entre desenvolve dores para construir uma extens o do Visual Studio NET 2002 para o suporte linguagem Haskell Este projeto foi formalmente estabelecido em meados do segundo semestre de 2003 com o codinome VHS Visual Haskell Studio tendo frente o pesquisador Simon Marlow 52 da pr pria Microsoft Rese
75. entidade visual para o mes mo apresentada na Figura 2 Figura 2 Identidade visual para o projeto VHS AM Como poss vel perceber o projeto VHS AM possui uma importante interse o com o projeto VHS original havendo se estabelecido o desafio de combinar e sincronizar os es for os dos dois projetos para garantir a satisfa o dos objetivos de ambos da maneira mais produtiva poss vel 1 2 O Trabalho de Gradua o no Contexto dos Demais Projetos Apresentados Observou se que a participa o do aluno nos projetos VHS e VHS AM reunia os requisitos necess rios realiza o de um Trabalho de Gradua o para o Cln UFPE dentre os quais poss vel citar e Pesquisa sobre o estado da arte referente aos mecanismos de extens o do Visual Studio NET para o suporte a novas linguagens e Atividades n o triviais de implementa o demandadas pela integra o de diferentes con ceitos programa o funcional no es de compiladores etc ferramentas VS NET AM GHC etc e tecnologias componentes COM modelo de extens o do VS NET etc O GHC ou Glasgow Haskell Compiler 37 o mais popular compilador para a linguagem Haskell sendo apresentado em mais detalhes ao longo deste documento 12 e Contribui o para a realiza o de um trabalho te rico referente an lise da adequa o da recente metodologia Pro NET a um projeto externo ao Centro de Tecnologia XML experi n cia in dita at ent o
76. espa o ou ao ser selecionado um membro de uma popup list ver abaixo a semi palavra em cujo final est o cursor completada o UCO1E Method tip ao ser pressionado um conjunto de teclas espec ficas como CTRL SHFT barra de espa o logo ap s o nome de um m todo seu tipo de re torno e os tipos de seus par metros s o exibidos o UCO1F Member list popup ao ser pressionado um conjunto de teclas espec ficas como CTRL J ou ao ser teclado um operador de acesso a membro como uma lista com todos os identificadores dispon veis exibida na forma de popup 33 Um esbo o de interface para este caso de uso pode ser visualizado atrav s da Figura 13 Start Page Math hs module Math where increments a value by one inc Ss Int gt Int inc n 9 n t 1 calculates the factorial of a number fac Int gt Int fac ma fac n n fac n 1 teste t LJfac calculates the Factorial of a number 4 inc Figura 13 Esbo o de interface para o caso de uso UCO1 3 3 2 UC02 Criar um novo projeto do tipo Haskell Console Application Mais do que simplesmente editar c digo em Haskell o Programador Haskell deve ser capaz de agrupar logicamente m dulos Haskell em um projeto que naturalmente pertence a uma solu o Isso necess rio n o apenas para permitir a compila o e execu o do c digo como tamb m para a utiliza o integrada do Assignment Manager com a solu o a
77. estes no projeto garantindo que todos os defeitos est o identificados User Experience Age como advogado do usu rio final para a equipe representado seus interesses Especifica funcionalidades e mecanismos de edu ca o dos usu rios al m de gerenciar decis es de usabilidade e aumento da produtividade do usu rio Release Management Gerencia a implanta o da solu o oferece suporte t cnico e quipe e gerencia os ambientes do projeto 79 No caso do projeto VHS AM a divisao da equipe entre os pap is da Pro NET se deu conforme mostra a Tabela 7 E importante observar que como a equipe composta por a penas 5 membros muitas vezes mais de um papel foi alocado por membro Ap s a defini o dos pap is os integrantes do projeto foram orientados em rela o a suas fun es e ati vidades que iriam desempenhar no projeto sendo definida adicionalmente uma freq ncia semanal de reuni es para acompanhar a evolu o das atividades da equipe Tabela 7 Divis o da equipe em pap is no projeto VHS AM Membro Pap is Andr Santos e Product Management e Test Paulo Borba e User Experience e Development Andr Furtado e Program Management e Test 2 e Development MAUI Maul e Release Management Marden Mezenes 1Deverop ment e User Experience 6 2 2 O Modelo de Processo O Modelo de Processo corresponde estrutura o das atividades a serem realizada
78. ferentes em cada caso No primeiro referente ao arquivo BabelServiceLib idl a intengao foi gerar um arquivo em Haskell que provesse acesso ao VSPackage do Babel No segundo referente ao arquivo HaskellService idl a inten o foi gerar um esqueleto de implementa o HaskellService hs a ser preenchido pelo programador e que se comunica com o framework do Babel atrav s do c digo gerado a partir do arquivo BabelServiceLib idl Para expor a implementa o desse esqueleto como um componente COM o HDirect gera adicionalmente um proxy que deve ser compilado em conjunto com o esqueleto implementado para a constru o por fim do VSPackage a ser utilizado pelo VS NET Infelizmente a gera o de c digo pelo HDirect en contra se com problemas mais de 15 bugs foram identificados por Simon Marlow sendo necess ria a realiza o de ajustes manuais nos arquivos Haskell gerados pela ferramenta 70 N Obtido do ur CE framework do Babel babelservice idl Separa o manual BabelServiceLib idl HaskellService idl HDirect HDirect X oe l BabelServiceLib hs HaskellService hs HaskellServiceProx y hs l _ Acesso a CompilacSo via implementa o GHC do framewok 2 do Babel 9 Babel vSPackage Haskell VSPackage Figura 37 Implementa o em Haskell de suporte linguagem com o Babel Apesar da explica o acima estar focada em suporte edi o e utiliza o do Babel O processo apresentad
79. guagens no VS NET Uma das principais vantagens da utilizac o do NET Framework consiste na grande varie dade de linguagens dispon veis para a escolha do programador Atualmente muitas lingua gens foram ou est o sendo portadas para uma vers o NET do Cobol NET 9 ao Visual Basic NET Entretanto al m de portar a linguagem necess rio tamb m prover um supor te utiliza o da mesma para garantir a satisfa o de seus programadores No caso dessas novas linguagens NET este suporte oferecido na maioria das vezes atrav s da exten s o do pr prio VS NET Os criadores do projeto brasileiro Lua NET 41 por exemplo consi deram a integra o com o VS NET uma etapa futura essencial a ser realizada no projeto A linguagem SML NET atualmente suportada pelo VS NET 78 merece uma aten o especial Al m dessa ser uma linguagem funcional como Haskell a abordagem utiliza da pelo SML NET para a extens o do VS NET bem semelhante escolhida pelo projeto VHS interessante observar que assim como as novas linguagens NET h tamb m o interesse em oferecer suporte do VS NET a linguagens mais antigas de modo a enriquecer a experi ncia do programador em sua utiliza o Este o caso da linguagem Python 3 de Perl 2 e da pr pria linguagem Haskell 31 3 ESCOPO Este cap tulo apresenta o escopo do projeto VHS AM atrav s de seus casos de uso e requi sitos n o funcionais RNFs com dois objetivos
80. gualmente valioso A aus ncia de uma hierarquia contudo n o implica na aus ncia de uma coordena o do projeto Esta coordena o executada pelo papel Program Manage ment Este e os demais pap is da Pro NET s o apresentados na Figura 42 estando as responsabilidades de cada papel descritas na Tabela 6 No projeto VHS AM foi decidido preservar os nomes dos pap is em ingl s pois a tradu o utiliza da pela Pro NET ser modificada em um futuro pr ximo 78 Product Management User Experience Program Management Development comunica o Release Management Figura 42 Modelo de Time da Pro NET n o traduzido Tabela 6 Responsabilidades dos pap is da Pro NET Papel Responsabilidades Program Management Garante a condu o do projeto dentro de suas restri es como recursos e cronograma Facilita a comunica o da equipe geren cia todo processo de riscos reporta o status do projeto e mant m seus principais artefatos como o Plano de Projeto e o Documento de Especifica o Funcional Product Management Age como advogado do cliente representado seus interesses um dos principais respons veis pela ger ncia de decis es de es copo vs cronograma vs recursos Development Constr i e supervisiona a implementa o de casos de uso e prepa ra aplica o para implanta o Test Define e conduz o processo de t
81. ia COM ser abordada em mais detalhes no Cap tulo 5 52 e Cria o de janelas de ferramentas too windows que se comportam como qualquer outra ja nela de ferramentas do VS NET e Habilita o e desabilitac o din mica de comandos em menus e barras de comandos do VS NET e Cria o de p ginas de propriedades customizadas para a janela Options acess vel a partir do menu Tools da IDE um exemplo apresentado na Figura 32 e Adi o de informa es de contato e descritivas na janela About presente no Help do VS NET Options Z3 Environment Database Designer Options Source Control x Ga Text Editor M Commit time out 30 seconds Z3 Analyzer amp Database Tools Database Projects amp Database Designer 3 General Orade SQL Server Query View Designer JZ Warn about tables affected Server Explorer Z3 Debugging JV Launch Add Table Dialog on New Diagram 3 HTML Designer C3 Projects Windows Forms Designer E XML Designer Default table view Column Names V Auto generate change scripts MV Warn about difference detection Figura 32 Exemplo de p gina de propriedades da janela Options O VS NET oferece um rico suporte cria o de add ins Ao solicitar a cria o de um novo projeto ao VS NET o desenvolvedor pode escolher al m dos tradicionais tipos Conso le Application Windows Application e Web Service por exemplo um tipo de projeto espec fico para a cria o de add ins Esta o
82. ient e Assignment Manager Student Client O relacionamen to entre esses tr s componentes pode ser visualizado na Figura 7 a Ero y A student Assignment faculty clients Manager client Server Figura 7 Relacionamento entre os componentes da ferramenta Assignment Manager O Assignment Manager Server que atende a solicita es dos outros dois componen tes deve ser instalado em uma m quina contendo o servidor Web da Microsoft Internet In formation Services ou IIS 55 o servico de enfileiramento de mensagens MSMQ Microsoft Message Queuing 57 e o desktop engine do SQL Server 2000 59 que acompanha o pr prio SQL Server mas tamb m pode ser instalado parte gratuitamente Por se tratar de uma aplica o servidora o AM Server n o possui interface gr fica devendo ser administra do a partir de ferramentas de administra o do pr prio Windows como o og de eventos Estudantes devem ter instalado em suas m quinas o AM Student Client e o profes sor o AM Faculty Client Ambas as ferramentas est o embutidas no pr prio Visual Studio NET 2003 Academic sendo suas funcionalidades acessadas a partir do menu da IDE que aciona o carregamento de interfaces em HTML dentro do pr prio ambiente Atrav s do Fa culty Client um professor pode criar um novo curso publicar exerc cios e atribuir notas Uti lizando o Student Client por sua vez estudantes podem acessar os cursos e exerc cios dis pon veis subme
83. igo Haskell Este novo Visual Haskell NET inserir Haskell como uma op o para a atual estrat gia de desenvolvimento da Microsoft que consiste na cria o de um cen rio em que todas as linguagens possam conversar entre si Costuma se dizer que esse cen rio apresenta uma caracter stica interessante a es colha da linguagem de programa o n o mais determina o que poss vel de ser implemen tado 11 Entretanto apesar de qualquer produto final nesse cen rio poder ser implemen tado por qualquer linguagem restar uma quest o que linguagem o far com mais produti vidade Espera se que de uma maneira ou de outra Visual Haskell NET contribua para a resposta assim como este trabalho vem contribuindo para que Haskell seja encarada como uma alternativa concreta para a implementa o gil de projetos de desenvolvimento de software 90 REFERENCIAS BIBLIOGRAFICAS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 4Reference Net The BASIC Programming Language dispon vel em http Avww 4reference net encyclopediasAwikipedia True BASIC programming language html 25 03 2004 Active State com Visual Perl dispon vel em http www activestate com Products Visual Perl x 1 25 03 2004 Active State com Visual Python dispon vel em http www activestate com Products Visual Python x 1 25 03 2004 AllenD s weblog Can
84. in fotools docs building but it needs to be built from source Simon Marlow em resposta a uma d vida sobre o processo de build da Haskell org Complicando ainda mais a situa o vers es recentes algumas ferramentas como o MinGW 66 o gcc 25 e o pr prio GHC quebraram a compatibilidade com o c digo fonte do tarball Ap s um longo processo de tentativa e erro finalmente foi dominada com seguran a a t cnica de compila o das ferramentas do reposit rio da Haskell org Analogamente a resolu o de eventuais dificuldades se tornou menos problem tica devido experi ncia com problemas similares anteriores Essas dificuldades encontradas foram registradas no documento de Postmortem do projeto que de acordo com a metodologia Pro NET deve ser utilizado para armazenar as principais conquistas desafios e li es aprendidas vivenciadas pela equipe A supera o das dificuldades acima permitiu que o tarball disponibilizado por Marlow fosse finalmente compilado com o objetivo da realiza o de testes de caixa preta Entretan to confirmando um problema anteriormente ocorrido com o professor Andr Santos mas 63 nao com o pr prio Simon Marlow o tarball compilado pelo aluno deste Trabalho de Gradua o se comportou de maneira extremamente inst vel abortando logo ap s ser carregado pelo VS NET Um workaround para o problema foi identificado pelo pr prio professor Andr Santos A invoca o do VS NET deveria acontecer acomp
85. ionados entradas pr condi es sa das p s condi es e fluxos de execu o princi pal alternativo e de erro As informa es omitidas podem ser consultadas no pr prio DEF do projeto caso desejado 3 3 Casos de Uso do Projeto VHS AM 3 3 1 UC01 Desenvolver c digo Haskell com suporte edi o Ao codificar em Haskell o Programador Haskell deve obter do VS NET facilidades visuais que d o suporte ao processo de programa o para aumentar sua produtividade Este caso de uso na verdade foi dividido em 6 subcasos de uso apresentados abaixo e UCO1A Syntax coloring diferentes cores s o associadas a cada elemento do c digo co mo palavras chave da linguagem Haskell coment rios e operadores por exemplo e UC01B Brace matching ao se fechar ou passar o cursor sobre um par ntese chave tanto o par ntese chave como seu par devem ser ressaltados em negrito de modo que os limites do bloco de texto envolvido sejam identificados com mais facilidade e IntelliSense significa um conjunto de funcionalidades sens veis a contexto acionadas me dida que o programador dispara alguns eventos espec ficos As funcionalidades IntelliSense a serem suportadas em ordem de prioridade s o o UC01C Quick info o tipo de um identificador exibido quando o ponteiro do mou se repousa por algum tempo sobre o mesmo o UCO1D Word complete ao ser pressionado um conjunto de teclas espec ficas como CTRL barra de
86. ional VSPackages Cygwin Nome da m quina andresantos Configurac o Pentium IV 2 4GHz 1GMB AM Server Servidor AM SO Windows Server 2003 Standard Edition Nome da m quina c6c02 Configura o Athlon XP 2000 786Mb SO Windows 2000 Professional AM Faculty Client Simular o uso do Professor AM Nome da m quina c6c04 Configura o Athlon XP 2000 786Mb AM Student Client Simular o uso do Aluno AM SO Windows 2000 Professional VS NET 2003 Nome da m quina AW M M quina de de Configura o Pentium3 800Mhz 256Mb senvolvimento de VSIP Extras SO Windows XP Professional Edition awbf Cygwin EU VS NET 2003 Nome da m quina peserfone VSIP M quina de de Configura o Athlon 1Ghz 368Mb senvolvimento de m VSIP Extras SO Windows XP Professional Edition mscla Cygwin f VS NET 2003 Nome da m quina menezes yak M quina de de Configura o Athlon 1 33Ghz 256Mb senvolvimento de VSIP Extras SO Windows XP Professional Edition j mmc3 Cygwin VS NET 2003 Nome da m quina alms isp M quina de de Configura o Pentium3 1Ghz 256Mb senvolvimento de VSIP Extras SO Windows XP Professional Edition alms Cygwin A dificuldade no estabelecimento do ambiente de desenvolvimento do projeto foi uma li o aprendida que levou o aluno deste Trabalho de Gradua o a estabelecer como ambi ente de testes do projeto m quinas mais acess veis Foram utilizadas portanto m quinas
87. ionalidades Tal conceito pode ser ilustrado na Figura 27 Figura 27 Submodels do AOM fonte VS NET Extensibility Center 53 A implementa o do AOM feita na pr tica por um objeto conhecido como DTE De velopment Tools Extensibility Dado que o AOM est dispon vel a diferentes mecanismos de extens o do VS NET a maneira como obtida a refer ncia ao objeto DTE depende do pr prio mecanismo de extens o utilizado Macros utilizam uma vari vel global que referencia o 47 objeto DTE disponibilizada pelo Ambiente de Macros do VS NET Para um add in por sua vez passada pelo VS NET uma refer ncia do objeto DTE na inicializa o do pr prio add in J os scripts utilizados em wizards podem referenciar o objeto DTE atrav s de um objeto global Aplica es implementadas a partir do VSIP por fim devem solicitar o objeto DTE programaticamente atrav s de servi os e interfaces disponibilizadas pelo VS NET 4 4 2 2 AOM no contexto do projeto VHS AM A utilidade do AOM no projeto VHS AM est diretamente relacionada aos mecanis mos de extens o escolhidos Funcionalidades implementadas com macros add ins e wi zards por exemplo necessitam interagir consideravelmente com o objeto DTE j que esta a unica maneira destes mecanismos de extens o acessarem programaticamente o ambiente do VS NET O VSIP por outro lado possui suas pr prias interfaces de acesso ao ambiente do VS NET que substituem os submodels do
88. l Em outubro de 2003 quando o projeto VHS AM ainda n o existia o pesquisador Simon Marlow publicou para os membros do projeto VHS um tarball contendo uma implementa o b sica dessa integra o Inicialmente o aluno deste Trabalho de Gradua o se encarregou da realiza o de testes de caixa preta no c digo do tarball com o objetivo de verificar a corretude de suas funcionalidades Antes mesmo da execu o desses testes entretanto foi poss vel verificar que a documenta o relativa instala o do tarball estava em alguns pontos amb gua ou incorreta Desse modo foi documentado no site do projeto VHS o procedimento correto que levaria instala o bem sucedida do tarball Tal procedimento foi incorporado posteriormen Conjunto de arquivos compactados atrav s do programa tar do Unix GNU 28 17 Ao contr rio de testes de caixa branca um teste de caixa preta n o se preocupa com a estrutura interna do item a ser testado sendo focado no resultado obtido a partir de uma determinada entrada 19 62 te pelo pr prio Simon Marlow e at hoje faz parte do arquivo de instru es para a instala o da aplica o A compila o do c digo do tarball exigia a compila o de algumas ferramentas dis pon veis no reposit rio oficial da Haskell org acess vel atrav s do utilit rio CVS 84 Alguns exemplos dessas ferramentas s o o analisador l xico Alex 30 o parser Happy 33 e a fer ramenta HDirect apresen
89. l m de possibilitar que diferentes recursos como imagens relat rios etc sejam tamb m associa dos ao projeto no futuro Um esbo o de interface para este caso de uso pode ser visualizado atrav s da Figura 14 3 3 3 UCO3 Criar e anunciar exerc cios em Haskell atrav s do AM O Professor Assignment Manager deve ser capaz de utilizar a linguagem Haskell como qualquer outra linguagem original do VS NET para criar e disponibilizar exerc cios que en volvam codifica o Estes exerc cios podem conter student code a ser suprimido pelo AM Server e que deve ser preenchido pelos alunos na resolu o do exerc cio Um esbo o de interface para este caso de uso pode ser visualizado atrav s da Figura 15 3 3 4 UC04 Resolver e submeter exerc cios em Haskell atrav s do AM Assim como o professor o Aluno Assignment Manager tamb m deve ser capaz de trabalhar com a linguagem Haskell do mesmo modo que qualquer outra linguagem original do VS NET beneficiando se do suporte oferecido pela IDE estendida para a resolu o dos e xerc cios publicados A Figura 16 apresenta um esbo o de interface para este caso de uso 34 New Project Project Types Templates 4 Haskell Projects 4 Visual Basic Projects 9 visual C Projects G Visual J Projects Haskell Console Visual C Projects Setup and Deployment Proje Other Projects Application 4 project For creating a Haskell command line application Mame HaskellConsole
90. l HaskellConsoleApplication Cif ModuleMain g Factint a Fib int a x a v Figura 18 Esboco de interface para o caso de uso UC06 3 3 7 UC07 Obter mensagens de erro dinamicamente Enquanto o Programador Haskell est programando ele deve ser capaz de saber se existe algum erro em seu c digo antes mesmo do processo de compilagao Desse modo trechos contendo erros de c digo devem aparecer sublinhados em vermelho Este caso de uso na verdade se divide em dois subcasos o UCO7A Indica o de erros l xicos sint ticos o UCO7B Indica o de erros sem nticos Um esbo o de interface para este caso de uso pode ser visualizado atrav s da Figura 19 example hs main 4 IO Figura 19 Esbo o de interface para o caso de uso UC07 3 3 8 UC08 Visualizar mensagens de erro na taskbar O Programador Haskell deve ser capaz de visualizar rapidamente todos os erros da aplica o que ele est desenvolvendo atrav s da taskbar do VS NET Devem estar presentes na taskbar n o apenas os erros identificados dinamicamente UC07 como tamb m novos erros que eventualmente surjam ap s a compila o da aplica o Um esbo o de interface para este caso de uso pode ser visualizado atrav s da Figura 20 37 y Description t amp Empty do construct Figura 20 Esboco de interface para o caso de uso UC08 3 3 9 UC09 Ser direcionado para a fonte do erro a partir da taskbar De modo a aument
91. ltados Obtidos ssssssssssseeseseeneeeeeeeeee nnne nenne nennen nnne nnns 89 7 3 Trabalhos F t tos ea Uma Uer apes ti coe te Er teh oe otra abas CR eto M RD e eta 90 Refer ncias Bibliogr ficas err re ge i epe HRS YO Cer PRESE REOR ENTRE RE RERO Ce LIS RU EE E Teu eR daag 91 NDICE DE FIGURAS Figura 1 Identidade visual para o projeto VHS essesssssssessesesseeeeeeteenesetnnaitnse thai tha tn satin at th sits sensa sana ath dites adn se nsa 10 Figura 2 Identidade visual para o projeto VHS AM sssssssssssssseeeeneeeeeenenenrennnenrenteretnetnnsdtnritrs its inns itr iens irren enis Figura 3 Organiza o dos tr s projetos em rela o ao tempo Figura 4 Organiza o dos tr s projetos em rela o ao escopo Figura 5 Edi o de c digo fonte em um editor simples como o Notepad seen 21 Figura 6 Edi o do mesmo c digo fonte agora em um editor direcionado sintaxe 21 Figura 7 Relacionamento entre os componentes da ferramenta Assignment Manager re 24 Figura 8 Assignment Manager em execu o Faculty Client cessent netten enne 25 Figura 9 A IDE Eclipse com suporte a Haskell sssssssssssssssssseeeeeeneeeneenre nnne ennennnat teret nn inns itnr stri tnit e neas 28 Figura 10 WinHugs em execu o Figura 11 Ferramenta HIDE em execug o
92. luno deste Trabalho de Gradua o no futuro n o limitados esfera dos projetos VHS VHS AM 7 1 Considera es sobre o Cronograma do Projeto VHS AM Um fato extremamente importante e que deve ser exposto com clareza que o projeto VHS AM est atrasado em rela o ao seu cronograma original Planejamentos iniciais previam a conclus o do segundo release interno do projeto antes do prazo de finaliza o para este Trabalho de Gradua o por m isto n o aconteceu De modo a rastrear a causa desse atraso de cronograma o aluno deste Trabalho de Gradua o elaborou uma estimativa para a distribui o das atividades do projeto VHS AM no tempo classificando as em tr s grupos Configura o de Ambiente Elabora o de arte fatos e Implementa o Testes O resultado pode ser visualizado no Gr fico 1 Distribui o de atividades no projeto VHS AM 15 40 age 45 E Elabora o de artefatos e documenta o B Configura o de Ambiente O Implementa o e Testes Gr fico 1 Estimativa percentual para as atividades no projeto VHS AM Atrav s do gr fico elaborado n o dif cil perceber algo incomum o elevado tempo dedicado exclusivamente configura o de ambiente no projeto A princ pio pode se ima ginar que a causa de tal fato consistiu na indisponibilidade das m quinas do Centro de In form tica ou no incidente da formata o do laborat rio C6 sem aviso pr vio equipe do pro jeto Ent
93. m um a nalisador l xico e um parser que possa prover informa es necess rias ao Babel e ao VS NET como a identifica o de espa os em branco par nteses e coment rios al m de ser capaz de se recuperar de erros encontrados e prover uma rvore sint tica completa ii Babel SDK Babel Service language service interfaces Interfaces do VSIP Figura 35 Alternativas de implementa o de suporte linguagem com o VSIP A terceira abordagem consiste em utilizar uma implementa o default da interface IBabelService disponibilizada pelo Babel SDK Esta abordagem requer apenas que sejam especificados um analisador l xico e um parser o que geralmente feito atrav s das ferra mentas lex e yacc 83 caso o compilador da linguagem seja incapaz de interagir com o VS NET como o caso do GHC A primeira abordagem foi prontamente descartada pela equipe do projeto pois ela demandaria um excesso de trabalho por sua dificuldade de compreens o e implementa o Al m disso seria necess ria a implementa o de um parser para Haskell em C linguagem mais vi vel para a cria o desse VSPackage tarefa nunca antes realizada e que poderia comprometer consideravelmente o cronograma do projeto 61 A equipe do projeto ficou tentada pela utiliza o da terceira abordagem por ser a mais simples de todas e constituir uma maior chance de sucesso A cria o de um parser para Haskell em ex yacc n o seria ne
94. ma IDE extens vel como o Eclipse e o VS NET 2 5 2 4 JCreator O JCreator 27 uma IDE extens vel feito em Java para a plataforma Windows Neste pro jeto a IDE foi estendida para suportar a cria o de projetos Haskell edi o com syntax colo ring visualiza o de mensagens de erro em uma barra de ferramentas e invoca o do inter pretador Hugs Um screenshot da ferramenta em execu o pode ser visualizado na Figura 12 Devido invoca o do Hugs e n o do GHC o suporte a Haskell oferecido pela ex tens o do JCreator n o suporta o processo de compila o Adicionalmente assim como no do suporte a Haskell atrav s do Eclipse o JCreator parece oferecer um conjunto de funcio nalidades limitado quando comparado ao VS NET e seu rico modelo de extens o 2 5 2 5 Extens o do KDevelop O KDevelop 44 uma IDE que surgiu em 1998 para suportar o KDE 43 ambiente de desktop gr fico para Linux e Unix Desde ent o ele utilizado para suportar tamb m di versas linguagens de programa o Atualmente a extens o para Haskell oferece apenas templates de projeto a liga o com o compilador GHC e inser o de t picos de documenta o no c digo fonte 30 ES JHaskell JCreator Main hs 8 xj I ple gdt Search yew Project Bud Tools Configure Window Heip Jeixi IB SHAE tPF Ol NCl AAAA AMM AS EH lor BEDDO EB AAARAAAAAADOBGE s gese ed xmakeInitAssignnents x makeInit ssignnents x 1 Wo
95. ma funcional na verdade a pr pria avalia o da express o Uma planilha eletr nica em que o valor de uma c lula computado em termos de outras c lulas exemplifica bem o conceito de linguagens funcionais 38 Em programas deste tipo n o especificada a ordem em que as c lulas s o calculadas espera se que a planilha eletr nica compute as c lulas em uma ordem que respeite suas depend ncias A l m disso n o dito ao programa como e quando a mem ria ser alocada espera se que a planilha apesar de exibir um plano aparentemente infinito de c lulas aloque mem ria ape nas para as c lulas em uso Por fim o valor de uma c lula especificado por uma expres s o e n o por uma sequ ncia de comandos que computa o seu valor Uma das principais caracter sticas de linguagens funcionais portanto consiste na abstra o oferecida ao programador que interage com a linguagem especificando em alto n vel o que deve ser feito e n o como fazer Linguagens imperativas por outro lado procu ram atenuar o problema da menor intuitividade de programa o provocada pela seq encia liza o de comandos atrav s da introdu o de novas palavras chaves while for foreach etc ou de bibliotecas APIs Entretanto linguagens imperativas foram concebidas pela filosofia da sequencializa o de comandos impedindo que esse conceito seja completa mente eliminado neste paradigma de linguagem Desse modo linguagens imperati
96. mpilador MIDL que acompanha a plataforma Windows e gera c digo para a linguagem C Em resumo portanto a linguagem IDL til para descrever as interfaces e os dados compartilhados entre o cliente e um componente COM A linguagem Haskell suporta a cria o de componentes COM assim como a cria o de clientes para componentes COM Para isso deve ser utilizada a ferramenta HDirect a presentada na subse o a seguir 5 3 2 A Ferramenta HDirect HaskellDirect 21 ou simplesmente HDirect um compilador IDL para a linguagem Haskell Em outras palavras esta ferramenta permite que o programador Haskell interaja e reuse c digo escrito em outras linguagens ao mesmo tempo em que pode expor o seu c digo Has kell para programadores de outras linguagens A principal tecnologia utilizada pelo HDirect a IDL Interface Definition Language Conforme descrito na subse o anterior uma especifica o IDL define uma opera o e seus par metros que s o implementados por uma linguagem de programa o que possui um mapeamento para a sintaxe de IDL No caso do HDirect um mapeamento foi definido para permitir que a linguagem Haskell pudesse expor seus dados para IDL e tamb m para que especifica es IDL pudessem ser interpretadas por Haskell Adicionalmente o HDirect 66 permite que componentes COM sejam chamados a partir de Haskell e tamb m que aplica es Haskell sejam encapsuladas como um componente COM 20 Al m disso o HDir
97. nceitos Locali e Ferramentas para con missi bm E c Documents and Settings mscla My Document rowse _ tempo de execu o G objeto Project will be created at C Documents and Settings mscla My Documents Visual Studio Projects E xp Course Links El dizi Assignments Cancel Help Exp Visa construir um parser para express es aritm ticas Download Starter Project Figura 16 Esboco de interface para o caso de uso UC04 3 3 5 UC05 Adicionar um novo m dulo Haskell a um projeto Haskell Um projeto nao deve estar limitado por apenas um m dulo Haskell Desse modo necess rio permitir que o Programador Haskell possa adicionar mais m dulos de acordo com suas necessidades A Figura 17 apresenta um esbo o de interface para este caso de uso Add New Item HaskellConsoleApplication Categories Templates amp X Local Project Items B Module 4n empty class declaration Name Module1 hs cmd Figura 17 Esboco de interface para o caso de uso UC05 36 3 3 6 UC06 Navegar por um module viewer espec fico para Haskell De modo a permitir que o Programador Haskell compreenda melhor a estrutura de seu pro grama interessante que um visualizador de m dulos fun es classes e tipos esteja dis pon vel Um esboco de interface para este caso de uso pode ser visualizado atrav s da Figura 18 Module Viewer HaskellConsoleApplication 3 x amp fj e
98. necessida de da utiliza o de scripts e RAD rapid application development tamb m para servidores integrando ferramentas de administra o como logs de eventos bancos de dados e filas de mensagens e Edi o e valida o de arquivos XML e Integra o com ferramentas de controle de vers o e Integra o com ferramentas de teste de performance funcionalidade e carga inclusive para a Web Existem atualmente quatro diferentes vers es do Visual Studio NET 2003 diferen ciadas pelo pacote de softwares que acompanha a IDE e por funcionalidades para o desen volvimento de aplica es servidoras e Visual Studio NET 2003 Enterprise Architect e Visual Studio NET 2003 Enterprise Developer e Visual Studio NET 2003 Professional e Visual Studio NET 2003 Academic A vers o Academic do VS NET tem como foco a facilita o de atividades executadas por professores e alunos Isso poss vel atrav s da ferramenta Assignment Manager que acompanha esta vers o do VS NET e apresentada na se o seguir 23 2 4 A Ferramenta Assignment Manager O Assignment Manager AM uma ferramenta acad mica que acompanha o Visual Studio NET 2003 Academic cuja principal finalidade gerenciar para professores e alunos o pro cesso de publica o e submiss o de tarefas acad micas que envolvem codifica o Esta ferramenta na verdade composta por tr s componentes Assignment Manager Server Assignment Manager Faculty Cl
99. nguagem Foi identificado que de modo a viabilizar tal integra o era necess rio obter um suporte a projetos Haskell no VS NET que permitisse a execu o das seguintes tarefas e Cria o de um novo projeto Haskell contendo pelo menos um m dulo Haskell e Edi o b sica do m dulo contido no projeto e Compila o do projeto e Execu o do projeto Infelizmente o suporte a projeto at ent o desenvolvido por Krasimir Angelov atendia apenas ao primeiro dos requisitos acima sendo necess rio equipe do VHS AM a procura por uma outra alternativa de modo a concluir o primeiro release interno dentro do crono grama e prestar contas com a Microsoft Shared Source Initiative Tr s alternativas portanto foram abordadas 72 e Marden Menezes verificaria a possibilidade de alterar o suporte a projeto do MyC exemplo em C que acompanha o VSIP para suportar projetos Haskell e Mauro Ara jo analisaria o esfor o necess rio para fazer o suporte a projeto de Krasimir Ange lov atender a todos os requisitos necess rios para o Assignment Manager e O aluno deste Trabalho de Gradua o analisaria o suporte a projetos Haskell desenvolvido no passado por Simon Marlow para o Visual Studio NET 2002 mas que at ent o estava descontinuado e n o funcionava para a vers o 2003 da IDE Ap s alguns dias de an lise a terceira alternativa mostrou se a mais vi vel sendo o antigo suporte a projetos Haskell migrado com sucesso para o Vi
100. ntitulado Processos de Desenvolvimento de Software para a Plataforma NET Pro NET aprovado em dezembro de 2002 O proponente deste projeto o Centro de Estudos Avan ados do Recife CESAR seus executores s o o pr prio CESAR e o Cln e os intervenientes s o a Microsoft Inform ti ca LTDA e o n cleo de gest o do Porto Digital A partir deste projeto portanto surgiu a metodologia Pro NET essencialmente base ada no Microsoft Solutions Framework MSF e no Rational Unified Process RUP Adicio nalmente contribu ram para a metodologia o Project Management Body of Knowledge PM BOK e o Extreme Programming XP Apesar de ser focada para o desenvolvimento de software para a plataforma NET a Pro NET permite sua utiliza o em um n vel maior de abstra o sendo este o caso do projeto VHS AM 77 6 2 Estrutura o da Pro NET Os principais elementos que comp em a estrutura da metodologia Pro NET sao o seu Mo delo de Equipe e o Modelo de Processo Ambos os modelos ser o detalhados nas subse es a seguir 6 2 1 O Modelo de Equipe O Modelo de Equipe da Pro NET que descreve como estruturar a equipe e suas responsa bilidades para atingir sucesso do projeto tem como base seis princ pios fundamentais e Estabelecer uma vis o compartilhada do projeto essa vis o permite esclarecer os objeti vos do projeto e trazem tona conflitos e asser es erradas para que os mesmos possam ser resolvidos Uma vis o compartilhada
101. nvironments based on struc tured editors The MENTOR experience Interactive Programming Environments INRIA Paris 1980 Eclipse org dispon vel em http www eclipse org 25 03 2004 Engels g Lewerentz c Nagl m Sch fer w Sch rr a Building integrated software devel opment environments Part I tool specification ACM Transactions on Software Engineering and Methodology TOSEM vol 1 no 2 p 135 167 abril 1992 Erlang org Erlang dispon vel em http www erlang org 23 03 2004 Faqs org What is black box white box testing dispon vel em http www fags org fags software eng testing fag section 13 html 27 03 2004 91 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Finne S Leijen D Meijer E Peyton Jones S Calling Hell From Heaven And Heaven From Hell International Conference on Functional Programming 1999 Finne S Haskell Direct dispon vel em http Avww haskell org hdirect 24 03 2004 Frenzel L Haskell support for the Eclipse IDE dispon vel em http leiffrenzel de eclipse eclipsefp html 25 03 2004 Furtado A W B Santos A L M FunGEn A Game Engine for Haskell 10 Workshop de Jogos e Entretenimento Digital WJogos outubro 2002 Gehringer M London J Odiss ia Digital Encarte especial da Revista Superinteres sante Editora Abril abril 2001 GNU org GCC Homepage disponivel em
102. o Assignment Manager ser disponibilizado no site de seu Project Space MSDN Academic Alliance sendo tamb m publicado no site do projeto VHS AM e O c digo final dos VSPackages desenvolvidos ser disponibilizado no reposit rio da Has kell org As dlls desenvolvidas ou instaladores MSI das mesmas estar o disponibilizadas no site dos projetos VHS e VHS AM assim como um manual de instala o e um documento de li es aprendidas e Um e mail formal dever enviado lista haskell haskell org alertando sobre a conclus o bem sucedida do projeto A implanta o final da solu o o ltimo marco da itera o corrente e caracteriza o in cio da pr xima itera o O projeto VHS AM prev a realiza o de uma segunda e r pida itera o caso o cronograma permita Entretanto esta segunda itera o n o foi detalhada Al m da estrutura o do Modelo de Processo em um aspecto temporal representa do pela sucess o das fases apresentadas acima existe uma estrutura o atemporal que organiza as atividades do projeto n o em rela o ao tempo como as fases e sim de acor do com a rea de conhecimento A metodologia Pro NET divide as reas de conhecimento tamb m chamadas de disciplinas em dois grupos disciplinas de processo e disciplinas de suporte As disciplinas de processo est o relacionadas ao trabalho de desenvolver a solu o S o elas Requisitos An lise amp Projeto Implementa o Testes e Implanta o A
103. o NET Ainda na Fase de Vis o o aluno deste Trabalho de Gradua o elaborou o Gloss rio inicial do projeto e desenvolveu uma Lista de Riscos Esta lista baseada em informa es de toda a equipe permitiu gerenciar o projeto em termos de suas principais defici ncias Uma fotografia da Lista de Riscos ao fim da Fase de Vis o exibida na Tabela 8 Por fim uma identifica o dos stakeholders isto dos indiv duos afetados de algu ma maneira pelo projeto e a aplica o a ser desenvolvida tamb m foi realizada nesta fase sendo apresentada abaixo Programadores Haskell usu rios finais da aplica o Ser o beneficiados diretamente pelo projeto pois ir o dispor de um novo mecanismo para aumentar a produtividade da etapa de implementa o Microsoft Corporation cliente do projeto VHS AM Atrav s do programa Microsoft Shared Source Initiative a empresa est investindo recursos para a realiza o projeto e espera um produto final compat vel com a proposta submetida ao programa Equipes paralelas de desenvolvimento indiv duos externos ao projeto Simon Marlow Krasimir Angelov etc que compartilham os mesmos objetivos de extens o do VS NET para suportar Haskell Deve haver uma intera o e coordena o entre as equipes para permitir uma paraleliza o dos trabalhos e consequentemente um produto final mais completo Usu rios do Assignment Manager e comunidade acad mica em geral professores e a lunos
104. o a obter uma melhor visualiza o de seu c digo fonte atrav s de recursos como coloriza o diferenciada para cada tipo de token da linguagem At hoje edi tores direcionados sintaxe existem e s o bastante teis principalmente por serem leves e simples ao contr rio das atuais IDEs como o caso do UltraEdit 32 40 Nessa ferramen ta para oferecer um suporte m nimo edi o de uma linguagem basta adicionar em um arquivo texto de configura o do editor uma entrada que associa a linguagem a extens es de arquivos tokens e cores Recentemente surgiram alguns projetos para a cria o extens o de IDEs para Haskell Entretanto esses projetos ainda n o foram difundidos na pr tica devido ao pr prio fato de serem recentes ou por causa de suas limita es como mostra a se o Trabalhos Similares e Anteriores O Vi considerado por alguns como o primeiro editor de texto da hist ria 48 Entretanto o t tulo tamb m disputado por outros editores como o Emacs 42 20 A t tulo de ilustra o a Figura 5 apresenta a edi o de um arquivo contendo c digo fonte da linguagem C em um editor simples como o Microsoft Notepad Uma compara o entre essa figura e a Figura 6 que exibe a edi o do mesmo arquivo em um editor dire cionado sintaxe revela como mais interessante trabalhar com a segunda opc o temp cpp Bloco de notas Arquivo Editar Formatar Exibir Ajuda V TesteDLLS cp
105. o do VS NET com Haskell e o Assignment Manager insuficiente n o apenas para o leitor deste docu mento como tamb m para a pr pria equipe do projeto Isto se deve ao fato de que o desen volvimento do projeto e a implementa o de seus casos de uso e requisitos n o funcionais apresentados no Cap tulo 3 envolvem um conjunto diversificado de conceitos tecnologias e ferramentas algumas delas nao discutidas nos cap tulos anteriores Este cap tulo apresenta a evolu o da abordagem de implementa o utilizada pela equipe do projeto VHS AM as sim como as tecnologias por tr s dessa evolu o e a infra estrutura necess ria para supor tar a Fase de Desenvolvimento na qual segundo a metodologia Pro NET o escopo da apli cacao a ser desenvolvida implementado Os resultados obtidos nesta fase at ent o tamb m ser o apresentados contrapondo as conquistas com as dificuldades encontradas 5 1 Uma Escolha Dentro da Escolha Ao se aprofundar em estudos mais t cnicos sobre o VSIP muitos dos quais foram documen tados pelo aluno deste Trabalho de Graduac o e apresentados aos demais integrantes do projeto VHS AM encontrou se um ponto de decis o cr tico para a abordagem de desenvol vimento a ser seguida o pr prio VSIP escolhido como estrat gia de extens o e integra o do VS NET oferece tr s diferentes possibilidades para a cria o de suporte edi o de uma nova linguagem A Figura 35 ilustra essas tr s diferentes abor
106. o tamb m se aplica implementa o de demais funcionalidades e interfaces do VSIP Em resumo sempre se faz necess ria a aplica o do HDirect para a gera o n o s de esqueletos de implementa o como tamb m do c digo de acesso aos componentes j implementados e disponibilizados pelo VSIP 5 4 Casos de Uso e RNFs Implementados o Status Atual do Projeto VHS AM Enquanto a equipe do projeto VHS AM estava focada na elabora o dos documentos da Fase de Planejamento Documento de Especifica o Funcional e o Plano de Projeto al m da realiza o das valida es tecnol gicas e an lises necess rias para garantir o dom nio das novas tecnologias e ferramentas a serem utilizadas conforme apresentado na se o anterior a equipe do projeto VHS original realizou alguns avan os Simon Marlow conseguiu integrar o Haskell VSPackage antigo tarball agora no reposit rio da Haskell org com o compilador GHC permitindo a exibi o de mensagens de erro mais precisas inclusive erros de tipo na tasklistdo VS NET Figura 38 71 Task List 3 tasks n x y Description File l Ei Couldn t match Bool against Char X scratchiystest hs 7 E i Couldn t match b against t gt t1 X scratchyystest hs 1 ti Couldn t match Bool against a Xscratchlvstest hs 1 lt gt Figura 38 Mensagens de erro do proprio GHC exibidas na tasklist do VS NET Enquanto isso Krasimir Angelov iniciou a implementa o de um suporte b si
107. ogies communications msmq default asp 25 03 2004 Microsoft Microsoft Shared Source Initiative dispon vel em http www microsoft com resources sharedsource default mspx 21 03 2004 93 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 Microsoft Microsoft SQL Server 2000 Desktop Engine http www microsoft com sql msde default asp 25 03 2004 Microsoft Microsoft Visual Studio Developer Center disponivel em http msdn microsoft com vstudio 25 03 2004 Microsoft MSDNAA ASSC Project Space Listings disponivel em http www msdnaa net assc projects 25 03 2004 Microsoft Product Overview for Visual Studio NET 2003 disponivel em http msdn microsoft com vstudio productinfo overview default aspx 25 03 2004 Microsoft Recife inaugura Centro de Tecnologia XML disponivel em www microsoft com brasil pr 2003 xml_recife asp 28 03 2004 Microsoft The Official Microsoft ASP NET Site disponivel em http www asp net 21 03 2004 Microsoft Visual Studio NET Academic Tools Source Licensing Pro gram disponivel em http www microsoft com resources sharedsource Licensing V SAcademic mspx 21 03 2004 MinGW org Minimalist GNU For Windows dispon vel em http www mingw org 02 03 2004 Monash University dispon vel em http www monash edu au 25 03 2004 MSDN Brasil ASP NET Starter Kits acess vel em http www msdn
108. oi percebido que apenas editores direcionados a sin taxe n o eram suficientes As etapas de compila o e depura o ainda eram feitas a parte implicando no uso de diferentes ferramentas e impactando negativamente na produtividade do desenvolvedor Quando essas ferramentas foram integradas em apenas uma nasceram portanto as primeiras IDEs inicialmente oferecendo apenas as tr s funcionalidades b sicas do ciclo de implementa o de uma aplica o edi o compila o e depura o 7 Como exemplo pode se citar um IDE pioneira criada em 1964 para a linguagem Dartmouth Basic 1 que originaria a linguagem BASIC alguns anos depois Com o tempo atendendo s crescentes necessidades dos desenvolvedores as IDEs passaram a oferecer conjuntos muito mais ricos de funcionalidades como o suporte a dife rentes tipos de arquivos n o s texto como tamb m gr ficos analisadores estat sticos compiladores incrementais navegadores de documentos e a manuten o da depend ncia entre os mesmos 17 Acompanhando o surgimento de diversas tecnologias da computa o as necessidades dos desenvolvedores aumentaram ainda mais demandando conse quentemente uma evolu o cont nua das IDEs e do conjunto de funcionalidades oferecido pelas mesmas Se antigamente o modelo de desenvolvimento era bastante simples c di gos fonte escritos em uma nica linguagem com o objetivo de rodar em apenas uma plata forma espec fica hoje em dia o
109. omplexa do que uma macro ou add in Adicionalmente enquanto o usu rio pode definir quais add ins ele de seja habilitar e desabilitar no VS NET a nica maneira de desabilitar um VSPackage de sinstal lo removendo o do registro do Windows o que pode tornar o processo de desen volvimento ainda mais complicado A Tabela 3 exibe uma compara o das funcionalidades suportadas por add ins macros e VSPackages 57 Tabela 3 Funcionalidades suportadas por macros add ins e VSPackages 26 Funcionalidade Macros Add ins VSPackages Manipula o do objeto DTE Sim Sim Sim Criagao de janelas de l Nao Sim Sim ferramentas Inser o de um comando Nao Sim Sim de menu Cria o de pagina de propriedades l N o Sim Sim customizada na janela Options Informa es na janela About Nao Sim Sim Informa es na tela inicial do S Nao Nao Sim VS NET splash screen Criar um novo tipo de projeto Nao Nao Sim Fazer parte de um build N o N o Sim Criar um depurador N o N o Sim Criar um editor de texto N o N o Sim Criar um editor gr fico N o N o Sim Adicionar dados no 3 N o Nao Sim Server Explorer Adicionar par metros ao b N o Nao Sim comando devenv exe Adicionar suporte edi o como N o N o Sim IntelliSense ao editor Desenvolver utilizando uma Sim s VB NET Sim Sim VSIP Extras linguagem gerenciada 58 Atualmente o VSIP encon
110. on gt Dim s pu M DTE hetig Moe Vie g Project Figura 30 VSMacros IDE ga Macros 2 MyMacros H 3 Samples Z DevStudio6Editor AddFunctionDescription 13 AddRevisionMarks AutoCompleteFromFile CloseExceptActive CommentOut ifdefOut ifndefOut MultiplePastes AD OneTimeInclude PrintAllopenDocuments 4 9 ToggleCommentStyle MakeAddin v I e Macro g Solutio Conte Figura 31 Macro Explorer 51 4 4 2 Macros no contexto do projeto VHS AM Sem d vida macros s o teis geis e produtivas Como elas n o est o associadas a uma linguagem espec fica nada impede o seu uso pelo programador Haskell isto esta funcio nalidade dada gratuitamente pelo VS NET Entretanto macros possuem muitas limita es que as impedem de ser consideradas na implementa o das funcionalidades expostas no cap tulo anterior As principais limita es que conduziram a tal conclus o s o e N o poss vel construir interfaces gr ficas com macros e Nao poss vel criar janelas de ferramentas customizadas com macros e N o poss vel habilitar e desabilitar dinamicamente itens em menus e barras de ferramentas com macros e N o poss vel criar um instalador para funcionalidades implementadas com macros e Macros no VS NET s o obrigatoriamente escritas em VB VB NET linguagens com as quais os integrantes do projeto VHS AM n o poss
111. onal cujo detalhamento n o faz parte do escopo deste documento podem ser encontradas no tutorial A Gentle Introduction to Haskell Version 98 29 Em resumo as principais vantagens oferecidas por linguagens funcionais podem ser listadas em e Maior concis o c digos feitos em linguagens funcionais s o de 2 a 10 vezes menores do que c digos feitos em linguagens imperativas 38 e Maior eleg ncia e facilidade de compreens o o gap sem ntico entre o programador e a linguagem menor no caso de linguagens funcionais Por exemplo o conceito de list com prehension compreens o de listas facilita extremamente a defini o de opera es de ma peamento e filtragem de cole es 10 e Aus ncia de core dumps linguagens funcionais s o fortemente tipadas e n o possuem acesso expl cito mem ria sendo imposs vel tratar um inteiro como um ponteiro por exem plo ou haver refer ncias nulas e Reuso de c digo atrav s da utiliza o de polimorfismo poss vel obter um n vel razo vel de reuso de c digo em linguagens funcionais e Lazy evaluation as express es s o avaliadas sob demanda isto nenhuma parte desne cess ria de c digo avaliada durante a computa o de um resultado e Literate Programming esta t cnica que combina uma linguagem de programa o com uma linguagem de documenta o permite a extra o n o apenas do c digo execut vel como tamb m de sua documenta o a partir de um me
112. os casos de uso e RNFs pelos releases internos da aplica o 43 Tabela 3 Funcionalidades suportadas por macros add ins e VSPackages 26 58 Tabela 4 Ambiente de desenvolvimento do projeto VHS AM 68 Tabela 5 Ambiente de testes do projeto VHS AM eae 69 Tabela 6 Responsabilidades dos pap is da Pro NET 79 Tabela 7 Divis o da equipe em pap is no projeto VHS AM 80 Tabela 8 Lista de Riscos do projeto VHS AM ao fim da Fase de Vis ao 82 Tabela 9 Lista de Artefatos do projeto VHS AM rata 83 1 INTRODUCAO Integra o esta a melhor palavra para resumir nao apenas o produto final constru do atra v s deste este projeto como tamb m seu pr prio processo de desenvolvimento Este do cumento procura estabelecer uma ordem cronol gica e funcional para situar cada uma das tecnologias ferramentas conceitos atividades e equipes integrados conjuntamente na realiza o do projeto VHS AM e consequentemente na realiza o deste Trabalho de Gra dua o importante deixar claro j a partir deste momento que o projeto VHS AM um super conjunto deste Trabalho de Gradua o sendo apresentado ainda nesta se o um relacionamento mais detalhado entre ambos Grosso modo o objetivo principal do projeto VHS AM consiste em estender um am biente integrado de desenvolvimento o Visu
113. p o quando selecionada pelo desenvolvedor cria um framework contendo os projetos e as classes necess rias para iniciar o desenvolvimento do add in incluindo inclusive um projeto de instala o para o mesmo Resta ao desenvolve dor portanto apenas preencher os ganchos deixados propositalmente por esse frame work de modo a adicionar funcionalidades a seu add in 4 5 2 Add ins no contexto do projeto VHS AM A utiliza o de add ins para a implementa o de casos de uso menos complexos do VS NET a princ pio pareceu um caminho a ser seguido principalmente pela presen a do framework para a cria o de add ins no VS NET que n o encontra similar na vers o original do VSIP 53 Entretanto com o surgimento da recente vers o Extras do VSIP publicada oficial mente em marco de 2004 o VS NET passou a oferecer tamb m um framework para abor dagens de implementa o baseadas no VSIP Este novo framework parece ter se adequado perfeitamente aos casos de uso do projeto VHS AM que seriam anteriormente implementa dos por add ins Por exemplo percebeu se que a janela de ferramentas a ser criada para implementar a integrac o do VS NET com o interpretador GHCi UC13 permitindo ao usu rio a realizac o de consultas ao c digo em desenvolvimento teria um custo de implementa c o praticamente semelhante independentemente da escolha entre add ins e o VSIP Ex tras Adicionalmente uma vez que a infra estrutura de desenvolvimen
114. p Defines the initialization routines for the DLL include stdafx h include TesteDLLS5 h ifdef _DEBUG define new DEBUG_NEW endif const GUID CDECL BASED_CODE _tlid OxB161B476 0x378C Ox41CA OxBS8 Ox3D 0x41 OxD9 Ox74 bool cTesteDLLSApp InitInstanceQ 1 cwinapp InitInstance Register all OLE server factories as running This enables the OLE libraries to create objects from other applications ColeobjectrFactory RegisterAT10 return true Figura 5 Edic o de c digo fonte em um editor simples como o Notepad UltraEdit 32 d MempMemp cpp DER A File Edit Search Project View Format Column Macro Advanced Window Help Dd uj ewtg ee Te E E n TesteDLL5 cpp Defines the initialization routines for the DLL include stdafx h include TesteDLL5 h ifdef DEBUG define new DEBUG NEW endif const GUID CDECL BASED CODE tlid 0xB161B476 Ox378C Ox41CA OxB8 Ox3D 0x41 OxD9 0x74 Ox bool CTesteDLLSapp InitInstance CWindpp InitInstance j Register all OLE server factories as running This enables the ft OLE libraries to create objects from other applications COleObjectFactory RegisterAll return true For Help press F1 Ln 25 Col 9 C0 DOS Mod 3 4 2004 12 27 52 File Size 1622 Figura 6 Edi o do mesmo c digo fonte agora em um editor direcionado sintaxe 21 Apesar de interessantes logo f
115. pelo framework de add ins do VS NET Wizards de item por sua vez adicionam um novo item ao projeto corrente Tamb m poss vel a exibi o de uma interface gr fica neste tipo de wizard embora isto seja menos comum Por fim wizards de contexto inserem texto um determinado arquivo como a adi o de um novo m todo a uma classe A presen a de uma interface gr fica neste tipo de wizard tamb m conhecida como sekeleton insertion pode ser til para orientar programadores que ainda n o estejam familiarizados com a sintaxe da linguagem A Figura 34 ilustra alguns ti pos de skeleton insertions que podem ser utilizados por classes C Para implantar um wizard necess rio realizar as manipula es adequadas no re gistro do Windows e adicionalmente saber lidar com arquivos de configura o espec ficos do VS NET para wizards que se dividem em dois tipos Os arquivos vsdir definem uma lis ta de wizards de projeto item ou contexto suportados por uma determinada linguagem especificando informa es como o icone do wizard sua ordena o em rela o a demais wizards seu nome e sua descri o por exemplo Os arquivos de configura o vsz por sua vez s o referenciados pelos vsidr e indicam qual o wizard engine utilizado o padr o do VS NET ou um implementado pelo desenvolvedor passando par metros ao mesmo 15 Um wizard engine possui tr s tarefas 1 montar a GUI do wizard para o usu rio 2 coletar as en
116. raries ide 22 03 2004 Haskell org The Glorious Glasgow Haskell Compiler disponivel em http www haskell org ghc 22 03 2004 Haskell org About Haskell dispon vel em http www haskell org aboutHaskell html 23 03 2004 IBM com Rational Unified Process dispon vel em http www 306 ibm com software awdtools rup 25 03 2004 92 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 IDM Computer Solutions Inc UltraEdit 82 dispon vel em http www ultraedit com products index html 25 03 2004 lerusalimschy R Cerqueira R Lua NET Integrating Lua with Rotor dispon vel em http Avww tecgraf puc rio br rcerq luadotnet 22 03 2004 Instituto Superior T cnico de Portugal O Movimento de Software Livre e o Sistema Operativo GNU Linux dispon vel em http Avww tagus ist utl pt Stallman indexportugues htm 24 03 2004 KDE org KDE Homepage http www kde org 25 03 2004 KDevelop org KDevelop Home dispon vel em http www kdevelop org 25 03 2004 Kinnersley B The Language List dispon vel em http people ku edu nkinners LangList Extras langlist htm 29 03 2004 L v nez E Computer Languages History dispon vel em http Awww levenez com lang 30 01 2004 Lisp org Association of Lisp Users dispon vel em http www lisp org alu home 23 03 2004 MicroLink com A Superioridade de um ou a Desmitifica o do Outro
117. retanto tais acontecimentos n o justificam os dados exibidos na estimativa acima A real dificuldade enfrentada pela equipe do projeto se refere ao n mero razoavelmente alto 88 de ferramentas e tecnologias que precisaram ser integradas antes do inicio da Fase de De senvolvimento A listagem abaixo por exemplo retrata um pouco das dificuldades encontra das em rela o configura o de ambiente que retardaram o desenvolvimento do projeto e Compila o do GHC e de um runtime system espec fico para o mesmo ver Cap tulo 5 e Compila o de demais ferramentas do reposit rio Haskell como Happy Alex e HDirect este ltimo inclusive apresentando algumas quebras de build e bugs em tempo de execuc o e Adapta o para o Visual Studio NET 2003 de um c digo fonte originalmente desenvolvido para a vers o 2002 do Visual Studio NET e Necessidade de utiliza o de um ambiente Unix mesmo que simulado em uma plataforma Windows para compilac o nao apenas das ferramentas do reposit rio da Haskell org como tamb m do c digo do pr prio Haskell VSPakage Al m disso as etapas de implementa o tamb m foram dificultadas pelo fato do VSIP ser protegido por licen a o que impede a publica o de experi ncias de outros pro gramadores pela Web Por fim aliada a essa escassez de experi ncias e exemplos na Web a inconsist ncia e desatualiza o da documenta o interna do pr prio VSIP tamb m dificul taram o trabalho da eq
118. ria bem definida contendo um array de ponteiros de fun o Cada elemento deste array portanto cont m o endere o para uma fun o im plementada pelo componente Entretanto os benef cios providos pelo conceito de interfaces tradicionais est o da mesma forma presentes em interfaces COM como o reuso de aplica es e polimorfismo Dois outros conceitos s o essenciais para o entendimento da tecnologia COM stubs e proxies Um proxy um componente COM que atua no mesmo processo de seu cliente estando portanto em uma DLL simulando e se comunicando com outros componentes COM em processos diferentes Um stub por sua vez um componente COM DLL que atua no mesmo processo de um outro componente COM EXE com o objetivo de empaco tar e desempacotar dados de para o cliente A Figura 36 esclarece melhor os conceitos 65 fronteira entre processos Resi aorta desempaco ta par metros marshalling unmarshalling loca procedure call Figura 36 Fluxo de eventos em uma chamada de um cliente a um componente COM A implementagao de componentes COM suportada pelo conceito de IDL 85 ou Interface Definition Language A IDL uma especificac o que permite descrever interfaces de maneira independente de linguagem Atualmente existem muitos compiladores que transformam uma especifica o IDL em c digo para proxies e stubs em uma linguagem de programa o espec fica Este o caso do co
119. rkspace JHaskel 1 Project Mest this p show x os p shov x oun JHaskel io feo nakeGlobelVarDef Definition Parsec Lib makeGlobalVarDef FDef name _ _ public static JFunction nome E JExampleModule hs E JExampleModule java 6 makeFunctionLookup Definition E Main he 7 xakeFunctionLookup FDef name _ params _ _ name getFunction nodule name where 1 pc shov length params makeFunctionDefinition FDef name typeDef parans caselevel expr 2x 956 n tpublic static JPsrameter nane paranList n tn if caselevel 0 then else USt JParameter jCase new JParameter show caseLevel compileTopExpr expr n paramList drop 2 concatMap JParameter 44 length parans 83 Main hs EEE Custom Tool Syntax Conmand H Nbin JCreator Tools Haskell Hugs Syntax bat H bin JCreator E Projects jHaskell Onderzoek Conpiler Main hs Directory E Projects jHaskel l Onderzoek Compi ler Performing static checks paraneters Main hs 98 E Projects jHaskel IOnderzoek Conpi ler Hain hs 954 Missing binding for variable nakefunctionDefinition in type signat Process completed Build Output FindinFiest FindnFies 27 E For Help press F1 Ln 54 Ca 1 DOS NUM Figura 12 JCreator com suporte a Haskell 2 5 3 Projetos de Suporte a Outras Lin
120. rojeto durante o progresso da solu o A Figura 44 mostra como as disciplinas s o executadas durante uma itera o As disciplinas de suporte que aparecem ao centro s o executadas de forma cont nua durante toda a itera o O conceito de disciplinas possui grande impacto no desenvolvimento do projeto visto que os artefatos do mesmo s o catalogados por disciplina Como exemplo a Figura 45 mos tra a estrutura de reposit rio criada para o projeto VHS AM durante o fim da Fase de Vis o Juntamente com os diret rios de cada disciplina existe um diret rio espec fico para a base de conhecimento enriquecida durante todo o projeto Normalmente essa base se localiza em um reposit rio central da organiza o n o sendo parte de um projeto espec fico 85 disciplinas principais Em disciplinas de suporte Figura 44 Relacionamento entre disciplinas na Pro NET DD vHS AM es O AmbienteGerenciaDeConfiguracao AnaliseProjeto summer BaseConhecimento iB Implantacao E IL Instaladores tal O VSPackages tf O PlanejamentoGerenciamento de O AtasReuniao O SolicitacoesMudanca iT StatusReport 5 Requisitos C3 Riscos iol O Testes Figura 45 Reposit rio do projeto VHS AM A Figura 46 relaciona o aspecto atemporal e temporal da Pro NET As fases est o na primeira linha e as disciplinas na primeira coluna As c lulas centrais representam quais s o
121. s kell Adicionalmente a proposta incluiu a especifica o de uma equipe de 5 integrantes para a realiza o do projeto sobre a qual o aluno deste Trabalho de Gradua o deveria assumir al m das originais tarefas de desenvolvimento atividades de coordena o e ger ncia de projeto O aluno seria portanto o respons vel pela condu o formal do projeto atrav s de uma metodologia de desenvolvimento de software bem definida a Pro NET 14 3 A Pro NET uma metodologia desenvolvida pelo Centro de Tecnologia XML do Recife 63 basea da no Microsoft Solutions Framework 86 Ela apresentada em detalhes no Cap tulo 6 11 Ainda no segundo semestre de 2003 a Microsoft anunciou a proposta enviada pela UFPE como uma das cinco vencedoras da RFP 50 Os recursos obtidos com esta aprova o permitiram a consolida o da equipe inicialmente proposta os alunos Mauro La Salette Ara jo e Marden Menezes Costa ambos da gradua o do curso de Ci ncias da Computa o do Centro de Inform tica da UFPE foram integrados equipe de desenvolvimento as sim como o professor Paulo Henrique M Borba que se tornou um dos respons veis pela homologa o final do projeto juntamente com o professor Andr Santos No dia 15 de dezembro portanto foi iniciado oficialmente o projeto VHS AM Do mesmo modo que o projeto VHS original foi criado um website para o VHS AM acess vel a partir de www cin ufpe br haskell vhs am assim como uma id
122. s duran te todo o desenvolvimento da aplica o Este modelo divide o projeto em varias itera es cada uma contendo 5 fases distintas conforme apresentado na Figura 43 Visao Planeja mento Desenvolvimento Estabiliza o e Implanta o Como pode ser observado na pr pria Figura 43 o fim de cada fase caracterizado por um marco ou milestone A Fase de Vis o a primeira da itera o podendo ser considerada um pr planejamento do projeto Neste momento a equipe do VHS AM identificou a motivac o para o projeto seus objetivos produtos finais e restri es elaborando tamb m um macro cronograma O aluno deste Trabalho de Gradua o consistiu as informa es levantadas em um Documento de Vis o e Escopo aprovado em conjunto com o restante da equipe O do cumento foi elaborado em ingl s de modo que tamb m pudesse ser compartilhado com os membros do projeto VHS O vision statement que resume o sentido do projeto em uma nica frase foi definido como To support a productive use of Haskell through VS NET ex tension and AM integration spreading around the utilization of the language and expanding its application boundaries 4 O professor Paulo Borba participar da homologa o final do projeto validando o para o usuario final 80 Fase de Implanta o Fase de Vis o Fase de Estabiliza o Fase de Planejamento Fase de Desenvolvimento Figura 43 Modelo de Processo da Pr
123. s internos s o utilizados pela equipe para adicionar subconjuntos de funcionalidades ao produto at que ele seja completamente implementado Em uma analogia com a conhecida metodolo gia RUP Rational Unified Process 39 os releases internos da Pro NET correspondem aos builds da metodologia da IBM Rational 12 Na Pro NET e no MSF o termo build utilizado com outro significado uma etapa intermedi ria de um release interno n o constituindo necessariamente um estado da aplica o que possui um sub conjunto de funcionalidades completo e bem definido 42 No Plano de Implementa o do projeto VHS AM outro artefato da metodologia Pro NET foram definidos inicialmente tr s releases internos para a aplica o A divis o dos casos de uso e dos requisitos nao funcionais entre esses tr s releases internos se deu conforme mostra a Tabela 2 Tabela 2 Distribui o dos casos de uso e RNFs pelos releases internos da aplica o Release S Requisitos nao Objetivo Casos de Uso there Interno funcionais UCO02 UCOS Validar o uso do AM com o m nimo 1 UC04 UC15 NFRO7 NFRO8 de suporte a Haskell UC16 UCO1A UCO1B UCO01C UCO1D Permitir um suporte maior edi o NFRO1 NFROS 2 UCO5 UCO6 de c digo Haskell no VS NET NFRO4 NFRO5 UCO7A UC10 UC14 e UCO1E UCO1F Adicionar features de menor priori UCO8 UCO7B 3 dade e que dependem do e NFRO2 NFRO6 UCOS UC11 xer parser do GHC UC
124. smo c digo fonte 12 e Alta abstra o e modulariza o o conceito de fun es de alta ordem por exemplo per mite que fun es sejam passadas como argumentos para outras fun es retornadas como resultado de outras fun es ou armazenadas como parte de uma estrutura de dados Al m disso permitida ao programador a defini o de seus pr prios operadores infixos e Gerenciamento autom tico de mem ria o mecanismo de coleta de lixo garbage collecti on evita que programadores se preocupem em desalocar explicitamente a mem ria Apesar da s rie de vantagens apresentadas acima reconhecido que a utiliza o e aplica o atual de linguagens funcionais s o limitadas por uma s rie de restri es 80 o casionando uma sub utilizagao do potencial dessas linguagens Algumas dessas defici n cias s o discutidas a seguir mais especificamente no contexto da linguagem Haskell O primeiro ponto negativo atribu do utiliza o de Haskell no desenvolvimento de aplica es diz respeito performance fato que programas desenvolvidos atrav s desta linguagem tendem a ter pior performance quando comparados a programas similares de senvolvidos atrav s de outras linguagens 5 Contudo este problema n o constitui um em 18 pecilho real para aplicac es em que a performance nao absolutamente critica Wadler 80 em um artigo que inclusive defende o uso de C C e questiona o uso de linguagens fun cionais cita
125. so de uso UC1O ee cece ce ener sents tae enaee ee seaeeseeesaeesaecaeeseeesaeesaaseaeseeseaeeeae 39 Figura 23 Esbo o de interface para o caso de uso UC11 cece cee eee seers taeseaeece tease seeesaeesaesaeesaeesaeeseaeseaeeeeeseaeeagae 39 Figura 24 Esbo o de interface para o caso de uso UC12 ii eeee sees seeesaeeseaeseeseeesaeesaesnaeseeseaeeeae 40 Figura 25 Esbo o de interface para o caso de uso UC13 Figura 26 Diferentes n veis de extens o do VS NET ccccccccscsesceeseeeeseeseeeeeeessceeseasssaesneseceeseesseassnessceesneeseassesaneeeneaseoseaeae 46 Figura 27 Submodels do AOM Ee det RU Pp tte tenen n dedecus in tiber AUT A DES ck pads dat oh Gena Peeters 47 Fig ra 28 Toolbox do VS NET vine utn deo Eee tre cte tine a SD dp TY asno do eee et etg cep RU La e ec ed rada 48 Figura 29 Janela de propriedades do VS NET ssssssssessesesseseeeeneenesitnna nter tha ttes inna stn anth sits sensa sins a tad inns ainsi nsa 49 Figura 30 VOMactos IDE n teen c adit eu en ie cai dati i eere DH RE E EE e EE E ERE SEP E ER ERE SERERE HE SEER ER Eta 51 Figuras k Macro Explorer c cde Meer ere cedere ceteros ivoire lalla leote ae Moelle adie Mash va ie Mie ec 51 Figura 32 Exemplo de p gina de propriedades da janela Options 53 Figura 33 Wizard de projeto utilizado pelo framework de add ins do VS NET 55 Figura 34 Wizards de contexo sk
126. sual Studio NET 2003 Tal alternativa baseada originalmente no suporte a projetos para a linguagem SML NET con sistia em utilizar VS NET wizards para criar um novo template de projeto do tipo Visual C Makefile que permite a especifica o do processo de compila o em mais detalhes pelo programador ou seja o GHC poderia ser utilizado para compilar este tipo de projeto Deste modo o esfor o para a migra o envolveu e Manipula o das entradas do registro necess rias para o novo wizard e Elabora o dos arquivos de configura o vsdir e vsz utilizados pelo novo wizard e Cria o de uma dll de recursos ocalized resource contendo cones textos e outros recursos a serem utilizados pelo novo wizard e Adequa o do arquivo JavaScript acionado ao fim do wizard para a cria o do projeto Has kell especifica o do GHC como compilador e c pia dos arquivos iniciais necess rios O aluno Marden Menezes foi alocado para a cria o de um instalador que implantas se esse suporte a projetos Haskell no VS NET Utilizando o pr prio VS NET o instalador foi criado com a tecnologia Microsoft Installer gerando um arquivo MSI que conduz intuitiva mente o usu rio do in cio ao fim da instala o Um screenshot desse instalador em a o apresentado na Figura 39 Ap s a conclus o bem sucedida dos testes e a elabora o de release notes pelo aluno deste Trabalho de Gradua o o primeiro release interno estava conclu do
127. t The text contained in the control Figura 29 Janela de propriedades do VS NET Atrav s de uma linguagem gerenciada como C ou VB NET extremamente f cil a implementac o de um componente visual ao nao a ser adicionado na toolbox do VS NET basta criar uma classe que herda da classe Component definida na class library do NET Framework Uma vez compilado o projeto que cont m essa classe basta arrastar a dll resul tante da compila o pr pria toolbox para que o novo componente seja adicionado e esteja pronto para ser arrastado e soltado em demais projetos Entre outras funcionalidades poss vel especificar o icone do componente a ser a dicionado suas propriedades categorias para agrupar suas propriedades descri es para cada propriedade os eventos que o componente dispara etc Adicionalmente poss vel definir designers para os componentes visuais que determinam como o mesmo ser dese nhado em um formul rio Windows ou Web 49 4 3 2 Componentes customizados no contexto do projeto VHS AM Como se esperava componentes customizados nao revelaram muita utilidade ao projeto VHS AM Em primeiro lugar componentes visuais fazem sentido apenas para projetos que lidam com interfaces gr ficas o que nao o caso do tipo de projeto Haskell Console Appli cation definido no cap tulo anterior Em geral o conceito de componentes visuais ou nao apresentados nesta se o al m de n o encontrarem uma aplica
128. tada a seguir Infelizmente contrariando as boas pr ticas da En genharia de Software era comum que a vers o mais recente do c digo fonte de algumas dessas ferramentas simplesmente n o compilasse fato popularmente conhecido como quebra do build O pr prio aluno deste Trabalho de Gradua o por algumas vezes depa rou se com problemas desse tipo em rela o ao HDirect sendo necess ria uma notifica o a seus mantenedores para que as devidas corre es fossem efetuadas Adicionalmente o pr prio processo de compila o e configura o das ferramentas mesmo quando elas n o apresentavam uma quebra de build consistiu em um desafio devido a grande quantidade de passos e configura es necess rias a serem executadas pelo desenvolvedor Algumas cita es abaixo extra das da documenta o de ferramentas do reposit rio da Haskell org retratam tal dificuldade e make is great if everything works Our goal is to make this happen often but somehow it often doesn t instead some weird error message eventually emerges from the bowels of a di rectory you didn t know existed 32 e Debugging Makefiles is something of a black art 32 e The Windows situation for building GHC is rather confusing 31 e There are several strange things about ssh on Windows that you need to know 31 e If you are paranoid delete config cache if it exists 31 e The latest copy of the building guide is
129. te Exemplos de tais tarefas s o a adi o de um projeto a uma solu o e a adi o de um Web Service a um projeto Uma vez conclu da a tarefa a miss o do wi zard est cumprida e ele n o mais utilizado at que a tarefa seja solicitada novamente Wizards s o tradicionalmente conhecidos como janelas de di logo do tipo Next Next Finish atrav s das quais o usu rio insere um conjunto de entradas e ao fim do wi zard obt m uma sa da espec fica Este conceito um pouco mais elaborado no VS NET que divide wizards em tr s categorias 54 Wizards de projeto sao executados quando o usuario seleciona um template de pro jeto a partir da janela New Project ou Add Project O wizard pode entao apresentar uma interface gr fica na qual o desenvolvedor especifica as op es para o novo projeto a ser cri ado Em seguida o wizard copia alguns arquivos de template e os adiciona ao projeto O framework para add ins do VS NET apresentado na se o anterior utiliza um wizard de projeto Uma p gina da interface gr fica deste wizard exibida na Figura 33 isual Studio Add in Wizard Page 1 of 6 Select a Programming Language Creating Add ins in different programming languages is supported Which language would you like to use Create an Add in using Visual CE Create an Add in using Visual Basic C Create an Add in using Visual C ATL Help Cancel Figura 33 Wizard de projeto utilizado
130. ter respostas dos exerc cios e acessar as notas atribu das pelo professor A Figura 8 mostra um screenshot do AM em execu o 24 Microsoft Development Environment design Add Course File Edit View Tools Window Help amp l t cug y Ha 4 o a G gt 0B o toy pe fe Fal vs custom faculty addcourse html ret amp fu Add Course g Course Management Work With Courses Add Course Delete Course Connect to Existing Course E Use Assignment Manager Course Name Compiladores Location Enter the location where you store course files This location must be accessible to students and can be either a network location a local directory available through a Web site or an FTP site Help hal9000 compilers Figura 8 Assignment Manager em execu o Facuty Client Para entender o conceito de exerc cio no Assignment Manager necess rio en tender o conceito de solu o e projeto no VS NET Grosso modo a IDE define um projeto como um conjunto de arquivos c digo fonte na linguagem escolhida p ginas HTML ima gens cones etc que podem ser compilados para a constru o um output espec fico Esse output pode ser uma aplica o Windows uma aplica o de console uma dll ou um Web Service por exemplo Uma solu o por sua vez nada mais do que uma cole o de proje tos que gerencia as interdepend ncias entre eles e realiza opera
131. to estivesse consoli dada e a tecnologia dominada a utiliza o do VSIP traria vantagens adicionais devido ao seu maior poder de extens o e integrac o Dois outros itens diminu ram a necessidade pela utiliza o de add ins no projeto VHS AM O primeiro diz respeito incapacidade desta tecnologia em criar novos tipos de projeto e estender linguagens ao contr rio do VSIP Isto descarta a utiliza o de add ins para a implementa o de grande parte dos casos de uso O segundo item se refere im plementa o dos demais casos de uso como o caso da invoca o do GHCi para consul tas UC13 e a utiliza o de um module viewer para Haskell UC06 Nestes casos temeu se que a diferen a das estrat gias de implementa o desses casos de uso com os demais provocasse incompatibilidade ou um overhead de programa o principalmente pelo alto grau de relacionamento entre os casos de uso em geral Entretanto como as necessidades da estrat gia de implementa o de um caso de uso tornam se mais claras apenas quando o mesmo abordado mais profundamente ainda h a possibilidade de que add ins venham a ser teis na implementa o de alguns casos de uso restantes do projeto embora isto n o seja esperado 4 6 Wizards 4 6 1 A tecnologia VS NET wizards constituem uma tecnologia cujo principal objetivo conduzir o desenvolve dor atrav s de passos automatizados para a conclus o de tarefas complexas de serem exe cutadas manualmen
132. tra se em sua vers o Extras que permite a cria o de VSPackages a partir de uma linguagem gerenciada e oferece wizards para a criac o de um framework contendo uma implementac o b sica de um VSPackage Toda a equipe do pro jeto VHS AM participou como testadora das vers es VSIP Extras Beta e VSIP Extras Re fresh liberadas entre a vers o original no VSIP e a vers o atual Alguns dos bugs identifi cados consistem na inconsist ncia da documenta o do VSIP a partir da vers o Refresh Esta uma das dificuldades encontradas a serem discutidas no Cap tulo 5 4 7 2 O VSIP no contexto do projeto VHS AM Cruzando as informag es da Tabela 3 com o question rio Choosing the Appropriate Automation Approach 53 do Microsoft Visual Studio Develper Center chega se conclu sao de que o VSIP realmente a abordagem mais promissora ao projeto VHS AM satisfa zendo a implementa o de varios de seus casos de uso Entretanto como mostra o cap tulo a seguir diversas quest es mais complexas rela tivas estrat gia de implementa o principalmente em rela o ao VSIP precisaram ser abordadas O surgimento dessas quest es se revelou um processo natural no projeto medida que a equipe adquiria mais intimidade com os conceitos tecnologias e ferramentas necess rias sua realiza o 59 5 ABORDAGEM DE DESENVOLVIMENTO E RESULTADOS OBTIDOS Dizer apenas que o VSIP foi a estrat gia utilizada para a extens o e integra
133. tradas do usu rio durante a execu o do wizard e 3 disparar um script para executar tarefas espec ficas ao fim do wizard como a c pia de templates de arquivos por exemplo 55 Class View WindowsApplication1 RES gll WindowsApplicationt WindowsApplicationt ee B i Go To Definition 8 bu Di 48 Go To Reference X Fd s Browse Definition g In y iud 3 M ga Quick Find Symbol jz Add Property Copy 9 Add Field 2 Sort Alphabetically Add Indexer rg Sort By Type Ma Sort By Access 2 Group By Type Ea Properties Figura 34 Wizards de contexo skeleton insertions para uma classe Cf 4 6 2 Wizards no contexto do projeto VHS AM Wizards de projeto s o uma excelente maneira para adicionar novos templates de projeto s linguagens originais do VS NET Entretanto o projeto VHS AM demanda novos tipos de pro jeto para novas linguagens e n o apenas novos templates de projeto Dessa forma o su porte a projetos oferecido pelo VSIP se apresentou como uma melhor op o Wizards de item entretanto revelaram se como a maneira mais simples de imple mentar o caso de uso referente adi o de um novo m dulo Haskell a um projeto do tipo Haskell Console Application Isto acontece porque o wizard necess rio neste caso de uso n o necessita de um maior poder integra o n o havendo nem a necessidade de interface gr fica para a execu o desse wizard Seria necess
134. uages ACM SIGPLAN Notices agosto 1998 94 81 82 83 84 85 86 Webopedia com What is API dispon vel em http www webopedia com TERM A API html 23 03 2004 Yale University dispon vel em http www yale edu 25 03 2004 DinosaurCompilertools net The Lex amp Yacc Page disponivel em http dinosaur compilertools net 24 03 2004 CVSHome org Concurrent Versions System dispon vel em http www cvshome org 24 03 2004 Object Management Group The Common Object Request Broker Architecture and Specifica tion pg 66 julho 2002 Microsoft com Microsoft Solutions Framework dispon vel em http www microsoft com msf 24 03 2004 95 Haskell that s where I just curry until fail unwords any error drop all undefined maybe break otherwise in sequence span isControl and take max id d 96
135. ue detalha seus casos de uso e requisitos nao funcionais Cap tulo 3 e tamb m o Plano de Projeto que descreve as abordagens a serem seguidas para a condu o do projeto em rela o s diferentes reas de conhecimen to Implementa o Testes Implanta o etc Ambos os documentos foram discutidos e va lidados com toda a equipe que tamb m esteve envolvida na elabora o de valida es tec nol gicas para o melhor entendimento dos conceitos tecnologias e ferramentas necess rias ao projeto importante destacar que nesta fase os principais documentos as serem produ zidos no projeto foram registrados no Plano de Qualidade que faz parte do Plano de Proje to conforme mostra a Tabela 9 Tabela 9 Lista de Artefatos do projeto VHS AM Artefato Idioma Fase em que ser Respons vel desenvolvido Vis o e Escopo Ingl s Vis o Andr Santos Atas de Reuni o Portugu s Todas Andr Furtado Gloss rio Portugu s Todas Andr Furtado Valida o de Produtos e y Planejamento e De Tecnologias POROUS senvolvimento ee anno see Plano de Projeto Portugu s Planejamento Andr Furtado Especificagao Funcional Ingl s Planejamento Andr Furtado Planilha de Riscos Portugu s Todas Andr Furtado Projeto de Testes Portugu s Desenvolvimento Andr Furtado 1 Desenvolvimento e 5 Release Notes Ingl s Ma Mauro Ara jo Estabiliza o Guia de Instala o Ingl s Estabiliza o Marden Menezes Bas
136. uem muita intimidade 4 5 Add Ins 4 5 1 A tecnologia De modo a superar as limita es das macros o VS NET oferece uma tecnologia mais pode rosa e consequentemente um pouco mais complexa para a extens o e integra o do ambiente de desenvolvimento os VS NET add ins Eles s o aplica es que se acoplam IDE e sao utilizadas dentro da mesma comunicando se com o ambiente atrav s do Automa tion Object Model Add ins s o componentes COM o que implica em um esforco adicional para sua implementa o pois necess rio compilar e instalar add ins antes que os mesmos possam ser utilizados ao contr rio das macros que s o escritas e executadas mais diretamente As vantagens da utiliza o de add ins entretanto s o evidentes Al m de ter acesso a uma API mais poderosa do que as macros fazendo um melhor uso do AOM do VS NET add ins s o mais f ceis de serem distribu dos e n o possuem seu c digo exposto como o caso das macros pois eles s o compilados em c digo bin rio Isto evita altera es inadvertidas ou maliciosas por parte de terceiros protegendo a propriedade intelectual do desenvolvedor Add ins s o ideais para desenvolvedores e empresas que desejem integrar aplica es de m dia complexidade ao VS NET dando a impress o ao usu rio final de que essas aplica es s o nativas da IDE Alguns exemplos das possibilidades proporcionadas pelos add ins ausentes nas VS NET macros s o 14 A tecnolog
137. uipe Os membros do projeto VHS AM entretanto acreditam que estas dificuldades fazem parte de uma etapa j em supera o estando os problemas cada vez mais mantidos sob controle O processo de compila o das ferramentas do reposit rio da Haskell org por e xemplo foi dominado com mais seguran a assim como modelo de funcionamento do VSIP Espera se portanto que as atividades alocadas no futuro se d em em um ambiente mais est vel visando apenas ao enriquecimento das funcionalidades do Haskell VSPackage em desenvolvimento 7 2 Reflex o sobre os Resultados Obtidos Embora o surgimento de algumas dificuldades tenha atrasado o cronograma original do pro jeto pode se dizer que o resultado obtido at ent o satisfat rio Utilizando um conjunto de tecnologias pioneiras nunca antes integradas os projetos VHS VHS AM est o validando com sucesso a utiliza o de Haskell n o apenas no VS NET IDE extremamente poderosa como tamb m em demais ferramentas como o Assignment Manager Diferentemente de todas as demais propostas de IDE apresentadas para Haskell at ent o este projeto est contribuindo para a defini o de um conjunto de interfaces a ser ex posto pelo GHC que disponibilizar para o VS NET exatamente o que a IDE deseja obter No futuro inclusive isto contribuir para que outras IDEs reutilizem esse conjunto de interfa ces e possam oferecer um suporte mais adequado ao programador Haskell 89 Por fim a valid
138. uipe de desenvolvimento 5 3 1 A Tecnologia COM No in cio aplica es eram formadas por apenas uma nica pe a geralmente um arquivo bin rio sendo portanto monol ticas Com o tempo percebeu se que esta abordagem pos suia uma s ria desvantagem novas vers es da aplica o necessitavam de uma re compila o e re implanta o revelando seu car ter est tico e inflex vel uma vez implantada no ambiente de produ o De modo a resolver tal problema foi criado o conceito de programa o em compo nentes Tal inova o permitiu que a evolu o das aplica es se desse de maneira mais produtiva e eficiente al m de viabilizar uma maior customiza o de aplica es o surgimen 18 Descreve como o c digo fonte de uma aplica o compilado depend ncia por depend ncia at que seja atingido o execut vel final 64 to de bibliotecas de componentes para agilizar o desenvolvimento e a distribui o em rede de v rias partes de uma mesma aplica o Neste contexto a tecnologia COM surgiu como uma alternativa para padronizar a programa o em componentes COM uma especifica o que define como construir com ponentes que podem ser substituidos dinamicamente COM portanto especifica regras a serem seguidas por componentes e clientes desses componentes permitindo que eles ope rem de forma conjunta Neste trabalho um componente criado de acordo com a especifica c o COM chamado de componente COM
139. um compilador IDL como o HDirect para converter as interfaces do VSIP e do Babel em c digo fonte atrav s do qual possa ser iniciado o pro cesso de implementa o Uma peculiaridade entretanto que o arquivo que cont m as in terfaces do Babel babelservice idl cont m nao apenas a interface BabelService a ser im plementada pelo programador como tamb m outras interfaces a serem utilizadas pelo pro gramador cuja implementa o j realizada pelo framework do Babel Desse modo foi ne cess rio dividir o arquivo babelservice idl em outros dois arquivos e HaskellService idl cont m a especifica o em IDL da interface BabelService que deve ser implementada de modo a construir o suporte edi o de linguagem Haskell no VS NET e BabelServiceLib idl cont m o conjunto das demais interfaces especificadas no arquivo ba belservice idl IBabelPackage IBabelProject lparseSink IColorSink etc cuja implementa o j est pronta deve ser chamada pelo c digo que implementa a interface BabelService A Figura 37 ilustra o processo completo utilizado para a implementa o em Haskell das interfaces do Babel Ap s a separac o manual do arquivo babelservice idl conforme explicado acima a ferramenta HDirect foi utilizada em cada um dos dois arquivos IDL resul tantes dessa separa o com o objetivo de gerar arquivos contendo c digo Haskell Entre tanto as op es de gera o de c digo passadas ao HDirect foram di
140. ux lio mais intenso de Simon Marlow e lista VisualHaskell A equipe desconhece a utilizac o do Assignment Manager com novas lin guagens estendidas para o Visual Studio NET Problemas de integra o entre a linguagem e o As signment Manager podem ocorrer Elabora o de prot tipos iniciais para valida o Procurar por suporte ex terno newsgroups con sultores da MS etc alo car um membro da equipe exclusivamente para a solu o do problema Novas vers es do VSIP est o sendo lan adas A equipe pode estar usan do uma tecnologia obsole ta a curva de aprendizado pode ser maior Estudo das novas vers es elabora o de exemplos b sicos manuten o de uma base de conhecimen to Reuni o para identificar requisitos j implementa dos pass veis de refacto ring e requisitos n o im plementados que sofrer o altera o da maneira co mo ser o implementados Inexist ncia de um local centralizado de desenvol vimento para a equipe Trabalho realizado apenas nos computadores pesso ais dos membros da equi pe pobreza na visualiza o dos resultados vali da o menos real da solu o em v rios ambientes Contactar o suporte do Cln para libera o de m qui nas para o projeto liberar acesso remoto maquina da sala de alms Intensificar a solicita o da libera o de m quinas ao suporte reuni o para dis cuss o de novas possibili dades
141. vas n o conseguem atingir o mesmo n vel de abstra o proporcionado por linguagens funcionais 76 A utiliza o de linguagens funcionais tamb m oferece alguns dos principais benefi cios encontrados na programa o orientada a objetos paradigma reconhecido como um dos Alguns autores consideram linguagens orientadas a objeto como Java e Cf um subconjunto das linguagens imperativas Outros autores entretanto preferem separar os dois conceitos Neste traba lho ser considerada a primeira abordagem ressaltando se que a segunda n o est tecnicamente incorreta Outros exemplos de linguagens funcionais s o a pioneira Lisp 47 Caml 13 Clean 73 Standard ML SML 72 e Erlang 18 sendo esta ltima a linguagem adotada pela empresa Ericsson em seu processo de desenvolvimento interno 7 Uma API Application Program Interface um conjunto de rotinas e protocolos reutilizados para o desenvolvimento mais produtivo de aplica es APIs s o consideradas verdadeiros blocos de cons tru o de um programa a serem montados pelos programadores 81 17 mais produtivos e utilizados da atualidade 69 O mecanismo de encapsulamento de dados por exemplo oferecido por linguagens funcionais atrav s de tipos abstratos de dados ADT ou abstract data types enquanto o polimorfismo proporcionado por classes de tipo class types Mais informa es sobre esses conceitos espec ficos do paradigma de progra ma o funci
Download Pdf Manuals
Related Search
Related Contents
Série 7300 CV - MIDI Bobinage Dicota Slim Cover Samsung 400CX-2 User Manual Manual de instrucciones Copyright © All rights reserved.
Failed to retrieve file