Come pianificare / gestire prodotti multi-piattaforma (mobili)?

2

Dire che devo sviluppare un'applicazione che funziona su iOS, Android e Windows 8 Mobile. Ora tutte e tre le piattaforme sono tecnicamente in diverse lingue di programma. L'unico "riutilizzo" che posso vedere è quello dei disegni box-and-lines (UML :) e nient'altro.

Quindi, in che modo le aziende / i programmatori gestiscono la variazione dello stesso prodotto su piattaforme diverse, soprattutto dal momento che i linguaggi di implementazione differiscono? È "più semplice" nel mondo desktop IMO, data la pletora di lingue e librerie multipiattaforma per semplificarti la vita. Non così nel mondo mobile.

Inoltre, i principi di gestione della linea di prodotti non sembrano essere applicabili - ciò che è lo stesso e la variante non contano davvero - l'applicazione è la stessa (concettualmente) e l'implementazione è una variante.

Alcune difficoltà che ti vengono in mente:

  • Correzione dei bug : le applicazioni potrebbero essere progettate in modo simile ma l'identificazione e il fissaggio dei bug sarebbero radicalmente diversi. Un bug su iOS potrebbe / potrebbe non essere esistente per quello su Android. Oppure un approccio di correzione di bug su una piattaforma potrebbe non essere lo stesso su un'altra (a meno che non si tratti di un bug semantico come a!=b invece di a==b che richiederebbe lo stesso 'approccio' alla correzione in essenza
  • Miglioramenti : apportare modifiche su una piattaforma sarebbe radicalmente diverso rispetto a un altro
  • Divergenza tra design e codice : il modo in cui il codice è scritto / organizzato, le strutture di classe, ecc., potrebbe essere molto diverso a seconda dei diversi ambienti di implementazione, portando a un ulteriore riutilizzo dei (sopra) modelli UML. / li>

Ovviamente ce ne sono molti altri - è sufficiente mantenere lo sviluppo sincronizzato e assicurarsi che tutte le applicazioni siano alla stessa versione con lo stesso set di funzionalità, ecc. Sembra che lo sforzo sia 3 volte quello di una singola applicazione. Quindi, come si gestisce esattamente questa situazione da incubo?

Alcuni pensieri:

  • Dividere l'applicazione su client / server per minimizzare l'effetto solo sul lato client (non sempre fattibile)
  • Utilizza framework come Unity-3D che potrebbero occuparsi del problema multipiattaforma (principalmente applicabile ai giochi e probabilmente non ad altre applicazioni, ecc.)

Qualche altro modo di gestire una piattaforma? Quali sono alcuni approcci collaudati per gestire / domare gli effetti?

    
posta PhD 23.11.2012 - 06:05
fonte

1 risposta

1

Per cominciare, ci sono un paio di altri modi per eseguire lo stesso codice su tutte e 3 le piattaforme:

  • Tutte e 3 le piattaforme menzionate eseguiranno codice C ++. Ciò rende possibile avere un codice core comune. A seconda del tipo di app che stai sviluppando, potresti aver bisogno solo di adattatori specifici della piattaforma per l'interfaccia con cose come l'interfaccia utente, i servizi di localizzazione, ecc.
  • PhoneGap ti consente di distribuire lo stesso codice HTML / CSS / Javascript su molte piattaforme mobili. Puoi anche utilizzare qualcosa come GWT per generare HTML / CSS / Javascript dal codice Java. (Non l'ho provato, ma mi piacerebbe sapere se qualcuno lo ha fatto!)

Per alcune app, però, si desidera conservare la sensazione del sistema operativo nativo e quindi si finisce necessariamente con un sacco di codice divergente. Se questo è il tuo caso, non puoi davvero sfuggire al fatto che stai scrivendo 3 app, non 1.

Ci sono alcune cose che puoi fare per aiutare a mantenere le cose in pista:

  • Design per tutte le piattaforme: quando stai guardando una nuova funzione, devi sempre tenere a mente un'idea generale di come funzionerà su ciascuna piattaforma. Questo è un settore in cui è fondamentale coinvolgere le persone con esperienza nelle diverse piattaforme.
  • Sviluppo dei lead su un'unica piattaforma: Prima di implementare ogni nuova funzione su una piattaforma, prima di trasferirla agli altri. Otterrai la maggior parte dei nodi fuori dal tuo progetto quando eseguirai la prima implementazione, quindi (fornendoti di documentare le modifiche!) L'implementazione sulle altre piattaforme dovrebbe essere molto più semplice.
  • Non forzare l'uniformità: a volte, le cose devono solo funzionare in modo diverso su piattaforme diverse. Se qualcosa sembra forzare un piolo quadrato in un buco rotondo, è quasi certamente una cattiva idea. Se non ti morde ora, probabilmente lo farò più tardi.
  • Test: ogni volta che viene scoperto un bug, controllalo sulle altre piattaforme.
risposta data 23.11.2012 - 11:06
fonte

Leggi altre domande sui tag