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 dia==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?