Jump to content
MacgyverPT

Novo projecto, o que fazer?

Recommended Posts

MacgyverPT

Boas pessoal.

Não sei se este é o local mais apropriado, mas se não for peço a algum moderador que mova o topic, sff.

É assim, o clube de futebol da minha terra mudou de direcção (não, não estou em alvalade :P ) e como tal lançou-me o desafio de modernizar toda a estrutura interna desde socios, atletas, fornecedores, etc etc. A ideia era criar um software para a gestão de todo o clube, software esse que irá ser criado "módulo" a "módulo" (primiro os sócios, depois fornecedores, e por aí fora). Andei a matutar no assunto e eis que surgiram estas dúvidas iniciais:

  1. Nos dias de hoje, é preferível uma aplicação web ou uma aplicação "instalável" no computador?
  2. Tendo em conta com o barulho de fundo da questão da protecção de dados, até que ponto será "viável" a aplicação web?
  3. Linguagens de programação: Embora não seja nenhum pró, os trabalhos que fiz foram meramente académicos, pelo que aqui neste ponto tenho algumas reticências. Se for para via web, será o incontornável PHP com alguma framework por trás (possivelmente laravel), se for algo para instalar no pc, qual a mais indicada, melhor, qual a mais rápida e directa, C# ou Java?
    1. Ainda na aplicação web, valerá a pena ter um Raspberry Pi na sede do clube para alojar todo este trabalho?

Peço desculpa por tanta questão, mas acho que elas estão interligadas entre si. Tenho apontado no caderno de rascunhos quais as funcionalidades que quero, quais os "módulos" a implementar, mas para avançar preciso primeiro de esclarecer estas dúvidas.

 

Cumprimentos.
MacgyverPT

Share this post


Link to post
Share on other sites
nunopicado
4 horas atrás, MacgyverPT disse:

Nos dias de hoje, é preferível uma aplicação web ou uma aplicação "instalável" no computador?

Ainda que pessoalmente não goste de programar para a web, são inegáveis as vantagens. As desvantagens também.
No fundo, será uma questão de ponderar se as vantagens (poder usar em qualquer PC sem precisar instalar, por exemplo) são realmente vantagens na prática (vão precisar disso?).

 

4 horas atrás, MacgyverPT disse:

Tendo em conta com o barulho de fundo da questão da protecção de dados, até que ponto será "viável" a aplicação web?

Não creio que seja muito relevante... A grande diferença a nível de protecção de dados entre software web ou desktop é que, em caso de não existirem protecções, um software web está mais vulnerável. Se vais fazer o software de raíz, incluis todas as protecções que possas, e resolve-se esse problema.
Faz a escolha da plataforma pelas necessidades reais, o resto irá encaixar-se na altura do desenvolvimento.

 

4 horas atrás, MacgyverPT disse:

Linguagens de programação: Embora não seja nenhum pró, os trabalhos que fiz foram meramente académicos, pelo que aqui neste ponto tenho algumas reticências. Se for para via web, será o incontornável PHP com alguma framework por trás (possivelmente laravel), se for algo para instalar no pc, qual a mais indicada, melhor, qual a mais rápida e directa, C# ou Java?

Eu diria que a melhor linguagem para fazeres o projecto é, em última análise, aquela com que te sentires mais à vontade. Não adianta apostares numa linguagem assim ou assado se depois tiveres dificuldade em usá-la.
Dito isto, a que eu pessoalmente acho melhor para desenvolver rapidamente um produto para desktop é o Delphi. Mas voltando ao primeiro ponto, se não a souberes usar, irás com certeza demorar mais do que numa que te sintas mais à vontade, pelo que a questão volta ao mesmo: Qual te sentes melhor a usar?

 

4 horas atrás, MacgyverPT disse:

Ainda na aplicação web, valerá a pena ter um Raspberry Pi na sede do clube para alojar todo este trabalho?

Independentemente de ser web ou desktop, um servidor dedicado é sempre uma ideia boa, quanto a mim. Ser um Raspberry Pi tem a vantagem do custo, consumo energético, espaço, etc. Logo que tomes em conta as devidas necessidades, como usar um robusto sistema de backups, por exemplo, acho que vale a pena apostares nisso.
A excepção a isto é se só for preciso aceder ao software a partir de um único posto. Aí, o servidor dedicado é overkill. Mas se precisares de 2 ou mais postos a aceder, acho que é uma boa opção.

 

Para esse tipo de projecto, há outras coisas que precisas ter em conta:

  • Que método de persistência de dados usar (por exemplo, uma DB SQL, e se sim, qual). Pessoalmente recomendava-te SQLite para mono-posto, ou MariaDB/MySQL para multi-posto.
  • Questões legais: Se o teu software tiver de fazer alguma operação que a lei coloque alguma restrição/regulação, tens de ter atenção a isso. Por exemplo, se for para fazer facturas, recibos, etc., terás de certificar o programa junto da Autoridade Tributária, e para isso há uma série de pressupostos que ele terá de cumprir.
  • Design: Visto que o programa está previsto ser expansível, é preciso que desde o inicio tenhas a noção que o design inicial irá influenciar todo o futuro. Constrói a base de forma a que a sua expansão seja simples e não te limite no futuro. Desde a base inicial do programa à estrutura da base de dados, deves pensar em escalabilidade logo desde o inicio.
    Apesar de haver coisas que só terás de implementar no futuro (ou especialmente por isso), há certos aspectos que deves implementar já, mesmo que no imediato pudesses passar sem eles.
  • Análise de projecto: Tenta cercar-te, durante o desenvolvimento, das pessoas que irão trabalhar com o software. Analisa as necessidades dos utilizadores, ouve sugestões, e não deixes de implementar o que te parecer viável, sem no entanto cederes a todos os caprichos (utilizadores são uma bela praga no que toca à construção do software - por vezes querem tudo, sem no entanto saberem o que querem :cheesygrin:)

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
MacgyverPT

@nunopicado obrigado desde já pelas respostas. Vou responder às tuas questões:

 

Citação

Ainda que pessoalmente não goste de programar para a web, são inegáveis as vantagens. As desvantagens também.
No fundo, será uma questão de ponderar se as vantagens (poder usar em qualquer PC sem precisar instalar, por exemplo) são realmente vantagens na prática (vão precisar disso?).

As vantagens são, por exemplo, aceder a toda a plataforma através de um qualquer terminal desde que conectado à internet. 

 

Citação

Eu diria que a melhor linguagem para fazeres o projecto é, em última análise, aquela com que te sentires mais à vontade. Não adianta apostares numa linguagem assim ou assado se depois tiveres dificuldade em usá-la.
Dito isto, a que eu pessoalmente acho melhor para desenvolver rapidamente um produto para desktop é o Delphi. Mas voltando ao primeiro ponto, se não a souberes usar, irás com certeza demorar mais do que numa que te sintas mais à vontade, pelo que a questão volta ao mesmo: Qual te sentes melhor a usar?

Como disse, o que fiz até agora foi só meramente académico, e em termos académicos é dado uma série de linguagens de programação sem nunca se especificar uma em concreto. No politécnico onde estudo o foco está mais em Java, diria talvez que me sinta um pouco mais confortável nesta do que em qualquer outra. No entanto para este projecto o desafio também está inerente e ela a fasquia para aprender um pouco mais. Sabia antemão que alguém me iria perguntar qual a linguagem que me sentia mais a vontade, no entanto deixei aquelas duas sugestões caso se avance para uma versão desktop em vez de uma versão web.

 

Citação

Independentemente de ser web ou desktop, um servidor dedicado é sempre uma ideia boa, quanto a mim. Ser um Raspberry Pi tem a vantagem do custo, consumo energético, espaço, etc. Logo que tomes em conta as devidas necessidades, como usar um robusto sistema de backups, por exemplo, acho que vale a pena apostares nisso.
A excepção a isto é se só for preciso aceder ao software a partir de um único posto. Aí, o servidor dedicado é overkill. Mas se precisares de 2 ou mais postos a aceder, acho que é uma boa opção.

Por exemplo, vamos supor que é desenvolvida uma app para smartphone/tablet de consulta de dados, se o mesmo raspberry pi tiver alojado toda a estrutura, achas que o mesmo dá conta do recado? E/ou será boa política ter tudo neste dispositivo?

 

Citação

Para esse tipo de projecto, há outras coisas que precisas ter em conta:

  • Que método de persistência de dados usar (por exemplo, uma DB SQL, e se sim, qual). Pessoalmente recomendava-te SQLite para mono-posto, ou MariaDB/MySQL para multi-posto.
  • Questões legais: Se o teu software tiver de fazer alguma operação que a lei coloque alguma restrição/regulação, tens de ter atenção a isso. Por exemplo, se for para fazer facturas, recibos, etc., terás de certificar o programa junto da Autoridade Tributária, e para isso há uma série de pressupostos que ele terá de cumprir.
  • Design: Visto que o programa está previsto ser expansível, é preciso que desde o inicio tenhas a noção que o design inicial irá influenciar todo o futuro. Constrói a base de forma a que a sua expansão seja simples e não te limite no futuro. Desde a base inicial do programa à estrutura da base de dados, deves pensar em escalabilidade logo desde o inicio.
    Apesar de haver coisas que só terás de implementar no futuro (ou especialmente por isso), há certos aspectos que deves implementar já, mesmo que no imediato pudesses passar sem eles.
  • Análise de projecto: Tenta cercar-te, durante o desenvolvimento, das pessoas que irão trabalhar com o software. Analisa as necessidades dos utilizadores, ouve sugestões, e não deixes de implementar o que te parecer viável, sem no entanto cederes a todos os caprichos (utilizadores são uma bela praga no que toca à construção do software - por vezes querem tudo, sem no entanto saberem o que querem :cheesygrin:)

Em termos de base de dados tinha pensado em usar MariaDB/MySQL, uma vez que já usei e sinto-me mais confortável. Sobre as questões legais, não irá haver emissão de facturas/recibos via este software, isto porque quando falei em fornecedores é ter um espaço reservado apenas a dados de consulta (tipo nome da empresa, morada, NIF, etc etc) até porque estes fornecedores, 80% deles serão patrocinadores do clube e/ou das secções que o clube abrange.

Sobre os utilizadores, vão existir 2 grupos: os que podem inserir dados (administrativos, administrador, etc) e os que podem consultar os dados (atletas e os encarregados de educação dos atletas das escolinhas), pelo que deve haver cabeças a rolar pelo chão para atender a todos :P 

 

Share this post


Link to post
Share on other sites
nunopicado

Eu referia-me a analisares se essas vantagens serão mesmo vantagens na prática. Se fizeres tudo com capacidade de ser acedido por qualquer PC, mas depois só usarem o programa num PC na secretaria, não vale a pena. :)

Da linguagem, mantenho... :) É a que gostares mais! ;)

O Pi creio que se safa bem com isso para esse caso concreto. Não creio que vás ter uma grande concorrência de pedidos de dados (afinal, disseste que não estás em Alvalade :cheesygrin:)

Quanto aos grupos, acho 2 pouco. Prepara os dois grupos, mas estruturados de forma que, se for preciso, possas adicionar mais. É mais future-proof.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
MacgyverPT

Sim os grupos serão em termos genéricos, claro se esmiuçar a coisa serão mais "2 ou 3"...

Share this post


Link to post
Share on other sites
iron

As minhas opiniões vão ser com base em algo que gosto muito de fazer e que acredito, que cada vez mais as implementações fujam para essa área.

23 horas atrás, MacgyverPT disse:

Tendo em conta com o barulho de fundo da questão da protecção de dados, até que ponto será "viável" a aplicação web?

Depende da implementação que fizeres, mas sim, tens de ter sempre em conta a proteção de dados.
Se construires uma API, a API é que tem de ter o cuidado de fornecer os dados, não pondo em causa a lei da proteção de dados.

 

23 horas atrás, MacgyverPT disse:

Linguagens de programação: Embora não seja nenhum pró, os trabalhos que fiz foram meramente académicos, pelo que aqui neste ponto tenho algumas reticências. Se for para via web, será o incontornável PHP com alguma framework por trás (possivelmente laravel), se for algo para instalar no pc, qual a mais indicada, melhor, qual a mais rápida e directa, C# ou Java?

Uma que estajas a vontade, ou se tiveres tempo, podes sempre aprender uma/s nova/s.
Pessoalmente, gosto muito de utilizar SpringBoot para o backend. Para o frontend, tem n tecnologias que podes utilizar (Angular, React, ...)

Na minha opinião, prefiro criar uma API para ser consumida por um cliente WEB, do que criar uma aplicação específica para o pc. Assim não tens problemas caso a empresa mude de sistema operativo (Windows para OS), pois o acesso é sempre feito pelo browser.

O facto de ser uma WebAPP, também siginifica que tens mais liberdade de configurares o GUI e tornares mais "user friendly" do que numa aplicação para pc.

 

23 horas atrás, MacgyverPT disse:

Ainda na aplicação web, valerá a pena ter um Raspberry Pi na sede do clube para alojar todo este trabalho?

Pessoalmente preferia alugar um servidor dedicado e seguro. Assim tens a garantia que dificilmente irá a baixo, e caso precises de mais recursos, não te preocupas em ter de comprar um Raspberry Pi, um pc,...

Hoje em dias, verdade seja dita, os servidores já não são tão caros como eram antigamente.

 

Em termos de BD, uma free serve (MySQL, Postgres, MariaDB)

Edited by iron

Cumprimentos,
iron

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.