2004 - Wiki-SL - Software Livre Brasil
Transcrição
2004 - Wiki-SL - Software Livre Brasil
5o Workshop sobre Software Livre - WSL 2004 5o Fórum Internacional Software Livre - FISL 2004 Porto Alegre, RS - Brasil 2, 3, 4 e 5 de junho de 2004 Anais Editores Alexandre Moretto Ribeiro Celso Maciel da Costa Edgar Meneguetti Lisandro Zambenedetti Granville Organização ASL-PSL/RS PUC-RS UCS UFRGS UNISINOS Apoio Sociedade Brasileira de Computação - SBC Capa Bankorp - Estratégia e Tecnologia. Impressão Editora Evangraf Ltda. Tiragem 5.000 exemplares 5o Workshop sobre Software Livre - WSL 2004 5o Fórum Internacional Software Livre - FISL 2004 (5. : 2004 junho: Porto Alegre, RS) Anais / 5o Workshop sobre Software Livre - WSL 2004 / 5o Fórum Internacional Software Livre - FISL 2004; editores Alexandre Moretto Ribeiro, Celso Maciel da Costa, Edgar Meneguetti e Lisandro Zambenedetti Granville. - Porto Alegre. Apoio: Sociedade Brasileira de Computação, 2004. 310p.; 23cm 1. Software 2. Software Livre 3. Programa I. Título II. Ribeiro, Alexandre Moretto. III. Costa, Celso Maciel da. IV. Meneguetti, Edgar. V. Granville, Lisandro Zambenedetti. Endereço: Editora Evangraf Ltda Rua Waldomiro Schapke, 77 - Porto Alegre, RS - Brasil Telefone (51) 3336-2466 5° WSL / 5° FISL 3 Prefácio 5º WSL O Workshop sobre Software Livre (WSL) é um evento que ocorre junto ao Fórum Internacional de Software Livre (FISL) e tem como principal objetivo criar um espaço para apresentação de trabalhos de pesquisa e desenvolvimento envolvendo software livre. Neste contexto, o WSL desempenha um papel fundamental pois permite o encontro de professores, pesquisadores, estudantes e a comunidade de software livre, possibilitando a troca de experiências entre aqueles que contribuem para o efetivo desenvolvimento e amadurecimento desta área. Em sua 5ª edição o número de artigos submetidos ao WSL superou em mais de 50% o evento anterior, o que atesta a importância e o crescimento do evento. Foram recebidos para avaliação 93 artigos, dos quais 43 foram selecionados para apresentação. Os processos de submissão, avaliação e seleção foram realizados de forma eletrônica, com o uso de um sistema de gerência de eventos totalmente desenvolvido com software livre. Cada artigo submetido foi avaliado por pelo menos dois membros do comitê de programa, composto por professores e pesquisadores de diversas universidades. O espectro dos artigos selecionados cobre desde o uso de software livre na educação, passando por experiências acadêmicas com o uso de software livre, chegando até a pesquisa em software livre propriamente dita. Gostaríamos de agradecer aos membros do comitê de programa e do comitê de organização do WSL pela dedicação e pelas muitas horas de trabalho voluntário, e aos membros do comitê de organização do FISL, sempre prontos a atender as nossas necessidades. Estas pessoas são as responsáveis pelo sucesso do evento. Estes anais contêm os 43 artigos selecionados e que serão apresentados nas sessões técnicas do WSL 2004. Acreditamos que estes trabalhos representam um panorama fiel do desenvolvimento da área, e contribui de forma significativa para a disseminação do conhecimento de software livre na sociedade. Porto Alegre, junho de 2004 Celso Maciel da Costa, PUC-RS Coordenador do Comitê de Organização Alexandre Moretto Ribeiro, UCS Coordenador do Comitê de Programa 4 5° WSL / 5° FISL 5° WSL / 5° FISL Prefácio 5º FISL O Projeto O Projeto Software Livre, no âmbito nacional, é uma iniciativa não governamental, que reúne instituições públicas e privadas do Brasil: poder público, universidades, empresas, grupos de usuários, hackers e outras organizações do Terceiro Setor. Nosso principal objetivo, é a promoção do uso e do desenvolvimento de software livre como uma alternativa econômica e tecnológica. Estimulando o uso de software livre, o projeto investe na produção e qualificação do conhecimento local, a partir de um novo paradigma de desenvolvimento sustentado e de uma nova postura, que insere a questão tecnológica no contexto da construção de mundo com inclusão social e igualdade de acesso aos avanços tecnológicos. Estamos articulados em vários estados do país, através dos PSL's Estaduais, que são partes integrantes do PSL-Brasil. Temos também, uma articulação horizontal nacional de gênero chamada de PSL-Mulheres, PSL-Jurídico, PSL-Militares e Policiais. O Projeto Software Livre RS, em conjunto com PSL-BR, é promotor do Fórum Internacional de Software Livre, desde o ano 2000, que acontece anualmente em Porto Alegre. No ano passado realizamos o 4º FISL com a presença de mais de 4.000 pessoas. Uma história de sucesso O Fórum Internacional Software Livre é um evento internacional, organizado pelo Projeto Software Livre RS, membro do Projeto Software Livre Brasil, que propicia discutir os aspectos técnicos, éticos, sociais, econômicos, filosóficos, políticos e educacionais através da reunião da comunidade de informática e uma aproximação da mesma com a sociedade, visando discutir e apresentar aos mais diversos segmentos do mercado alternativas de soluções tecnologicamente modernas e seguras. O Fórum Internacional Software Livre, em sua 5ª edição, será um sucesso. Realizado desde o ano 2000 em Porto Alegre, caracteriza-se pelo aumento progressivo do número de participantes atingindo a marca de 4.265 participantes em 2003, 42,5% a mais que em 2002. Além disso, a página do evento na Internet foi visitada mais de trinta mil vezes, o que demonstra a sua aceitação e popularidade, capazes de impulsionar negócios e definir tendências. Devido a sua grande capacidade de adequação, empresas de todos os portes, governos e universidades estão se beneficiando das vantagens de seu uso, desenvolvimento e comercialização, conhecidos os conceitos do Software Livre. 5 6 5° WSL / 5° FISL No 5º Fórum Internacional Software Livre - 5º FISL - serão apresentadas palestras técnicas, painéis e casos nas áreas corporativa, governos, pesquisas acadêmicas e os últimos avanços da comunidade internacional de Software Livre, bem como, uma análise das tendências. Para o 5º Fórum Internacional Software Livre, a estimativa de público é superior a 4.000 pessoas, que compõem o seguinte perfil: diretores e executivos do ramo da informática, gerentes de tecnologia, desenvolvedores de sistemas, analistas, professores, pesquisadores, estudantes de Tecnologia da Informação, gestores públicos, empresários e empreendedores. Porto Alegre, junho de 2004 Coordenação ASL-PSL/RS 5° WSL / 5° FISL Comitê de Organização Alex Fábio Pellin, UCS Alexandre Moretto Ribeiro, UCS Celso Maciel da Costa, PUC-RS - coordenador Denise Bandeira da Silva, UNISINOS Edgar Meneghetti, UCS Filipi Vianna, PUC-RS Heitor Strogulski, UCS Comitê de Programa Alex Fábio Pellin, UCS Alexandre Moretto Ribeiro, UCS - coordenador Andrea Schwertner Charão, UFSM Antônio Marinho Pilla Barcelos, UNISINOS Benhur Stein, UFSM Celso Maciel da Costa, PUC-RS César De Rose, PUC-RS Cirano Iochpe, UFRGS Cláudio Fernando Resin Geyer, UFRGS Cristina Moreira Nunes, La Salle Daniel Nehme Muller, ULBRA Daniel Notari, UCS Denise Bandeira da Silva, UNISINOS Edgar Meneghetti, UCS Fernando Santos Osório, UNISINOS Francisco Assis Moreira do Nascimento, ULBRA Gerson Geraldo Homrich Cavalheiro, UNISINOS Heitor Strogulski, UCS João Cesar Netto, UFRGS João Ricardo Bittencourt, UNIFRA/RS Julio Bertolin, UPF Leonardo Rodriguez Heredia, UFRGS Lisandro Zambenedetti Granville, UFRGS Luciana Porcher Nedel, UFRGS Luciano Paschoal Gaspary, UNISINOS Luciano Porto Barreto, UFBA Marcelo Pasin, UFSM Roland Teodorowitsch, ULBRA Simone André da Costa, UNISINOS 7 8 5° WSL / 5° FISL Sociedade Brasileira de Computação Diretoria Presidente: Vice-Presidente: Administrativa e Finanças: Eventos e Comissões Especiais: Educação: Publicações: Planejamento e Programas Especiais: Secretarias Regionais: Divulgação e Marketing: Regulamentação da Profissão: Eventos Especiais: Cláudia Maria B. Medeiros, UNICAMP José Carlos Maldonado, ICMC - USP Carla Maria Dal Sasso Freitas, UFRGS Karin Breitmann, PUC-Rio Marcos José Santana, USP - São Carlos Ana Carolina Salgado, UFPE Robert Carlisle Burnett, PUC-PR Edson Norberto Cáceres Sérgio Cavalcante, UFPE Roberto da Silva Bigonha, UFMG Ricardo de Oliveira Anido, UNICAMP Conselho Mandato 2001-2005 Paulo Cesar Masiero, USP/São Carlos Rosa Maria Vicari, UFRGS Sergio de Mello Schneider, UFU Tomasz Kowaltowski, UNICAMP Ricardo Augusto da Luz Reis, UFRGS Mandato 2003 - 2007 Flávio Rech Wagner, UFRGS Luiz Fernando Gomes Soares, PUC-Rio Siang Wun Song, USP Ariadne Carvalho, UNICAMP Taisy Silva Weber, UFRGS Suplentes - Mandato 2003-2005 Daniel Schwabe, PUC-Rio Marcelo Walter, UNISINOS André Carvalho, ICMC - USP Raul Sidnei Wazlawicki, UFSC Secretaria Regional Rio Grande do Sul Secretário: Álvaro F. Moreira , UFRGS 5° WSL / 5° FISL Associação Software Livre.Org A Associação Software Livre.Org foi fundada no dia 11/09/2003, na Av. Ipiranga, 1200 - Porto Alegre, RS, em reunião/assembléia, com representantes de empresário, profissionais liberais, estudantes, servidores públicos e outros presentes, com a finalidade de fundar uma Associação para representá-los, bem como, tratar de seus interesses junto aos órgãos públicos e privados, conforme Ata da Assembléia Geral de nº 001, arquivada e registrada no dia 30/09/2003, no Serviço de Registro de Títulos e Documentos e Registro Civil das Pessoas Jurídicas de Porto Alegre. Conselho Geral Coordenador Geral: Marcelo D’Elia Branco Coordenador Adjunto: Ronaldo Cardozo Lages Coordenador Financeiro: Lourdes Tassinari Suplentes 1º Suplente: Denise Bandeira da Silva 2º Suplente: Deivi Lopes Kuhn 3º Suplente: José Eduardo Bueno de Oliveira Conselho Fiscal Titulares 1º Conselheiro: Raquel Soares Wiesel 2º Conselheiro: Deobrandino Ninrod Borges 3º Conselheiro: Ricardo de Moura Rivaldo Suplentes 1º Suplente: Hilton Dias 2º Suplente: Luciana Porcher Nedel 3º Suplente: Eugenio Carlos Gallicchio Hansen Associação Software Livre.Org Endereço: Rua Cunha Neto, 293 - Nonoai 90.840-270 - Porto Alegre, RS Caixa Postal nº 443 90001-970 - Porto Alegre, RS Escritório Contábil L & C Auditoria e Assessoria Contábil Ltda. Porto Alegre, RS Fones: 55(51) 3225.8766 / 3286.6504 / 9946.9566 Contato: Jane Eunice Fragozo dos Santos ([email protected]) 9 10 5° WSL / 5° FISL 5° WSL / 5° FISL Sumário Sessão Técnica 1: SÓCIO POLÍTICO ECONÔMICO...................................................... .15 Software livre numa perspectiva sociotécnica: um estudo preliminar das controvérsias para a resolução de disputas políticas Adalto Guesser, Tamara Benakouche (UFSC), Ricardo Moraes (Universidade do Porto).................................................................. .17 Software Livre na Universidade: Aprendizado, Economia, Segurança e Desempenho Adilson Bonifácio (Universidade Estadual de Londrina) .......................................... .21 Rybená: a Free Source Project for Digital Inclusion of Persons with Special Needs, Through Mobile Communication Daniel de Oliveira (Instituto Centro de Pesquisa e Desenvolvimento em Tecnologia de Software), José Carlos Waeny (Brasilia Java Users Group), Elcio Queiroz (IBM do Brasil), Edilson Ferneda (Universidade Católica de Brasília), Evandro Costa (UFAL), Hyggo Almeida (UFCG), Thiago Figueiredo (Universidade Católica de Brasília)............................................. 25 Sessão Técnica 2: WEB............................................................................................... .29 Tecnologias de SW livre para análise de mensagens em chats e recomendações online de documentos eletrônicos Rodrigo Kickhofel, Stanley Loh, Daniel Lichtnow, Ramiro Saldaña, Thyago Borges, Tiago Primo, Gabriel Simões, Gustavo Piltcher (Universidade Católica de Pelotas)................................................. 31 Implementando Web Services com Software Livre Claudimir Zavalik, Guilherme Lacerda, José Palazzo Moreira de Oliveira (UFRGS).............................................................. 35 VRaptor - Simple And Quick Web Framework Alexandre Freire da Silva, Paulo Silveira (USP)....................................................... 39 Sessão Técnica 3: SOFTWARE EDUCACIONAL .......................................................... .43 Vale4 - Software Livre para Ensino Simão Toscani (PUCRS e UNILASALLE)................................................................ 45 AdaptWeb:Ambiente de Ensino-Aprendizagem Adaptativo na Web Daniela Musa, Mariusa Warpechowski, José Palazzo Moreira de Oliveira (UFRGS).............................................................. 49 AVALWEB Sistema interativo para gerência de questões Carlos Morais, José Valdeni de Lima, Sérgio Franco (UFRGS)............................... 53 Sessão Técnica 4: SEGURANÇA ................................................................................. .57 Detectando Intrusões na Máquina Virtual User-Mode Linux Marcos Aurelio Laureano, Carlos Maziero, Edgard Jamhour (PUCPR) .................. 59 TuxGuardian: Um firewall de host livre voltado para o usuário final Bruno Silva (UFRGS) ................................................................................................. 63 11 12 5° WSL / 5° FISL Uma Solução de IPS Baseada na Integração SNORT e IPTABLES Rivalino Jr. (Universidade do Vale do Itajaí - São José), Jaime Miranda Jr. (Grupo Stela)................................................................................ 67 Sessão Técnica 5: REDES........................................................................................... .71 Desenvolvimento de um Sistema Livre para Simulação de Tráfego Baseada em Modelos Microscópicos Bruno Silva, Ana Bazzan, Denise de Oliveira, Paulo Roberto Ferreira Jr., Filipe Lopes, Gustavo Andriotti, Thiago M. Papageorgiou (UFRGS) ........................................................................... 73 Um framework baseado em Software Livre para diminuir a probabilidade de falhas e para balanceamento de carga nas conexões à Internet Marcelo Kwecko, Rafael Moita, Jorge Guedes, Ricardo Balbinot (PUCRS) ............ 77 Terminais Inteligentes: alternativa estratégica para otimização de recursos computacionais Reinaldo Moreira (FIC), Hebert Costa (Doctum Tecnologia), Jailton Caldeira Jr. (FIC), Gicele de Souza, Ulisses Leitão (Doctum Tecnologia)... 81 Sessão Técnica 6: GERENCIAMENTO DE REDES & B2B............................................. .85 Um Sistema Simples de Gerenciamento Integrado de Diretórios Online - OpenLDAP, NIS, Samba Diego Kreutz (UFSM)................................................................................................. 87 Uma Ferramenta para a Administração de Serviços de Diretório Distribuído Baseado no OpenLDAP Fernando Cruz, Giovanni Santos, Raissa Medeiros, Lucas Pereira, Márcio Braga, Roberto Diener (Universidade Católica de Brasília) ..................................... 91 Projeto e-market: Implementando comércio eletrônico de empresa para empresa usando software livre Francisco Assis Moreira do Nascimento (ULBRA), Diogo Santinon, Gabriel David, Lucas Parlatto (Faculdades de Taquara)........................................... 95 Sessão Técnica 7: TOLERÂNCIA A FALHAS & EDUCAÇÃO ........................................ .99 Validação experimental de sistemas de arquivos baseados em journaling para o sistema operacional Linux Leonardo Mello (Ministério Público Federal) .......................................................... 101 GroupPac: Um Suporte Livre Para Tolerância a Faltas Alysson Bessani, Eduardo Alchieri, Joni da Silva Fraga (UFSC), Lau Lung (PUCPR), Luciana Souza, Ricardo Padilha (UFSC)............................... 105 International Master Program in Free Software: a higher education experience David Megias, Rafael Macau, Jordi Mas (Universitat Oberta de Catalunya).......... 109 Sessão Técnica 8: DESENVOLVIMENTO I ................................................................. .113 AbsTK: uma biblioteca para desenvolvimento unificado de aplicações em modo texto e gráfico Hisham Muhammad, André Detsch (UNISINOS).................................................... 115 5° WSL / 5° FISL Desenvolvendo Jogos Computadorizados Multiplataforma com Amphibian João Bittencourt, Lúcia Giraffa (PUC-RS) .............................................................. 119 ArchGenXML - Uma ferramenta CASE para Desenvolvimento de Aplicações de Gerenciamento de Conteúdo para o Plone Fabiano Weimar dos Santos (UCS).......................................................................... 123 Sessão Técnica 9: DESENVOLVIMENTO II ................................................................ .127 Considerações sobre controle de grupos em repositórios CVS durante a evolução de uma ferramenta web Daniel Junqueira, Renata Fortes (USP)................................................................... 129 Lições Aprendidas na criação de uma Fábrica de Software Open-Source Alexandre Alvaro, Thiago Santos, João Marcos Vasconcelos, Paulo Andrade, Jones Albuquerque, Silvio Meira (UFPE) ...................................... 133 OConGra: Ferramenta para Geração de Grafos de Controle de Fluxo de Objetos Paulo Nunes (USP) ................................................................................................... 137 Sessão Técnica 10: DESENVOLVIMENTO III.............................................................. .141 Plataforma Mono: Visão geral da estrutura .NET para LINUX Queli Giaretta, Jacques Brancher (URI).................................................................. 143 Mico - University Schedule Planner Alexandre Freire da Silva, Christian Asmussen, Fabio Kon, Alfredo Goldman, Carlos Eduardo Ferreira (USP) ................................................. 147 TerraLib: The Architecture of an Open Source GIS Gilberto Câmara (INPE) .......................................................................................... 151 Sessão Técnica 11: APLICAÇÕES............................................................................. .155 Software Livre na Informatização de Acervos Históricos Elisa Nakagawa (USP) ............................................................................................. 157 WebMaterioteca Sistema de Informação de Cadastro e Recuperação de Materiais Juliano Carvalho (FEEVALE) ................................................................................. 161 Tecnologia Adaptativa e Síntese de Voz: Primeiros Experimentos Felipe Zuffo, Hemerson Pistori (Universidade Católica Dom Bosco) ..................... 165 Sessão Técnica 12: ELÉTRICA .................................................................................. .169 Desenvolvimento de Simulador de Ondas eletromagnéticas usando ferramentas livres João Santanna Filho (Instituto de Estudos Superiores da Amazônia) ..................... 171 FCA: Uma Ferramenta Livre para Análise de Circuitos Elétricos Pablo Grigoletti, Graçaliz Pereira Dimuro, Luciano Barboza, Renata Reiser, José Ubirajara de Nunes (UCPel).................................................... 175 Utilização do GNU/Linux e outros Softwares Livres na Instrumentação Eletrônica e de Aquisição de Dados por computador Daniel Gomes (UFPE) .............................................................................................. 179 13 14 5° WSL / 5° FISL Sessão Técnica 13: BIOLÓGICAS & BD..................................................................... .183 Um Sistema Baseado em Software Livre para Anotação Automática de Genomas e Proteínas Ana Bazzan, Bruno Savegnago Fajardo, Leonardo Vianna do Nascimento, Cassia Trojahn dos Santos, Vitorio Sassi (UFRGS) ................................................ 185 Ferramenta de Telemedicina em Software Livre para Monitoração de Sinais Vitais Heloisa Hertzog, Jorge Guedes, Rafael Rehm, Fernando Thiesen, Francisco Souza, Luciano Azevedo (PUC-RS)......................................................... 189 MOTV: Uma Extensão ao Modelo de Dados Orientado a Objetos com Suporte a Tempo e Versão Eduardo Bastos, Antônio Costa (UCPel) ................................................................. 193 Sessão Técnica 14: ENGENHARIA DE SOFTWARE ................................................... .197 Utilizando o Paradigma de Software Livre para Definir Melhores Práticas em Engenharia de Software Eduardo Filgueiras, Mateus Mota (ULBRA) .......................................................... 199 SAFE - Software Engineering Available for Everyone Renata Fortes, Marco Silva, Andre Freire, Daniel Junqueira (USP) ...................... 203 Levantamento sobre Processo de Software Livre Renata Fortes, Marco Silva (USP), Christian Reis (Async Open Source) .............. 207 Integração dos Ambientes Livres WEKA e ImageJ na Construção de Interfaces Guiadas por Sinais Visuais Hemerson Pistori, Mauro Pereira (Universidade Católica Dom Bosco)................. 211 5o FISL - Mostra de Soluções em Software Livre (resumos)....................................... .215 5o FISL - Palestras (resumos) .................................................................................... .223 5° WSL / 5° FISL Sessão Técnica 1 SÓCIO POLÍTICO ECONÔNICO 15 16 5° WSL / 5° FISL 5° WSL / 5° FISL Software livre numa perspectiva sociotécnica: um estudo preliminar das controvérsias para a resolução de disputas políticas Adalto Herculano Guesser1, Tamara Benakouche1, Ricardo Alexandre Reinaldo de Moraes2 1 NETEC – Núcleo de Estudos em Tecnologia, Educação e Cultura – Programa de PósGraduação em Sociologia Política – Universidade Federal de Santa Catarina (UFSC) Caixa Postal 476 – 89.040-900 – Florianópolis – SC – Brasil 2 Programa de Doutoramento em Engenharia Eletrotécnica e de Computadores – Universidade do Porto (UP) Rua Dr. Roberto Frias – 4200-465 – Porto - Portugal {adalto,tamara}@cfh.ufsc.br, [email protected] Abstract.. This paper describes a sociotechnique analysis about the controversies of the free software, presenting them as political disputes. We relate theoretical contemporaries references in the study of technoscientific controversies and try to identify, from the actor network-theory, the sociotechnique network that if formed, as well as the motivations of the disputes among the actors (human and non-human), the causes that generate the conflicts and their possible resolutions. Resumo. Este artigo realiza uma análise sociotécnica das controvérsias acerca do software livre, apresentando-as como disputas políticas. Relaciona referências teóricas contemporâneas no estudo de controvérsias tecnocientíficas e busca identificar, a partir da teoria do ator-rede [actor network-theory], a rede sociotécnica que se forma, bem como as motivações das disputas entre os atores (humanos e não humanos), as causas geradoras dos conflitos e suas possibilidades de resoluções. 1. Ciência e sociedade: uma relação ambivalente A crescente utilização de projetos tecnocientíficos nas mais diferentes áreas sociais em nossa atualidade tem demonstrado uma forte associação entre técnica, ciência e sociedade. Esta interconexão tem levado muitos teóricos a procurar os elementos constitutivos desta relação. Esta interrogação não é nova; ao contrário, é fundadora do pensamento filosófico acerca da técnica e da ciência. Mas, à medida que os recursos técnicos e científicos vão, cada vez mais, ocupando um lugar inseparável no dia-a-dia das pessoas, uma re-elaboração da sociabilidade passa a ser perceptível, originando novas formas de interação, de cooperação e de conflitos (Callon, 1997). A partir da modernidade e com o avanço da ciência e da tecnologia tais questões foram incorporadas definitivamente na agenda das pesquisas sociais. Hoje, é difícil pensar qualquer realidade social, qualquer instituição presente na sociedade, prescindindo do uso da tecnologia ou ignorando o conhecimento científico. Para estudar o mundo em que vivemos é necessário, inevitavelmente, defrontar-se com este binômio complexo que, de tão íntimos, chegam a fundirem-se num só; ciência e tecnologia podem ser designados pelo termo de “tecnociência” (Latour, 2000), pois suas relações e interconexões não permitem uma dissociação possível. Pensar o desenvolvimento da ciência é pensar concomitantemente o desenvolvimento da técnica em nossas sociedades, e vice e versa. 17 18 5° WSL / 5° FISL As controvérsias em torno de temas tecnocientíficos e suas conseqüências para a sociedade, sejam positivas ou negativas, têm mobilizado um crescente número de estudos. Elas refletem o relacionamento ambivalente entre ciência e outras instituições sociais como os meios de comunicação, o sistema regulatório, o corpo legislativo e a justiça. Elas destacam divergências políticas sobre o papel dos governos, preocupam-se com o aumento da importância da opinião dos peritos para a sociedade e causam desconforto com o instrumental valorativo fundamental para o desenvolvimento científico (Nelkin, 1984). 2. Controvérsias tecnocientíficas: uma perspectiva analítica Desde a antigüidade os homens vêm se deparando com grandes temas polêmicos, envolvendo conflitos entre ciência e sociedade. A ciência sempre enfrentou atitudes públicas ambivalentes. A aceitação da autoridade do parecer científico sempre coexistiu com a desconfiança e o medo, revelados, por exemplo, na resposta às inovações tais como métodos de vacinação ou de pesquisa com uso de animais. A visão romântica do cientista retratado pela literatura e pelo cinema também contribuiu para esta percepção. A personagem do cientista é freqüentemente apresentada como "o mágico moderno” ou um homem maravilhoso capaz de fazer coisas inacreditáveis (Nelkin, 1984, 1995). Recentemente, algumas controvérsias que extrapolaram o campo técnico-científico e dividem opiniões tantos de especialistas quanto de leigos e ativistas são o uso e a produção de alimentos geneticamente modificados, o uso de antenas de microondas para celulares, as recentes descobertas da biogenética e a manipulação de material genético humano, como o caso dos clones e novas formas de fertilização in vitro com novas possibilidades de contracepção. Os estudos das controvérsias desenvolvidos até o presente momento sugerem que as disputas que se travam entre temas tecnocientíficos e suas implicações sociais possuem sua origem numa escala de interesses políticos, econômicos e éticos. Os temas que movem controvérsias estão ligadas a questões que contradizem princípios e interesses pessoais ou coletivos. A controvérsia será maior ou menor, dependendo do tamanho do público que afetar e da influência que este público exerce sobre o restante do corpo social (Bijker, 1997). No entanto, a grande motivadora de controvérsias acerca da ciência e da tecnologia são questões morais e políticas (Nelkin, 1984). Os avanços científicos e tecnológicos produzem uma série de problemas éticos, sociais e políticos, cada qual com seus valores e interesses. Tais conflitos tendem a ser discutidos fora do âmbito restrito da ciência, uma vez que acarretam riscos para as demais estruturas do corpo social (Wynne, 1995). A noção de risco (Giddens, 1995) faz com que ocorra uma maior participação em torno de questões controversas, açambarcando os principais espaços de tomada de decisão. Embora o peso do discurso técnico científico ainda seja muito grande em nossa sociedade, em geral as decisões tomadas acabam sendo fruto de uma negociação envolvendo diferentes setores sociais (Touraine, 1998). As controvérsias sobre ciência e tecnologia estão freqüentemente focalizadas em questões de controle político sobre o desenvolvimento e aplicação da ciência (Nelkin, 1995). Portanto, pode-se dizer que as controvérsias tecnocientíficas são sempre controvérsias políticas e que tendem a ser resolvidas no âmbito das negociações do fórum político. A presença de “grupos sociais relevantes” (Bijker, 1997) é essencial para este processo. Ou seja, aquele conjunto de atores que contribuem para o desenvolvimento de um artefato e agem segundo padrões específicos. Estes grupos sociais são responsáveis pela geração de conflitos e negociações no decorrer do processo. As posições destes grupos são motivadas por suas crenças, seus valores e pela sua capacidade de argumentação. Neste caso a retórica é um recurso poderoso (Callon, 1997). Dependendo do grupo, pode haver uma ou outra interpretação do processo, de seu desenvolvimento e progresso, de sua utilidade e riscos. Estes diferentes tipos de interpretações 5° WSL / 5° FISL são caracterizados pela “flexibilidade interpretativa” (Bijker1997), que deve ser sempre considerada como elemento fundamental da construção social dos artefatos. Outro fator a ser considerado é que uma mesma controvérsia poderá atingir públicos diferentes, com interesses e valores distintos, aumentando desta forma sua abrangência e importância (Latour, 2000). 3. Uma controvérsia tecnocientífica atual: o caso do software livre A construção de softwares livres apresenta-se como um excelente exemplo de uma controvérsia tecnocientífica contemporânea, pois seu processo constitui-se atualmente de um amplo e conflituoso debate que extrapola o domínio dos peritos técnicos, envolvendo todas as esferas da sociedade, do simples consumidor ao produtor, da iniciativa privada aos governos, do diletante ao especialista. Possui ainda a especificidade de ser um processo em curso, ou seja, que se encontra ainda no estágio de desenvolvimento, sem tornar-se ainda uma caixa preta (Latour, 2000). 4. As motivações de disputas sobre o software livre: um caso político As motivações das disputas que animam as controvérsias acerca do software livre giram em torno das questões polêmicas de propriedade intelectual, de direito de produção, comercialização e de posse. “Liberdade” é a palavra chave que designa a maioria das disputas empreendidas pelos seus defensores, “propriedade” é a palavra chave de seus opositores (Castells, 2003). No entanto, estas questões se multiplicam numa variedade de outras questões que derivam desta causa central. As disputas presentes nas controvérsias do software livre refletem os interesses dos atores envolvidos nos conflitos e nas negociações. Parte das controvérsias são motivadas por ideologias políticas que pregam o fim de monopólios hegemônicos, maior autonomia nacional na produção e difusão de inovações tecnológicas, otimização e prestação de contas do serviço público, etc. Outras controvérsias privilegiam argumentos econômicos, como as possíveis economias que se podem realizar pelo não pagamento de royalties, baixo custo de implementação, etc. Existem aqueles que se preocupam em defender a possível superioridade técnica do software livre ou mesmo aquelas controvérsias que privilegiam valores éticos, derivados da lógica meritocrática (Castells, 2003) desenvolvida pelas academias universitárias de todo o mundo, etc. Os atores envolvidos nas disputas são os mais variados. Desde aqueles ligados diretamente ao mundo político formal – funcionários públicos, políticos, assessores, etc – e também partidos políticos e ativistas de movimentos sociais empenhados em fiscalizar atos dos governos e contribuir para uma maior participação cidadã nos processos decisórios. Tais grupos estão articulados em rede de relações, de acordo com as atividades que exercem na sociedade, e de acordo com seus interesses específicos (Touraine, 1998). A mobilização destes atores nem sempre é coordenada por uma autoridade central, podendo os indivíduos agirem independentemente de grupos os associações formais. 5. Considerações finais: a resolução dos conflitos O caráter ambivalente das controvérsias tecnocientíficas sobre o software livre permite perceber a grande movimentação de atores que se agrupam de acordo com interesses específicos. Em função disso, formam-se complexas redes de relações, ligando participantes diversos, que envolvem, basicamente, o que Latour (2000) chama de “tradução” de interesses, ou seja, trata-se de relações em que interesses distintos de diferentes participantes são reciprocamente reforçados num certo contexto de construção e circulação de um produto "tecnocientífico". A tradução diz respeito à capacidade de um ator “decodificar” os anseios do outro autor. Nessa perspectiva, os atores – tanto humanos como não-humanos; individuais ou coletivos – estão permanentemente traduzindo suas ações, linguagens, identidades e desejos tendo em vista as mesmas 19 20 5° WSL / 5° FISL manifestações em outros atores. A tradução não é fixa, ou seja, muda de acordo com as ligações estabelecidas dentro da rede sociotécnica . Os estudos sobre controvérsias nunca podem ser conclusivos, podem apenas apontar os limites provisórios a que chegam tais disputas no momento em que algumas posições passam a ser aceitas como verdadeiras (Latour, 2000). Diante desta perspectiva, percebe-se que as controvérsias que envolvem a temática do software livre somente serão resolvidas quando um determinado grupo vier a dominar a retórica argumentativa em detrimento dos demais, tornando a questão uma caixa-preta. Neste momento, ainda é impossível estabelecer um discurso dominante, capaz de vencer as disputas. Ainda são muitas as questões que se impõem e a solução dos conflitos ainda estão longe de serem alcanças. Os interesses dos diferentes lados, dos defensores e opositores do uso de software livre ainda são bastante contraditórios e irredutíveis. Cabe aos estudos sobre esta temática identificar os atores constituinte desta rede complexa e os discursos empreendidos na defesa ou na recusa deste tipo de tecnologia. Somente desta maneira será possível realizar uma análise sociotécnica, identificando o processo que irá determinar a hegemonia de um ou de outro lado da controvérsia. Nota: Este trabalho é parte integrante da pesquisa intitulada “Software livre e controvérsias tecnocientíficas: uma análise sociotécnica no Brasil e em Portugal”, desenvolvida numa cooperação entre o Programa de Pós-Graduação em Sociologia Política (PPGSP) da Universidade Federal de Santa Catarina, o Centro de Investigação em Sociologia Económica e das Organizações (SOCIUS), do Instituto Superior de Economia e Gestão, da Universidade Técnica de Lisboa e o Programa de Doutoramento em Engenharia Eletrotécnica e de Computadores, da Universidade do Porto. A pesquisa conta com recursos financeiros da CAPES/MEC, a quem agradecemos pelo apoio. 6. Referencias BIJKER, W., (1997) “The social construction of facts and artifacts: or how the sociology of technology might benefit each other”, in BIJKER, W. E.; HUGHES, T. P.; PINCH, T.J. “The social construction of technological systems”, 6 ed., Mit Press, Cambridge (Massachusetts), 1997, p. 17-50. CALLON, M. (1986) “Some elements of a sociology of translation: domestication of the scallops and fishermen of St. Brieuc Bay”, in LAW, J. “Power, action and belief: a new sociology of knowledge?”, (Sociological review monograph n 32), Rontledge & Kejan Paul, London. CASTELLS, M. (2003), “A galáxia da Internet”, tradução de Maria Luiza X. de A. Borges, Jorge Zahar, Rio de Janeiro. GIDDENS, A. (1991) “As conseqüências da modernidade”, 2. Ed., UNESP, São Paulo. LATOUR, B. (2000) “Ciência em ação”, Tradução de Ivone C. Benedetti, UNESP, São Paulo. NELKIN, D. (1984) “Science, technology, and political conflict: analyzing the issue”, in “Controversy”, 2 ed., SAGE, London/Beverly Hills/New Delhi,p. 09-24. ______ . (1995), “Science Controversies: the dynamics of public disputes in te United States”, in JASANOFF, S.; MARKLE, G.; PETERSEN, J.; PINCH, T., “Handbook of science and technology studies”, SAGE, London/Beverly Hills/New Delhi, p. 444-456. TOURAINE, A. (1998), “Critica da modernidade, 5. ed., Vozes, Petrópolis. WYNNE, B. (1995), “Public understanding of science”, in JASANOFF, S.; MARKLE, G.; PETERSEN, J.; PINCH, T., “Handbook of science and technology studies”, SAGE,. Londres, p. 361-388. 5° WSL / 5° FISL Software Livre na Universidade: Aprendizado, Economia, Segurança e Desempenho Davi T. Santos½ , Adilson L. Bonifácio½ ½ Departamento de Computação – Universidade Estadual de Londrina Rodovia Celso Garcia Cid/PR, Km 380, Campus Universitário – 86051-990 Londrina, PR [email protected], [email protected] Abstract. Nowadays, free software is one at the areas of major interest in computer science. This paper presents works performed on the dissemination of free software culture and implantation of free solutions at university. On the initial stage of implantation is a remote boot system, viewing for reduction in costs by use of low-cost equipment. An alliance with private companies is also being formed looking forward a software engineering laboratory using free software. Resumo. Atualmente, o software livre é uma das áreas de maior interesse dentro da computação. Este artigo apresenta trabalhos realizados na disseminação da cultura do software livre e na instalação de soluções livres em laboratórios. Em fase inicial de implantação está um sistema de boot remoto, visando economia com o uso de equipamentos de baixo custo. Também está sendo firmada uma parceria com a iniciativa privada para montar um laboratório de Engenharia de Software utilizando software livre. 1. Introdução Com o aumento da demanda por software, instituiç ões de ensino e até mesmo comerciais, têm adotado o software livre como opção para reduzir custos com software. A adoção de softwares que seguem esta filosofia têm aumentado nos últimos anos, principalmente nas universidades. A dificuldade na aquisição de licenças de software proprietário é um dos principais motivos que levam as instituiç ões a migrarem para o software livre. Outro aspecto importante na utilização de soluções livres é a melhor compreensão proporcionada a quem as utiliza sobre as tecnologias empregadas no software. Estes softwares abrangem várias áreas de aplicação, permitem adaptação e redistribuiç ão, visando melhorias contı́nuas no software. Este artigo apresenta estudos e pesquisas realizados pelo Departamento de Computação (DC) da Universidade Estadual de Londrina (UEL) na área de software livre, apresentando os resultados obtidos em: implantação de sistemas livres comutados com softwares proprietários; adoção do sistema de terminal remoto; instalação de softwares livres nos laboratórios; e uma parceria firmada com a iniciativa privada para instalação de um laboratório de engenharia de software utilizando plataforma livre. 2. Histórico do Software Livre O conceito de software livre surgiu na década de 80, criado por Richard Stallman, um de seus precursores com o projeto GNU1 . Em 1984 Stallman fundou a Free Software Foundation2 , uma ONG que promove a disseminação e o uso do software livre [Reis, 2003]. Essa disseminação deu inı́cio a formação de uma comunidade atuante que, se comunicando principalmente através da Internet, desenvolve uma grande variedade de softwares. O Linux, um dos principais 1 2 GNU’s Not Unix (GNU não é Unix), um sistema operacional totalmente baseado em software livre. Disponivel em: http://www.gnu.org/ 21 22 5° WSL / 5° FISL representantes do software livre, foi lançado em 1991 e licenciado por seu criador, Linus Torvalds, com a licença GPL3 . Com isso, a comunidade conseguiu desenvolver um sistema operacional estável, seguro, escalável e, principalmente, livre. Com todos estes atributos, a fama do linux cresceu rapidamente, fazendo com que surgissem diversas distribuiç ões que agregaram ao sistema operacional vários outros softwares livres. Atualmente, existem milhares de projetos de software livre em diferentes domı́nios de aplicação, como softwares de escritório, servidores e programação. No cenário mundial do software livre, o Brasil tem posição de destaque, sendo um dos grandes expoentes da área. Essa condição foi conquistada através de um processo iniciado com os desenvolvedores independentes e as universidades que, posteriormente, foram apoiados pelos governos estaduais e federal. Devido ao envio de receitas elevadas ao exterior [Lemes, 2003], pela compra de softwares proprietários, o governo brasileiro decidiu investir na indústria nacional de software, visando reduzir custos e estimulando o desenvolvimento interno. 3. Software Livre e a Universidade Diversas universidades brasileiras têm adotado software livre como solução em tecnologia da informação. Uma das universidades que possui grande tradição na utilização de software livre é a Univates, que também oferece cursos de especializaç ão e mestrado nesta área. Outra universidade que adotou soluções em plataforma livre foi a UFPR, estruturando laboratórios com terminais remotos. Na UEL a estrutura computacional é formada por cerca de 2600 computadores interligados em rede, incluindo outros centros como o Hospital das Clı́nicas e o Hospital Universitário. Devido ao gasto elevado com licenças de software proprietário, o DC/UEL decidiu iniciar os projetos de adoção de soluções livres para, futuramente, implantá-las em toda a universidade. Neste contexto foram definidos dois principais focos de trabalho. O primeiro compreendeu a definição de estratégias e ações de divulgação do software livre na região através da Internet, minicursos, palestras e um grupo de usuários. O segundo foco concentrou esforços para disponibilizar uma infra-estrutura computacional de laboratórios através da instalação e configuração do sistema operacional GNU/Linux e diversas ferramentas livres. 3.1. Disseminação do Software Livre na UEL e Região Para que as idéias do software livre tivessem maior abrangência foram definidas algumas estratégias, como a criação de um grupo de usuários, estágios desenvolvidos por alunos do curso de Ciência da Computação, a realização de palestras abertas ao público e a participaç ão de alunos e professores em congressos com temas relacionados ao software livre. A criação do grupo de usuários foi iniciada com os estagiários realizando tarefas de implantação e manutenção da plataforma livre nos laboratórios, sob a supervisão dos professores do DC. Para a divulgação foram criadas uma página na internet e um fórum4 , onde os membros participam enviando suas dúvidas, sugestões e notı́cias. Foram realizadas, também, palestras periódicas sobre os mais diversos tópicos envolvendo software livre, como a instalação e o funcionamento do sistema Linux, ferramentas de escritório e desenvolvimento, segurança em redes, jogos para Linux e muitas outras. Os coordenadores do grupo também ministraram minicursos [Bonifácio, 2003c, Bonifácio, 2003b], palestraram sobre adoção de software livre [Bonifácio, 2003a], assim como participaram em conferências internacionais5 e seminários de desenvolvimento6 . 3 GNU Public License: licença de software livre. Red Foot - Grupo de Usuários de Software Livre, disponı́vel em: http://www.dc.uel.br/redfoot/ IV Fórum Internacional de Software Livre, disponı́vel em: http://www.softwarelivre.org/ 6 II Seminário de Desenvolvimento em Software Livre, disponı́vel em: http://rau-tu.ccuec.unicamp.br/sdsl/index.php 4 5 5° WSL / 5° FISL O objetivo dessas ações foi a formação de uma massa crı́tica na região capaz de utilizar software livre e difundir esta filosofia. Particularmente ao DC, o objetivo foi capacitar os alunos do curso de Ciência da Computação a utilizar e desenvolver soluções em plataforma livre. 3.2. A Infra-estrutura para Software Livre O processo de adoção nos laboratórios do DC ocorreu com a implantação de ambos os sistemas, o proprietário que vinha sendo utilizado e a nova solução em plataforma livre. O objetivo foi manter os laboratórios operando nos dois sistemas, realizando uma migração gradual. Essa estratégia, chamada Dual Boot, permite ao usuário a escolha entre os sistemas Linux e Windows. Dessa forma, os laboratórios continuaram com os habituais softwares proprietários e com as novas aplicações livres no sistema operacional Linux. Dentre as aplicaç ões instaladas pode se destacar as ferramentas de desenvolvimento e as ferramentas de escritório7 , além de softwares que passaram a ser utilizados em disciplinas do curso de Ciência da Computação como PostgreSQL, Apache, PHP e Eclipse. 4. Economizando com Terminais Remotos Em busca de soluções alternativas para oferecer serviços aos usuários da rede do DC foi iniciado um projeto para a implantação de um sistema com terminais remotos. Este sistema, usualmente chamado de Boot Remoto [McQuillan, 2000, Nemkin, 2001], permite uma economia considerável em se tratando de investimento em equipamentos. O funcionamento dessa solução se dá com a utilização de terminais remotos no laboratório obtendo o sistema operacional, dados de usuário e softwares diretamente de um servidor, sem armazenamento ou processamento de dados local. Este processo acontece de forma transparente, de modo que o usuário não percebe a diferença entre usar uma estação de trabalho ou um terminal de servidor remoto. Um fator que tem dificultado a administração dos laboratórios do departamento tem sido o tempo gasto em suas manutenç ões. Esta tarefa será facilitada com o boot remoto, visto que, a manutenção necessária ocorrerá, basicamente, no servidor, sem a necessidade de muitos ajustes individuais nas máquinas. As manutenções individuais se resumirão a pequenos reparos, considerando que os terminais remotos deverão possuir poucos componentes fı́sicos. Para que o projeto se torne realidade será necessário uma reestruturaç ão da infra-estrutura de rede do departamento. O tráfego gerado pelo sistema na rede será maior do que aquele gerado pelos atuais serviços, como as autenticaç ões e transferências menos intensa de dados de usuário. No esquema de terminais remotos todo processamento requisitado pelo usuário será efetuado no servidor, fazendo com que o tráfego na rede se torne constante e intenso. Outro aspecto importante a ser observado para a implantação do boot remoto está relacionado com o desempenho do servidor. Devido ao grande volume de processamento requisitado, o servidor deverá ter alto poder de processamento, exigindo um maior investimento em seu hardware, se comparado com os servidores de estações de trabalho. Entretanto, o investimento no servidor será inferior ao investimento que seria necessário para colocar a mesma quantidade de máquinas e serviços em funcionamento. O fator segurança é outro aspecto pertinente na implantação do sistema de terminais remotos. Com a utilização do boot remoto será suficiente manter as estratégias de segurança numa única máquina, já que o servidor realizará todo processamento. As dificuldades encontradas na administração de uma rede, como evitar ataques, perdas de dados e instalações despadronizadas, serão evitadas com o uso deste sistema. Não obstante a todos os aspectos abordados, o maior ganho com a utilização de terminais remotos está na reutilização de equipamentos ultrapassados, considerados sucatas tecnológicas. Na universidade, a renovação do parque de máquinas é um processo lento e o sucateamento dos equipamentos é inevitável. Dessa forma, pode-se observar duas importantes vantagens no uso de terminais remotos. A primeira está na utilização de uma plataforma livre que suporta o boot remoto, economizando com licenças e compra de 7 OpenOffice, StarOfice, GCC e FreePascal. 23 24 5° WSL / 5° FISL software proprietário. A segunda, e talvez mais importante, está no reaproveitamento das máquinas, atuando no caráter social e financeiro da universidade, evitando grandes investimentos na compra de equipamentos. 5. O Software Livre aproximando Universidade e Empresa Recentemente, outro projeto foi iniciado envolvendo a implantação de um laboratório de engenharia de software, visando a melhoria de produtividade e qualidade no desenvolvimento de sistemas [Raymond, 2001]. Para a implantação deste laboratório está sendo firmada uma parceria com a iniciativa privada que irá prover a infra-estrutura. O projeto deverá englobar as mais diversas áreas de conhecimento dentro da engenharia de software com os trabalhos de pesquisa, conclusão de curso e estágios desenvolvidos pelos alunos. A aproximação da academia com a iniciativa privada irá proporcionar a formação de profissionais para suprir as necessidades da região. Alguns trabalhos que já estão em andamento abordam assuntos, como processos de desenvolvimento de software, arquitetura de software, framework, modelagem e especificação de sistemas, entre outros. Além da proposta de interação das empresas com a academia, um dos principais objetivos do projeto é manter o laboratório em plataforma livre. Com o progresso dos trabalhos, sejam eles em desenvolvimento, pesquisa ou suporte, e com a participação da universidade, o projeto funcionará como um meio disseminador da filosofia de software livre e impulsionará a utilização de soluções livres pelas empresas. 6. Resultados Um dos resultados obtidos com os trabalhos é o aumento substancial no número de usuários de software livre, especialmente o Linux, na região de Londrina. O principal indicador do crescimento é a expansão do grupo de usuários que utiliza como meio de comunicação o fórum. Com relação a adoção do software livre no DC percebeu-se um ganho significativo no tempo de manutenção dos laboratórios. Os problemas, até então existentes com a plataforma proprietária, foram reduzidos drasticamente. Entre eles pode se destacar os vı́rus, a degradação do sistema e de softwares. Nos cursos ministrados utilizando softwares livres, tanto alunos quanto professores perceberam um maior rendimento no aprendizado e uma melhor compreensão das tecnologias estudadas. Além disso, observou-se uma redução nos gastos com licenças de software, mantendo a universidade na legalidade. Com a compra de um servidor de alto desempenho está sendo dado continuidade ao projeto de implantação de um laboratório com terminais remotos. O DC/UEL possui um número elevado de máquinas com baixo poder computacional que serão reaproveitadas como terminais do servidor adquirido. Em relação à parceria, firmada com a iniciativa privada, espera-se conseguir uma melhor interação da academia com as empresas. Esta parceria deve colaborar com a indústria de software da região, aumentando a qualidade do desenvolvimento de softwares livres e aproximando os alunos do mercado de trabalho. Referências Bonifácio, A. L. (2003a). Adoção Linux e Soluções Livres na Universidade. Palestra: Semana do Software Livre na UNILINS. Bonifácio, A. L. (2003b). Curso do S. O. Linux. Techinpar, Ponta Grossa. Bonifácio, Adilson Luiz e Kaster, D. d. S. (2003c). Introdução ao Linux. Secomp, Londrina. Lemes, L. (2003). Relato: O Software Livre e o Desenvolvimento do Brasil. Disponı́vel em: http://www.inf.unisinos.br/instituto/Brasilia.pdf. McQuillan, J. (2000). The Linux Terminal Server Project: Thin clients and Linux. Nemkin, Robert e Vasudevan, A. (2001). Diskless nodes how-to document for linux. Disponı́vel em: http://www.linuxdocs.org/HOWTOs/Diskless-HOWTO.html. Raymond, E. S. (2001). The Cathedral and the Bazaar. O’Reilly, Sebastapol, CA, 2 edition. Reis, C. (2003). Software Livre. Disponı́vel em: http://www.async.com.br/ kiko/MinicursoUSP2003/. 5° WSL / 5° FISL Rybená: a Free Source Project for Digital Inclusion of Persons with Special Needs, Through Mobile Communication !"" #$%&'"()" !" #$%" $ & $'"()*'"( + $,$ ) !"*. /0/1!"* )( 23!452503!6233! 2)33! 32)3!0523!7423 )* .0888350$6()05 $(/!09!-:9!;9-00)$60<=0 >6<=>0&9?0$6)))0@@ 0))000 @0A$B.0>.)+!88! 0$60C )A8+&-6A$B.0 D) 0 5 0 0 0 ))003!)!3500)$6 ! 88E ,6! 88E )! 88&E *! 88& * ! 0 *.A$B. )4 ! 88&! 00 )) 0 ) !) 0)03)) 3000)4* 0)!0))00 ) 0 34 > 0 0 )4 ) 35 0 05 ) 0 * "5 .F < A! 88! 00 ))@A)!,.=/,. !;;9!;;:!88!00)) 05>000!0)4)35 0$'"()*'"(!00)0''0 0))0)00))G 0G) H003 A$B.0050005300 )0 0) 0 0 0 0 )0 3 ))0 A$B.I$6A 25 26 5° WSL / 5° FISL 0B53J)4)350*'"(05))350 B0)05 !0"5$%"$!0 0 "5 $ " $ 0 * "5 . "*.A )0500) !)5030400)40 ))0B53J)4')! 03 ! 0$G53$A 0))0)4)50 000)00)))0) 0D))00 )&'+,-./ .3)0000 D0,@0)5)3!00 05)+00) * 0 ! 0 ) 0 ' ) ' 5 0! 00 ) 3 30 !3.00))3! 0!000))!00 A$B.!0353-8?0$6 5 .00))0)43500*'"( 03!0*'"(00 )05 5)!0))!0 >000!G3)00" $!0"$ 0"*.A 00)4)033 30 0034F ! ) )5)0! ! )',! ! G A$B.35 3! ! ) 0 B53J 0 )0 !)5A$B.)0>!88& 0 )4H 34 G @)0 3 0 0 3 5 E 0 ,30)33 )0&E!5!G)033 3+ 0H3330 000)00)4G0000 0))35!)) 0G00)0)0 )00KKG0D00 A$B.)G)3!0530 0,,K!88!<!88!880A$B. *06!)A$B. 0H)00)53 0,! 035 )0 3* 005353GG!0 0000)0 5° WSL / 5° FISL ! 0 0 0 )4H )! 0 0 ) LA$B. ")B53J4.0 ) 5!030)3540 0 ) ' )! B53J! 00 A$B. 5 ) >! 88& " 5! 0 ) 5060)5! 0 A$B. 0 3 ) 6 >00))05 )! D 6 0 ) A$B.3.0!0) 050300)0 0)033)0)0 !50G43 A$B.3) 0))0)03 3)0500D!5! G0! D)00 03M )N0000)G3050 5))D000G !00350000 0 0 ) 0 )35 D) 0 )) 0 0 0 3 0 )00030)) A$B.0))35)0!0 +;$600<33&90)0I0 398!88850I0 )0 )) )0))0 0 0) 00G #01"$ 0)4)5))350 B0) 05<G0G0 0)4F 1 6! ! ' B ! ' / $3! .1 .! B6$!B3BC 27 28 5° WSL / 5° FISL +2 $!.88 @ 5B0 0)FLL3LL))L8+@3)) !. B!!(!88.<@$.))0A !"#!K;:!))8@89!) ! / $ ! ;;9 ,.=/,.F . 3 @ 0!"#!K;;!))+@98!) ! / $ ! ;;: * G @ 5!"#!K88!))-@O!) !/$!88 0535 3@))0!$ % & ! A)!$6!))-O@-8 !KM.,3$GN!(<G!4,".F"5 $%L$$L$,$!388&) >!!88&M ))1 #N! $ #'(#)* +,#-.//0! >!!88&M"3)6<3)) A$IA$B.M %1!K!-!388& 0)FLL3L3L-LD0 *!,(!88&2 #3 " ! !$6 A! !88<F.<3/))" ! $ &,.//. ,6!*A!882& ,2 42&%3 "/ !4%!$6 ,@=!BE 0))!!88563)".F>PB5 G!!;;+# 3+ 6% !<,Q !BA!88&)00!D) )0 A3! ! $ % % 7%%.//0!4%!$6 6!K E! !88& <3,F.<3 000$6AIA$B.! $ % & !B'!$6!))+@+&8 K! /!88 4 0)FLL@8-3L)GL 3L35L@34)LD0 <!R!888 $0)FLLLL&;:0 <! R! 88 &9 * 0 ,5SA! ;;:& * 0 >B. A/ 0)FLLLL&;:0 5° WSL / 5° FISL Sessão Técnica 2 WEB 29 30 5° WSL / 5° FISL 5° WSL / 5° FISL Tecnologias de SW livre para análise de mensagens em chats e recomendações online de documentos eletrônicos Rodrigo Branco Kickhöfel1, Stanley Loh1,2, Daniel Lichtnow1, Ramiro Saldaña1, Thyago Borges1, Tiago Primo1, Gabriel Simões1, Gustavo Piltcher1 1 2 Universidade Católica de Pelotas (UCPEL) – Escola de Informática Rua Felix da Cunha, 412 – Pelotas – RS – Brasil Universidade Luterana do Brasil (ULBRA) – Faculdade de Informática R. Miguel Tostes, 101, Canoas, RS – Brasil {rodrigok,lichtnow,rsaldana,thyago,gustavopil}@ucpel.tche.br, [email protected], [email protected], [email protected] Abstract: This paper describes a recommender system to support collaboration using open source technologies. The system consists on a WebChat that using text mining techniques identifies the subject of the messages and selects items from a digital library to recommend to the chat participants. The system allows knowledge exchange among members of virtual communities. The results and the advantages of using open source technologies for that purpose are presented and discussed. Resumo. Este artigo apresenta um sistema de recomendação para apoio à colaboração utilizando tecnologias de software livre. O sistema consiste em um chat Web que, a partir de técnicas de text mining, identifica o assunto das mensagens e gera recomendações a partir de uma base de dados própria (uma Biblioteca Digital, contendo documentos eletrônicos, links par páginas web e referências bibliográficas). O sistema permite a troca de conhecimento entre os membros de comunidades virtuais. São apresentados os resultados obtidos e as vantagens da utilização da tecnologia de software livre para estes propósitos. 1. Introdução A geração de novos conhecimentos é desencadeada em parte pela troca de conhecimento entre as pessoas, por exemplo, através de chats na Web. Então com o objetivo de valorizar a troca do conhecimento, surgiram os sistemas de recomendação (Recommender Systems). Um sistema de recomendação tem por finalidade auxiliar no processo social de indicar ou receber indicação, seja esta indicação referente a livros, artigos, discos, restaurantes, ou informações (RESNICK & VARIAN, 1997). Este artigo discute o uso de tecnologias de software livre para auxiliar ou suportar um sistema de recomendação para apoio à colaboração em comunidades virtuais. 2. O Sistema SisRecCol O SisRecCol (Sistema de Recomendação para apoio a Colaboração) consiste em um chat Web onde os usuários trocam mensagens e recebem recomendações conforme o assunto identificado nas mensagens. Essa identificação é realizada através de técnicas de text mining apoiadas em uma ontologia desenvolvida para o sistema. As recomendações são de documentos eletrônicos e links para sites Web (armazenados numa Biblioteca Digital privada do sistema), de autoridades nos assuntos (identificados pelo próprio sistema) e de discussões anteriores sobre o mesmo tema. O objetivo é apoiar a troca de conhecimento entre os usuários. Dessa forma a ferramenta pode ser utilizada em 31 32 5° WSL / 5° FISL grupos que pertençam a um domínio específico, como turmas de ensino a distância, auxiliando inclusive na avaliação dos alunos, permitindo analisar a interação de cada um e seus assuntos de interesse. O sistema pode ser adaptado para ser utilizado em diferentes áreas, bastando incluir uma nova ontologia, referente ao novo domínio. O protótipo do sistema está disponível em http://gpsi.ucpel.tche.br/sisrec. 2.1 Funcionamento O sistema utiliza uma ontologia de domínio para classificar os documentos na biblioteca digital, para traçar o perfil dos usuários e para identificar temas nas mensagens (através de técnicas de text mining). Uma ontologia do domínio (domain ontology) é uma descrição de “coisas” que existem ou podem existir em um domínio (SOWA, 2002) e descreve o vocabulário relacionado ao domínio em questão (GUARINO, 1998). No SisRecCol a ontologia é apresentada como uma hierarquia de conceitos e cada conceito contém uma lista de termos associada. No momento, há somente uma ontologia no Sistema, pertinente à área da Ciência da Computação e contendo termos em Inglês e Português, o que permite discussões em ambas as línguas. O módulo de text mining é responsável pela identificação dos assuntos das mensagens. Essa identificação não ocorre apenas individualmente nas mensagens, mas sim analisando um contexto (se várias mensagens tratam do mesmo assunto e com um grau de importância acima de um determinado parâmetro, a probabilidade desse assunto ser o tópico da discussão é alta, sendo esse então identificado como assunto principal desse conjunto de mensagens). Biblioteca Digital é uma coleção de recursos digitais, organizados sob uma certa lógica, acessíveis para recuperação sobre uma rede de computadores (KOCHTANEK; HEIN e KASSIM, 2001). A Biblioteca Digital do SisRecCol contém documentos eletrônicos e links para páginas Web, no momento. Este conteúdo é previamente indexado com ferramentas de software que realizam o processo de forma automática com base nos mesmos métodos usados para identificar os assuntos das mensagens do chat. O processo de indexação determina o grau de relacionamento dos documentos, (artigo ou site) aos conceitos existentes na ontologia. A inclusão dos documentos na Biblioteca Digital pode ser feita pelos usuários, num processo independente da sessão do chat. O material disponibilizado pelos usuários passa pela revisão do administrador do sistema, que verifica a qualidade do material e também avalia a indexação produzida pelo sistema. Uma vez aprovado, o documento passa a estar disponível para utilização, podendo ser recomendado durante as sessões do chat, ou também ser consultado utilizando palavras-chaves ou a estrutura hierárquica da ontologia. A base de perfis do sistema se assemelha aos chamados Mapas do Conhecimento ou Páginas Amarelas (Yellow Pages), que servem para indicar que pessoas possuem determinados conhecimentos. Ela contém dados de identificação dos usuários e suas áreas de conhecimento, representadas pelos conceitos presentes na ontologia. A definição do perfil é dinâmica, ou seja, conforme o usuário utiliza o sistema, ele é pontuado em determinados assuntos (conceitos) conforme suas ações. A base de perfis é utilizada na definição dos itens que serão recomendados para cada usuário, e também é útil na avaliação dos membros do grupo. A partir do assunto identificado nas mensagens do chat, o módulo de recomendação proativamente sugere uma lista de conteúdos relevantes, vindos da Biblioteca Digital (documentos eletrônicos, sites Web ou referências bibliográficas) aos usuários, de acordo com o perfil de cada um (content-based recommendation) ou avaliando as ações das autoridades no sistema (collaborative filtering). Essa recomendação é apresentada em uma área separada, não interferindo no decorrer da discussão, e permitindo ao usuário acessar o conteúdo (por exemplo, ler um documento, abrir um site Web ou ver dados das autoridades no conceito identificado). 5° WSL / 5° FISL 2.2 Tecnologias Utilizadas O custo de aquisição de software e a facilidade para encontrar documentação detalhada, principalmente do sistema operacional do servidor e o banco de dados é um importante fator a favor do software livre. Optou-se por utilizar a plataforma Linux para o desenvolvimento do sistema. Como ele consiste em um chat, que precisa ser acessado via Web, a escolha mais natural é o Apache como servidor Web, por estar diretamente associado ao Linux, além de ser um dos mais difundidos e de fácil utilização. O SisRecCol utiliza um banco de dados para armazenar a ontologia, as informações da Biblioteca Digital, os perfis de usuário bem como todas as informações referentes as sessões do chat. Em função da adoção do Linux, duas opções principais de banco de dados livre atenderiam as necessidades do projeto, MySQL ou PostgreSQL. Apesar do intenso uso do banco de dados, não se trata de uma aplicação crítica. A velocidade é um fator importante e por isso se optou pelo MySQL, que, apesar de ter menos recursos que o PostgreSQL, é um banco bem ágil, muito difundido e atendeu perfeitamente as necessidades do sistema. Utilizando tabelas do tipo MyISAM, o desempenho do MySQL favoreceu o suporte a um grande número de conexões simultâneas, fundamental para a proposta do sistema. Como este tipo de tabela não implementa integridade referencial ou controle de transações, as respostas do banco ficaram extremamente rápidas. Só para se ter uma idéia, a cada mensagem enviada por um participante do chat, o sistema precisa: 1) comparar esta mensagem com todos os conceitos presentes na ontologia (lembrando que cada conceito é representado por uma lista de palavras e pesos associados), para identificar o assunto; 2) avaliar se o assunto é válido, analisando o contexto (um grupo de mensagens mais recentes); 3) recuperar da Biblioteca Digital, os itens classificados a este assunto identificado; 4) avaliar, para cada usuário, se os itens serão recomendados ou não, já que o usuário pode já ter “baixado” o documento ou “acessado” o site 5) então apresentar para cada usuário individualmente a lista de recomendações 6) além disto, o usuário pode simultaneamente abrir ou “baixar” os documentos recomendados 7) e ainda cada usuário recebe pontos por participar do chat, por enviar mensagens, por baixar documentos, etc. A linguagem de programação utilizada foi o PHP. Ela se mostrou a melhor opção no momento, pois em termos gerais (e se tratando de aplicações Web) tem um bom desempenho comparado a outras linguagens como Java, e é de fácil utilização tendo uma boa documentação. Outra vantagem é que funciona em várias plataformas, tornado o sistema mais portável. Como o sistema trabalha com processamento de textos, o desempenho é uma questão importante ainda mais se tratando de um chat em tempo real. Nos testes realizados com até 10 usuários o PHP apresentou um bom resultado de resposta, gerenciando bem as diversas conexões e não prejudicando a discussão no chat. Além disso, PHP possui suporte nativo ao banco MySQL, como já citado, o SGBD utilizado pelo SisRecCol. O ambiente de chat necessita de algumas validações, além disso, precisa enviar e mostrar vários dados sem que o conteúdo desapareça da tela do usuário no momento da submissão. Sendo assim, o SisRecCol utiliza uma série de scripts em JavaScript para validar, enviar e receber dados do servidor. Essa tecnologia foi amplamente utilizada já que a maioria dos browsers atuais possui suporte nativo, eximindo o usuário da tarefa de instalar qualquer API ou virtual machine para utilizar o sistema. 3. Experimentos Foram realizados experimentos de discussões com grupos utilizando o sistema proposto. As pessoas do grupo foram convidadas a entrar no chat num horário determinado e realizar uma reunião 33 34 5° WSL / 5° FISL online real. Em uma das sessões, que durou aproximadamente 1 hora, o sistema registrou 374 mensagens (uma média de 6,23 mensagens por minuto, e quase uma mensagem a cada 10 segundos). Uma avaliação formal do método de identificação de assuntos registrou uma precisão de 85,7% (ou seja, porcentagem de assuntos corretamente identificados) e uma abrangência de 85,7% (ou seja, porcentagem de assuntos que deveriam ter sido identificados), o que leva a crer que, além de rápido, o sistema consegue um bom nível de acerto na análise das mensagens. Até então, nos testes realizados com até 10 usuarios, o ambiente de chat, assim como o módulo de recomendação mostraram-se totalmente estáveis, apresentando em alguns momentos delays, referentes a instabilidades na rota de rede utilizada pelo cliente. Uma biblioteca digital com um número maior de documentos ou um volume de usuários maior pode causar alguma perda de desempenho, visto que a recomendação é complexa (as mensagens são analisadas em função da ontologia, e, além disso, é preciso analisar o perfil dos usuários, os itens que serão recomendados para cada usuário e então gerar a recomendação nas telas desses usuários). Notaram-se também algumas incompatibilidades com browsers mais antigos, os quais não suportam algumas implementações DOM (Document Object Model) utilizadas nas atuais versões de JavaScript. 4. Conclusão As tecnologias de software livre se mostraram totalmente adequadas ao propósito do sistema desenvolvido e por isso a escolha foi correta. Os resultados obtidos foram muito bons tanto em rapidez quanto em consistência e confiabilidade. Uma possível alteração para o futuro seria a utilização da linguagem Java para criação de novas funcionalidades, devido a sua grande quantidade de recursos, como por exemplo, multithreading para o gerenciamento das várias conexões. A troca do banco de dados talvez seja necessária conforme aumente a quantidade de informações armazenadas. Vale ressaltar que as tecnologias baseadas em software livre utilizadas no SisRecCol adaptam-se completamente também a outros ambientes operacionais, alguns até mesmo proprietários, sem significativa perda de performance ou necessidade de instalação de pacotes ou frameworks adicionais, favorecendo assim, a disponibilidade do sistema pare uma gama muito grande de usuários, espalhados por todos os nodos da rede. Agradecimentos O presente trabalho foi realizado com o apoio do CNPq, uma entidade do Governo Brasileiro voltada ao desenvolvimento científico e tecnológico. Referências Bibliográficas GUARINO, Nicola (1998) Formal Ontology and Information Systems. In: International Conference on Formal Ontologies in Information Systems - FOIS'98, Trento, Itália, Junho de 1998. p.3-15 KOCHTANEK T.R.; HEIN K.K., KASSIM A. R. C. (2001) “A digital library resource Web site: Project DL”, Online Information Review, v.25, n.1. RESNICK, P. & VARIAN, H. (1997) Recommender systems. Communications of the ACM, v.40, n.3, Março, p.56-58. SOWA, J. F. (2002) “Building, sharing, and merging ontologies”, AAAI Press / MIT press, p.3-41. 5° WSL / 5° FISL Implementando Web Services com Software Livre Claudimir Zavalik1, Guilherme Lacerda1, José Palazzo M.de Oliveira1 1 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brasil [email protected], guilherme@apoenasofwarelivre,com.br, [email protected] Abstract. This paper illustrates the main concepts about Web Services technology, it's architecture, and the description of the implementation process from a Web Service under Free Software platform, using NuSOAP. Resumo. Este trabalho apresenta os principais conceitos da tecnologia Web Services, sua arquitetura e a descrição do processo de implementação de um Web Service sob plataforma de Software Livre, usando NuSOAP. 1. Introdução Existe atualmente uma grande variedade de sistemas de informações, distribuídos em diferentes plataformas e usando várias tecnologias distintas em sua implementação. Várias são as tecnologias desenvolvidas para a integração de sistemas de informação, como comunicação por sockets, RMI e RPC. Com a popularização da linguagem XML, tornou-se possível trocar informações de uma forma mais clara entre os aplicativos. XML (eXtensible Markup Language) descreve uma classe de objetos chamados "documentos XML" e parcialmente descreve o comportamento de programas de computador que processam estes documentos (XML 2003). Como alternativa aos métodos existentes para integração de sistemas, surgiu o conceito de Web Services. Um Web Service é um sistema de software, identificado através de uma URI, na qual interfaces públicas e contratos são definidos e descritos em XML. Estas definições podem ser descobertas por outros sistemas de software. Estes sistemas podem então interagir com o Web Service em uma maneira prescrita pela sua definição, usando mensagens baseadas em XML e transportadas por protolocos da Internet (WSA 2003). Entre as principais vantagens do uso de Web Services, podem ser citadas: - Interface abstrata: os Web Services fornecem uma interface abstrata para acesso aos métodos disponibilizados, ocultando detalhes de implementação do usuário do serviço; - Semântica acompanha dados: Ao invés de trafegarem somente os dados, a comunicação entre o servidor e o cliente carrega consigo metadados; - Portabilidade: Por se tratar de um padrão aberto, baseado em XML, garante-se a portabilidade das mensagens mesmo sob diferentes plataformas de operação; - Segurança: Opcionalmente, as informações trafegadas podem ser criptografadas; - Utilização de recursos: Os Web Services são sistemas não invasivos, pois não consomem recursos de comunicação enquanto em estado de espera. O funcionamento de um Web Service presume que devam existir, no mínimo, dois agentes trocando informações (um solicitante do serviço e um provedor do serviço). 35 36 5° WSL / 5° FISL Existem também agentes de descobrimento de Web Services disponíveis na Web, que funcionam como verdadeiros catálogos de serviços disponíveis. A Figura 1 apresenta a arquitetura básica de Web Services, onde é percebida a interação que ocorre entre os agentes citados. Figura 1. Arquitetura básica de Web Services A integração dos Web Services se dá sob vários protocolos abertos, em diferentes níveis de abstração. Os protocolos utilizados para realizar esta comunicação entre diferentes agentes estão dispostos em cinco camadas, conforme apresentado na Figura 2. Figura 2. Protocolos de comunicação de Web Services 2. Bibliotecas para Web Services em Software Livre Existem algumas bibliotecas que permitem o desenvolvimento de Web Services que são distribuídas na modalidade Software Livre. Entre as bibliotecas existentes, destacam-se a biblioteca PEAR (http://pear.php.net) e a NuSOAP (http://dietrixh.ganx4.com/nusoap/index.php), ambas desenvolvidas em linguagem PHP. NuSOAP é um grupo de classes PHP que permite aos desenvolvedores criar e consumir serviços Web usando SOAP. NuSOAP não requer nenhuma extensão especial de PHP, o que a torna utilizável por todos desenvolvedores PHP (NuSOAP 2003). Devido a sua facilidade de uso, os exemplos apresentados foram criados utilizando a biblioteca NuSOAP. Para usar a biblioteca NuSOAP, é necessário incorporar ao código da aplicação a vinculação do módulo nusoap.php. 5° WSL / 5° FISL 3. Web Services Antes de descrever os Web Services, é necessário que se tenha uma clara definição de quais serviços poderão ser disponibilizados, bem como as restrições de segurança que devem ser aplicadas. Outro fator que deve ser modelado ao se desenvolver um Web Service é o tratamento de exceções. Havendo qualquer erro, o Web Service deve disparar uma falha SOAP, identificando a causa do problema. Usando NuSOAP, a criação do Web Service é muito simples. Para tanto, é necessário somente incluir a biblioteca e escrever o método de implantação. A Figura 3 apresenta o exemplo de um simples Web Service, que recebe um valor e retorna o seu fatorial. <?php require_once('nusoap.php'); $s = new soap_server; $s->register('fatorial'); function fatorial($numero){ // Valida o parâmetro recebido if($numero < 1 ){ return new soap_fault('Client','','O número deve ser maior que zero.'); } // Calcula o fatorial $fatorial = 1; for ($i = (int) $numero; $i>0; $i--) $fatorial = $fatorial * $i; return $fatorial; } $s->service($HTTP_RAW_POST_DATA); exit(); ?> Figura 3. Web Service desenvolvido com PHP e NuSOAP 3.1 Acessando um Web Service com SOAP Sabendo qual o Web Service que se deseja acessar e sua interface de comunicação, é possível então acionar o serviço. É importante destacar que a implementação do acesso não precisa ser desenvolvido necessariamente na mesma tecnologia que o Web Service. A Figura 4 apresenta um simples cliente de Web Service, desenvolvido em PHP, usando o pacote NuSOAP para acessar o Web Service fatorial. <?php require_once('nusoap.php'); $parametros = array('numero'=>5); $clientesoap = new soapclient('http://192.168.1.1/test/fatorial.php'); $resultado = $clientesoap->call('fatorial',$parametros); if ($clientesoap->fault) echo "Ocorreu um erro no Web Service - " . $clientesoap->faultstring; else echo "O fatorial do número é = ". $resultado; ?> Figura 4. Cliente SOAP do Web Service fatorial No exemplo apresentado, é fornecido o parâmetro "5" para o Web Service fatorial. Alguns provedores de Web Services fornecem uma API específica para uso dos serviços, com a finalidade de descrever os métodos e assinaturas, bem como fazer validações prévias no cliente SOAP. 37 38 5° WSL / 5° FISL 4. Usando WSDL como linguagem de definição WSDL (Web Services Description Language) fornece um modelo e um formato XML para descrição de serviços Web. WSDL possibilita uma separação da descrição das funcionalidades abstratas oferecidas por um serviço dos detalhes concretos da descrição de um serviço, como "onde" e "como" as funcionalidades são oferecidas (WSDL 2003). Com o uso de WSDL, o cliente não precisa saber qual a linguagem de programação ou plataforma de execução em que o provedor de serviços está baseado. A Figura 5 apresenta as mensagens trocadas em WSDL para o exemplo fatorial. <message name="recebeNumero"> <part name="numero" type="xsd:integer"/> </message> <message name="enviaResposta"> <part name="fatorial" type="xsd:float"/> </message> <portType name="fatorial_PortType"> <operation name="fatorial"> <input message="tns:recebeNumero"/> <output message="tns:enviaResposta"/> </operation> </portType> Figura 5. Especificação de mensagens em WSDL 5. Considerações Finais O uso de Web Services permite um significativo ganho de produtividade, à medida que permite que sistemas legados possam se integrar ao ambiente Web, disponibilizando informações antes restritas ao seu ambiente de operação. São inúmeras as possibilidades que se vislumbram com a utilização de Web Services. Eles podem ser utilizados, também, como mecanismos de integração de sistemas que não estão necessariamente disponibilizados para usuários na Web. A adoção da linguagem WSDL como padrão de descrição de serviços que envolvam troca de informações entre sistemas Web garante a transparência necessária para que os clientes do serviço implementem a interface, conhecendo detalhes significativos para acesso ao serviço e omitindo detalhes do funcionamento da aplicação provedora do serviço. O desenvolvimento de Web Services usando ferramentas de Software Livre concede ao desenvolvedor uma liberdade ampla, à medida que este dispõe de todo o código-fonte da bilbioteca utilizada e pode incluir modificações nestas, customizando seus resultados ou analisando transações solicitadas e realizadas em tempo de execução. Referências NuSOAP - SOAP Toolkit for PHP (2003), http://sourceforge.net.projects/nusoap/, Outubro 2003. Web Services Architecture 20021114/, Outubro 2003. (2003), http://www.w3.org/TR/2002/WD-ws-arch- Web Service Description Language (2003), http://www.w3.org/TR/2003/WD-wsdl1220030303, Outubro 2003. XML - eXtensible Markup Language 1.0 (2003), http://www.w3.org/TR/2000/RECxml-20001006, Outubro 2003. 5° WSL / 5° FISL VRaptor - Simple And Quick Web Framework Alexandre Freire , Paulo Silveira 1 Department of Computer Science Institute of Mathematics and Statistics University of São Paulo {alex,paulo}@arca.ime.usp.br vraptor.org Abstract. This paper describes the development of VRaptor, a framework that allows developers to create dynamic web applications quick and easily. Developed by Arca, VRaptor is free software, available under the Apache 2.0 license. We will present motivations behind Arca’s undertaking to create yet another web development framework for the J2EE specification. We will then describe the framework’s architecture and it’s usage patterns. We will justify our architectural decisions based on our main objectives: keeping the framework simple, clean, and easy to learn and use. We will briefly mention other free software tools and frameworks that interact with VRaptor in some way . 1. Introduction Web Application development has been the focus of many businesses and institutions since only after a couple of year’s of the advent of the Internet. Today, many web application frameworks [7] are available to developers. Choices exist in various languages and “flavors”. There is an overwhelming number of free software projects providing us with tools for web development. When faced with the task of adopting an alternative to develop a system, an architect may have to consider solutions ranging from containers and application servers to programming languages and frameworks. Some of the most known open source and free software projects available today are PHP, Struts, WebWorks, Zope, Tomcat, Jetty, and JBoss. Also, an even number of commercial offerings for frameworks and application servers exists as well. This miscellanea of options makes it hard to decide which project to use when it comes the time to develop a system. “Arca” [1], a group of free software developers fostered by the Department of Computer Science at IME/USP, has focused on web development since it’s foundation. Having worked on many end user applications like Panda, Texugo, and Mico, Arca’s developers have experimented with most of the choices in tools available today . During the creation of these applications we strived to learn more about all of these technologies. Together, the members of our group have developed for all of the most known frameworks nowadays. These frameworks all have very nice features and patterns, however, many of them lean more to a declarative approach on programing instead of an imperative one. This choice means using lots of configuration files (mostly XML metadata descriptors), which in our opinion ends up cluttering the developers perception of what is really happening in his application, increasing the learning curve for new comers to the framework, and making applications harder to debug. 39 40 5° WSL / 5° FISL Throughout our existence, our group has studied and discussed most of these frameworks. We have had many ideas on how to make things quicker and easier for the developer. “eXtreme Programming’ [4]’, our favorite methodology, influenced us when idealizing what a framework had to do, since much of our development focus on XP practices. Faced with many choices we decided to create our own framework, one that had to be agile, allowing it’s developers to test their code easily and refactor it mercilessly, and at the same time had to be simple to understand and easy to learn. Earlier this year we had the opportunity to develop a portal for SINAPE [2], the National Symposium on Probability and Statistics organized by the Brazilian Association for Statistics (ABE). We then decided to use the funds from this contract to sponsor the development of this new framework. We also decided to use some XP practices when developing the framework, adding features as the need for them arose in the portal. And so VRaptor was born. Our main objectives with this framework are to keep the code simple and clean, so as to encourage outside contribution, but most importantly, to keep it simple to learn and use, so that new developers can choose to use it over all the other available choices. Particularly, we want to provide good documentation in portuguese, to help the brazilian free software community. 2. Development VRaptor was created to solve our development needs for the SINAPE portal. We developed the portal using the eXtreme programming methodology, therefore VRaptor had to facilitate the practices we were following. We needed a framework that would grow organically from our “real-world” needs. We knew that our end-user portal would have to accommodate changes easily, we knew that we would do the simplest thing we possibly could to solve a particular problem and we knew that our code had to be kept consistent, simple and clear. We took all these premises in consideration when choosing how the developer would use VRaptor, favoring a more imperative approach over the declarative one that most frameworks today seem to prefer. We decided to keep configuration down to one XML file, where the user coupled the components. Components themselves would be completely decoupled, so as to facilitate testing. New features were added added to the framework when the need for them arose, keeping the design clean and easy to understand and use. We made a conscious effort to postpone development of features we did not really need, therefore VRaptor does not suffer from a flaw common to many frameworks, known as “feature overflow”. We believe this makes the learning process much easier for a new developer. Refactoring code created for VRaptor should also be easy, so we chose to use symbols from objects created by the programmer, like method and class names, in the configuration XML file. These symbols can easily be altered by an automated tool. Avoiding much use of meta-data we empower the developer to welcome change, for he does not have to modify lot’s of configuration files by hand when deciding to add new parameters to a method, or to change a method name. 3. Objectives We strived to achieve many objectives in VRaptor, we shall briefly discuss these goals and why we chose them. 5° WSL / 5° FISL 3.1. Simplicity and ease of use VRaptor does not offer many choises to the developer, we made this decision to avoid confusing new users of the framework with configuration options. The XML configuration file is clean and consistent, there are not many ways to do the same thing, only one “right” way. This reduces a common confusion, of how things work “under the covers”, that is present in the minds of many developers that are trying to learn how to use a unfamiliar framework. VRaptor has few main abstractions, Interceptors, Domains, Chains, and Views. With a couple of these objects a developer can deliver complex logic in dynamic web applications. By use of introspection in the framework’s engine we can allow these components to be loosely coupled, this permits easy component reuse and “on-the-fly” configuration. Because components are decoupled from web-specific objects as well, tests are a whole lot easier to write. 3.2. Avoiding “too much magic” One of our main objectives is to avoid the known anti-pattern, present in many frameworks available today, called “too much magic” [5]. This anti-pattern states that when a developer cannot understand how the framework interacts with his code he is awed by what “seems to be the magic” that makes his application work. This makes it really hard for the developer when a new bug is found in his application, most times he feels that things were working before and he doesn’t know what changed that made the application behave differently. In VRaptor it is clear when and where the framework will instantiate objects declared in the application, the developer knows how the framework will call the methods defined in in his objects and how their lifecycle is controlled, he also knows how to get instances of objects he needs. 3.3. A national alternative Another of our objectives was to create a national alternative to all the international web application frameworks available. We are currently working on documentation in portuguese and have recently made our first public release. The framework has been used to develop a couple of “real-world” applications, including GUJ’s [3] new website. 4. Patterns and Paradigms Applications developed with VRaptor follow a couple of architectural patterns and paradigms, making the developer’s life easier [9]. 4.1. Model View Controller Model View Controller [6] breaks the application into three: the user input and output, the modeling of our business logic and the application controller. These are well defined parts in a VRaptor application. VRaptor has built-in support for well know, free software, web view layers: Velocity[?], Freemarker [?] and JSP. the model classes are written by the developer, and the controller is VRaptor itself. 41 42 5° WSL / 5° FISL 4.2. Interceptors and Aspects All application have some aspects that do not really belong to the core business logic. Commonly known aspects are logging, security and persistency. Programming code related to these aspects should not be mixed with code that deals with business logic. In VRaptor, the developer can choose to put this type of code in interceptors. Interceptors are also responsible for the components dependecy configuration, as we will see in the next section. VRaptor provides some default interceptors, but the developer will also need to write his own interceptors to make his application more robust. 4.3. Inversion Of Control Inversion of Control addresses a component’s configuration and dependency resolution: there is no need for a component to know exactly with which other components it will be dealing with[8] . This configuration will be handled by the framework, VRaptor acts as a component container, managing their lifecycle. Newer web and Inversion of Control frameworks (like Apache Avalon, PicoContainer, or SpringFramework) support inversion of control through dependency injection, writting some descriptors (mostly hard to read and long XML files) to tell the container how it shall create and manage components. This is the declarative approach, as mentioned before. VRaptor uses an imperative approach: dependency configuration must me done in plain java code. This code goes inside the interceptors, which are responsible for preparing components that will be used by the business logic code. Note that the configuration is still decoupled from the components themselves, if we need to change a component that is being used by our business logic, we simply change the interceptor. There is no need to touch the business logic at all. 5. Conclusion We believe VRaptor is a real contender when considering a good framework for web application development. We are committed to providing a real alternative for the Brazilian market and welcome any contributions from the community. References [1] Arca project - http://www.arca.ime.usp.br [2] http://www.abe.org/sinape [3] Grupo de Usuarios Java - http://www.guj.com.br [4] [Beck 1999] - Extreme Programming Explained. [5] Too-much magic anti-pattern - http://lsd.student.utwente.nl/jicarilla/TooMuchMagic [6] [Model 1988] - ”The Model-View- Controller (MVC) ParadigmUser Interfaces” OOPSLA’88 Tutorial, ACM. [7] Ralph E. Johnson. Components, Frameworks, Patterns. In ACM SIGSOFT Symposium on Software Reusability, 1997. [8] C. Szyperski, Component Software: Beyond Object-Oriented Programming, AddisonWesley, 1998. [9] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. 5° WSL / 5° FISL Sessão Técnica 3 SOFTWARE EDUCACIONAL 43 44 5° WSL / 5° FISL 5° WSL / 5° FISL Vale4 - Software Livre para Ensino Simão Sirineo Toscani Faculdade de Informática – PUCRS Departamento de Computação – UNILASALLE [email protected] Resumo. A linguagem Vale4 (V4) é distribuída como software livre e destina-se ao ensino de programação concorrente. Ela permite praticar com os principais mecanismos de sincronização e comunicação e pode ser instalada em praticamente qualquer microcomputador. O artigo faz um contra-ponto entre V4 e as linguagens Java e C, que também são usadas no ensino de programação concorrente. Abstract. The Vale4 language (V4) is a free software conceived to be a concurrent programming educational tool. V4 allows the practice with the main synchronizing and communicating tools, can be ported to practically any microcomputer and offers good debugging facilities. This paper contrasts the V4 language with Java and C, which are also used to teach concurrent programming. 1. Introdução Para ser considerada uma boa ferramenta de ensino, uma linguagem de programação concorrente deve permitir a prática com os principais mecanismos de sincronização e comunicação existentes, os quais vão desde operações básicas do tipo lock/unlock e block/wakeup, para sincronização em baixo nível, até monitores e tasks, para sincronização em alto nível. Além disso, é importante que a linguagem ofereça boas facilidades de depuração. A linguagem V4 satisfaz estes requisitos. As outras linguagens disponíveis no mercado não oferecem este leque de ferramentas e, além disso, não podem ser consideradas didáticas. A linguagem SR [Andrews 91], muito usada no ensino de concorrência, não implementa o conceito de monitor. A linguagem Ada [Taft 97], embora muito poderosa, se limita aos conceitos de task e rendezvous. Na linguagem Java fica “tudo escondido” e, segundo Brinch Hansen, parece que seus projetistas ignoraram os resultados das pesquisas em programação concorrente [Brinch Hansen 99]. As extensões da linguagem C tampouco são satisfatórias; a biblioteca Pthreads [Costa 02], por exemplo, deixa muito a desejar quanto ao nível e à segurança das construções oferecidas. Este artigo faz uma breve apresentação das diferentes versões da linguagem V4, ilustrando com exemplos as versões que implementam monitores e tasks. A clareza dos programas V4 é realçada através de um pequeno contra-ponto com as linguagens Java e C. A sintaxe da linguagem V4 é Pascal-like. O ambiente de programação foi implementado por um compilador que gera código para uma máquina virtual e por um simulador dessa máquina. A máquina virtual implementa por hardware (virtual) um conjunto apropriado de instruções e um kernel de sistema operacional. Todo o sistema foi programado em SWI-Prolog [Wielemaker 97] e, como tal, pode ser portado facilmente para diversas plataformas. 2. As versões da linguagem A linguagem V4 oferece uma grande variedade de mecanismos. Embora o programador possa utilizar simultaneamente (em um mesmo programa) todos os recursos da linguagem, é conveniente vê-la, do ponto de vista didático, como se oferecesse 6 versões de uso. Versão básica Um programa V4 básico é um conjunto de variáveis globais, um conjunto de procedimentos globais e um conjunto de processos. Não há mecanismo de sincronização. Como tal, os problemas de sincronização e comunicação têm que ser resolvidos manualmente. Esta versão é útil para 45 46 5° WSL / 5° FISL alertar o aluno sobre o problema das condições de corrida (race conditions) e ensinar os algoritmos clássicos de exclusão mútua. Versão básica++ É a versão anterior aumentada com as operações lock/unlock e block/wakeup(p), mais o tipo queue e suas operações insert(p,Q), empty(Q) e first(Q), onde p é um inteiro e Q é uma variável tipo queue. Os mecanismos desta versão permitem caracterizar muito bem as sincronizações elementares, voltadas para compartilhamento de recursos e para comunicação. class mesa { private int[] garfos = new int[5]; mesa() // constructor { for (int i=0; i<=4; i++) garfos[i]=0; } synchronized public boolean pega_garfos(int filosofo) { int lado; if (filosofo==4) lado=0; else lado=filosofo+1; if (garfos[filosofo]==0 && garfos[lado]==0) { garfos[filosofo]=1; garfos[lado]=1; return true; } else return false; } synchronized public void libera_garfos(int filosofo) { int lado; if (filosofo==4) lado=0; else lado=filosofo+1; garfos[filosofo]=0; garfos[lado]=0; } } class filosofo extends Thread { private int numero; mesa m; filosofo (int numero, mesa m) { this.numero=numero; this.m=m; this.setName("filosofo num " + numero);; } public void run() { while (true) { if (m.pega_garfos(this.numero)) { System.out.println("filosofo num "+ numero + "comendo"); try{ Thread.sleep(Math.round(Math.random()*4000)); } catch (InterruptedException e){} m.libera_garfos(this.numero); System.out.println("filosofo num "+ numero + "pensando"); try{ Thread.sleep(Math.round(Math.random()*4000)); } catch (InterruptedException e){} } else { System.out.println("filosofo num "+ numero + "faminto"); try{ Thread.sleep(Math.round(Math.random()*4000)); } catch (InterruptedException e){} } } } } class fil { public static void main(String[] args) { mesa m = new mesa(); Thread f0 = new filosofo(0,m); Thread f1 = new filosofo(1,m); Thread f2 = new filosofo(2,m); Thread f3 = new filosofo(3,m); Thread f4 = new filosofo(4,m); f0.start(); f1.start();f2.start();f3.start();f4.start(); } } Figura 1 - Jantar dos filósofos em Java Versão com semáforos É a versão básica aumentada com semáforos. Nessa versão, um programa é formado por um conjunto de variáveis globais, incluindo variáveis semáforas, um conjunto de procedimentos e um conjunto de processos. Os processos se sincronizam e formam filas através das operações P e V. 5° WSL / 5° FISL 47 Versão com operações send e receive É a versão básica desprovida de variáveis globais e de procedimentos globais, mas aumentada com um mecanismo para troca de mensagens. A comunicação pode ser síncrona ou assíncrona. Nesta versão deixa de haver memória compartilhada entre os processos e cada processo passa a ter uma caixa postal para comunicação com os demais. Versão com monitores Nesta versão, um programa é formado por procedimentos globais, um conjunto de monitores e um conjunto de processos. Os monitores são implementados usando a sintaxe e a semântica definida por Hoare [Hoare 74]. Versão multithread com tasks e rendezvous Nesta versão, um programa é formado por um conjunto de tasks similares às tasks da linguagem Ada [Taft 97]. A comunicação é realizada por rendezvous em procedimentos do tipo entry. Toda task tem uma thread, denominada main, que pode criar novas threads através de comandos fork. Qualquer thread pode “aceitar” (através de comandos accept) chamadas de entries, originando esperas condicionais de múltiplas threads. O comando accept de V4 permite programar comunicação síncrona não determinística, dispensando o uso de comandos tipo select. 3. Programas exemplos Esta seção apresenta dois programas que permitem comparar V4 com as linguagens Java e C. O jantar dos filósofos O jantar dos filósofos é um problema clássico que ilustra situações de deadlock e de postergação indefinida em sistemas concorrentes [Dijkstra 68]. As figuras 1 e 2 apresentam, respectivamente, programas Java e V4 equivalentes, que simulam o comportamento de 5 filósofos. Ambos os programas utilizam o conceito de monitor. Conforme referido, a linguagem V4 implementa o conceito de monitor (sintaxe e semântica) tal como ele foi formalizado por Hoare [Hoare 74]. Por seu lado, Java deixa muito a desejar a esse respeito [Brinch Hansen 99]. V4program monitor mesa; garfos: array[5] of integer init 0; procedure pega_garfos(i:integer) returns boolean; j: integer; % j é o vizinho da direita { if i=5 then j:=1 else j:=i+1; if garfos[i]=0 & garfos[j]=0 then { garfos[i]:=1; garfos[j]:=1; pega_garfos:=true } else pega_garfos:=false }; procedure libera_garfos(i:integer); j: integer; { if i=5 then j:=1 else j:=i+1; garfos[i]:= 0; garfos[j]:= 0 } end monitor; process filosofo(i:= 1 to 5); k: integer; do forever if mesa.pega_garfos(i) then { nl; write('filosofo '); write(i); write(' k:=random(10); hold(k); % espera de 0 a 9 mesa.libera_garfos(i); nl; write('filosofo '); write(i); write(' k:=random(10); hold(k) } else { nl; write('filosofo '); write(i); write(' k:=random(10); hold(k) } endprogram Figura 2 - Jantar dos filósofos em V4 comendo'); unidades de tempo pensando'); faminto'); 48 5° WSL / 5° FISL Busca do maior elemento de um vetor O programa da fig. 3 permite comparar V4 com C estendido com threads. O programa é similar ao apresentado em [Costa 02], o qual utiliza a biblioteca Pthreads. Por falta de espaço, o programa C não é transcrito aqui. O que ele faz é buscar o maior elemento de um vetor criando threads recursivamente. Cada thread recebe um vetor de tamanho n' e cria duas threads filhas, as quais recebem um vetor de tamanho n'/2. Isto é feito até que um tamanho limite seja atingido. A fig. 3 mostra uma task V4 que utiliza o mesmo método. Esta task apresenta os mesmos conceitos importantes apresentados no programa C (uso da técnica de divisão e conquista e criação dinâmica de threads), porém de forma mais didática. task xmax is vet: array[10] of integer; Imax: integer init 0; % Índice do maior elemento do vetor procedure getmax(i:integer; j:integer) returns integer; dif, m, m1, id1, id2, max1, max2: integer; { dif:=j-i; if dif=0 then getmax:=i else if dif=1 then if vet[i]>vet[j] then getmax:=i else getmax:=j else { m:=(i+j)/2; m1:=m+1; id1:=fork; if id1=myself then {max1:=getmax(i,m); quit}; id2:=fork; if id2=myself then {max2:=getmax(m1,j);quit}; join(id1); join(id2); if vet[max1] > vet[max2] then getmax:=max1 else getmax:=max2 } }; thread main is { vet[1]:=1; vet[2]:=10; vet[3]:=3; vet[4]:=100; vet[5]:=2; Imax:=getmax(1,5); nl; write('Vmax = '); write(vet[Imax]) } end xmax Figura 3 - Busca do maior elemento de um vetor em V4 4. Conclusão Este artigo apresentou uma ferramenta gratuita que parece ser adequada para o ensino de programação concorrente. O kit de instalação do ambiente V4 pode ser obtido através da internet [Vale4 04]. Na comparação com Java e C, os exemplos evidenciam que a linguagem V4 origina programas mais simples e claros (portanto, mais didáticos). E simplicidade e clareza são itens muito importantes, já que os conceitos e mecanismos da programação concorrente são complexos e difíceis por si só. Certamente, a dificuldade de aprendizado aumenta quando os conceitos ficam entremeados com detalhes de programação irrelevantes. Referências Andrews, G. Concurrent Programming: Principles and Practice. Benjamin Cummings, 1991. Brinch Hansen, P. Java’s Insecure Parallelism. ACM SIGPLAN Notices 34, 4 (April), 1999. Costa, C.; Stringhini, D.; Cavalheiro, G. Programação Concorrente: Threads, MPI e PVM. In: Anais II Escola Regional de Alto Desempenho, São Leopoldo, 2002. Dijkstra, E.W. Cooperating sequential processes. In Programming Languages. Ac. Press, 1968. Hoare, C.A.R. Monitors: an operating system structuring concept. Comm. ACM 17, 10, 1974. Taft, S.T., Duff, R.A. Ada 95 Reference Manual: language and standard libraries. SpringerVerlag, 1997. (Lecture Notes in Computer Science, Vol. 1246) Vale4. Kit de instalação. Março de 2004. Disponível em www.inf.pucrs.br/~stoscani/V4. Wielemaker, J. SWI-Prolog 2.7 Reference Manual. University of Amsterdam, Dept. of Social Science Informatics. Amsterdam, The Netherlands, 1997. 5° WSL / 5° FISL AdaptWeb : Ambiente de Ensino-Aprendizagem Adaptativo na Web José Palazzo M. de Oliveira1, Mariusa Warpechowski1, Daniela Leal Musa1, Maria Angélica C. Brunetto2, Mario Lemes Proença Jr.2, Marcelo S. Pimenta1, Cora H. F. Pinto Ribeiro1, José Valdeni de Lima1, Veronice de Freitas1,2, Viviane P. Marçal1,2, Isabela Gasparini1,2, Marília Abrahão Amaral1,2 1 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil 2 Departamento de Computação – Universidade Estadual de Londrina (UEL), Campus Universitário, Londrina, PR, Brasil {palazzo, mariusa, musa}@inf.ufrgs.br Abstract. This paper presents the AdaptWeb® - Adaptive Web Learning Environment - project. This project is intended to support the adaptive authorship and presentation for Web-based courses. The used technology is based in PHP and MySQL and the project is offered as free software licensed under the GNU General Public License Version 2. The source code is available at SourceForge. This open software may be used for new modules development and research purposes. The AdaptWeb® environment was validated by a real case study in a mathematics course at the State University of Londrina. Now it is being released for academic use at UFRGS. Resumo. Este artigo apresenta o ambiente AdaptWeb® - Ambiente de EnsinoAprendizagem Adaptativo na Web, voltado para a autoria e apresentação adaptativa de disciplinas integrantes de cursos na Web. A tecnologia usada para o desenvolvimento faz uso de software livre empregando PHP e MySQL e está regido pela GNU General Public License Version 2. O seu código-fonte está disponível no SourceForge e pode ser utilizado para desenvolvimento de novos módulos e pesquisa. O AdaptWeb® foi validado através de estudo de caso real, envolvendo uma disciplina da UEL (Universidade Estadual de Londrina) e atualmente está sendo liberado para uso acadêmico na UFRGS. 1. Introdução A utilização de aplicações hipermídia com diversas finalidades, tem-se difundido cada vez mais. Entretanto, considerando que estas aplicações podem ser utilizadas por usuários com características diferentes, em diversas condições de ambiente, torna-se extremamente importante que exista a possibilidade de personalizar estas aplicações, levando em conta as especialidades dos ambientes e principalmente do usuário. A utilização da hipermídia adaptativa vem sendo proposta como meio de satisfazer usuários com diferentes níveis de conhecimento, objetivos, background, experiências no hiperespaço e preferências [Brusilovski 1998]. O ambiente AdaptWeb® foi motivado pela necessidade de oferecer uma ferramenta, desenvolvida totalmente em software livre, que facilite a tarefa de organização e 49 50 5° WSL / 5° FISL estruturação do material instrucional para a Web por parte dos professores [Freitas 2003]. No ensino superior é fato que muitas disciplinas são ofertadas para diferentes cursos, porém com diferentes enfoques. O estudo de caso desenvolvido no AdaptWeb® aborda a disciplina de Métodos Numéricos. Esta disciplina foi escolhida pois está presente em diversos cursos superiores da área de exatas, sendo os interesses dos alunos diferentes de acordo com a natureza do curso. Este artigo encontra-se assim organizado: na seção 2 é descrito o ambiente AdaptWeb®, a seção 3 apresenta a tecnologia utilizada para implementação do software e sua forma de distribuição, na seção 4 é descrito o estudo de caso realizado e as conclusões são apresentadas na seção 5. 2 – Ambiente AdaptWeb® O Ambiente AdaptWeb® é voltado para a autoria e apresentação adaptativa [Freitas 03] de disciplinas integrantes de cursos EAD na Web. O objetivo deste ambiente é permitir a adequação de táticas e formas de apresentação de conteúdos para alunos de diferentes cursos e com estilos distintos de aprendizagem, possibilitando diversas formas de apresentação de cada conteúdo, de forma adequada a cada curso e às preferências individuais dos alunos participantes. A figura 1 apresenta a arquitetura do ambiente. Figura 1 - Arquitetura do Ambiente 1. Autoria: este módulo consiste na estruturação e organização do conteúdo instrucional a ser disponibilizado para o usuário, conforme mostra a Figura 2. O conteúdo de uma disciplina é organizado através de tópicos, de forma hierárquica, em uma única estrutura adaptada para diferentes cursos. Desse modo, para cada tópico, deve ser informado o nome do tópico, a descrição resumida, os pré-requisitos, para qual curso este tópico será apresentado, bem como o arquivo HTML correspondente. 2. Armazenamento: este módulo é responsável pelo armazenamento da estrutura de dados resultante da fase de autoria, em arquivos no formato XML (Extensible Markup Language) [W3C 04]. É criado um arquivo XML para a estrutura de conceitos e um arquivo XML para a estrutura do material relacionado a cada conceito. 3. Adaptação do Conteúdo: neste módulo o conteúdo é adaptado de acordo com as características (curso, preferência pelo modo de navegação e o histórico da navegação) do modelo do aluno. 5° WSL / 5° FISL Figura 2 – Ferramenta de Autoria 4. Interface Adaptativa: responsável pela adaptação da navegação (tutorial ou livre) e da apresentação do ambiente. 3 - Tecnologias utilizadas e distribuição do AdaptWeb® Procurando tornar os resultados da pesquisa um elemento de difusão destas novas metodologias, o ambiente foi desenvolvido totalmente em software livre e com tecnologia voltada para a Web. O AdaptWeb® pode ser instalado em qualquer servidor Web e foi implementado em PHP, banco de dados MySQL e linguagem XML. Estas tecnologias foram escolhidas por serem de fácil aprendizado e também as mais usadas no desenvolvimento de ferramentas para EAD. Além disso, por serem software livre permitem a divulgação dos códigos-fonte, o que facilita o desenvolvimento e aprimoramento do ambiente, permitindo que módulos já desenvolvidos sejam incorporados diretamente em novas ferramentas. A versão 0.9 beta do AdaptWeb® está instalada em Servidor Web Apache em ambiente GNU/Linux e pode ser acessada em: http://adaptweb.homelinux.org/adaptweb/. Além disso, o AdaptWeb® está disponibilizado para download no SourceFourge [SourceFourge 2004], o qual já alcançou o segundo lugar em números de acessos e downloads, na categoria “Computer Aided Instruction”. A disponibilização do código fonte do AdaptWeb® no SourceForge permite que a comunidade usufrua do ambiente AdaptWeb® e colabore no desenvolvimento de novos módulos e funcionalidades. O código fonte em PHP, o script para criação do banco de dados em MySQL, bem como uma disciplina exemplo, estão disponíveis no servidor CVS (Concurrent Versions System) do SourceFourge. O CVS é um software criado para gerenciar as alterações realizadas por múltiplos desenvolvedores em um mesmo conjunto de arquivos-fonte e garante a integridade do código-fonte, ao mesmo tempo em que permite desenvolvedores trabalhando de forma independente sobre o mesmo código. O ambiente AdaptWeb® faz parte de um projeto em parceria com o Uruguai e Argentina para desenvolvimento de adaptabilidade multicultural. Além disso, no próximo semestre o AdaptWeb® será utilizado por professores do Instituto de Informática - UFRGS, os quais participaram de uma apresentação do software e mostraram-se bastante entusiasmados. 51 52 5° WSL / 5° FISL 4 – Estudo de Caso Visando validar a funcionalidade do Ambiente AdaptWeb® foi realizado um estudo de caso com um tópico da Disciplina de Computação Algébrica e Numérica do curso de Bacharelado em Ciência da Computação da UEL [Brunetto 03]. Os cursos de Matemática e Engenharia possuem a disciplina de Cálculo Numérico, cujo conteúdo apresenta grande intersecção com o conteúdo da disciplina de Computação Algébrica e Numérica. O tópico selecionado foi “Resolução de Sistemas Lineares”. Uma avaliação do ambiente foi realizada com 31 participantes, alunos do quarto ano do curso de Ciência da Computação da Universidade Estadual de Londrina. A metodologia utilizada foi o questionário de satisfação e a análise de log do usuário gerado no AdaptWeb®. Após a quantificação dos dados dos alunos, foram obtidos os seguintes resultados: a) 90,32% acharam que a utilização do ambiente é fácil; b) 100% consideram que o processo de aprendizagem dos comandos não é demorado; c) 61,29% consideram que as informações existentes na tela atendem as suas necessidades; d) 93,55% acham fácil de lembrar como realizar ações no ambiente; e) 90,32% acreditam que sabem navegar pelo ambiente. Os resultados obtidos demonstraram que o ambiente foi planejado de forma a prover facilidade de utilização e navegação, pois a aprendizagem do aluno é proporcional a sua capacidade de navegar e utilizar o ambiente. 5 – Conclusões A utilização de tecnologias baseadas em software livre é uma ótima escolha para o desenvolvimento de sistemas pois permite a liberação do sistema e do seu código-fonte, motivando a participação da comunidade em melhorias no desenvolvimento e crescimento do software. O AdaptWeb® proporciona uma maior facilidade ao professor na tarefa de organização e estruturação do material instrucional para a Web. Como resultado, o conteúdo do curso é adaptado e apresentado aos alunos de acordo com o seu perfil (nível de conhecimento, preferência de navegação, etc). Referências Brusilovski, Peter. Methods and Techniques of Adaptive Hypermedia. Adaptive Hypertext and Hypermedia, Kluwer Academic Publishers, pp.1-43, 1998. Extensible Markup Language-XML. Disponível em: http://www.w3.org/TR/REC-xml/. Freitas, Veronice. Autoria Adaptativa de Hipermídia Educacional. Dissertação de Mestrado. 2003. Instituto de Informática, UFRGS, Porto Alegre. Freitas, Veronice et al. AdaptWeb: an Adaptive Web-based Courseware. In: ICTE 2002: 20-23 Nov. 2002, Badajoz, Espanha. SourceFourge. Disponível em https://sourceforge.net/projects/adaptweb/, maio 2004. Brunetto, Maria Angélica C. et al. AdaptWeb: um Ambiente para Ensino-aprendizagem Adaptativo na Web. Educar em Revista, ISSN 0104-4060, n. 107, p. 175-198, Curitiba, 2003. 5° WSL / 5° FISL AVALWEB – Sistema interativo para gerência de questões e aplicação de avaliação na Web Carlos Morais 1, 2 , Jose Valdeni de Lima 1, 2 , Sérgio Roberto Kieling Franco 2. 1 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil 2 Programa de Pós-Graduação de Informática na Educação (PPGIE/UFRGS), {cmorais, valdeni}@inf.ufrgs.br, [email protected] Abstract. This paper introduces open source software for studying assessment process for distance learning students. Many assessment tools available in the market were analyzed for. Based on this analysis, a query and assessment application was proposed which allows the student to realize self -evaluation, immediate feedback from the results and integration with the questions management system. When accessing this module, the student may reach information such as explanations when a mistake is perceived during the answering process. We emphasize more the learning/teaching process then the assessment process. Finally, a prototype was implemented to evaluate the viability of the ideas proposed for this evaluation model. The background concepts are far broader and pliable then the existing version of the actual implementation. Resumo. Este artigo apresenta uma ferramenta desenvolvida com software livre aplicado ao estudo dos processos de avaliação de alunos em ambiente de Ensino a Distância. Para tanto, foram analisadas várias ferramentas de avaliação disponíveis no mercado. Com estas análises, foi modelado o sistema de gerência de questões e avaliações. O sistema permite ao aluno a auto-avaliação, com retorno imediato do resultado, integrando o sistema de gerência de questões com explicações do sucesso ou erro nas respostas, dando ênfase mais no processo de ensino/aprendizagem do que na avaliação propriamente dita. Enfim, foi implementado um protótipo demonstrando a viabilidade das idéias presentes no modelo de avaliação aqui apresentado. A proposta conceitual estabelecida para o modelo é bem mais ampla e flexível do que a atual versão da implementada. 1. Introdução O apelo do uso da tecnologia na área de educação é tão marcante que alguns observadores arriscam afirmar que o e-learning ou ensino eletrônico é a mais nova onda da Internet, depois do comércio eletrônico. O IDC (International Data Corporation) estima que o mercado de treinamento à distância por meio digital vai crescer mundialmente cerca de 69% ao ano. Com esse fator de crescimento, o setor deve sair de um patamar de modestos 2 bilhões de dólares em 1999 para 23 bilhões de dólares em 2004. De acordo com estas previsões, a demanda atual e futura desta área justifica a criação de ferramentas que possam ser aplicadas neste contexto [MOR 2001]. Além do enorme crescimento previsto para ensino a distância, a necessidade do desenvolvimento de novas ferramentas decorre da constatação de que as idéias por trás dos sistemas ainda não estão consolidadas e o número de boas experiências no uso do computador no processo de ensino/aprendizagem é menor do que a sociedade poderia esperar. Em vista dos 53 54 5° WSL / 5° FISL benefícios que podem ser obtidos, fica evidente a necessidade e oportunidade do desenvolvimento de técnicas e ferramentas que proporcionem a elaboração de avaliações por parte dos professores de forma que possam ser colhidos melhores resultados através de sua aplicação. O tempo e esforço necessários para produzir ferramentas de aprendizado e avaliações on-line podem ser substanciais. Esta dificuldade está presente especialmente em determinadas áreas, porque técnicas de avaliação não podem ser extraídas diretamente de livros texto e materiais de cursos [REN 2000]. 2. Estado-da-arte Existem diversos ambientes e ferramentas específicas que abordam como complemento ou de forma única o aspecto de avaliação dos alunos. Para melhor embasamento, foram analisados produtos considerados líderes em seu segmento de mercado com fortes características avaliativas. Através dos ambientes e ferramentas apresentados, pode -se observar que existem diversos enfoques sobre a questão da avaliação, mas de todas as formas, também há determinado padrão nas avaliações, como os tipos de questões apresentadas para os alunos. Os principais sistemas existentes de avaliação computadorizada são parte de ambientes Computer Based Training (CBT) e pacotes de autoria multimídia como o Asymetrix Toolbook [TIN 97]. Estes sistemas normalmente vêm com interface gráfica de autoria e suporte a bancos de dados de cursos, no entanto, cada um destes sistemas possui seus próprios “padrões” (por exemplo, plataformas, linguagens de autoria, representação interna dos dados). Além disto, são muito caros para serem utilizados em larga escala, como no ambiente universitário e seus custos de desenvolvimento também são excessivamente altos. 2.1 Avaliação em ambientes completos Para validar as idéias propostas e pesquisar os ganhos obtidos com a utilização de uma ferramenta com abordagem educacional, inicialmente foram analisados aspectos que tratam da avaliação de alunos, tanto em ambientes completos de educ ação à distância (Aulanet, WebCt e TopClass) como em ferramentas específicas para avaliação (Question Mark Perception, Hot Potatoes e Quiz Center) [CAR 2001] [MOC 2002] e uma ferramenta de autoria multimídia que possibilita a criação de questionários na Web (Asymetrix Toolbook ). As comparações entre as ferramentas acima citadas foram realizadas em [CAR 2001] [MOC 2002]. 3. Ferramenta AvalWeb Este seção apresenta a seguir alguns conceitos e a metodologia do sistema apresentado, naturalmente, não é necessário usar equipamentos de processamento de dados para organizar, selecionar e arquivar questões. Estas tarefas são rotineiras e podem ser feitas à mão [BLO 83]. Entretanto, há um ponto – que deve ser determinado em cada situação – em que a economia de tempo e o aumento no nível de exatidão no arquivamento e na manutenção da ordem tornam o uso de computadores um instrumento auxiliar precioso a um sistema de avaliação. Seu uso elimina a dificuldade ou o desconforto que muitos professores sentem quando solicitados a realizar a análise estatística dos testes. A máquina altera o papel do professor, que passa de produtor a consumidor de dados de análise de testes e de itens [BLO 83]. O AvalWeb é um sistema que possui como foco principal o gerenciamento de questões e aplicação de avaliações via Web com base em requisições de professores. Também possui um módulo de auto-avaliação, com retorno imediato para o aluno, que integra o sistema de gerência de questões dando ênfase mais no processo de ensino/aprendizagem do que na avaliação propriamente dita. O ensino resultante de autênticas tarefas em um ambiente aberto não é fácil de avaliar com testes tradicionais ou instrumentos existentes, portanto uma das preocupações do AvalWeb é fornecer 5° WSL / 5° FISL subsídios para ajudar o proces so de avaliação através de dados estatísticos [SAF 2000]. A avaliação inclui uma grande variedade de dados, superior ao rotineiro exame escrito final [HAY 97]. Por este motivo, o AvalWeb também procura colher diversas informações adicionais que colaboram para este propósito como, por exemplo, o tempo gasto pelo aluno para responder uma ou um conjunto de questões. O modelo proposto é baseado em uma ferramenta e não possui nenhum tipo de característica que irá assegurar automaticamente a qualidade dos cursos que serão oferecidos através de sua utilização. Existem diversas ferramentas e serviços disponíveis para finalidades correlatas mais abrangentes e que podem ser agregados, complementados e adaptados ao cenário obtido como resultado deste trabalho de pesquisa [CAR 2001]. 3.1 Arquitetura do Sistema A arquitetura proposta utiliza tecnologia de software livre para o AvalWeb é mostrada graficamente na figura 1. O acesso para alunos e professores ocorre através de requisições http para o servidor, que interage com o código PHP, que por sua vez faz o acesso aos dados armazenados no banco de dados Mysql [CAR 2001], ambos estão relacionados com . Figura 1. Arquitetura do Sistema AvalWeb O modelo proposto está baseado na arquitetura do tipo cliente-servidor, onde o servidor Web representa a figura do banco de questões e alunos e professores são representados através de clientes utilizando seus navegadores. O código PHP está mesclado com códigos HTML, no entanto, o conteúdo em PHP não é visível ao usuário, sendo processado no servidor [CAR 2001]. Não é razoável esperar que os professores tenham tempo ou treino estatístico necessário à consecução de uma análise de itens e de testes. Além disso, muitos deles não estão, justificadamente, interessados em adquirir esta habilidade. Portanto, de maneira geral, os professores não submetem seus testes a uma análise técnica, apesar de um sistema formal de avaliações exigir que esta análise seja feita. O acesso à ferramenta via WEB e as informações relativas aos alunos, professores e demais tabelas do sistema são armazenada no servidor. 3.2. Público envolvido O AvalWeb pode ser aplicado aos dois últimos cenários sugeridos anteriormente, podendo ser utilizado como ferramenta de apoio para professores do ensino tradicional ou como complemento a cursos fornecidos totalmente via WEB [CAR 2001]. 4. Considerações Finais Apesar de já ter sido testada em alguns casos reais, a utilização da metodologia deve ser intensificada para melhor avalia ção e refinamento. Para isso, é imprescindível realizar a 55 56 5° WSL / 5° FISL validação com professores e também com um maior número de alunos. Com base na estrutura dos documentos e nos contextos, é definida a estrutura de navegação do sistema, especificando o relacionamento entre documentos e os caminhos de acesso às funções, permitindo ao sistema interagir com outros sistemas. Estando definidas as estruturas de dados e de navegação do sistema, com isso serão analisados o comportamento dinâmico de documentos e links e como será realizada a integração entre documentos e bancos de dados. Para que todo esse processo aconteça no plano operacional, há necessidade de que, a partir de fundamentos teóricos claramente identificados e de mecanismos de exercícios e avaliações coerentes e eficazes, se promova à necessária mudança de consciência, de métodos, de instrumentos e de perspectivas. Isto implica, além de análise crítica, capacidade de formular propostas alternativas. Pretende-se efetuar uma integração do AvalWeb com outros Sistemas na Web utilizando os tradicionais links de interesses dos usuários, o que torna o acesso à informação uma tarefa difícil e demorada. A principal causa desta situação é a falta de estruturação dos dados e a ausência de uma representação semântica dos mesmos. A Web Semântica surge para facilitar o acesso à informação através da estruturação e da representação semântica dos dados, aumentando assim a eficiência e precisão nas pesquisas efetuadas pelos usuários. Neste sentido, esta é uma proposta alternativa , que, aplicável para o ensino, e para um projeto EAD, pode ser considerada também uma visão de avanço do aprendizado, e uma alternativa para contribuir na busca de novos caminhos no contexto da pesquisa e inovação. References [BLO 83] BLOOM, Benjamim S. et al. Manual de avaliação formativa e somativa do aprendizado escolar. 1 ed. São Paulo: Pioneira, 1983. 307 p. [CAR 2001] CARDOSO, Rodrigo Ferrugem. AvalWeb - Sistema interativo para gerência de questões e aplicação de avaliações na Web 2001. Dissertação (Mestrado em Ciência da Computação) – Instituto de Informática, Universidade Federal do Rio Grande do Sul, Porto Alegre. [HAY 97] HAYDT, Regina Cazux. Avaliação do processo Ensino -Aprendizagem. São Paulo: Ática. 1997. [MOC 2002] MORAIS, Carlos Tadeu Q. de, Hyper-Automaton: Avaliação Interativa de Alunos em Cursos na WEB Baseado em Autômatos Finitos 2002. Dissertação (Mestrado em Ciência da Computação) – Instituto de Informática, Universidade Federal do Rio Grande do Sul, Porto Alegre. [MOR 2001] MOREIRA, Maria Isabel. “O tema de hoje é e-learning”. Info. Exame. N. 181. Abril de 2001. p. 78. [REN 2000] RENSHAW, Anthony A. et al. An Assessment of On-line Engineering Design Problem Presentation Strategies. IEEE transactions on education. New York. v. 43, n. 2, p. 83-91. May 2000. [SAF 2000] SAFOUTIN, Michael J. et al. A Design Attribute Framework for Course Planning and Learning Assessment. IEEE transactions on education. New York. v. 43, n. 2, p. 188-194. May 2000. [TIN 97] TINOCO, Lúcio C. et. al. On-line evaluation in WWW-based Courseware. In: Communications of ACM. p. 194-198.SIGCSE 97. 1997. 5° WSL / 5° FISL Sessão Técnica 4 SEGURANÇA 57 58 5° WSL / 5° FISL 5° WSL / 5° FISL Detectando Intrusões na Máquina Virtual User-Mode Linux Marcos Laureano, Carlos Maziero, Edgard Jamhour Programa de Pós-Graduação em Informática Aplicada Pontifícia Universidade Católica do Paraná 80.215-901 Curitiba – PR, Brasil {laureano,maziero,jamhour}@ppgia.pucpr.br Resumo: Os sistemas de detecção de intrusão monitoram continuamente a atividade de um sistema ou rede, buscando evidências de intrusões. Entretanto, detectores de intrusão baseados em host podem ser adulterados ou desativados por invasores bem sucedidos. Este trabalho apresenta uma arquitetura que visa proteger detectores de intrusão baseados em host através de máquinas virtuais. A proposta aqui apresentada usa o isolamento de espaços de execução provido por um ambiente de máquinas virtuais para separar o detector de intrusão do sistema a monitorar. Em conseqüência, o detector de intrusão torna-se invisível e inacessível a eventuais intrusos. Os testes realizados mostram a viabilidade dessa solução. Palavras-chave: detecção de intrusão, máquinas virtuais, segurança, sistemas operacionais de rede. Abstract: Intrusion detection systems continuously watch the activity of a network or system, looking for intrusion evidences. However, host-based intrusion detectors may be tampered or disabled by successful intruders. This work presents an architecture aimed to protect intrusion detectors by means of virtual machines. The proposal presented here uses the execution space isolation provided by a virtual machine environment to separate the intrusion detector from the system to monitor. Consequently, the intrusion detector becomes invisible and inaccessible to intruders. The evaluation tests showed the viability of the proposal. Keywords: intrusion detection, virtual machines, operating systems, security. 1. Introdução Diversas ferramentas contribuem para aumentar a segurança de um sistema de computação, entre as quais se destacam os sistemas de detecção de intrusão. Tais sistemas monitoram continuamente a atividade de um ambiente computacional, buscando evidências de intrusões. Máquinas virtuais podem ser usadas para melhorar a segurança de um sistema computacional contra ataques a seus serviços [Chen 2001]. O conceito de máquina virtual foi definido nos anos 60; no ambiente IBM VM/370, uma máquina virtual propiciava um ambiente de execução exclusivo para cada usuário [Goldberg 1973]. O uso de máquinas virtuais vem se tornando interessante também em sistemas computacionais modernos, devido a suas vantagens em termos de custo e portabilidade [Blunden 2002]. Exemplos de ambientes de máquinas virtuais de uso corrente incluem o sistema VMWare [VMWare 1999] e o UML – User-Mode Linux [Dike 2000]. Um uso freqüente de sistemas baseados em máquinas virtuais é a chamada consolidação de servidores: ao invés de usar vários equipamentos fisicamente separados, faz-se uso de apenas um equipamento, sobre o qual várias 59 60 5° WSL / 5° FISL máquinas virtuais isoladas entre si hospedam diferentes sistemas operacionais convidados, com suas aplicações e serviços. Este trabalho apresenta a proposta e implementação de uma arquitetura destinada a proteger detectores de intrusão baseados em host, através da aplicação do conceito de máquina virtual. A proposta faz uso do isolamento de espaços de execução provido por um ambiente de máquinas virtuais para separar o detector de intrusão do sistema a monitorar. Essa separação protege o detector de intrusão, tornando-o invisível e inacessível aos processos dos sistemas operacionais convidados (e, portanto, a eventuais intrusos). 2. Detecção de intrusão Um sistema de detecção de intrusão (IDS – Intrusion Detection System) continuamente coleta e analisa dados de um ambiente computacional, buscando detectar ações intrusivas. Em relação à origem dos dados analisados, existem duas abordagens básicas para a detecção de intrusão [Allen 1999]: detectores baseados em rede (NIDS – network-based IDS), que analisam o tráfego de rede dos sistemas monitorados, e detectores baseados em host (HIDS – host-based IDS), que monitoram a atividade local em um host, como processos, conexões de rede, chamadas de sistema, arquivos de log, etc. A maior deficiência dos detectores baseados em host é sua relativa fragilidade: para poder coletar dados da atividade do sistema, o detector (ou um agente do mesmo) deve ser instalado na máquina a monitorar. Esse software pode ser desativado ou modificado por um intruso bem sucedido, para esconder sua presença e suas atividades. As técnicas usadas para analisar os dados coletados buscando detectar intrusões podem ser classificadas em dois grupos: detecção de assinatura, quando os dados coletados são comparados com uma base de padrões (assinaturas) de ataques conhecidos, e detecção de anomalia, quando os dados coletados são comparados com dados previamente obtidos sobre o comportamento normal do sistema. Desvios da normalidade são então tratados como ameaças. Uma forma de detectar intrusões é através da análise de seqüências de chamadas de sistema executadas pelos processos, pois estas constituem uma rica fonte de informação sobre a atividade de um sistema. Vários trabalhos científicos descrevem técnicas para detecção de anomalias usando esse tipo de informação. Nessa proposta foi utilizado o algoritmo apresentado em [Forrest 1996, Hofmeyr 1998]. 3. Alterações Propostas Através de modificações no monitor de máquinas virtuais é possível coletar, de forma transparente, informações sobre a atividade de cada sistema operacional convidado, incluindo seus usuários, processos, conexões de rede, etc. Essa informação é então enviada para um IDS externo ao ambiente, executando fora do sistema operacional convidado. Fazendo uso de dados previamente armazenados sobre o comportamento do sistema (criados a partir de execuções anteriores), o IDS pode detectar comportamentos anômalos em usuários e/ou processos, ou detectar indícios claros de atividades suspeitas. Se há suspeita de uma intrusão, um sistema de resposta pode agir de forma a impedi-la ou neutralizá-la. Essa funcionalidade pode ser facilmente implementada interceptando as chamadas de sistema emitidas pelos processos do sistema operacional convidado. 4. Implementação e resultados Um protótipo da arquitetura proposta foi implementado em uma plataforma Linux, usando o monitor de máquinas virtuais UML – User-Mode Linux [Dike 2000]. O UML foi modificado para permitir extrair dados detalhados do sistema convidado, como as chamadas de sistema emitidas pelos processos convidados. A comunicação entre o monitor UML e os processos externos foi implementada por pipes nomeados (desta forma o sistema operacional hospedeiro controla o fluxo de dados entre o monitor e os demais módulos). O hardware usado nos experimentos foi um sistema PC com CPU 5° WSL / 5° FISL 61 Athlon XP 1600 e 512 MBytes de RAM. O sistema hospedeiro usado o Suse Linux Professional 9.0 (kernel 2.4.21), e como sistema convidado foi usado um Debian GNU/Linux 2.2 com kernel 2.6.1. O sistema proposto tem dois modos de operação: um modo de aprendizagem e um modo de monitoração. Quando operando no modo de aprendizagem, todos os processos executando no sistema convidado e seus respectivos usuários são registrados como usuários e processos autorizados, assim como as seqüências de chamadas de sistema. Quando operando no modo monitoração, o módulo de detecção de intrusão recebe dados sobre o sistema convidado do monitor de máquina virtual e os compara com os dados previamente armazenados. Algumas medidas de tempo foram efetuadas sobre comandos básicos de usuário no sistema convidado, para permitir avaliar o impacto da arquitetura sobre o desempenho do sistema. O tempo de execução dos comandos ps, find, ls e who foram medidos em quatros situações distintas: a) no sistema hospedeiro, b) no sistema convidado original, c) no sistema convidado em modo aprendizagem e d) no sistema convidado em modo monitoração. Cada experimento foi repetido 10 vezes, com coeficientes de variação inferiores a 5% em todas as medidas. A tabela 1 apresenta os tempos médios de execução para cada comando e seus custos relativos. O número de chamadas de sistema invocadas por cada processo também é apresentado. Observa-se que os tempos de execução no sistema convidado (linha b) são muito superiores aos observados no sistema hospedeiro (linha a); essa diferença é devida ao alto custo de virtualização apresentado pelo UML. Também são significativos os custos impostos pelas modificações no monitor de máquina virtual para interagir com os mecanismos externos de aprendizagem, monitoração e resposta (linhas c e d). Esse custo é devido à implementação realizada não estar otimizada. Tabela 1. Tempos médios de execução (em milissegundos) Comando ps –ef # chamadas de sistema (a) sistema tempo hospedeiro tempo (b) sistema custo convidado relativo a (a) tempo (c) modo custo aprendizado relativo a (b) tempo (d) modo custo monitoração relativo a (b) 925 22 find / >/dev/null 6958 41 ls -laR / >/dev/null who –B 18096 224 166 2 40 146 371 13 82% 256% 123% 550% 67 355 797 33 67% 143% 115% 154% 70 388 819 16 75% 166% 121% 23% Adicionalmente, para avaliar qualitativamente a efetividade da arquitetura em detectar e bloquear intrusões, alguns testes foram realizados usando rootkits populares na Internet (disponíveis em http://www.antiserver.it/Backdoor-Rootkit/). Os rootkits modificam comandos do sistema operacional para impedir a detecção de intrusos (ocultando os processos, arquivos e conexões de rede do intruso) e para roubar informações digitadas como logins e senhas (através de modificações em comandos como telnet, sshd e login). Todas as ferramentas disponíveis em todos os rootkits indicados foram executadas com parâmetros default e foram detectadas em todas as execuções. Os testes evidenciaram a efetividade e complementaridade de ambos os mecanismos implementados pelo sistema: o mecanismo de detecção de intrusão detecta e impede a execução de programas conhecidos, mas adulterados, enquanto o controle de acesso impede a execução de programas desconhecidos, ou de programas lançados por usuários desconhecidos ou não-autorizados. 62 5° WSL / 5° FISL 5. Trabalhos relacionados A referência [Dunlap 2002] descreve uma experiência de uso de máquinas virtuais na segurança de sistemas. A proposta define uma camada intermediária entre o monitor e o sistema hospedeiro, denominada Revirt. Essa camada captura os dados enviados pelo processo syslogd (o daemon padrão Unix que gerencia mensagens de log) do sistema convidado e os envia ao sistema hospedeiro para armazenamento e futura análise. Entretanto, se o sistema convidado for invadido, o processo syslogd pode ser terminado ou subvertido e as mensagens de log podem ser manipuladas para ocultar o invasor, tornando o sistema sem efeito. O trabalho que mais se aproxima de nossa proposta está descrito em [Garfinkel 2003]. Ele define uma arquitetura para a detecção de intrusão em máquinas virtuais denominada VMI-IDS (Virtual Machine Introspection Intrusion Detection System). Nossa proposta permite analisar processos isolados, detectando comportamentos anômalos e bloqueando intrusões provindas de processos comprometidos. Dessa forma, perturbações nos demais processos convidados são minimizadas. Além disso, não é necessário suspender ou reiniciar a máquina virtual em caso de intrusão. Outra característica exclusiva de nossa proposta é o uso de um modelo de autorização (ACL) para usuários e processos construído automaticamente durante a fase de aprendizado do sistema. 6. Conclusão O objetivo principal do projeto, restringir a execução de processos suspeitos na máquina virtual e conseqüentemente evitar o comprometimento do sistema, foi alcançado com o protótipo atual. Todavia, trabalhos complementares devem ser realizados para melhorar o desempenho dos mecanismos atuais de detecção e resposta, e diminuir o custo imposto às aplicações. No momento estamos estudando melhorias no código do UML e nos algoritmos implementados. Refe rências Allen J. et al. State of the Practice of Intrusion Detection Technologies. Technical Report CMU/SEI-99-TR028. Carnegie Mellon University, 1999. Blunden B. Virtual Machine Design and Implementation in C/C++. Wordware Publ. Plano, Texas – USA, 2002. Chen P., Noble B. When Virtual is Better than Real. Proceedings of the Workshop on Hot Topics in Operating Systems – HotOS, 2001. Dike J. A User-mode port of the Linux Kernel. Proceedings of the 4th Annual Linux Showcase & Conference. Atlanta – USA, 2000. Dunlap G. et al. ReVirt: Enabling Intrusion Analysis through Virtual-Machine Logging and Replay. Proceedings of the Symposium on Operating Systems Design and Implementation, 2002. Forrest S., Hofmeyr S., Somayaji A. A sense of self for Unix processes. Proceedings of the IEEE Symposium on Research in Security and Privacy, 1996. Garfinkel T., Rosenblum M. A Virtual Machine Introspection Based Architecture for Intrusion Detection. Proceedings of the Network and Distributed System Security Symposium, 2003. Goldberg R. Architecture of Virtual Machines. AFIPS National Computer Conference. New York – NY – USA, 1973. Hofmeyr S., Forrest S., Somayaji A. Intrusion Detection using Sequences of System Calls. Journal of Computer Security, 6:151–180, 1998. VMware Inc. VMware Technical White Paper. Palo Alto – CA – USA, 1999. 5° WSL / 5° FISL TuxGuardian: Um firewall de host livre voltado para o usuário final Bruno Castro da Silva Instituto de Informática – Universidade Federal do Rio Grande do Sul Caixa Postal 15064 – 90501-970 Porto Alegre, RS [email protected] Abstract. This article describes the implementation of TuxGuardian, a host firewall developed after the observation that Linux security applications were not tailored for lay users. By using the security mechanisms adopted in the Linux kernel 2.6, TuxGuardian is able to implement access control policies to the network resources, controlling every application that tries to transfer data over the network. This firewall has been developed in a three-layered architecture of independent modules and is able to operate with or without user intervention. Also, TuxGuardian’s modular design eases the task of adding new features and functionality, specially since it’s distributed under the GNU/GPL license. Resumo. Este artigo descreve a implementação do TuxGuardian, um firewall de host desenvolvido a fim de possibilitar a gerência de segurança por parte de usuários leigos. Através da utilização de mecanismos de segurança presentes no kernel 2.6 do Linux, o TuxGuardian possibilita a implementação de políticas de controle de acesso aos recursos de rede. Desta maneira, é capaz de identificar e gerenciar aplicações que tentam acessar a rede, impedindo que aplicativos maliciosos possam gerar ou receber tráfego pela Internet. O firewall foi desenvolvido na forma de módulos independentes, em uma arquitetura de três camadas, e é capaz de operar com ou sem o auxílio do usuário. O design modular do TuxGuardian, licenciado pela GNU/GPL, também permite a fácil expansão de suas funcionalidades. 1. Introdução A crescente popularização da Internet e dos serviços disponibilizados através da rede fez com que a busca por sistemas seguros se tornasse uma necessidade indiscutível. Prova disso é a ampla difusão de mecanismos de controle de tráfego, tais como firewalls e sistemas de detecção de intrusão. Recentemente um novo mecanismo de segurança, conhecido pelo nome de “Firewall de Host”, passou a ser adotado em inúmeras situações. Um firewall de host nada mais é do que um mecanismo de fácil operação desenvolvido com o intuito de proteger individualmente cada computador. Em oposição aos dispositivos convencionais de segurança, como aqueles baseados na filtragem de pacotes, os firewalls de host tornam o computador seguro através do controle de quais aplicações têm autorização para receber e transmitir dados pela rede. Através de um estudo envolvendo os aplicativos de segurança existentes para Linux, constatou-se que não existem soluções satisfatórias que atendam às expectativas do usuário final ([Silva, 2004]). Por essa razão, foi dado início ao desenvolvimento um firewall de host extensível e de fácil utilização, chamado TuxGuardian. 63 64 5° WSL / 5° FISL O TuxGuardian foi desenvolvido para plataforma Linux e é software livre. Para download ou informações mais detalhadas sobre o projeto, consulte o site http://www.inf.ufrgs.br/˜bcs/tuxguardian. 2. Descrição da ferramenta implementada 2.1. Arquitetura de três camadas O TuxGuardian foi desenvolvido de maneira modular, o que significa que existem várias componentes que cooperam para que a funcionalidade do firewall seja obtida. Foram especificadas três camadas distintas, cada uma com uma tarefa bem determinada, assim como um protocolo de comunicação utilizado na troca de informações entre essas camadas. O módulo de segurança é a camada do TuxGuardian que opera em mais baixo nível, fornecendo ao firewall a capacidade de monitorar aplicações que tentam acessar a rede, tanto como clientes quanto como servidoras. A segunda camada é implementada na forma de um daemon, e é responsável por armazenar as informações a respeito de quais aplicativos são considerados confiáveis para acessar a rede. O daemon é um programa de usuário que é contatado pelo módulo de segurança sempre que alguma decisão crítica de segurança precisa ser tomada. O frontend é a terceira camada do TuxGuardian, e seu objetivo principal é fornecer os meios necessários para que possa haver interação em tempo real com o usuário. O frontend é uma peça opcional para o funcionamento do firewall de host, e seu uso é determinado pelas necessidades de cada usuário ou administrador. 2.2. O módulo de segurança O módulo de segurança nada mais é do que um módulo carregável convencional do Linux. A principal função do módulo de segurança é detectar e tratar certos eventos de rede considerados importantes para a segurança da máquina. Note que o TuxGuardian não analisa diretamente o tráfego de rede, e sim as operações que ocorrem no nível do aplicativo. Por uma decisão de projeto, as operações monitoradas são aquelas que envolvem a criação e utilização de sockets. O monitoramento destas operações é possível devido à utilização do framework LSM (Linux Security Modules). O LSM consiste em uma ferramenta recentemente adotada no kernel mainstream do Linux, e que foi desenvolvida a fim de facilitar a criação de políticas de controle de acesso [Wright and Cowan, 2003]. O LSM insere várias callbacks em pontos estratégicos do código do kernel, de maneira que funções podem ser chamadas no momento em que ocorrerem acessos a determinados objetos internos do kernel. As duas principais callbacks definidas no módulo de segurança do TuxGuardian são socket_create e socket_listen. Ambas são utilizadas a fim de mediar operações sobre sockets da família de protocolos IPv4 e IPv6. Comunicações locais via sockets não são verificadas. Sempre que o módulo detecta um evento de rede suspeito, são utilizadas rotinas auxiliares que transmitem informações de contexto para o daemon e aguardam uma resposta acerca de como agir, ou seja, uma resposta que informe se esta aplicação deve ou não ter acesso a rede. 2.3. O daemon O daemon corresponde à camada do TuxGuardian responsável por manter atualizadas todas as informações de segurança do firewall de host. Para isso, um arquivo de configu- 5° WSL / 5° FISL ração é lido e seus dados são transferidos para uma tabela hash mantida em memória. Esta tabela hash também é responsável por armazenar permissões de segurança transitórias, ou seja, permissões de acesso que são válidas somente durante a execução atual do firewall. O daemon consiste em uma aplicação servidora capaz de receber conexões do módulo de segurança sempre que este necessitar de alguma informação crítica, e é o responsável por garantir a integridade das aplicações que possuem direitos de acesso à rede. Isso evita que aplicações maliciosamente alteradas possam acessar a rede. Até o momento, o controle de permissões existente permite que se especifique se determinado aplicativo poderá ou não ter acesso à rede como cliente e se este aplicativo poderá ou não atuar como um servidor. 2.4. Protocolo de comunicação intercamadas A troca de dados que ocorre entre as camadas do TuxGuardian segue o padrão definido pelo protocolo TGP (TuxGuardian Protocol), o qual utiliza mensagens de tamanho fixo. Este protocolo é utilizado a fim de requisitar e transmitir informações entre os módulos. Isso é necessário, por exemplo, devido ao fato de que todas as informações de segurança estão concentradas no daemon, e também devido à independência do frontend. O detalhamento dos pacotes utilizados por este protocolo pode ser encontrado em [Silva, 2004]. 2.5. O frontend A última parte que compõe o TuxGuardian, e que na verdade é opcional para o seu funcionamento, é o frontend. O frontend nada mais é do que um aplicativo utilizado para obter a opinião do usuário nos casos em que o daemon não é capaz de agir de forma autônoma. A tarefa do frontend é traduzir queries TGP para o usuário final, de modo que possa haver interação em tempo real. Note que, nos casos onde o frontend não estiver disponível ou não estiver sendo utilizado, o TuxGuardian irá operar apenas com as regras definidas estaticamente no seu arquivo de configuração. Figura 1: O frontend (desenvolvido em QT) solicitando intervenção do usuário. 3. Exemplos de uso São descritas a seguir, em uma lista não exaustiva, algumas situações nas quais o uso do TuxGuardian é aconselhado: • proteção adicional, em nível de aplicativos, para máquinas onde já existem mecanismos de segurança de mais baixo nível, como um filtro de pacotes; 65 66 5° WSL / 5° FISL • identificação e isolamento de aplicações mal-intencionadas no exato momento em que elas tentam agir (ex: um spyware tentando transmitir dados confidenciais pela internet); • proteção contra alterações intencionais em aplicativos que acessam a rede, a fim de garantir a integridade e confiabilidade de todos programas utilizados para transmissão de dados pela internet; • criação de uma camada extra de proteção na rede, adicionalmente àquela geralmente provida pelo firewall da rede ou gateway. Essa proteção, por estar localizada individualmente em cada host, seria inerentemente distribuída e teria impacto direto sobre a carga imposta ao firewall institucional. Tendo em vista que o desenvolvimento do TuxGuardian ainda não está concluído, algumas tarefas pendentes devem ser desenvolvidas em um futuro próximo. Entre elas, destacamos a necessidade de desenvolvimento de métodos que garantam a integridade do módulo de segurança e do arquivo de configuração do daemon; o desenvolvimento de rotinas que permitam a análise de integridade de aplicativos linkados dinamicamente; e a identificação e tratamento de recursos de rede alocados antes da inicialização do TuxGuardian. 4. Conclusões Com o avanço do Linux Desktop e dos sistemas baseados em software livre para o público leigo, é essencial que haja disponibilidade de mecanismos de segurança que possam ser configurados por usuários finais. A gerência de aplicações confiáveis proporciona uma boa solução para este problema, na medida em que constitui um mecanismo que não exige amplo conhecimento acerca do modo como as redes operam. O TuxGuardian é um firewall de host desenvolvido levando-se em conta exatamente essa filosofia, e que é efetivamente capaz de fornecer uma camada extra de segurança, em adição àquela provida por mecanismos clássicos de segurança. Devido à falta de ferramentas deste tipo para plataforma Linux, o TuxGuardian dá o primeiro passo no sentido de disponibilizar mecanismos de segurança fáceis de usar e que visem exclusivamente o usuário final. A distribuição através da licença GNU/GPL, o desenvolvimento modular e a utilização de frameworks genéricos de segurança contribuem para que o TuxGuardian possa ser aperfeiçoado e adaptado para fins diversos. Referências Biondi, P. (2002). Security at kernel level. In Proceedings of the Free and Open source Software Developers’ European Meeting, Bruxelas, Bélgica. Corbet, J. M. (2003). Porting drivers to the 2.5 kernel. In Proceedings of the Linux Symposium, Ottawa, Canada. Silva, B. C. (2004). Estudo e desenvolvimento de um firewall de host. Trabalho de Conclusão de Curso, Universidade Federal do Rio Grande do Sul. Wright, C. (2002). Linux security module framework. In Proceedings of the Linux Symposium, Ottawa, Canada. Wright, C. and Cowan, C. (2003). Linux security modules: General security support for the linux kernel. In 11th USENIX Security Symposium, San Francisco, USA. 5° WSL / 5° FISL Uma Solução de IPS Baseada na Integração SNORT e IPTABLES Rivalino Matias Jr.1, Jaime Miranda Jr.2 1 Universidade do Vale do Itajaí (UNIVALI) São José – SC – Brasil 2 Grupo Stela – Universidade Federal de Santa Catarina (UFSC) Florianópolis – SC – Brasil [email protected], [email protected] Abstract. This work presents the implementation of an IPS solution (Intrusion Prevention System) based on the integration of Snort and Iptables. This integration was accomplished through the implementation of a communication protocol, so that both technologies can communicate in order to compose a whole security solution. Besides the specification of the protocol, this work extended the Snort IDS functionality. The results of the work are presented together with its limitation and future extensions. Resumo. Este trabalho tem como objetivo apresentar a implementação de uma solução de IPS (Intrusion Prevention System) baseada na integração Snort e Iptables. Esta integração foi realizada através da implementação de um protocolo de comunicação, de forma que ambas tecnologias possam se comunicar compondo uma única solução de segurança. Além da especificação do protocolo, este trabalho estendeu a funcionalidade da plataforma Snort. Os resultados do trabalho são apresentados, juntamente com suas limitações e trabalhos futuros. 1. Introdução Atualmente os ataques eletrônicos (cyberattacks) têm crescido tanto em diversidade quanto em complexidade [CERT 2003]. Neste contexto, tecnologias de segurança tais como firewall, ids, dentre outras, devem ser utilizadas de forma integrada, visando atingir um nível de serviço que atenda aos atuais requisitos de segurança digital. Este trabalho apresenta a implementação de uma solução de IPS (Intrusion Prevention System), baseada em um protocolo de integração Snort [Roesch 2003] e netfilter/Iptables[Coulson 2003]. O artigo está organizado como descrito a seguir. Na seção II são apresentados alguns conceitos de sistemas de detecção e prevenção de intrusão. O protocolo de integração está descrito na seção III. A seção IV apresenta alguns detalhes da implementação do protótipo utilizado para validar o trabalho. Os resultados alcançados, juntamente com as conclusões são apresentados na seção V. 2. Sistemas de Detecção e Prevenção de Intrusão Desde a década de 80 os sistemas de detecção de intrusão tem sido utilizados, sendo o modelo de Denning [Denning, 1987] o precursor para o desenvolvimento de arquiteturas de IDS. Esse modelo foi aplicado na construção de um IDS chamado IDES (Intrusion Detection Expert System) e descrito em [Denning, 1987]. Outras implementações baseadas neste modelo podem ser encontradas em [Cooper 2002] e [Lunt 1993]. Uma evolução no conceito de IDS tem sido proposta, originando uma nova classe de aplicações chamada de sistemas de prevenção de intrusão (IPS - Intrusion Prevention System) [Dinesh 2002]. Um IPS herda todas as características e funcionalidades do IDS, contudo, agrega um comportamento ativo, ao 67 68 5° WSL / 5° FISL contrário do modelo passivo inerente ao IDS. Desta forma, um IPS além de detectar eventos suspeitos, toma decisões em forma de contramedidas ao concluir que o ambiente protegido está sob ataque [Bobbi 2003]. Atualmente, soluções de IPS são compostas de filtro de pacotes (firewalls) e mecanismos de detecção de intrusão (ids), ambos trabalhando de forma integrada. Com isso, ao detectar eventos considerados nocivos, o IPS pode usar as funcionalidades de bloqueio, presente no seu firewall, para interromper o progresso de uma invasão/ofensiva [Timothy 2003]. A fim de criar uma solução de IPS baseada em software livre, implementou-se um protocolo de comunicação cujo objetivo foi a integração do Snort com Iptables, compondo uma única solução de segurança que contemple as funcionalidades presentes em um IPS. 3. Protocolo de integração Snort e Iptables (FWIDSP) O propósito do protocolo implementado (fwidsp) é suportar as principais mensagens utilizadas para integrar Iptables e Snort para fins de IPS. Sua representação de dados foi especificada em linguagem ASN.1 (Abstract Syntax Notation One) [ITU-T | ISO/IEC 2002], a mesma utilizada nas IETF/RFCs (request for Comments). O modelo de comunicação definido é não-orientado a conexão com confirmação, utilizando o UDP como protocolo de transporte. A comunicação inicia-se sempre a partir do Snort, através de uma pdu fwidsp endereçada ao Iptables. A detecção de uma tentativa de ataque/invasão em curso, por parte do Snort, é o evento que inicia esta comunicação. Neste caso, o Snort envia uma pdu fwidsp com comandos de configuração para o Iptables a fim de conter ou mitigar o ataque/intrusão em progresso. Abaixo um exemplo de uma PDU do protocolo, descrita em linguagem ASN.1: REQUEST_PDU IMPORTS RFC 11551 request_pdu ::= SEQUENCE { OP_ID, PORT, TIMER, INTERFACE, IP_ADDR, FORWARD_IP_ADDR, NAT_IP_ADDR } OP_ID ::= INTEGER; PORT ::= INTEGER; TIMER ::= UTCTIME; INTERFACE::= OCTET STRING; IP_ADDR ::= SEQUENCE OF { IPADDRESS SIZE 4..16 }; FORWARD_IP_ADDR::= SEQUENCE OF { IPADDRESS SIZE 4..16 }; Descrição dos campos: OP_ID = Identificador da requisição fwidsp. PORT = Armazena uma determinada porta TCP/UDP para bloqueio/liberação (ex. 80 – http). TIMER = Armazena o tempo em segundos para a validade da regra definida em OP_ID. Este parâmetro é opcional, sendo que um valor NULL representa uma regra sem tempo de expiração. INTERFACE = Identifica a interface associada ao Firewall, na qual deve ser aplicada tal regra (Ex. Saída, Entrada, DMZ, etc.). IP_ADDRESS = Armazena o endereço IP a ser bloqueado/liberado. Este endereço suporta tanto IPv4 quanto IPv6. FORWARD_ADDRESS = Armazena um endereço de redirecionamento. Este endereço suporta tanto IPv4 quanto IPv6. A implementação do fwidsp buscou ser a menos intrusiva possível, evitando a necessidade de modificações tanto no Snort quanto no Iptables. Para isso, dois componentes de software foram implementados, os quais permitiram esta desejada transparência. São eles: 1 RFC utilizada como módulo de importação que possui tipos de dados primitivos e estruturados usados pela especificação do fwidsp. 5° WSL / 5° FISL • • Plugin: responsável por enviar requisições fwidsp para o Iptables em resposta a eventos de intrusão detectados pelo Snort; Agente fwidsp: responsável pela recepção das pdus, provenientes do Snort/Plugin, e execução de comandos no Iptables. O modelo arquitetural do IPS está apresentado na Figura. 1. Figura 1. Arquitetura proposta 4. Prototipação e avaliação Para validar a arquitetura de IPS proposta, um protótipo foi implementado de forma a verificar sua efetividade. Para tanto, foi criado um cenário de teste contendo quatro componentes básicos: atacante (win98), alvo (PWS/win98), roteador/Firewall (Linux/Iptables) e IDS (Linux/Snort). Na estação atacante foram usadas ferramentas disponíveis na Internet (ex. Brutus2) para a geração de ataques variados. Como sistema alvo foram utilizados um servidor web PWS (personal web server) com Windows 98. A integração do plugin fwidsp ao Snort se deu através de uma interface unix socket3 chamada spo_alert_unixsock(), disponibilizada pelo Snort para a sua comunicação com programas externos. A Figura 2 apresenta o fragmento do código do arquivo snort.c4 que define esta interface. Um alarme é gerado nesta interface quando da ocorrência de eventos que caracterizem tentativas de intrusão. ... switch (pv.alert_mode){ ... case ALERT_UNSOCK: AddFuncToOutputList(SpoAlertUnixSock, NT_OUTPUT_ALERT, NULL); OpenAlertSock(); break; } ... Figura 2. Interface Unix Socket do Snort Para implementar o agente no firewall um processo daemon5 foi implementado no Linux, o qual monitora continuamente a porta de comunicação (udp:999) reservada para o fwidsp. A validação do protótipo se deu realizando tentativas de invasão através de três tipos de ataques atualmente usados, os quais são: portscan, ataque de senha e buffer overflow (IIS:cmd.exe). A fim de avaliar o desempenho da solução, usou-se como critério o tempo de reação a estas tentativas de ataques, registrando-se os tempos de saída do pacote do sistema atacante, sua passagem pelo Snort e chegada até o alvo. Complementarmente, foram monitorados os tempos de saída da requisição fwidsp do Snort e sua chegada no Iptables, bem como o tempo de finalização das novas regras criadas. Para tanto, todos os sistemas envolvidos tiveram seus clocks sincronizados. Foram realizadas três replicações para cada experimento de invasão, totalizando nove ensaios. Verificou-se em todos os resultados que entre a detecção do ataque e o seu bloqueio o tempo foi menor do que um (1) segundo. A boa performance do protocolo ficou comprovada pelo bloqueio do atacante de 2 Disponível em http://www.hoobie.net/brutus/ . Mecanismo de comunicação entre processos (ipc local) em sistemas operacionais baseados no UNIX. Arquivo disponível na instalação do código fonte do Snort (http://www.snort.org). 5 Processo que executa em segundo plano (backgound). 3 4 69 70 5° WSL / 5° FISL forma eficaz, o que evitou a passagem de mais do que três pacotes no caso do portscan e apenas do primeiro nos demais ataques. Em todos os nove ensaios o atacante não obteve nenhuma resposta proveniente do sistema alvo em resposta aos ataques. Apesar das respostas terem sido enviadas pelo sistema alvo, o endereço do destinatário já tinha sido bloqueado como efeito da comunicação Snort e Iptables. 5. Conclusões Como descrito na seção anterior, o protótipo implementado obteve sucesso em todos os testes ao qual foi submetido. Porém, vale destacar que nestes testes não foram tratadas aquelas situações consideradas como “alarmes-falso”. Em testes complementares foram injetadas, propositalmente, condições para a geração de “alarme-falso”, o que se pôde constatar uma ineficiência do Snort no tratamento destas condições. Como conseqüência, foram realizados bloqueios de estações não nocivas ao ambiente monitorado. Como conseqüência a esta deficiência do Snort, ataques de negação de serviço podem ser explorados. Também, vale destacar uma limitação desta proposta que reside na segurança do tráfego entre o plugin e o agente fwidsp. No protótipo implementado não foram utilizados mecanismos para a garantia da confidencialidade e integridade das pdus trocadas entre os dois sistemas. Duas abordagens que poderiam ser usadas seria a utilização de criptografia (ex. SSL) ou de uma VPN (ex. ipsec) entre os dois pontos finais de comunicação. Em ambos os casos têm-se a proteção das mensagens, porém faz-se necessário um estudo do impacto de tais mecanismos sobre o desempenho do protocolo, haja vista que qualquer acréscimo no tempo de reação da solução pode comprometer a sua eficácia. 6. Referências Bauer, D. and Koblentz, M. (1988) “NDIX - An Expert System for Real-Time Network Intrusion Detection” Proceedings of the IEEE Computer Networking Symposium, pp. 98-106, April. Bobbi, Spitzberg (2003) “Intrusion Prevention – Part of Your Defense in Depth Architecture” SANS GSEC Practical, April, 2003. http://www.sans.org/rr/papers/30/1063.pdf CERT Coordination Center. Estados Unidos <http://www.cert.org/stats/cert_stats.html>. da América, 2003. Disponível em: Cooper, M. (2002) “An Overview of Intrusion Detection Systems. Washington” XINETICA. Disponível em: < http://www.xinetica.com>. Coulson, David (2003) LinuxPro – Network Security IpTable – Part 01. Março. Disponível em: <http://www.iptables.org> Denning, Dorothy E. (1987) “An Intrusion-Detection Model. Transactions on Software Engineering”, vol. se-13, no. 2, february, 222-232. Dinesh Sequeira (2002) “Intrusion Prevention Systems – Security´s Silver Bullet” SANS GSEC, (http://www.sans.org/rr/papers/30/366.pdf) ITU-T | ISO/IEC Abstract Syntax Notation One (ASN.1): Specification of Basic Notation, ITU-T Rec. X.680 (2002) | ISO/IEC 8824-1:2002 Standards, 2002. Lunt, Teresa F. (1993) "Detecting intruders in computer systems". Conference on Auditing and Computer Technology, 1993. Roesch, Martin. Snort Users Manual. Snort Release: 1.9.x 2002. Disponível em: <http://www.snort.org>. Timothy, D. Wickham(2003) “Intrusion Detection is Dead. Long Live Intrusion Prevention” SANS GIAC: Research on Topics in Information Security, April.(http://www.sans.org/rr/papers/30/1028.pdf) 5° WSL / 5° FISL Sessão Técnica 5 REDES 71 72 5° WSL / 5° FISL 5° WSL / 5° FISL Desenvolvimento de um Sistema Livre para Simulação de Tráfego Baseada em Modelos Microscópicos∗ Gustavo K. Andriotti, Ana L.C. Bazzan, Paulo R. Ferreira Junior, Filipe Lopes, Denise de Oliveira, Thiago M. Papageorgiou, Bruno Castro da Silva† 1 Instituto de Informática – Universidade Federal do Rio Grande do Sul Caixa Postal 15064 – 90501-970 Porto Alegre, RS {fgka,bazzan,prferreiraj,filipe,edenise,tmpapageorgiou,bcs}@inf.ufrgs.br Abstract. This paper describes a tool for traffic simulation – both urban and highway – which is based on a microscopic simulation model. The project is under development and is licensed as free software. Moreover, it is the basis for a driver information system and will be freely available for traffic engineers and urban planning experts. Resumo. Este artigo descreve uma ferramenta para simulação de tráfego – urbano e em autoestradas – baseado em modelo microscópico de movimentação. O projeto está sendo desenvolvido com base em software livre e é a base de um sistema de informação para motoristas. Além disso, será disponibilizado livremente para usuários da área de engenharia de tráfego e de planejamento urbano. 1. Introdução Problemas relacionados ao trânsito são uma constante nas grandes cidades do mundo inteiro e tendem a agravar-se com o crescente aumento da demanda por mobilidade. As ações adotadas para minimizar o problema visam a melhoria da malha viária através da construção de novas vias ou da otimização do fluxo de tráfego na malha existente. Esta última opção, além de economicamente mais viável, também é a alternativa preferida por sociedades nas quais o fator meio-ambiente é uma questão chave. Os sistemas computacionais que atualmente tentam resolver problemas de tráfego são, em geral, isolados, podendo ser considerados “caixas-pretas” devido à inacessibilidade ao seu código fonte. Isso inviabiliza modificações, extensões e a integração com outros sistemas de logística e planejamento urbano. Além disso, outra questão relevante é a do custo destes sistemas, geralmente na ordem de milhares de dólares. Estes problemas se tornam ainda mais críticos no momento em que passamos a considerar a utilização destes softwares em universidades e órgãos públicos voltados para as áreas de circulação e transportes, como secretarias municipais de transporte, órgãos de planejamento urbano e de engenharia de tráfego. Por todos esses motivos, decidiu-se desenvolver um simulador de tráfego dentro do projeto SISCOT (Sistema Integrado de Simulação, Controle e Otimização de Tráfego, iniciado em 1999), através do qual se busca atacar a falta de ferramentas livres e fornecer alternativas economicamente viáveis aos softwares comerciais disponíveis, como o Paramics, EMME2, VISIM e Dracula. Além de resolver o problema do custo, o desenvolvimento baseado em software livre permite que o simulador possa ser modificado pelos integrantes das equipes de pesquisa que compõe ∗ † Projeto parcialmente apoiado pelo CNPq Autores parcialmente apoiados pelo CNPq 73 74 5° WSL / 5° FISL o projeto: físicos, como fornecedores do modelo de movimentação dos veículos; cientistas da computação, como fornecedores dos modelos de motoristas e desenvolvedores da ferramenta; e engenheiros de tráfego, como usuários desta. O presente projeto objetiva, em resumo, a construção de um software para simulação e otimização de tráfego urbano e em auto-estradas que seja livre e de código aberto. 2. Simulação de Tráfego O simulador desenvolvido no projeto é baseado em um modelo microscópico de movimentação física1 . Este tipo de modelo leva em consideração veículos individualmente e é relativamente mais complexo que um modelo macroscópico. Uma exceção é o modelo de Nagel-Schreckenberg [Nagel and Schreckenberg, 1992], baseado em um autômato celular, o qual divide um trecho qualquer de uma via em partes elementares de comprimento fixo (células) e executa simulações em passos discretos de tempo (iterações). Neste modelo, cada veículo possui uma velocidade v e se movimenta de acordo com relações bastante simples, envolvendo principalmente a sua velocidade e a posição relativa entre os carros (gap). O modelo utilizado no SISCOT é baseado no autômato de Nagel-Schreckenberg, mas inclui algumas extensões ao modelo original, as quais são detalhadas em [Bazzan et al., 1999, Andriotti and Bazzan, 2002]. As quatro regras principais que guiam a movimentação física de cada veículo, neste modelo microscópico, são: 1. 2. 3. 4. aceleração: incrementa v de uma unidade, caso v seja menor que gap; interação: decrementa v de um unidade caso o veículo vizinho esteja muito próximo; randomização: decrementa v de uma unidade com probabilidade p; movimentação: atualiza a posição de cada veículo, fazendo-o avançar v células. Com estas regras é possível simular situações clássicas como acidentes e outras perturbações sobre a via, bem como o que atualmente é conhecida como a causa mais freqüente de congestionamentos que surgem sem um motivo aparente: o fato de que, seguindo-se uma desaceleração randômica (alguém que observa a paisagem, telefona ao volante, etc.), ocorre uma reação em cadeia de desacelerações, cada uma mais forte que a que a causou, de modo que em pouco tempo se forma um congestionamento de grandes proporções. 3. Descrição do Projeto No projeto do sistema estão previstos os seguintes módulos: • aquisição de dados • simulação microscópica • visualização 3.1. Aquisição de dados O módulo de aquisição e manutenção de dados se baseia em uma interface gráfica acessada via web, a qual interage com um banco de dados remoto. Este banco de dados armazena informações relativas à topologia das malhas viárias, dados dos semáforos e informações dinâmicas, como contagens de fluxo de veículos. As tecnologias envolvidas são todas baseadas em software livre: PHP e servidores Apache e Postgres rodando em máquinas Linux com Debian. 1 A escolha de um modelo microscópico se justifica devido a sua eficiência computacional, indispensável devido à necessidade de se produzir uma predição do estado das vias em um horizonte de tempo da ordem de 15 a 30 minutos 5° WSL / 5° FISL Os dados utilizados para a tarefa de gerência de tráfego urbano provêm de diversas fontes (ex: EPTC/SMT), e atualmente são coletados de forma offline. Entre estes dados incluem-se informações a respeito da sinalização, volume de tráfego e dados topológicos. Adicionalmente às funcionalidades básicas da interface e do banco de dados, estão sendo desenvolvidas ferramentas para geração de estatísticas e geração automatizada de dados para os demais módulos, assim como algorítmos de sumarização de dados. 3.2. Módulo de simulação Este módulo é implementado em C++ e é o responsável por gerar os dados relativos à simulação de determinada malha viária. As informações a respeito da topologia são oriundas do banco de dados, e a saída pode assumir vários formatos, dependendo da necessidade do usuário. Entre estes formatos, os mais usados são o mapa de células e taxa de ocupação por via. O modelo utilizado no módulo de simulação é uma extensão do autômato de NagelSchreckenberg, na qual a tomada de decisão dos motoristas ocorre em duas etapas. A movimentação dos carros na malha viária é função tanto da decisão do respectivo motorista quanto das limitações e restrições do veículo e do cenário sendo simulado. Foram implementados vários mecanismos de ajuste do funcionamento da topologia, tais como sources e sinks (elementos que inserem e removem carros da simulação, de acordo com taxas constantes ou variáveis), semáforos, etc. Além disso, o simulador prevê o funcionamento de vários tipos de sensores, que são elementos passivos cuja função é coletar certos tipos de dados da simulação. Estes dados podem ser analisados offline ou utilizados para realimentar o simulador de forma a otimizar o tráfego, como poderá ser visto na seção 4. 3.3. Visualização Este módulo ainda está em fase de implementação. A visualização dos resultados pode se ocorrer tanto em modo gráfico quanto em modo textual, e pode ser disponibilizada via web (visualização simplificada) ou localmente (visualização detalhada). O visualizador gráfico disponibilizado via web foi implementado em Java e apresenta os dados de forma 2D, tanto em escala de veículo quanto em nível estatístico (macroscópico). O visualizador local, por sua vez, foi desenvolvido em C/C++ e utiliza a biblioteca gráfica OpenGL. Desta maneira, visualizações bem mais realistas e detalhadas são possíveis, as quais incluem a possibilidade de navegação 3D na topologia. 4. Cenário testado Um exemplo da utilização do SISCOT é apresentado em [Oliveira et al., 2004], e corresponde a uma tentativa de reduzir os congestionamentos através da sincronização de semáforos em uma abordagem baseada em insetos sociais. Ao tratar cada semáforo como um inseto submetido a estímulos, é possível evitar a necessidade de um controle de tráfego centralizado e estático, possibilitando com que a escolha de planos semafóricos ocorra de forma automática e auto-ajustável. O cenário utilizado foi um trecho da rede viária de Porto Alegre (vide figura 1), sendo que foram simulados os fluxos de veículos na via principal e nas secundárias em diferentes situações: sem nenhuma sincronização entre os semáforos; com coordenação fixa; e com a abordagem inspirada nos insetos sociais. Os resultados mostraram que a abordagem inspirada em insetos sociais é mais flexível e que os semáforos se adaptam ao fluxo corrente selecionando o plano semafórico mais apropriado. Desta forma, é possível reduzir a densidade e os congestionamentos na via principal de forma automática e descentralizada. 75 76 5° WSL / 5° FISL Figura 1: Visualização 3D de uma simulação de tráfego 5. Conclusões Do ponto de vista prático, o principal resultado obtido com o projeto foi a implementação de um protótipo para análise, simulação e controle do tráfego para a cidade de Porto Alegre. Este protótipo foi licenciado pela GNU/GPL, constituindo uma alternativa livre e gratuita aos softwares proprietários que atualmente dominam o mercado. Além disso, o SISCOT permite o rompimento da dependência tecnológica e o não comprometimento de recursos financeiros na compra de softwares comerciais. Isso é especialmente importante tendo em vista que o SISCOT poderá ser usado por órgãos governamentais de planejamento e de pesquisa, diretamente em benefício da população. Espera-se que, a partir dos resultados obtidos, seja possível alcançar uma melhora no gerenciamento de semáforos e no planejamento e otimização de tráfego. Adicionalmente, deverá ser oferecido um serviço de divulgação via internet ou rádio das condições do trânsito, o que terá impacto sócio-econômico direto para motoristas e usuários em geral do transporte urbano na cidade. Com isso, será possível diminuir o tempo de viagens e atrasos, e conseqüentemente melhorar a qualidade de vida da população. Referências Andriotti, G. K. and Bazzan, A. L. C. (2002). An object-oriented microscopic traffic simulator. In Proceedings of the XXVIII Latin-American Conference on Informatics (CLEI 2002), Montevideo, Uruguay. Bazzan, A. L. C., Wahle, J., and Klügl, F. (1999). Agents in traffic modelling – from reactive to social behaviour. In Advances in Artificial Intelligence, number 1701 in LNAI, Berlin/Heidelberg. Springer. Also appeared as Proc. of the U.K. Special Interest Group on Multi-Agent Systems (UKMAS), Bristol, UK. Nagel, K. and Schreckenberg, M. (1992). A cellular automaton model for freeway traffic. J. Phys. I France, 2:2221. Oliveira, D., Ferreira, P., and Bazzan, A. (2004). Reducing traffic jams with a swarm-based approach for selection of signal plans. In Proceedings of Fourth International Workshop on Ant Colony Optimization and Swarm Intelligence - ANTS 2004., Bruxelas, Bélgica. 5° WSL / 5° FISL Um Framework baseado em Software Livre para diminuir a probabilidade de falhas e para balanceamento de carga nas conexões à Internet Marcelo Rios Kwecko1, Raphael Lucas Moita1,Jorge Guedes Silveira1, Ricardo Balbinot1 1 Faculdade de Engenharia Elétrica – Pontifícia Universidade Católica (PUCRS) Av Ipiranga 6681 – Prédio 30 – 90.619-900 – Porto Alegre – RS – Brasil {mkwecko,rmoita,jguedes,rbalbinot}@gparc.org Resumo. A comunicação através da Internet vem sendo cada vez mais usada pelas empresas para realizar suas transações. Transações estas que devem ser garantidas por um serviço de conexão de qualidade e confiável, onde a indisponibilidade do mesmo pode trazer prejuízos incalculáveis a tais empresas. O presente artigo apresenta um modelo de sistema que foi desenvolvido, com código aberto, tendo como objetivos principais o controle de links redundantes de acesso a Internet e o Balanceamento da Carga. Abstract. The communication via Internet has become each time more and more used for the corporative transactions. Those transactions must be guaranteed by a high quality service and fault tolerant systems since the unavailability of any service might cause incalculable lost revenue to these companies. This paper presents a system modeling that has been implemented, with open sources, having as main goals the links control of redundant accesses to the world Internet as well as the load balancing on those links. 1. Introdução Atualmente a comunicação via Internet vem sendo usada por muitas empresas na realização de transações que devem ser garantidas por um serviço de conexão confiável e de qualidade, onde a indisponibilidade deste pode trazer, em muitos casos, prejuízos incalculáveis a tais empresas. Este artigo descreve um método que foi implementado sobre uma plataforma de software livre para diminuir a probabilidade de falhas nas conexões devido a erros nos provedores de serviço, bem como a possibilidade de balancear o tráfego da rede. Por estas razões o sistema implementado foi especificado com links redundantes de acesso. No testbed foram utilizados, no acesso, dois tipos de tecnologias distintas (tecnologia ADSL e Cable Modem) e na montagem do modelo de rede é utilizado um roteador open source Linux para gerenciar as conexões com a Internet. 2. Aspectos Importantes No momento de se planejar uma alternativa com conexões redundantes, alguns aspectos devem ser analisados para que a solução apresente uma maior confiabilidade e imunidade contra possíveis falhas nas conexões. A primeira delas é a escolha de diferentes tecnologias de conexão, por exemplo, usar um link ADSL e outro Cable Modem, ou também, um link dedicado e outro ADSL ou um link Cable Modem e outro discado, etc. Desta forma é menor a probabilidade das duas fornecedoras de conexão Internet pararem ao mesmo tempo. Pode-se ter duas conexões com a Internet e utilizando a mesma tecnologia, desde que a estrutura destas conexões seja com operadoras diferentes, como por exemplo, dois links ADSL, um fornecido pela Operadora “A” e o outro pela Operadora “B”. Esta é uma medida clássica, em termos de 77 78 5° WSL / 5° FISL confiabilidade, cuja redundância permite diminuir muito a probabilidade que ambos sistemas de conexão venham a falhar simultâneamente. No entanto alguns outros aspectos complementares a serem analisados sobre o funcionamento das tecnologias escolhidas, podem determinar o que pode deixar a conexão fora de funcionamento, e até mesmo descobrir se existem pontos em comuns, os quais podem fazer com que parem de funcionar as duas tecnologias de conexão escolhidas, como por exemplo, o mesmo provedor de serviços de Internet (ISP). Analisando as características específicas de cada tecnologia, podemos observar que a estrutura ADSL especifica um endereço IP da própria fornecedora do serviço, usando apenas o ISP para autenticação do usuário. Já a tecnologia Cable Modem é dependente do ISP para fornecer um endereço IP para conexão. Com isso, caso o ISP apresente problemas, a conexão através do Cable Modem também irá apresentar, enquanto que o ADSL não, pois como já foi dito, só utiliza o ISP para autenticação. Diante desses aspectos pode ser utilizado o mesmo provedor de acesso tanto na estrutura ADSL quanto para a estrutura Cable Modem. O balanceamento do tráfego é então viabilizado devido à disponibilidade de duas conexões, pois seria um desperdicio usar-se apenas uma das conexões para o acesso à Internet, deixando a outra apenas como um link stand by de conexão. O modelo especificado faz com que o tráfego prioritário utilize sempre a conexão de maior velocidade de comunicação. 3. Testbed e Estrutura da Rede de Teste A figura 1 ilustra a topologia utilizada como testbed e a estrutura da rede com conexão redundante. A rede possui um roteador Linux e duas conexões com a Internet, uma através da tecnologia ADSL e outra através da tecnologia Cable Modem. O roteador Linux gerencia as conexões de forma que se possa acessar a Internet tanto pelo link ADSL como pelo link Cable Modem. Ainda permite que o tráfego da rede local seja balanceado, ou seja, parte do tráfego é direcionada para um dos links, e o restante é escoado pelo outro. No entanto, se alguma das conexões apresentar problema, todo o tráfego da rede local é imediatamente encaminhado para a outra conexão. Figura 1. Estrutura da Rede 4. Descrição do Sistema O sistema foi desenvolvido utilizando-se apenas ferramentas disponíveis na maioria das distribuições atuais do Linux, entre elas podemos citar: Iproute2, IPTables, ping, Shell Script, etc. Conforme definido em [SHE 04], Shell é o interpretador de linha de comando do Linux e Shell Script é uma linguagem de programação que interpreta e executa comandos no Shell. Com esta linguagem é possível o desenvolvimento de aplicativos de forma rápida. 5° WSL / 5° FISL 4.1 Iproute2 Segundo [FRE 02], o Kernel do Linux, a partir da série 2.2, evoluiu para um subsistema de rede completamente novo e remodelado. O código deste subsistema é extremamente flexível e robusto, graças a funções especiais contido nele. Tais funções existentes neste subsistema do Linux incluem diretivas diversas de roteamento, controle, filtragem e priorização de tráfego. Embora o Linux possua tanta flexibilidade, perdemos o uso de tais funções pelo simples fato de que na maior parte dos sistemas a configuração é baseada em utilitários presentes em toda base UNIX, nos quais a configuração e uso das funções especiais do Kernel do Linux não são acessíveis, como os comandos arp, ifconfig e route. Estes comandos, embora utilizem syscalls adaptadas ao novo subsistema, fazem as chamadas passando diversos argumentos com valores padrões, perdendo-se a flexibilidade de configuração neles existente. Contudo, um pacote chamado iproute2 liberta o poder do subsistema de rede do Linux, permitindo a configuração de sistemas com toda a flexibilidade existente no Kernel, de forma poderosa, sem perder a facilidade de uso das ferramentas anteriores. Portanto o iproute2 disponibiliza um maior poder de “roteamento” ao sistema Linux, como, por exemplo, permitir a criação de várias tabelas de roteamento, especificar regras de roteamento para os pacotes de redes que chegam no sistema entre outros [LIN 04]. 4.2 IPTables Como nossa rede local utiliza IPs com endereços não roteaveis é preciso fazer o NAT (Network Address Translation). NAT não é um protocolo nem um padrão, e sim uma série de tarefas que um roteador, ou equipamento equivalente, deve realizar para converter endereços IPs entre redes distintas [ROD 03]. Um equipamento que tenha o recurso de NAT deve ser capaz de analisar todos os pacotes de dados que passa por ele e trocar os endereços desses pacotes de maneira adequada. Para realizar o NAT nos pacotes que trafegam entre uma rede e outra, foi adicionado nas distribuições Linux que usam kernel 2.4 a ferramenta IPTables, a qual trabalha a nível de pacotes baseado no endereço/porta de origem/destino [SIL 03]. Em Kernels anteriores ao 2.4 este mesmo recurso poderia ser alcançado com uma ferramenta semelhante chamada IPChains 4.3 Descrição do Funcionamento No roteador Linux foram criadas duas tabelas de roteamento, uma para cada link de conexão. Nestas tabelas estão definidas as informações para o roteamento, a interface de rede usada bem como o gateway das conexões. Além das tabelas são também criadas regras de roteamento, através do conjunto de ferramentas IPRoute2, mais especificamente a ferramenta “IP”, para os pacotes que chegam ao roteador. Uma dessas tabelas de roteamento é definida como “padrão”. O endereço de origem do pacote, ao chegar no roteador Linux, é analisado para que seja definido, de acordo com as regras previamente configuradas, o que deve ser feito com o pacote. As regras se resumem em definir a direção dos pacotes entre o link1 e link2. O balanceamento de carga pode se dar de forma estática, ou seja, o administrador determina qual o caminho dos pacotes de um determinado host deve usar para acessar a Internet ou o sistema pode determiná-la de forma dinâmica a partir de uma máquina de estados finitos controlada pelas regras de decisão. Para o monitoramento do estado dos links, de tempos em tempos, é enviado um pacote ICMP ao gateway do provedor de conexão de cada link. Caso não houver um pacote de retorno, o link em questão é considerado inativo, e o tráfego da rede é encaminhado imediatamente para o outro link de acesso. Como o sistema de configuração é desenvolvido em Shell Script, o administrador pode facilmente modificar conforme as necessidades de sua rede apenas editando arquivos texto. 79 80 5° WSL / 5° FISL A figura 2 ilustra o funcionamento do sistema proposto por completo. Figura 2 – Funcionamento do Sistema 5. Conclusão Empresas que possuem conexões fornecidas por operadoras de serviços de Internet, muitas vezes ficam de mãos atadas e tendo que arcar com os inúmeros prejuízos em seus negócios devido às falhas no serviço de comunicação. Este artigo apresentou uma forma de conexão alternativa, possibilitando que as redes das empresas fiquem menos vulneráveis aos problemas que podem ocorrer com os fornecedores de serviço de comunicação. Além de demonstrar que é possível desenvolver ferramentas simples e eficiente no sentido de resolver os mais variados problemas nos sistemas de informação, apenas usando software livre. Em nossas redes de teste o sistema desenvolvido apresentou ótimos resultados, tanto no sentido da conexão com a Internet, pois dificilmente a rede local ficou sem conexão, e na melhora do tráfego dos dados, devido ao balanceamento das informações pelos dois links. Referências Bibliográficas [FRE 02] FREITAS, Allan E. S. “Roteamento avançado com Linux”. 2002, Disponível em: <http://www.rnp.br/newsgen/0201/roteamento_linux.html>, Acesso em 07 Maio 2004. [SIL 03] SILVA, Gleydson M. “Guia Foca GNU/Linux”. 2003 Disponível em: <http://focalinux.cipsga.org.br/guia/avancado/index.htm >, Acesso em 07 Maio 2004. [ROD 03] RODRIGUES, Marcelo L. “Protocolo NAT”. 2003. Disponível em: <http://www.networkdesigners.com.br/Artigos/NAT/nat.html>, Acesso em 07 Maio 2004. [LIN 04] Linux HOWTO, “Linux Advanced Routing & Traffic Control HOWTO”. Disponível em: <http://lartc.org/howto/>,Acesso em 07 Maio 2004. [SHE 04] Shell Script, “How to write a shell script”. Disponível <http://vertigo.hsrl.rutgers.edu/ug/shell_help.html>, Acesso em 07 Maio 2004. em: 5° WSL / 5° FISL Terminais Inteligentes: alternativa estratégica para otimização de recursos computacionais Reinaldo J. Moreira , Hebert Luiz A. Costa, Jailton C. Junior, Gicele M. T. de Souza, Ulisses A. Leitão Faculdades Integradas de Caratinga, Instituto Doctum – Educação e Tecnologia Pç. Cesário Alvim, 110 – 35.300-036 Caratinga – MG - Brasil Abstract. This paper describes the Smart Clients Approach as a strategic solution in order to optimize computational resources. The Smart Clients are similar to the Thin Clients but, on the other hand, they have a reasonable local processing and RAM memory capabilities. We argue that, in this case, it is a resource wasting to use a fat server to do what the station can do. A new instalation script was developed to carry out a sistematic use of local applications, making possible a full control of load balacing within the local network. Resumo. Este artigo descreve a abordagem de Terminais Inteligentes como solução estratégica visando a otimização de recursos computacionais. Terminais Inteligentes são similares a Thin Clients. Entretanto, possuem razoável capacidade de processamento e de memória RAM locais. Neste caso, é um desperdício de recursos utilizar o servidor para realizar tarefas que podem rodar nas estações. Um novo script de instalação foi desenvolvido para realizar o uso sistemático de aplicações locais permitindo o pleno controle de balanceamento de carga na rede local. 1. Introdução O termo Terminais Inteligentes (em inglês Smart Clients) se refere a estações de trabalho com supressão de hardware, mas com poder de processamento local. São estações tipo thin clients, sem HD, que executam tarefas como uma estação desktop padrão. Entretanto, ao contrário das estações thin clients tradicionais, os Terminais Inteligentes têm capacidade de processamento local, o que permite ao projetista do sistema computacional a utilização de técnicas de balanceamento de carga entre o servidor e a estação como estratégia de otimização de recursos computacionais. Tais estações se apresentam como ideais para a criação de diversos ambientes computacionais, em especial para laboratórios de inclusão digital, pois agregam duas características essenciais: economia e flexibilidade. A economia é conseguida com a simplificação do hardware. A flexibilidade vem do uso de processamento local, tornando a estação capaz de executar diversas tarefas sem a sobrecarga da rede ou do servidor, além de facilitar enormemente a administração do sistema. O presente artigo apresenta a solução de Terminais Inteligentes desenvolvida dentro do projeto LibertasBR1 e tem como objetivo implementar uma solução de boot remoto com balanceamento de carga entre o servidor e as estações remotas. Concebido como uma personalização da distribuição GNU/Linux-Debian voltada para o setor público, o LibertasBR, desenvolvido pela UFMG, Faculdades Doctum e Prodabel, permite a instalação e configuração de Terminais Inteligentes de forma simples e prática. Em uma de suas utilizações mais relevantes, o LibertasBR está 1 www.libertasbr.dcc.ufmg.br 81 82 5° WSL / 5° FISL viabilizando a implantação de noventa e quatro Telecentros de Inclusão Digital em comunidades carentes do norte e nordeste de Minas, projeto Cidadão.NET. 2. Abordagens tradicionais Em ambientes, corporativos ou educacionais, de uso intensivo de recursos computacionais sem, entretanto, necessidade de alto poder de processamento, soluções do tipo Network Computer tem-se tornado gradativamente predominantes. Duas são as estratégias de abordagem comumentemente apresentadas neste caso. 2.1 Soluções baseadas em Terminais X A solução mais popular e que tem sido responsável por um crescente interesse na utilização do Linux em diversos setores, é a solução baseada em terminais X. Diversos projetos de software livre são dedicados a implementar soluções que fazem amplo uso das capacidades intrínsecas de protocolo de acesso remoto à interface gráfica de usuário Xwindow, veja [Leung(2004) , Brin(2004)]. Todos estes projetos podem ser caracterizados pela implementação de thin clients, em que todos os aplicativos são configurados para rodarem em servidores remotos. Talvez o projeto mais ativo com esta abordagem seja o LTSP – Linux Terminal Server Project (http://www.ltsp.org). Uma introdução ao projeto estará sendo apresentada no atual Fórum [McQuillan, 2004]. Entretanto, projetos alternativos estão em atividade: o Projeto Netstation, (http://netstation.sourceforge.net); o projeto Thinstation (http://thinstation.sourceforge.net), o projeto Diet-PC (http://diet-pc.sourceforge.net), o DRBL -Diskless Remote Boot in Linux, [Blake 2004], dentre outros. Utilizando soluções de boot via rede, como p.ex. a solução do projeto Netboot (http://netboot.sourceforge.net), Etherboot (http://sourceforge.net/projects/etherboot) ou, ainda, implementando soluções próprias, todos estes projetos possibilitam a utilização de estações sem disco de pouca memória RAM, deixando todos os aplicativos rodando no servidor. 2.2 Solução baseada em servidores VNC Uma solução menos tradicional foi recentemente relatada por Yu e Cimafranca [Yu et al., 2004]. A solução proposta consiste no desenvolvimento de uma distribuição Linux reduzida, com a implementação do sistema VNC – Virtual Network Computing (veja http://www.csd.uwo.ca/staff/magi/doc/vnc/index.html). Baseado no protocolo RFB – Remote Framebuffer, o VNC é, em essência, um sistema de terminal remoto, o qual propicia o acesso interativo ao ambiente de desktop de qualquer máquina na rede local ou pela Internet. Além disto, tanto os servidores como os visualizadores VNC estão portados para diferentes arquiteturas e sistemas operacionais. Assim o VNC permite a implementação de um sistema computacional multiplataforma inteiramente transparente. Rodando sob protocolo TCP-IP, o VNC pode ainda ser visualizado em máquina virtual java e mesmo browsers tradicionais. O VNC se comporta, para uma aplicação Linux, como se fosse o próprio servidor X, podendo, entretanto, ser visualizado remotamente, por uma máquina de arquitetura e sistema operacional diferentes, desde que esteja rodando o aplicativo de visualização do VNC adequado. Esta tecnologia é a base de soluções de integração de sistemas operacionais por metaframe, como a proposta proprietária recentemente ofertada no mercado pela Syst International (http://www.metasys.com.br). 3. Metodologia Existe uma desvantagem comum às estratégias de solução apresentadas acima. Ambas soluções são ancoradas na utilização de thin clients como Terminais Burros. Em muitos casos, entretanto, temos estações de trabalho com poder de processamento e disponibilidade de memória locais razoavelmente 5° WSL / 5° FISL bons. Nestes casos é um enorme desperdício utilizar estas estações apenas como terminais burros2, rodando apenas o Kernel do Linux, a biblioteca SVGA e o servidor X. Assim, a estratégia utilizada pelo presente trabalho foi a de adaptar o script DRBL, disponível para as distribuições Debian e Red Hat, visando: (a) Simplificar o script, retirando os ítens relacionados à configuração de cluster para processamento paralelo, já que esta funcionalidade não estava entre as especificações do projeto; (b) Criação de uma interface de instalação mais amigável, utilizando Dialog e Xdialog; (c) Implementação de opção para utilização do LDAP como alternativa ao NIS. 4. A implementação de Terminais Inteligentes A estrutura Cliente/Servidor é a base para a implementação de Terminais Inteligentes empreendida. O Servidores provêem os serviços DHCP, TFTP , NFS e LDAP ou NIS. O DHCP fornece aos clientes um endereço IP para a sua identificação na rede. O TFTP disponibiliza a imagem do Kernel bootável, possibilitando que as estações clientes inicializem o sistema operacional. O NFS exporta o sistema de arquivos e o NIS (LDAP) fornece os serviços de autenticação de usuários. Com a disponibilização desses serviços conseguimos um servidor que atenda um sistema computacional robusto e eficiente. Através dos serviços disponibilizados pelo servidor, cada estação cliente adquire sua própria configuração mantida no servidor para leitura e escrita. O Servidor disponibiliza um sistema GNU/Linux básico, usando apenas alguns arquivos compartilhados, incluindo as pastas /bin, /sbin, / usr e /lib. O sistema passou a ser denominado RBL, Remote Boot LibertasBR. Sua instalação é feita através de telas simples e intuitivas, onde o usuário pode fazer toda configuração, seguindo apenas um manual simples e prático. Foi desenvolvido um live CD como base de instalação, como a que foi feita pelo sistema Pequinzilla [Blake, 2004], onde as imagens das estações e do servidor são criadas automaticamente, com uma configuração personalizada para o LibertasBR. Os scripts do RBL tem por finalidade montar os seguintes componentes: RBL Server Servidor provê os serviços de DHCP, TFTP, NFS e NIS (LDAP). Os clientes, através do endereço IP, carregam o kernel e suas configurações através da rede. Durante o procedimento de boot, o cliente monta o RBL Client Template usando o serviço de NFS e o NIS (LDAP) para a autenticação e manipulação das informações dos usuários. RBL Client Cada estação da rede RBL tem sua própria configuração, mantida em seus diretórios específicos /etc, /root e /var, armazenada no servidor para leitura e escrita de seus clientes. RBL Client Template Nada mais é que um sistema Debian básico criado através do comando debootstrap, usando apenas alguns arquivos compartilhados, incluindo as pastas /bin, /sbin, /usr e /lib. Ele cria o template dos clientes copiando toda árvore de diretórios do servidor e utiliza o comando chroot para instalar os pacotes necessários para os clientes. Como o servidor e os clientes não têm a mesma árvore e configurações do sistema Debian, os computadores não necessitam ter a mesma configuração de hardware. 2 Tal fato foi reconhecido pelos desenvolvedores do LTSP. Assim, um dos pontos que mereceu maior atenção dos desenvolvedores do LTSP na elaboração de sua versão 4.0 foi exatamente o de tornar mais fácil a instalação de aplicativos locais. Entretanto, as opções da estrutura de sistemas de arquivos propostas pelo projeto tornam esta tarefa desnecessariamente complexa. 83 84 5° WSL / 5° FISL 5. Análise de Resultados Uma das principais características apresentadas é a flexibilidade oferecida pelo RBL para a criação e administração de ambientes computacionais. Assim , pode-se conceber desde ambientes onde todas as aplicações sejam executadas nas estações, até sistemas onde todas as aplicações rodam remotamente no servidor. Ambientes com balanceamento de carga, com algumas aplicações rodando no servidor e outras nas estações, são configurados pela simples instalação de aplicativos em diretórios compartilhados ou não, respectivamente. Aplicações exclusivamente locais são instaladas e configuradas em diretórios específicos das estações, como /etc, /root, /var e, em especial, /usr/local. Aplicações remotas são executadas a partir de diretórios comuns a todas as estações, como é o caso do /opt, /bin, /sbin, /usr/bin. Um exemplo pode ser dado com a utilização de dois aplicativos muito comuns: Mozilla e OpenOffice. O primeiro deles pode ser executado remotamente a partir do diretório /usr/sbin, comum a todas as estações. O segundo pode ser instalado localmente no diretório /usr/local/openoffice, pois se trata de um aplicativo pesado, podendo aumentar o tráfego da rede, prejudicando a performance do sistema. 6. Conclusão A estratégia de terminais inteligentes traz diversas vantagens para o planejamento de um ambiente computacional, em especial para atender a atual demanda de instalação de Telecentros e laboratórios educacionais. O script RBL é mais uma alternativa em Software Livre possibilitando a criação de ambientes computacionais baratos, funcionais e eficientes, capazes de atender com qualidade as necessidades dos mais diversos segmentos. 7. Referências McQuillan, Jim, (2004) “Introduction to the Linux Terminal Server Projet (LTSP)”, In: V Fórum Internacional do Software Livre, palestra agendada para 3/6/2004. Veja também http://www.ltsp.org Yu, William and Cimafranca, Dominique (2004) “Desktop Guerrilla Tactics: a Portable Thin Client Approach”, http://www.linuxjournal.com/article.php?sid=7109, Abril. Leung, C. T., (2004), “A computer Lab with no Windows, part I”, http://www.linuxjournal . com/article.php?sid=7418. Fevereiro. Leung, C. T., (2004), “A computer Lab with no Windows, part II”, http://www.linuxjournal . com/article.php?sid=7419. Fevereiro. Brin, Leon (2004) “Linux-based X Terminals with XDMCP” http://www.linuxjournal . com/article.php?sid=6713. Maio. Blake, kuo-Lien Huang, Steven Shiau and H. T. Wang, “Diskless Remote Boot Linux” , (2004) http://drbl.nchc.gov.tw/ Agradecimentos Trabalho de desenvolvimento tecnológico realizado em colaboração com a equipe LibertasBR, sob a coordenação dos profs. Wagner Meira, Dorgival Neto e Renato Ferreira, DCC-UFMG. Suporte financeiro: Instituto Doctum - Educação e Tecnologia e CNPq -Conselho Nacional de Pesquisa. 5° WSL / 5° FISL Sessão Técnica 6 GERENCIAMENTO DE REDES & B2B 85 86 5° WSL / 5° FISL 5° WSL / 5° FISL Um Sistema Simples de Gerenciamento Integrado de Diretórios Online — OpenLDAP, NIS, Samba Diego Luı́s Kreutz1∗, Cleverton Marlon Possani2 1 Núcleo de Ciência da Computação — NCC 2 Laboratório de Sistemas de Computação — LSC Universidade Federal de Santa Maria — UFSM CT, Campus Universitário – 97105-900 Santa Maria, RS {kreutz,possani}@inf.ufsm.br Abstract. The network administration is an important task every time more present in almost any organization. Services like user data and authentication systems management are essential parts of the networks. The goal of this work is present a simple and practical system for an integrated and sinchonized management of various information databases, as OpenLDAP, NIS and Samba. Resumo. A administração de redes é uma tarefa importante e cada vez mais presente em praticamente qualquer organização. Serviços como o gerenciamento de dados de usuários e sistemas de autenticação são partes essenciais das redes. O objetivo desse trabalho é apresentar um sistema simples e prático que possibilita o gerenciamento integrado e sı́ncrono de diversas bases de informação, como o OpenLDAP, NIS e Samba. 1. Introdução A administração de redes é uma tarefa importante e presente em praticamente qualquer curso ou laboratório de ensino de computação. Ao longo dos tempos inúmeras ferramentas e utilitários foram desenvolvidos com o intuito de tornar o gerenciamento mais simples e prático. O gerenciamento de sistemas de autenticaç ão e controle de usuários são algumas das partes crı́ticas e normalmente dinâmicas em redes locais. Em uma rede local podem existem diretórios online como o LDAP1 e o NIS2 . Além disso, é comum existir uma base de informações Samba, que realiza a integração e unificação entre sistemas Unix e Windows. Com o passar do tempo, inúmeras ferramentas e utilitários de administraç ão de serviços como o LDAP, NIS e Samba foram criados. Alguns baseados em linha de comando e outros em interfaces gráficas. Todos esses sistemas possuem suas particularidades. No entanto, poucos são os sistemas que prezam pela simplicidade, facilidade de uso e adaptação e integração do gerenciamento desses sistemas. O objetivo é apresentar um sistema simples, prático e que possibilita um gerenciamento integrado de diretórios online como o LDAP, NIS e Samba. Sua concepção foi baseada em necessidades de laboratórios de ensino e pesquisa. Estes têm normalmente uma dinamicidade relativamente grande de manutenção desses serviços. A cada semestre, por exemplo, é comum a necessidade de cadastro de novos grupos de usuários. O sistema aqui apresentado possui alguns recursos e funcionalidades que facilitam o cadastro e manutenção de bases de informação de usuários em ambientes desse gênero. As seções seguintes apresentam uma breve abordagem sobre ferramentas de administração de serviços de informação sobre usuários de redes locais, o sistema criado e a conclusão. 2. Ferramentas de gerenciamento do LDAP, NIS e Samba O gerenciamento de diretórios online é uma necessidade antiga entre administradores de redes. Ferramentas como o Swat3 [Team, 2004], Webmin [Cameron et al., 2004], gerenciador de cadastros LDAP4 ∗ Bolsista CNPq. Lightweight Directory Access Protocol (protocolo leve de acesso a diretórios) Network Information Service (serviço de informação de rede) 3 Samba Web Administration Tool (ferramenta Web de administração do Samba) 4 LDAP Account Manager (gerenciador de registros LDAP) 1 2 87 88 5° WSL / 5° FISL [Duergner et al., 2003], o pacote yp-tools [Kukuk, 2003], ferramenta gráfica de configuração do Samba5 [Sam, ], gsmb [[email protected], 1999] e JXplorer [Betts, 2002] auxiliam os administradores de rede a realizar tarefas de manutenção em serviços como o Samba, NIS e LDAP. A maior parte destas ferramentas são gerenciáveis por interface gráfica. No entanto, elas carecem no que diz respeito a integração e ao gerenciamento de ambientes como os que figuram em redes locais de laboratórios de computação. Cada uma dessas ferramentas possibilita o gerenciamento de alguns serviços. Possuem caracterı́sticas distintas e bastante particulares. Utilitários como o JXplorer e o LDAP Account Manager possibilitam o gerenciamento de hieraquias e contas de usuários em diretórios LDAP. Já ferramentas como o Swat e o gsmb facilitam a manipulação de contas em servidores Samba. O pacote yp-tools inclui ferramentas para gerenciar diretórios do NIS. Com excessão do yp-tools, as demais ferramentas possuem interfaces gráficas simples e amistosas. Porém, dependendo do tipo de operação desejada, essas interfaces tornam-se pouco práticas e flexı́veis. O Webmin é uma ferramenta mais completa. Ela disponibiliza uma série de funcionalidades administrativas. Entretanto, no que diz respeito a gerenciamento de diretórios online, como as demais ferramentas, carece de flexibilidade e agilidade em alguns casos. É nesse sentido que surgiu a idéia de um sistema de gerenciamento integrado de contas de usuários do LDAP, NIS e Samba. Além de possibilitar esse gerenciamento, de forma simples e prática, disponibiliza funcionalidades extras que podem agilizar o cadastro de conjuntos de novos usuários. Devido a sua simplicidade, esse sistema também é facilmente extensı́vel e adaptável a variados tipos de ambientes e especificidades de domı́nios administrativos. 3. O sistema de gerenciamento As contı́nuas e muitas vezes aceleradas mudanças nos ambientes educacionais, comerciais, culturais, governamentais e outros, fazem crescer de forma praticamente exponencial a importância da informação e do gerenciamento desses dados. Uma ferramenta de integração LDAP, NIS e Samba, para a administração de redes, é essencial para organizar, distribuir e sincronizar de forma segura e rápida as informações necessárias para uso ininterrupto dos sistemas e usuários da organização. O sistema foi criado a partir de necessidades gerenciais do NCC. Como era necessário manter duas bases independentes, porém iguais, de usuários e, além disso, em todo inı́cio de sementre havia a tarefa de cadastrar uma nova turma de usuários, decidiu-se criar um sistema simples e prático, porém, suficientemente capaz de facilitar a administração e sincronizaç ão dos dados do OpenLDAP e do Samba. A figura 1 apresenta algumas possibilidades de estruturaç ão do sistema para o gerenciamento de uma ou mais bases de dados, de forma integrada e sincronizada. Onde o OpenLDAP e o NIS são utilizados para gerenciar e autenticar usuários em sistemas Unix, logo, são excludentes. O Samba é utilizado para autenticar usuários e compartilhar dados em ambientes Windows. OpenLDAP A Samba OpenLDAP Sistema C Samba B Sistema Samba D NIS Sistema Sistema OpenLDAP E Samba Sistema Figura 1: Ilustraç ão de algumas possibilidades de utilizaç ão e funcionamento: A) gerenciando apenas a base de informaç ões do OpenLDAP; B) manipulaç ão somente da base de informações do Samba; C) gerenciando de forma integrada e sincronizada os dados do Samba e do OpenLDAP; D) administraç ão integrada e sı́ncrona de dados entre o NIS e o Samba; E) gerenciamento integrado do OpenLDAP e do Samba, com integraç ão parcial entre os dois. 5 Samba GUI Configuration Tool (ferramenta gráfica de configuração do Samba) 5° WSL / 5° FISL As arquiteturas A e B representam o sistema sendo utilizado para gerenciar apenas uma base de informação. Já as arquiteturas C e D ilustram sistemas paralelos sendo gerenciados de forma integrada e sı́ncrona, ou seja, os cadastros e manipulaç ões de dados de usuários são propagados para as duas bases de dados, independentes. A arquitetura E é carasterizada por um pequeno diferencial em relação a arquitetura C. Nesse caso, é também realizado um gerenciamento sı́ncrono das bases de informação. Porém, o Samba armazena seus dados na banco de dados do OpenLDAP. Essa arquitetura poderia ser reduzida ao exemplo A, com apenas alguns ajustes do sistema de gerenciamento integrado. Mas, por conveniência, praticidade e padronizaç ão de interface de gerenciamento, é interessante manter uma organizaç ão semalhante ao esquema C. No entanto, uma entrada LDAP poderá ser editada e alterada normalmente, podendo afetar indiretamente os dados visualizados pelo Samba, ou seja, é um caso onde a alteração ou inclusão de dados no OpenLDAP poderá ser refletida automáticamente no Samba, pois este armazena seus dados no OpenLDAP. Todas essas arquiteturas são configuráveis no sistema. Isso é facilitado devido ao fato da concepção do sistema ter sido baseada em principios como simplicidade, legibilidade e documentação. As duas próximas seções apresentam algumas das caracterı́sticas e funcionalidades do sistema. A primeira apresenta as funcionalidades mais comuns e padrão, enquanto que a segunda apresenta algunas funcionalidades mais especı́ficas ao sistema. 3.1. Funcionalidades padrão O sistema foi desenvolvido para gerenciar de forma integrada diferentes manipuladores de informação, como o OpenLDAP e o Samba. O objetivo é integrar e sincronizar os dados de bases distintas. Unificar senhas, logins e tornar o gerenciamento mais prático e simples estão entre as metas do sistema. Entre as funcionalidade padrão do sistema podem ser citadas: inclusão e remoção interativa de um usuário, alteração de dados cadastrais de um usuário, troca de senha, inclusão e remoção de grupos, listagem de usuários e grupos, listagem de dados especı́ficos de um determinado grupo ou usuário, listagem dos usuários que pertencem a um determinado grupo (o que pode gerar mais de uma consulta a uma base OpenLDAP), bloqueio e liberação de usuários, troca de login, troca de shell, listagem de usuários bloqueados, listagem de usuários com senhas expiradas e inclusão e remoção de usuários em grupos. Grande parte dessas funcionalidades estão presentes em praticamente qualquer sistema de gerenciamento de diretórios online como o OpenLDAP, NIS e Samba. 3.2. Funcionalidades extras Esse sistema, além das funcionalidades apresentadas na seção anterior, possui ainda alguns recursos extras. A inclusão de conjuntos de usuários, a geração de arquivos de configuração de leitores de email e a inclusão de dados e modelos padrões nas homes dos usuários figuram entre as funcionalidades especiais. A partir de um único arquivo de texto, simples, é possı́vel gerar o cadastro simultâneo de um número qualquer de usuários. Para isso basta dados como login, nome completo, grupo e diretório base da home. Na sequência é apresentado um exemplo do como seria esse arquivo de entrada para o cadastro de inúmeros usuários de forma rápida e simples. # usuario | nome | grupo | diretório base banana|Banana Verde|administrador|/home/admin laranja|Laranja do Agreste|grp2004|/home/usuarios mato|Gato do Mato|especial|/home/visitantes Na sequência aparece um exemplo de um arquivo de saı́da do cadastro desses supostos usuários. # identificador | senha randômica | identificador login nome do usuário ---------------------------------------------------------------------------------------------| 01 | YuI8JkH | 01 banana NOME: Banana Verde | ---------------------------------------------------------------------------------------------| 02 | MTb32YA | 02 laranja NOME: Laranja do Agreste | ---------------------------------------------------------------------------------------------- 89 90 5° WSL / 5° FISL | | 03 mato NOME: Gato do Mato | ---------------------------------------------------------------------------------------------03 | aPn9lgO Esse resultado final será convertido em um arquivo ps6 , pronto para ser impresso. O impresso será separado em dois. Uma parte contendo identificador e senha e a outra parte contendo identificador e login e nome do usuário. Os dados estão organizados por ordem alfabética do login. Cada usuário receberá a sua senha provisória. Para tanto, basta destacar a senha do identificador e entrega-lá ao usuário. O sistema, além de gerar a conta de um usuário e uma senha randômica, gera também o diretório raiz (home) com algumas configurações e dados padrão. São criados os arquivos de configuração básica do shell, com alguns exemplos de uso, o diretório public html com exemplos simples e documentados de páginas em html e php, é enviado um e-mail de boas vindas e informações sobre o uso da rede, bem como é criada uma configuração automática para leitores de e-mail como o pine. Desta forma o usuário recebe instruções básicas e essenciais de utilização e normas da rede. O que pode reduzir sensivelmente as questões e dúvidas remetidas aos administradores da rede por usuários leigos. No processo de geração do cadastro será avaliado a validade dos grupos e logins. Caso algum grupo ainda não esteja cadastrado, será indicado a necessidade de cadastro do mesmo. Se algum login estiver duplicado no sistema também será alertado a necessidade de modificar o(s) login(s) problemático(s). O administrador pode ainda optar por uma geração automática de logins. Neste caso, o sistema tentará formar um login a partir do sobrenome e das iniciais dos demais nomes. Caso não seja possı́vel, ele tentará opções como apenas as inicias do nome ou apenas o primeiro nome. 4. Conclusão Muitas vezes o gerenciamento de sistemas de informação e autenticaç ão de redes locais é uma tarefa pouco prática. É comum haver mais de uma base de dados de usuários da rede. Isso por que normalmente são utilizados sistemas como o NIS, ou o OpenLDAP, e o Samba para a autenticação de sistemas Unix e Windows, respectivamente. Logo, um sistema que possibilite um gerenciamento sı́ncrono e integrado é interessante em um ambiente desse gênero. O presente artigo apresentou um sistema simples e prático para realizar o gerenciamento integrado de diferentes bases de informação, como o OpenLDAP, NIS e Samba. Além disso, foram mostradas algumas caracterı́sticas que podem ser interessantes e facilitar a vida de administradores de laboratórios de computação em perı́odos como o inı́cio de semestre, onde existe uma probabilidade bastante grande de vários usuários novos terem de ser cadastrados. [Kreutz and Possani, 2004] Referências Samba GUI Configuration Tool 1.0 Beta. http://www.eatonweb.com/samba/. Betts, C. (2002). JXplorer - Java LDAP Browser. http://jxplorer.org. Cameron, J., Klein, G., Alikhodjaev, A., Egeling, J., Waasdorp, H., III, T. J. M., and Lo, K. (2004). Webmin. http://www.webmin.com/. Duergner, M., Gruber, R., Lutz, T., and Walchshäusl, L. (2003). LDAP Account Manager. http: //lam.sourceforge.net/. [email protected] (1999). Gsmb - provides a graphycal interface allowing simplified management of smbpasswd. http://www.culte.org/projets/developpement/gsmb/. Kreutz, D. L. and Possani, C. M. (2004). SuperSimples: Um Sistema Simples e Prático para o Gerenciamento Integrado de Diretórios Online, sob licença GPL. http://www.inf.ufsm.br/ ˜kreutz/downloads/SuperSimples.tar.gz. Kukuk, T. (2003). Linux NIS Tools: yp-tools. http://www.linux-nis.org/nis/yp-tools/. Team, S. (2004). Swat - Samba Web Administration Tool. http://us2.samba.org/samba/ samba.html. 6 PostScript (linguagem de descrição em alto nı́vel de páginas/telas/imagens impressas) 5° WSL / 5° FISL Uma Ferramenta para a Administração de Serviços de Diretório Distribuídos Baseados no OpenLDAP Fernando William Cruz, Giovanni Almeida Santos, Raissa Dantas Freire de Medeiros, Lucas Araújo Pereira, Márcio Carlos Braga, Roberto Diener Universidade Católica de Brasília - UCB QS 07 Lote 01 – Águas Claras – 71966-700 – Taguatinga – DF – Brasil {fwcruz,giovanni,raissad}@ucb.br, [email protected], [email protected], [email protected] Abstract. The LDAP free administration tools present some limitations. In general, they allow object management in a centralized directory server, but they do not provide a suitable manner to deal with distributed directories. This paper proposes a free administration tool for an OpenLDAP-based distributed directory service, which allows the graphical management of objects, partitions, replicas, schemas and ACLs, without the direct access to OpenLDAP configuration files by the service administrator. Resumo. As ferramentas livres para administração de serviços de diretório LDAP atualmente existentes são bastante limitadas, permitindo apenas a gerência de objetos em servidores isolados. Esse artigo propõe uma ferramenta para administração de serviços de diretório distribuídos baseados no OpenLDAP. Seu uso permite gerenciar graficamente não apenas objetos, mas também partições, réplicas, esquemas e ACLs sem a necessidade de manipulação direta dos arquivos de configuração do diretório. 1. Introdução Serviço de diretório é uma tecnologia que serve como suporte para a realização de atividades tais como nomeação, localização e segurança, dentre outras, relacionadas à gestão da infraestrutura de recursos (usuários, impressoras, servidores, etc.) nas organizações. Nesse contexto, é possível perceber diversos tipos de serviços de diretórios. Dentre esses, destacam-se o X.500, que faz parte do modelo de referência OSI/ISO [1], e o LDAP [2], que é considerado um padrão de facto para serviços de diretório na Internet. Esses protocolos ganharam aceitação em relação aos demais pelo fato de serem padrões abertos e de permitirem a incorporação completa de serviços que sempre foram realizados por sistemas operacionais de rede [8]. Existem diversas implementações desses protocolos disponíveis atualmente, mas, no mundo do código aberto, a implementação do LDAP de maior aceitação é o OpenLDAP [3]. Tal implementação é bastante utilizada em plataformas Linux para construção de serviços de diretório distribuídos. Em comparação com outras soluções de diretórios, o OpenLDAP apresenta um bom grau de tolerância a falhas e um bom desempenho [6]. Contudo, administrar um serviço de diretório baseado no OpenLDAP ainda é uma tarefa complexa. Há diversas ferramentas disponíveis – dentre as quais se destaca o phpLDAPadmin [4] contudo, elas apresentam algumas limitações: i. Não facilitam a configuração do serviço de diretório, a qual é feita diretamente via arquivos que possuem uma sintaxe específica. Isso inclui a definição de esquemas, configuração de ACLs (Access Control Lists), administração de réplicas e partições. 91 92 5° WSL / 5° FISL ii. Em geral, as corporações possuem objetos espalhados fisicamente em diferentes servidores, mas não há o suporte adequado para a administração gráfica de objetos distribuídos. Não é possível, por exemplo, que um administrador altere, remova ou acrescente objetos numa partição remota se ele não é usuário local daquela partição, mesmo que ele tenha autorização para tal. Na verdade, essa é uma característica do LDAP, mas há mecanismos para tornar a administração de objetos distribuídos transparente [3]. iii. Não suportam autenticação de usuários em um serviço de diretório distribuído. Sendo assim, esse artigo propõe uma ferramenta gráfica para a administração de serviços de diretório baseados no OpenLDAP, tendo como foco a gerência de objetos, partições, réplicas e esquemas em um ambiente distribuído. Na próxima seção, será detalhada a arquitetura da solução proposta. Nas seções 3 e 4, são descritos os módulos que compõem a solução e suas funcionalidades. Na seção 5, são descritos trabalhos futuros já vislumbrados. 2. Arquitetura da Ferramenta de Administração de Diretórios Distribuída (ADD) Visando resolver os aspectos abordados na seção anterior com relação à melhoria da administração do OpenLDAP e a sua gestão em ambientes distribuídos, propõe-se o ADD1 , cuja arquitetura está descrita na Figura 1. Figura 1. Arquitetura da Ferramenta de Administração de Diretórios Distribuída Na Figura 1, os objetos da árvore de diretório estão distribuídos em duas partições - 01 e 02, cada uma suportada por um anel de réplica (que emprega um esquema de replicação single-master 1 O ADD faz parte do GATI (Gerência de Ambiente de Tecnologia da Informação), um ambiente de administração integrado que inclui outros módulos (que não são objeto desse documento) e está sendo desenvolvido pelo CESMIC/UCB em convênio com a Itautec. 5° WSL / 5° FISL [5]), cujo controle está centralizado num único ponto. Em relação ao anel, um dos servidores desempenha o papel de mestre (master), aceitando operações de escrita e leitura, e os demais representam réplicas apenas de leitura (slaves). O mestre é responsável pela atualização das réplicas, de forma a garantir a sincronização da base de objetos entre eles. Todos os servidores de cada anel de réplica têm o OpenLDAP instalado. A arquitetura proposta é formada por dois módulos principais, de acordo com o que está descrito a seguir: ADD ADMIN: Instalado num servidor que possibilita efetuar operações administrativas sobre o serviço de diretórios via WEB. Composto de funcionalidades que tratam da interface com o administrador (s1, s2 e s3) e por uma API de gerência (representada na Figura 1 por f1, f2 e f3). As funcionalidades associadas a essa interface fazem chamadas ao ADD API em atendimento às requisições do usuário. O ADD API, por sua vez, faz requisições aos servidores de diretório via LDAP ou, quando isso não é suficiente, invoca o ADD CORE diretamente. ADD CORE: Composto de funções que executam do lado dos servidores de diretório. Seu objetivo é realizar operações sobre o serviço OpenLDAP propriamente dito, envolvendo tarefas como reinicialização do servidor OpenLDAP e modificação de arquivos de configuração. O ADD ADMIN usa a linguagem Java (e tecnologias associadas, como JSP e Servlets) na sua implementação, enquanto o ADD CORE é baseado em C. A seguir, serão descritas as principais funcionalidades do ADD ADMIN e ADD CORE. 3. ADD ADMIN Além da interface com o administrador, o ADD ADMIN possui uma API que é composta por cinco sub-módulos, a saber: Objeto Admin - responsável pela administração dos objetos armazenados no diretório. Permite que sejam feitas operações de inclusão, alteração e remoção de objetos, independente da partição em que estejam localizados. Além disso, objetos podem ser copiados ou movidos dentro da árvore, inclusive para pontos localizados em partições distintas. Partição Admin – provê funcionalidades associadas à gerência de partições do serviço de diretório. Esse sub-módulo permite a criação e remoção de partições, cuidando da redistribuíção dos obje tos entre as mesmas. Replica Admin – permite administrar os servidores que compõem os anéis de réplica que suportam as partições, podendo incluir, remover e visualizar status dos servidores, converter master em réplica e vice-versa, reiniciar o serviço OpenLDAP, entre outras atividades. ACL Admin – facilita a administração das permissões que os usuários têm sobre os objetos contidos no diretório. Tais permissões podem ser aplicadas num objeto específico, sendo automaticamente propagadas para todas as sub-árvores ou sub-partições existentes, promovendo a herança de direitos na árvore distribuída. Além disso, abstrai a sintaxe do OpenLDAP para a configuração de ACLs. Esquema Admin – provê a gerência de esquemas do serviço de diretório, permitindo que estes possam ser incluídos, removidos ou modificados. As modificações somente podem ser feitas na partição raiz do diretório e são automaticamente propagadas para as demais partições, com o objetivo de manter a consistência das informações. Nas funcionalidades acima, são resolvidas as questões inicialmente apontadas como restrições das ferramentas administrativas disponíveis. Está embutido no ADD um mecanismo de localização de objetos que permite o login do administrador num serviço distribuído, independente da partição da qual ele faz parte. Operações sobre objetos de partições diferentes daquela em que o administrador foi 93 94 5° WSL / 5° FISL inicialmente autenticado são possíveis via SASL Proxy Authorization [2] [5]. Os sub-módulos do ADD API (em conjunto com o ADD CORE) também dispensam a manipulação direta dos arquivos de configuração do OpenLDAP por parte do administrador. A lista completa das funcionalidades e um protótipo da interface do ADD podem ser encontrados em [7]. 4. ADD CORE O ADD CORE interage diretamente com os servidores OpenLDAP, em atendimento a chamadas remotas do ADD API. Nesse sentido, é ele quem efetivamente realiza modificações nos arquivos de configuração do serviço de diretório. Algumas de suas funcionalidades incluem: configurar partições, acrescentar servidores num anel de réplica, incluir diretivas de esquemas e de ACLs no arquivo slapd.conf [3], dentre outras. 5. Trabalhos Futuros Numa primeira fase a ser concluída em setembro próximo, todas as funcionalidades descritas neste documento estarão implementadas. Além disso, alguns melhoramentos são vislumbrados desde já para uma outra fase a ser iniciada em outubro. O principal deles é o suporte a várias partições em uma única máquina servidora e à administração das mesmas. Com relação à gerência de esquemas, esta deverá incluir checagem automática de integridade, evitando que o administrador realize operações indevidas (por exemplo, a alteração de um esquema que afeta objetos já existentes no diretório). A gerência de réplicas fornecerá suporte ao esquema multimaster [2] [5] em adição ao esquema single master. 6. Agradecimentos Agradecemos ao SERPRO pelo provimento de informações indispensáveis à realização desse trabalho durante a fase de levantamento de requisitos da solução aqui proposta. Agradecemos ainda a Itautec pelo apoio financeiro e parceria junto a Universidade Católica de Brasília. 7. Referências Bibliográficas [1] Yeong, W., Howes, T. and Kille, S. X.500 Directory Access Protocol, RFC 1487, IETF, July 1993. [2] Wahl, M., Coulbeck, A., Howes, T. and Kille, S. Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions, RFC 2252, IETF, December 1997. [3] The Open Source LDAP suite, http://www.openldap.org. Fevereiro, 2004. [4] The phpLDAPadmin tool, http://phpldapadmin.sourceforge.net. Fevereiro, 2004. [5] Howes, T. A., Smith, M. C., Good, G. S. Understanding and Deploying LDAP Directory Services, 2nd Edition, Addison-Wesley, 2003. [6] Thornton, E. J., Mundy, D. and Chadwick, D. W. A Comparative Performance Analysis of 7 Lightweight Directory Access Protocol Directories, IS Institute, University of Salford, Inglaterra, May 2003. [7] Medeiros, R., Santos, G. , Cruz, F., Pereira, L. and Diener, R. Especificação Técnica – Serviço de Diretórios, Relatório Técnico 04-002B, Centro de Excelência em Servidores de Missão Crítica (CESMIC), Universidade Católica de Brasília, Abril 2004. [8] Tanembaum A. S., Steen M. Distributed Systems Principles and Paradigms.Prentice Hall, 2002. 5° WSL / 5° FISL Projeto e-market: Implementando comércio eletrônico de empresa para empresa usando software livre Francisco Assis Nascimento1, Diogo Santinon1, Gabriel David1, Lucas C. Parlatto1 Faculdades de Taquara - FACCAT Faculdade de Informática de Taquara – FIT 95600-000 – Taquara – RS – Brasil {assis,diogo,gabriel,parlatto}@e-market.org.br Abstract. This work presents a business to business (B2B) electronic commerce portal developed at the scope of the e-market project. The objective of the project is to develop technologies and tools based on free software to be used in the implementation of e-commerce. As a first stage of the project, it was implemented a B2B portal using free tools (e.g. Apache, PHP, and PostgreSQL. The portal is called e-market (www.e-market.org.br) and its source code can be downloaded from it. The implemented features of the portal already allows that some kind of transactions (e.g. direct and reverse auctions) be performed electronically using the Internet as well as the exposition of products. Resumo. Este trabalho apresenta um portal para comércio eletrônico de empresa para empresa (B2B) desenvolvido no escopo do projeto e-market. O projeto tem como objetivo desenvolver tecnologias e ferramentas baseadas em software livre para serem empregadas na implementação de comércio eletrônico. Como uma primeira fase do projeto, foi implementado um portal B2B usando ferramentas como Apache, PHP e PostgreSQL. O portal é chamado e-market e o código fonte pode ser obtido diretamente a partir dele. Os recursos oferecidos pelo portal já permitem que empresas possam expor seus produtos e, principalmente, interagir, realizando alguns tipos de transações comerciais eletronicamente via Internet. 1. Introdução Como em qualquer região industrial, existe um grande volume de transações comerciais entre as várias empresas da região do Vale do Paranhana, no estado do Rio Grande do Sul. Muitas dessas transações fazem parte da cadeia do ciclo produtivo de várias indústrias e envolvem desde os fornecedores de matéria-prima até os distribuidores e vendedores dos produtos industrializados. Geralmente, essas transações são realizadas, por meio de um processo manual demorado e pouco eficiente. A empresa que precisa de um determinado produto recebe documentos dos representantes de vendas de seus fornecedores, escolhe as ofertas que parecerem mais interessantes e encaminha papéis com os pedidos de compra. Durante esse processo, nem sempre as melhores decisões são tomadas, seja por falta de melhores informações sobre os produtos, seja pela falta de uma maior integração entre as empresas, o que não permite uma avaliação efetiva de todas as opções disponíveis no mercado. Além disso, muitas pequenas empresas que poderiam participar deste processo acabam por não fazê-lo devido a sua pouca visibilidade no mercado. 95 96 5° WSL / 5° FISL Com o surgimento de redes de computadores de baixo custo (mais especificamente, da Internet) que oferecem recursos de comunicação e automação bastante eficientes, tem-se uma interessante alternativa para a melhoria da infraestrutura do comércio de empresa para empresa: o comércio eletrônico (electronic commerce) [2]. O comércio eletrônico de empresa para empresa (business-to-business electronic commerce ou B2B e-commerce) usa os recursos da Internet para realizar a integração da cadeia de fornecedores em um dado ramo de negócios, a propaganda direta entre empresas e os mercados eletrônicos [5]. O e-commerce é também um meio que possibilita a troca de informações entre a empresa e seus clientes e fornecedores, beneficiando todos os envolvidos. [3] O projeto e-market, realizado na FIT - Faculdade de Informatica de Taquara, com financiamento da própria Faculdade e do Governo do Estado do Rio Grande do Sul por meio da Secretaria de Ciência e Tecnologia, se propõe justamente a desenvolver e disseminar tecnologias livres e abertas para a implementação de comércio eletrônico de empresa para empresa. Dessa forma, um dos principais objetivos do projeto e-market é a implementação de um portal, onde todas as empresas participantes disponham de um espaço para não somente exporem os seus produtos como principalmente interagirem, realizando suas transações comerciais eletronicamente via Internet. Aliás ainda mais importante, toda a tecnologia desenvolvida pelo projeto fica à disposição de todos para que possam implantá-la onde e como desejarem, ou mesmo aprimorá-la. Esse trabalho apresenta o portal do projeto e-market, seus recursos e como eles podem ser utilizados pelas empresas, além do estado atual do projeto e as perspectivas futuras. 2. Portal do projeto e-market O portal do projeto e-market (disponível em http://www.e-market.org.br) é um mercado eletrônico que se destina aos negócios entre empresas. As empresas interessadas em participar do projeto acessam o portal, efetuam um cadastramento e automaticamente, passam a dispor de uma página da empresa com os dados fornecidos no cadastro. Ela possui uma vitrine para exibir seus principais produtos, além de um catálogo completo de todos eles, onde podem ser registradas informações sobre cada produto, incluindo fotos e com a opção de se incluir o preço ou deixar sob consulta. Há um espaço para que a empresa insira seu logo e imagens de divulgação (banners), personalizando assim ainda mais o seu espaço no e-market. A figura 1 a seguir mostra a página principal do portal e-market. Figura 1. Portal e-market Figura 2. Cotações 5° WSL / 5° FISL O portal e-market oferece recursos para empresas realizarem alguns tipos de transações comerciais, dentre elas: cotação, leilões direto e reverso. 2.1 Cotações Neste serviço, como mostra a figura 2 acima, a empresa precisa descrever o produto desejado, a quantidade que precisa, a data limite que as empresas terão para dar suas ofertas, também podendo restringir os pedidos por categoria, cidade, estado e país, de tal maneira que as empresas que não se enquadrem nas restrições não terão acesso a essa cotação. Para responder a cotação, existe uma página onde cada empresa poderá fazer a sua oferta para cada pedido de cotação disponível, informando o preço, as condições e se necessário alguma observação adicional. A empresa que fez o pedido de cotação terá o total controle sobre as respostas para seus pedidos: se alguma satisfaz a seu interesse, ela poderá fechar negociação a qualquer momento. Caso decorrido o prazo limite e não for fechada a negociação, esta será dada como não finalizada e assim não efetivada. Efetuando-se qualquer operação será enviado uma mensagem via correio eletrônico e uma mensagem via caixa postal do próprio portal e-market para todas empresas que satisfazerem as opções de restrição, informando os dados da cotação. O aviso sobre o fechamento de negociações também é realizado dessa maneira, sendo avisadas as empresas compradora e fornecedora. 2.2 Leilões diretos e reversos As empresas contam com duas opções de leilões no portal e-market: direto e reverso. Para incluir uma oferta de leilão direto (venda de um produto através de leilão) a empresa deverá selecionar um de seus produtos, a quantidade, o preço minímo, a data limite e as restrições para o lance. Para efetuar os lances, as empresas deverão dar o valor que pretendem pagar pela oferta, e se necessário podem preencher um quadro com observações. Para incluir uma oferta de leilão reverso (compra de um produto através de um leilão), a empresa deverá descrever o produto, a quantidade e a data limite, e informar o preço máximo. As empresas interessadas em dar algum lance reverso tem que fornecer o valor para aquela oferta de leilão, e se quiser alguma observação adicional. A empresa que fez a oferta de leilão poderá fecha-lo o leilão quando chegar a data limite, escolhendo o melhor lance de acordo com sua análise. Como nas cotações, as empresas terão o total controle sobre as ofertas do leilão, podendo visualizar todos os lances dados. Mas, decorrido o prazo limite, a transação será dada como não realizada caso não tenha sido fechada a negociação pela empresa que ofereceu o leilão. Também como nas cotações, as comunicações são realizadas via correio eletrônico. 3. Implementação usando Software Livre O portal do projeto e-market se encontra em funcionamento e está aberto para novas parcerias que visem desenvolver novas ferramentas para comércio eletrônico. Atualmente, o portal conta com 27 empresas parceiras, sendo que a FACCAT é uma das empresas parceiras com um papel fundamental para o desenvolvimento do projeto, já automatizando várias de suas compras através do portal. Todo o desenvolvimento e implementação do portal e-market foi feito com software livre e todo o código fonte pode ser obtido a partir do próprio portal. No projeto adotou-se: o sistema operacional GNU/Linux nos servidores, incluindo uma máquina 97 98 5° WSL / 5° FISL gateway com recursos de firewalling (usando iptables) e detecção de intrusão (com Snort) [4], e em todas as máquinas de desenvolvimento; o servidor web Apache [6] com suporte à linguagem PHP [1], que foi usada com seus recursos de orientação a objetos na implementação das páginas do portal, rodando em um servidor em uma zona desmilitarizada [4]; o gerenciador de banco de dados PostgreSQL [12] instalado em uma máquina servidora protegida pelo firewall; a ferramenta IDE Eclipse [11] com plugins para PHP [7] e CVS [9], que foi usado para trabalho cooperativo, instalado nas máquinas de desenvolvimento; a ferramenta Poseidon para edição dos diagramas UML [8] da modelagem da API desenvolvida para o portal; e a ferramenta DB Designer4 [13] para os diagramas do banco de dados. Atualmente, a equipe do projeto está trabalhando para acrescentar novos recursos: • um histórico, onde as empresas terão várias informações sobre as negociações, sobre transações realizadas ou não, relatórios sobre compradores e vendedores de transações em que estiram envolvidas, etc. • um sistema de avaliação, visando dar preferência às empresas melhor qualificadas, podendo-se ao final da transação informar se esta foi efetivada positivamente ou negativamente, comentando-a. Cada empresa terá um histórico das avaliações realizadas e recebidas, disponível para consulta de qualquer empresa. 4. Conclusão O portal e-market apresentado neste trabalho, tem sido usado como plataforma para a pesquisa e o desenvolvimento de novas tecnologias voltadas para o comércio eletrônico e espera-se que o projeto ajude a difundir o uso dos recurso da Internet nas várias empresas da região de modo que, futuramente, se possa pensar em novas estratégias e técnicas para as outras modalidades de comércio eletrônico, em particular, o comércio eletrônico de empresa voltada para o setor público (B2G). 5. Referências [1] SOARES, WALACE,. Crie um site B2C – Business to consumer: com PHP 4 e MySQL. Segunda edição. São Paulo: Érica, 2001. [2] MURTA, C.D. et al. Sistemas de comércio eletrônico projeto e desenvolvimento. Rio de Janeiro: Campus, 2002. [3] CUNNINGHAM , MICHAEL, J. B2B Business to Business: como implementar estratégias de e-commerce entre empresas. Rio de Janeiro: Campus, 2000. [4] TOXEN, B. Real world Linux security, Prentice Hall, 2001. [5] LINTHICUM, D, S. B2B Application Integration. Addison-Wesley, Boston, 2001. [6] HOLDEN, G. et al. Apache server, Makron Books, São Paulo, 2000. [7] PHP Net. Disponível em <http://www.php.net>. Acessado em 6 maio 2004. [8] CARLSON, D. Modelagem de aplicações XML com UML: aplicações práticas em e-Business, Ed. Makron Books, São Paulo, 2002. [9] CVS Home. Disponível em <http://www.cvshome.org>. Acessado em 6 maio 2004. [10] Snort. Disponível em <http://www.snort.org>. Acessado em 10 abril 2004. [11] Eclipse. Disponível em <http://www.eclipse.org> . Acessado em 15 abril 2004. [12] PostgreSQL. Disponível em <http://www.postgresql.org>. Acessado em 06 maio 2004. [13] DBDesigner 4. Disponível em <http://www.fabforce.net/dbdesigner4>. Acessado em 6 maio 2004. 5° WSL / 5° FISL Sessão Técnica 7 TOLERÂNCIA A FALHAS & EDUCAÇÃO 99 100 5° WSL / 5° FISL 5° WSL / 5° FISL Validação experimental de sistemas de arquivos baseados em journaling para o sistema operacional Linux Leonardo Garcia de Mello Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – CEP 91.501-970 – Porto Alegre – RS – Brazil [email protected] Abstract. Operating systems are important to high availability, and those that have secure filesystems relatively independent of human actions for recovery should be preferred. One of the approaches to gain high availability for filesystems are those based upon journaling, or meta-data logging. There is a series of journaling filesystems for Linux operating system, as ext3, JFS, ReiserFS and XFS. This works aims to propose a way to experimentally validate journaling filesystems efficiency. To do so, the techniques of Software Fault Injection are used for validation and the system target is an XFS implementation.. Resumo. Sistemas operacionais são importantes para alta disponibilidade, sendo preferível o uso daqueles que possuam sistemas de arquivos seguros e relativamente independentes de ações por agentes humanos para a recuperação. Uma das abordagens para obter-se uma alta disponibilidade em sistemas de arquivos é a do tipo journaling, ou log de metadados. Existem vários sistemas de arquivos para o Linux baseando-se nela, tais como ext3, JFS, ReiserFS e XFS. Este artigo propõe uma metodologia de validação experimental para avaliar a eficiência do mecanismo de journaling. As técnicas de Injeção de Falhas por Sofware são utilizadas para validação e o sistema alvo é uma implementação do XFS. 1. Introdução O termo comercialmente conhecido como “alta disponibilidade” (também referenciado como HA, de High Availability) representa uma característica de sistemas computacionais projetados para evitar ao máximo as interrupções, planejadas ou não, na prestação de serviços. Em alta disponibilidade, o ideal é haver poucas falhas e, mesmo quando estas acontecerem, que o seu tempo médio de reparo (ou MTTR, de Mean Time To Repair) seja tão pequeno quanto possível. Atualmente o Linux é muito utilizado em servidores [BAR 2000], em um cenário onde os requisitos quanto à disponibilidade geralmente são bastante elevados. Praticamente todas as plataformas atuais dispõem de sistemas de arquivos com alta disponibilidade [SEL 2000], mas o ext2 (sistema de arquivos convencional para o Linux) não possui esta característica. Para uso em aplicações críticas, existe uma série de sistemas de arquivos baseados em journaling para o Linux, tais como ext3, JFS, ReiserFS e XFS. Este trabalho propõe uma metodologia de validação experimental para avaliar a eficiência do mecanismo de journaling para sistemas de arquivos. Para isso, a técnica de validação empregada é a da injeção de falhas por software [HSU 97], e o sistema alvo é uma implementação do XFS. No grupo de Tolerância a Falhas da UFRGS realiza-se a validação experimental de mecanismos que permitam maior tolerância a falhas para sistemas operacionais. Desta maneira, este artigo apresenta um trabalho sobre injeção de falhas em sistemas de arquivos baseados em journaling para o Linux. É apresentado o modelo de falhas sob o qual foi feito o desenvolvimento de uma ferramenta para injeção de falhas em sistemas de arquivos baseados em journaling – o FIJI. 2. Integridade para dados e metadados No Unix, informações são organizadas em disco na forma de dados e metadados. Durante as operações envolvendo dados e metadados, é preciso que a representação do sistema de arquivos nos discos seja mantida consistente – isso mesmo após a ocorrência de falhas. Em sistemas de arquivos como o ext2, construídos com alocação baseada em blocos, o sistema de arquivos pode ficar inconsistente após a ocorrência de falhas porque dados e metadados são gravados em disco de forma 101 102 5° WSL / 5° FISL assíncrona por razões de desempenho. Sempre que algo assim acontece, é preciso executar algum utilitário de verificação - como o fsck [BAR 2000]. O fsck realiza uma série de passos ao longo de todo o sistema de arquivos de um dispositivo, para validar as suas entradas e assegurar-se de que blocos alocados em disco estão todos sendo referenciados corretamente. Mas infelizmente, para discos de tamanho muito grande, a execução do fsck pode consumir um tempo bastante elevado. Em uma máquina com muitos gigabytes em arquivos, por exemplo, a execução do fsck pode demorar até 10 horas ou mais [BAR 2000]. Além disso, conforme a severidade do caso, pode ser necessária a presença física do administrador do sistema para informar a senha do usuário root e executar manualmente o fsck. Assim, levando-se em conta essas dificuldades, surgiram as propostas de sistemas de arquivos para alta disponibilidade. Por meio deles, é possível diminuir a chance de serem introduzidas inconsistências nos sistemas de arquivos e reduzir o tempo médio de reparo (ou MTTR) na ocorrência de falhas. Atualmente as principais técnicas empregadas para auxiliar a obter alta disponibilidade em sistemas de arquivos Unix são o journaling e o Soft Updates [SEL 2000]. Enquanto a técnica de Soft Updates apenas é utilizada em sistemas BSD, a técnica de journaling baseia-se na redundância para aumentar a confiabilidade dos dados e metadados - mas sem aumentar significativamente os custos de hardware. Ela já é adotada por sistemas de arquivos em sistemas operacionais para plataformas diversas, tais como Solaris, AIX, Digital UNIX, HP-Ux, Irix e Windows NT [SEL 2000]. Mas apesar de os sistemas de arquivos baseados em journaling haverem sido adotados quase como um padrão pela indústria de software, atualmente não se encontram publicações sobre avaliação de medidas da sua disponibilidade. 3. Sistemas de arquivos baseados em journaling Sistemas de arquivos baseados em journaling fazem um controle sobre as mudanças realizadas ou nos metadados (para JFS, ReiserFS e XFS), ou nos dados e metadados (para ext3) associados a um sistema de arquivos. A idéia consiste em tratar diferentemente dados e metadados, usando uma área dedicada em disco (o log, ou journal) para manter um histórico das mudanças. Estes sistemas de arquivos implementam uma política de write-ahead logging, fazendo com que registros sejam armazenados no log antes de as operações serem efetuadas [SEL 2000]. Este tipo de sistema de arquivos pode ser empregado com desempenho ótimo para aplicações que lidem com arquivos pequenos e façam uso freqüente da chamada de sistema sync. Isso acontece porque várias alterações nos metadados são transferidas para o disco através de uma única operação, que acrescenta várias transações em uma mesma área [SEL 2000]. Uma grande vantagem da abordagem baseada em journaling é de que ela facilita obter alta disponibilidade em sistemas de arquivos já existentes. Exemplo disso é o resultado que pôde ser obtido com o sistema de arquivos ext2, que pôde ser reimplementado como sendo o ext3 [TWE 2003]. Quanto aos tempo de recuperação, para sistemas de arquivos baseados em journaling eles são bastante reduzidos. A tarefa de verificação consiste apenas em inspecionar as transações pendentes do log - ao invés de percorrer todos os blocos buscando inconsistências. Com isso, na ocorrência de defeitos, o sistema de arquivos pode ser levado a um estado consistente pela aplicação das transações pendentes no log - ao invés de ser necessário inspecionar toda uma unidade de disco com o fsck. 3.1. O sistema de arquivos XFS O XFS possui uma grande confiabilidade, pois foi criado ainda em 1994 pela SGI para substituir o EFS [XFS 2003]. Ele é o mais antigo entre os sistemas de arquivos conhecidos, e a ênfase do seu projeto foi na capacidade de trabalhar com arquivos bastante grandes - da ordem de "terabytes". O XFS pode trabalhar usando um tamanho de bloco variando entre 512 bytes e 64 kbytes, provendo o suporte para sistemas de arquivos distribuídos (incluindo NFS versão 3), ACLs no padrão POSIX 1003.e, e quotas para usuários e grupos. O estado de um sistema de arquivos XFS é o resultado da combinação de informações localizadas em três lugares diferentes: disco, memória e log do journaling. O sistema de arquivos XFS somente estará em um estado consistente após ele ter sofrido shutdown, onde todos os dados residentes em memória (buffers e cache) são gravados em disco e todas as entradas do log de transações são aplicadas no sistema de arquivos. 5° WSL / 5° FISL 103 4. Injeção de falhas no XFS Para a realização de um experimento de injeção de falhas, faz-se necessária a definição de um modelo de falhas. Um modelo de falhas permite-nos repetir um experimento tantas vezes quantas forem necessárias para atingir o objetivo. Para este caso, o objetivo é detectar erros que possam ocorrer durante a utilização de um sistema de arquivos baseado em journaling. A maioria dos mecanismos de tolerância a falhas disponíveis nos sistemas de arquivos baseados em journaling consideram principalmente as falhas de hardware transientes (mais especificamente de falta de energia), onde assume-se um modelo de crash para o sistema. Isto representa uma situação em que o sistema de arquivos estaria sendo utilizado e ocorreria a falha, fazendo com que a máquina fosse reiniciada sem que ocorresse um flush das informações em memória (tais como buffers e cache) ou das transações no log (elementos que, conforme a Seção 3.1, definem o estado do sistema de arquivos). Este modelo de falhas define o conjunto de falhas que deve ser gerado pela ferramenta FIJI. 5. FIJI A ferramenta FIJI (Fault INjector for Journaling fIlesystems), desenvolvida no PPGC da UFRGS, é baseada nos recursos de depuração do sistema operacional Linux (os quais permitem a interceptação e manipulação de chamadas de sistema) para a implementação de um injetor de falhas específico para sistemas de arquivos baseados em journaling. Manipular os parâmetros de chamadas de sistema (ou system calls) equivale a alterar as requisições feitas ao sistema operacional. O FIJI é implementado como um processo concorrente à aplicação alvo, usando os recursos oferecidos pelo sistema operacional Linux através da chamada de sistema ptrace. A chamada de sistema ptrace permite executar um processo de três maneiras: passo-a-passo, usando breakpoints ou executá-lo até a próxima chamada de sistema. Conceitualmente, o FIJI localiza-se entre a aplicação alvo e o sistema operacional. As falhas injetadas pelo FIJI estão de acordo com o modelo de falhas descrito anteriormente, e encontram-se especificadas no código-fonte da própria ferramenta. Mais especificamente, o que procura-se fazer através do injetor de falhas FIJI é manipular uma quantidade de informações diferente daquela que foi solicitada originalmente. Para isso, é feita uma alteração nas chamadas de sistema write para mudar a quantidade de bytes que deve ser gravada (registrador EDX). Um parâmetro deve ser informado para o FIJI pela linha de comando, informando dentro de quantos segundos as chamadas de sistemas write deverão começar a ser suprimidas. 6. Arquitetura para injeção de falhas Por meio do injetor de falhas FIJI, espera-se poder caracterizar um ambiente de falhas como o que está definido na Figura 1. De acordo com esta figura, o sistema alvo é uma máquina com uma partição Linux. Neste sistema alvo, foi criada uma partição para os testes. Esta partição deverá ser formatada com o utilitário mkfs.xfs [XFS 2003]. Sistema para injeção de falhas Operador humano Injetor de Falhas FIJI Injetor de Carga de trabalho Bonnie Monitor Ptrace Coletor de dados Análise de dados Sistema alvo Máquina Linux com partição XFS 104 5° WSL / 5° FISL Figura 1 – Ambiente ideal para injeção de falhas O componente controle é um ser humano, quem coordena a realização dos experimentos. A função de injetor de falhas é executada pela ferramenta FIJI. Desta maneira, é possível simular a ocorrência de falhas do tipo crash. A função de gerador de carga de trabalho é feita pelo utilitário bonnie, que deve gerar um workload correspondente às aplicações reais - tais como arquivos muito grandes (mais de 130 Mb), arquivos pequenos (menos de 600 Kb), servidor de arquivos, servidor de email, etc. Espera-se poder determinar a cobertura de falhas e o tempo de recuperação para o sistema de arquivos XFS. 7. Conclusões Os trabalhos em andamento pelo grupo envolvem os sistemas de arquivos baseados em journaling para uma validação de suas propriedades relacionadas com alta disponibilidade. Atualmente estão sendo conduzidos experimentos para consolidar o ambiente de acordo com uma metodologia desenvolvida pelo grupo de tolerância a falhas da UFRGS e aplicada com sucesso em sistemas de banco de dados. Os experimentos estão direcionados para XFS em Linux, mas espera-se que a metodologia seja suficientemente genérica e portável para permitir a validação de uma vasta gama de sistemas de arquivos baseados em journaling. Dados obtidos preliminarmente com os experimentos manuais comprovam a redução do tempo de recuperação em pelo menos uma ordem de grandeza no tempo no sistema XFS se comparado com sistemas de arquivos convencionais, como o ext2, sob uma mesma carga de trabalho. 8. Referências bibliográficas [BAR 2000] BAR, Moshe. Linux Kernel Internals. New York: McGraw-Hill, 2000, 351 p. [HSU 97] HSUEH, Mei-Chen; TSAI, Timothy K.; IYER, Ravishankar K. Fault-Injection Techniques and Tools. Computer, v. 30, n. 4, Apr 1997, p.75-82. [SEL 2000] SELTZER, M. I.; et. al. Journaling versus soft-updates: Asynchronous meta-data protection in file systems. In: USENIX ANNUAL TECHNICAL CONFERENCE, 2000. Proceedings... San Diego, California, USA, 2000. Disponível em: < http:// www.lcs.ece.cmu.edu/~soule/papers/seltzer.pdf>. Acesso em: ago. 2003. [TWE 2003] TWEEDIE, Stephen C. Ext3, Journaling Filesystem for Linux. In: OTTAWA LINUX SYMPOSIUM, 2000. Disponível em: Proceedings... <http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html>. Acesso em: out. 2003 [XFS 2003] Sistema de arquivos XFS para Linux. Disponível em: <http://xfs.sourceforge.net>. Acesso em: ago. 2003. 5° WSL / 5° FISL GroupPac: Um Suporte Livre Para Tolerância a Faltas ∗ Alysson Neves Bessani1†, Eduardo Adı́lio Pelinson Alchieri1‡, Joni da Silva Fraga1 , Lau Cheuk Lung 2 , Luciana Moreira Sá de Souza1 , Ricardo Sangoi Padilha1 {neves,alchieri,fraga,luciana,padilha}@das.ufsc.br, [email protected] 1 DAS - Departamento de Automação e Sistemas UFSC - Universidade Federal de Santa Catarina Campus Universitário, Caixa Postal 476 - CEP 88040-900 - Trindade - Florianópolis - SC 2 PPGIA - Programa de Pós-Graduação em Informática Aplicada PUC-PR - Pontifı́cia Universidade Católica do Paraná R. Imaculada Conceição, 1155 - Prado velho - CEP 80215-901 - Curitiba -PR Resumo. As pesquisas em tolerância a faltas em sistemas distribuı́dos têm um importante papel no desenvolvimento de aplicações confiáveis. Este trabalho apresenta a ferramenta G ROUP PAC juntamente com seus serviços que incluem suporte à tolerância a faltas na arquitetura CORBA fazendo uso de técnicas de replicação de objetos. O G ROUP PAC é uma implementação de código aberto do padrão FT-CORBA produzida nos laboratórios UFSC visando prover uma suporte de middleware tolerante a faltas de alta qualidade. Abstract. The research about fault tolerance in distributed systems take a important role in the development of trustful applications. This paper presents the G ROU PAC tool with the services that include fault tolerance support in the CORBA architecture using replicated objects. The G ROUP PAC is a open-source FT-CORBA implementation created at UFSC labs with the main goal of provide a high quality fault-tolerant middleware support. 1. Introdução Visando definir uma arquitetura para objetos distribuı́dos tolerantes a faltas, a OMG (Object Management Group) criou o padrão FT-CORBA (Fault-Tolerant CORBA) [Object Management Group, 2002]. Este padrão introduz suporte à tolerância a faltas na arquitetura CORBA fazendo uso de técnicas de replicação de objetos. Este suporte é construı́do a partir de um conjunto de objetos de serviço usados no gerenciamento de objetos de aplicação que são replicados usando abstraç ões de grupos. A tolerância a faltas fornecida usando os serviços definidos pelo padrão está fundamentada em premissas de falhas de parada. As implementaç ões do FT-CORBA se reduzem a poucas experiências acadêmicas: o G ROUP PAC que será apresentado neste trabalho, o IRL desenvolvido na Università di Roma “La Sapienza”, o DOOR S desenvolvido no Bell-Labs, e o E TERNAL desenvolvido originalmente pela Universidade da Califórnia - Santa Bárbara e atualmente comercializado pela Eternal Systems. Com relação ao G ROUP PAC, é a única implementação completa do padrão aberto FT-CORBA desenvolvida dentro da filosofia de software livre. A implementação de uma plataforma de middleware deste porte, considerando a especificação FT-CORBA, envolvem pesquisas desenvolvidas na UFSC desde 1999, quando as primeiras versões do G ROUP PAC foram lançadas. Naturalmente, como o G ROUP PAC foi originado a partir de protótipos gerados em projetos de pesquisa, ele ainda está longe da qualidade exigida de um software maduro, que possa ser usado ∗ † ‡ Realizado com recursos do CNPq (projeto número 401802/2003-5). Bolsista PGI/CNPq. Bolsista PIBIC/CNPq. 105 106 5° WSL / 5° FISL em projetos reais. Esta situação se acentua se levarmos em consideraç ão o ambiente para o qual o G ROUP PAC foi desenvolvido: software crı́tico. Desta forma, em dezembro do ano passado o projeto foi contemplado com um aporte de recursos do CNPq (Projeto CT-INFO/Software Livre) para sua transformaç ão de protótipo para um produto de qualidade, que possa ser usado pelos diferentes setores da sociedade que necessitam desenvolver software de alta disponibilidade. Este artigo traz uma breve introduç ão ao G ROUP PAC. Sua arquitetura básica e seus objetos de serviço são descritos na seção 2, na seção 3 temos algumas consideraç ões a respeito de sua implementação e na seção 4 são apresentadas as conclusões do artigo. 2. G ROUP PAC O G ROUP PAC [Lung et al., 2001] é uma implementação completa do padrão FT-CORBA desenvolvida pelo grupo de sistemas distribuı́dos do LCMI/DAS/UFSC. Inicialmente desenvolvido para dar suporte a sistemas de larga escala, o G ROUP PAC foi uma das primeiras implementações do padrão FT-CORBA desenvolvidas, e ainda hoje é uma das poucas disponibilizadas livremente (http://grouppac.sourceforge.net). A idéia básica é fornecer um conjunto de serviços e facilidades para a construção de aplicações tolerantes a falhas. Estes serviços estão representados na arquitetura da figura 1. Gerenciamento de Replicação notificação Notificador de Falhas Detector de Falha de Host is_alive() create_object() Host 1 Host 2 Detector de Falha de Processo Processo 2 is_alive() Fábrica Host 3 Detector de Falha de Processo Processo 3 is_alive() Fábrica Processo 1 Objeto Servidor 1 Cliente Objeto Servidor 2 Detector de Falha de Objeto Detector de Falha de Objeto is_alive() ORB is_alive() ORB ORB Mecanismo de Logging Mecanismo de Recuperação Mecanismo de Logging Mecanismo de Recuperação Sistema de Comunicação de Grupo Figura 1: Arquitetura FT-CORBA/G ROUP PAC. O serviços apresentados na figura 1 fornecem toda a infraestrutura básica para o suporte a tolerância a faltas em objetos distribuı́dos CORBA. Dentre estes serviços alguns merecem maior destaque (para maiores detalhes veja [Lung et al., 2000]): Serviço de Gerenciamento de Replicação - SGR: Para dar suporte a replicação de objetos, um serviço de fundamental importância é o gerenciamento de grupos. Este serviço é responsável pelo ciclo de vida dos grupos de réplicas. Duas funcionalidades básicas são oferecidas pelo mesmo: Gerenciamento de Propriedades, onde as propriedades da replicação (tipo de replicação usada, número mı́nimo de réplicas, etc.) são definidas e alteradas; e o Gerenciamento de Grupos, que oferece mecanismos para o controle da criação e destruição de grupos, bem como de seus membros (réplicas). Outra caracterı́stica de fundamental importância a cargo do gerenciador de replicação é a manutenção de uma referência de grupo (que contém o endereço de todas as réplicas), cuidando das entradas e saı́das de membros do grupo e mantendo uma lista atualizada das réplicas pertencentes ao mesmo (membership). 5° WSL / 5° FISL Serviço de Gerenciamento de Falhas - SGF:Envolve um conjunto de objetos que cooperam na detecção, notificação, análise e diagnóstico de falhas. Quando uma falha é detectada esta é repassada ao SGR para que este execute as ações necessárias e mantenha a lista de membros sempre atualizada. Existem três nı́veis de detecção de falhas: objetos, processos e hosts. A monitoração é realizada através do envio periódico de mensagens do tipo is alive() aos objetos monitorados. Serviço de Gerenciamento de Recuperação e Logging - SRL: O SRL é responsável pela consistência dos estados das réplicas. Este serviço define mecanismos para a recuperação de réplicas e do próprio grupo, bem como da configuração de estados em membros que entram no grupo após o serviço replicado já estar em funcionamento. Entre estes mecanismos está um suporte para construção de logs usados no armazenamento de requisiç ões enviadas ao grupo e um mecanismo para atualização de membros através de checkpoints. Além disso também é responsabilidade do SRL atuar na recuperaç ão de réplicas faltosas através da atualização de seus estados. Serviço de Comunicação de Grupo - SCG:Algumas atividades realizadas pelo G ROUP PAC, em especial a replicação ativa [Schneider, 1990], necessita de serviços de comunicação de grupo mais elaborados, usualmente disponibilizados por ferramentas de comunicação de grupos. Diante disto foi criado o framework SCG (Suporte de Comunicação de Grupo) [Bessani et al., 2004b], que define um mecanismo através do qual o G ROUP PAC interage com diferentes ferramentas de comunicação de grupo para utilizar os serviços de comunicação necessárias a ele. Através deste mecanismo é possı́vel a integração de qualquer suporte de comunicação de grupo a arquitetura do FT-CORBA através da construção de adaptadores que se integram como plugins no G ROUP PAC. Atualmente estão implementados plugins para as ferramentas ENSEMBLE (http://www.cs.cornell.edu/Info/Projects/Ensemble/ ) e JG ROUPS (http://www.jgroups.org) e para o protocolo baseado em serviços do próprio ORB [Bessani et al., 2002]. Existem ainda outros serviços no G ROUP PAC, como por exemplo o Serviço de Inicialização, responsável pela criação e inicializaç ão dos demais serviços e o Serviço de Transferência de Estados, usado para a transferência de estado entre as réplicas em caso de falta ou inclusão de novos membros em um grupo. O G ROUP PAC conta ainda com ferramentas administrativas que permitem a criação e gerenciamento de grupos de réplicas. Estes grupo podem ser especificados em arquivos XML (respeitando uma sintaxe definida por um XML Schema) ou através de uma ferramenta gráfica. Estes mecanismos são descritos com detalhes em [Bessani et al., 2004a]. 3. Implementação A implementação do G ROUP PAC vem sendo realizada desde 1999, e atualmente se encontra na sua versão 3.0. O software está disponı́vel em seu sı́tio na Internet (http://grouppac.sourceforge.net) sob licença GPL. As implementações são feitas utilizando a linguagem Java tendo como base o ORB JAC ORB (http://www.jacorb.org). Tanto este ORB como todas as demais ferramentas e pacotes de software utilizados também são livres. Atualmente estão sendo desenvolvidos testes unitários para o G ROUP PAC, através da ferramenta JU NIT (HTTP :// WWW. JUNIT. ORG)´. Além disso o projeto está sendo documentado através da construção de javadocs e de um manual de referência. 4. Conclusão Este trabalho apresentou brevemente o G ROUP PAC, um middleware que implementa as especificações FT-CORBA e introduz suporte à tolerância a faltas na arquitetura CORBA fazendo uso de técnicas de replicação de objetos. As vantagens de se ter um suporte a tolerância a faltas de 107 108 5° WSL / 5° FISL alta qualidade aberto1 e desenvolvido no Brasil são muitas: a liberdade na construção de sistemas crı́ticos (sempre necessários em setores delicados como saúde, militar, aeroespacial e finanças), a facilidade em se alterar este software na medida das necessidades do projeto em questão, a não dependência de pacotes de software comerciais de alto custo que desempenham a mesma função (geralmente provenientes de empresas estrangeiras) e a geração de mão de obra qualificada neste tipo de ambiente, são só algumas destas vantagens. Construir uma aplicação tolerante a faltas a partir deste middleware é relativamente simples, uma vez que a complexidade inerente aos protocolos de comunicação e gerência de grupos é toda encapsulada no suporte, deixando os desenvolvedores apenas com os aspectos funcionais da aplicação. Nossas iniciativas atuais pretendem tornar esta tarefa ainda mais simples através da integração dos serviços do GroupPac com ferramentas de desenvolvimento Java. Esta integração se dará através de plugins para as ferramentas N ETBEANS (http://http.netbeans.org) e E CLIPSE (http://http.eclipse.org). Referências Bessani, A. N., Alchieri, E. A. P., Lung, L. C., and da Silva Fraga, J. (2004a). GroupPac 3: Estendendo o FT-CORBA para Gerenciamento e Replicação Ativa. In Anais do WTF 2004 (V Workshop de Testes e Tolerância a Falhas) - SBRC’2004, Gramado, RS. Bessani, A. N., da Silva Fraga, J., and Lung, L. C. (2002). MJaco: Integração do multicast IP na arquitetura CORBA. In Anais do XX Simpósio Brasileiro de Redes de Computadores SBRC’2002, Buzios, RJ. Bessani, A. N., Lung, L. C., Alchieri, E. A. P., and da Silva Fraga, J. (2004b). Replicação ativa no CORBA: Padrões, protocolos e framework de implementação. In Anais do XXII Simpósio Brasileiro de Redes de Computadores - SBRC’2004, Gramado, RS. Lung, L. C., da Silva Fraga, J., de Souza, L. M. S., and Padilha, R. S. (2000). Grouppac: Um Framework para implementação de aplicações tolerantes a falhas. In Anais da XXVI Conferência Latino Americana de Informática - CLEI’2000, Cidade do México, México. Lung, L. C., da Silva Fraga, J., Padilha, R., and Souza, L. (2001). Adaptando as especificaç ões ft-corba para redes de larga escala. In Anais do XIX Simpósio Brasileiro de Redes de Computadores - SBRC’2001, Florianópolis, SC. Object Management Group (2002). The common object request broker architecture: Core specification v3.0. OMG Standart formal/02-12-06. Schneider, F. B. (1990). Implementing fault-tolerant service using the state machine aproach: A tutorial. ACM Computing Surveys, 22(4):299–319. 1 Software livre (portanto código aberto) e baseado em padrões aberto (definidos pela OMG). 5° WSL / 5° FISL International Master Program in Free Software: a higher education experience David Megı́as, Rafael Macau, Jordi Mas Estudis d’Informàtica i Multimèdia Universitat Oberta de Catalunya Av. Tibidabo 39–43, 08035 Barcelona Tel. (+34) 93 253 7523, Fax (+34) 93 417 6495 {dmegias,rmacau,jmash}@uoc.edu Abstract The Universitat Oberta de Catalunya (Open University of Catalonia, UOC) offers an International Master Program in Free Software (in Spanish). The first edition of this master program began on November 2003 and there are about 150 students currently enrolled at the different specialities offered by the program. In this paper, the design, the methodology and the first few conclusions drawn from this higher education experience are discussed and summarized. 1 Introduction The Universitat Oberta de Catalunya (UOC1 ) is internationally recognized as the first institution to offer distance education of university degrees using exclusively the Internet as the basis of the academic activity. Since the early foundation of the UOC, in 1995, our educational system relays on a virtual campus platform which allows the students and the lecturers to interact under the condition that no coincidence in time or space is assumed. Nowadays, there are more than 25000 students registered in the different bachelor, master, postgraduate and PhD programs at the UOC. As a result of our contributions to the distance education and e-learning initiatives, our institution has been awarded with the most relevant international prizes in this field. In addition, it must be taken into account that the UOC student profile is quite different from that of the “traditional” universities. The standard UOC student is an adult person in his or her thirties or forties, with a family, employed, and with very little time to study. Many of these students have other university degrees and they register at the UOC because they are eager to acquire knowledge or skills in a new field. Thus, motivation is often one of their most remarkable qualities. It is well known that the free software (FS) and the open source movements have gained widespread acceptance by both academia and industry in the last few years. As an academic institution, the UOC is deeply interested in this movement and FS products are commonly used in several of our departments. However, we reckon that the free and open source software technologies are still far from reaching a relevant position in the market compared to that of proprietary software. We think that one of the reasons why FS is not more widely used is the short number of academic courses in this technology. It is widely accepted that the people in the FS community usually acquire and exchange knowledge by visiting different web pages and discussing in forums. However, many end users, and specially the typical Information Technologies (IT) professionals, do not feel comfortable with this learning model and are discouraged to try FS. There is a gap of guided and tutored education in this area which must be filled in. For these reasons, we have decided to offer an International Master Program in Free Software (MPFS2 ) since November 2003. This master degree, which is taught in Spanish, is devoted to provide with an integral education on the different aspects related to the FS technology. Among others, the courses which have been designed for the master degree are concerned with the philosophy and the history of the FS movement, GNU/Linux, computer networking, web management, database management, software development, laws and licenses, etc. The student can choose among these courses according to some suggested itineraries with four possible specializations: Network and systems administrator, Software developer, Web and e-business administrator and Information Systems manager, all of these, under the master degree in FS. 1 2 http://www.uoc.edu http://www.uoc.edu/masters/softwarelibre/esp/index.html 109 110 5° WSL / 5° FISL 2 Precedents and motivations of the master program The UOC and, in particular, the Computing and Multimedia Department, has a wide experience in using and promoting FS in an academic environment. For example, a GNU/Linux platform is used in the practical activities of the Operating Systems and Networking subjects since 1997. In these subjects, the students needed a UNIX-like platform to carry out their practical activities. However, the UOC is a distance university and it was required that the students could use the UNIX-like system at home. There were two possibilities to achieve this aim. The first one was to log in a remote UNIX server and work with a permanent (modem) connection. The alternative was to provide the students with a UNIX-like system to work with their personal computer. After evaluating the pros and cons, this second possibility was chosen and a Slackware3 distribution of GNU/Linux was sent to the students. At the same time, a virtual tutored lab to support the students with installation problems, modem set up, etc. was created. Nowadays, Knoppix4 has replaced the Slackware distribution. Apart from this very early experience, FS products became a usual tool in several subjects of the official degrees in Computer Science Engineering, for example: • Dev-C++ (programming) • MySQL, TOAD (databases) • GnuPG (security) • Eclipse (software engineering) • Apache, Tomcat (computer networks, e-commerce) • OpenOffice (document exchange) Nowadays, two FS CD are distributed to the students, one of them is a LiveCD of GNU/Linux (Knoppix) and the other one contains several programs which are used in different subjects of the Computer Science Engineering programs. This positive experience with FS (in particular with GNU/Linux) led to a postgraduate program on GNU/Linux, which was issued in November 2001. Since November 2003, this postgraduate program has been incorporated into the MPFS. Apart from these initiatives, the UOC has made a great effort to adapt the virtual campus platform, the web portal, the virtual library, and other web services to free browsers (e.g. Mozilla). In addition, the usage of multi-platform formats (such as PDF, HTML, RTF, plain text) for document exchange has been encouraged, and free alternatives to proprietary programs currently on use in the official degrees are being considered. Finally, we have started a project (within the Hispalinux metadistros5 project) to develop a LiveCD distribution of GNU/Linux specially designed for the UOC students. There are several motivations behind this MPFS. The first one is the particular interest of a group of lecturers in helping to promote and disseminate the FS technology together with all its ethical and philosophical implications. A second reason is the fact that there is an increasing demand for IT professionals with a background in FS. A third reason, as pointed out in Section 1, is the lack of traditional (guided an tutored) education in this field. The IT professionals do not usually have enough time for teaching themselves as often occurs in the FS community and, thus, the MPFS can help to fill this educational gap. Finally, we must not forget that the standard student at the UOC is an employed person. This makes it possible to have an influence in the private companies and public institutions which can benefit from the advantages of FS. 3 Master program design The MPFS has been designed according to four different professional profiles related to Computer Science and Information Systems: networking and operating systems administrator, web development and e-commerce administrator, application developer and information systems management. For each of these profiles, we have suggested a different itinerary, as shown in Figure 1. These itineraries are divided into different courses or modules the contents of which have been especially designed to focus on the particularities of FS in each of these fields. The academic objectives of these itineraries are the following: • Itinerary #1 – Networking and operating systems: configure and administrate network services in GNU/Linux, know the basic aspects of networking security, identify the vulnerability problems of FS systems and learn to solve this kind of problems. • Itinerary #2 – Web development and e-commerce: know the components of a web server and its possibilities, know some of the most widely used web servers, install a web server and a data base management system, be aware of the security aspects related to web servers, organize and manage information and data integrity and administrate data bases with web interfaces. 3 http://www.slackware.com/ http://www.knoppix.com/ 5 http://metadistros.hispalinux.es/ 4 5° WSL / 5° FISL • Itinerary #3 – Application development: design and develop applications with FS tools, know the different possibilities for reusability of FS source code, know the different virtual cooperative environments for FS programming. • Itinerary #4 – Information systems management: know the alternative to proprietary systems, know the legal and exploitation aspects related to FS and analyze practical implantation cases of FS platforms. Figure 1: Master program design As the contents are concerned, these four itineraries have a common initial block of “core” or mandatory courses, consisting of an “Introduction to free software” 6 and “Basic Operating System GNU/Linux” 7 . These two core courses take 4.5 credits each, where 1 credit requires about 15 hours of student work. After these core modules, the MPFS offers different specialization courses depending on the itinerary chosen by the student: • Itinerary #1 – Networking and operating systems: “Advanced administration of the operating system GNU/Linux” (4.5 credits), “Computer networks” (3 credits), “Advanced networking: security issues” (6 credits), and “Implantation” (6 credits) • Itinerary #2 – Web development and e-commerce: “Advanced administration of the operating system GNU/Linux” (4.5 credits, not compulsory), “Web development” (6 credits), “Database systems” (6 credits), and “Implantation” (6 credits) • Itinerary #3 – Application development: “Advanced administration of the operating system GNU/Linux” (4.5 credits, not compulsory), “Introduction to software development” (6 credits), “Advanced aspects of software development” (6 credits), “Free software engineering” (6 credits), and “Implantation” (6 credits) • Itinerary #4 – Information systems management: “Legal aspects and exploitation” (6 credits), and “Utilities and tools” (4.5 credits) The advanced course in GNU/Linux and a course on practical issues about FS implantation are common to the more technical itineraries (#1, #2 and #3). In addition, all the itineraries finish with a practicum or final project (with 7.5 credits for the itineraries #1, #2 and #3, and 4.5 credits for the itinerary #4). Note, also, that the fourth itinerary (IS manager) is shorter than the other three ones, since it only leads to a postgraduate diploma and not to a master degree. The master degree itineraries (#1, #2 and #3) take four semesters and can be completed in about 18 months. The shorter itinerary takes just two semesters or about 10 months. As far as we know, there is not any other similar offer of a master program in FS. We have found some other postgraduate courses in this issue, but their scope, contents and length are quite different from ours. Thus, we prefer not to establish any kind of comparison with them. 4 Pedagogical model of the master program The UOC is based on a virtual campus platform which provides with the means for inter-communication. This platform is physically supported by a complex computer network and is completely web-based. The virtual campus offers several 6 7 http://www.uoc.edu/masters/softwarelibre/esp/materials/libre.pdf http://www.uoc.edu/masters/softwarelibre/esp/materials/libre_m2_baja.pdf 111 112 5° WSL / 5° FISL forums for the exchange of information between members of the UOC community. Some of the facilites offered by the virtual campus are: • interactive communications between the students and course tutors (or consultant lecturers) both asynchronously and, exceptionally, synchronously, • interactive communications between the students, • access to the UOC information resources (libraries, bulletin boards, databases, etc.) and • access to administrative services. Using the electronic mail and the Internet at any Internet-connected computer, the students are able to exchange messages, ask questions and make enquiries to the course tutors without time constraints. Course tutors, themselves, also contact students to monitor their progress or give assistance over any difficulty that may arise. In this way, the students always feel assisted. The UOC faces an important challenge as it develops a new concept of pedagogical model: from teaching to learning. The course tutors are no longer mere transmitters of knowledge but rather a guide in the learning process, for which the student is the ultimate responsible. It is a student-centered educational model, since the student is the central element and the rest of the elements are made available to support the learning process. The following elements are directly involved in the learning process: • The learning materials gather and transfer the basic contents of the course. They contain the objectives, selfevaluation activities, summaries, etc., and they are designed to make the learning process simple and stimulating. The materials for this master program are available both in paper-based and web-based formats. • The students are assigned a course tutor or consultant lecturer for every course. This lecturer provides general advice throughout their studies and becomes their personal advisor and their main interlocutor during the semester. • The continuous evaluation is a series of activities that are carried out during the semester in order to ensure the optimal achievement of the course objectives. • The virtual library supports student training and allows students to gain access from their homes to the services developed by the UOC library. All these different elements of the pedagogical model of the UOC are integrated into the virtual campus. This platform allows the students to send public (using the forums) and private (using personal e-mail accounts, integrated into the campus) messages to their classmates and lecturers, making it possible to share experiences, ask for assistance or make suggestions and participate in the university’s different social, cultural and academic activities. In addition, this platform also makes it possible to access all the university administrative services. 5 Final remarks The first edition of the MPFS presented in this paper started in November 2003 with about 90 students, mainly from Spain but also from South American countries. A second edition of the master program started in March 2004, and the total number of currently registered students is about 150. In addition, some grants are given each year by the Fundación Carolina to cover part of the registration fees for South American students. It must be pointed out that this MPFS gives back some return to the FS community. In particular, the didactic materials are being licensed using the GNU Public Documentation License (GFDL8 ) and can be downloaded (in Spanish) from the master’s site: http://www.uoc.edu/masters/softwarelibre/esp/materials/. Furthermore, and international scientific council of experts has been constituted in order to: • watch over the quality of the Master’s contents and design, • take into account sound opinions of different members of the FS community, • contribute to the promotion, diffusion and development of FS projects, • take into account viewpoints coming from different cultures and environments and • make the master program internationally known to gather students from various origins. The members of this council are: Manuel Castells (UOC), Vinton Cerf (MCI), Marcelo D’Elia Branco (software livre project), Juantomás Garcı́a (Hispalinux), Jesús M. González Barahona (Universidad Rey Juan Carlos), Pekka Himanen (University of California at Berkeley) Miguel de Icaza (Ximian/Novell) Òscar del Pozo (Softcatalà) Pam Samuelson (University of California at Berkeley), Rafael Macau (UOC), David Megı́as (UOC), Jordi Mas (UOC, Ximian/Novell, Softcatlà). In conclusion, the first few months of this experience have been very positive and we are in contact with other European and South American universities which are interested in offering master programs in FS. 8 http://www.gnu.org/copyleft/fdl.html 5° WSL / 5° FISL Sessão Técnica 8 DESENVOLVIMENTO I 113 114 5° WSL / 5° FISL 5° WSL / 5° FISL AbsTK: uma biblioteca para desenvolvimento unificado de aplicações em modo texto e gráfico Hisham H. Muhammad André Detsch ½ Projeto GoboLinux http://www.gobolinux.org {lode,detsch}@gobolinux.org Resumo: Manter diferentes versões para uma mesma aplicação em modos gráfico e texto é custoso e problemático. Este artigo apresenta um toolkit livre para construção de interface que abstrai os elementos visuais e permite desenvolver aplicações que executam tanto em ambiente texto como gráfico. Abstract: Maintaning different versions for an application in text and graphic modes is costly and problematic. This paper presents a free toolkit for interface building, which abstracts away the visual elements and allows one to develop applications which execute both in textual and graphical environments. 1 Introdução A disponibilização de interfaces adequadas para configuração e instalação de sistemas ainda é um problema bastante comum em plataformas livres. Um número cada vez maior de usuários de software livre carecem de conhecimentos profundos sobre estes sistemas e suas aplicações, necessitando interfaces mais avançadas e amigáveis. O desenvolvimento de aplicações amigáveis, entretanto, demanda o uso de bibliotecas de widgets gráficos, que são ferramentas complexas e demandam considerável dedicação por parte do desenvolvedor, tornando o desenvolvimento de interfaces para configuração e instalação pouco atrativo para o programador, embora necessário para os usuários. Um problema que agrava este quadro é o fato de que no mundo do software livre diferentes usuários utilizam diferentes interfaces gráficas como KDE e GNOME, ou mesmo o console de texto. Cada uma destes diferentes ambientes é baseado em bibliotecas visuais diferentes (Qt para KDE, GTK+ para GNOME, e assim por diante), levando o programador a optar entre escolher uma biblioteca ou manter múltiplas versões de sua ferramenta. Ambas as opções trazem consideráveis desvantagens. No primeiro caso, o esforço dispendido pelo programador para produzir uma interface amigável para sua ferramenta acaba por cobrir apenas uma fração do público-alvo. No segundo caso, mesmo que várias versões da interface sejam desenvolvidas, a manutenção de todas em paralelo, e especialmente a sua sincronização de desenvolvimento são um problema. Visando resolver este problema, foi desenvolvida uma nova biblioteca de widgets para a linguagem Python denominada AbsTK (Abstract Tool Kit), que, como o nome indica, é baseada num nível conceitualmente mais abstrato. A programação realizada sobre esta API é baseada nos aspectos semânticos dos elementos, sem necessidade de definição explícita dos aspectos de exibição. Em tempo de execução, dependendo do ambiente onde for executada, a aplicação exibirá então uma interface em modo texto ou gráfico. Através desta API foi realizada a programação do instalador da distribuição GoboLinux [2], utilizado a partir da versão 010. 2 AbsTK A biblioteca AbsTK surgiu no contexto do projeto GoboLinux. Objetivava-se desenvolver um instalador amigável, que atendesse tanto aos usuários do ambiente gráfico provido pelo CD de instalação como aos usuários que necessitem utilizar o modo texto devido a incompatibilidades de hardware no processo de instalação (ou prefiram o uso do console). A primeira opção seria desenvolver dois instaladores, um para o ambiente gráfico, outro para o ambiente de texto. A manutenção em paralelo de dois programas que deveriam prover funcionalidades idênticas seria algo trabalhoso e problemático. 115 116 5° WSL / 5° FISL Decidiu-se então desenvolver uma camada subjacente única que isolasse a semântica do instalador da interface. Diferentemente da abordagem de front-end/back-end, tipicamente empregada em programas que provêm múltiplas interfaces, optou-se por isolar a aplicação da interface por meio de uma camada genérica em nível de toolkit, que fosse capaz de atender aos seguintes requisitos: (1) simplicidade de prototipação; (2) independência de toolkit de exibição; (3) utilização de campos arbitrários nas janelas; (4) definição simples de interação entre campos. Baseados nestes requisitos, a definição do AbsTK se baseia em três tipos de entidades: campos, entidades de entradas de dados que representam informações de diversos tipos com o qual o usuário pode ou não interagir; telas, que são conjuntos de campos; e um container, que engloba uma ou mais telas e representa a interface como um todo. Para a aplicação do instalador, o container é um objeto do tipo Wizard, que modela uma interface do tipo “assistente”, onde cada uma das telas é um passo no processo de instalação, composto de campos que representam os dados e opções entrados pelo usuário. Primeiramente, o programador cria uma instância da classe Wizard. Cada tela do wizard corresponde a um objeto da classe Screen. Esta classe possui métodos que permitem a adição de campos. A distribuição dos campos na tela é dada pela ordem de inserção, e o layout é definido automaticamente pelo próprio toolkit, de acordo com o ambiente onde o programa é executado. Alguns tipos de campos, como labels, são somente-leitura, e apenas exibem informações para o usuário. Outros têm como objetivo requisitar informações do usuário, e são descritos pela sua representação semântica, independente de como serão visualmente exibidos. Por exemplo, cada campo pode conter uma informação de ajuda adicional. Em um ambiente gráfico, essa informação pode aparecer como um tooltip flutuante, e em modo texto, como uma barra de status no canto inferior da tela. Graças a esta abstração, interfaces automaticamente adaptáveis se tornam possíveis: um campo List, que permite a escolha de um elemento dentre uma lista, pode se exibido como um radio group, se contiver poucos elementos, ou uma list box com barra lateral de scroll caso possua muitos elementos. Isto facilita a manutenção da aplicação, uma vez que os elementos de interface são substituídos automaticamente à medida que o desenvolvimento da interface evolui. Campos podem ter seus valores acessados e alterados através dos métodos setValue e getValue, onde os campos são referenciados através do identificador definido quando da sua inserção na tela. Assim, basta listar a seqüência de dados a serem requisitados, seguindo uma ordem de telas, combiná-las em um container, e a interface do programa está construida, plenamente funcional tanto em ambiente gráfico como de texto. Além da exibição e coleta de dados, foi implementado um sistema de callbacks que permite funcionalidades bastante avançadas de programabilidade, embora sem perder a simplicidade do sistema. Cada campo pode ter um callback associado, que é acionado sempre que alguma ação for realizada sobre o campo. Por exemplo, é possível alterar o valor de um campo sempre que outro for alterado. A dinâmica de execução do programa é bastante simples: após a definição do container, que é, no caso do instalador, um wizard (assistente), basta acionar o metodo Wizard.start(). O wizard exibirá suas telas para o usuário à medida que este for prosseguindo pelo assistente, seja em modo gráfico pressionando os botões “Próximo” e “Anterior” ou em modo texto, usando as teclas de movimentação indicadas na interface. Assim que o usuário solicitar o término (via botão “Concluir” graficamente, ou pela tecla de término em modo texto), o fluxo de execução volta para o script, que pode acessar todas as informações entradas pelo usuário. Adicionalmente, AbsTK oferece ainda recursos de internacionalização, permitindo que a interface se traduza automaticamente em tempo de execução, de acordo com as configurações de idioma do ambiente onde ela executa. O arquivo de traduções é em formato ASCII, permitindo fácil edição e contribuição de traduções por parte da comunidade de usuários. Existe também um conversor que permite usar a interface gráfica do Qt Linguist [5] para gerenciar as traduções. API de programação. As classes disponibilizadas ao usuário do AbsTK são Screen e 5° WSL / 5° FISL tamanhos = {’KDE’:250, ’Python’:30, ’Qt’:50, ’PyQt’:15 } nomes_pacotes = tamanhos.keys() wizard = Wizard(’Exemplo’) tela = Screen(’Pacotes’) def habilita_desabilita_lista() : wizard.setEnabled(’pacotes’, wizard.getValue(’habilita_selecao’)) def soma_lista_e_atualiza_campo() : selecionados = wizard.getValue(’pacotes’)[1] s = 0 for cada_um in selecionados : s = s + tamanhos[cada_um] wizard.setValue(’soma’, str(s)) tela.addBoolean(’habilita_selecao’, ’Seleção manual’, True, ”, habilita_desabilita_lista) tela.addCheckList(’pacotes’, ’Selecione’, (nomes_pacotes,[]), ”, soma_lista_e_atualiza_campo) tela.addLabel(’soma’, ’0’) wizard.addScreen(tela) wizard.start() Figura 1: Exemplo de uso do AbsTK: uma lista de seleção de pacotes Wizard. A classe Screen possui diversos métodos para adição de campos, como addBoolean(), addButton(), addCheckList(), addLabel(), addLineEdit(), addList() e addMultiLineEdit(). Ao criar um campo, o programador pode especificar, respectivamente, um nome para o campo (para que possa obter os dados posteriormente), um label (em toolkits tradicionais, o label é usualmente um widget distinto, que deve ser gerenciado separadamente), um valor default para o campo, uma mensagem de ajuda e uma função de callback. A semântica, o nome e a ordem dos parâmetros são iguais para todos os métodos de adição de campo. Cabe resaltar que todos os parâmetros são opcionais, podendo-se passar apenas os parâmetros considerados necessários pelo programador. A classe Wizard, que define um container do tipo “assistente”, permite adicionar telas (através do método addScreen()) e requisitar ou ajustar valores de campos que estejam inseridos em alguma de suas telas (métodos getValue() e setValue()). De forma similar, é possível habilitar ou desabilitar campos através do método setEnabled(). Implementação Qt. A implementação do AbsTK para uso em modo gráfico utiliza os bindings Qt [5] para Python (biblioteca PyQt [4]). Grande parte das funcionalidades exigidas para exibição e funcionamento dos campos oferecidos por AbsTK já estão presentes em PyQt, cabendo à implementação de AbsTK apenas oferecer wrappers adequados. Os campos inseridos são enquadrados em um QGridLayout, classe para layout automático disponibilizada pelo Qt. Com isso, as telas podem ser redimendionadas durante o uso sem qualquer problema de organização dos campos, ao mesmo tempo em que o programador não precisa lidar explicitamente com este quesito. A funcionalidade de callbacks é implementada através do uso do mecanismo de sinais e slots oferecido pelo Qt. Implementação NCurses. A implementação do AbsTK para operação em console baseiase no wrapper Python para a biblioteca NCurses [3]. Esta implementação tem a vantagem de estar disponível na grande maioria dos ambientes Linux, uma vez que a biblioteca NCurses é um item básico da maior parte das distribuições e o wrapper Python vem incluído no pacote Python padrão. Enquanto a biblioteca Qt disponibiliza objetos gráficos de interface completos, de modo que AbsTK limita-se a realizar o mapeamento entre estes objetos e os seus campos, a biblioteca ncurses disponibiliza apenas primitivas para exibição de caracteres. Assim, na implementação NCurses, os widgets visuais de modo texto (botões, listas, check boxes, etc.) são implementados por AbsTK internamente. O mecanismo de callbacks no modo NCurses é implementado conjuntamente com a implementação interna dos widgets textuais. Assim, o funcionamento dele na API externa é idêntico 117 118 5° WSL / 5° FISL Figura 2: O mesmo programa, rodando nos modos Qt e NCurses. em ambas as plataformas. 3 Exemplo de uso Na Figura 1 temos um breve exemplo de uso do AbsTK: uma simplificação da tela de seleção de pacotes do instalador. Após instanciar o wizard e a tela, são definidas as rotinas de callback utilizadas adiante. Na tela são inseridos um campo booleano (que define se a seleção manual de pacotes deve ser habilitada) uma check list (que permite a seleção dos pacotes disponíveis), e um label (que exibe a soma dos tamanhos dos pacotes selecionados). Através do ultimo parâmetro passado em addBoolean(), define-se que mudanças neste campo devem acionar a função ’habilita_desabilita_lista’. Esta função consulta o valor do campo e define se a check list de seleção de pacotes deve estar habilitada para alteração por parte do usuário. De forma similar, utiliza-se a função ’soma_lista_e_atualiza_campo’ como callback para alterações no campo ’pacotes’. Esta função identifica os pacotes selecionados e soma os seus tamanhos, ajustando o valor do campo ’soma’. Note que o valor de um campo check list é dado por uma tupla, onde o primeiro elemento é a lista dos valores disponíveis, e o segundo (acessado pelo índice [1]) a lista dos itens selecionados. Ao final, é acionado o método start() do wizard, que procede com a exibição das telas e aguarda a finalização pelo usuário. A Figura 2 apresenta o resultado visual da execução do exemplo utilizando a implementação Qt e NCurses. Um aspecto a ser ressaltado é a adaptação que o próprio AbsTK faz em relação aos botões apresentados na parte inferior da interface. Por haver apenas uma tela no wizard, são apresentados os botões ’Cancel’ e ’Ok’, no lugar dos botões, ’Anterior’ e ’Próximo’/’Concluir’, presentes em um wizard tradicional, com mais de uma tela. 4 Considerações finais Este artigo apresentou o AbsTK, um toolkit que permite a fácil geração de wizards através da linguagem Python. A biblioteca é distribuída segundo a GNU General Public License, e está disponível para download em http://www.gobolinux.org/abstk, onde a API completa é documentada. A biblioteca está em um estágio maduro de desenvolvimento, sendo atualmente usada em ambiente de produção. Como possibilidades de trabalhos futuros temos a implementação de novos back-ends, em especial GTK+, e o desenvolvimento de novos tipos de campos e containers, flexibilizando ainda mais a biblioteca para uso em outros tipos de ferramenta. Referências [1] AbsTK. http://www.gobolinux.org/abstk [2] MUHAMMAD, H. H., DETSCH, André. “Uma nova proposta para a árvore de diretórios UNIX” In: III Workshop Software Livre, 2002, Porto Alegre. Anais do III Workshop Software Livre. , 2002. [3] NCurses. http://dickey.his.com/ncurses/ncurses.html [4] PyQt. Riverbank Computing. http://www.riverbankcomputing.co.uk/pyqt/ [5] Qt Overview. Trolltech. http://www.trolltech.com/products/qt/ 5° WSL / 5° FISL Desenvolvendo Jogos Computadorizados Multiplataforma com Amphibian João Ricardo Bittencourt1,2, Lucia Maria Giraffa1 1 Programa de Pós-graduação em Ciência da Computação (PPGCC) Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS) Av.Ipiranga,6681 – Prédio 16 – 90619-900 – Porto Alegre – RS – Brasil 2 Centro Universitário Franciscano (UNIFRA) Rua Andradas, 1614 – 97010-032 – Santa Maria – RS - Brasil [email protected], [email protected] Abstract. In last years studies about games are growing in Brazil in relation to business and academic scopes. Due to this it’s necessary to develop free tools for create games. The main goal of this paper is to show Amphibian. It’s a free, no cost framework to create multiplatform games. Resumo. Os jogos computadorizados nos últimos anos no Brasil estão recebendo destaque no âmbito comercial e acadêmico. Por isto existe a necessidade de desenvolver ferramentas livres para criação de jogos. O objetivo deste artigo é apresentar o Amphibian que consiste de um framework distribuído livremente e gratuitamente para criação de jogos computadorizados multiplataforma. 1. Introdução Nos últimos anos o desenvolvimento de jogos computadorizados está crescendo no Brasil. Para Battaiola [1], os jogos computadorizados além de fomentar o desenvolvimento de pesquisas no meio acadêmico, fomenta a criação de um nicho mercadológico que propicia o desenvolvimento de software no país. A realização do Workshop Brasileiro de Entretenimento Digital e Jogos Computadorizados (WJogos)[2] com o apoio da Sociedade Brasileira de Computação (SBC); a Rede de Excelência de Empresas de Jogos de Entretenimento (GameNet) [3] criada pelo Governo do Paraná; o edital [4] para projetos de inovação para Software Livre lançado pelo Ministério da Ciência e Tecnologia que contemplava a área de entretenimento; podem ser destacados como fatos que evidenciam o crescimento das pesquisas, do incentivo e da exploração econômica dos jogos computadorizados no país. Entretanto observa-se que os empreendimentos nacionais bem sucedidos utilizam tecnologias proprietárias e executáveis sob a plataforma Microsoft Windows. De uma certa forma estas organizações adotam o modelo de negócios tradicional utilizado pela indústria norte-americana desenvolvedora de jogos computadorizados. Tal comportamento pode ser explicado pelo fato da indústria nacional estar em um ciclo inicial de amadurecimento e pela falta de um know-how nacional. Na ausência de uma tecnologia interna que viabiliza seus negócios acabam adotando tecnologias estrangeiras. Por exemplo, muitas empresas utilizam a tecnologia DirectX da Microsoft. Para Hecker [5], nem sempre uma decisão tecnológica que é boa para uma empresa, será uma boa solução para as demais. Desta forma os empreendimentos nacionais deveriam questionar-se se o uso do DirectX de fato é a melhor solução para seus negócios e se de fato tal tecnologia proporciona um incremento de sua competitividade, facilitando seu processo de desenvolvimento. Diante deste contexto existe a necessidade de projetar tecnologias que permitam o desenvolvimento de um modelo econômico nacional para indústria de jogos, de forma que este modelo fosse flexível suficiente para atingir diferentes nichos mercadológicos, tais como 119 120 5° WSL / 5° FISL computadores pessoais, celulares, handhelds, Internet, videogames ou qualquer outro dispositivo. Além destes aspectos mercadológicos, existe a questão referente ao uso da Informática na Educação. Necessita-se do desenvolvimento de jogos com qualidade para serem utilizados nas escolas [1]. Se considerar a criação de jogos usando a tecnologia DirectX, estes irão executar somente na plataforma Windows, logo teria-se um grande problema na utilização dos jogos nas escolas públicas do Rio Grande do Sul que integram a Rede Escolar Livre [6], por exemplo. Precisa-se desenvolver tecnologias livres que permitam a construção de jogos para executarem em diferentes plataformas, desta forma propiciando o uso de jogos computadorizados no processo de ensino-aprendizagem [7] e no fortalecimento da indústria nacional. Visando contribuir na resolução destes problemas desenvolveu-se um framework, denominado Amphibian [7] que permite a criação de motores de jogos multiplataforma, executando inclusive sob a plataforma móvel. Este framework é distribuído gratuitamente sob a licença LGPL, desta forma permitindo que sejam criados novos componentes e jogos sob a filosofia de software livre. O objetivo do presente artigo é apresentar o Amphibian com suas respectivas funcionalidades e como este pode ser usado na criação de jogos computadorizados multiplataforma. Este artigo está divido em três seções: na seção 2 é apresentada a arquitetura do Amphibian, principais funcionalidades e como este pode ser usado; na seção 3 é apresentado um exemplo de jogo que ilustra a execução do Amphibian em três diferentes sistemas operacionais; e por último serão feitas as considerações finais. 2. Amphibian Primeiramente é importante destacar que o Amphibian é um framework para criação de motores de jogos e a partir deste é possível construir diferentes títulos. Desta forma este framework facilita o desenvolvimento de motores de jogos que poderão executar em diferentes plataformas, inclusive a móvel. Para o projeto da arquitetura do framework foram utilizados diversos padrões de projetos [8][9]. O Amphibian fundamentalmente é baseado em uma arquitetura de camadas [8]. Esta arquitetura auxilia na criação de aplicações que podem ser decompostas em grupos de subtarefas na qual cada um destes possui um determinado nível de abstração. Seus benefícios são a melhoria da manutenibilidade, estensibilidade do sistema, reusabilidade e, além disto, facilita a padronização. Em uma arquitetura de camadas, parte-se do pressuposto que determinada camada comunica-se somente com as inferiores, veja Figura 1. Nesta arquitetura existe uma camada referente ao sistema operacional. Sob esta, executa-se uma máquina virtual Java (JVM) que fornece uma abstração referente à plataforma de execução. Sob esta camada está a SAL (System Abstraction Layer) que consiste de uma camada de abstração referente às máquinas virtuais. As extensões da SAL podem utilizar uma máquina virtual específica, inclusive uma JVM livre que não tenha sido desenvolvida pela Sun, ou utilizar métodos nativos e executarem diretamente sob um sistema operacional, desta forma perdendo a portabilidade, mas sem comprometer a compatibilidade com as camadas superiores. A camada referente ao Amphibian é projetada para utilizar somente a abstração oferecida pela SAL. Percebe-se na Figura 1 que o Amphibian acessa somente tal camada, logo os motores de jogos desenvolvidos com Amphibian são independentes da JVM. A última camada trata-se das extensões criadas basicamente a partir das abstrações de cada uma das camadas básicas e especifica a relação destas extensões com as camadas da arquitetura de execução. O Amphibian é multiplataforma, livremente distribuído sob a LGPL, gratuito, independente dos mecanismos de visualização (2D/3D), independente dos mecanismos de persistência dos dados (banco de dados, arquivos de propriedades, XML) e com alta modularidade, permitindo trocar seus componentes facilmente. Basicamente um motor de jogo é criado conforme os seguintes passos: (a) criação das classes do domínio do jogo que trata das regras propriamente ditas; (b) criação de componentes através da customização de componentes 5° WSL / 5° FISL 121 já existentes; (c) integração destes usando um arquivo XML que especifica os componentes que serão usados pelo motor em tempo de execução. $03+,%,$1 ([WHQV}HV 6$/ -90 6LVWHPD2SHUDFLRQDO Figura 1: Arquitetura de Execução Completa do Amphibian. 3. Exemplo de Utilização do Amphibian Para verificar a viabilidade de execução de jogos computadorizados criados a partir do Amphibian foram desenvolvidos alguns protótipos de jogos que ilustram as potencialidades da ferramenta. Na Figura 2 estão sendo apresentadas algumas screenshots do Jogo da Serpente executando sob o GNU/Linux, Windows e PalmOS (através de emulador). É importante destacar que para execução no PalmOS foi utilizado a máquina virtual SuperWaba [10] que consiste de um projeto software livre nacional. Para o desenvolvimento do Jogo da Serpente foram criadas as classes referentes à lógica do jogo e a criação de um arquivo XML para cada plataforma com as especificações dos componentes que serão utilizados pelo motor do jogo. Figura 2: Screenshots do Jogo da Serpente executando em Multiplataformas. É importante destacar que obteve-se nos testes uma média de desempenho de 41.5433 frames por segundo (fps) (atingindo até 63 fps) executando sob um Athlon XP 1800, 256 Mb de RAM e uma placa 3D Rivas TNT2 e 31.8333 fps (atingindo até 42 fps) sob um AMD Duron 900Mhz, 64 Mb de RAM e uma placa 3D Compaq nVidia Vanta LT 8Mb. Para execução destes 122 5° WSL / 5° FISL testes foi usado um outro jogo denominado Jogo da Vida de John Conway que aloca uma grande quantidade de objetos (aproximadamente de 325 a 890 objetos manipulados a cada ciclo de atualização) e possui alta complexidade. Estas taxas são bastante significativas quando considera-se uma taxa média de 30 fps [11]. Isto demonstra as potencialidades para utilização do Amphibian na criação de jogos computadorizados comerciais que exigem alto desempenho. 4. Considerações Finais Ao término do presente trabalho é possível concluir que o Amphibian é uma ferramenta livre que permite a criação de motores de jogos e a partir destes criar diferentes novos títulos que poderão ser comercializados ou utilizados nas escolas. Desta forma espera-se que o Amphibian contribua no fortalecimento da indústria nacional de jogos computadorizados e permita que jogos sejam criados com tecnologia livre e possam executar inclusive sob plataformas móveis. É importante destacar que mesmo sendo o objetivo principal do Amphibian criar motores de jogos, outras aplicações multimídia podem ser criadas a partir do framework, tais como simuladores gráficos e softwares de visualização científica. Destacando que estas podem ser integradas em navegadores Web e poderão executar em dispositivos móveis, incluindo handhelds e telefones celulares. A primeira versão do Amphibian está disponível no SourceForge.net (http://sourceforge.net/projects/amphibian) e o site do projeto já foi traduzido para o inglês, italiano, francês, espanhol e chinês. Esta versão inicial está sendo distribuída com AmphibianSDK, que além das classes do Amphibian estão sendo distribuídos a documentação da API, alguns plug-ins (suporte para MP3, Ogg e a biblioteca Gamelib[12]), códigos-fonte, exemplos de utilização e alguns utilitários para converter arquivos XML para o formato PDB utilizado no PalmOS. Cabe destacar que esta versão ainda é um protótipo, mas acredita-se no seu constante aperfeiçoamento em função das contribuições recebidas da comunidade. Referências Bibliográficas [1] BATTAIOLA, André L. Jogos por Computador – Histórico, Relevância Tecnológica e Mercadológica, Tendências e Técnicas de Implementação In: Anais da XIX Jornada de Atualização em Informática. Proceedings. Curitiba:SBC, Julho/2000, v. 2. 83-122 p. [2] WJOGOS. Disponível em: <http://www.icad.puc-rio.br/wjogos/> Acesso em: 2 mai. 2004 [3] GAMENET – Rede de Excelência de Empresas de Jogos de Entretenimento. Disponível em: <http://www.gamenetpr.com.br> Acesso em: 2 mai. 2004. [4] MINISTÉRIO da Ciência e Tecnologia. Projeto em Inovação em Software Livre. Disponível em: <http://www.finep.gov.br> Acesso em: 2 mai. 2004. [5] HECKER, Chris. Developer Power and the ‘U’ Word. In: Game Developer Magazine. April, 1998.61-63 p. [6] SECRETÁRIA Estadual da Educação/RS. Rede Escolar Livre RS. Disponível em: <http://www.redeescolarlivre.rs.gov.br> Acesso em: 2 mai. 2004. [7] BITTENCOURT, João R. Um Framework para Criação de Jogos Computadorizados Multiplataforma. Porto Alegre, PUCRS, 2004. (Dissertação de Mestrado) [8] BUSCHMANN, Frank; MEUNIER, Regine; ROHNERT, Hans; et al. Pattern-Oriented Software Architecture: A System of Patterns. England: John Wiley & Sons Ltd., 1996, 476p. [9] GAMMA, Erich; HELM, Richar; JOHNSON, Ralph; et al. Design Patterns: Elements of Reusable Object-oriented Software. Boston: Addison-Wesley, 1995, 395 p. [10] SUPERWABA. Disponível em:<http://www.superwaba.com.br/>. Acesso em: 15 abr. 2004.0 [11] LaMOTHE, André. Tricks of the Windows Game Programming Gurus: Fundamentals of 2D and 3D Game Programming. SAMS, 1999, 1040 p. [12] GAMELIB. Disponível em: <http://home5.swipnet.se/~w-56899/gamelib_main.html> Acesso em: 5 mai. 2004. 5° WSL / 5° FISL ArchGenXML - Uma ferramenta CASE para Desenvolvimento de Aplicações de Gerenciamento de Conteúdo para o Plone Fabiano Weimar dos Santos 1 1 Weimar Consultoria – Rua São Francisco de Paula, 2012 – 95096-440 Caxias do Sul, RS [email protected] Abstract. The ArchGenXML is a CASE tool, written in Python and under GPL license. It’s goal is to aid the content management applications development for Plone. The main idea behind ArchGenXML is create a tool to transform UML diagrams into almost ready to use applications. This article will describe about the ArchGenXML project, its resources, where it have been used and its future perspectives. Resumo. O ArchGenXML é uma ferramenta CASE, escrita em Python e sob licença GPL. Sua meta é auxiliar no desenvolvimento de aplicações de gerenciamento de conteúdo para o Plone. A idéia base do ArchGenXML é criar uma ferramenta que transforma diagramas UML em aplicações praticamente prontas para usar. Este artigo irá descrever a respeito do projeto ArchGenXML, seus recursos, onde tem sido empregado e suas perspectivas futuras. 1. Unindo Esforços Apesar das discussões que envolvem os processos de desenvolvimento de software livre, existe hoje uma séria preocupação com o desenvolvimento de aplicações abertas de qualidade. Atualmente, percebe-se uma séria deficiência em ferramentas livres que de fato agilizem o processo de desenvolvimento ao invés de apenas gerar documentação do processo. No geral, e em especial na área de desenvolvimento de aplicações para gerenciamento de conteúdo, não existiam aplicações CASE realmente úteis até pouquissimo tempo. O projeto que tem mudado tudo isso é o ArchGenXML. O ArchGenXML [arc, 2004b] é o resultado da união dos esforços entre dois projetos: o próprio ArchGenXML e o projeto UML2AT. O projeto UML2AT foi resultado de uma disciplina de Análise e Projeto de Sistemas II cursada por Fabiano Weimar dos Santos na Universidade de Caxias do Sul. Já o ArchGenXML, por sua vez, foi idealizado inicialmente pelo Austriaco Phil Auersperg, para uso próprio. Após algum tempo, onde os dois autores trabalharam individualmente e sem saber a respeito do projeto do outro. o primeiro release não oficial do ArchGenXML foi lançado e, desde então, mantido como parte de um projeto maior, o projeto Archetypes [arc, 2004a]. Ap ós uma negociação complicada, os projetos UML2AT e ArchGenXML decidiram unir esforços, idealizando uma quantidade maior de recursos, descartando aquilo os projetos tinham de ruim e agregando as recursos interessantes de cada projeto em um único código fonte. Atualmente, o projeto conta com um terceiro contribuidor efetivo, o Alemão Jensens Klein. Ele tem sido o responsável pela documentação do projeto e o suporte a geração de código para suporte a internacionalização de interfaces com usuário. 2. Plataforma de Desenvolvimento O ArchGenXML é uma ferramenta de linha de comando que interpreta arquivos no formato XML Metadata Interchange - XMI [xmi, 2004], um padrão definido pelo Object Management 123 124 5° WSL / 5° FISL Group - OMG [omg, 2004] que permite a representação de diagramas UML usando XML, e gera código Python [pyt, 2004] para o Archetypes, framework Python voltado ao desenvolvimento de aplicações de gerenciamento de conteúdo para o Plone [plo, 2004a]. O Plone é um sistema de gerenciamento de conteúdo que tem forte preocupação com design, usabilidade e acessibilidade, servindo como uma camada de interface amig ável para o Content Management Framework - CMF [cmf, 2004], framwork escrito pela Zope Corporation [zc, 2004] para tornar mais simples o processo de desenvolvimento de aplicaç ões de gerenciamento de conteúdo para o Zope [zop, 2004]. O Zope, por sua vez, é um servidor de aplicações web, escrito em Python e mantido pela Zope Corporation e sua comunidade de desenvolvedores. 3. Recursos Atualmente, o ArchGenXML está na versão 1.0. Essa release inclui recursos para a criação de diagramas de classes e a geração de produtos Archetypes. A versão 1.1 está sendo desenvolvida e incluirá suporte ao uso de interfaces e packages. Essa versão significou um grande avanço na ferramenta e, apesar de não ter sido lançada oficialmente, já pode ser baixada através do repositório CVS do projeto Archetypes. O ArchGenXML suporta a geração de código a partir de modelos construidos em diversas ferramentas de modelagem UML, dentre elas o GentleWare Poseidon [pos, 2004] (onde a ferramenta é considerada mais estável, por ser a ferramenta preferida pelos desenvolvedores do projeto e, por sua vez, primeiramente testada), o Tigris ArgoUML [arg, 2004], o Umbrelo UML Modeller [umb, 2004] (ferramenta do projeto KDE), o ObjectDomain [obj, 2004] (ferramenta comercial com versão demo que suporta até 30 classes) e o Sybase PowerDesigner [pow, 2004] (ferramenta comercial da Sybase). O ArchGenXML implementa um parser XMI que suporta as versões 1.0, 1.1 e 1.2 da especificação XMI. Em teoria, todas as ferramentas que representam os diagramas UML seguindo as especificações da OMG deveriam funcionar bem com o ArchGenXML. No entanto, é sabido que algumas ferramentas seguem a especificação XMI apenas parcialmente, como é o caso do KDE Umbrelo. Além da independencia de ferramenta de modelagem e respeito aos padr ões abertos, o ArchGenXML utiliza “tagged values” e “esteriótipos” para permitir a personalização do código fonte a ser gerado pela ferramenta. Essa idéia foi a principal contribuição do projeto UML2AT para o ArchGenXML. Como o Archetypes é um framework baseado no conceito de schemas (meta-definiç ões de como as classes devem ser contruı́das para representar conteúdos) a idéia base do ArchGenXML é permitir que, através de tagged values e esteriótipos, todas as propriedades de um schema possam ser modificadas, a fim de atender a semântica de cada modelo. Isso torna o processo de desenvolvimento bastante ágil e flexivel. Dentre os recursos necessários a um bom projeto orientado a objetos, o ArchGenXML consegue interpretar com exatidão associações (que são mapeadas para referências entre objetos), agregações e composições (que são mapeadas como classes com classes base com comportamento de pastas), cardinalidade nas associações (com exceção da cardinalidade de N para N que não é suportada pelo Archetypes), herança múltipla de classes e interfaces, realização de múltiplas interfaces e múltiplos esteriótipos. O ArchGenXML conta com uma opção que mantém o código fonte escrito dentro dos métodos das classes assim como a documentação definida na docstring de cada método. Isso permite, por exemplo, que a aplicação seja definida na ferramenta UML, código fonte seja gerado, que o código fonte gerado seja editado com um editor externo e que, ap ós essas modificações serem integradas ao código, modificações sejam feitas no modelo e novo código seja gerado sem prejudicar a codificação dos métodos feita anteriormente. Além do suporte a modelos UML realmente complexos, o ArchGenXML agrega fun- 5° WSL / 5° FISL 125 cionalidades interessantes à documentação dos sistemas, gerando código fonte totalmente documentado e em formato compatı́vel com ferramentas Python de geração de documentação a partir do código fonte. Por fim, o ArchGenXML possui suporte nativo a internacionalizaç ão, usando o i18ndude [i18, 2004] como ferramenta de apoio. 4. Projetos O ArchGenXML tem sido usado em produção a pelo menos 6 meses. O primeiro grande projeto onde o ArchGenXML foi utilizado foi o PloneMall [plo, 2004b], um framework completo para desenvolvimento de aplicações de comércio eletrônico para o Plone. O PloneMall é um projeto bastante complexo e que também é o resultado da união dos esforços da comunidade Plone para o desenvolvimento de uma solução de comércio eletrônico. Devido a complexidade de um projeto como esse, o ArchGenXML tem evoluı́do rapidamente a fim de responder as necessidades dos desenvolvedores. Em um futuro próximo, a versão 1.2 do ArchGenXML será lançada com suporte a um novo recurso: workflow. O desenvolvimento dessa funcionalidade foi idealizado pelos autores do projeto e incentivado por um projeto em desenvolvimento na UCS e que estará utilizando esse recurso em breve. A idéa principal será utilizar diagramas de estado associados a diagramas de classe para representar processos de negócio e conteúdos, respectivamente. Referências (2004a). Archetypes project. Disponı́vel em: http://www.sf.net/projects/archetypes. Acesso em: maio 2004. (2004b). Archgenxml project. Disponı́vel em: http://plone.org/documentation/archetypes/archgenxmlmanual. Acesso em: maio 2004. (2004). Content management framework - cmf. Disponı́vel em: http://cmf.zope.org. Acesso em: maio 2004. (2004). i18ndude project. Disponı́vel em: http://www.sf.net/projects/collective. Acesso em: maio 2004. (2004). Object management group - xmi. Disponı́vel em: http://www.omg.org. Acesso em: maio 2004. (2004a). Plone content management system. Disponı́vel em: http://www.plone.org. Acesso em: maio 2004. (2004b). Plonemall project. Disponı́vel em: http://www.plonemall.com. Acesso em: maio 2004. (2004). Poseidon. Disponı́vel em: http://www.gentleware.com. Acesso em: maio 2004. (2004). Python.org. Disponı́vel em: http://www.python.org. Acesso em: maio 2004. (2004). Sybase powerdesigner. Disponı́vel em: http://www.sybase.com/products/enterprisemodeling/powerdesigner. Acesso em: maio 2004. (2004). Tigris argouml. Disponı́vel em: http://argouml.tigris.org. Acesso em: maio 2004. (2004). Umbrello uml modeller. Disponı́vel em: http://uml.sourceforge.net/index.php. Acesso em: maio 2004. (2004). Umbrello uml modeller. Disponı́vel em: http://www.objectdomain.com/welcome.do. Acesso em: maio 2004. (2004). Xml metadata interchange xmi. Disponı́vel http://www.omg.org/technology/documents/formal/xmi.htm. Acesso em: maio 2004. (2004). Zope corporation. Disponı́vel em: http://www.zope.com. Acesso em: maio 2004. (2004). Zope.org. Disponı́vel em: http://www.zope.org. Acesso em: maio 2004. em: 126 5° WSL / 5° FISL 5° WSL / 5° FISL Sessão Técnica 9 DESENVOLVIMENTO II 127 128 5° WSL / 5° FISL 5° WSL / 5° FISL Considerações sobre controle de grupos em repositórios CVS durante a evolução de uma ferramenta web Daniel Cárnio Junqueira∗, Renata Pontin de Mattos Fortes 1 Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo Av. do Trabalhador São Carlense, 400 – Caixa Postal 668 13560-970 São Carlos, SP [email protected], [email protected] Abstract. To perform version control activities at Open Source projects, systems as CVS are often used. However, considerable extra efforts are made to ensure that users control has been made in such projects, and in many cases the desired control is not reached. VersionWeb is a tool that is being evolved to ease the versions control activities and to provide a better users control at Open Source projects development. This tool shall work as an extra layer to CVS. Resumo. Para realizar as atividades de controle de versões nos projetos de Software Livre, sistemas como CVS são freqüentemente utilizados. No entanto, grande esforço extra é necessário para se fazer o controle de usuários nesses projetos, e, muitas vezes, o controle desejado não é alcançado. VersionWeb é uma ferramenta que está sendo evoluı́da para facilitar as atividades de controle de versões e prover melhor controle de usuários no desenvolvimento de projetos de Software Livre, funcionando como uma camada extra do CVS. 1. Introdução Um software é composto por diversos artefatos, entre eles arquivos de código e de documentação. Durante seu desenvolvimento, um controle sobre as alterações que ocorrem nos arquivos de código e documentação se faz necessário. Gerenciamento de Configuração de Software (GCS) é a disciplina responsável por esse controle sobre as mudanças [Pressman, 2001, Sommerville, 2000]. Para realizar as atividades de gerenciamento de configuração de software, são utilizadas ferramentas de controle de configuração e de controle de versões. CVS é a ferramenta atualmente mais utilizada nos projetos de software livre, apesar de diversas falhas já terem sido detectadas [Reis, 2003]. As principais carências de CVS estão relacionadas com poucos recursos para gerenciamento de usuários e falta de suporte para operações com arquivos (renomear ou mover arquivos) [Berliner, 1990]. Para corrigir as dificuldades de CVS com gerenciamento de usuários, recursos do sistema operacional ou mecanismos de controle de arquivos e usuários precisam ser utilizados. Mesmo com a utilização destes recursos, muitas vezes o controle de permissões para usuários não é tão completo como se desejaria. Já as falhas relativas a arquivos muitas vezes não são corrigidas, e os usuários precisam utilizar recursos mais complicados quando precisam realizar essas operações. ∗ Apoiado pela FAPESP. 129 130 5° WSL / 5° FISL VersionWeb é uma ferramenta que foi inicialmente desenvolvida para funcionar como uma interface web para o CVS. Neste artigo relatamos uma evolução que está sendo feita na ferramenta a fim de torná-la uma camada extra para o CVS, que suporte o controle de usuários e permita o controle de permissões de acesso, além de oferecer mecanismos que permitam aos usuários efetuarem operações sobre os arquivos que estiverem em repositórios CVS. O restante deste artigo está organizado da seguinte forma: a seção 2 faz uma breve apresentação de como são utilizados os sistemas de controle de versões nos projetos de software livre. A seção 3 apresenta VersionWeb e as modificações que estão sendo feitas para torná-la uma aliada ao desenvolvimento de software livre. Por fim, a seção 4 apresenta as considerações finais. 2. Controle de Versões nos projetos de Software Livre As ferramentas de controle de versões são essenciais para o desenvolvimento de software livre. Elas são responsáveis pelo armazenamento da base do código dos projetos [Reis, 2003]. Essas ferramentas permitem que todas as mudanças de cada desenvolvedor sejam registradas, e, caso necessário, que recuperações de versões especı́ficas do código possam ser realizadas. Os projetos de software livre geralmente utilizam sistemas de controle de versões que possuem repositórios de código centralizados. O sistema mais utilizado nestes projetos é o CVS [van der Hoek, 2000]. Por seguir um modelo de desenvolvimento colaborativo, o acesso de leitura aos arquivos costuma ser sempre permitido a todos os usuários. No entanto, geralmente algum controle é exigido para acesso de escrita nos repositórios de código – dessa forma, todos os usuários podem submeter sugestões para os responsáveis pelos módulos dos projetos, e estes, se julgarem conveniente, integram as modificações ao repositório de código. A fim de permitir ao CVS que faça o controle de acesso aos repositórios, várias configurações adicionais são necessárias, e, muitas vezes, recursos do sistema operacional são utilizados. Além disso, operações como mover ou renomear arquivos não são suportadas diretamente pelo CVS, e, para serem realizadas, exigem a utilização de comandos administrativos do CVS ou outros métodos complicados. A próxima seção apresenta uma ferramenta que está sendo desenvolvida para permitir o controle de grupos no CVS. 3. VersionWeb VersionWeb é uma ferramenta que foi originalmente desenvolvida como uma interface web para o CVS [Moreira et al., 2002, Soares et al., 2000]. Está sendo evoluı́da para que funcione como uma camada extra para o CVS, que permita o gerenciamento de grupos de usuários com a utilização do mesmo. Uma estrutura hierárquica dos usuários foi planejada, conforme mostra a figura 1. Como é possı́vel ver, as seguintes categorias de usuários estão sendo criadas: Administrador geral: responsável pela ferramenta, pela configuração dos repositórios, criação de projetos e de administradores de projeto. Também podem criar outros administradores gerais. Administrador de projeto: responsável por cada projeto. Cada projeto tem apenas um administrador, mas este pode criar áreas dentro do projeto, e outros usuários po- 5° WSL / 5° FISL Figura 1: Estrutura hierárquica dos usuários em VersionWeb dem ser os responsáveis por estas áreas. Isto pode ocorrer, por exemplo, quando se tem várias equipes, responsáveis por diferentes partes de um software. Proprietários de áreas: são desenvolvedores que são denominados, pelo administrador do projeto, proprietários de áreas – no projeto Mozilla, por exemplo, são utilizados os “module owners” [Mockus et al., 2002]. Autores: são os desenvolvedores propriamente ditos. Os autores precisam ter permissão de escrita nas respectivas áreas em que estiverem trabalhando. A ferramenta está sendo implementada utilizando linguagem Python. Sua arquitetura foi planejada conforme a figura 2: estão sendo implementados diferentes módulos, cada um responsável por uma parte da ferramenta. Com isso, os módulos poderão ser utilizados em outras ferramentas, sejam elas ferramentas que precisem apenas de funcionalidades de controle de versões ou das outras funcionalidades disponı́veis nos módulos. Figura 2: Arquitetura de Versionweb: utilização de módulos Além de permitir o controle dos usuários no acesso a repositórios CVS, estão sendo incluı́das rotinas em VersionWeb que devem permitir a realização de algumas operações sobre os arquivos, como mover e renomear arquivos, mantendo o histórico das versões. A ferramenta também está sendo integrada com ViewCVS1 para permitir acesso público de leitura aos repositórios CVS. 1 Disponı́vel em http://viewcvs.sourceforge.net 131 132 5° WSL / 5° FISL 4. Considerações Finais O desenvolvimento de software livre tem avançado de maneira extremamente rápida, e um acompanhamento na evolução das ferramentas de suporte se faz necessário. Nesse contexto, este artigo apresenta a evolução que tem sido realizada na ferramenta VersionWeb, que pretende oferecer melhor suporte ao desenvolvimento de software livre. Mais especificamente, a ferramenta em sua nova versão visa atender a demanda de trabalhos em grupos sobre os repositórios CVS. Neste artigo, foram apresentados os principais requisitos, relacionados ao suporte a trabalho em grupos, que estão sendo considerados. Em seu estágio atual de desenvolvimento, a ferramenta funciona como uma camada extra ao CVS. No entanto, acreditamos que com apoio da comunidade em geral a ferramenta pode ainda evoluir muito, agregando inclusive funcionalidades do CVS e de outros sistemas de controle de versões, como o Arch2 , que utiliza repositórios distribuı́dos, tornando-se assim uma alternativa aos sistemas atuais que implemente os mais novos conceitos de gerenciamento de configuração de software. Referências Berliner, B. (1990). CVS II: Parallelizing software development. In Proceedings of the USENIX Winter 1990 Technical Conference, pages 341–352, Berkeley, CA. USENIX Association. Mockus, A., Fielding, R. T., and Herbsleb, J. D. (2002). Two case studies of open source software development: Apache and mozilla. ACM Trans. Softw. Eng. Methodol., 11(3):309–346. Moreira, D. d. A., Soares, M., and Fortes, R. P. d. M. (2002). VersionWeb: A tool for helping web page version control. Linux Journal. Pressman, R. S. (2001). Software Engineering: A Practitioners Approach with E-source. McGraw-Hill, 5th edition. Reis, C. R. (2003). Caracterização de um processo de software para projetos de software livre. Master’s thesis, Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação de São Carlos. Dissertação de Mestrado. Soares, M. D., de Mattos Fortes, R. P., and Moreira, D. A. (2000). Versionweb: a tool for helping web pages version control. In International Conference on Internet Multimedia Systems and Applications, pages 275–280, Las Vegas, EUA. Sommerville, I. (2000). Software engineering. Addison–Wesley, Wokingham [u.a.], 6th edition. van der Hoek, A. (2000). Configuration management and open source projects. In Proceedings of the 3rd International Workshop on Software Engineering over the Internet, Limerick, Ireland. 2 Disponı́vel em http://www.gnuarch.org 5° WSL / 5° FISL Primeiras Lições Aprendidas na criação de uma Fábrica de Software Open-Source Alexandre Alvaro1,3, Thiago Luiz Vieira de Lima Santos1, Paulo Rogério P. Andrade1, João Marcos P. Vasconcelos1, Jones Albuquerque2, Silvio Romero de Lemos Meira1,3 1 Centro de Informática – Universidade Federal de Pernambuco (UFPE) Caixa Postal 7851 – 50732-970 – Recife – PE – Brasil 2 DFM - Universidade Federal Rural de Pernambuco (UFRPE) 52171-900 – Recife – PE – Brasil 3 Centro de Estudo e Sistemas Avançados do Recife (CESAR) 50030-260 – Recife – PE – Brasil {aa2, tlvls, prpa, jmpv, srlm}@cin.ufpe.br, [email protected] Resumo. Pesquisa e esforços envolvendo fábricas de software têm sido apresentados ao longo dos anos na literatura. Entretanto ainda existe uma carência de relatos da criação de fábricas de software open-source para o desenvolvimento distribuído. Neste artigo serão apresentadas, brevemente, as etapas de criação de uma fábrica de software open-source e as lições aprendidas durante este processo. 1. Introdução Ao longo da última década, o desenvolvimento de software open-source tem atraído cada vez mais atenção. A rápida evolução de projetos de software de código aberto (OSS) como o sistema operacional Linux, browser Mozilla, IDE Eclipse, entre tantos outros, faz com que empresas tradicionais procurem meios de aproveitar o potencial do desenvolvimento de código aberto em suas atividades de desenvolvimento de software. Educação é um insumo essencial para processo produtivo de software, qualquer que seja ele. Em particular, devido à falta de expertise mundial nos processos de criação, sob demanda e em curto espaço de tempo, de fábricas de software para qualquer fim, especialmente para desenvolvimento distribuído de software, a Pós-graduação em Ciência da Computação da UFPE está experimentando, já pela segunda vez, o ensino prático do processo de estabelecimento, medição, afinação e operação real de fábricas de software distribuídas para desenvolvimento de software aberto. Em particular, a disciplina1 visa aplicar conceitos, técnicas e ferramentas de Engenharia de Software tradicional, analisando as intersecções e disjunções entre engenharia de software e o desenvolvimento de software aberto; e definir, montar (projeto piloto) e avaliar (aplicação real) uma Fábrica de Software Open-Source, analisando durante e a posteriori sua operação e gerando relatórios detalhados sobre o experimento. Este short paper é um primeiro relato de uma das fábricas (das três) em andamento na disciplina que está sendo ministrada no primeiro semestre de 2004. Um fator relativamente importante das fábricas de software OSS propostas na disciplina é que elas possuem clientes reais, ao contrário de um “projeto padrão OSS”, onde os detentores das especificações são os próprios desenvolvedores. Este é um diferencial o qual faz uma diferença enorme na complexidade do processo, tornando as negociações com o cliente e o controle de mudanças do projeto - entre outros mecanismos de controle e negociações, como prazos, preços, itens - essenciais para este tipo de fábrica que esta sendo considerada. A Fábrica de Software Open-Source USInA (United Software Infra-structure Alliance) é composta por oito estudantes de Mestrado e Doutorado, que se propuseram a estender os objetivos da disciplina para prover artefatos do ciclo de desenvolvimento de software (processo, modelos, procedimentos, guidelines) para que, eventualmente, a comunidade de software open1 http://www.cin.ufpe.br/~in953 133 134 5° WSL / 5° FISL source pudesse ser beneficiada com as experiências e conhecimentos adquiridos no correr dos estudos da disciplina. O artigo está organizado da seguinte forma: a Seção 2 apresenta o processo de criação da fábrica de software open-source, ressaltando as lições aprendidas durante sua elaboração; a Seção 3 apresenta o estudo de caso que está sendo desenvolvido pela fábrica; e na Seção 4 são apresentadas as conclusões e perspectivas de trabalhos futuros. 2. Visão Geral do Processo de Criação da Fábrica Em função do conhecimento dos membros da equipe em projetos reais de empresas de desenvolvimento de software, constatou-se que a primeira prioridade era disponibilizar uma boa infra-estrutura (como sistemas de controle de versão, listas de discussão, ferramenta para atribuição de tarefas, entre outras). Tais ferramentas possibilitam que os membros da USInA, geograficamente distribuídos, trabalhassem colaborativamente e de forma organizada. Para atender a essa necessidade, estão sendo utilizados dois sites que provêm suporte para tal necessidade, o tigris e o sourceforge. No primeiro está hospedado o site da fábrica USInA2, contendo o processo e os artefatos a serem gerados durante o desenvolvimento. No segundo foi criada uma instância do processo da fábrica USInA para o desenvolvimento de um estudo de caso específico, no caso de simulação de um aquário, chamado Simulare3, o qual será melhor descrito na Seção 3. Após esta primeira etapa, a equipe da fábrica se concentrou no desenvolvimento do processo da USInA, identificando os artefatos a serem gerados e construindo modelos e procedimentos de uso para tais documentos. Nesta fase, diversos processos e metodologias de desenvolvimento presentes na literatura serviram como base, como o XP [1], o RUP [2], entre outros [3,4,5]; assim como diversos relatos de experiências no desenvolvimento de software Open-Source [6,7,8,9]. Visto isso, foi definido um macro-processo, o qual pode ser visto na Figura 1. Nele observamos cinco módulos distintos responsáveis por cada uma das fases de desenvolvimento do software desde a sua fase de pré-venda, até a pós-venda. Figura 1. Processo de Desenvolvimento As etapas do processo são: 1. Ciclo comercial: O ciclo comercial define o processo de pré-venda do software. Esta etapa envolve atividades como: identificação de oportunidades de negócio; apresentação da fábrica para possíveis clientes (necessária pela abordagem singular que é a de 2 3 http://usina.tigris.org http://sourceforge.net/projects/simulare 5° WSL / 5° FISL 2. 3. 4. 5. desenvolvimento de OSS); recebimento e resposta a requisições de propostas (RFP); negociação de contratos incluindo definição do nível de serviços prestado (SLA); Planejamento: Esta etapa define a infra-estrutura necessária à realização de projetos de acordo com o que foi definido na RFP e no SLA. Suas atividades podem ser antecipadas de forma a tornar as respostas a RFPs e SLA mais completas; Acompanhamento: Esta etapa define todo o procedimento de monitoramento da etapa de desenvolvimento. Todo desenvolvimento deve ser acompanhado de perto para permitir a re-priorização de requisitos, gerenciamento de riscos, resolução de conflitos, e fornecimento de relatórios ao cliente indicando o status do desenvolvimento; Desenvolvimento: Esta etapa é dividida em diversas fases. O esforço necessário em cada fase é variável de acordo com o estágio de evolução do projeto. Em cada iteração da etapa de desenvolvimento, atividades de todas fases são executadas; e Suporte comercial: Após a geração de cada release do sistema a fábrica pode fornecer uma série de serviços associados, como: a instalação do software, treinamentos para a utilização da ferramenta, e a confecção de manuais e tutoriais do software. Estas etapas abrangem, além das atividades de desenvolvimento de software, todo o processo de pré e pós venda, não contemplado por metodologias consolidadas como o RUP [2]. Para cada uma das etapas são disponibilizados modelos dos documentos que devem ser confeccionados antes que a etapa seguinte tenha início. Maiores detalhes do processo de desenvolvimento da fábrica de software open-source USInA, pode ser encontrado no documento de Processo da USInA em seu site. 2.1. Primeiras Lições Aprendidas Através do processo de criação da fábrica e do processo de desenvolvimento de software opensource, as primeiras lições já puderam ser observadas, descritas a seguir: - Diferenças de conhecimento: Na criação da fábrica, é muito importante que alguma(s) pessoa(s) tenham iniciativa prática, pois idéias boas surgem, entretanto pouco é colocado em prática; - Infra-Estrutura: Antes de criar uma fábrica de software open-source, a primeira prioridade é a disponibilização de uma boa infra-estrutura para não impactar nas atividades da fábrica futuramente; - Processo Leve: O processo de desenvolvimento de uma fábrica de software distribuída open-source deve ser o mais leve possível. Processos pesados simplesmente seriam ignorados por colaboradores externos ou pior, desencorajaria a participação destes. O processo deve contemplar o mínimo para garantir o entendimento da fábrica por parte do cliente e facilitar a colaboração entre os envolvidos no desenvolvimento do software; - Releases Freqüentes: A geração de releases freqüentes afeta positivamente a motivação dos colaboradores, que podem ver o resultado de seu esforço em pouco tempo. Estas versões intermediárias também ajudam a refinar os requisitos junto ao cliente; - Processo Iterativo e Incremental: De uma forma geral, a maioria dos OSS que obtiveram sucesso são desenvolvidos de forma iterativa e incremental. Assim, o processo de desenvolvimento deve contemplar isso; - Integração Contínua: As vantagens da integração contínua [1,10] são ressaltadas em projetos open-source, contudo, é necessário cuidado durante sua implementação. Um controle sobre quem pode colaborar diretamente é indispensável; - Disseminação de responsabilidades entre os colaboradores, conceito de core groups: Mais de um colaborador divide a mesma responsabilidade de um papel dentro da fábrica. Isso evita “gargalos” no processo quando se dá a ausência de um colaborador e, facilita a distribuição colaborativa de atividades; 135 136 5° WSL / 5° FISL - Distribuição colaborativa de atividades: Com o conceito de core-groups, a delegação de atividades se torna mais ágil. Uma vez finalizada uma etapa, seus responsáveis (coregroups) delegam tarefas para colaboradores responsáveis das etapas seguintes; e - Dispositivos de comunicação assíncronos: A incompatibilidade existente entre os horários disponíveis dos membros da USInA reflete bem a realidade de um desenvolvimento globalmente distribuído, o que é bastante comum para projetos opensource. Meios de comunicação assíncronos, como e-mail e listas de discussão, são favorecidos por possibilitarem que cada um colabore quando tiver disponibilidade. 3. Estudo de Caso Para validar o processo de desenvolvimento da fábrica USInA, foi requisitado pelo cliente (professores da disciplina) a realização do projeto e implementação de um Simulador de Aquário. Dentro das diversas tipologias de sistemas ambientais, o aquário pretendido classificase como sistema isolado, controlado, complexo e organizado. Possui como fundamento algorítmicos, os modelos matemáticos probabilísticos de otimização. Com isso, pretende-se obter um modelo de conteúdo plenamente especificado e estruturado estocástico. Este sistema está em desenvolvimento com o intuito de validar o processo proposto de uma fábrica de software open-source, cujos releases iniciais encontram-se no site do projeto Simulare. Após isto, haverá a re-calibração da fábrica de software e o projeto piloto será estendido, podendo haver mudanças de requisitos por parte do cliente, no sentido de validar o processo em um caso real dentro de uma comunidade open-source. Essa extensão está prevista para estar em produção até agosto de 2004, quando um relatório final será disponibilizado. Maiores detalhes do andamento do projeto podem ser vistos no site do projeto Simulare. 4. Conclusões e Trabalhos Futuros Este trabalho apresentou as primeiras experiências da criação de uma fábrica de software opensource. As lições relatadas auxiliam e servem como ponto de partida para que novas comunidades de software open-source possam surgir mais estruturadas e organizadas. Como trabalhos futuros, está o amadurecimento do processo de software open-source proposto, através da extensão do estudo de caso analisado e da interação com a comunidade open-source. Ainda, ao final da disciplina, todo o conhecimento adquirido e mais o estado atual do projeto estarão abertos para a comunidade open-source para novas contribuições. 5. Referências [1] K. Beck, Extreme Programming Explained: Embrace Change, Addison-Wesley, 1st Edição, 1999. [2] Rational Software Corporation, RUP - Rational Unified Process, Disponível em: http://www306.ibm.com/software/awdtools/rup. Consultado em Maio 2004. [3] L. A. Norin, Open-Source software development methodology. Dissertação de Mestrado em Desenvolvimento de Sistemas e Engenharia de Software. Luleå University of Technology, 1999. [4] P. Abrahamsson, et. al., Agile software development methods. Relatório Técnico, Finlândia, 2002. [5] C. Larman, Agile and Iterative Development: A Manager's Guide. Addison-Wesley. 1st Edição, 2003. [6] D. Hart, Faster, Better, Cheaper: Open-Source Practices May Help Improve Software Engineering. Disponível em: http://www.nsf.gov/od/lpa/news/03/pr03132.htm. Consultado em Maio 2004. [7] B. Fitzgerald, D. L. Parnas, Making Free/Open-Source Software (F/OSS) Work Better. Proceedings do Workshop da Conferência XP2003, Genova, 2003. [8] W. Scacchi, Understanding the Requirements for Developing Open Source Software Systems, IEEE Proceedings, Vol. 149, No. 1, pp.24-39. 2002. [9] The Cathedral and the Bazaar. Disponível em: http://www.catb.org/~esr/writings/cathedralbazaar/cathedral-bazaar. Consultado em Abril de 2004. [10] M. Fowler, M. Foemmel, Continuous Integration. Disponível em: http://www.martinfowler.com/articles/continuosIntegration.html. Consultado em Maio de 2004. 5° WSL / 5° FISL OCONGRA - Ferramenta para geração de Grafos de Controle de Fluxo de Objetos Paulo Roberto de A. F. Nunes, Ana C. V. de Melo Universidade de São Paulo Instituto de Matemática e Estatística Departamento de Ciência da Computação [email protected], [email protected] 9 de maio de 2004 Resumo Existem diversas ferramentas que auxiliam a realização de testes em programas orientados a objetos. No entanto exigem a aquisição de licenças de uso. Neste artigo é apresentada uma ferramenta de código aberto que utiliza o critério de análise de uxo de objetos. para construção de um grafo de controle de uxo com o objetivo de facilitar a análise e geração de testes. Abstract Many testing tools were developed to help us to get good results in testing oriented objects programs. However, we need to get a non-free license of use. This paper presents a open source tool that build an Object Control Flow Graph to support system analyses and generating testing cases. 1 Introdução O teste de programas é uma fase complexa no desenvolvimento de software. Em sistemas complexos, os quais envolvem diversas atividades de produção, a probabilidade de encontrarmos falhas na programação é muito alta [4]. Para diferentes paradigmas de desenvolvimento com diferentes características, são necessárias técnicas de testes que abordem essas características para que erros sejam descobertos. O paradigma de Orientação a Objetos (OO) apresenta diferenças em relação ao de programação procedural. Requisitos de teste aplicáveis a sistemas procedurais tornam-se inadequados para os testes de sistemas Orientados a Objetos - os requisitos mudam de acordo com o paradigma. Dessa forma, alguns critérios de teste existentes para o paradigma prodedural foram adaptados para o OO. Existem atualmente diversas técnicas para testes OO, como por exemplo, baseado em estado [2], teste incremental [3], todos os caminhos [1], baseado no uxo de objetos [5], etc. A análise de uxo de objetos segue uma estratégia de validação que se baseia na cobertura total de estados de transformação de cada objeto do sistema. Tais transformações são denotadas pela redenição de valores para os atributos dos objetos através da passagem de mensagens entre eles. Para monitorar o comportamento de cada um dos objetos são analisados todos os pares de denição e uso, ou seja, os locais onde cada objeto é denido ou usado. Um objeto é denido quando o construtor do objeto é invocado, um atributo é denido (tem seu valor alterado) ou um método que inicializa ou modica o(s) atributo(s) é invocado. Um objeto é usado quando 137 138 5° WSL / 5° FISL um de seus atributos tem seu valor utilizado, um método que utiliza o valor de um de seus atributos é invocado ou o objeto é passado como parâmetro. Em [5], Chen & Kao denem 5 passos para a construção de um grafo de controle de uxo de objetos (GCFO) - que consiste basicamente na ligação entre as classes do sistema e seus métodos - e os pares de denição-uso (du): criar o conjunto de denição e uso; construir o GCFO inicial (somente nós com classes e métodos); adicionar ao grafo as arestas intra-métodos; adicionar ao grafo as arestas inter-métodos; selecionar os pares du. A cobertura de todos os pares du aumenta a probabilidade de se encontrar falhas no programa. Com o grafo criado torna-se muito mais fácil a visualização do sistema e também a identicação dos pares du. A comercialização de ferramentas desenvolvidas para testes muitas vezes inviabiliza a aquisição das mesmas fazendo com que possivelmente haja perda de qualidade no produto nal. Diante disso surge a necessidade de uma ferramenta com código aberto que auxilie os testes orientados a objetos. A OConGra (Object Control Graph): uma ferramenta para geração de grafos de controle de uxo de objetos. é um software livre que aplica a técinica sugerida em [5] que gera um grafo e possibilita a elaboração de casos de testes mais precisos. A Seção 2 apresenta as características principais da ferramenta, onde são abordados os passos executados pela ferramenta para geração do grafo. A Seção 3 detalha um exemplo de funcionamento da ferramenta, onde é lido um sistema e em seguida apresentado o resultado obtido. Finalmente, a Seção 4 conclui apresentando outras utilizações para a ferramenta e propostas de trabalhos futuros. 2 Características da Ferramenta A OConGra recebe como entrada um sistema (escrito em Java) e tem como saída o grafo de controle de seus objetos. O usuário, através de interface gráca, designa o local onde estão localizados os arquivos fonte do sistema. Após a análise de cada classe do sistema, a ferramenta produz o grafo e o conjunto de pares du. 2.1 Geração do Grafo A construção do GCFO de um dado sistema obedece aos mesmos passos sugeridos em [5]. Dessa forma, a ferramenta foi desenvolvida com base nesses passos. A seguir serão descritas as fases executadas pela OConGra para a geração do GCFO e o conjunto de pares de denição e uso. 1. Leitura e Identicação do Projeto: o usuário especica o local do projeto. O software então lê as classes e organiza internamente as informações; 2. Construção do OCFG com as classes-mãe: baseado nos resultados da fase anterior, será construído o grafo contendo a relação entre cada classe do sistema lido na entrada. Assim, essas classes terão suas chamadas de métodos denotadas; 3. Identicação das denições-usos através do OCFG: com o grafo denido, as mudanças de estado dos objetos poderão ser analisadas com maior precisão. Analisando o grafo, o software identicará cada denição-uso utilizada pelas classes do sistema; 4. Atualização do OCFG baseada nas denições-usos: a identicação das denições e usos (passo anterior) possibilita a implementação de alterações no grafo obtido no passo 2, criando assim um novo grafo; 5. Geração gráca dos resultados obtidos: o grafo encontrado após as análises do sistema é desenhado e exibido de forma gráca ao usuário. 5° WSL / 5° FISL 2.2 Arquitetura da Ferramenta O sistema está sendo desenvolvido em Java com a utilização da ferramenta Eclipse [6]. Possui aproximandamente 3500 linhas de código. A arquitetura do sistema é resumida em três partes: Principal, Estrutura Java e Geração de Grafos. A parte Principal é responsável pela interface com o usuário. Ela lê os sistemas (através da parte responsável pela estrutura Java) e exibe como resultado o GCFO (através da parte responsável pela geração de grafos). Na parte Estrutura Java é feita a leitura de todos os arquivos do sistema (designado pelo usuário) e organizado de forma a facilitar a geração do GCFO. E nalmente, a Geração de Grafos recebe a estrutura criada e constrói o grafo nal. 3 Um Exemplo de Uso Para exemplicar o funcionamento da ferramenta foi criada uma aplicação simples que instancia uma classe para conversão de unidades de temperaturas: kelvin <-> fahrenheit, celsius <-> kelvin, fahrenheit <-> celsius. A classe principal contém um objeto t Temperatura - como pode ser visto na Figura 1 - que é utilizado para conversões e para exibir os valores de unidades especícas. Figura 1: Um programa Java para conversão de unidades de temperatura. Inicialmente, após ter informado a localização do projeto, o software exibe a estrutura dos arquivos lidos: nome das classes e suas heranças, seus respectivos métodos e quais números de linhas eles aparecem. A Figura 2 mostra as denições e os usos presentes no método main da classe App, conforme enunciado anteriormente. Cada linha que possui um objeto é vericada a ocorrência de uma denição ou de um uso. Figura 2: Denições e Usos do método main da classe App. Já a Figura 3 mostra o grafo correspondente ao exemplo. Após identicar a estrutura do sistema o programa constrói esta saída gráca. Após identicar as denições-uso e o grafo, é necessário exercitar os pares pelo menos uma vez. Para isso são criados os seguintes testes: (0,0) - exercita o par (10, 13) da classe App - e (1,0) - exercita o par (10,15) da classe App. Esses dois testes exercitam todas as intanciações do objeto t. 139 140 5° WSL / 5° FISL Figura 3: Grafo de controle de uxo da aplicação. 4 Conclusões Esse artigo apresentou a ferramenta OConGra utilizada na geração de grafos de controle de uxo de objetos. Além da utilização principal, a ferramenta nos auxilia na geração de bons dados para testes, pois garantem a cobertura total dos casos de denição e uso de objetos. Com isso, caso haja um erro, a probabilidade de encontrarmos se torna maior, pois os objetos serão exercitados ao menos uma vez (segundo a técnica [5]). A OConGra pode ser utilizada no auxílio educacional em matérias de Engenharia de Software na geração gráca de grafos. Finalmente, por ser desenvolvida em Java, há a possibilidade de um projeto para adicioná-la ao Eclipse como um plug-in, o que será de grande utilidade para desenvolvedores, pois ao gerar os ".class"poderão também gerar os grafos e também o conjunto de denição e uso. Agradecimentos: Ao CNPq pelo apoio nanceiro e a todos aqueles que participam deste projeto. Referências [1] CHAIM, M. L.. Depuração de Programas Baseada em Informação de Teste Estrutural. PhD thesis, Faculdade de Engenharia Elétrica e de Computação da Universidade de Campinas, Novembro/2001. [2] PINTO, I. M. and PRICE, A. M. A.. Um sistema de apoio ao teste de programas orientados a objetos com uma abordagem reexiva. In XII Simpósio Brasileiro de Engenharia de Software, pages 87-102, 1998. [3] HARROLD, M. J., MCGREGOR, J. D. and FITZPATRICK, K. J.. Incremental testing of object-oriented class structures. In international Conference on Software Engineering, pages 68-80. IEEE Computer Society Press, 1992. [4] PRESSMAN, R. S.. Software Engineering. McGraw-Hill, 2001. [5] CHEN, M. and KAO, H. M. Testing Object-Oriented Programs - An integral aproach. In . Proccedings of the Tenth International Symposium on Software Reliability Engineering. IEEE Computer Society Press, 1999. [6] PROJETO ECLIPSE. Disponível no site Eclipse, URL: http://www.eclipse.org. Consultado em 15/08/2003. 5° WSL / 5° FISL Sessão Técnica 10 DESENVOLVIMENTO III 141 142 5° WSL / 5° FISL 5° WSL / 5° FISL Plataforma Mono: Estrutura e Utilização do framework .NET como Software Livre1 Quéli Giaretta2, Jacques Duílio Brancher Universidade Regional Integrada do Alto Uruguai e das Missões - Campus de Erechim Av. Sete de Setembro, 1621 - Centro - Erechim - RS [email protected], [email protected] Abstract. This paper presents a general view about the Mono Project. The basic idea is to show the development of the platform, the operation structure, specifying the advantages and the news that Mono makes available together with the new tecnologies that it implements. The programming languages that can be used to create new applications, mentioning the main projects under development that use this framework, and also a brief description of the Mono Brasil project. Resumo. Este artigo apresenta uma visão geral do Projeto Mono. A idéia básica é mostrar o desenvolvimento da plataforma, a estrutura de funcionamento, especificando as vantagens e novidades que o Mono disponibiliza junto com as novas tecnologias que o mesmo implementa. As linguagens de programação que podem ser utilizadas para a criação de novas aplicações, citando os principais projetos em desenvolvimento que utilizam desse framework, e também uma breve descrição do Projeto Mono Brasil. 1. Introdução O Projeto Mono é uma iniciativa para desenvolver uma versão baseada em GNU/Linux, como Software Livre, da plataforma de desenvolvimento .NET da Microsoft. Segundo [Kuhn 2003] ele incorpora componentes-chave do .NET e um suite completo de bibliotecas de classe. O projeto criado em 2001 é liderado pela Ximian, empresa software livre que levou o desktop GNOME a um grande sucesso. Tem por objetivo permitir que os desenvolvedores criem aplicações .NET e rodem elas sobre o Windows ou qualquer plataforma suportada pelo Mono, incluindo GNU/Linux, todos os programas desenvolvidos sobre a plataforma .NET passam a ser híbridos, podendo ser executados em qualquer ambiente que possua um framework .NET instalado. Esta disponível a versão beta do Mono, compilador C# e máquina virtual versão 1.0, suporte x86, PowerPC, SPARC e S390, Java VM para rodar aplicativos Java e .NET, suporte para Linux, MacOS X, Windows, Solaris e HP-UX. Segundo [Roith e Hansen 2004] a plataforma .NET se tornara portável, em breve. Vários projetos já estão em andamento, uns para o desenvolvimento da própria ferramenta e outros para aplicações especificas. Um exemplo disso é o MonoBasic que a comunidade brasileira ajuda desenvolver, trata-se de um compilador .NET dentro do projeto Mono. Outro projeto interessante é o Mono A.I., conforme [Binhara 2003] o projeto compreende uma série de ferramentas voltadas a programação de agentes e sistemas de inteligência artificial. 2. Arquitetura do framework O Mono, é um ambiente multilinguagem orientado a objetos, possui características para facilitar a reutilização de classes entre as linguagens além de facilitar a estruturação de arquiteturas e soluções. Segundo [Roith e Hansen 2003] o Mono organiza as APIs em divisões lógicas chamadas namespaces, sincronia entre os headers e a implementação, os metadados que substituem os headers são completos e estão dentro das montagens chamadas de assemblies, junto com o código. Além disso há um esquema de controle de versões, para evitar o uso de versões incompatíveis de classes. 1 Integrante do projeto AITEM/EAD - Edital Software Livre - CNPq 401.193/2003-9 2 Estagiária do projeto AITEM/EAD - URI - Campus de Erechim 143 144 5° WSL / 5° FISL O Mono engloba uma série de tecnologias em seus class libraries equivalente aos disponíveis para Java. Mas no geral é mais fácil encapsular funcionalidades já prontas (como o GTK ou o QT) em Mono do que em Java (via JNI), e normalmente obtendo-se melhor desempenho. A Common Language Infrastructure (CLI), conhecido como runtime, implementa a execução do Mono, usado para compilar uma aplicação .NET. Faz uma chamada ao runtime definindo os parâmetros necessários. É uma máquina virtual que contém um carregador (loader) de classes (carrega as classes que um programa usa para executar sua funcionalidade), um compilador JIT (justin-time), que compila o programa na sua primeira utilização gerando um código para a CPU nativa e um ambiente de garbage collection, que gerencia o uso da memória. A CLI tem a mesma função que a Java Virtual Machine (JVM) da linguagem Java. Segundo [Binhara e Teixeira 2003] a CLI é o componente que irá permitir que programas escritos em C# sejam executados em sistemas operacionais não-Windows, como o Linux. O mecanismo de garbage collection, evita uma série de problemas (basicamente com ponteiros perdidos, e desperdício de memória) que normalmente estão presentes no desenvolvimento C/C++, pela dificuldade em eliminá-los sem um longo processo de depuração. Conforme [Roith e Hansen 2003], as bibliotecas de classe fornecem uma gama de facilidades para o desenvolvimento das aplicações. Escritas primeiramente em C#, podem ser usadas com qualquer linguagem. A biblioteca de classe é estruturada com namespaces, e desenvolvida com bibliotecas compartilhadas denominadas assemblies. Quando falamos da estrutura do .NET, estamos consultando primeiramente estas bibliotecas de classe, é o elemento que permitirá que as aplicações realizem funções vitais, tais como processamento XML, entrada/saída e conexão a redes. O projeto Mono pretende criar uma biblioteca que seja compatível com a CLI da Microsoft, permitindo que os programas escritos para Linux/Mono sejam executados com a mesma funcionalidade no Windows/.NET. Além disso, existe uma grande expectativa de que a comunidade código livre crie bibliotecas adicionais para funcionalidades extras compatíveis com a CLI. Todo código desenvolvido para o framework .NET é dito gerenciado, ou seja, o executável não contém código Intel x86 e sim código MSIL com chamadas à biblioteca de classes; o gerenciamento de memória é feito automaticamente com o uso do garbage collector; as atribuições têm o tipo validado, a princípio o sistema de tipos é inviolável; operações que podem comprometer a segurança, exigem permissões especiais. Essas qualidades permitem rodar programas de origem duvidosa, sem que estes possam comprometer a segurança e integridade do sistema. 3. Tecnologias Implementadas 3.1. Compilador C# (Padrão ECMA 334) Ambiente de Execução CLI (Common Language Infrastructure). Permite que as aplicações rodem independentes de plataforma. A linguagem C# é uma boa migração para quem vem do C padrão do GCC, ou do C++ do mesmo compilador. Traz orientação a objetos plena, sintaxe para metadados embutidos (atributos), distinção sintática para definição de propriedades e campos, e unicidade sintática para o uso de ambos. É a aposta da Microsoft na concorrência com o Java, oferecendo todos os recursos de uma linguagem de programação moderna, como orientação a objetos, suporte para interfaces/componentes e, principalmente, código (managed code). O código criado pelo C# não é específico para um determinado tipo de máquina. Isso permite que o mesmo código seja executado em uma variedade de máquinas, tais como PCs, máquinas RISC, handhelds ou palms e celulares. É necessário que exista uma máquina virtual (CLI) para cada tipo de máquina em que o código será executado. Outra vantagem é o aumento na segurança e na estabilidade do código gerado. Isto é obtido pelo modo como o código e a máquina virtual tratam a execução , impedindo qualquer operação que ponha a máquina em risco. Este foi um dos principais motivos para a mudança de rumos da Ximian, que antes desenvolvia usando linguagens tradicionais como C. Todo programa criado pelo compilador C# é dito verificável. Conforme [Roith e Hansen 2003] isto quer dizer que o compilador JIT pode, em tempo de execução/ compilação, verificar e garantir que o programa não faça nenhuma operação que comprometa a segurança e integridade do sistema. 5° WSL / 5° FISL O MCS (The Ximian C# Compiler), segundo [Roith e Hansen 2003] é atualmente capaz de compilar-se e compilar aplicações C# (ele inclui uma suite de testes para serem usados). É usado também para compilar o Mono. Há ainda algumas áreas que não foram abrangidas pelo compilador Mono, mas são muito poucas (atributos de segurança). A suite de testes é mantida para seguir o progresso do compilador e os vários programas rotineiramente compilados e executados. O MCS não compila o código original, mas um tipo do bytecode, que possa ser processado pelo runtime do Mono. 3.2. VB O VisualBasic.NET trás muitas funcionalidades novas, tornando-se poderoso como C# e outras linguagens. Graças às CLIs escritas em MonoBasic pode ser usado da mesma maneira que C#. De acordo com [Roith e Hansen 2003], o Mono Basic.NET Compiler é um compilador CLI para a linguagem VB, uma extensão da versão VisualBasic.NET. É baseado no compilador do MCS e ainda em forte desenvolvimento, a idéia é suportar 100% da sintaxe .NET (arquivo .vb) e oferecer extensões para fontes MonoBasic (arquivos .mbs), que podem ser misturados na mesma compilação. 3.3. ADO.NET Mono oferece uma relação comum às bases de dados. Muito portátil, funciona em todas as plataformas. ADO.NET está sendo implementado e já está bastante funcional. Segundo [Roith e Hansen 2003] é uma API de acesso a dados, em especial bases de dados relacionais. A Microsoft prove ao .NET os provedores de base de dados para MS SQL Server, Oracle, ODBC, Ole-DB e XML. O Mono pode acessar as mesmas bases, e ainda Database MySQL, PostgreSQL, e IBM DB2. Bases não disponíveis podem ser utilizadas através de ODBC ou OLE-DB. Ambos são executados em sistemas Windows e Linux. Todas essas bases de dados tem uma interface em comum. Há um provedor de XML, ele permite acessar arquivos XML em uma base de dados. 3.4. ASP.NET Baseado em [Roith e Hansen 2003] pode-se dizer que o ASP.NET é o melhor framework que se tem para desenvolvimento de WebSites e WebServices. É uma linguagem independente. Você pode acessar todas as características das bibliotecas de classe e isso é muito rápido, porque todas as bibliotecas são compiladas. ASP.NET apresenta WebForms, que criam elementos HTML acessando objetos e organizando no HTTP, é possível desenvolver no Windows e rodar em Linux. 3.5. Gtk# Segundo [Roith e Hansen 2003] Gtk # (Gtk sharp) é uma ligação da linguagem C# para o toolkit do Gtk+ e outras bibliotecas que fazem parte da plataforma do GNOME. Chamado de GIMP toolkit porque se originou do programa da manipulação da imagem do GNU (GIMP), mas tem sido usado em um grande número de projetos de software, incluindo GNU Network Object Model Environment (GNOME). O GTK# faz a ligação entre as classes Mono e o Gnome. GTK+, Glade, gnome-db e GStreamer são suportados. A grande maioria de suas bibliotecas são suportadas por sistemas Unixes, MacOS X e Windows e estão integradas no desktop Gnome. Há também um esforço para que se consiga exportar um widgets GTK+ Windows e MacOS X. 3.6. QT# Fornece uma ligação às bibliotecas de desenvolvimento do KDE. A base das bibliotecas estão disponíveis também para Windows e MacOS X, mas são livres somente no Linux. 3.7. XML Mono tem o suporte completo para Xml, com muitos parsers e bibliotecas de processamento. 4. IDEs - Eclipse & #Develop 145 146 5° WSL / 5° FISL O Eclipse é uma plataforma de desenvolvimento opensource, extensível e Java-based, que integra ferramentas de desenvolvimento, baseada em plug-ins. Com a multi-language do Mono, este parece ser um projeto muito importante para o futuro desenvolvimento das aplicações neste framework. O plugin C# desenvolvido para Eclipse embora faltando algumas características interessantes, implementa a estrutura e sintaxe da linguagem. Um outro ponto extra é que, o eclipse pode usar o toolkit Gtk2 no GNU/Linux, utilizado por usuários de Gnome, porque se adapta melhor ao ambiente. O #Develop (SharpDevelop) é uma IDE para C# e projetos do VB.NET da plataforma do NET da Microsoft. É open-source (GPL), e mais completo que o Eclipse, a única desvantagem é, não funcionar em Linux/Mono, pois System.Windows.Forms não são suportados, ainda. Tem editor de código C#, ASP.NET, ADO.NET, XML, HTML. 5. Projeto Mono Brasil Tem por objetivo dar aos desenvolvedores brasileiros mais uma opção frente às plataformas proprietárias. O projeto pretende criar uma central de informações sobre a comunidade. Incentivar o uso da plataforma em projetos de pesquisa, fornecendo todas as informações necessárias para a formação de novos desenvolvedores. Busca de recursos para desenvolvimento de projetos de visibilidade nacional. O website do projeto http://monobrasil.softwarelivre.org/, já possui diversos contribuintes, oferece sessões de documentação, artigos, how-to, etc. e, explicações detalhadas de como instalar o Mono. 6. Conclusão Com o objetivo de trazer para o desktop Linux a facilidade de desenvolvimento gerado pelo framework .NET o Mono é uma peça chave para o sucesso do desktop no Linux, especialmente por atacar sérios problemas na área de estabilidade/ compatibilidade de APIs. Após ter apresentado uma visão geral do Projeto Mono, o que precisa ser feito é sensibilizar o desenvolvedor livre da importância, para tais características: Linguagens modernas (orientadas a objetos) e ambiente menos suscetível a falhas catastróficas (coleta de lixo), menos e melhor depuração, APIs estáveis e versionadas. Portabilidade binária para Windows e outras plataformas. Incomparável suporte a Web Services seguros. E a mais importante, GPL para o runtime, compiladores, ferramentas, e algumas bibliotecas de terceiros (como a NPGSQL), e a total liberdade na licença de suas bibliotecas e aplicações que executem sobre o Mono. 7. Agradecimentos O presente trabalho foi realizado com o apoio do CNPq, uma entidade do Governo Brasileiro voltada ao desenvolvimento científico e tecnológico. Os autores também agradecem a URI - Campus de Erechim, pelo financiamento da bolsa de iniciação científica da acadêmica Quéli Giaretta. 8. Referências Bibliográficas BINHARA, A., TEIXEIRA R. Projeto Mono Brasil (2003) http://monobrasil.softwarelivre.org/. Último acesso em Maio, 2004. KUHN, Bradley M. Free Software Foundation (2003). http://xmundo.net , Abril, 2004. ROITH, J. e HANSEN, M. W. Mono-Doc (2003) http://Mono.ximian.com:8080, Março, 2004 ROITH, J. e HANSEN, M. W. The Mono Handbook (2003) http://www.gotmono.com/docs. Março, 2004. Softsteel Solutions - C# Tutorial (2003). Disponível em: http://www.softsteel.co.uk/tutorials/cSharp/cIndex.html. Fevereiro, 2004. Microsoft .Net Framework Home. http://msdn.microsoft.com/netframework/. Abril, 2004. 5° WSL / 5° FISL Mico - University Schedule Planner Alexandre Freire , Alfredo Goldman , Carlos Eduardo Ferreira , Christian Asmussen , Fábio Kon 1 Department of Computer Science Institute of Mathematics and Statistics University of São Paulo {alex,krico}@arca.ime.usp.br {cef,gold,kon}@ime.usp.br mico.arca.ime.usp.br Abstract. This paper describes the development of Mico, the XPUSP University Schedule Planner. It is a system that manages the creation of a schedule for the courses of the Computer Science department and the allocation of professors to teach these courses based on preferences gathered from professors and students. It has been developed using free software and it is itself free software, available under the GNU GPL. We will give a short description of the problem we want to solve and how the system works, then we will discuss the free software frameworks and tools used in the development and our interaction with the free software development community. 1. Introduction One of the main administrative tasks in schools and colleges is the construction of the course schedule and allocation of teachers to the courses they will lecture in the period. There are many constraints that play an important role in these allocations. University students show preferences to some elective courses and the period they should be offered. Professors also have their course and time preferences and the department must fulfill its requirements. To find a perfect allocation and schedule is a very difficult task which the department head must face each year. We did not find any existing software tool that incorporated the features we needed to solve this problem in our department. However, “Arca” (ark in Portuguese): the free software development group at the Department of Computer Science at IME/USP accepted the task to produce this tool. And so “Mico” was born (the tools developed by Arca are named after animals). Mico is a Web application that manages the creation of such a schedule. It was developed following the eXtreme Programming methodology [1]. The system has been in development since the second semester of 2001. Initially, it was the subject of the first course in eXtreme Programming [1] taught in Brazil. After that, many programmers have contributed. The project is currently maintained by a group of students in the Arca Group [2]. The system works through a website where students and professors input their preferences, professors indicate what time and days of the week they want to lecture in, and students choose which required courses they want to attend and vote on elective courses that they would like to be offered. The application then uses a genetic algorithm [3] to find an optimized schedule and allocate the professors to the courses they should lecture. 147 148 5° WSL / 5° FISL Throughout the development of this system many free software tools and frameworks were used following the eXtreme Programming methodology. Section 2 describes the problem requirements we considered. In section 3 we describe the system in some detail, as well as the tools and frameworks used. In section 4 we discuss how the XP methodology applies to the development of free software. This paper ends with some conclusions. 2. The problem Allocating the professors to the courses they should teach and these courses to given periods is not an easy problem. To solve it, we had to consider many important points. All student and professor preferences should be taken into account. For instance, the elective courses with the most student votes should be offered, professors can only lecture the courses they are qualified to lecture and in the periods they are available. Given these and many other restrictions it is possible that a perfect schedule does not even exist. In our application we define some requirements for the solution (e.g. one teacher cannot be allocated to two courses at the same time, the required courses of the semester must be offered). Other constraints are not strong (e.g. preferences of students and teachers) and are used to evaluate the quality of different solutions. 3. The system The system is accessed via a Web interface available for the students and professors of the department. There are 3 types of users: professors, students and administrators. Each year the administrators are responsible for starting a poll amongst students and professors. Students can then log into the system and choose which required courses they would like to attend and also vote for their preferred elective courses. The professors can choose which courses they are able to lecture and which courses they prefer. They can also indicate time preferences, tell the system that they will not be available for lectures during a given period or even for a sabbatical semester. We chose to solve this problem using a known technique for combinatory optimization problems, called genetic algorithms [3], which uses genetic evolution as a metaphor for improving the quality of a solution to a problem. Using this approach we model each possible solution as a gene, and start out with a randomly created population. At each interaction, the algorithm selects the best fit solutions, i.e., the solutions that obey most of the rules we have established, and using different approaches, like mutation or cross-over reproduction, creates a new population. After a given number of interactions, we expect that a near optimal solution will be reached. After the poll is finished, the administrator executes the solution engine. The algorithm periodically outputs the best solution found so far. When the administrator is satisfied with the given solution he will be able to stop the algorithm and make manual adjustments to the schedule if necessary. He can then publish the results for all users to consult. The system is under development and some parts of this process are not yet implemented. 3.1. Free Software Tools and Frameworks All throughout the development of this system we have relied solely on a free software infrastructure. Development was carried out on GNU/Linux workstations using common tools, such as bash and Emacs. We chose Java as the main programming language but 5° WSL / 5° FISL also have some code in Perl and C++. The project is currently hosted at SourceForge and we use most of the features available there, such as the CVS server. Tools on SourceForge were used to create a structure to track our project using the XP methodology: store story cards, track progress, and so on. The system was based on the Model-View-Controller (MVC) pattern [4], we found the necessary tools to speed and re-enforce this pattern available as free software. The Jakarta Group [5] - java sub-division of the Apache Free Software foundation - had a very important role in providing these tool and frameworks. The code was edited with GNU Emacs, built by Ant (Jakarta’s pure java build tool), deployed on Tomcat (Jakarta’s servlet container) and persisted on MySql[8]. The versioning of the source is controlled with CVS and hosted on SourceForge. Several other - free software - tools like Open-ssh, GNU make and Dia were used either by the build scripts or on our daily tasks. Using frameworks such as Turbine[6] (Jakarta’s java Web application framework), Velocity (Jakarta’s java template engine) and Torque[7] (Jakarta’s java persistence layer) it was possible to build a database independent, secure Web application with source separated from layout. To implement the genetic algorithm we have also relied in free software libraries. In the beginning a C++ library was used but due to bugs with the Java to C++ bridge (JNI) this was discontinued. As a replacement we used JGap [9], a java framework. 3.2. Feedback of the free software community All through development we interacted with the free software community, but most important was the attention we got from other developers. Two North American developers were interested in our project (we believe it is the only free software system available for complex schedule creation) and one of them even submitted some documentation for our project. In the beginning of the project we mostly asked questions in the Turbine user list and found solutions to common problems. As we grew more competent in these frameworks we also talked to developers, suggesting new features and relating bugs we found. Since we had access to the source code we could even point out where some bugs were located in their code. In particular, as we started using the JGap library, we maintained a close relationship with the main developer, submitting bugs and feature requests. 4. Producing Free Software using XP Methodology We have had a great experience using eXtreme Programming techniques during the development, however some problems occurred when dealing with the free software community. When outside developers showed interest in contributing to our project, we found no plausible way to pair program with them (one of the main “dogmas” of XP). We were located in different continents and time zones, what made it hard for any outside developer to get to know the code and to be able to help. Pair programming is a XP technique where two programmers share the same computer and work together. It is very effective and actually cuts down development time. Also, “the code is the documentation”, another XP paradigm, suffered from the fact that outside developers could not come into daily contact with the rest of the team. One of the american developers had trouble understanding some 149 150 5° WSL / 5° FISL of the advanced concepts we were using and in the end contributed only documentation that was created to aid him in this understanding, perhaps if the project was simpler and if he could pair with us he could have devoted this time to develop some code as well. Another problem was that a part of this documentation quickly grew outdated. As support for the eXtreme Programming methodology we have also customized our project page at SourceForge to host online story cards, this way all developers had quick access to all story cards and we could keep an online record of what was being done and track our progress. Using eXtreme Programming really payed off, we were able to develop a complex system and manage the project easily. It interacted nicely with the free software production model, and even tough we encountered some problems with outside developers we could work around them. 5. Conclusion We have had a great experience developing free software in the university, and have shown it is possible. It is a good model to adopt since there are so many free software tools, frameworks and libraries available that could be used to accelerate development of many systems. Also, we believe we should give something back to the community and contribute to make it grow. Having the source available for the projects we had to use was a great asset: we could learn from what others had done and find programming errors easily. Also, the free software community was very helpful and we received some great feedback from interested users. We felt it was worth using free frameworks even though they were work in progress, we had a good, close relationship with the community and had a clear vision of what was working or not and what to expect. In the Jgap case the developers put together a new release one week after hearing from us, fixing bugs and adding requested features. It is gratifying to work in free software and find out that the community is interested in your project and would like to use it. Mico has been used to produce the courses allocation for professors in 2003 and 2004. Its use has brought some new necessary features to the system and showed that in house development produced software very useful to the department. References [1] [Beck 1999] - Extreme Programming Explained. [2] Arca Project - http://www.arca.ime.usp.br [3] [Whitley 1993] - A Genetic Algorithm Tutorial. [4] [Model 1988] - ”The Model-View- Controller (MVC) ParadigmUser Interfaces” OOPSLA’88 Tutorial, ACM. [5] Jakarta Project - http://jakarta.apache.org/ [6] Turbine - http://jakarta.apache.org/turbine [7] Torque - http://db.apache.org/torque [8] MySql - http://www.mysql.com/ [9] Jgap - http://jgap.sourceforge.net 5° WSL / 5° FISL TerraLib: The Architecture of an Open Source GIS Library Gilberto Câmara1, Antônio Miguel Vieira Monteiro1, Ricardo Cartaxo Modesto de Souza1, Lúbia Vinhas1, Karine Reis Ferreira1, Juan Carlos Pinto de Garrido1, Gilberto Ribeiro de Queiroz1, Marcelo Tílio Monteiro de Carvalho, Marco Antônio Casanova2, Ubirajara Moura de Freitas3 1 Image Processing Division – National Institute for Space Research (DPI/INPE) 2 3 TECGRAF – Catholic University of Rio de Janeiro (TECGRAF-PUC-RIO) GIS Division – Research Foundation for Space Technology (GEO/FUNCATE) {gilberto, miguel, cartaxo, lubia, karine, juan, gribeiro}@dpi.inpe.br {tilio, casanova}@tecgraf.puc-rio.br, [email protected] Abstract. This paper describes the architecture of TerraLib, and open source library for handling spatio-temporal data types in object-relational DBMS. 1 Introduction Geoinformation technology (GI) denotes the branch of information technology that develops and deploys systems for handling spatial data. GI includes geographical information systems (GIS), global positioning systems (GPS), location-based services, and remote sensing image processing. GI is a key technology for Brazil, given its vast range of applications in areas such as environmental protection, urban management, agricultural production, deforestation mapping, public health assessment, crime fighting, and socioeconomic measurements. In recent years, this area is undergoing substantial change, due to increased availability of database management systems (DBMS) that can handle spatio-temporal data types. In order to allow the open source GIS community to benefit from this opportunity, the authors are developing TerraLib, a software library that supports quick development of custom-built applications using spatial databases. TerraLib also allows the development of GIS prototypes that include recent advances in spatial information science, such as spatio-temporal data models(Erwig et al. 1999), spatial statistics (Anselin 1999) and environmental modelling (Burrough 1998). 2 The Architecture of TerraLib A crucial design decision in any open source project is its software architecture. All successful open source products such as Linux, PostgreSQL and Apache have a kernel whose maintenance is the responsibility of a very small team. The kernel has to be stable and to allow easy extension without internal changes. Contributions from the community occur at the external layers of the system. As an example, out of more than 400 developers, the top 15 programmers of the Apache web server contribute 88% of added lines (Mockus, Fielding, and Herbsleb 2002). However, not all software products have well-defined paradigms as in the case of operating systems and DBMS. The challenge in GI technology is to combine object-relational DBMSes that handle spatial data structures with modules that perform functions such as spatial analysis and dynamic modeling. A typical GI application consists of three steps: (a) querying the spatial database; (b) manipulating the query results to generate new objects; (c) visualizing the 151 152 5° WSL / 5° FISL resulting objects. These three capabilities (query, manipulation and visualization) should all be part of a generic GI software library. To respond to these requirements, TerraLib has four main components, as shown in Figure 1: • kernel: the core of TerraLib is composed of: (a) spatio-temporal data structures; (b) support for cartographic projections; (c) topological and directional spatial operators; (d) an API for storage and retrieval of spatio-temporal objects in object-relational DBMS; (e) classes for controlling visualization of spatial data. Kernel maintenance and upgrade is the responsibility of the project core team (INPE and TECGRAF), as typical for other free software projects. • drivers: modules that implement the kernel’s generic database API to access DBMS products such as mySQL and PostgreSQL, and external files in both open and proprietary formats. Basic maintenance and upgrade is the responsibility of the project core team, but there is a large scope for external contribution. • functions: algorithms that use the kernel structures. Typical functions include spatial analysis and query and simulation languages. The functions are designed to allow external contribution. • interfaces: consist of different interfaces to the TerraLib components, to allow software development in different environments (C++, Java, COM) and also the support for Open GIS services such as WMS (Web Map Services) protocol. Figure 1 – TerraLib Software Architecture 2.1 The TerraLib Kernel Some of the key issues involved in the design of the TerraLib kernel include: • Support for spatio-temporal applications: In order to handle different types of spatiotemporal applications, TerraLib includes different types of spatio-temporal data types (events, mobile objects, and evolving regions) and supports spatio-temporal queries. Each spatial object has a unique and persistent identifier and a spatial location. The descriptive, 5° WSL / 5° FISL spatial and temporal components of geographical objects are stored separately on the database and are linked by the object’s id. • New types of data structures: Models of spatial processes, including patterns of land use and land cover, socioeconomic and demographic characteristics, are becoming increasing important for geographical applications. To support these models, TerraLib includes cell spaces in a GIS database environment. This allows is an important improvement over current GIS technology, where most dynamical models based on cell spaces have a very loose coupling with a GIS. In TerraLib, we have implemented support for dynamic models using cell spaces, which generalize cellular automata by providing multiple attributes and flexible neighborhood definitions (Pedrosa et al. 2002).. • Efficiency in large-scale applications: emerging GIS applications require storage and retrieval of hundreds of thousands of spatial objects, as well as very large satellite imagery. TerraLib supports spatial indexing of both raster and vector data, including multi-resolution and block segmentation techniques for handling satellite imagery (Vinhas, Souza, and Câmara 2003). 2.2 The TerraLib Drivers The interface between the kernel and the various DBMS and file formats is done by the modules contained in the drivers component of TerraLib. When designing this component, we considered that the library should be able to handle different object-relational databases management systems transparently. This has required careful design of a DBMS interface that handles specific features of each DBMS and allows a single software interface for different systems such as PostgreSQL and mySQL (Ferreira et al. 2002). 2.3 The TerraLib Functions The interface between the kernel and the function components has been designed to allow maximum extensibility. TerraLib should be extensible by other programmers, and the introduction of new algorithms and tools should not affect already-existing code. To achieve extensibility, we have adopted the principles of generic programming. TerraLib uses iterators over spatial data structures to decouple algorithms from data structures, thus simplifying extensibility. For example, for computing a histogram it is not essential to know if the elements are organized as a set of points, a set of polygons, a grid or an image. All that is needed is the ability to look into a list of values, and to obtain, for each element of the list, its values and the indexes of the elements of the list that satisfy a certain property (for example, those that are closer in space than a specified distance). In a similar way, a large number of spatial analysis algorithms can be abstracted away from a particular data structure and described only in terms of their properties. (Vinhas et al. 2002). 2.4 Programming Interfaces The straightforward way to use TerraLib to develop GIS applications is to embed its C++ classes into a new system. However, the TerraLib designers have to take into account the diverse qualifications and preferences of the GIS programming community. Interfaces for Java and COM programming environments have been designed and are currently being implemented. An interface for the Open GIS web services specification is also under development. 153 154 5° WSL / 5° FISL 2.5 Project Status: May 2004 The TerraLib version 3.0 has been released on early May 2004, with an investment of 40 manyears of work. It comprises 95.000 lines of code in C++, plus 195.000 lines of code of thirdparty libraries. The software is available at the website http://www.terralib.org. There are already many different applications that use TerraLib, including: • TerraView is a tool for spatial data analysis, which provides the basic functions of data conversion, visualization, exploratory spatial data analysis, spatial statistical modelling and spatial and non-spatial queries. This product is being used as general visualization tool for TerraLib databases, and its source code is available together with TerraLib. • InfoPAE is an automated system designed to improve the response to emergency situations for the petroleum industry. InfoPAE is developed by TECGRAF/PUC-RIO, under contract from PETROBRAS. Current plans include implementing InfoPAE at nearly 80 installations throughout 2003. • SIGMUN is a system for handling cadastral applications in metropolitan areas, used by the cities of Santos, São Sebastião, Caraguatatuba, São José dos Campos, São Bernardo do Campo, Cachoeiro de Itapemirim, Vitória, and in 30 cities of the state of Bahia . References Anselin, Luc. 1999. Interactive techniques and Exploratory Spatial Data Analysis. In Geographical Information Systems: principles, techniques, management and applications, edited by P. Longley, M. Goodchild, D. Maguire and D. Rhind. Cambridge: Geoinformation International. Burrough, P. 1998. Dynamic Modelling and Geocomputation. In Geocomputation: A Primer, edited by P. Longley, S. Brooks, R. McDonnell and B. Macmillan. New York: John Wiley. Erwig, Martin, Ralf H. Güting, Markus Schneider, and Michalis Vazirgiannis. 1999. SpatioTemporal Data Types: An Approach to Modeling and Querying Moving Objects in Databases. GeoInformatica 3 (3):269-296. Ferreira, Karine Reis, Gilberto Queiroz, Joao Argemiro Paiva, Ricardo Cartaxo Souza, and Gilberto Câmara. 2002. Arquitetura de Software para Construção de Bancos de Dados Geográficos com SGBD Objeto-Relacionais. Artigo apresentado em XVII Simpósio Brasileiro de Banco de Dados, em Gramado, RS. Mockus, Audris, Roy Fielding, and James Herbsleb. 2002. Two case studies of open source software development: Apache and Mozilla. ACM Transactions on Software Engineering and Methodology 11 (3). Pedrosa, Bianca, Gilberto Câmara, Frederico Fonseca, and Ricardo Cartaxo Modesto de Souza. 2002. TerraML - A Cell-Based Modeling Language for an Open-Source GIS Library. Artigo apresentado em II International Conference on Geographical Information Science (GIScience 2002), em Boulder, CO. Vinhas, Lubia, Gilberto Ribeiro de Queiroz, Karine Ferreira, Gilberto Câmara, and João Argemiro Paiva. 2002. Programação Genérica Aplicada a Algoritmos Geográficos. Artigo apresentado em IV Simpósio Brasileiro de Geoinformática, em Caxambu. Vinhas, Lubia, Ricardo Cartaxo Modesto de Souza, and Gilberto Câmara. 2003. Image Data Handling in Spatial Databases. Artigo apresentado em V Simpósio Brasileiro de Geoinformática, em Campos do Jordao. 5° WSL / 5° FISL Sessão Técnica 11 APLICAÇÕES 155 156 5° WSL / 5° FISL 5° WSL / 5° FISL Software Livre na Informatização de Acervos Históricos Elisa Yumi Nakagawa1∗ 1 Depto de Ciências Administrativas e Tecnologia Centro Universitário de Araraquara - Uniara Rua Voluntários da Pátria, 1309 14801-320, Araraquara, SP [email protected] Abstract. Nowadays, the brazilian historical holding, including those in São Carlos and region, are sometimes unknown or unavailable. Therefore, a free Web system that becomes possible the storage and dissemination of information about these holdings is extremely relevant. Thus, it is necessary the identification of an attributes set based on international norm and register format to represent the information about several types of historical holdings. Consequently, in the next future, the system can propitiate the implantation of a distributed and integrated database of the several historical holdings and avail it to all community. Resumo. Atualmente, os acervos históricos brasileiros, inclusive os da cidade de São Carlos e região, encontram-se, muitas vezes, desconhecidos ou indisponı́veis; dessa forma, um sistema Web livre que possibilite o armazenamento e disponibilização de informações desses acervos é de extrema relevância. Para isso, é indispensável a identificação de um conjunto de atributos baseado em normas e formatos de registro internacionais que possam representar integralmente as informações sobre os diversos tipos de acervos históricos. Como conseqüência e sendo um software livre, o sistema poderá propiciar em um futuro próximo, a implantação de uma base de dados distribuı́da e integrada dos diversos acervos históricos disponibilizada a toda a comunidade. 1. Introdução O municı́pio de São Carlos e região apresenta uma diversidade de acervos de inestimável valor histórico. Esses acervos contêm elementos de caráter diversificado de extrema relevância para o resgate da história do municı́pio e inclusive relacionados à própria história do Brasil. Atualmente, esses acervos, bem como grande parte dos acervos brasileiros, encontram-se, muitas vezes, em estado precário de conservação e outros ainda, desconhecidos até mesmo por pesquisadores da área. Verifica-se nos últimos dois anos diversos esforços isolados, tanto público quanto privado, no sentido de organizar os acervos e disponibilizá-los aos interessados. O projeto Memória Virtual de São Carlos [Mem, 2003] agrega as competências estabelecidas no meio acadêmico1 a serviço de uma iniciativa bastante relevante para a comunidade da cidade de São Carlos e região. O projeto, de natureza multi-disciplinar e envolvendo a Prefeitura Municipal de São Carlos, a Fundação Pró-Memória de São Carlos, a Associação Pró-Casa do Pinhal e outras instituições, pode contribuir de forma significativa para o registro histórico de São Carlos, bem como para a ampliação do acesso a esse registro. Para isso, o principal objetivo desse projeto é o desenvolvimento de um sistema Web que será disponibilizado como software ∗ É também professora e doutoranda do programa de pós-graduação do Instituto de Ciências Matemáticas e de Computação - ICMC/USP. 1 Participam desse projeto pesquisadores do Instituto de Ciências Matemáticas e de Computação - ICMC/USP, do Departamento de Arquitetura e Urbanismo - SAP/USP, do Departamento de Ciência da Informação - DCI/UFSCar, da Biblioteca Comunitária - BCO/UFSCar e do Instituto de Biociências, Letras e Ciências Exatas - IBILCE/UNESP. 157 158 5° WSL / 5° FISL livre2 para a gestão integrada de acervos do municı́pio; mais especificamente, para organização, armazenamento e disponibilização de informações do patrimônio histórico e cultural, possibilitando a reunião dos diversos acervos dispersos fisicamente, seguindo normas nacionais e internacionais de definição de conjunto de atributos para representação da informação. Esse sistema possibilitará também promover a conscientização sobre a importância de preservar a grande diversidade de acervos históricos. Vale ressaltar que, assim como as inúmeras iniciativas de diversos órgãos públicos em nı́vel nacional para uso de software livre, a Prefeitura Municipal de São Carlos também está empenhada na adoção, utilização efetiva e disseminação de software livre; além de estar apoiando fortemente para a concretização desse projeto. O objetivo deste artigo é então divulgar o Projeto Memória Virtual de São Carlos, sua relevância e principais contribuições, bem como seu relacionamento com o tema software livre. Dessa forma, este artigo está organizado da seguinte forma: na Seção 2 será discutido o desenvolvimento do sistema Web, mais especificamente, as atividades no tocante ao levantamento de requisitos, bem como a identificação de um ambiente de implementação do sistema. E por fim, na Seção 3, encontram-se as conclusões. 2. Desenvolvimento do Sistema Web 2.1. Levantamento de Requisitos Uma vez que o sistema Web proposto nesse projeto irá gerenciar uma diversidade e um grande volume de informações, o seu planejamento passa a ter um papel estratégico para o acesso pleno a essa informação. O objetivo do projeto tem então demandado pesquisas nas diversas áreas de conhecimento envolvidas. Como um dos exemplos mais sobressalentes é a pesquisa em Ciência da Informação que tem definido um conjunto de atributos tanto para representação, armazenamento e disponibilização de informações dos diversos tipos de acervos históricos, quanto como ponto de acesso às informações. Os resultados dessa pesquisa, inédito em nı́vel internacional, é de extrema relevância como pré-requisito fundamental para a implementação do sistema, mais especificamente para o projeto da base de dados. Vale ressaltar que a escolha de atributos corretos garante rapidez e precisão na recuperação das informações da base de dados, e conseqüentemente, credibilidade ao sistema. Entende-se por pontos de acesso todos os elementos que descrevem a informação e, concomitantemente, servem como chave para a recuperação da informação e para o seu acesso na ı́ntegra. Os atributos, sendo ou não pontos de acesso, são representações da informação dentro do sistema, e por isso, também são conhecidos como metadados, ou seja, dados sobre um outro dado [Hillmannn, 2004]. Assim, atributos como autoria e palavra-chave, por exemplo, que representam a informação original e/ou o seu conteúdo e permitem a sua recuperação, são metadados dessa informação. De modo geral, o sistema inclui os seguintes módulos ou conjuntos de informação a serem manipulados: acervos documentais, coleções bibliográficas, objetos museológicos, bens arquitetônico, bens naturais, além de materiais multimeios. Atualmente, está-se concentrado no levantamento de requisitos, projeto e implementação dos três primeiros módulos. Definir um conjunto de atributos para esses conjuntos de informação não é uma tarefa trivial, uma vez que não existe um conjunto já estabelecido que possa servir de base e que contemple as especificidades dos vários conjuntos de informação que serão manipulados pelo sistema proposto. Pode-se identificar conjuntos de atributos3 — também chamados de formatos de registro — internacionais, consolidados e amplamente divulgados e utilizados para conjuntos especı́ficos de informação. No contexto desse projeto diversos formatos têm sido considerados, dentre eles o MARC (Machine Readable Cataloguing) como formato de registro para informações bibliográficas, a EAD (Encoded Archival Description) para os arquivos, considerados no todo ou documento por documento, e o Dublin Core para os recursos eletrônicos. 2 3 http://www.fsf.org/philosophy/free-sw.html http://www.ifla.org/II/metadata.htm 5° WSL / 5° FISL Além dos formatos de registro, pode-se identificar também normas internacionais que estabelecem padrões de como descrever a informação, ou seja, como os dados devem ser inseridos na base de dados. Certamente, essas normas são também instrumentos essenciais para a definição do conjunto de atributos, sendo o AACR-2 (Anglo-American Cataloguing Rules, 2nd. Edition)4 e o ISAD(G) (General International Standard Archival Description)5 padrões que têm sido utilizados no âmbito desse projeto. Portanto, a utilização de formatos de registro e de normas internacionais para a descrição da informação devem ser complementares. Com isso, é possı́vel garantir a qualidade das informações armazenadas e disponibilizadas, bem como a possibilidade de integração com outros sistemas de informação, tanto nacionais quanto internacionais. Além disso, uma vez que sistemas como o almejado não são largamente conhecidos, brainstorms têm sido realizados em reuniões entre os membros do projeto para a identificação e definição de requisitos do sistema. Além disso, meios de comunicação eletrônicos, tais como correio eletrônico e sistema de mensagem instantânea, também têm contribuı́do em muito para a realização dessa atividade. Os requisitos identificados e considerados mais relevantes, são descritos textualmente — baseando-se nas práticas recomendadas pela IEEE para especificação de requisitos do software [IEEE Std 830, 1998] — sendo uma forma de registrar para posterior verificação, bem como para facilitar a integração de novos desenvolvedores, em se tratando de um sistema que possui uma grande quantidade de funcionalidades não comumente conhecidas pela maioria dos potenciais desenvolvedores. 2.2. Projeto e Implementação do Sistema Para a construção do sistema, está sendo investigada a utilização de práticas do processo de desenvolvimento de software livre — tais como a forma como os requisitos são identificados e a atribuição de tarefas aos desenvolvedores — como descrito inicialmente em “The Cathedral and the Bazaar” por [Raymond, 1999] e na mesma linha de diversas pesquisas, sendo algumas delas do ICMC/USP [Nakagawa, 2002, Reis, 2003]. Como abordagem para a implementação do sistema, a prototipação está sendo empregada, como ocorre na grande maioria dos softwares livres sendo desenvolvidos; ou seja, à medida que o sistema é implementado, novos requisitos são identificados e já implementados e, no caso desse projeto, registrados também em um documento de requisitos. Quanto ao projeto do sistema, técnicas para modelagem da funcionalidade do sistema não estão sendo utilizadas; por outro lado, modelos da base de dados são construı́dos utilizando DER (Diagrama de Entidade-Relacionamento), como resultado do conjunto de atributos identificado, e também como uma forma de documentar o sistema, uma vez que se trata de uma base de dados de razoável complexidade em termos do número de atributos, relacionamentos e tabelas. Questões relacionadas à usabilidade do sistema em virtude da diversidade de usuários, bem como questões no tocante à segurança e robustez tem sido consideradas em se tratando do volume de dados a serem manipulados. Por exemplo, um dos módulos refere-se às coleções bibliográficas que irá inicialmente gerenciar dados da Biblioteca da Fazenda Pinhal6 que possui aproximadamente 5000 obras desde livros, cartas, mapas, entre outros. Sendo o software livre um dos requisitos do ambiente de implementação e implantação do sistema, foi realizado um estudo e seleção das ferramentas/tecnologias a serem utilizadas. Adotouse uma plataforma de software livre, no caso o Linux7 e o Apache8 ; como SGBD (Sistema de Gerenciamento de Banco de Dados) adotou-se o PostgreSQL9 e para a implementação das funcionalidades do sistema está utilizando-se o PHP10 , todos em consonância com a filosofia adotada no projeto. Todas possuem uma vasta comunidade de usuário e uma experiência consagrada na construção de uma diversidade de sistemas dos mais variados domı́nios de aplicação. 4 http://www.collectionscanada.ca/jsc/index.html http://www.hmc.gov.uk/icacds/eng/home.htm 6 http://www.fazendapinhal.com.br 7 http://www.linux.org/ 8 http://httpd.apache.org/ 9 http://www.postgresql.org 10 http://www.php.net/ 5 159 160 5° WSL / 5° FISL 3. Conclusão Atualmente, a grande maioria dos acervos históricos brasileiros necessitam de tratamento adequado, bem como uma divulgação no sentido de conscientizar a comunidade de seu valor histórico. Para isso, a tecnologia de computação possui mecanismos que quando utilizados adequadamente possibilitam ser um veı́culo dos mais relevantes na realização dessa tarefa. Vale ressaltar que por meio desse projeto, tem ocorrido a constante e enriquecedora troca de experiências entre as diversas áreas de pesquisa envolvidas, o que vem salientar a relevância da realização de projetos multi-disciplinares. No mais, esse projeto tem também contribuı́do no sentido de identificar a problemática das áreas envolvidas e que necessita ser sanada resultando em pesquisas de valioso teor e fundamental para a concretização dos objetivos propostos no projeto. Como benefı́cio mais expressivo e imediato do projeto têm se a disponibilização de um conjunto de atributos capaz de armazenar e disponibilizar de forma efetiva informações dos mais diversos tipos de acervos históricos. Além disso, a implementação desse conjunto em um sistema Web livre certamente irá contribuir, tanto para a comunidade de software livre com um sistema ainda não encontrado nesse domı́nio de aplicação, quanto no sentido de facilitar a implantação e posterior disponibilização de informações sobre os mais diversos acervos para a comunidade em geral. Observa-se que um sistema como o proposto não é encontrado nem como software livre, nem como software proprietário; aqueles identificados possuem funcionalidades ou bases de dados limitadas, o que não está em consonância com os objetivos do projeto; isso vem reforçar a relevância da disponibilização de sistema desse domı́nio de aplicação como software livre. Partindo do sistema piloto a ser implantado inicialmente nos acervos pertencentes à rota do café na qual São Carlos está inserido, pretende-se instalar um mecanismo para disseminação desse sistema para diversas outras entidades similares — prefeituras, fazendas históricas, associações, entre outras — a nı́vel regional, estadual e até nacional, construindo-se assim uma base de dados distribuı́da, no entanto, integrada dos diversos acervos históricos brasileiros dispersos fisicamente. Agradecimentos: Agradeço a todos os membros do Projeto Memória Virtual de São Carlos e em especial ao Prof. Dr. José Carlos Maldonado e à Juliana de Souza Moraes pelo suporte na concepção deste artigo. Referências (2003). Memória Virtual de São Carlos. Instituto de Ciências Matemáticas e de Computação - ICMC/USP, São Carlos, SP. (Projeto aprovado no programa de polı́ticas públicas da FAPESP e coordenado pelo Prof. Dr. José Carlos Maldonado). Hillmannn, D. (2004). What is metadata? [On-line], World Wide Web. Disponı́vel em http: //dublincore.org/documents/2001/04/12/usageguide/#whatismetadata (Acessado em 30/04/2004). IEEE Std 830 (1998). IEEE recommended practice for software requirements specifications. Nakagawa, E. Y. (2002). Software Livre: Processo e Produto Livres no Desenvolvimento de Aplicações Web. Exame geral de qualificação, Instituto de Ciências Matemáticas e de Computação – ICMC/USP, São Carlos, SP. (Doutorado em andamento). Raymond, E. S. (1999). The Cathedral and the Bazaar. O’Reilly & Associates. Reis, C. R. (2003). Caracterização de um processo de software para projetos de software livre. Master’s thesis, ICMC/USP, São Carlos - SP. Dissertação de Mestrado. 5° WSL / 5° FISL WebMaterioteca – Sistema de Informação de Cadastro e Recuperação de Materiais Juliano Varella de Carvalho, Eduardo Schweigert, Ingo Jost Instituto de Ciência e Tecnologia – Centro Universitário FEEVALE Campus II - RS 239, 2755 – Cep 93352-000 – Novo Hamburgo – RS – Brasil {julianovc,sheykina,ingo}@feevale.br Abstract. This paper describes the development of an information system in the web, responsible for the maintenance of a database that store several materials used in the manufacture of industrial products. Resumo. Este artigo descreve o desenvolvimento de um sistema de informação na web, responsável pela manutenção de um repositório de dados sobre diversos materiais utilizados na fabricação de produtos industriais. 1. Introdução O Centro Universitário Feevale aprovou em 2003, junto aos órgãos de fomento a pesquisa FINEP (Financiadora de Estudos e Projetos) e CNPq (Conselho Nacional de Pesquisa Científica e Tecnológica), um projeto para a construção de uma Materioteca, destinada, inicialmente, a armazenar dados sobre materiais utilizados na cadeia coureiro-calçadista. Estes órgãos permitiram a aquisição de equipamentos de informática e recursos humanos para o desenvolvimento do projeto e, em contrapartida, um espaço físico situado no Centro de Design da Feevale foi disponibilizado para permitir a implantação física da materioteca, as atividades de pesquisa e a implementação de um sistema de informação. É válido salientar que este projeto apresenta vasta interdisciplinaridade, pois conta com professores e bolsistas dos cursos de Design, Engenharia Industrial Química, Engenharia de Produção e Ciência da Computação. 2. Materioteca O termo materioteca trata-se de um neologismo com significado similar a uma biblioteca, exceto pelo fato de que, ao invés de armazenar livros em seu espaço físico, ela destina-se ao armazenamento de materiais usados na fabricação de produtos industriais. Para a total excelência da fabricação de um produto industrial devem ser seguidos alguns parâmetros referentes aos materiais utilizados. Qualidade, produtividade, baixo custo, ciclo de vida e impacto ambiental são algumas das principais características no desenvolvimento industrial. Portanto, novas tecnologias para a produção de novos produtos são constantemente procuradas e, quanto mais abrangentes forem às informações sobre os materiais existentes, melhor será a escolha da matéria-prima na fabricação destes novos produtos [Silva 2002]. Portanto, a materioteca reunirá em seu espaço físico diversas amostras dos mais variados materiais existentes no mercado, suprindo a carência de um espaço que possibilite um contato táctil e visual com estas matérias-primas. Aliado a isto todos os materiais estarão disponíveis a qualquer pessoa por meio de um sistema de informação que será ferramenta essencial à pesquisa sobre o assunto, permitindo a estudantes, professores, empresários e profissionais das áreas do design e da engenharia, acesso a informações cruciais sobre estes materiais. 161 162 5° WSL / 5° FISL 3. Sistema de Informação Um sistema de informação é um grupo de componentes inter-relacionados que trabalham juntos, rumo a uma meta comum, recebendo insumos e produzindo resultados em um processo organizado de transformação [O’Brien 2002]. Neste processo estão envolvidas três etapas: • Entrada: responsável pela captação e reunião de elementos que entram no sistema para serem processados; • Processamento: processos de transformação que convertem as entradas em resultados; • Saída: transferência de elementos produzidos até seu destino final. Com o objetivo de armazenar os materiais, processar seus dados e levar informações relevantes aos usuários finais, está sendo desenvolvido neste projeto um sistema de informação para web, batizado inicialmente de WebMaterioteca, que, em breve, disponibilizará um endereço eletrônico a comunidade, no qual, qualquer pessoa poderá executar consultas ao sistema, bem como navegar através de dados gerais do projeto. A WebMaterioteca, além de permitir um grande número de consultas, será a ferramenta responsável pela entrada dos dados, ou seja, possibilitará a catalogação dos materiais; suas propriedades químicas, físicas, mecânicas, térmicas e elétricas; suas características; seus processos de fabricação; seu desempenho em diferentes meios (água, ácidos, bases, solventes, etc); suas fórmulas química e estrutural, entre outros dados. Como os materiais encontram-se sob as mais diversas formas, este sistema oportunizará também o cadastro das amostras coletadas. As amostras são peças constituídas por um ou vários materiais, como solas de sapato, cadarços, fivelas, etc. E, para cada amostra, serão armazenadas diversas fotos em ângulos distintos, assim como dados referentes à empresa que a forneceu e a descrição dos materiais que a constituem. O sistema prevê também uma seção destinada à geração de relatórios, responsáveis por municiar os usuários do sistema de uma visão consistente e prática de todo o conjunto de dados armazenado. A WebMaterioteca estará dividida em diversas seções. Dentre algumas existentes podese citar as seções de cadastros, as quais englobam os formulários de cadastro de materiais, amostras, propriedades, classes de materiais, permissões de usuários, entre outras; as seções de relatórios; as seções com dados gerais a respeito do projeto; e as seções pertinentes à administração do sistema. Tais seções serão acessadas por quatro diferentes grupos de usuários que estão descritos abaixo, bem como suas características de acesso: • Grupo Geral: este grupo será povoado com usuários que terão permissão de acesso aos dados institucionais sobre o projeto, como sua descrição, patrocinadores, equipe de trabalho, envio de sugestões, glossário utilizado no projeto, entre outras seções. A este grupo também será permitida a execução de consultas simples e avançadas no sistema. Este grupo é constituído por qualquer visitante ao site que esteja buscando informações sobre materiais e não será necessária qualquer espécie de autenticação. • Grupo Materioteca: aos usuários deste grupo é reservado o direito de efetuar a alimentação do banco de dados da WebMaterioteca, pois eles serão incumbidos das tarefas de registro de novos cadastros, bem como alterações e exclusões de dados previamente salvos. Todas as operações desta natureza serão registradas (registro de log) em uma tabela para extração de futuros relatórios sobre quais usuários efetuaram as operações. Os bolsistas e coordenadores do projeto farão parte deste grupo. 5° WSL / 5° FISL • Grupo Coordenador: um novo cadastro, efetuado pelo grupo anterior, sempre esperará por aprovação para que possa juntar-se aos cadastros já existentes. O grupo coordenador tem a responsabilidade de analisar um relatório dos cadastros realizados, aprovando-os ou rejeitando-os. Em caso de rejeição, um email será disparado para o grupo Materioteca a fim de que algum dos seus integrantes efetue a alteração necessária para sua aprovação. • Grupo Administrador: as atividades deste grupo no sistema são aquelas destinadas a criar novos usuários, novos grupos, novas seções, definir permissões dos grupos às seções criadas, acessar os registros de log, dentre outras atividades administrativas. 4. A Tecnologia Determinou-se, no início no projeto, que a WebMaterioteca se utilizaria quase que exclusivamente de software livre em seu desenvolvimento. A exceção são alguns softwares de manipulação de imagens utilizados pelos estudantes da área de Design. Esta escolha foi feita pois, viabilizou o orçamento por causa da ausência de gastos com licenças de software, assim como deverá ser um grande incentivador para que outros projetos na instituição venham a utilizar este tipo de softwares. O sistema de informação está sendo construído em três camadas, englobando as camadas de interface, regras de negócio e armazenamento dos dados. A camada de interface está sendo desenvolvida, inicialmente, pelos bolsistas e coordenadores ligados à área do Design, pois são os responsáveis diretos pela identidade visual do projeto e modelagem da interface do sistema. Em um momento posterior os estudantes da ciência da computação interligarão a estrutura de interface criada com as páginas HTML, a fim de permitir a navegação por todas as funcionalidades do sistema. A camada referente às regras de negócio vem sendo implementada por meio da linguagem Java (http://java.sun.com), a qual foi escolhida por contar com características essenciais de uma boa linguagem de programação, tais como sua total orientação a objetos, a sua robustez e portabilidade. E, para interligar as classes implementadas com a interface do sistema, escolheu-se utilizar a linguagem de scripts JSP (Java Server Pages). A fim de aumentar a produtividade na codificação das classes responsáveis pela lógica do funcionamento do sistema, optou-se pela utilização de uma IDE (Integrated Development Environment – Ambiente de Desenvolvimento Integrado) de fácil aprendizagem e que englobasse diversas características que auxiliam a tarefa de programação. A ferramenta escolhida foi o Eclipse 2.1 (http://www.eclipse.org). Esta ferramenta tem se mostrado extremamente eficiente tanto no desenvolvimento e depuração das classes, quanto em atividades extras que podem ser adicionadas através da inclusão de inúmeros plugins ao ambiente do Eclipse. Desta forma, tem-se utilizado esta ferramenta para codificação também de código escrito em JSP e Javascript, além de se prestar também à construção de Diagramas de Use Case e Diagramas de Classes, desde que instalados os plugins adequados. A fim de efetuar um armazenamento eficiente dos dados relativos à amostra, materiais e demais conteúdos é necessário valer-se dos benefícios de um sistema gerenciador de banco de dados (SGBD). O SGBD escolhido para armazenar os dados do projeto foi o PostgreSql (http://www.postgresql.org), devido a diversas características que fazem dele um dos SGBD’s relacionais mais utilizados atualmente (Momjiam 2004). Características como robustez, velocidade de acesso e segurança, permitirão ao sistema de informação funcionar de modo adequado. Além disso, este SGBD tem seu código fonte livre e não requer custo adicional ao projeto, permitindo o uso de suas licenças livremente. 163 164 5° WSL / 5° FISL A fim de evitar a cansativa tarefa de geração e atualização da base de dados da materioteca, no SGBD, por meio da escrita de scripts em SQL, utilizou-se uma ferramenta para o desenvolvimento da modelagem desta base. O software escolhido foi o DBDesigner (http://www.fabforce.net/dbdesigner4/), o qual apresenta inúmeros recursos de manipulação do projeto lógico da base de dados, presentes somente em ferramentas proprietárias que já sofreram diversos aperfeiçoamentos. Todas as camadas do sistema estarão armazenadas em um mesmo servidor Linux, distribuição Red Hat 9, fisicamente localizado no Centro de Design da Feevale. Este servidor contará com o Servidor Web Apache 2.0 (http://www.apache.org) a fim de administrar todas as requisições realizadas ao site da materioteca e o container JSP TomCat 5.0.19 (http://jakarta.apache.org/), responsável pela compilação das páginas escritas em JSP. A escolha pelo ambiente web é justificada, principalmente, pela possibilidade de um usuário interagir com a WebMaterioteca, de qualquer lugar do mundo. Desta forma, também é possível fazer com que o projeto seja conhecido e utilizado por uma gama muito maior de usuários, os quais serão essenciais no envio de sugestões sobre melhorias a serem implementadas no futuro. Além disso, há uma grande tendência dos sistemas de informação atuais das empresas migrarem para o ambiente Web, sendo acessados então através de navegadores (O’BRIEN, 2002). A Figura 1 mostra a arquitetura resumida do Sistema de Informação WebMaterioteca. Figura 1 – Arquitetura da WebMaterioteca. 5. Conclusão Pretende-se que, ao término do projeto, com a implantação da WebMaterioteca, sejam oferecidos mecanismos que permitam aperfeiçoar o desenvolvimento de produtos, inicialmente, no setor calçadista, através da facilidade de pesquisa sobre materiais. Desta forma, procura-se promover a melhoria da competência produtiva das micros, pequenas e médias empresas e cooperativas do setor coureiro-calçadista. O Sistema de Informação criado também terá fundamental importância na disseminação da cultura do uso de software livre para o desenvolvimento de projetos acadêmicos, mostrando a viabilidade de utilizá-los em todas as fases do projeto. 6. Referências Bibliográficas Cornell G., Horstmann C., Core Java – Guia Autorizado, Makron Books, 1997. O’Brien, James A., Sistemas de Informação e as decisões gerenciais na era da Internet, São Paulo, Saraiva, 2002. Momjiam B, Entrevista, SQL Magazine, Rio de Janeiro, Edição 7, Ano 1, p. 46 – 48, 2004. Silva, E. A., Implementação de uma "Biblioteca de Materiais" no estado do Rio Grande do Sul, Revista Tecnologia e Tendências, Novo Hamburgo - RS: , v.1, p.65 - 71, 2002. 5° WSL / 5° FISL Tecnologia Adaptativa e Sı́ntese de Voz: Primeiros Experimentos Felipe Augusto Zuffo1 , Hemerson Pistori1 1 CCET - Universidade Católica Dom Bosco Av. Tamandaré, 6000, Jd. Seminário CEP: 79117-900 Campo Grande, MS [email protected], [email protected] Abstract. This paper describes a working in progress that aims at proposing a new methodology for voice-synthesis engineering, based on adaptive technology. The work explores adaptive automata, a Turing-machine powerfull formalism that preserves most of the simplicity of finite state transducers, that has already been used in voice-synthesis for a long time. All the related implementation is being developed with the aid of a freesoftware, named AdapTools. Resumo. Este artigo descreve um trabalho em fase de desenvolvimento cujo objetivo final é propor uma nova metodologia para geração de sintetizadores de voz, baseandose em tecnologia adaptativa. Pretende-se explorar, nesse trabalho, os aut ômatos adaptativos, um formalismo que preserva a simplicidade dos tradicionais transdutores de estados finitos, que já vêm sendo utilizados em sı́ntese de voz, mas que possui o mesmo poder de expressão das máquinas de Turing. A implementação da metodologia será facilitada pela utilização de um software livre para desenvolvimento de aut ômatos adaptativos, o AdapTools. 1. Introdução A sı́ntese de voz consiste na a geração de sinais sonoros que reproduzem as palavras equivalentes em uma determinada linguagem natural. As aplicações que sintetizam a voz são projetadas para imitar a fala, assim como ela é na natureza humana. O crescimento da utilização de sistemas computadorizados pelos mais diversos grupos de pessoas aumenta a necessidade de comunicaç ão ágil entre máquinas e seres humanos. Com o aumento na capacidade de processamento e da disponibilidade de dispositivos para reprodução de som digital, a sı́ntese de voz tem se tornado viável em uma grande variedade de aplicações, como por exemplo, aquelas voltadas para deficientes visuais, em que o monitor é substituı́do por caixas de som, e aplicações acessadas através de sistemas telefônicos. (e.g. auto-atendimento, telemarketing, etc). Uma grande quantidade de técnicas vêm sendo exploradas no intuito de otimizar a inteligibilidade da fala sintetizada [Goff and Benoı̂t, 1996, Burrows, 1996, Lemmetty, 1999a]. Para isso, a adequação de fatores como ritmo e intonação são fundamentais para que a saı́da sonora soe o mais natural possı́vel [Tatham and Lewis, 1996, Lemmetty, 1999a]. Os métodos de sı́ntese de voz são classificados normalmente em três grupos: sı́ntese articulatória, sı́ntese fonética e sı́ntese por concatenação [Lemmetty, 1999b]. Os métodos para sı́ntese articulatória baseiam-se em um modelo do aparelho vocal humano. Mantendo um conjunto de regras que simulam a lı́ngua, os lábios e as cordas vocais, o sistema imita a voz humana ao produzir ressonância e articulação. Atualmente, esse tipo de 165 166 5° WSL / 5° FISL sı́ntese é pouco utilizado, pois se mostra muito complexa e exige recursos computacionais de alto custo. As técnicas de sı́ntese fonética são estruturadas sobre um sistema de combinação de freqüências que resulta em uma expressão vocal determinada. A entrada é processada por um conjunto de ressonadores, onde cada um gera a saı́da equivalente a um som vocal. No final a saı́da gerada por todos os ressonadores é somada, produzindo um fonema. A disposição dos ressonadores na estrutura de processamento pode variar a cada sintetizador de voz. Já os métodos de sı́ntese por concatenação, trabalham com uma base de arquivos de som previamente gravados, onde cada fonema é associado a um arquivo. Conforme os fonemas são reconhecidos a partir uma cadeia de entrada, os arquivos são concatenados, de forma a produzir a pronúncia. Com essa abordagem, torna-se mais fácil atingir naturalidade e inteligibilidade nos resultados, porém utiliza-se mais espaço em memória do que nos demais métodos. Um sistema tradutor texto-voz pode ser definido em dois elementos principais: um mecanismo de reconhecimento de texto e um de geração de som [O’Malley, 1990, Lemmetty, 1999a]. Os dois mecanismos se comunicam através de uma linguagem de representação intermediária, que pode capturar a estrutura das sentenças em nı́veis morfológicos, léxicos, sintáticos, fonéticos, sub-fonéticos, ou uma combinação de vários nı́veis. No presente trabalho, em fase de desenvolvimento, estuda-se as possibilidades da utilização de autômatos adaptativos, tanto na fase de reconhecimento do texto, quanto de geração de som. Autômatos adaptativos generalizam o conceito de transdutores de estados finitos (e consequentemente, de aut ômatos de estados finitos), incluindo caracterı́sticas que permitem o tratamento de dependências de contexto, o que os torna um interessante formalismo a ser investigado na solução do problema da sı́ntese de voz. Um software livre, o AdapTools 1 , está sendo utilizado nos experimentos com autômatos adaptativos. Na próxima seção serão apresentados os autômatos adaptativos. Em seguida, descreveremos brevemente o software livre AdapTools. O estado atual do trabalho ser á relatado na seção 4, seguida das conclusões e metas a serem atingidas posteriormente. 2. Autômatos Adaptativos Um autômato adaptativo é um dispositivo guiado por regras adaptativo [Neto, 2001] em que a camada subjacente consiste de um autômato de pilha estruturado [Neto, 1987]. Como qualquer dispositivo adaptativo, um autômato adaptativo é capaz de alterar sua estrutura dinamicamente, através de ações elementares que permitem que transições do autômato sejam consultadas, removidas ou inseridas. Essa capacidade de auto-modificação é que torna os autômatos adaptativos mais poderosos que o mecanismo no qual eles se baseiam. Interessantemente, essa capacidade de auto-modificação pode ser facilmente desabilitada, quando o poder extra de expressão não é necessário na solução de um determinado problema. 3. AdapTools O AdapTools é uma ferramenta livre que oferece um ambiente para experiências, implementação e depuração de autômatos adaptativos [Pistori and Neto, 2003]. O núcleo desse software é uma máquina virtual que executa autômatos adaptativos representados em forma de tabela. Os autômatos e as alterações por ele realizadas são visualizados utilizando-se do pacote livre para tratamento de grafos, OpenJGraph. A figura 1 ilustra a animação gerada pelo AdapTools, de um autômato adaptativo reconhecendo uma cadeia da linguagem não-regular e não-dependente-decontexto an bn cn . 1 http://www.ucdbnet.com.br/adaptools/ 5° WSL / 5° FISL Figura 1: Animação gerada pelo Adaptools para os quatro primeiro estágios de um autômato adaptativo que reconhece an bn cn 4. Sı́ntese de Voz e Autômatos Adaptativos Utilizando a ferramenta AdapTools, foi desenvolvido um primeiro prot ótipo de tradutor texto-voz, para a lı́ngua portuguesa. A sı́ntese de voz implementada nesse protótipo utiliza um método baseado em concatenação de arquivos armazenados no formato wave. A entrada para a tradução textovoz é uma seqüência de caracteres, que são processados pelo autômato adaptativo, que reconhece sequências fonéticas simples, e mapeia os fonemas reconhecidos em uma rotina semântica capaz de carregar, se necessário, o arquivo wave correspondente ao som, e reproduzi-lo. Para o tratamento de arquivos de som, foram reutilizadas classes disponı́veis no pacote livre SoundP layer 2 , criado por Martin Stepp, e que torna a programação utilizando sons extremamente simples. Segue abaixo o trecho de código necessário para reproduzir um arquivo de som utilizando-se o SoundP layer: public SoundPlayer player = new SoundPlayer(); private Token say(String nomeFonema) { player.playAndWait(diretorioBase+nomeFonema+".wav"); } A figura 2 mostra algumas das transições do autômato adaptativo que traduz texto em voz. Nas legendas da forma x/y, x indica o sı́mbolo de entrada, e y, o de saı́da (fonema). As transições (4, a, 5) e (3, a, 5), por exemplo, produzirão ambas o mesmo som (aquele do único fonema da palavra chá). Uma das dificuldades na tradução texto-voz é que uma mesma sı́laba, quando encontrada em palavras ou sentenças diferentes, pode ter diferentes pron úncias. Por exemplo, a sı́laba xa, nas palavras f ixa e Xuxa, corresponde a distintos fonemas. Este problema está intimamente 2 http://www.cs.arizona.edu/˜ stepp/java.html 167 168 5° WSL / 5° FISL 1 spc a/ba b 4 2 0 a/cha h c 5 a/ca a/a x 3 a/cha Figura 2: Algumas transições do autômato de tradução texto-voz ligado à dependência de contexto, o que sugere a utilização de autômatos adaptativos, no lugar de transdutores de estados finitos, na produção de sistemas mais poderosos desta natureza. 5. Conclusão Apresentamos neste trabalho os primeiros estudos sobre a possibilidade de implementaç ão de tradutores texto-voz utilizando autômatos adaptativos. O fato de a estrutura de um autômato adaptativo poder ser alterada em tempo de execução possibilita a geração de diferentes pronúncias para a mesma sı́laba, dependendo do contexto. Essa caracterı́stica se torna um incentivo para a próxima etapa deste trabalho, o aprimoramento do prot ótipo apresentado, melhorando a pronúncia de cada palavra. Também pretendemos começar a utilizar um alfabeto fonético internacional, para a representação dos fonemas, e incorporar ao sistema métodos mais eficientes para concatenação de fonemas na formação de palavras. Referências Burrows, T. (1996). Speech processing with linear and neural network models. Goff, B. L. and Benoı̂t, C. (1996). A text-to-audiovisual-speech synthesizer for french. In Proc. ICSLP ’96, volume 4, pages 2163–2166, Philadelphia, PA. Lemmetty, S. (1999a). Review of speech synthesis technology. Master’s thesis, Helsinki University of Technology. Lemmetty, S. (1999b). Review of Speech Synthesis Technology. PhD thesis, Helsinki University of Technology - Department of Electrical and Communications Engineering. Neto, J. J. (1987). Introdução à Compilação. LTC, Rio de Janeiro. Neto, J. J. (2001). Adaptative rule-driven devices - general formulation anda case study. In CIAA’2001 Sixth International Conference on Implementation and Application of Automata, pages 234–250, Pretoria, South Africa. O’Malley, M. H. (1990). Text-to-speech conversion technology. IEEE Computer, 23(8):17–23. Pistori, H. and Neto, J. J. (2003). A free software for the development of adaptive automata. In Proceedings of the IV Workshop on Free Software - WSL (IV International Forum on Free Software). Tatham, M. and Lewis, E. (1996). Improving text-to-speech synthesis. Proceedings of the Institute of Acoustics, 18(9):35–42. 5° WSL / 5° FISL Sessão Técnica 12 ELÉTRICA 169 170 5° WSL / 5° FISL 5° WSL / 5° FISL !#$% [email protected],[email protected], & ') ¢£ ¢ £ $ % $ ¢£ $ ¤ $ $ ¤ ¤ $ ¢' ( ¥ $ $ ¤ $ ¢£ * $ , ¤¤-£¤ £ % £ . ¤$ % ( - ¤ ¢£ ¤ ¢£ £ / % $ ( ¢£ 1 2$ % , $$ * 3$11 4 $ 5* 6 7 $ $ $( 8$19$4$3$ (: %2¤$ ¤ ¤-* $ ¢' ¤* $ , 6 7 % $ ,5 ;¥<=636>??@A$ ¤¢ ¤ *;5=B=A $ ¢£ 8$ ¢' -C ¢£ /£/ 6$¤C $ ¢'$¤ 8$ £* $¢' $¤C $8$$ ( % ¤C ( $ -/ $ $¤ ¤C ¤$ ( $ ¢£ ¤ $DA$- 8$ $¢£$ $DA$$$ $ ¤ ¤C 171 172 5° WSL / 5° FISL $ $ ¤ % % % $ $¢£$ $ ¤ $( ¢£ 5=B= $ ¢' + 7 4$¤C $ ¢£8$1$ $8$ 9$4$3$ (: % 1¤ ; $¢£,$A 6%2$ ¤ $ ¤* $ , % 7 1/,$F 9¤ $$1 > ¢£ ¢£ ¢' * ¤ @ 1¤@= 6 $ ¢£ ¢£ 21 $ $ ¢£ 5 ;¥<=636 >??@A,¤ $ ¥D¥GG¤¢¤¤ $,$$ $ ¢£$ (8$ ¤ $$18$ 1¤@=£ ¥D¥GG $ $ ( 1 $ $ % , ¢£¥D¥GG $2 62 1 ;£ A $ ,$ £ $$ %¢£ * $ +& , ¤ $$1 $,$ 1 1 $ ¢£ % 1 -$ $,$8$ 1 -$¢£$,$ $$1¤ ¢£ £% $ HI 9 %% 1¤ I@DH=4 62 1% $2111 % ++ ') 6 ¢£21 $ $ 5 $ $ $( / ( 1$ 1 - * ¤$ $ $( ¤ £ £ % 5° WSL / 5° FISL $ 1 ¥D¥GG8$$ $ $ ¤-*8$( % ¤ ¤ $ $( $ ¥/ ¥$ ¢£B¤¢ $(, 5 ¥D¥GG 8$ $ $ 1 ¥/ ¥$ ¢£ ¤ $ ,¤$5=B= 8$ $ $ ;5 A !"# $%& +-..,- 6,$ 1¤ $*$ £J? %% 1¤ @= @= $ %% 1¤ $ 9 ; A$ 9$ 6A $ ' B/ * ¤ ( @=$ -¢£F % %% $ - ' 1 / ¤ ;K-A$-7CA. > %% $ $ / 21 ¤ $ %$¢'$- @ %% % 6A%% 1¤ £$ % ¤C 8$ $ ( £ , -$ / 6 ¤¢ ¤ * ;5=B=A $ $ ¢£ ¢£ 9 173 174 5° WSL / 5° FISL L¤ ¤ $ % 8$ ¢' -C ¤ ¤ *£$( - ¢£ 8$ ¢'¤¢ % = ¤ $¢' $ £ *$ £ - $ $ 4 1$ ¢' =$ 1 $ $ 65=B=¤ $( N ;H3N44 OPPA8$$$( ¢£ $ 8$ % $ ¢£ %2 01) B ¤ £$£ %$¢'$DA$-- 2 ¤ $ ¢£, 9 8$ ¤ $DA$- $¢'8$8$ ( $ ,¤ $ ¢'¤ ¤$£ 23Q AQ¥R4BB43K4<594A=¦¥GGK9 CI@T QCNV >?? ¥<=636¥3 ¦3$ ¢£¥$ ¥ 4 T99 3 / >??@D943 56A4N=43¥$ F QCNVF 7W>4¢£OOP <9559B <BRK< H=4 >DI % ¥ 9A 9= V >?? A6K=6Q H = ¥ < F 4 ¥/ >??? B5A6X45=¤¤B= ¤W W QCNVFOO N44H3¦Q$ $¤ % W $% -C§ 8$ T9444B @?>@?¨ WOPP ©R6 ª < X « ¤ 3 4¤¤ 3$ 4- B8$5=B= W¤7 $ ¥$« 9444B C BWBJ@JJ@O3OOP 5° WSL / 5° FISL 175 FCA: Uma Ferramenta Livre para Análise de Circuitos Elétricos 1 1 2 1 Pablo Grigoletti *, Graçaliz Dimuro , Luciano Barboza , Renata Reiser , José U. de Nunes 1 2 2 Escola de Informática – Universidade Católica de Pelotas (UCPel) Rua Félix da Cunha, 412 – 96010-000 – Pelotas – RS – Brazil Escola de Arquitetura e Engenharia – Universidade Católica de Pelotas (UCPel) Rua Félix da Cunha, 412 – 96010-000 – Pelotas – RS – Brazil {pablogri,liz,lvb,reiser,junnunez}@ucpel.tche.br Abstract. FCA is a tool for the electric circuit analysis. It was conceived as free software, implemented using the Python programming language. The aim of this project is to develop free tools for reliable electric circuit analysis to be used in both teaching and research activities. This shall be obtained by means on interval techniques. Resumo. FCA é uma ferramenta para a análise de circuitos elétricos que serve a concepção de software livre e foi implementada utilizando-se a linguagem de programação Python. O objetivo deste projeto é desenvolver ferramentas livres para análise confiável de circuitos elétricos em atividades de ensino e pesquisa, o que deverá ser obtido utilizando-se técnicas intervalares. 1. Introdução Um dos grandes problemas enfrentados pelos alunos do curso de Engenharia Elétrica é o alto custo de software utilizado para análise de circuitos elétricos. Existem poucos programas livres (baseados na filosofia de software livre) e de qualidade voltados à área de análise de circuitos elétricos. Pela mesma razão, as atividades de pesquisa que dependem destas ferramentas também ficam prejudicadas. O Free Circuit Analyser (FCA) foi projetado e desenvolvido com o intuito de preencher esta lacuna, sendo este distribuído como software livre e licenciado através da GNU GPL. Adicionalmente, a segunda versão da ferramenta pretende incorporar técnicas da Matemática Intervalar para a modelagem de erros nos dados de entrada, controle dos erros oriundos da computação numérica e análise automática dos erros dos resultados obtidos, garantindo assim confiabilidade desses resultados. Utilizou-se como base teórica para o desenvolvimento do FCA o método de análise de circuitos elétricos denominado análise nodal [Hilburn, Johnson e Johnson, 1994; Irwin, 2000], e, para a resolução de sistemas de equações lineares, a decomposição LUP [Cormen et al., 2002]. Esta ferramenta foi implementada utilizando-se a linguagem Python [Chun, 2001]. Atualmente, o FCA está sendo utilizado pelos alunos do 1º semestre de Engenharia Elétrica da UCPel. Este projeto recebe apoio financeiro do programa CTINFO/CNPq e FAPERGS. * Bolsista IC/CNPq. 176 5° WSL / 5° FISL Este artigo está organizado como descrito a seguir. Na Seção 2, resume-se a análise nodal de circuitos elétricos, que se adota neste trabalho. A ferramenta FCA é descrita na Seção 3. Um exemplo de uma análise executada pela ferramenta é mostrado na Seção 4. A Seção 5 traz os trabalhos em andamento e a Conclusão. Informações complementares sobre o projeto e a ferramenta FCA estão disponíveis em: http://atlas.ucpel.tche.br/~pablogri. 2. Análise de Circuitos Elétricos Para se identificar os valores das tensões ou das correntes de um circuito elétrico são utilizadas as técnicas de análise de circuitos, sendo as mais conhecidas a análise de malhas e a análise nodal, ambas baseadas nas Leis de Kirchhoff [Hilburn, Johnson e Johnson, 1994; Irwin, 2000]. Estas técnicas geram sistemas de equações lineares de ordem n, cuja solução estima os valores das incógnitas do circuito. Optou-se por utilizar a análise nodal por ser exigido menor esforço computacional para se identificar os nós de um circuito (que já fazem parte da entrada de dados) do que suas malhas. Ela baseia-se na lei de Kirchhoff das correntes, na qual as tensões nodais são as incógnitas a serem determinadas [Hilburn, Johnson e Johnson, 1994; Irwin, 2000]. A análise nodal, em muitos casos, torna-se mais fácil quando aplicada a circuitos que contenham fontes de tensão. A existência destas fontes acarreta o surgimento de supernós e de nós aparentes, de acordo com a Figura 1. Um supernó é aquele em que dois nós terminais à uma fonte de tensão estão conectados em dois pontos quaisquer do circuito; e um nó aparente é um supernó com um de seus nós terminais conectado à referência (ponto 0). Figura 1. Circuito elétrico com supernó e nó aparente Este método de análise de circuitos gera um sistema de equações lineares algébricas (SELA) de ordem n. A resolução deste SELA resultará nas tensões nodais do circuito. O objetivo da decomposição LUP é encontrar três matrizes L, U e P, com dimensão nxn, de modo que PA=LU, onde L é uma matriz triangular inferior unitária, U é uma matriz triangular superior e P é uma matriz de permutação (inicialmente uma matriz identidade). Considerando um sistema do tipo Ax=b e multiplicando ambos os membros da equação por uma matriz P, obtém-se PAx=Pb e se PA=LU, então LUx=Pb. Considerando Ux=y, obtém-se: Ly=Pb (1) Ux=y (2) Na Eq. (1), tem-se um sistema triangular inferior e obtém-se a solução para o vetor y através de uma substituição direta. Em posse do vetor y, resolve-se o sistema da Eq. (2). Este sistema é triangular superior e dele obtém-se a solução para o vetor x através de uma substituição inversa. Na prática, observa-se que com o pivotamento, a matriz A (matriz original) será alterada em função das trocas de linhas, portanto o vetor b também deveria ser modificado para que a solução 5° WSL / 5° FISL do sistema não se altere. É para resolver este problema que existe a matriz P, para poder realizar no vetor b todas as trocas de linha que ocorreram na decomposição da matriz. A decomposição LUP foi escolhida para a implementação da resolução de SELA´s por ser um método numericamente estável e não possuir grande complexidade computacional [Cormen et al., 2002]. 3. Descrição do FCA O Free Circuit Analyser é uma ferramenta computacional multiplataforma, desenvolvida utilizando a linguagem de programação Python e baseada na filosofia de software livre. A entrada de dados do FCA é realizada utilizando um arquivo texto contendo a definição de um circuito elétrico. Cada linha do arquivo descreve um elemento do circuito no seguinte formato: elemento, numeração, nó1, nó2, valor onde elemento pode ser R (resistor), I (fonte de corrente) e V (fonte de tensão); numeração é um índice que identifica cada elemento; nó1 e nó2 são os terminais entre os quais o elemento está conectado e valor é o valor numérico do elemento. A saída de dados do FCA pode ser selecionada pelo usuário. Dentre as opções mais relevantes estão: tensões nodais, corrente nos elementos e descrição em português do circuito elétrico. Esta saída pode ser salva em um arquivo texto. A interface gráfica foi desenvolvida utilizando-se a wxPython, um wrapper da biblioteca wxWindows, que permite que as aplicações sejam portáveis e tenham a aparência de uma aplicação nativa. A Figura 2 mostra a interface do FCA. Para a utilização do FCA no sistema operacional MS Windows foi utilizado o módulo py2exe objetivando não necessitar do interpretador Python instalado na máquina. Figura 2. Interface do FCA (KDE) 4. Exemplo de Análise Realizada pelo FCA Para ilustrar uma análise realizada pelo FCA, considere o circuito elétrico introduzido na primeira coluna da Tabela 1. A segunda coluna desta tabela mostra a representação do respectivo circuito no FCA. Os resultados obtidos com a análise nodal aplicada ao circuito, executada pela ferramenta, são as tensões nodais e a corrente nos elementos, mostrados na Tabela 2. 177 178 5° WSL / 5° FISL Tabela 1. Representação de um circuito elétrico Circuito elétrico em sua representação gráfica Representação no FCA R R R R R R V V I I 1 2 3 4 5 6 1 2 1 2 1 1 2 3 4 5 3 3 0 4 4 2 0 0 5 0 2 4 1 2 1 2 2 1 1 1 12 6 4 2 Tabela 2. Resultados obtidos pelo FCA Tensões Nodais: V0 = 0.0 V V1 = 1.16666666667 V V2 = -5.5 V V3 = 6.5 V V4 = 0.5 V V5 = 0.25 V Corrente nos Elementos: IR1 = 0.666666666667 A ( 1 -> 4 ) IR2 = 3.33333333333 A ( 1 -> 2 ) IR3 = 2.75 A ( 0 -> 2 ) IR4 = 6.5 A ( 3 -> 0 ) IR5 = 0.25 A ( 4 -> 5 ) IR6 = 0.25 A ( 5 -> 0 ) II1 = 4.0 A ( 0 -> 1 ) II2 = 2.0 A ( 4 -> 2 ) IV1 = 8.08333333333 A ( 2 -> 3 ) IV2 = 1.58333333333 A ( 3 -> 4 ) 5. Conclusão e Trabalhos em Andamento Com a realização de vários testes comparativos com o software PSpice foi possível concluir que o FCA gera resultados em menos tempo e com maior precisão. A utilização do software pelos alunos do curso de Engenharia Elétrica possibilita concluir que o software teve uma boa aceitação e é de fácil uso, servindo como alternativa aos softwares comerciais utilizados na área de análise de circuitos elétricos. Atualmente existem três linhas de trabalho relativas ao projeto FCA: (i) desenvolver uma interface gráfica mais amigável para o software, semelhante as dos programas comerciais utilizados na área de análise de circuitos elétricos; (ii) permitir a utilização de fontes controladas [Hilburn, Johnson e Johnson, 1994; Irwin, 2000], pois atualmente o sistema só contempla fontes independentes e resistores; e (iii) trabalhar com a possibilidade de tratar os valores dos elementos como intervalos e aplicar as técnicas da Matemática Intervalar [Moore, 1966; 1979] no controle automático dos erros de computação numérica. Referências Bibliográficas Chun W. J. Core Python Programming. s.l: Prentice Hall PTR, 2001. Cormen T. H. et al. Algoritmos: Teoria e Prática. 1.ed. Rio de Janeiro: Campus, 2002. Hilburn J. L.; Johnson D. E.; Johnson J. R. Fundamentos de Análise de Circuitos Elétricos. 4.ed. Rio de Janeiro: LTC, 1994. Irwin J. D. Análise de Circuitos em Engenharia. 4.ed. São Paulo: Makron Books, 2000. Moore, R. E. Interval Analysis. Englewood: Prentice-Hall, 1966. Moore, R. E. Methods and Applications of Interval Analysis. Philadelphia: SIAM, 1979. 5° WSL / 5° FISL Utilização do GNU/Linux e outros Softwares Livres na Instrumentação Eletrônica e de Aquisição de Dados por Computador Daniel F. Gomes, Esdras Miranda, Luis Antonio P. Santos, João P. Brito Filho Centro de tecnologia e geociências – Universidade federal de Pernambuco (UFPE) Caixa Postal 7800 – 50.711-970 – Recife – PE – Brasil {dafill,mirandaesdras}@ig.com.br, [email protected], [email protected] Abstract. A problem frequently found when using the GNU/Linux in laboratories is the difficulty to find hardwares and softwares of low cost for data acquisition from computer. Aiming to popularize the GNU/Linux and also to lower the cost with data acquisition instrumentation , we describe here how to implement these acquisition systems in computers with free softwares. It is explained in the present work not only how to implement acquisition softwares, but as well as to implement low cost hardware for acquisition of data for GNU/Linux. Resumo. Um problema encontrado freqüentemente na utilização do GNU/Linux em laboratórios é a pouca disponibilidade de hardwares e softwares de baixo custo para aquisição de dados por computador. Visando contribuir com a popularização do GNU/Linux e também baixar os custos com instrumentação de aquisição de dados, descrevemos aqui como implementar sistemas de aquisição em computadores com softwares livres. Explicamos neste trabalho não somente como implementar softwares de aquisição, mas também como implementar hardware de aquisição de baixo custo para GNU/Linux. 1. Introdução Este artigo destina-se a auxiliar a popularização do Linux em computadores de laboratórios de pesquisa experimental, onde freqüentemente é necessário fazer medidas por computador devido as grandes vantagens em relação as medidas manuais. Podemos citar como algumas das vantagens das medidas por computador: precisão, reprodutibilidade e facilidade de obtenção de grandes quantidades de dados em períodos longos ou muito curtos. Os principais dispositivos de entrada utilizados para os fins de aquisição de dados por computador são, basicamente, as portas de comunicação padrão: RS232 , Centronics (paralela) e IEEE488 (GPIB). Os novos padrões como USB e FIREWARE ainda não chegaram a se popularizar nesta área basicamente por serem bem mais novos que os padrões anteriores e por terem implementações de hardware mais complexas. Entretanto tudo indica que nos próximos anos o padrão USB deverá suplantar os padrões mais antigos principalmente devido a uma nova geração de chips de interface que estão sendo desenvolvidos pelos fabricantes de hardware e que devem simplificar muito a implementação destes novos padrões. 179 180 5° WSL / 5° FISL As linguagens de programação utilizadas para fazer os programas de aquisição de dados variam muito entre linguagens proprietárias e padronizadas. Algumas das linguagens proprietárias mais utilizadas são: LabView, HpVee, Assit, etc. Entre as linguagens padronizadas a mais utilizada é a C, sendo o Basic também muito utilizado. Atualmente os sistemas operacionais mais utilizados na área de aquisição de dados são os de família Windows9x (95, 98, 98b2, etc), devido a possibilidade de escrever programas que acessem as portas do sistema diretamente sem intermédio do sistema operacional. Outro motivo é por serem sistemas considerados “leves”, podendo rodar em computadores modestos destinados única e exclusivamente a aquisição de dados. Sistemas como o WinXp, WinNT, Linux funcionam em modo protegido e normalmente não permitem o acesso direto dos usuários as portas de comunicação do computador. Entretanto existem desvantagens óbvias em se utilizar os sistemas operacionais da familia windows9x, como por exemplo: instabilidade notória do sistema, falta de suporte por parte do fabricante, não mais comercialização deste, etc ... Usar os sistemas da série Windows mais novos como o WinXP e o Win2K, além de representar um custo com aquisição de licenças, ainda implicam em descarte total de computadores mais antigos e em dificuldades com a programação deste. Como o acesso aos dispositivo de entrada e saída do computador deve ser feito via rotinas do sistema operacional, quase sempre é necessário a obtenção de alguma “biblioteca” ou objeto (de código fechados e/ou comerciais) de programa para facilitar o serviço de programação. Este último fato gera dois implicantes graves: Portabilidade comprometida. Os programas desenvolvidos, por exemplo, para WinXP, muito provavelmente não serão facilmente portáveis para outros computadores/sistemas operacionais se não existir um porte das bibliotecas e objetos para o novo computador/sistema desejado. Falta de controle e desconhecimento das rotinas internas das bibliotecas e/ou objetos. As rotinas e algoritmos usados nessas bibliotecas/objetos podem não ser as mais adequadas para o tipo de aquisição que o pesquisador pretenda fazer ou mesmo podem conter falhas que possam comprometer a confiabilidade e a estabilidade dos programas que as utilizem. Uma alternativa é a compra de um software profissional para aquisição de dados que incorpore soluções “pré-moldadas” que simplifiquem bastante o serviço de programação de dispositivos de entrada e saída, exemplo: LabView. Entretanto esta solução implicaria em custo do software que pode ter um valor bem elevado (No caso do LabView apartir de R$1500 para uma configuração básica) além do custo com o sistema o operacional e de um computador moderno/novo. Ainda assim a questão da portabilidade e continuidade da sua solução fica a depender do fabricante do software que foi utilizado. Ao se utilizar sistemas tipo GNU/Linux como base para uma plataforma de aquisição de dados e softwares livres como ferramentas tem-se pelo menos três grandes vantagens: O sistema pode ser facilmente adaptado para funcionar em computadores de pequeno, médio e grande porte, além de poder ser adaptado para funcionar em sistemas embarcados com hardware especializados (ex: terminais de coleta de dados, handhelds, palms etc). 5° WSL / 5° FISL GNU/Linux oferece confiabilidade e robustez bem superiores as do Windows da familia 9x e sem as necessidades de hardwares dos windows XP e 2K. Padrões e linguagens abertas asseguram a continuidade e portabilidade do programa desenvolvido/utilizado pelo pesquisador. 2. Como fazer aquisição de dados com GNU/Linux O acesso aos dispositivos de entrada e saída em um sistema GNU/Linux pode ser feito diretamente em alguns casos (como o da porta paralela). Entretanto, por se tratar de um sistema multitarefa e multiusuário a melhor maneira é através das chamadas do sistema. No caso no Linux tal tarefa não implica em conhecimentos extra de subrotinas e chamadas do sistema operacional como é o caso, por exemplo, do WinXP. Como o Linux é um sistema tipo UN*X ele possui em seu sistema de arquivo pastas especiais, pastas de dispositivos, que representam hardware do sistema. Assim a comunicação com um dispositivo de E/S do sistema em muitas vezes pode ser uma operação tão simples quanto escrever ou ler dados num arquivo. E efetivamente muitos dos comandos de linguagens de programação como, por exemplo, C são os mesmos para as duas operações, leitura/escrita em arquivos e em dispositivo. Em alguns casos, como os dispositivos seriais, os programas para a comunicação com eles não precisam nem mesmo serem escritos. Podendo se aproveitar programas já fornecidos com o sistema, tais como os aplicativos de comunicação dd e minicom. 3. Resultados O sistema de aquisição de dados aqui descrito foi desenvolvido como parte do trabalho de intrumentção da disciplina de Instrumentação Eletrônica do Curso de Eletrônica da UFPE. O sistema consiste num módulo de conversão analógico-digital de uso geral com uma saída de dados padrão RS232, a qual é conectada no computador e um software de aquisição de dados feito em linguagem C com o auxílio das bibliotecas gráficas GTK de código aberto. Tanto o projeto do software e do hardware servirão de elementos-base para a construção de aplicativos específicos para as diversas necessidades de medidas dos laboratórios modernos. O software de aquisição foi feito através da IDE livre Anjuta. Figura 1. Imagem da tela do software de aquisição de dados desenvolvido O hardware foi desenvolvido para ser o mais simples possível. Ele utiliza componentes de fácil obtenção no mercado e de baixo custo, proporcionando uma alternativa viável e simples mesmo para quem não tem muitos conhecimentos na área de eletrônica. Este sistema funciona com uma taxa de amostragem de dados de 72Hz, uma taxa de transmissão de dados de 9600bps e uma resolução de 8bit de conversão A/D. 181 182 5° WSL / 5° FISL Figura 2. Datasheet do hardware de aquisição de dados desenvolvido para ser usado com GNU/Linux. (Para visualização completa, usar o Zoom para ampliar a imagem) Entretanto a taxa de amostragem pode ser facimente elevada para até 10kHz, mudando apenas as freqüências de clock do circuito e subistituindo os acopladores ópticos 4n25 por outros de maior velocidade. No circuito o valor amostrado é um nível de tensão de 0 a 5v. O transdutor e o sistema de acondicionamento de sinal não foram incluídos no circuito da figura 2 pelo fato destas duas etapas estarem fortemente ligadas ao tipo de sinal e a grandeza física que se deseja medir. 4. Considerações finais O custo total do sistema fica distribuído entre a instalação do GNU/Linux, adaptação do programa base às necessidades do laboratório, compra dos componentes do circuito (~R$20,00) e a confecção da placa de circuito(~R$20,00). Este sistema pode ser utilizado para fazer medidas de baixa freqüência até 20Hz. Aplicações possívies são medidas de temperatura, pressão, dilatação, luminosidade, peso, entre outras. Um trabalho futuro seria redesenhar o hardware para funcionar com o padrão USB. 5. Referências bibliográficas Thomas, R. e Yates, J. ,“Unix Total”, McGraw-Hill Ltda, São Paulo, 1989. Schildt, H. ,“C completo e total”, MAKRON Books do Brasil Ltda, São Paulo, 1990 Welsh, M. e Kaufman, L. ,“Dominando o Linux”, Editora Ciência Moderna Ltda, Rio de Janeiro, 1997. Rubini, A. ,“Linux device drivers”, Market Books, São Paulo,1999. Ercegovac, M. , Lang, T. e Moreno, J. ,“Introdução aos sistemas digitais”, Bookman, Porto Alegre, 2000. 5° WSL / 5° FISL Sessão Técnica 13 BIOLÓGICAS & BD 183 184 5° WSL / 5° FISL 5° WSL / 5° FISL 185 Um Sistema Baseado em Software Livre para Anotaç ão Automática de Genomas e Proteı́nas Ana L. C. Bazzan , Bruno S. Fajardo, Leonardo V. Nascimento, C ássia T. dos Santos, Vitório F. Sassi Instituto de Informática – Universidade Federal do Rio Grande do Sul Caixa Postal 15064 – 90501-970 Porto Alegre, RS bazzan,bsfajardo,lvnascimento,ctsantos,vfcsassi @inf.ufrgs.br Abstract. The present article aims at reporting the experience achieved with the development of the ATUCG tool. The goal of this tool is to provide an annotation tool for the expert in genomics and proteomics. Such tool is open and based on free software. Resumo. Este artigo visa reportar a experiência obtida com o desenvolvimento da ferramenta para anotaç ão de genoma ATUCG. O objetivo deste ambiente é disponibilizar ao especialista em genômica e proteômica uma ferramenta para anotaç ão que seja aberta e baseada em software livre. 1. Introdução A Bioinformática tem o propósito de ligar duas ciências que vêm crescendo de forma exponencial nos últimos 20 anos: a Biologia e a Ciência da Computação. O estudo dos genes e proteı́nas provê informações sobre o crescimento celular, comunicação e sua organização. O projeto genoma humano foi o principal responsável pela identificação da necessidade de ferramentas computacionais para auxiliar os pesquisadores na análise do material decodificado. É importante salientar que o pares de bases, mas apenas uma pequena parcela desses genoma humano é formado de dados são os responsáveis pela codificação das caracterı́sticas humanas. No Brasil existem várias redes de seqüenciamento e análise de genoma trabalhando com vários organismos (a maioria patogênicos). Quase todos estes projetos têm uma caracterı́stica fortemente multidisciplinar, incluindo especialistas das áreas de biotecnologia e informática. Este casamento não ocorre por acaso: dado o volume de dados produzidos por cada projeto genoma, torna-se absolutamente necessário gerenciar estes dados e, principalmente, automatizar processos de forma a libertar o especialista de tarefas repetitivas. Em geral, cada rede desenvolve suas próprias ferramentas de integração e anotação, procedimento que poderia ser otimizado se houvesse troca destas entre as redes. Dentre as principais tarefas associadas a estes projetos, podem ser citadas a descoberta e a anotação das caracterı́sticas de cada gene. Anotação é a tarefa de descrever várias particularidades de um genoma ou parte de um genoma ou ainda de seqüências de bases (DNA) ou amino-ácidos (proteı́nas) e depositar estas informações posteriormente em um banco de dados para que sejam utilizadas no futuro para consultas. Esta tarefa usualmente era feita de forma manual e com velocidade lenta. Entretanto, a corrida para seqüenciamento e compreensão de um genoma tem levado os pesquisadores ao que se denomina seqüenciamento de alta vazão ou seja, um seqüenciamento de um genoma inteiro realizado de forma rápida o que envolve mecanização de algumas tarefas (tendência atual). Projeto parcialmente apoiado pelo CNPq e pela FAPERGS Autores parcialmente apoiados pelo CNPq 186 5° WSL / 5° FISL Além do conhecimento necessário (o qual é indispensável), o especialista usa uma série de ferramentas computacionais e programas especı́ficos. Grande parte destes processos pode ser automatizado. Logo, o objetivo principal deste projeto é a implementação de um ambiente para anotação automática, acessı́vel através da Internet, que disponibilize o acesso público as suas funcionalidades e código-fonte. Este ambiente é denominado ATUCG – Ambiente para anoTação aUtomátiCa de Genomas. Como testbed estão sendo utilizados dados públicos relativos ao genoma de bactérias relacionadas com o organismo M. hyopneumoniae que é o organismo-alvo do projeto PIGS/GENESUL [Zaha, 2001] (apoiado pela Rede Sul de Genoma que conta com financiamento da Fapergs e do CNPq). A ferramenta proposta possibilita que pesquisadores e especialistas não precisem alocar horas em trabalhos repetitivos e tediosos que exigem constante busca em bases de dados, pois tais atividades podem ser feitas, ao menos parcialmente, de forma automática. Para isso, um sistema multiagente é especialmente indicado pois permite uma modularidade ou distribuição das atividades de forma natural, baseada na função da atividade. Diversos agentes se encarregam de realizar as tarefas repetitivas especificadas pelo especialista. Esta ferramenta tem ainda a vantagem de reunir em um único ambiente as funcionalidades requeridas na tarefa de anotação de um genoma, evitando que o usuário tenha que se adaptar às inúmeras interfaces e modus operandi das diversas ferramentas hoje disponı́veis de forma isolada para auxı́lio da anotação. Este artigo está organizado como segue. Na seção 2, a motivação para o desenvolvimento do ambiente proposto e os trabalhos relacionados são comentados. A seção 3 apresenta a arquitetura do ambiente ATUCG. Por fim, na seção 4, as consideraç ões finais e as propostas para trabalhos futuros são comentadas. 2. Motivação e Trabalhos Relacionados Existem artigos publicados sobre o uso de métodos para auxı́lio nas diversas tarefas ligadas a um projeto genoma. Entretanto, muitos destes trabalhos reportam ferramentas para áreas e usos isolados, como por exemplo para predição de estruturas de proteı́nas. Desta forma, tais ferramentas em geral não atingem seu pleno potencial devido ao fato de que se especializam em determinados nichos de aplicação. Com o crescente volume de dados sendo posto a disposição, todos os dias novas relações de homologia são detectadas, tornando necessário que o técnico da área de biotecnologia conheça todos os métodos para decidir pelo seu uso. Existe portanto, em projetos genoma, no momento, uma grande carência de ferramentas computacionais integradas que lidem com as várias fases do projeto: desde a descoberta das ORFs (open reading frames ou regiões potencialmente codificantes) até a predição da funcionalidade de determinado gene. A idéia de se basear as várias atividades em sistemas multiagente e distribuir as tarefas entre agentes não é nova (embora recente). No projeto GeneWeaver [Bryson et al., 2000], um sistema multiagente está sendo desenvolvido onde os agentes concentram-se nas tarefas de mais alto nı́vel como análise dos dados. Entretanto, os agentes não lidam com a parte mais repetitiva que é justamente a busca de informações. Em [Decker et al., 2001], é descrito um protótipo que objetiva a anotação automática de um vı́rus com base em busca de informações em bancos de dados públicos. Outros trabalhos relacionados com a nossa proposta referem-se ao emprego de técnicas de aprendizado de máquina (machine learning) e descoberta de conhecimento em bancos de dados. Técnicas de aprendizado têm sido usadas largamente em bioinformática. Uma proposta de combinação de aprendizado e anotação automática é feita em [Kretschmann et al., 2001], que usa um algoritmo de aprendizado de máquina (o C4.5) para gerar regras para realizar a anotação automática de um dos campos do banco de dados SWISS-PROT. 5° WSL / 5° FISL 187 No entanto, estes ambientes de modo geral não adotam a filosofia de software livre, embora estejam disponı́veis via Internet para uso. Neste trabalho é proposta uma plataforma integrada, baseada em software livre e acesso público, para a anotação e seqüenciamento de genomas e proteı́nas. A motivação à adoção de software livre para o desenvolvimento deste ambiente está baseada nas seguintes premissas: gratuidade de licenciamento; bom nı́vel de qualidade em relação aos softwares proprietários, devido ao número de revisões do código-fonte; estabilidade, robustez e escalabilidade oferecidas pelos softwares básicos (UNIX/LINUX); sofwares necessários às atividades propostas para o ambiente estão disponı́veis em versões estáveis de softwares livres; e vasta documentação das funcionalidades dos softwares e de seus códigos-fonte. 3. Arquitetura Baseada em Software Livre A arquitetura do ATUCG , ilustrada na Figura 1, é formada por diferentes camadas. Detalhes podem ser obtidos em [Bazzan et al., 2003]. A camada I é responsável pela tarefa de encontrar ORFs, a partir da seqüência de DNA de um determinado organismo, informada pelo usuário. Nesta camada, é feita a análise da sequência informada, gerando uma lista de ORFs não redundantes, repassadas à camada II. Na camada II, núcleo da abordagem, são realizadas as seguintes atividades: coleta de dados na base de dados SWISS-PROT; criação das consultas especı́ficas; criação de formatos de saı́da adequados; geração de dados para os algoritmos de aprendizado de máquina; avaliação da qualidade das regras geradas; preparo dos dados a serem anotados; aplicação das regras; e anotação automática das palavras-chave. A saı́da desta camada é um modelo de anotação automático dos campos do banco de dados SWISS-PROT. Finalmente, a camada III objetiva auxiliar o usuário na verificação da corretude do modelo de anotação proposto. Para isto, as regras de anotação obtidas são convertidas para uma linguagem semântica e apresentadas de forma legı́vel ao usuário, que pode indicar quais regras foram aplicadas corretamente e quais não deveriam ter sido consideradas. DNA SEQUENCING ACTIVITIES BLAST I SWISS GENERATION OF RULES FOR AUTOMATED ANNOTATION II MOTIFS VALIDATION BY USER AND ANNOTATION III TrEMBL FINAL Figura 1: Arquitetura geral do ATUCG Atualmente, as camadas I e II estão parcialmente implementadas. No futuro, devem ser incorporados os serviços previstos para a camada III, que consiste basicamente da validação pelo especialista. Conforme comentado anteriormente, o sistema atual está completamente implementado adotando-se software livre. Assim que optou-se pelo uso deste tipo de software, foi realizado um estudo dos softwares que possuem compatibilidade, a partir do qual foram selecionados os seguintes softwares/linguagens: Apache, PostgreSQL, PHP e Perl. O gerenciamento de anotação de seqüências de um organismo é feito através de uma interface web desenvolvida na linguagem PHP, a qual é suportada por um servidor Apache. Os dados obtidos durante o processo de anotação são armazenados em um banco de dados relacional PostgreSQL. Além disso, a linguagem Perl, que oferece ampla facilidade para manipulação de 188 5° WSL / 5° FISL seqüências de strings (os bancos de dados biológicos armazenam dados neste formato), é utilizada na implementação de scripts que geram os arquivos de entrada para as ferramentas de aprendizado de máquina (C4.5, CN2, T2) e que formatam as regras de anotação. O Perl também é usado na implementação de uma ferramenta de acesso ao banco de dados SWISS-PROT. Atualmente, o acesso ao sistema restringe-se à rede interna do Instituto de Informática da UFRGS, em função das normas de acesso do Instituto. Futuramente, pretende-se prover o acesso livre ao sistema via Internet, para a comunidade genômica e proteômica do Brasil e Exterior, disponibilizando versões do sistema em Português e Inglês. Além disso, objetiva-se disponibilizar o acesso ao código-fonte do sistema, sob licença GPL. 4. Conclusão e Trabalhos Futuros Neste artigo foi reportada a experiência obtida com o desenvolvimento da ferramenta para anotação de genoma ATUCG, a qual está baseada em software livre e acesso público. O ambiente foi projetado visando disponibilizar aos pesquisadores de genômica e proteômica ferramentas computacionais integradas para suporte às tarefas de anotação e seqüenciamento de proteı́nas e genomas. Este ambiente estará disponı́vel publicamente para uso através da Internet, bem como para download, sob os termos GPL. Grande parte dos ambientes que suportam (e integram) as atividades relacionadas ao seqüenciamento e anotação, ainda que raros, não estão amplamente disponı́veis. Por outro lado, os ambientes desenvolvidos com software livre ainda não provêm estas atividades de forma integrada. O ambiente ATUCG endereça estes dois aspectos, propondo a integração entre ferramentas para seqüenciamento e anotação, baseada em uma plataforma de software livre e uso público através da Internet. A próxima atividade refere-se a integração da tecnologia de agentes ao ambiente, onde as tarefas de cada camada serão distribuı́das entre diversos agentes, atuando de forma cooperativa (parte destes agentes já encontram-se implementados). Para isto, serão utilizadas ferramentas tais como Apache Tomcat, distribuı́do sob licença ASF, pacote Java, disponibilizado gratuitamente pela Sun, e plataforma JADE (Java Agent DEvelopment Framework) para suporte a comunicação entre agentes, distribuı́da sob a licença LGPL. Além disso, devem ser incorporados os serviços propostos para a camada III, que consiste na validação com o especialista. De acordo com esta validação, poderá ser feita a incorporação da anotação ao banco de dados mantido pelo projeto. Referências Bazzan, A. L. C., Duarte, R., Pitinga, A. N., F., S. L., Silva, S. C., and Souto, F. A. (2003). ATUCG–an agent-based environment for automatic annotation of genomes. International Journal of Cooperative Information Systems, 12(2):241–273. Bryson, K., Luck, M., Joy, M., and Jones, D. (2000). Applying agents to bioinformatics in GeneWeaver. In Proc. of the Fourth Int. Workshop on Collaborative Information Agents, Lect. Notes in Computer Science. Springer-Verlag. Decker, K., Zheng, X., and Schmidt, C. (2001). A multi-agent system for automated genomic annotation. In Proc. of the Int. Conf. Autonomous Agents, Montreal. ACM Press. Kretschmann, E., Fleischmann, W., and Apweiler, R. (2001). Automatic rule generation for protein annotation with the C4.5 data mining algorithm applied on SWISS-PROT. Bioinformatics, 17:920–926. Zaha, A. (2001). Projeto rede sul de análise de genomas e biologia estrutural. In Portuguese. 5° WSL / 5° FISL Ferramenta de Telemedicina em Software Livre para Monitoração de Sinais Vitais Heloísa Melo Hertzog, Jorge Guedes Silveira Grupo de Pesquisas Avançadas em Redes de Comunicação e Tecnologia da Informação Programa de Pós-Graduação em Engenharia Elétrica Pontifícia Universidade Católica do Rio Grande do Sul Av. Ipiranga, 6681 - Partenon – 90619-900 – Porto Alegre – RS – Brasil {hmelo,jguedes}@gparc.org Abstract. Telemedicina is a used term to specify which resources of telecommunications and information technology are used for the transmission, control and the remote monitoring of biomedical data. The main objective of this article is to present the applied research system that consisted on the software implementation of a Telemedicine Tool that integrates different biomedical applications focused on monitoring and controling the patient vital signals from an Hospital – UTI or from a residential room. Resumo. Telemedicina é o termo utilizado para especificar que recursos de telecomunicações e de tecnologia da informação são utilizados para a transmissão, controle e monitoração remota de dados biomédicos. O objetivo principal deste artigo é apresentar a pesquisa aplicada na implementação em software de uma Ferramenta de Telemedicina que integra diferentes aplicações biomédicas destinadas à monitoração e controle dos sinais vitais dos pacientes a partir da UTI de um hospital ou da sua residência. 1. Introdução Segundo a Organização Mundial de Saúde (World Health Organization), Telemedicina é a oferta de teleserviços ligados aos cuidados com a saúde nos casos em que a distância é um fator crítico. Tais serviços são providos por profissionais da área da saúde, usando sistemas de telecomunicações e de tecnologias da informação, sobretudo as redes de computadores e sistemas de comunicação sem fio, para o intercâmbio de informações válidas tanto para diagnósticos e prevenção quanto para o tratamento de doenças. [1] Mais amplamente, a Telemedicina combina as tecnologias de engenharia, informática, telecomunicação e medicina, provendo condições para o envio e o recebimento de informações (dados, áudio, imagens, controle e biometria), viabilizando ações médicas em que os profissionais e os pacientes não estejam fisicamente no mesmo local, permitindo a presença real do médico através de um atendimento virtual às comunidades remotas e/ou carentes desprovidas de profissionais especializados, tudo no interesse de melhorar a qualidade dos serviços prestados às pessoas e suas comunidades. Entre os principais objetivos da Telemedicina que a ferramenta desenvolvida suporta, podemos citar: - Monitoração de pacientes à distancia, tanto do ambiente domiciliar quanto do ambiente hospitalar, permitindo a visualização dos sinais vitais e o recebimento de alarmes em casos de emergência; 189 190 5° WSL / 5° FISL - Acompanhamento remoto de pacientes, auxiliando no atendimento em localidades afastadas e/ou carentes, postos de saúde, hospitais de pequeno porte e em ambulâncias utilizadas para a realização de campanhas preventivas ou atendimentos de urgência, ao permitir que determinados casos sejam avaliados a distância por médicos especialistas naquela área; - Armazenamento eletrônico das informações do paciente, possibilitando aos médicos acessá-las em qualquer horário e local; - Vídeo-monitoração do paciente; - Realização de uma comunicação entre médicos, enfermeiros e pacientes. No contexto deste trabalho, a Ferramenta de Telemedicina foi desenvolvida de modo a viabilizar a transmissão remota de dados biomédicos, de imagens, de áudio e de sinais de controles para profissionais localizados à distância ou em centrais locais de monitoração. 2. Objetivos O projeto “Ferramenta de Telemedicina em Software Livre para Monitoração de Sinais Vitais” visa oferecer à comunidade de saúde pública, aos hospitais, às clínicas e médicos soluções que possam ser utilizadas como fator de qualificação no atendimento dos pacientes através da monitoração e acompanhamento dos mesmos à distância, possibilitando o acesso às informações do paciente a qualquer hora, em qualquer local. A ferramenta foi desenvolvida sobre um sistema Linux-embedded, oferecendo à comunidade de software livre soluções de código aberto que podem ser utilizadas no âmbito da monitoração de pacientes à distância através das aplicações de: - Monitoração dos sinais vitais eletrocardiograma, oximetria) dos pacientes; (temperatura, respiração, pressão arterial, - Análise dos sinais vitais e comparação com parâmetros pré-estabelecidos, gerando alarmes para a central de monitoração em casos de emergência; - Armazenamento dos sinais vitais monitorados; - Armazenamento eletrônico das informações do prontuário do paciente, contendo: - informações pessoais do paciente; - anotações dos médicos; - anotações dos enfermeiros; - anotações dos plantonistas; - Armazenamento dos resultados dos exames realizados juntamente com suas respectivas imagens; - Realização de uma comunicação entre os pacientes e médicos e também entre os próprios profissionais através da tecnologia de voz sobre IP (Internet Protocol) desenvolvida pelo grupo de pesquisa VoIP / GPARC&TI / PUCRS; [2] [3] - Realização da vídeo-monitoração do paciente através monitoração de imagens desenvolvido pelo grupo de pesquisa GMART / GPARC&TI / PUCRS; [4] [5] - Software de controle e atuação remota sobre equipamentos e dispositivos como ar condicionado, iluminação e sobre câmeras de vídeo, acionando controles de PAN, TILT e Zoom (PTZ), possibilitando a visualização do ambiente e dos equipamentos. 5° WSL / 5° FISL A escolha pela utilização de software de código aberto no lugar de códigos proprietários deve-se ao seu baixo custo, alta confiabilidade e possibilidade de acesso à inteligência embutida no produto. Esta escolha, seguramente, aumenta a possibilidade de expansão da telemedicina, ao reduzir os custos, ao mesmo tempo em que fortalece o movimento de um processo coletivo de criação e produção de tecnologia disponível em escala global. 2. Arquitetura Funcional A Ferramenta de Telemedicina integra múltiplos meios de comunicação e diferentes tecnologias, com uma base de dados e interface gráfica única para o(s) usuário(s) do sistema. Em outras palavras, a Ferramenta é destinada a aceitar inovações e demonstrar a integração de várias formas de comunicação (mensagens de texto, voz e imagens), de tecnologias (Linux embarcado, bluetooth, Internet, Ethernet, ADSL, SMS,...) e de coletas de dados (desde sensores até câmeras de vídeo). Para permitir que inúmeras aplicações sejam implementadas sobre esta ferramenta e que novos serviços possam ser constantemente agregados é importante projetar e implementar uma arquitetura modular e flexível: - Modular: baseada em módulos capazes de operarem integrados ou de forma autônoma, como aplicações independentes; - Flexível: capaz de evoluir e de suportar novos serviços. Desta forma, novas funcionalidades podem, continuamente, serem agregadas sem alterações de códigos, bastando para tanto a reconfiguração da Ferramenta no sentido de manter a estrutura baseada nos módulos já existentes e nos novos módulos que serão agregados. A Figura 1 apresenta a aplicação da ferramenta no ambiente hospitalar, possibilitando a monitoração em paralelo de vários pacientes pela equipe de médicos, enfermeiros e plantonistas e o acompanhamento remoto pelo médico responsável. Figure 1. Cenário de Aplicação no ambiente hospitalar A Ferramenta de Telemedicina é formada por: 1. Box: sistema hardware-software baseado em Linux embarcado a ser disponibilizado em cada quarto, equipado com sensores, câmeras de vídeo, atuadores e microfones para possibilitar a monitoração, comunicação e controle remoto de dispositivos. Os sensores são individuais para cada paciente do quarto, assim como os microfones e vários quartos podem ser monitorados ao mesmo tempo; 2. Central de Monitoração - aplicação servidora principal, responsável pela centralização dos diferentes serviços, armazenando todas informações recebidas dos inúmeros 191 192 5° WSL / 5° FISL Terminais Box e as disponibilizando às pessoas autorizadas, localizadas tanto local quanto remotamente, através das Aplicações Web Clientes; 3. Aplicação Web Cliente - módulo ou aplicação desenvolvida para ser utilizada pelos médicos e enfermeiras para realizar a interface entre a Central de Monitoração e os profissionais da área da saúde, possibilitando o acesso tanto aos serviços de monitoração (sinais vitais, áudio, vídeo, alarmes e atuação) quanto ao prontuário do paciente de qualquer computador via Web. Foi projetada utilizando o modelo web based, oferencendo uma interface gráfica para os usuários para acesso aos diversos serviços disponíveis via Internet. 3. Conclusão O presente já nos traz, sem dúvida, uma grande quantidade de informações digitais, seja através de antenas, fibras ópticas, satélites, TV a cabo, Internet, linhas telefônicas comuns e celulares. No contexto médico, o computador e as redes de comunicação serão uma parte integrante tanto quanto o estetoscópio. O desenvolvimento de uma Ferramenta de Telemedicina baseada em software livre objetiva oferecer, a baixo custo, um conjunto de serviços ligados aos cuidados com a saúde, tanto para pacientes hospitalizados quanto para pacientes que possam ser acompanhados e monitorados à distância das suas próprias casas, sendo que a distância deixa de ser um fator crítico. Agregamos à Ferramenta recursos de computação e de telecomunicações os quais possibilitam prover condições para a aquisição de dados, processamento dos sinais e o envio/recebimento das informações (dados, áudio e imagens) em tempo quase real, viabilizando ações médicas interativas mesmo não estando os profissionais e os pacientes fisicamente no mesmo local, permitindo a universalização do acesso à saúde, melhorando a qualidade dos serviços prestados às pessoas e às comunidades distantes. Em termos sociais este projeto tem uma importância fundamental para a melhoria do sistema de saúde municipal, estadual e nacional, podendo ser um sistema embrionário de Telemedicina que deverá ser implantado inicialmente no Hospital São Lucas e posteriormente ampliado para a rede da Grande Porto Alegre, tornando possível a sua expansão de modo a atingir os lugares mais remotos do estado do Rio Grande do Sul e, posteriormente, do Brasil. Um protótipo da ferramenta estará disponível para demonstração no stand da PUCRS durante o Fórum Internacional de Software Livre. 4. Referências [1] World Health Organization. Disponível na Internet: http://www.who.int/en [2] B. Ricardo, G. S. Jorge, C. C. Fladhimyr, Transmissão Robusta de Voz sobre IP Aplicado a Redes de Comunicação. Anais do CISCI 2002, julho, 2002. [3] B. Ricardo, G. S. Jorge, C. C. Fladhimyr , M. S. Pedro, A robust arquitecture for IP telephony systems interconnection. Anais do PACRIM'03, agosto, 2003. [4] Q. Alexandre, G. S. Jorge, J. R. Rafael, Telemonserver: Um sistema de Videomonitoração Via Web. Anais do COBRAPI 2002, março, 2002. [5] G. S. Jorge, J. R. Rafael, Câmera Robô: Controlador Remoto Via Internet para Posicionamento de Câmeras de Vídeo. Anais do COBRAPI 2002, março, 2002. [6] R. L. Bashshur, J. H. Sanders, G. W. Shannon, Telemedicine - Theory and Practice. Charles C. Thomas Publisher, 1997. 5° WSL / 5° FISL MOTV: Uma Extensão ao Modelo de Dados Orientado a Objetos com Suporte a Tempo e Versão Eduardo Nunes Ferreira Bastos1∗, Antônio Carlos da Rocha Costa1 1 Escola de Informática – Universidade Católica de Pelotas Caixa Postal 402 – 96010-000 Pelotas, RS [email protected], [email protected] Abstract. MOTV is an extension to the model of object-oriented database, based in the Temporal Version Model, with support for the dimensions of time and version. It was implemented in Python and integrated later to the ZOPE platform, being distributed as free software, licensed through GNU GPL. Resumo. MOTV é uma extensão ao modelo de dados orientado a objetos, baseado no Modelo Temporal de Versões, com suporte às dimensões de tempo e versão. Foi implementado em Python e integrado posteriormente à plataforma ZOPE, sendo distribuı́do como software livre, licenciado através da GNU GPL. 1. Introdução Um modelo de dados é uma coleção de conceitos que podem ser usados para descrever um conjunto de dados e operações para manipular estes dados. Em um modelo de dados orientado a objetos estes dados são considerados como uma coleção de objetos, na maioria das vezes complexos, do mundo real. Atualmente, não existe um padrão que regularize o modelo de dados orientado a objetos, apesar de esforços estarem sendo realizados pelo grupo ODMG (Object Database Management Group). Entretanto, via de regra é possı́vel identificar os princı́pios fundamentais que fazem parte de um núcleo [Galante, 1998], considerado comum (corel model) à maioria dos modelos existentes, como: objetos e identificadores de objetos, objetos simples e complexos, classes, herança e encapsulamento. Estas caracterı́sticas satisfazem os requisitos para modelagem de dados em diversos domı́nios de aplicações. Porém, recentemente as aplicações para sistemas de bancos de dados estão sendo limitadas por restrições impostas pelo modelo relacional de dados, principalmente nas áreas de CAD (Computer Aided Design), CASE (Computer Aided Software Engineering), SCM (Software Configuration Management), e, mais recentemente, Hipermı́dia, como a possibilidade de armazenar e manipular diferentes versões de um objeto [Golendziner, 1995]. Como resultado, vários modelos de dados têm sido propostos para tratar desses novos domı́nios da aplicação, muitos oriundos da área de aplicações, propondo sistemas independentes de bancos de dados, outros concentram-se na identificação de novos requisitos impostos, procurando estender modelos de bancos de dados existentes para contemplar estas necessidades. Apesar da utilização de versões armazenar as alternativas de projeto, nem todo o histórico das alterações realizadas sobre os dados é registrado. A maior parte das aplicações atuais tem necessidade de manipular informações históricas - dados relativos a estados passados da aplicação. Os SGBD convencionais, no entanto, não suportam estas caracterı́sticas. Esta necessidade motivou o estudo de conceitos e estratégias para tratar informações históricas em Banco de Dados Temporais [Edelweiss, 1998]. Dentre deste contexto, o objetivo do presente trabalho é o desenvolvimento de um modelo de dados orientado a objetos com conceitos e mecanismos para tratar aspectos de tempo e versão ∗ Bolsista do CNPq - Brasil. 193 194 5° WSL / 5° FISL de objetos no nı́vel da aplicação, integrado à plataforma ZOPE (Z Object Publishing Environment). A finalidade desta integração é possibilitar que as inúmeras aplicações que utilizam o servidor de aplicações ZOPE, possam desfrutar também do modelo proposto, afim de satisfazer os requisitos não supridos pelas atuais aplicações. 2. Modelo proposto O modelo orientado a objetos que está sendo proposto, denominado MOTV [Bastos and Costa, 2004b] - Modelo de Objetos Temporais e Versionados, resultou de variações aplicadas ao Modelo de Versões [Golendziner, 1995], o qual constitui até hoje a proposta de extensão de versões mais completa e concisa presente na literatura, e ao Modelo Temporal de Versões [Moro, 2001], e tomou como base um estudo preliminar descrito em [Nieves and Costa, 2003]. O modelo proposto contempla dois aspectos: (i) tempo, associa informações temporais aos dados armazenados, identificando quando uma informação foi definida ou o tempo de sua validade, permitindo assim, acessar todos os estados de uma aplicação (presentes, passados e futuros); e (ii) versão, descrição de um objeto em um determinado momento de tempo, ou sob um determinado ponto de vista, cujo registro é importante para aplicação. Uma descrição em detalhes do modelo proposto só pode ser dada num relatório extenso, incluindo ilustração de códigos, diagramas e modelos. O objetivo deste artigo é descrever de forma sucinta as caracterı́sticas principais do modelo. 2.1. Hierarquia de Classes A hierarquia de classes do modelo, utilizando a notação da UML (Unified Modeling Language), pode ser visualizada na figura 1. Em [Bastos and Costa, 2004a], é apresentada e descrita a hierarquia completa, com todas as classes, métodos e atributos. Figura 1: Hierarquia resumida de classes do modelo proposto O usuário define as suas classes de aplicação como subclasses de Object, TemporalObject, VersionObject ou TemporalVersionObject, o que produz um objeto não temporal e não versionado, temporal, versionado e temporal versionado, respectivamente. Nas figuras 2 e 3 são ilustradas as interfaces de visualização e de gerenciamento de um objeto temporal versionado, respectivamente. Estes screenshots foram capturados através da ZMI (Zope Management Interface). 2.2. Representação Temporal O tempo é associado a objetos, versões, atributos e relacionamentos permitindo, assim, uma modelagem mais flexı́vel. Duas ordens no tempo são identificáveis: (i) tempo ramificado para um objeto (devido à várias versões); e (ii) tempo linear para cada versão. 5° WSL / 5° FISL Figura 2: Interface de visualização de um objeto temporal e versionado Figura 3: Interface de gerenciamento de um objeto temporal e versionado Os atributos e relacionamentos de um objeto podem ser estáticos (quando não há variação de seus valores) ou temporalizados (todas as alterações de seus valores são armazenados formando um histórico), ficando a cargo do usuário a definição. Os valores estão associados com os rótulos pré-definidos, os quais representam os tempos de: (i) transação inicial, indica quando um objeto foi inserido na base de dados; (ii) transação final, representa um objeto excluı́do logicamente; (iii) validade inicial, retrata um objeto válido na realidade modelada; e (iv) validade final, designa um objeto inválido na realidade modelada. Foram definidos quatro estados de um objeto temporal, Ativo, Inativo, Válido e Inválido, com o objetivo de facilitar o uso de operações sobre estes objetos. Estes estados, denominados literais, podem ser copiados, armazenados como valores, passados como parâmetros, ou ainda fazer parte de comparações exatas. 2.3. Representação de Versões A caracterı́stica de versionamento está associada aos objetos e não às classes [Golendziner, 1995]. Desta maneira, um objeto que não possua versões, pode passar a ser versionado de forma dinâmica. Duas classes são modeladas para este propósito: VersionedObjectControl (controlador de versões) e VersionObject (versão propriamente dita). Cada versão possui uma estrutura do tipo grafo de outras versões predecessoras (antecessoras) e sucessoras, compondo a hierarquia de composição de objetos. O relacionamento que existe entre as versões denomina-se de derivação, e pode ser de dois tipos: alternativas, caso uma versão seja derivada da mesma versão; e derivativas, se versões estão no mesmo caminho até a raiz do grafo. O conjunto de relacionamentos entre versões forma uma estrutura conhecida por histórico de versões. Na hierarquia de herança, utiliza-se o conceito de extensão, que está relacionada com a idéia de protótipos. Cada objeto de uma classe (protótipo) está associado com outro objeto em uma classe mais especializada (extensão). Neste relacionamento entre objetos, modela-se versões ascendentes e descendentes A correspondência definida pode ser do tipo 1:1 (um-um), 1:n (ummuitos), n:1 (muitos-um) ou n:m (muitos-muitos). O relacionamento entre versões, objetos versionados e não versionados, pode ser feito de duas maneiras [Golendziner, 1995]: (i) referência estática, permite o relacionamento especı́fico entre objetos; e (ii) referência dinâmica, permite uma ligação de forma genérica, onde utiliza-se um mecanismo de resolução. Este mecanismo utiliza uma versão default, escolhida pelo usuário, ou uma versão corrente, mantida pelo sistema. O modelo permite configurações entre objetos [Golendziner, 1995], isto é, ligação entre 195 196 5° WSL / 5° FISL uma versão do objeto composto e uma versão de cada um de seus objetos componentes. Uma versão pode passar por alguns estados [Golendziner, 1995], em seu tempo de vida, que compreendem: Em Trabalho, Estável, Consolidada e Desativada. Assim como na representação temporal, estes estados podem ser utilizados como literais. 3. Considerações Finais O desenvolvimento deste modelo encontra-se em estágio final. Atualmente está sendo integrado alguns aspectos à plataforma ZOPE, e gerado a documentação final da ferramenta. As próximas etapas do trabalho envolverão o teste de software e a integração do modelo a um ambiente de ensino na Web, denominado ENSINET [Miranda et al., 2001]. Salienta-se que às vantagens oferecidas por sofwares livres, como o servidor de aplicações ZOPE, a linguagem de programação Python e o uso do sistema operacional GNU/Linux, contribuem de forma satisfatória para o desenvolvimento e disseminação de ferramentas, onde qualquer pessoa interessada pode adquiri-la e utilizá-la. Espera-se que o desenvolvimento e utilização da ferramenta possa ser compartilhada com a comunidade ZOPE e Python, visando a ampliação de suas funcionalidades e de sua aplicação como ferramenta de gerência de objetos temporais e versionados. Todos os frutos do trabalho realizado e descrito nesse artigo estão disponı́veis para a consulta no seguinte endereço eletrônico: http://bdi.ucpel.tche.br/motv. Referências Bastos, E. N. F. and Costa, A. C. R. (2004a). ENSINET/M2A: monitoração, avaliação e adaptação no sistema ENSINET. Technical report, UCPel, Pelotas. Bastos, E. N. F. and Costa, A. C. R. (2004b). Proposta Inicial de um Modelo de Objetos Temporais e Versionados para Ambientes de Apoio ao Ensino. In I Workshop de Computação, Palhoça. SBC. Edelweiss, N. (1998). Bancos de Dados Temporais: Teoria e Prática. In Minicurso da XVII Jornada de Atualização de Informática (JAI). Galante, R. M. (1998). Um Modelo de Evolução de Esquemas Conceituais para Bancos de Dados Orientados a Objetos com o Emprego de Versões. Master’s thesis, PPGC/UFRGS, Porto Alegre. Golendziner, L. (1995). Um modelo de versões para banco de dados orientados objetos. PhD thesis, CPGCC/UFRGS, Porto Alegre. Miranda, R. M., Dimuro, G. P., and Costa, A. C. R. (2001). Um Ambiente de Suporte ao Ensino Integrado dos Fundamentos Matemáticos da Ciência da Computação utilizando o ZOPE. In II Workshop de Software Livre, pages 40–42, Porto Alegre. SBC. Moro, M. M. (2001). Modelo Temporal de Versões. Master’s thesis, PPGC/UFRGS, Porto Alegre. Nieves, I. V. and Costa, A. C. R. (2003). Estudo e Adaptação de um Modelo de Objetos Temporais Versionados para o sistema ENSINET. 5° WSL / 5° FISL Sessão Técnica 14 ENGENHARIA DE SOFTWARE 197 198 5° WSL / 5° FISL 5° WSL / 5° FISL Utilizando o Paradigma de Software Livre para Definir Melhores Práticas em Engenharia de Software Eduardo Quesado Filgueiras 1,2 , Mateus Ribeiro Mota1,2 1 Universidade Luterana do Brasil (ULBRA) – Centro Universitário Luterano de Manaus Av. Solimões, 2 – Conjunto Atílio Andreazza, Japiim II – 69.077-730 – Manaus – AM - Brasil 2 Sistema de Proteção da Amazônia (SIPAM) Av. do Turismo, 1350 – Tarumã – 69.049-630 – Manaus – AM - Brasil {quesado,mateus}@mn.sivam.gov.br Resumo. Este artigo propõe a utilização de práticas de desenvolvimento de software livre como técnicas catalisadoras a serem adotadas em processos de Engenharia de Software tradicional, abrangendo a comunicação entre os grupos de desenvolvimento, a definição e captura de requisitos, as decisões de projeto, a qualidade, o suporte a usuários, o teste e a manutenção de software. A adoção de elementos do paradigma de software livre como melhores práticas de Engenharia de Software visa criar um ambiente de desenvolvimento socializante, comunitário e democrático, tendo as pessoas como base do sucesso organizacional, em oposição a modelos formais e hierarquizados. Abstract. This paper proposes the use of open source development practices as catalyst techniques to be adopted on traditional Software Engineering processes, including workgroup development, requirements definition and capture, project decisions, quality, user support, software test and maintenance. The goal on adopting open source paradigm elements as Software Engineering best practices is to create a socializing, communitarian and democratic development environment, having peopleware as the basis for organizational success, thus opposing formal and hierarchical models. 1. Introdução Um dos maiores enganos que se pode cometer ao advogar a adoção de software livre é associá -lo a software gratuito. Deve-se manter a ênfase na defesa da liberdade de expressão e na liberação de conhecimento, e não apenas promover software que é livre de custo de aquisição, já que, em projetos de software livre, é possível obter o código fonte, utilizar o programa e modificá-lo livremente para satisfazer necessidades particulares, sem as restrições dos programas proprietários [Williams 2002]. Em termos de desenvolvimento de software, a premissa básica do modelo de software livre é que um grupo fechado de desenvolvedores não pode competir com centenas ou milhares de programadores motivados [Voightmann e Coleman 2003]. No contexto de desenvolvimento de software tradicional, onde o código é fechado, empresas contratam programadores que desenvolvem utilizando técnicas acadêmicas de Engenharia de Software [Pressman 2000]. Software de código aberto, outrossim, adota um modelo diferente, não influenciado por liderança corporativa, nem realiza repasses de custos de desenvolvimento, ou aplica restrições econômicas e políticas de uso. Ao contrário, programadores criativos, capazes, experientes e motivados se congregam globalmente via rede e desenvolvem uma versão inicial, razoavelmente funcional, cuja disponibilidade é anunciada aos usuários finais, que encontram erros e identificam necessidades, reportando aos criadores, que por sua vez corrigem e melhoram o programa, distribuindo rapidamente as novas versões a fim de que o ciclo se reinicie, em uma espiral de qualidade crescente. Entretanto, o modelo de desenvolvimento de software livre enfrenta ceticismo dos que imaginam ser o processo tradicional de Engenharia de Software e seu embasamento científico a única solução para os desafios clássicos em qualquer projeto de sistemas de software: os atrasos no cronograma, a deficiência na qualidade e os custos ascendentes [Massey 2003]. Os chamados processos “clássicos”, outrossim, são constantemente criticados pela sua impessoalidade, rigidez e excesso de formalismo, e as chamadas “melhores práticas” da Engenharia de Software constantemente 199 200 5° WSL / 5° FISL caem em erro ao serem tragadas pelo paradoxo da solução absoluta, ao se constituírem em pretensas “receitas” ou “balas de prata” [Brooks 1987]. Uma possibilidade a explorar, portanto, é se utilizar o aprendizado sobre as vantagens do modelo de software livre para acrescentar novas práticas ao cabedal da Engenharia de Software, cobrindo lacunas nos processos tradicionais, principalmente no tocante à humanização do processo de desenvolvimento. 2. Melhores Práticas com Software Livre Não se pode assumir que o modelo de desenvolvimento de software livre veio para suplantar os processos tradicionais. Em diversos setores, embora seja estimulável o uso crescente de ferramentas desenvolvidas em código aberto, devido ao seu elevado gradiente evolutivo [Pinheiro 2003], sabe-se que a institucionalização de métodos e procedimentos de software livre é de difícil aplicação, por fatores culturais e econômicos ou características organizacionais. Assim sendo, uma série de proposições a serem adotadas como melhores práticas no desenvolvimento de software, advindas do modelo de software livre, são enunciadas a seguir. 2.1. A multiplicação da comunicação entre equipes de desenvolvimento O processo utilizado por desenvolvedores de código aberto é definível como uma atividade essencialmente social e sistêmica. O modelo baseia -se no intercâmbio de informações entre os programadores como elemento de sinergia, onde a combinação das fontes de conhecimento múltiplas produz uma resultante maior que a das partes, em um sistema aberto, que evolui pela contínua comunicação. De fato, software livre leva o conhecimento compartilhado a incrementar exponencialmente, enquanto o isolacionismo em compartimentos estanques do software tradicional bloqueia o enriquecimento da equipe, tendo em vista que constitui, em contrapartida, um sistema fechado, onde o intercâmbio de experiências extra-microverso do grupo de trabalho é desestimulado ou inibido [Raymond 1998]. Dessa maneira, é razoável a suposição de que a qualidade do produto é diretamente proporcional à equipe que o produziu, e que um grupo cujo talento e motivação são estimulados e, em conseqüência, desenvolvidos, produz mais e melhor, em um dado período, satisfazendo às expectativas dos usuários. Assim, software livre altera de forma radical o modo como se estabelece comunicação entre grupos de desenvolvimento. A utilização maciça da Internet e das intranets corporativas, com desenvolvimento baseado em Web com padrões abertos, seguida de controle de versão avançado, são aspectos relevantes neste processo. Finalmente, o estímulo à diversidade cultural nos grupos e o cruzamento de experiências deve ser institucionalizado. As equipes de desenvolvimento devem ser autorizadas a ver livremente e pesquisar todo o código de seu projeto e de outros projetos, tendo inclusive tempo dedicado a contribuir com sugestões de soluções de design e de implementação, criando conhecimento coletivo e aprendizado comum [Filgueiras 2003]. 2.2. A libertação da tirania dos requisitos Um dos maiores desafios que enfrenta qualquer projeto de software é capacidade de adaptar-se às mudanças de requisitos dos usuários [Pressman 2000], uma realidade inevitável e irreconciliável com modelos documentais tradicionais baseados em normas produzidas nos anos 70 e 80, visando à adequação a contratos governamentais norte-americanos, como o modelo waterfall (cascata). A grande vantagem do software livre, porém, é que este evolui com os usuários, não estando ligado a ciclos ou espirais específicos e herméticos, mas sim a uma definição muito mais flexível de incrementos que, o mais cedo possível, estarão operando nas máquinas dos usuários, focados na satisfação das suas necessidades reais (o princípio “release early, release often”) [Scacchi 2002]. A movimentação do centro de gravidade dos requisitos formais para as necessidades e aspirações dos usuários deve ser considerada como elemento de redução do altíssimo custo agregado à obtenção de requisitos e a quase constante paralisia que sua captura representa. Repensar o modelo tradicional com as vantagens do software livre é uma possibilidade interessante e, embora a intenção de capturar o máximo de necessidades dos clientes a priori seja uma tentativa de reduzir incertezas e 5° WSL / 5° FISL custos, é fato que os usuários preferem flexibilidade e liberdade de evoluir suas expectativas a uma baseline consolidada, porém monolítica. 2.3. A proatividade no gerenciamento de projetos Devido à própria natureza do desenvolvimento de software livre, onde a motivação do programador supera qualquer outra obrigação imposta pelos modelos de desenvolvimento tradicionais, as responsabilidades de um projeto recaem de forma espontânea e voluntária entre os membros da comunidade [Massey 2003]. Essas responsabilidades são guiadas pelo espírito de liderança no grupo de desenvolvedores, onde a influência pessoal exercida pelo líder se mostra mais eficaz que a ditadura dos tradicionais gerentes de projeto. Em resumo, software livre se baseia naturalmente no poder pessoal e na liderança natural (cite-se Linus Torvalds) que em poder de posição e liderança puramente hierárquica. 2.4. A liberação dos usos e costumes no processo de desenvolvimento Embora os processos tradicionais de desenvolvimento de software tenham se mostrado eficientes na fase inicial de evolução da indústria do software [Jacobson 1992], a mecanização do desenvolvimento, porém, transformou a produção de software de atividade criativa e gratificante para uma manufatura similar à produção de televisores em uma fábrica. O modelo tradicional prende o desenvolvedor a uma série de ciclos e etapas que perdem o contato com os usuários, superespecializando-o em uma pantomima semelhante a Chaplin em “Tempos Modernos”. O paradigma do software livre está sempre voltado para a melhor solução de um determinado problema, não se prendendo a usos e costumes que burocratizam a produção de software e não garantem a qualidade do mesmo [Ferraz 2002]. 2.5. A qualidade como resultado natural do processo O conhecimento associado à propriedade coletiva e responsabilidade sobre o código são elementos que aumentam a qualidade de um software. Ter um número maior de pessoas opinando a respeito das melhorias do código do software e possuir usuários motivados em implementar essas melhorias são a chave da qualidade do software livre, pois todos se sentem envolvidos no processo e se comprometem pessoalmente com o seu sucesso [Raymond 1998]. Ademais, as bases de processos formais de desenvolvimento orientados a objetos [Jacobson, Booch e Rumbaugh 1999] encontram-se inerentemente presentes em softwre livre: o direcionamento da especificação para os usos típicos do sistema, a centralização em uma arquitetura sólida e o desenvolvimento iterativo e incremental. 2.6. A co-distribuição das responsabilidades de teste e manutenção As atividades de teste e manutenção de software livre podem produzir respostas mais rápidas e significativas quando comparadas com as de softwares proprietários. Partindo do princípio de que muito mais pessoas tem acesso ao código de uma aplicação nas atividades de teste, a probabilidade de um erro ser encontrado é muito maior que no software de código fechado [Ferraz 2002]. Além disso, as atividades de teste tradicionais, que normalmente se mostram repetitivas e muitas vezes ineficazes, podem ser voltadas para o real problema: a codificação das necessidades do usuário. Em software livre os usuários também podem participar ativamente dos testes, o que motiva os mesmos e contribui com o processo de desenvolvimento. Ademais, a manutenção do software é uma das atividades mais custosas e de maior duração na Engenharia de Software [Pressman 2000], porém quase não recebe enfoque metodológico. Quando se trata de desenvolvimento de software livre, a manutenção é altamente voltada para os usuários, o verdadeiro público das versões lançadas periodicamente. Adicionalmente, esta é motivada pelo desejo de auto-satisfação dos desenvolvedores, que vislumbram as melhorias contínuas do software como meta internalizada em seus processos cognitivos. 2.7. A humanização do suporte aos usuários Um dos grandes mitos do software livre é a inexistência de suporte técnico por parte de seus criadores [Voightmann e Coleman 2003]. Primeiramente, no modelo do software livre o suporte é oferecido pelos vários desenvolvedores e usuários que conhecem a fundo o código e as funcionalidades do 201 202 5° WSL / 5° FISL software, pois não existe “caixa preta” em software livre. Desta forma, é possível oferecer um suporte muito mais real e produtivo nas listas de discussão e outros mecanismos da Internet. Tal interação gera uma relação cliente-desenvolvedor muito mais satisfatória do que atendentes de “help desk” de grandes empresas de software, os quais normalmente nunca obtiveram acesso aos códigos-fonte do programa do qual prestam suporte, nem possuem conhecimento profundo sobre a ferramenta em questão. 3. Conclusão Os componentes históricos registram a importância dos processos tradicionais resultantes de excelência científica para o desenvolvimento de software. Porém, é necessário revisar conceitos no tocante a modelos de desenvolvimento, inserindo os aprendizados e idéias que refletem a evolução dos sistemas de computação, adequando processos às realidades tecnológicas, econômicas e sociais atuais. O modelo de desenvolvimento de software livre possui diversas características que fogem dos formalismos e processos da Engenharia de Software tradicional, porém seus casos de sucesso demonstram que este pode ser adaptado a processos de desenvolvimento como melhores práticas a serem incorporadas ao conhecimento formal. Descartar as possibilidades e aprendizados do modelo de software livre seria demonstrar cegueira sem precedentes, já que as lições oriundas do paradigma de software de código aberto podem ser aplicadas e incorporadas ativamente em qualquer processo de desenvolvimento de software, diminuindo o tempo de desenvolvimento e os custos, porém aumentando a produtividade e a satisfação dos usuários e programadores, principalmente na captura de requisitos, na gerência de projetos, na qualidade, no suporte a usuários, na manutenção de uma base de código atualizada e na minimização dos problemas causados por bugs. Referências Brooks, F. P., Jr. “No Silver Bullet: Essence and Accidents of Software Engineering”. Computer Magazine. Vol. 20, N° 4. April 1987. Ferraz, N.C.T. “Vantagens Estratégicas de Software Livre para o Ambiente Corporativo”. PUC-SP. São Paulo, 2002. Filgueiras, E.Q. “Melhorando Processos de Engenharia de Software Através do Paradigma de Software Livre”. Developers’ Magazine, n° 87, Axcel Books. Novembro de 2003. Jacobson, I. “Object-Oriented Software Engineering”. Addison-Wesley, 1992. Jacobson, I., Booch, G., Rumbaugh, J. “The Unified Software Development Process”. Massachusets: Addison-Wesley, 1999. Massey, B. “Why OSS Folks Think SE Folks Are Clue-Impaired”. In: Taking Stock of the Bazaar. Proceedings. 3rd International Conference on Software Engineering (ICSE''03). Portand. 2003. Pinheiro, A.S. “Transformando a Informação Pública pelo Software Livre. Um olhar sociotécnico”. In: WorkShop Sobre Software Livre – WSL 2003. 4. Anais. Sociedade Brasileira de Computação. Porto Alegre, 2003. Pressman, R.S. “Software Engineering: A Practitioner’s Approach”. 5th Edition, Mc Graw Hill, 2000. Raymond, E. “The Cathedral and the Bazar”. FirstMonday. Vol. 3, Nº 3. Março de 1998. Scacchi, W. “Understanding Requirements for Developing Open Source Software Systems”. IEEE Proceedings. Software. N. 149. 2002. Voightmann, M., Coleman, C. “Open Source Methodologies and Mission Critical Software Development”. In: Taking Stock of the Bazaar. Proceedings. 3rd International Conference on Software Engineering (ICSE''03). Portand. 2003. Williams, S. “Free As In Freedom: Richard Stallman´s Crusade for Free Software”. O´Reilly & Associates, 2002. 5° WSL / 5° FISL SAFE - Software Engineering Available for Everyone Renata Pontin de Mattos Fortes, Marco Aurélio Graciotto Silva, André Pimenta Freire, Daniel Cárnio Junqueira 1 Instituto de Ciências Matemáticas e de Computação – Universidade de São Paulo Av. do Trabalhador São-Carlense, 400 – Cx. Postal 668 CEP 13560-970 São Paulo, SP {renata,magsilva}@icmc.usp.br,{apfreire,danielcj}@grad.icmc.usp.br Resumo. O projeto SAFE visa elaborar uma infra-estrutura para desenvolvimento de software que seja simples o suficiente para atrair a colaboração de desenvolvedores nos diversos nı́veis de familiaridade com o processo de software livre. A infra-estrutura será na forma de um suporte automatizado ao processo de software livre, por meio da integração de ferramentas de software livre de apoio às atividades de engenharia de software. Abstract. The SAFE project aims the elaboration of a software development framework sufficiently simple to attract the collaboration of free software’s developers with different levels of software process’s familiarity. This framework will help the automation of free software processes, through the integration of free software tools that support software engineering activities. 1. Introdução Projetos de software livre têm recebido constante atenção da comunidade cientı́fica. O fato que mais chama a atenção é a alta qualidade que tem sido obtida no desenvolvimento de projetos de software livre, mesmo com a utilização de um processo de desenvolvimento aparentemente caótico. Exemplos de casos de sucesso são os projetos Mozilla, Apache, e, principalmente, o kernel do sistema operacional Linux; os projetos têm crescido muito rapidamente e apresentam qualidade superior à esperada. Entender esse processo de desenvolvimento é importante para facilitar a análise de como deve ser a adoção de software livre na indústria. Para esse entendimento, assim como para a criação de documentação e bibliografia adequadas, diversos trabalhos têm sido efetuados nos últimos anos. Exemplos disso são os estudos de caso dos principais projetos de software livre que têm sido publicados (Mockus et al., 2000; Godfrey e Tu, 2000; Krishnamurthy, 2002). Um deles é a pesquisa na forma de um estudo detalhado sobre o projeto Mozilla (Reis e Fortes, 2002), em que são descritas as principais ferramentas utilizadas no processo do Mozilla e são discutidos os resultados dessa utilização para o desenvolvimento do projeto. A partir desse estudo, surgiu uma motivação crescente sobre como o processo de software livre conta com ferramentas de suporte às atividades de engenharia de software. O projeto SAFE, foco principal deste artigo, objetiva primeiramente estudar as principais caracterı́sticas destas ferramentas e as possı́veis formas de integração das mesmas, visando assim a construção de um framework para suporte ao desenvolvimento de software livre que possa ser facilmente utilizado para o desenvolvimento de software livre, tanto no ambiente acadêmico como no ambiente empresarial. Também é objetivo deste projeto identificar as lacunas existentes e criar ferramentas baseadas nesses dados que devem também integrar o framework a ser desenvolvido. 203 204 5° WSL / 5° FISL O restante deste artigo está organizado da seguinte forma: a seção 2 apresenta uma caracterização do processo de software livre, baseada em estudos desenvolvidos recentemente; a seção 3 detalha a proposta do projeto SAFE. Finalmente, a seção 4 apresenta as considerações finais. 2. Caracterização do Processo de Software Livre Um recente trabalho (Reis, 2003) foi desenvolvido para caracterizar o processo de software livre. O amplo levantamento realizado, sobre os projetos estáveis de software livre, permitiu concluir que o processo varia substancialmente entre os projetos, sendo indevido criar uma generalização ampla do mesmo. Todavia, foi possı́vel observar que existem elementos comuns nos processos. Analisando a relação entre o esforço despendido nas atividades de engenharia de software e uso das ferramentas (chamado no trabalho de “Índice de Engenharia de Software”) investigadas no levantamento em relação ao tamanho dos softwares (Figura 1), a concentração nos valores médios para o ı́ndice de engenharia de software sugere um processo comum em boa parte dos projetos de software livre, mas que não envolve todas as atividades abordadas no levantamento. Figura 1: Gráfico scatter relacionando o ı́ndice de engenharia de software com o número de linhas de código de cada projeto. Fonte: (Reis, 2003, p. 130) Assim, um ciclo de vida para software livre é pressuposto existir de maneira que cada projeto o instancia sob a influência de sua cultura interna, seu histórico e seus objetivos. O ciclo se delineou como composto por quatro fases: criação, lançamento público, crescimento e organização, e maturidade. As fases mais importantes, sob a perspectiva de que contam com apoio de ferramentas para garantia de qualidade no desenvolvimento do processo, são as que procedem ao lançamento público: a partir desse momento, o projeto entra em processo de evolução contı́nua. Com base nesse modelo de ciclo de vida identificado, é possı́vel apoiar um processo livre que satisfaça as necessidades da emergente indústria de software livre brasileira, envolvendo não somente a produção efetiva de software de alta qualidade, mas também a formação de mão-de-obra qualificada para alimentar essa indústria. 3. Proposta do Projeto SAFE O interesse por projetos de software livre em ambiente empresarial e no meio acadêmico tem sido crescente. No entanto, esses mesmos ambientes, que apresentam atraentes novidades, se mostram 5° WSL / 5° FISL deficitários no que diz respeito à adoção de atividades de engenharia de software. De fato, há uma lacuna no que diz respeito à integração de ferramentas de projetos de software livre de apoio às atividades de garantia de qualidade de software e, em particular, aos processos de software livre. Com a tendência atual de utilização de software livre, torna-se relevante viabilizar um processo que atenda às necessidades dessa nova abordagem de desenvolvimento e que contribua efetivamente para a obtenção de produtos de alta qualidade. A disponibilização de um framework relacionado ao contexto de processos de software livre é particularmente interessante por viabilizar a combinação de métodos, ferramentas e procedimentos em uma única estrutura. Dentro desse contexto, foi elaborada a proposta do projeto SAFE (Fortes et al., 2004b) (Software Engineering Available For Everyone - Engenharia de Software Disponı́vel para Todos). O SAFE será desenvolvido pelos Instituto de Ciências Matemáticas e de Computação (ICMCUSP) e Departamento de Computação e Estatı́stica (DCT-UFMS), com a colaboração da empresa Async Serviços de Informática. 3.1. Objetivo do Projeto SAFE O objetivo do projeto SAFE é desenvolver uma infra-estrutura para a integração de ferramentas de software livre de apoio às atividades de Engenharia de Software. Esse framework possibilitará um suporte automatizado para o processo de software livre, simples o suficiente para atrair a colaboração e a participação de desenvolvedores nos diversos nı́veis de familiaridade com o processo de software livre. 3.2. Atividades do Projeto SAFE Para alcançar os objetivos propostos, estão previstas diversas atividades envolvendo desde o desenvolvimento do framework até a disseminação do conhecimento referente à utilização de suas ferramentas e do processo de software com a utilização de software livre. A primeira atividade é a capacitação do pessoal envolvido com o projeto, através da utilização de ferramentas de software livre de suporte às atividades de Engenharia de Software (em especial as Webtools, adotadas no desenvolvimento do Mozilla, como a Bugzilla e o Bonsai). A seguir, têm-se a definição e implementação do framework para auxı́lio ao processo de software. Serão integradas as ferramentas de software livre envolvidas na atividade anterior e outras já desenvolvidas pelos grupos de pesquisa, como a No Risk Planning1 (Fortes et al., 2004a), para agendamento de atividades em grupos, a DocRationale (Frascisco, 2004), para suporte ao gerenciamento de razões de projeto, e a VersionWeb2 (Moreira et al., 2002), uma interface Web para o CVS. Também será desenvolvida uma ferramenta do tipo wiki para auxiliar a engenharia de requisitos (Silva e Fortes, 2003), por meio da construção de um hiperdocumento de requisitos, que também será integrada ao framework. Uma “cartilha” de suporte ao uso do framework, com instruções sobre a utilização das ferramentas que o compõe, será elaborada, facilitando o treinamento das ferramentas. O framework será testado por meio da sua utilização durante o desenvolvimento de ferramentas. A transferência e multiplicação da tecnologia de framework desenvolvida para utilização real em empresas de desenvolvimento de software, como a Async, permitirão a validação dos resultados obtidos. A disseminação do uso do framework será efetuada através da integração entre pesquisadores do meio acadêmico e profissionais envolvidos com o desenvolvimento de software livre 1 2 A No Risk Planning está disponı́vel em http://nrp.sourceforge.net. A VersionWeb está disponı́vel em http://versionweb.sourceforge.net. 205 206 5° WSL / 5° FISL no setor industrial. O framework também será utilizado durante o ensino de Engenharia de Software nos cursos de graduação e pós-graduação em Ciência da Computação do ICMC-USP e do DCT-UFMS, capacitando pessoal para sua posterior aplicação na indústria. 4. Conclusão A definição de um processo de engenharia de software é um importante passo para a eficiente disseminação da cultura de desenvolvimento de software livre de qualidade. Existem projetos de software livre que têm demonstrado uma grande eficiência no desenvolvimento de produtos de qualidade, através da utilização de diversas ferramentas, que apóiam diversas atividades do processo de desenvolvimento. Neste artigo foi apresentada a proposta do Projeto SAFE (Software Engineering Available For Everyone), que tem como objetivo desenvolver um framework que forneça uma infra-estrutura para apoio de processos de software, integrando ferramentas consagradas, utilizadas no desenvolvimento de produtos de software livre de sucesso, e ferramentas novas que complementem o framework e incrementem o suporte a processos de software com a utilização de ferramentas de software livres. Agradecimentos Agradecemos à FINEP, pelo patrocı́nio do projeto, e às agências FAPESP e CAPES pelo apoio financeiro aos autores. Referências Fortes, R. P. d. M., Freire, A. P., Vieira, V. H., Paiva, D. M. B. (2004a). An academic webbased agenda and its engineering process. In VII Workshop Iberoamericano de Ingenierı́a de Requisitos y Desarrollo de Ambientes de Software, pp. 151–156, Arequipa, Peru. Fortes, R. P. d. M., Turine, M. A. S., Reis, C. R. (2004b). Engenharia de Software Disponı́vel a Todos - Software Engineering Available for Everyone (SAFE). Proposta de Projeto para Chamada CT-Info-FINEP. Frascisco, S. D. (2004). DocRationale - uma ferramenta para suporte a design rationale de artefatos de software. Dissertação de Mestrado, Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, São Carlos, Brasil. Godfrey, M. W., Tu, Q. (2000). Evolution in Open Source Software: A Case Study. In Proceedings of the 2000 Intl. Conference on Software Maintenance, pp. 131–142, San Jose, California. Krishnamurthy, S. (2002). Cave or Community? An Empirical Examiniation of 100 Mature Open Source Projects. First Monday, 7(6). Mockus, A., Fielding, R., Herbsleb, J. (2000). A Case Study of Open Source Software Development: The Apache Server. In Proceedings of ICSE 2000, pp. 263–272, Limerick, Ireland. ACM Press. Moreira, D. d. A., Soares, M., Fortes, R. P. d. M. (2002). VersionWeb: A tool for helping web page version control. Linux Journal. Reis, C. R. (2003). Caracterização de um processo de software para projetos de software livre. Dissertação de Mestrado, Universidade de São Paulo, São Carlos, SP. Reis, C. R., Fortes, R. P. M. (2002). An Overview of the Software Engineering Process and Tools in the Mozilla Project. In Workshop on Open Source Software Development, pp. 155–175, Newcastle, UK. Silva, M. A. G., Fortes, R. P. d. M. (2003). Processo de Engenharia de Requisitos com Apoio de Hiperdocumentos. In Workshop de Teses e Dissertações em Engenharia de Software, pp. 65–70, Manaus, AM. 5° WSL / 5° FISL Levantamento sobre Processo de Software Livre Renata Pontin de Mattos Fortes, Marco Aurélio Graciotto Silva, Christian Robottom Reis 1 Instituto de Ciências Matemáticas e de Computação – Universidade de São Paulo Av. do Trabalhador São-Carlense, 400 – Cx. Postal 668 CEP 13560-970 São Paulo, SP {renata,magsilva}@icmc.usp.br,[email protected] Resumo. Este artigo apresenta alguns dos principais resultados obtidos de uma ampla pesquisa sobre processo de software livre. A pesquisa foi veiculada por meio de questionário e, com base nas respostas obtidas, puderam ser identificadas caracterı́sticas do processo de software livre. Abstract. This paper presents the main results gathered from an extensive research on Open Source Projects. The research consists of a survey and, regarding the obtained answers, characteristics of the open source process could be identified. 1. Introdução Compreender melhor o processo de desenvolvimento em projetos de software livre apresentase como um desafio, motivando o surgimento de diversas questões a respeito da organização, motivação e coordenação das equipes envolvidas. Nos últimos anos, diversas publicações cientı́ficas têm procurado descrever esses projetos de forma mais detalhada. No entanto, grande parte desses trabalhos se concentra em projetos individuais ou em aspectos particulares do processo de software. Aparentemente, os processos de software livre contam com grupos de pessoas geograficamente distribuı́das, na maioria informalmente organizados, produzindo software de alta qualidade sem auxı́lio de ferramentas sofisticadas. A investigação das idéias subjacentes a essa eficiência de processo de engenharia de software foi alvo de um recente trabalho desenvolvido por Reis (Reis, 2003). Sua pesquisa, reportada neste artigo, se propôs a fornecer uma ampla visão do cenário de projetos de software livre, cobrindo lacunas importantes relacionadas ao processo de software aplicado nos projetos. Assim, o objetivo foi o de caracterizar o processo de software livre através de um amplo levantamento abordando os projetos estáveis de software livre (Reis, 2003). Foram contactados 1.102 projetos, e obtidas 519 respostas válidas (47% do total). De maneira bastante resumida, este artigo apresenta a metodologia adotada na seção 2. Os resultados obtidos são discutidos na seção 3, seguida de uma análise desses dados, na tentativa de identificar a comunidade dos processos de software de cada projeto, na seção 4. Na seção 5, são apresentadas algumas das conclusões do trabalho realizado. 2. Metodologia Para o levantamento de dados, treze hipóteses (Reis, 2003, pp. 64-65) sobre o processo de software livre foram consideradas, obtidas através do estudo da literatura e de técnica de etnografia adotada por Reis. Os dados necessários foram obtidos através de um questionário, veiculado a pessoas com bom conhecimento especı́fico do fluxo de trabalho e da equipe de um projeto de um software livre especı́fico (preferencialmente o mantenedor responsável pelo projeto), e uma análise do pacote de código-fonte do projeto, a fim de comparação com os dados do questionário. 207 208 5° WSL / 5° FISL O questionário foi então testado e avaliado por alguns membros de projetos de software livre e engenheiros de software, sendo então preparada sua veiculação. Dado o desconhecimento da dimensão total da população de projetos livres a ser avaliada, optou-se por selecionar uma amostra não-aleatória. O critério adotado foi a escolha de projetos de software livre cujo processo de software se mostrasse saudável e sustentável e, por esse motivo, projetos que tenham caracterı́sticas de longevidade, intensa atividade ou grande e permanente destaque público. O estabelecimento da amostra, por cotas e casos crı́ticos, envolveu a seleção de projetos em dois diretórios de software livre, o freshmeat.net e sourceforge.net, que qualificam os projetos segundo a própria comunidade de desenvolvedores. Um importante ponto a ser discutido em qualquer levantamento é a significância da amostra. Assumindo que os sites de registro de projetos sejam representativos da população de projetos de software livre, é possı́vel fazer uma estimativa do total de projetos de software livre observados: 27.000 projetos registrados no freshmeat.net, 7.019 (26%) são estáveis ou maduros; 57.000 no sourceforge.net, 7.231 (12,7%) como maduros ou estáveis. Assumindo, conservadoramente, que 40% dos projetos estão registrados em ambos os sites simultaneamente, é provável que a população de projetos estáveis e maduros não passe de 8.550. Com base nessa dedução, o número de respostas obtidas corresponde a até 6% do total de projetos maduros e estáveis, o que indica uma boa cobertura para o estudo empı́rico. 3. Resultados A veiculação do questionário foi iniciada em setembro de 2002, se estendendo até novembro do mesmo ano. Foram enviadas mensagens para os responsáveis por projetos de software livre classificados como estáveis ou maduros e, com a chegada das respostas, fez-se a análise dos resultados e coleta secundária de dados. Os resultados quantitativos do questionário são apresentados a seguir: Localização geográfica dos participantes - a população avaliada é internacional, com uma grande participação de norte-americanos e europeus. Domı́nio de aplicação - a maioria dos projetos está relacionada à engenharia de software, redes e segurança, multimı́dia, navegadores e aplicações de escritório (53%). Código-fonte - a linguagem mais utiliza é ANSI C, presente em 70,7% dos projetos analisados. Seguem sh (65,9%), Perl (39,1%), C++ (32,76%), yacc (16,76%), Python (14,26%), dentre outras. Cada projeto utiliza, em média, 3,2 linguagens. Analisando a quantidade de linha de códigos, verifica-se uma média de 60 mil linhas por projeto (KLOC). Apenas 18% dos projetos possuem mais do que a média, com apenas 10% superando 100 KLOCs. Motivação - a maioria dos projetos (71,1%) foi iniciada por motivos pessoais, não tendo contribuição significativa de uma organização formal (13,3%) e, desde o inı́cio, feitos como software livre (58,6%). Uma parcela considerável de projetos (27,7%) teve como base um outro projeto de software. Perfil do usuário - usuários técnicos são os principais usuários dos softwares, a começar pelo lı́der do projeto (75,1%) e a comunidade de software livre (62,2%), seguidos por técnicos e estudantes de computação. Usuários não técnicos figuram com 37,2% de participação. Idade do projeto - a faixa etária dos projetos se concentra entre 2 e 5 anos (39,9%). A minoria de projetos com menos de um ano (14,6%) reflete o critério do levantamento, escolhendo projetos estáveis ou maduros. Tamanho da equipe - equipes de desenvolvimento com menos de cinco membros predominam (74%). Projetos de dimensões maiores são responsáveis pelas equipes mais numerosas. Modelo de liderança - encontram-se projetos cuja responsabilidade é de uma única pessoa (35,2%) e daqueles em que se observa a presença de uma organização hierárquica (57%), com delegação, formal ou informal, de responsáveis por um lı́der (40,3%) ou comitê (16,8%). Poucos projetos (2,5%) indicaram a ausência de uma forma de organização, sugerindo um forte consenso entre os participantes de que alguma estrutura de liderança precisa de fato existir. 5° WSL / 5° FISL Aspectos da equipe - a maioria dos membros da equipe se conhece apenas através da Internet (62,2%), com uma pequena parcela (11%) desenvolvendo de forma convencional (localmente). Observa-se também que muitos dos desenvolvedores (40,1%) executam mais de uma tarefa no projeto e que 55,5% dos desenvolvedores possuem mais de cinco anos de experiência. Requisitos - a existência de precedentes nos projetos de software livre, constatada em motivação, é um facilitador de requisitos, tendo 52,8% dos projetos afirmado a replicação de softwares já existentes (35,6%) ou se basear em especificações e padrões públicos (32,2%). Além disso, destacam-se o grande esforço na definição das funcionalidades do software (42,8%) e a independência da equipe quanto a esses requisitos, sem contribuições significativas dos usuários (40,3%). Usabilidade - notável a baixa ênfase em engenharia de usabilidade: poucos projetos dedicam-se a boas interfaces usuário-computador. Uma pequena parcela realiza prototipação (27,7%) e estudos sobre interfaces (6,6%), com uma fraca polı́tica para controlar as alterações nas mesmas (sem necessidade de aprovação de mudanças na interface em 11,8% ou equipes especı́ficas para este aspecto do software em 7,9%). Documentação - muitos projetos afirmam despender um grande esforço na geração de documentação, seja ao nı́vel de requisitos (69,6%), de projeto (30,1%) e para usuários finais (77,6%). Praticamente toda documentação é gerada inteiramente pela equipe do projeto, com apenas 11,8% dela sendo produzida por grupos externos. O ı́ndice relativamente baixo de documentação é justificado pela disponibilidade do código-livre e a possibilidade de extrair dele, seja pelos comentários ou utilização de ferramentas especializadas, os dados do projeto. Garantia de qualidade - os softwares são testados apuradamente antes de seu lançamento (55,7%). Diferente do senso comum, não são realizadas muitas atividades de garantia de qualidade ao longo do desenvolvimento: executar testes periódicos, possuir um plano de testes (9,9%), um processo de revisão (22,9%) ou regras para integração de alterações no código (15,0%). A disponibilização do código publicamente, por meio de releases alpha, beta e release candidates, visando a execução de testes pelo usuário final, é a principal atividade executada para garantir qualidade (27,0%). Ferramentas - uso intenso de gerenciamento de configuração (73,2%) e meios de comunicação simples, como listas de discussão e sites Web (ambas 66,9%) são fato na maioria dos projetos. Serviços de hospedagem, como sourceforge.net e gnu.org, também são representativos, sendo utilizados por 57% dos projetos. Outras ferramentas, como FAQs, gerenciadores de erro (como o Bugzilla) e Internet Relay Chat (IRC) são usufruı́dos por mais de 22% dos projetos. O baixo nı́vel de utilização de ferramentas mais especializadas (gerenciadores de erro, editores colaborativos como wikis e sistemas de comunicação de tempo real) provavelmente é conseqüência da existência de equipes de desenvolvimentos pequenas, não justificando o esforço em mantê-las. 4. Análise dos resultados Uma quantificação mais geral dos dados obtidos em relação à engenharia de software foi obtida pela criação de um ı́ndice denominado “Índice de Engenharia de Software”. Ele é calculado a partir de uma lista de alternativas, obtidas do questionário, consideradas relevantes para um bom processo de engenharia. A cada item dessa lista foi associado um peso, variando de 1 (esforço desprezı́vel) a 5 (grande esforço), calculado com base em um levantamento simples com dois especialistas. De forma semelhante, foi criado um ı́ndice para descrever o uso de ferramentas de engenharia de software. Analisando a relação entre o esforço despendido nas atividades de engenharia de software e uso das ferramentas (por meio do “Índice de Engenharia de Software”) em relação ao tamanho dos softwares (figura 1), a concentração nos valores médios para o ı́ndice de engenharia de software sugere um processo comum entre boa parte dos projetos de software livre, mas que não envolve todas as atividades abordadas no levantamento. 209 210 5° WSL / 5° FISL Figura 1: Gráfico scatter relacionando o ı́ndice de engenharia de software com o número de linhas de código de cada projeto. Fonte: (Reis, 2003, p. 130). Analisando o ı́ndice de engenharia de software e o tamanho e idade das equipes (figura 2), verifica-se que a execução de atividades de engenharia de software está relacionada à dimensão da equipe, mas não ao tempo de existência do projeto: projetos com mais integrantes realizam mais atividades de engenharia de software. Não parece existir uma relação entre a maturidade dos projetos e utilização de novas atividades, como seria o esperado em processos de software tradicionais. Figura 2: Gráfico representando a relação entre o ı́ndice de engenharia de software, o tamanho da equipe e a idade do projeto. Fonte: (Reis, 2003, p. 131) Define-se, então, um ciclo de vida para software livre, cada projeto instanciando-o sob influência de sua cultura interna, histórico e objetivos. O ciclo é composto por quatro fases: criação, lançamento público, crescimento e organização, e maturidade. As fases mais importantes são as que procedem ao lançamento público: a partir desse momento, o projeto entra em processo de evolução contı́nua. 5. Conclusão O levantamento realizado permitiu visualizar interessantes caracterı́sticas do processo de software livre, algumas inclusive fugindo ao senso comum, tal como a relativamente baixa ocorrência de atividades de garantia de qualidade. Isso contrapõe o fato de softwares livres apresentarem Uma justificativa são os aspectos humanos que existem nos projetos de software livre: a forte interação usuário-desenvolvedor, o trabalho auto-gratificante. No mesmo caso das atividades de teste, provavelmente esses mecanismos sociais e psicológicos têm impacto significativo na qualidade do software. Conforme exemplificado por D. J. Bernstein: “Reliability means never having to say you’re sorry”. Os projetos livres oferecem uma chance de cooperar com pessoas com quem não se teria contato normalmente, trabalhando para um objetivo prático e com resultados concretos. Essa é caracterı́stica chave de todo processo de software livre. Referências Reis, C. R. (2003). Caracterização de um processo de software para projetos de software livre. Dissertação de Mestrado, Universidade de São Paulo, São Carlos - SP. 5° WSL / 5° FISL Integração dos Ambientes Livres WEKA e ImageJ na Construção de Interfaces Guiadas por Sinais Visuais Hemerson Pistori1 , Mauro Conti Pereira1 1 Centro de Ciência Exatas e Tecnológicas – Universidade Católica Dom Bosco 79117-900 Campo Grande, MS, Brasil [email protected], [email protected] Abstract. WEKA and ImageJ are free-softwares, not well-known in Brazil, but that offer a great variety of resources for, respectivelly, machine learning and digital image processing algorithms implementations. The present work, besides presenting these packages, describes how they have been integrated to create two prototypes of systems with a humam-computer interface based on visual-input. Two differents visual signs were used: eyes-gaze and hand-gestures, however, the proposed soluction may be generalized to any system with input captured from webcams. Resumo. Os pacotes livre WEKA e ImageJ, ainda pouco conhecidos no Brasil, oferecem uma grande variedade de recursos para a implementaç ão de algoritmos de aprendizagem de máquina e algoritmos de processamento digital de imagens, respectivamente. Além de apresentar esses pacotes, este trabalho descreve como os pacotes foram utilizados, de forma integrada, na criaç ão de dois protótipos de sistemas com interface guiada por sinais visuais. Dois tipos de sinuais visuais foram utilizados, um relacionado com a direção do olhar e o outro com gestos realizados através das mãos. A solução proposta pode ser generalizada para qualquer tipo de sistema em que se pretende utilizar imagens capturadas através de uma webcam, na interação homemmáquina. 1. Introdução O baixo custo dos dispositivos de captura de imagens, juntamente com o aumento significativo na capacidade de processamento dos computadores pessoais, abrem espaço para o desenvolvimento de novos tipos de interfaces homem-máquina. A substituição dos tradicionais teclados e mouses por sinais visuais, a serem apresentados ao computador através de uma filmadora digital, oferece uma variada gama de aplicações que podem viabilizar e facilitar a utilização de computadores por segmentos da sociedade que apresentam determinadas deficiências fı́sicas. Editores de texto e navegadores para Internet acionados através de movimentos do globo ocular, por exemplo, poderiam ser utilizados por pessoas tetraplégicas. Surdos também poderiam se beneficiar deste tipo de sistema, com a introdução de programas de computador capazes de interpretar lı́nguas de sinais. Stiefelhagen [Stiefelhagen et al., 1997] relata ter obtido uma precisão entre 1.3 e 1.9 graus em um sistema que permite o controle do ponteiro do mouse através do olhar. Gee e Cipolla [Gee and Cipolla, 1994], descrevem um sistema que infere a direção do olhar a partir da reconstituição de um modelo simplificado da cabeça, a partir da imagem projetada. Neste modelo, busca-se valorizar a posição relativa dos olhos, boca e nariz, que, segundo os autores, são atributos que variam pouco em relação a diferentes sujeitos. Wang e Sung [Wang and Sung, 2001] modelam a direção do olhar como sendo a direção da normal ao plano de suporte de cada ı́ris. Aproximando 211 212 5° WSL / 5° FISL a forma da ı́ris através de circunferências e assumindo raios, distâncias focais e fatores de escala conhecidos, é possı́vel estimar a normal em questão a partir da projeção dos cı́rculos. Outro elemento visual utilizado na interface homem-máquina é a mão. Além de sua importância nas lı́nguas de sinais para surdos, sistemas para rastreamento (tracking) das mãos humanas possuem aplicações que incluem jogos controlados por movimentos de mão, aparelhos de televisão acionados por sinais manuais [Freeman et al., 1996] e dispositivos que substituem o mouse na interação com computadores. Neste trabalho, mostraremos como alguns pacotes livres existentes puderam ser integrados na criação de dois protótipos de sistemas guiados por sinais visuais. Todos os pacotes utilizados são escritos em Java, o que facilita a portabilidade das soluç ões para novas plataformas. As novas classes que precisaram ser criadas para permitir a integração dos pacotes e o controle de webcams, a partir de um programa em Java, estão disponı́veis na Internet 1 . Na próxima seção, descreveremos cada um dos pacotes livres utilizados no projeto. Na seção 3, apresentaremos a arquitetura de um sistema guiado por sinais visuais, bem como os problemas e as soluç ões encontradas, para que os pacotes existentes pudessem ser utilizados, em conjunto, na construção desse tipo de sistema. Os dois protótipos desenvolvidos e as conclusões são apresentadas nas duas últimas seções. 2. Descrição dos Pacotes Utilizados Para implementar e testar técnicas de visão computacional e de processamento digital de imagens, utilizamos o pacote ImageJ 2 , que é uma versão multiplataforma, ainda em desenvolvimento, do software NIH Image, para Macintosh. Entre os recursos oferecidos pelo pacote destacamos a disponibilidade, com programas-fonte abertos, de diversos algoritmos para: manipulaç ão dos mais variados formatos de arquivo de imagens, detecção de bordas, melhoria de imagens, cálculos diversos (áreas, médias, centróides) e operações morfológicas. Esse software disponibiliza também um ambiente gráfico que simplifica a utilização de tais recursos, além de permitir a extensão através de plugins escritos em Java. Um outro fator importante para a sua escolha é a existência de uma grande comunidade de programadores trabalhando em seu desenvolvimento, com novos plugins sendo disponibilizados freqüentemente. Um desses plugins, o HoughCircles, foi desenvolvido pelo nosso grupo, durante a execução deste projeto, e está disponı́vel na página do ImageJ. O segundo pacote utilizado neste projeto foi o WEKA3 (Waikato Environment for Knowledge Analysis) [Witten and Frank, 2000], também escrito em Java e com programas-fonte abertos. O WEKA é um ambiente bastante utilizado em pesquisas na área de aprendizagem de máquina, pois oferece diversos componentes que facilitam a implementação de classificadores e agrupadores (clustering tools). Além disto, esse ambiente permite que novos algoritmos sejam comparados a outros algoritmos já consolidados na área de aprendizagem, como o C4.5, o Backpropagation, o KNN e o naiveBayes, entre outros. Podemos com esse pacote obter facilmente resultados estatı́sticos comparativos da execução simultânea de diversos programas de aprendizagem em domı́nios variados, tais como o reconhecimento de caracteres e diagn óstico médico. Por fim, utilizamos o pacote Java Media Framework 4 para captura de sinais temporais em tempo real. Este pacote permite que programas em Java possam acessar, por exemplo, imagens capturadas através de uma webcam acoplada a um computador pessoal. O software abstrai detalhes das arquiteturas e interfaces de diferentes dispositivos de captura de imagem, facilitando assim a portabilidade dos aplicativos. 1 http://www.ec.ucdb.br/ pistori/projetos/sigus/index.html http://rsb.info.nih.gov/ij/ 3 http://www.cs.waikato.ac.nz/ ml/weka/ 4 http://java.sun.com/products/java-media/jmf/ 2 5° WSL / 5° FISL 213 Teclado/Mouse WebCam JMF Conversor J−I ImageJ Conversor I−W Weka Filtros Monitor AdapTree Figura 1: Sistema guiado por sinais visuais 3. Integração dos Pacotes A figura 1 apresenta, utilizando uma notação gráfica similar à de um diagrama de fluxo de dados, a arquitetura básica de um sistema guiado por sinais visuais e aprendizagem. As linhas pontilhadas resumem o fluxo de informação relacionado com o treinamento do sistema, que acontece da seguinte forma: uma imagem do sinal (e.g. uma mão humana realizando o sinal manual para a letra p) a ser aprendido é capturado através de um webcam, com auxı́lio do JMF, juntamente com uma classificação para o sinal, que é fornecida através do teclado ou mouse (e.g. digitação da letra p). A imagem é transmitida, após ser devidamente convertida (Conversor J-I), para o módulo de processamento digital de sinais (ImageJ). Nesse módulo são realizadas transformações na imagem que podem envolver filtros adicionais (Filtros), indisponı́veis no pacote ImageJ. O resultado dessa transformação é convertido e repassado, juntamente com a classificação do sinal, para o módulo de aprendizagem (Weka), que aciona o algoritmo de aprendizagem, neste caso, o AdapTree-E [Pistori, 2003], baseado em tecnologia adaptativa [Neto, 2001]. Depois que os sinais são aprendidos, o sistema entra no modo de funcionamento representado pelas linhas cheias da figura 1. Nesse modo, a entrada consiste apenas das imagens capturadas pela webcam (sem as informações de treinamento). As imagens são processadas através dos mesmos filtros utilizados no treinamento e as informações resultantes são passadas para o módulo de aprendizagem. O módulo de aprendizagem deve agora oferecer uma resposta à entrada, com base no modelo abstraı́do a partir dos exemplos fornecidos anteriormente. Esta resposta é apresentada ao usuário através de algum dispositivo de saı́da, como por exemplo, o monitor do computador. Nosso trabalho incluiu o desenvolvimento dos módulo de conversão J-I (JMF para ImageJ) e I-W (ImageJ para Weka), além é claro, da implementação do mecanismo de aprendizagem, AdapTree-E, e de filtros especı́ficos para as duas aplicações. O resultado é um grupo de classes, escritas em Java, que podem ser especializadas ou modificadas na implementaç ão de outros sistemas com caracterı́sticas semelhantes. 4. Protótipos Implementados Para realizar alguns dos nossos experimentos com interfaces baseadas na direção do olhar, implementamos um simples jogo da velha. Existem apenas nove regi ões de interesse para o usuário nesse jogo: as posições do tabuleiro onde podemos marcar os cı́rculos ou as cruzes. Fazendo com que a apresentação visual do tabuleiro ocupe grande parte do monitor, conseguimos relaxar o grau de precisão na detecção da direção do olhar. Além disto, é bastante natural a transposição da interface por mouse para a interface pelo olhar. 214 5° WSL / 5° FISL Inicialmente, existe um perı́odo de aprendizagem, em que usuário deve olhar para cada uma das nove regiões do tabuleiro. A captura de imagens de treinamento é iniciada e finalizada clicando-se o mouse. Depois que uma quantidade pré-definida de exemplos é capturada, o sistema infere uma primeira árvore de decisão, e o usuário pode começar a jogar “com o olhar”. O módulo de aprendizagem não trabalha diretamente sobre a imagem obtida, mas sobre um conjunto de parâmetros dela extraı́dos pelo módulo de processamento digital de imagens. Uma descrição mais detalhada sobre as técnicas utilizadas pode ser encontrada em [Pistori, 2003]. Nós implementamos também um protótipo de um editor para sı́mbolos alfabéticos da LIBRAS. Primeiramente, ocorre a fase de treinamento, quando o usuário deve executar os sinais manuais, com uma das mãos, e utilizar a outra para digitar a letra correspondente. Diversas imagens da mão são capturadas, até que uma tecla qualquer seja pressionada. Este procedimento é repetido, diversas vezes, para todas as letras desejadas: normalmente, quanto mais exemplos forem colhidos na fase de treinamento, maior será a precisão obtida na fase de reconhecimento. Quando uma tecla especial, reservada, é pressionada, o sistema induz a árvore de decisão adaptativa inicial, e o usuário pode então iniciar a edição do texto utilizando sinais manuais. 5. Conclusões Apresentamos neste artigo um conjunto de pacotes e bibliotecas, alguns desenvolvidos por n ós, outros disponı́veis gratuitamente na Internet, que podem ser utilizados na implementação de sistemas guiados por sinais visuais. A integração dos pacotes pré-existentes não foi uma tarefa trivial, uma vez que, além de complexos, estes pacotes não foram projetados para trabalhar em conjunto. Um objetivo para o futuro é a construção de um ferramenta com interface gráfica que permita mais facilmente a utilização destes pacotes e bibliotecas, que hoje é feita basicamente através da alteração de programas-fonte escritos em Java. Também seria interessante buscar uma alternativa ao pacote JMF, que embora gratuito, não é livre (os programas-fonte não estão disponı́veis). Referências Freeman, W. T., Tanaka, K., Ohta, J., and Kyuma, K. (1996). Computer vision for computer games. In 2nd International Conference on Automatic Face and Gesture Recognition, pages 100–105, Killington, VT, USA. Gee, A. H. and Cipolla, R. (1994). Determining the gaze of face in images. Technical Report CUED/F-INFENG/TR 174, Cambridge University, Trumpington Street, Cambridge CB2 1PZ, England. Neto, J. J. (2001). Adaptative rule-driven devices - general formulation anda case study. In CIAA’2001 Sixth International Conference on Implementation and Application of Automata, pages 234–250, Pretoria, South Africa. Pistori, H. (2003). Tecnologia Adaptativa em Engenhara de Computaç ão: Estado da Arte e Aplicações. PhD thesis, Universidade de São Paulo, São Paulo, Brasil. Stiefelhagen, R., Yang, J., and Waibel, A. (1997). Tracking eyes and monitoring eye gaze. Proceedings of the Workshop on Perceptual User Interfaces (PUI’97)., pages 98–100. Wang, J. G. and Sung, E. (2001). Gaze determination via images of irises. Image and Vision Computing, 19(12):891–911. Witten, I. H. and Frank, E. (2000). Data Mining: Practical Machine Learning Tools and Techniques with Java Implementations. Morgan Kaufmann.
Documentos relacionados
programação - Software Livre Brasil
morte do hacker e ativista Aaron Swartz enquanto era processado por pirataria pelo Instituto de Tecnologia de Massachussets (MIT), triste efeméride de 201 3, transformou o jovem em símbolo da luta ...
Leia maisIV Workshop sobre Software Livre – WSL 2003 Porto - Wiki-SL
Maria Janilce Bosquiroli Almeida, UFRGS Marinho Pilla Barcelos, UNISINOS Mariusa Warpechowski, UFRGS Paulo Roberto Ferreira Jr., FEEVALE Renata Zanella, UFRGS Roland Teodorowitsch, ULBRA Simone And...
Leia mais