Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO Bruna de Paiva Gonçalves Felipe Ferreira Pereira Felipe Freitas de Oliveira Gabriel Felipe Reis Scarpari José Maria Fernandes Marlet Rodrigo Vieira Peres Tiago Tosca dos Santos DESENVOLVIMENTO DE UM REPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE PARA RESOLUÇÃO DE PROBLEMAS EM ENGENHARIA Link do vídeo: a ser produzido Protótipo: em desenvolvimento São José dos Campos – SP 2020 UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO DESENVOLVIMENTO DE UM REPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE PARA RESOLUÇÃO DE PROBLEMAS EM ENGENHARIA Relatório apresentado na disciplina de Projeto Integrador para o curso de Engenharia da computação da Fundação Universidade Virtual do Estado de São Paulo (UNIVESP). Tutor: Marcel Yuzo Kondo São José dos Campos – SP 2020 GONÇALVES, Bruna de Paiva; MARLET, José Maria Fernandes; OLIVEIRA, Felipe Freitas de; PEREIRA, Felipe Ferreira; SCARPARI, Gabriel Felipe Reis; PERES, Rodrigo Vieira; SANTOS, Tiago Tosca. DESENVOLVIMENTO DE UM REPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE PARA RESOLUÇÃO DE PROBLEMAS EM ENGENHARIA. __ f. Relatório Técnico-Científico (Engenharia da Computação) – Universidade Virtual do Estado de São Paulo. Tutor: Marcel Yuzo Kondo. Polo: São José dos Campos / Santana, 2020. RESUMO O presente trabalho foi desenvolvido a partir da identificação da necessidade de criação de uma ferramenta computacional de apoio aos laboratórios dos cursos de Engenharia. Para tal, realizaram-se pesquisas em formato de questionário que evidenciaram que a existência de uma plataforma agregadora de conteúdo estudantil que permitisse a interação entre alunos e professores para a resolução de problemas de Engenharia, fosse considerada de extrema utilidade. Através desta, o professor poderá criar diversas atividades como: laboratórios, exercícios, projetos, etc, que utilizem da computação como ferramenta para a criação de códigos abertos para soluções de problemas práticos reais de Engenharia. Com auxílio das respostas do questionário empregado, será desenvolvido um website com o objetivo de apresentar a proposta do projeto que servirá como um repositório de códigos fonte para a resolução de problemas de Engenharia diversos. O projeto foi dividido em três tópicos: hospedagem, banco de dados e linguagem de programação, sendo que cada um dos tópicos é diretamente dependente dos outros, ou seja, a hospedagem precisa suportar a linguagem de programação, que é diretamente relacionada à base de dados. A linguagem de programação utilizada para o desenvolvimento do conteúdo dinâmico foi o PHP, que foi escolhido para o projeto por ser uma linguagem não proprietária e com ampla difusão e utilização, além de linguagens de hipertexto HTML e de marcação CSS. Com a definição da linguagem de programação, foi possível definir a escolha por uma base de dados que trabalhe com a linguagem escolhida, para isso foi utilizada a base de dados MySQL. Já definidas a linguagem de programação e a base de dados foi possível optar por um ambiente de hospedagem com suporte a linguagem PHP e a base de dados MySQL. Palavras-chave: Repositório, Código fonte, Laboratório, Engenharia, PHP, MySQL, Pesquisa de opinião. GONÇALVES, Bruna de Paiva; MARLET, José Maria Fernandes; OLIVEIRA, Felipe Freitas de; PEREIRA, Felipe Ferreira; SCARPARI, Gabriel Felipe Reis; PERES, Rodrigo Vieira; SANTOS, Tiago Tosca. DESENVOLVIMENTO DE UM REPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE PARA RESOLUÇÃO DE PROBLEMAS EM ENGENHARIA. __ f. Relatório Técnico-Científico (Engenharia da Computação) – Universidade Virtual do Estado de São Paulo. Tutor: Marcel Yuzo Kondo. Polo: São José dos Campos / Santana, 2020. ABSTRACT The present work was developed from the identification of the necessity of the creation of a computational support tool for the Engineering courses laboratories. For that, researches were made in the form of a survey which showed evidences that a student content aggregator platform allowing the interaction between students and teachers for Engineering problem solving was considered extremely useful. Through this, the teacher will be able to create many activities as: laboratories, exercises, projects, etc, which uses computing as a tool to create open source codes to solve real Engineering problems. With the answers of the applied survey, a website will be developed to presente the Project proposal and will act as a source code repositor for solving a wide range of Engineering problems. The project was divided into three topics: hosting, database and programming language, each of which is directly dependent on others, that is, the hosting needs to support the programming language, which is directly related to the database. The programming language used for the development of dynamic content was PHP, which was chosen for the project because it is a non-proprietary language with wide diffusion and use, as well as HTML hypertext and CSS markup languages. With the definition of the programming language, it was possible to define the choice for a database that works with the chosen language, for that the MySQL database was used. Once the programming language was defined and the database was possible to opt for a hosting environment with PHP language support and the MySQL database. Keywords: Repository, Source Code, Laboratory, Engineering, PHP, MySQL, Survey. Sumário 1. INTRODUÇÃO ............................................................................................................................. 7 2. DESENVOLVIMENTO ................................................................................................................ 8 2.1 JUSTIFICATIVA E PROBLEMA ............................................................................................. 8 2.2 OBJETIVOS DA PESQUISA ................................................................................................... 8 2.3 OBJETIVO GERAL ................................................................................................................... 8 2.4 OBJETIVOS ESPECÍFICOS ................................................................................................... 9 2.5 FUNDAMENTAÇÃO TEÓRICA .............................................................................................. 9 2.5.1 Comunidades Open-Source ................................................................................................. 9 2.5.2 Ferramentas computacionais ............................................................................................. 12 2.5.2.1 MATLAB ........................................................................................................................ 13 2.5.2.2 Octave e Scilab ............................................................................................................. 14 2.5.3 Linguagens C++, Java e Ambiente POO ......................................................................... 15 2.5.3.1 POO ............................................................................................................................... 15 2.5.3.2 C++ ................................................................................................................................. 16 2.5.3.3 Java ................................................................................................................................ 16 2.5.4 Modelamento problemas de engenharia .......................................................................... 17 2.5.5 Design Thinking – Conceitos Básicos............................................................................... 18 2.5.6 Metodologia Científica.........................................................................................................19 2.5.6.1 Protótipo ........................................................................................................................ 19 2.5.6.2 Metodologia ................................................................................................................... 19 2.5.6.3 Tecnologia Empregada ................................................................................................ 19 2.6 METODOLOGIA DA PESQUISA .......................................................................................... 20 2.6.1 Elaboração das Perguntas ................................................................................................. 20 2.6.2 Análise da Pesquisa ............................................................................................................ 21 2.6.3 Design Thinking ................................................................................................................... 21 2.6.4 Questionário ......................................................................................................................... 22 2.6.5 Prototipagem ........................................................................................................................ 23 2.6.6 Teste do Protótipo ............................................................................................................... 23 2.6.7 Implementação da Solução ................................................................................................ 24 3. RESULTADOS .......................................................................................................................... 24 3.1 METODOLOGIA DO PROTÓTIPO ...................................................................................... 24 3.1.1 Metodologias Estudadas ................................................................................................ 24 3.2 TECNOLOGIA EMPREGADA ............................................................................................... 25 3.3 FERRAMENTAS ..................................................................................................................... 26 3.3.1 Linguagem de Programação .......................................................................................... 26 3.3.2 Banco de Dados .............................................................................................................. 27 3.3.3 Hospedagem .................................................................................................................... 27 3.4 ANÁLISE E DISCUSSÕES DOS RESULTADOS .............................................................. 29 4. CONSIDERAÇÕES FINAIS ..................................................................................................... 30 REFERÊNCIAS ................................................................................................................................. 31 1. INTRODUÇÃO A história da Open Source Initiative (Iniciativa Open Source – OSI) se iniciou em 1998 como um movimento educacional e defensor do importante momento histórico de desenvolvimento colaborativo que ocorreu nessa década, devido ao enorme interesse e participação de programadores no desenvolvimento do Linux e pelo anúncio da Netscape Communications Corporation de abrir o código fonte de seu produto mais popular à época, o “Netscape Communicator”. Pouco após este anúncio, em uma conferência hospedada em Palo Alto, California, um grupo de conferencistas motivados pela atitude da Netscape (uma empresa pragmática) achou que esta fosse uma valiosa oportunidade de engajar desenvolvedores e usuários de software e convencê-los a criarem e utilizarem códigos fontes abertos, participando deste movimento que foi rotulado de “Open Source”, termo cunhado por Christine Peterson. A adoção do termo foi rápida, tendo apoio de grandes figuras da comunidade como Linus Torvalds e dos fundadores do Sendmail, Perl, Python, Apache, representantes do IETF e do Internet Software Consortium. (OPENSOURCE, 2020) Como uma de suas primeiras medidas, a OSI rascunhou a definição de open source conhecida por OSD (Open Source Definition), utilizando-a para criar uma lista de licenças aprovadas pela OSI. Inicialmente esta lista contava com diversas licenças, sendo as quatro mais utilizadas à época: 1) GNU General Public License (GPL): esta licença obriga que as alterações realizadas (resultando em softwares derivados) também sejam licenciados sob a GPL. Isso impede um indivíduo ou uma empresa de pegar este código fonte, alterá-lo e divulga-lo como um software proprietário. (GNU, 2020) 2) GNU Library (LGPL): esta licença seria o meio termo de liberdade entre a GPL e a BSD, permitindo que programas que não estejam sob licenças GPL ou LGPL sejam associados, inclusive a softwares proprietários. (GNU, 2020) 3) BSD License: em seus termos esta licença coloca o software como de domínio público, podendo ser modificado sem nenhuma restrição, permitindo inclusive que softwares distribuídos sob esta licença sejam incorporados a produtos proprietários sendo, portanto, mais livre que a GPL, por exemplo. (FSF, 2020) 4) MIT License: em termos de permissividade é equivalente à BSD, porém possui um texto melhor redigido, mais simplificado e mais claro sob o os diretos de uso, cópia, modificação etc. (MIT, 2020) Tomando por base o movimento acima descrito, este projeto visa o desenvolvimento de um repositório open source de código fonte para resolução de problemas em engenharia, fomentando o trabalho em equipe e a interação entre alunos e professores das mais diversas esferas da Engenharia. 2. DESENVOLVIMENTO 2.1 JUSTIFICATIVA E PROBLEMA O projeto surgiu da detecção da necessidade de criação de uma ferramenta que promova acesso, controle e fomente o trabalho colaborativo entre alunos para a resolução de problemas diversos envolvendo computação sob a forma de trabalhos, projetos e laboratórios criados e organizados pelos seus respectivos professores, tutores e/ou orientadores. Este formato permite grande exposição de diferentes projetos o que pode atrair atenção do setor privado promovendo parcerias entre alunos, professores e Universidades. 2.2 OBJETIVOS DA PESQUISA O objetivo desse trabalho é permitir que coloquemos em prática tudo o que aprendemos até o momento no curso de Engenharia de Computação, integrando as matérias estudadas no semestre, dando assim, a possibilidade de nos aprofundarmos em questões reais e o mais importante, nos dando a oportunidade de criarmos uma solução inovadora para essas questões. Outro objetivo é a utilização da pesquisa como meio para resolvermos os problemas, estimular o espírito de equipe, interdisciplinaridade e desenvolvimento de novas ideias. 2.3 OBJETIVO GERAL O presente trabalho tem por objetivo o desenvolvimento de um repositório de códigos fonte, que permita aos diversos professores e alunos das mais diversidades Universidades de Engenharia interagirem entre si, discutindo e resolvendo os mais diversos problemas de Engenharia. 2.4 OBJETIVOS ESPECÍFICOS O objetivo específico deste projeto integrador é o desenvolvimento de uma plataforma que permita aos professores universitários da área de engenharia criarem trabalhos, projetos e laboratórios para as suas respectivas disciplinas, que façam uso de ferramentas computacionais a serem desenvolvidas pelos seus respectivos alunos. Como o projeto integrador será executado em duas fases, o foco inicial foi direcionado para a revisão bibliográfica sobre o tema, com imersão em literaturas de Open Source Initiative, Open Source Definition, software livre, repositórios digitais, tendo como sequencia o marco final da primeira fase: o protótipo da semântica de lógica da solução doproblema (modelo). Na segunda fase, que será desenvolvida no próximo bimestre, serão apresentadas as análises referentes à viabilidade do projeto, desenvolvimento de um protótipo a partir do modelo construído na primeira etapa, apresentação de exemplos e experiências de uso da ferramenta projetada, entre outros. Para definição dos objetivos específicos, foi utilizada a ferramenta de mapa mental, e em reuniões de brainstorm foram discutidos detalhes fundamentais para a sequência do projeto. Sempre utilizando o Design Thinking, foi mantido contato com possíveis clientes finais (cursos de engenharia de universidades). As perguntas disparadoras foram fundamentais para elaboração. 2.5 FUNDAMENTAÇÃO TEÓRICA 2.5.1 Comunidades Open-Source Na década de 1960 os softwares eram compartilhados gratuitamente, nos anos seguintes, com crescimento do mercado, eles começaram a ser vendidos, pois as empresas como modo de proteger seus códigos, começaram a patentear seus softwares, isto originou os softwares proprietários. No começo da década de 1980, movimento de softwares livres começa a surgir com Projeto GNU, que depois criou FSF (Free Software Foundation), que discorria os reflexos do software proprietário e desempenhava no desenvolvimento de um software livre. No ano final da década de 1990, o movimento acaba por se estabelecer em dois grupos: o grupo free, que tem como missão a liberdade dos softwares e uso exclusivo dela, e o grupo open que, além da luta pela liberdade do softwares, também usa de modelos de livre licenciamento de software. Posteriormente temos a Free Software Foudation como melhor representação do grupo free e a Open Source Initiative como melhor representação do grupo open (EVANGELISTA, 2020; IWASAKI, 2020). Segundo a Free Software Foudation (2020): “O movimento Free Software e o movimento Open Source são como dois campos políticos dentro da comunidade de software livre. Grupos radicais na década de 1960 desenvolveram reputação de facções: organizações que se dividem devido discordâncias em detalhes das estratégias, e ai se tratavam mutuamente como inimigas. Ou ao menos esta é a imagem que as pessoas têm delas, seja ou não verdadeira. O relacionamento entre o movimento Free Software e o movimento Open Source é justamente o oposto deste. Nós discordamos nos princípios básicos, mas concordamos (mais ou menos) nas recomendações práticas. Assim nós podemos e de fato trabalhamos juntos em diversos projetos específicos. Nós não vemos o movimento Open Source como inimigo. O inimigo é o software proprietário.” O tema do projeto integrador para esse semestre tem como base uma comunidade código aberto (open source). A ideia é que os softwares disponíveis dessa comunidade não sejam somente freeware, mas também que eles possam ser alterados ou aperfeiçoados conforme a necessidade do usuário, com ele tendo a possibilidade depois de querer ou não compartilhar suas alterações. Lévy (1999), discorre sobre as comunidades open source dizendo: “Quanto mais os processos de inteligência coletiva se desenvolvem [...], melhor a apropriação, por indivíduos e por grupos, das alterações técnicas, e menores são os efeitos de exclusão ou de destruição humana resultantes da aceleração do movimento tecno-social.” A internet, que por sua vez consegue reunir um número de pessoas com o mesmo interesse, estimula a comunidade cada vez mais a crescer. Castells (2003), discorre como a internet ajudou o movimento: “Só uma rede de centenas de milhares de cérebros trabalhando cooperativamente, com divisão do trabalho espontâneo, e coordenação maleável, mas eficiente, poderia levar a cabo a tarefa extraordinária de criar um sistema operacional capaz de lidar com a complexidade de computadores cada vez mais potentes interagindo por meio da internet.” A comunidade open source tem diversas vantagens e desvantagens, a seguir algumas de suas vantagens: Formação: há um crescente número de profissionais surgindo com interesse e qualificação na temática do código aberto. Suporte: com a informação é aberta muitas pessoas podem atualizar, testar e corrigir o código. Qualidade: a ferramenta permite que o código possa ser corrigido por milhares usuários. Independência: preferência por protocolos e interfaces padrões, criando uma independência na escolha de solução mais adequada. Longevidade: a comunidade pode ser tanto consumidora quanto produtora. Segurança: a comunidade com seus usuários, pode trazer consigo uma contínua análise do código para que ache erros. Licenças: alguns licenciamentos que garantem os direitos autorais dos códigos: GPL- General Public License (proíbe que se pegue um código aberto e o deixe como código proprietário), OSD- Open Source Definition (não obriga ao usuário compartilhar suas alterações do código) e BSD-Berkely System Distribution (coloca restrições para copias) Migração: podendo ter migrações, pois muitos códigos abertos são compatíveis com os proprietários. Custo Real: em muitos casos o custo é menor que o proprietário. Em contraposto a comunidade também tem desvantagens, como por exemplo: Falta de Informação: falta de conhecimento sobre o movimento, porém cada vez mais essa dificuldade está diminuindo Preconceitos: receios com o código aberto por falta de conhecimento. Questões da Atualidade: um dos principais problemas enfrentados é na questão dos direitos autorais em cima do código. Tendo cada vez mais relevância pelo seu meio de compartilhamento de informação, o movimento tem ajudando o a distribuição do conhecimento. A Instituições MIT (Massachusetts Institute of Technology) criou a iniciativa MIT OpenCourseWare, MIT OCW, tendo a ideia como base, que oferece conteúdos educacionais de forma livre e aberta para seus alunos e pesquisadores, ou seja, a mesma ideia aplicada de forma diferenciada. No Brasil, iniciativas como estas são conhecidas como Ambientes Virtuais de Aprendizagem. O Brasil já foi conhecido como “o maior e melhor amigo do software aberto” (BENSON, 2005; FESTA, 2001. KINGSTONE, 2005). Conhecendo melhor o movimento open source e vendo que uma ideia similar já foi aplicada em meio educacional, e que também já é reconhecida no Brasil, desenvolveu-se o protejo desse semestre: DESENVOLVIMENTO DE UM REPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE PARA RESOLUÇÃO DE PROBLEMAS EM ENGENHARIA 2.5.2 Ferramentas computacionais As ferramentas computacionais tornaram-se praticamente indispensáveis ao ambiente de ensino e prática da engenharia, pois elas auxiliam os alunos a resolver problemas que possivelmente enfrentarão na sua carreira profissional de forma mais eficiente e dinâmica, em que o domínio da sua utilização representa uma vantagem competitiva. Também, as ferramentas computacionais ajudam no processo de ensino-aprendizado à medida que possibilita o usuário variar as condições de sua simulação e entender as relações de causa-efeito do modelo concebido. Não é à toa que cursos de engenharia empregam cada vez mais ferramentas como o MATLAB, Scilab e Octave no ensino de seu conteúdo. 2.5.2.1 MATLAB A palavra MATLAB é derivada das palavras em inglês matrix e laboratory (matriz e laboratório em português). O software utiliza uma linguagem de alto nível e é uma plataforma de programação destinada à computação numérica e manipulação de vetores e matrizes, oferecendo elementos gráficos de visualização de repostas em duas e três dimensões. A larga penetração do MATLAB nas áreas de pesquisa e engenharia se deve em grande parte à facilidade com que um usuário iniciante pode aprender a usar um ambiente de programação com pouco esforço (MATHWORKS, 2020). O MATLAB oferece aos engenheiros e pesquisadores do campo das ciências exatas umalinguagem intuitiva para expressar problemas lineares e não-lineares e suas soluções de maneira matemática e gráfica. Isso é feito integrando computação, programação e visualização em um ambiente flexível, aberto e extensível. Assim, problemas numéricos e simbólicos complexos podem ser resolvidos em uma fração do tempo necessário com outras linguagens de programação como C, Fortran ou Java, mesmo que o MATLAB compartilhe alguma sintaxe e até alguns detalhes de implementação com linguagens de programação como C ou Java (YÁNEZ- MÁRQUEZ et al., 2014). Outro aspecto atraente do MATLAB é a sua caixa de ferramentas: coleções de algoritmos, funções, estruturas de dados e módulos, criados para resolver problemas específicos de um campo específico. Assim, existem caixas de ferramentas para processamento de imagens, processamento de sinais, ajuste de curvas, bioinformática ou caixa de ferramentas aeroespacial uniforme. No entanto, o MATLAB não é de código aberto, sendo uma ferramenta bastante cara e pouco acessível para muitas instituições de ensino, pequenas empresas e profissionais no início de carreira. 2.5.2.2 Octave e Scilab Como alternativa, tem-se ferramentas equivalentes de código aberto como a plataforma Octave e a plataforma Scilab, que podem usar linguagem compatível com o MATLAB. O Octave foi criado originalmente por James B. Rawlings, da Universidade de Wisconsin-Madison e John G. Ekerdt, da Universidade do Texas, sendo desenvolvido usando C e C ++ sob a Licença Pública Geral GNU. O Octave possui ferramentas abrangentes para resolver problemas comuns de álgebra linear numérica, encontrar as raízes de equações não lineares, integrar funções comuns, manipular polinômios e integrar equações diferenciais e algébricas diferenciais- algébricas comuns (GNU, 2020). Ele é um software livremente redistribuível, disponível para download livre em: https://www.gnu.org/software/octave/. O Scilab, programa utilizado na execução dos exemplos desse trabalho, é um software gratuito e de código aberto sob a licença GPL, utilizado para computação numérica. A ferramenta também oferece um poderoso ambiente de computação para aplicações científicas e de engenharia, disponível nos sistemas operacionais GNU/Linux, Mac OS X e Windows. O Scilab possui um grande número de funcionalidades como funções embutidas de operações matemáticas para aplicações de engenharia e científicas, funções gráficas para visualizar dados, algoritmos para resolver problemas de otimização contínua e discreta, ferramentas para executar análise e modelagem de dados, modelagem de sistemas mecânicos, circuitos hidráulicos, sistemas de controle, entre outros. O programa também pode atuar como uma plataforma exclusiva para reunir códigos escritos em diferentes linguagens de programação em uma única linguagem unificada, facilitando sua distribuição, backup e uso (SCILAB, 2020). Ele está, disponível para download livre em: https://www.scilab.org/. Almeida, Medeiros e Frery (2012) avaliaram o desempenho das três ferramentas computacionais descritas, para efeito comparativo dos algoritmos empregados, através de estudo estatístico de Monte Carlo de um conjunto padrão de dados com valores certificados que levou em consideração o número de algarismo significativos corretos fornecidos por cada programa. O Scilab obteve https://www.gnu.org/software/octave/ https://www.scilab.org/ bons resultados em que, em alguns quesitos, teve um desempenho superior ao Octave e MATLAB. Assim, além de ser uma ferramenta computacional acessível, o Scilab demonstra ser um recurso confiável para computação numérica e resolução de problemas, sendo adequado para introdução nos cursos de engenharia. 2.5.3 Linguagens C++, Java e Ambiente POO 2.5.3.1 POO Dentro do contexto do trabalho de PI, a saber "DESENVOLVIMENTO DE UM REPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE PARA RESOLUÇÃO DE PROBLEMAS EM ENGENHARIA", é interessante aumentar a portabilidade dos códigos fonte disponíveis, tornando-os disponíveis para várias plataformas. Neste contexto, conforme Nørmark (2011) a Programação Orientada a Objetos (POO) assume um papel de relevância. A POO trabalha com o paradigma procedural e tem com uma das características o encapsulamento de rotinas, que são acessórias para o código fonte principal. Suponha um programa básico de engenharia, por exemplo: na área de Fenômenos de Transporte, onde seja necessária a resolução de sistemas de equações diferenciais e mais o código fonte principal deve rodar em várias plataformas, desde um computador pessoal até um tablet. Usando o paradigma procedural com POO seria possível conciliar essas necessidades distintas, sem sobrecarregar o programador com detalhes de grande complexidade e que não são o objetivo principal da resolução do código fonte original. A POO baseia-se na interação de diversas entidades denominadas de objetos, que são agrupados em classes. Cada objeto tem seus atributos e cada atributo por sua vez tem seu método associado. Pode-se entender cada objeto como uma instância de classes. Hoje em dia, muitas das linguagens de programação mais utilizadas empregam o paradigma procedural com suporte POO, entre elas: C++, C#, Java, Python, Ruby entre outras. Dada a sua aplicabilidade, a POO ainda deve ser relevante por muito tempo. Existem também correntes contrárias à POO, que dizem que a “POO não satisfaz os objetivos de reusabilidade e modularidade, e dá-se ênfase demasiada em design e modelamento de software em detrimento de outros aspectos (computabilidade/algoritmos)”. Neste trabalho de PI, o foco será mantido em POO, a partir das linguagens C++ e Java, descritos brevemente a seguir. 2.5.3.2 C++ Deitel e Deitel, além de Stroustrup, dizem que a linguagem C++ é uma linguagem de programação compilada e orientada a objetos. O C++ foi desenvolvido por Bjarne Stroustrup no Bell Laboratories. Desde a década de 1990 é uma das linguagens comerciais mais utilizadas tanto pela Academia, quanto pelas indústrias. Outro ponto importante da linguagem C++ é o fato de ter várias versões padronizadas pela ISO (International Organization for Standardization – www.iso.org) sendo a versão mais recente: ISO/IEC 14882:2017 (15 de dezembro de 2017). Esta padronização é importante por melhorar a portabilidade dos códigos- fonte desenvolvidos. Deitel e Deitel apresentam, de forma bastante detalhada, a linguagem C, baseada em programação procedural e projeto de programa top-down. Na sequência, apresentam a linguagem C++ como uma evolução da linguagem C, onde foram incorporados dois paradigmas de programa adicionais, a saber: programação orientada a objeto e programação genérica. A linguagem C++ foi desenvolvida, oferecendo recursos que permitem aumentar a produtividade e também as chances de reutilização do software, que é um dos objetivos básicos deste trabalho de PI. 2.5.3.3 Java Deitel e Deitel explicam a linguagem Java, como sendo uma linguagem de programação orientada a objetos desenvolvida na década de 90 por James Gosling e sua equipe na empresa Sun Microsystems, que foi comprada pela Oracle Corporation em 2008. Alguma das características da linguagem Java são: Orientação a objetos. Portabilidade, independente da plataforma. Na comunidade Java diz-se: “escreva uma vez, execute em qualquer lugar”. Recursos em rede e segurança. Apresenta sintaxe similar à linguagem C++. http://www.iso.org/ https://pt.wikipedia.org/wiki/C%2B%2B17 https://pt.wikipedia.org/wiki/2017 Outro detalhe interessante é o fato da Sun Microsystems ter liberado partes do Java como software livre, sob a licença GNU General Public License, o que aumenta a atratividade desta linguagem de programação. Deitel e Deitel apresentam, de forma bastante detalhada, a linguagem Java com seus componentes principais, baseados em métodos e classes, instanciação,reutilização, atributos e variáveis de instância, encapsulamento, herança, interface entre outros. 2.5.4 Modelamento problemas de engenharia A Engenharia está diretamente ligada com as habilidades de conhecimento, criatividade, liderança e planejamento, são habilidades que o engenheiro deve desenvolver para ter sucesso. Além das habilidades o engenheiro utiliza várias ferramentas que auxiliam no desenvolvimento do seu trabalho, uma delas é a modelagem. A modelagem de problemas mostra como os engenheiros chegam a solução de problemas no dia a dia, sendo necessário uma base de conhecimento indispensável para obter sucesso. A modelagem é a representação do produto final antes de sua conclusão. A modelagem segue alguns passos que são: 1. Definir o problema 2. Construir o modelo 3. Solucionar problemas que ocorrerem no modelo 4. Validar o modelo 5. Implantar o modelo. Quando a modelagem é realizada de forma correta para o sistema que está em desenvolvimento, os problemas são solucionados de forma mais clara, por isso a importância de realizar a modelagem. https://pt.wikipedia.org/wiki/Software_livre https://pt.wikipedia.org/wiki/GNU_General_Public_License 2.5.5 Design Thinking – Conceitos Básicos A utilização do conceito de Design Thinking que preconiza a adoção das 5 etapas, a saber: 1- Identificar onde encontrar oportunidades de inovação . Trata de descobrir onde encontrar caminhos para inovar a partir do conhecimento próprio e do ambiente externo. 2- Descobrir a Oportunidade de Inovação Nesta etapa busca-se ampliar a abrangência das ideias identificadas no item anterior e já se inicia a mapear o mercado para saber da atratividade da ideia. 3- Desenvolver a Oportunidade de Inovação (Produto ou Serviço) A partir das etapas anteriores, inicia-se a etapa de desenvolvimento do produto. 4- Testar as ideias — protótipos À medida que o desenvolvimento do produto avançar, é iniciado um processo de PDCA (“Plan, Do, Check, Act”). A ideia é trazer o cliente/usuário do produto desenvolvido para próximo do ambiente de desenvolvimento, de modo a desenvolver um produto “sob medida” e que efetivamente atenda às suas necessidades. 5- Implementar a solução A etapa de implementação do produto começa quando forem executados todos os passos anteriores. 2.5.6 Metodologia Científica 2.5.6.1 Protótipo O protótipo é a melhor maneira de definir um projeto, trazendo rapidez e economia ao definir e testar um projeto. 2.5.6.2 Metodologia O protótipo será desenvolvido com o intuito de disponibilizar um espaço na rede mundial de computadores para que professores e alunos possam interagir colaborativamente na resolução de problemas de engenharia diversos que envolvam recursos computacionais. O protótipo será desenvolvido em plataforma web e disponibilizado no endereço eletrônico http://www.piunivesp.com.br/sistema, onde terão informações sobre o projeto junto à ferramenta que será desenvolvida. 2.5.6.3 Tecnologia Empregada Ao desenvolver uma aplicação em ambiente web, é necessário prover condições favoráveis para a Interação do usuário com o sistema. É preciso pensar em sistemas que reduzam o ruído de comunicação e facilitem a visualização das informações, sem causar desconforto ou dificuldade de entendimento (CYBIS, 2003). A interação entre o usuário e o programam é dada por meio da interface, onde são disponibilizadas mensagens inteligíveis como as sonoras, verbais e icônicas para os usuários e sinais elétricos para os programas. É necessário criar um ambiente propício à recepção da mensagem, seja ela por meio de textos, áudios ou vídeos. Para a interação proposta é preciso entender como as pessoas utilizam a tecnologia da informação, para isso é utilizada a interação humano-computador para observar como o homem interage com um sistema computadorizado, a fim de avaliar o design de sistemas interativos e seus fenômenos, bem como atributos de usabilidade. Sabendo como o usuário utiliza a tecnologia, podemos desenvolver a interface com base em ergonomia e usabilidade, estas dispostas pela ISO 9241 que determina que a extensão em que um produto pode ser usado por usuários específicos para alcançar objetivos específicos de uso. A interface será desenvolvida com as tecnologias que são os pilares do Web Designer Responsivo, HTML5, JavaScript e CSS, disponibilizando ao usuário uma experiência rica independente se o acesso é dado por dispositivo móveis como smartphones e tablets ou por computadores desktops. 2.6 METODOLOGIA DA PESQUISA Este trabalho foi dividido em quatro capítulos. O primeiro capítulo apresenta a introdução do trabalho com sua contextualização e breve objetivo. No capítulo dois tem-se a explicação do problema, os objetivos gerais e específicos do trabalho, fundamentação teórica com uma breve apresentação sobre comunidades open source, ferramentas computacionais e outros. No capítulo três foram discutidos os resultados da pesquisa, as metodologias estudadas e empregadas no protótipo, as ferramentas necessárias para o seu desenvolvimento e a idealização do protótipo em si e seu funcionamento. As considerações finais foram apresentadas no capítulo quatro. 2.6.1 Elaboração das Perguntas Primeiramente, foi definida a realização de um questionário voltado para cursos de engenharia de diversas universidades que potencialmente poderiam se favorecer com uma eventual solução desenvolvida pelo Projeto Integrador. As perguntas do questionário foram definidas de acordo com os objetivos previamente expostos do Projeto Integrador, relacionados à criação de uma comunidade open source. As perguntas foram do tipo abertas, pedindo aos entrevistados para escrever comentários, opiniões ou qualquer outro tipo de texto de resposta livre. Elas tiveram o caráter simples e direto, utilizando a linguagem da maioria dos respondentes. No caso da utilização de algum jargão técnico ou conceito pouco difundido nas perguntas, o mesmo foi explicado ao respondente. Também, cada pergunta feita abordou uma ideia por vez para não gerar confusão na interpretação da mesma. Finalmente, as perguntas foram equilibradas e objetivas para que não gerassem vícios e interpretações tendenciosas. Foram obtidos feedbacks sobre a pesquisa, os quais serão utilizados na revisão do questionário e elaboração da pesquisa final. 2.6.2 Análise da Pesquisa Após a coleta das respostas da pesquisa, os dados obtidos foram organizados e tabulados para análise. Serão realizadas análises qualitativas e quantitativas das informações prestadas. Filtros e tabulações cruzadas serão aplicados para restringir o foco a temas comuns às universidades questionadas. As informações analisadas serão utilizadas no desenvolvimento da plataforma para o cumprimento dos objetivos estabelecidos para esse projeto. 2.6.3 Design Thinking Neste projeto adotou-se a abordagem do Design Thinking. De acordo com a organização global sem fins lucrativos Endeavor.org, o Design Thinking “é uma abordagem que busca a solução de problemas de forma coletiva e colaborativa, em uma perspectiva de empatia máxima com seus stakeholders (interessados): as pessoas são colocadas no centro de desenvolvimento do produto – não somente o consumidor final, mas todos os envolvidos na ideia (trabalhos em equipes multidisciplinares são comuns nesse conceito)”. A abordagem do Design Thinking preconiza a adoção de algumas etapas. Apresenta-se a seguir, a forma como cada etapa relacionou-se com este trabalho. 1- Identificar onde encontrar oportunidades de inovação No caso deste projeto, o grupo adotou uma série de reuniões, até que optou pelo desenvolvimento de uma ferramenta de apoio às universidades para a resolução de problemas diversos de engenharia. Vários foram os pontos fortes identificados nesteprojeto: ● O tema tem grande potencial a ser explorado. ● O tema é aderente à temática central do Projeto Integrador: “Ferramentas Computacionais para Laboratórios de Cursos de engenharia”. ● O projeto fomenta o trabalho colaborativo, característica extremamente importante e desejada por empresas em seus colaboradores. 2- Descobrir a Oportunidade de Inovação A fim de identificar as oportunidades de inovação, o questionário foi elaborado buscando-se entender quais as necessidades dos laboratórios das Universidades de Engenharia. Uma vez definidas as necessidades comuns, realizamos uma sessão de brainstorming para gerar ideias que pudessem abarcar o problema. Chegamos a três possíveis soluções com potencial de sucesso. A partir da ideia vencedora, fizemos um esboço do que será a solução. Assim, as universidades poderão visualizar o conceito do projeto e compartilhar opiniões e soluções antes da fase de criação do protótipo, permitindo um refino do conceito. 3- Desenvolver a Oportunidade de Inovação A partir das respostas obtidas serão levantadas as oportunidades de inovação que aprimorarão a ferramenta desenvolvida. 4- Testar as ideias — protótipos Foi desenvolvido um primeiro conjunto de questões que compõem a revisão inicial do protótipo. 5- Implementar a solução A partir das respostas ao questionário, serão avaliadas as possibilidades de se implementar as soluções desejadas pelas universidades. 2.6.4 Questionário Conforme demonstrado na fundamentação teórica vista previamente, a fim de bem compreender as necessidades dos usuários potenciais para este trabalho, foi desenvolvido um questionário para a realização de uma pesquisa de campo. Desta forma pode-se saber a opinião de alguns possíveis usuários da ferramenta quando em seu estágio final. As perguntas do questionário foram definidas de acordo com os objetivos previamente expostos do Projeto Integrador. As perguntas foram do tipo abertas, pedindo aos entrevistados para escrever comentários, opiniões ou qualquer outro tipo de texto de resposta livre. Elas tiveram o caráter simples e direto, utilizando a linguagem da maioria dos respondentes. No caso da utilização de algum jargão técnico ou conceito pouco difundido nas perguntas, o mesmo foi explicado ao respondente. Também, cada pergunta feita abordou uma ideia por vez para não gerar confusão na interpretação da mesma. Finalmente, as perguntas foram equilibradas e objetivas para que não gerassem vícios e interpretações tendenciosas. Eis o questionário: 1) Vocês possuem laboratórios para desenvolvimento prático de atividades voltadas aos cursos de Engenharia? 2) Como funciona atualmente a parte prática dessas disciplinas? 3) Vocês incluem recursos computacionais no desenvolvimento dessas atividades? 4) Como você acredita ser possível o uso de recursos computacionais juntamente às disciplinas dos cursos de Engenharia? 5) Qual recurso você gostaria de ter, que você considera que te ajudaria a ministrar, administrar ou mesmo auxiliar com as disciplinas de Engenharia de sua instituição? 6) Quais outras necessidades da Universidade você identificaria, que sejam relativas à possibilidade de união entre ferramentas computacionais e as disciplinas de engenharia? 2.6.5 Prototipagem O protótipo a ser desenvolvido será uma plataforma web programada com PHP (Hypertext Preprocessor), uma linguagem simples bastante difundida que pode ser embutida no HTML e que é de conhecimento dos membros do grupo. 2.6.6 Teste do Protótipo O protótipo desenvolvido será testado com o grupo de referência (os cursos de Engenharia das faculdades e universidades pesquisadas) em uma sessão de cocriação em que os envolvidos interagirão com a plataforma e indicarão as suas experiências de uso, podendo propor ajustes na interface das páginas. 2.6.7 Implementação da Solução Uma vez validado o protótipo, far-se-ão os ajustes necessários para disponibilizar a plataforma para os interessados e realizaremos estudos mais aprofundados do mercado para compor um modelo de negócio e definir estratégias de lançamento do serviço. 3. RESULTADOS 3.1 METODOLOGIA DO PROTÓTIPO O protótipo será desenvolvido com o intuito de captar e oferecer códigos para diversos problemas computacionais e em diversas linguagens de programação, onde os usuários poderão incluir seus códigos, ou dúvidas no desenvolvimento desses códigos, para que outros usuários consigam apresentar soluções ou auxiliar na construção de uma solução. O protótipo será desenvolvido em plataforma web e disponibilizado no endereço eletrônico http://piunivesp.com.br/labcod/exibe.php, onde terão informações sobre o projeto e arquivos de exemplo do funcionamento da ferramenta. 3.1.1 Metodologias Estudadas Espiral: após o termino do desenvolvimento, volta-se ao início para que novas funcionalidades possam ser agregadas ao projeto. Processo Unificado: as fases anteriores não são finalizadas com o início da seguinte. Cada fase do processo é sobreposta à outra, permitindo que alterações ocorram durante o projeto. Cascata: fases sequenciais podendo haver uma retroalimentação da fase atual para a fase anterior. Linear: etapas executadas em ordem pré-definida, com processo unidirecional de resolução de problemas. Para o desenvolvimento do website foi utilizada a metodologia espiral, pois o projeto teve poucas etapas a serem desenvolvidas e programadas. No termino do desenvolvimento não foram identificadas novas funcionalidades a serem agregadas ao projeto. Foram realizadas conferências de planejamento para definir o mapa do site, os conteúdos, as funcionalidades e as tecnologias empregadas no website. As reuniões ocorreram por meio do software Skype, aplicativo de chamada por VoIP (Voice over Internet Protocol, ou voz por ip). 3.2 TECNOLOGIA EMPREGADA Ao desenvolver uma aplicação em ambiente web, é necessário prover condições favoráveis para a Interação do usuário com o sistema. É preciso pensar em sistemas que reduzam o ruído de comunicação e facilitem a visualização das informações, sem causar desconforto ou dificuldade de entendimento (CYBIS, 2003). A interação entre o usuário e o programam é dada por meio da interface, onde são disponibilizadas mensagens inteligíveis como as sonoras, verbais e icônicas para os usuários e sinais elétricos para os programas. É necessário criar um ambiente propício à recepção da mensagem, seja ela por meio de textos, áudios ou vídeos. Para a interação proposta é preciso entender como as pessoas utilizam a tecnologia da informação, para isso é utilizada a interação humano-computador para observar como o homem interage com um sistema computadorizado, a fim de avaliar o design de sistemas interativos e seus fenômenos, bem como atributos de usabilidade. Sabendo como o usuário utiliza a tecnologia, podemos desenvolver a interface com base em ergonomia e usabilidade, estas dispostas pela ISO 9241 que determina que a extensão em que um produto pode ser usado por usuários específicos para alcançar objetivos específicos de uso. A interface será desenvolvida com as tecnologias que são os pilares do Web Designer Responsivo, HTML5, JavaScript e CSS, disponibilizando ao usuário uma experiência rica independente se o acesso é dado por dispositivo móveis como smarthphones e tablets ou por computadores desktops. Para que o objetivo proposto seja alcançado, o protótipo será desenvolvido primeiro para dispositivos móveis, utilizando para isso as técnicas do “Mobile Fist” (Castro, 2013). Vivemos uma explosão da tecnologia mobile onde os dispositivos são renovados com uma velocidade e frequência muito alta. O desenvolvimento do layout para dispositivos móveis implica em otimização de ações e dados que gera o descarte de elementos desnecessários e possibilita a geração de conteúdo rico. 3.3FERRAMENTAS O projeto foi dividido em três tópicos: linguagem de programação, banco de dados e hospedagem sendo que cada um dos tópicos é diretamente dependente dos outros, ou seja, a hospedagem precisa suportar a linguagem de programação, que é diretamente relacionada à base de dados. 3.3.1 Linguagem de Programação A linguagem de programação utilizada para o desenvolvimento do conteúdo dinâmico foi o PHP, acrônimo recursivo para PHP: Hypertext Preprocessor (originalmente Personal Home Page). O PHP foi escolhido para o projeto por ser uma linguagem não proprietária e com ampla difusão e utilização. A linguagem PHP, é uma linguagem Server Site, ou seja, ela é processada do lado do servidor e é a responsável pela conexão com a base de dados. Para o protótipo foi utilizada a instrução select para a seleção dos dados das tabelas do Banco de Dados conforme representado na tabela abaixo. Tabela 1 – Instrução SELECT para selecionar dados do banco de dados "SELECT * FROM proj1_organizacao"; Selecionar todos os dados de todas as colunas contidos na tabela proj1_organização. "SELECT * FROM proj1_organizacao WHERE id_organizacao = '$rec_organizacao'"; Selecionar todos os dados de todas as colunas contidos na tabela proj1_organização enquanto o dado da coluna id_organizacao for igual ao valor da variável $rec_organização. "SELECT * FROM proj1_experimento WHERE id_exp = '$id_experiment'"; Selecionar todos os dados de todas as colunas contidos na tabela proj1_experimento enquanto o dado da coluna id_exp for igual ao valor da variável $id_experiment. "SELECT * FROM proj1_solucao WHERE id_solucao = '$rec_programa '"; Selecionar todos os dados de todas as colunas contidos na tabela proj1_solucao enquanto o dado da coluna id_solucao for igual ao valor da variável $rec_programa. Fonte: Produção própria, 2020. 3.3.2 Banco de Dados Com a definição da linguagem de programação, foi possível definir a escolha por uma base de dados que trabalhe com a linguagem escolhida, para isso foi utilizada a base de dados MySQL. Na visão de Elmasri (2011), a utilização de uma abordagem baseada em SGBDs tem como vantagem o controle de redundância, o controle de acesso, a persistência para programas e estrutura de dados, eficiência no processamento de consultas, o oferecimento de backup e recuperação e garantia de integridade. Esses recursos garantem que os padrões sejam seguidos, reduz o tempo de desenvolvimento de aplicações além de proporcionar flexibilidade e disponibilidade gerando economia de escala. Figura 1 – Modelo entidade relacionamento Fonte: Produção própria, 2020. 3.3.3 Hospedagem Já definidas a linguagem de programação e a base de dados foi possível optar por um ambiente de hospedagem com suporte a linguagem PHP e a base de dados MySQL. Além da linguagem de programação PHP, foram utilizadas as linguagens de hipertexto HTML (Hyper Text Markup Language) e de marcação CSS (Cascading Style Sheets) para marcar e organizar as informações. Para a publicação dos arquivos no servidor de hospedagem da internet, foi utilizado o protocolo de transferência de arquivos FTP (File Transfer Protocol) por meio do software FileZilla. O endereço na internet, ou domínio, utilizado para a publicação do site foi contratado junto ao órgão regulador NIC.BR e está disponível em http://piunivesp.com.br/labcod/exibe.php 3.4 ANÁLISE E DISCUSSÕES DOS RESULTADOS A fazer. 4. CONSIDERAÇÕES FINAIS A fazer. REFERÊNCIAS ALMEIDA, E.; MEDEIROS, A.; FRERY,A. How good are MatLab,Octave and Scilab for computational modelling?. Computational and Applied Mathematics, vol. 31, n. 3, p. 523-538, 2012. CAMPOS, AUGUSTO. O que é software livre. Disponível em: http://www.engwhere.com.br/empreiteiros/O-que-e-software-livre.pdf. Acesso em: 12 de maio de 2020. CASTRO, Arthur, O que é esse tal de Mobile First?, 2013. Disponível em: http://www.ideiademarketing.com.br/2013/04/24/o-que-e-esse-tal-de-mobile-first; Acesso em: 15 de Maio de 2020. CYBIS, Walter de Abreu. 2003. Engenharia de usabilidade: uma abordagem ergonômica. Disponível em http://www.labiutil.inf.ufsc.br/hiperdocumento/index.html. Acesso em 15 de Maio de 2020. DEITEL, PAUL E DEITEL, HARVEY; “Java – Como programar”; ISBN: 978-85-430- 0479-2; 10ª edição; Edit. Pearson Education do Brasil; 2017. ELMASRI, RAMEZ; NAVATHE, SHAMKANT B. Sistemas de Banco de Dados. Pearson, 6a edição, 808p., 2011. ENDEAVOR. Design Thinking: o que é e como aplicar. Disponível em: https://endeavor.org.br/tecnologia/design-thinking-inovacao/. Acesso em: 10 de maio 2020. EVANGELISTA, R. O movimento software livre do Brasil. Horizontes Antropológicos. Disponível em: https://journals.openedition.org/horizontes/578. Acesso em: 12 de maio de 2020. FOUNDATION, Free Software. FSF Licensing & Compliance Team. Disponível em: https://www.fsf.org/. Acesso em: 11 de maio de 2020. GNU. GNU Octave. Diposnível em : https://www.gnu.org/software/octave/. Acesso em: 25 abr. 2020. GNU. Licenças - Projeto GNU. Disponível em: https://www.gnu.org/licenses/licenses.html. Acesso em: 10 de maio de 2020. http://www.engwhere.com.br/empreiteiros/O-que-e-software-livre.pdf https://endeavor.org.br/tecnologia/design-thinking-inovacao/ https://journals.openedition.org/horizontes/578 https://www.fsf.org/ https://www.gnu.org/software/octave/ https://www.gnu.org/licenses/licenses.html INITIATIVE, Open Source. History of the OSI. Disponível em: https://opensource.org/history. Acesso em: 11 de maio de 2020. IWASAKI, E. Movimento Open Source. Disponível em: http://mail.dicas- l.com.br/download/movimento_open_source.pdf. Acesso em: 12 de maio de 2020. KURT NØRMARK, Object-oriented Programming in C# for C and Java programmers. 2011. http://people.cs.aau.dk/~normark/oop- csharp/html/notes/theme-index.html. Acesso em 10 maio 2020. LUÍS DE SOUZA DUTRA, RENATO; MARGARIDA ROCKENBACH TAROUCO, LIANE. Recursos Educacionais Abertos (Open Educational Resources). Disponível em: https://seer.ufrgs.br/renote/article/view/14171/8099. Acesso em: 12 maio 2020. MATHWORKS. MATLAB. Diposnível em : https://www.mathworks.com/products/matlab.html. Acesso em: 25 abr. 2020. PETETIM LEAL FERREIRA, JOÃO; ALEXANDRE. Open Source Software. Disponível em: https://student.dei.uc.pt/~ajfer/CP/CP%20Artigo%20- %20Open%20Source%20Software.pdf. Acesso em 12 de maio de 2020. [4] SCILAB. About. Diposnível em : https://www.scilab.org/about. Acesso em: 25 abr. 2020. STROUSTRUP, BJARNE, The Design of C++, em: https://indico.cern.ch/event/67017/attachments/1019984/1451797/CERN_design.pdf. Acesso em: 10 de maio de 2020. YÁNEZ-MARQUES, C. et al. Emerging Computational Tools: Impact on Engineering Education and Computer Science Learning. International Journal of Engineering Education, v. 30, n. 2, p. 1-10, 2014. https://opensource.org/history http://mail.dicas-l.com.br/download/movimento_open_source.pdf http://mail.dicas-l.com.br/download/movimento_open_source.pdf http://people.cs.aau.dk/~normark/oop-csharp/html/notes/theme-index.html http://people.cs.aau.dk/~normark/oop-csharp/html/notes/theme-index.html https://seer.ufrgs.br/renote/article/view/14171/8099 https://www.mathworks.com/products/matlab.html https://student.dei.uc.pt/~ajfer/CP/CP%20Artigo%20-%20Open%20Source%20Software.pdf https://student.dei.uc.pt/~ajfer/CP/CP%20Artigo%20-%20Open%20Source%20Software.pdf https://www.scilab.org/about https://indico.cern.ch/event/67017/attachments/1019984/1451797/CERN_design.pdf
Compartilhar