Você está na página 1de 31

UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO

Felipe Augusto Vieira Gonçalves - RA 1800791

Raphael Barros Miranda - RA 1800299

Thiago de Vasconcelos Ananias - RA 1805964

RESPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE

Apresentação do Projeto Integrador:

<Link Youtube>

Guaratinguetá - SP
2020
UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO

RESPOSITÓRIO OPEN SOURCE DE CÓDIGOS FONTE

Relatório Técnico - Científico 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:

Guaratinguetá - SP
2020

1
GONÇALVES Felipe Augusto Vieira; MIRANDA, Raphael Barros; ANANIAS, Thiago
de Vasconcelos.
Projeto de um repositório open source de códigos fonte para resolução de
problemas em engenharia. 00f. Relatório Técnico-Científico (Engenharia da
Computação) – Universidade Virtual do Estado de São Paulo. Tutor:. Polo
Guaratinguetá, 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 chaves: Repositório, Código fonte, Laboratório, Engenharia, PHP, MySQL,


Pesquisa de opinião.

2
GONÇALVES Felipe Augusto Vieira; MIRANDA, Raphael Barros; ANANIAS, Thiago
de Vasconcelos.
Projeto de um repositório open source de códigos fonte para resolução de
problemas em engenharia. 00f. Relatório Técnico-Científico (Engenharia da
Computação) – Universidade Virtual do Estado de São Paulo. Tutor:. Polo
Guaratinguetá, 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 luto 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.

3
LISTA DE ILUSTRAÇÕES

ILUSTRAÇÃO 1 - Cinco Estágios do Design Thinking ............................................. 17

ILUSTRAÇÃO 2 – Processos do Design Thinking ................................................... 18

TABELA 1 – Instrução SELECT para selecionar dados do banco de dados............ 26

ILUSTRAÇÃO 3 - Modelo entidade relacionamento ................................................. 27

4
Sumário

1. INTRODUÇÃO ............................................................................................................... 7

2. DESENVOLVIMENTO .................................................................................................... 9

2.1 Justificativa e Problema .................................................................................................. 9

2.2 Objetivos Da Pesquisa .................................................................................................... 9

2.3 Objetivo Geral ................................................................................................................. 9

2.4 Objetivos Específicos ...................................................................................................... 9

2.5 - JUSTIFICATIVA e FUNDAMENTAÇÃO TEÓRICA .................................................... 11

2.5.1 - Comunidades Open-Source..................................................................................... 11

2.5.2 - Ferramentas Comptacionais .................................................................................... 13

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

3. MÉTODOS EMPREGADOS ......................................................................................... 18

1. Empathize: ............................................................................................................. 19

2. Define (Definir): ...................................................................................................... 19

3. Ideate (Idealizar): ................................................................................................... 19

4. Prototype (Protótipo) .............................................................................................. 19

5. Test (Teste): ........................................................................................................... 20

3.1 - Metodoligia Científica .................................................................................................. 20

3.1.2 - Protótipo................................................................................................................... 20

3.1.3 - Metodologia ............................................................................................................. 20

3.1.4 - Tecnologia Empregada ............................................................................................ 20

3.2 - Metodologia Da Pesquisa ........................................................................................... 21


5
3.2.1 - Elaboração das Perguntas ....................................................................................... 21

3.2.2 - Análise da Pesquisa................................................................................................. 22

3.2.3 - Design Thinking ....................................................................................................... 22

3.2.4 - Questionário............................................................................................................. 23

3.3 - Prototipagem............................................................................................................... 24

3.3.1 - Teste do Protótipo .................................................................................................... 24

3.4 - Implementação da Solução......................................................................................... 24

4. Resultados ...................................................................................................................... 25

4.1 - Metodologia Do Protótipo............................................................................................ 25

4.1.1 Metodologias Estudadas ............................................................................................ 25

4.2 - Tecnologia Empregada ............................................................................................... 25

4.3 - Ferramentas................................................................................................................ 26

4.3.1 - Linguagem de Programação .................................................................................... 26

4.3.2 - Banco de Dados ...................................................................................................... 27

4.3.3 Hospedagem .............................................................................................................. 28

5. Referências Bibliográficas: ............................................................................................. 29

6
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)
7
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.

8
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

9
direcionado para a revisão bibliográfica sobre o tema, com imersão em literaturas de Open
Source lnitiative, 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 do
problema (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.

10
2.5 - JUSTIFICATIVA e 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
11
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.

12
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 Repositor Open Source De Códigos Fonte
para resolução de Problemas em Engenharia.

2.5.2 - Ferramentas Comptacionais

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 matriz 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,

13
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
uma linguagem 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:
httós://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
14
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:
httos://www.scilab.orq/.
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 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 Nermark (2011) a Programação Orientada a Objetos (P00)
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.

15
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, 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 apresenta, 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 Pl.

2.5.3.3 Java

3. Deitel explica 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.

16
- 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++.

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.
Deitei e Deitei 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.

17
3. MÉTODOS EMPREGADOS

O método de pesquisa adotado para este estudo é o indutivo, utilizando um estudo


de caso como método de procedimento. Os dados foram coletados de forma direta e indireta
através de entrevista documental e pesquisa bibliográfica. (VERGARA, 2006). As respostas
a estes questionários foram analisadas e classificadas segundo a contribuição, o
entendimento e compreensão dos problemas.
Para desenvolvimento do projeto, a metodologia pesquisada e aplicada foi o Design
Thinking (DT). Design Thinking provoca a busca de ideias, produzindo protótipos para
suprir tais necessidades, que eventualmente convergem para soluções inovadoras.
Segundo Vianna (2012), o Design Thinking entende que é a partir do estímulo das
necessidades dos usuários que encontramos soluções inovadoras. DT é uma poderosa
ferramenta que engloba todo o processo de inovação, desde a geração de ideias à
aplicação na prática. Possui uma visão otimista, construtiva e experimental, focada na
solução de necessidades dos consumidores com relação a produtos ou serviços e à sua
arquitetura.
Design Thinking colabora em como é abordado o problema, por meio do
levantamento das questões-chave que guiarão o processo de criação de oportunidades
desejáveis, tecnicamente possíveis e mercadologicamente viáveis, de forma que o
desenvolvedor cria hipóteses e utiliza do conhecimento para desenvolver soluções
eficazes.
Segundo Stanford’s Hasso-Plattner Institute of Design, o método Design thinking é
um processo de cinco estágios conforme Ilustração XX, estes estágios não são sempre
sequenciais.
ILUSTRAÇÃO 1- CINCO ESTÁGIOS DO DESIGN THINKING

Fonte: internet

18
ILUSTRAÇÃO 2 - PROCESSO DO DESIGN THINKING

Fonte: Internet

1. Empathize:

A primeira etapa do processo de Design Thinking exige obter uma


compreensão empática do problema que você está tentando resolver, normalmente por
meio de alguma forma de pesquisa com usuários. A empatia é crucial porque permite que
você deixe de lado suas próprias suposições sobre o mundo, a fim de obter informações
sobre os usuários e suas necessidades. Esta etapa envolve entrar no reino dos usuários
e, na medida do possível, "transformá-los", de modo a começar a trabalhar no design
personalizado de uma solução.

2. Define (Definir):

Durante o estágio Definir do Design Thinking, são reunidas as informações


criadas durante o estágio Empathize. Analisa-se as observações e as sintetiza para
definir os principais problemas que a equipe identificou até o momento afim de garantir que
o que se está abordando é relevante.

3. Ideate (Idealizar):

O terceiro estágio do processo o encontra pronto para começar a gerar


ideias. Com o conhecimento reunido nas duas primeiras fases, a equipe começa a
“pensar fora da caixa” para identificar novas soluções para a declaração de problema que
criou e começar a procurar maneiras alternativas de visualizar o problema.

4. Prototype (Protótipo)
Na fase de protótipo do Design Thinking, sua equipe de projeto produz
várias versões do produto ou recursos específicos e estruturais, para que você possa
investigar as soluções de problemas geradas no estágio anterior.

19
5. Test (Teste):

Na fase de teste do Design Thinking, testa-se rigorosamente do produto ou


serviço concluído usando as melhores soluções identificadas durante a fase de
prototipagem. Este é o estágio final; no entanto, em um processo iterativo, os resultados
gerados durante a fase de teste são o que se costuma usar para redefinir um ou mais
problemas.

3.1 - Metodoligia Científica

3.1.2 - Protótipo

O protótipo é a melhor maneira de definir um projeto, trazendo rapidez e economia


ao definir e testar um projeto.

3.1.3 - 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.brisistema, onde terão
informações sobre o projeto junto à ferramenta que será desenvolvida.

3.1.4 - 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.

20
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.

3.2 - 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.

3.2.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.

21
3.2.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.

3.2.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 neste projeto:

• 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.

22
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.

3.2.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?

23
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?

3.3 - 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.

3.3.1 - 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.

3.4 - 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.

24
25
4. RESULTADOS

4.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.billabcod/exibe.php, onde terão informações sobre o projeto e arquivos
de exemplo do funcionamento da ferramenta.

4.1.1 Metodologias Estudadas

• Espiral: após o termino do desenvolvimento, volta-se ao inicio para que novas


funcionalidades possam ser agregadas ao projeto.
• Processo Unificado: as fases anteriores não são finalizadas com o inicio 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 VolP (Voice over Internet
Protocol, ou voz por ip).

4.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).

25
26

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.

4.3 - Ferramentas

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.

4.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.

26
27

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

Fonte: Produção própria, 2020.

4.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.

27
28
Ilustração 3 — Modelo entidade relacionamento

Fonte: Produção própria, 2020.

4.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

28
29

5. Referências Bibliográficas:

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.briempreiteiros/0-aue-e-software-livre.pdf. Acesso em: 12 de
setembro de 2020.

CASTRO, Arthur, O que é esse tal de Mobile First?, 2013. Disponível em:
http://www.ideiademarketing.com.br/2013/04/24/o-gue-e-esse-tal-de-mobile-first; Acesso
em: 15 de setembro de 2020.

CYBIS, Walter de Abreu. 2003. Engenharia de usabilidade: uma abordagem ergonômica.


Disponível em http://www.labiutilintufsc.br/hiperdocumento/index.html. Acesso em 15 de
setembro 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 setembro
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 setembro
de 2020.

FOUNDATION, Free Software. FSF Licensing & Compliance Team. Disponível em:
httos://www.fsf.org/. Acesso em: 11 de setembro de 2020.

GNU. GNU Octave. Diposnível em : https://www.gnu.org/software/octave/. Acesso em: 25


setembro 2020.
29
30

GNU. Licenças - Projeto GNU. Disponível em: https://www.gnu.org/licenses/licenses.html.


Acesso em: 10 de setembro de 2020.

INITIATIVE, Open Source. History of the OSI. Disponível em: https://opensource.ora/historv.


Acesso em: 11 de setembro de 2020.

IWASAKI, E. Movimento Open Source. Disponível em: http://mail.dicas-


Lcom.bridownload/movimento men source.pctf. Acesso em: 12 de setembro de 2020.

KURT NORMARK, Object-oriented Programming in C# for C and Java programmers. 2011.


http://peoble.cs.aau.dk/—normark/oop-csharp/html/notes/theme-index.html. Acesso em 10
setembro 2020.

LUIS DE SOUZA DUTRA, RENATO; MARGARIDA ROCKENBACH TAROUCO, LIANE.


Recursos Educacionais Abertos (Open Educational Resources). Disponível em:
https://seenufrgs.bdrenote/article/view/14171/8099. Acesso em: 12 setembro 2020.

MATHWORKS. MATLAB. Diposnível em https://www.mathworks.corniproducts/matlab.html.


Acesso em: 30 agosto. 2020.

PETETIM LEAL FERREIRA, JOÃO; ALEXANDRE. Open Source Software. Disponível em:
https://student.dei.uc.pt/—ajfer/CP/CP%20Artigo%20-
%200ben%20Source%20Software.bdf. Acesso em 12 de setembro de 2020.

SCILAB. About. Diposnível em : httbs://www.scilab.ora/about. Acesso em: 25 setembro de


2020.

STROUSTRUP, BJARNE, The Design of C++, em:


https://indico.cem.ch/event/67017/attachments/1019984/1451797/CERN design.pdf. Acesso
em: 10 de setembro 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.

30

Você também pode gostar