Sviluppo di una nuova applicazione in un momento limitato [chiuso]

2

Io e il mio collega stiamo lavorando su una nuova applicazione che dovrebbe sostituire al più presto una vecchia VB6 / Access 97 applicazione fatta anni fa. Questa applicazione ha molti problemi, la loro regolazione nello stesso ambiente è semplicemente impossibile. Quello che stiamo cercando di fare è riscrivere tutto il codice in C# e MySql .

Fondamentalmente stiamo partendo da zero, le uniche cose che possiamo tenere dal vecchio progetto sono alcuni dati che abbiamo già migrato da Access a MySQL

La mia domanda è, dato che abbiamo un tempo limitato e stiamo imparando durante la codifica (nessuna esperienza passata in C #) quali sono le cose che dovremmo considerare da implementare e cosa dovremmo evitare per ora?

L'ambito dell'applicazione qui non è molto importante, solo alcune letture e scritte sul database.

Questo è ciò che stiamo già facendo nel nostro piccolo team di 2:

  1. Controllo origine - Git , non avevamo SC prima
  2. Monitoraggio dei bug - FogBugz nel nostro caso, siamo passati da Excel
  3. Soluzione - Ora abbiamo 1 soluzione con 3 progetti all'interno, in VB6 c'erano 5 diversi progetti. 5 differenti .exe senza un vero motivo.

Questo è ciò di cui non siamo veramente sicuri vale la pena implementare il tempo:

  1. Entity Framework - Sembra buono ma c'è una curva di apprendimento, dal momento che stiamo andando con ADO.NET , piuttosto semplice. Pianificazione sull'utilizzo di Dapper quando possibile poiché sembra davvero facile e veloce.
  2. Test unitario - Non abbiamo mai fatto test unitari prima, abbiamo iniziato con NUnit ma poiché la nostra applicazione non è altro che la scrittura e la lettura dei dati dal database non siamo sicuro come implementarlo. Provato moq anche con gli stessi risultati. In questo caso pensiamo che il nostro modo di procedere sia semplicemente avere un dump del database e testarlo.

  3. WPF - WPF sembra fantastico, ma anche qui c'è una curva di apprendimento. Abbiamo iniziato il nostro progetto in WinForms , il nostro obiettivo principale ora è avere un'app funzionale il più presto possibile e non carina. Questo è anche abbastanza importante per il futuro di questa applicazione perché per quello che ho capito che va da WinForms a WPF è un grande passo e serve molto riscrittura.

  4. Rapporti abbiamo più di 100 rapporti da ricreare. Sono tutti realizzati in CRXI utilizzando una tabella come Report1_Print nel database con tutti i dati ripetuti su tutte le righe. Terribile. Non abbiamo ancora provato nulla, ma stiamo pianificando di utilizzare Visual Studio Report designer .

  5. Distribuzione 30-35 utenti lo useranno, dal momento che condividiamo il .exe aggiornato dell'app vb6 sul nostro server e gli utenti lo scaricano con una .bat . Stiamo cercando qualcosa di un po 'più elegante qui ...

Con il tempo in mente, quale dovrebbe essere il nostro obiettivo principale? Non stiamo davvero cercando il modo migliore per fare le cose, stiamo cercando il modo migliore per ottenere il lavoro (un buon lavoro) fatto il prima possibile. L'attenzione qui è sugli utenti che al momento non possono lavorare in modo efficiente.

    
posta SilentRage47 14.03.2016 - 09:37
fonte

2 risposte

2

WPF è davvero una curva di apprendimento ripida se stai prendendo quel salto dai vecchi framework UI; non ultimo perché per essere competente con WPF è necessario imparare i punti più sottili di XAML e del pattern MVVM; ma probabilmente finirai per trovarti con problemi risolti da vari framework MVVM (ad esempio Prism, Caliburn, MVVM Light) e contenitori IOC (ad esempio Unity, Castle Windsor, StructureMap), quindi anche questi verranno aggiunti alla tua lista.

Test unitario come indicato da Lawrence, questo è senza dubbio il miglior punto di partenza, perché i test unitari e lo sviluppo Test-Driven non possono essere fatti realisticamente retroattivamente (cioè una volta che il codice è stato scritto, aggiungere test unitari è di solito troppo difficile e troppo dispendioso in termini di tempo per essere utile).

Indubbiamente ci vorrà del tempo per conoscere la mentalità e la metodologia di test unitari generali; ma il tempo che passi in questo momento imparando ad applicare TDD il modo giusto renderà più facili tutti gli altri aspetti del tuo processo di sviluppo in futuro.

In una nota sui test unitari con MOQ e Entity Framework / Dapper - puoi risparmiare un po 'di dolore alle entità ORM di derisione se usi uno strumento auto-mocking come AutoFixture . link

Entity Framework è generalmente veloce per ottenere qualcosa di base in esecuzione se non lo hai mai usato prima; È disponibile un video "Quick-start" di 10 minuti su MSDN per consentire a EF di creare un nuovo database da zero utilizzando Code First . link

Ovviamente, EF è molto più profondo di così; anche se le sue prestazioni sono un problema, Dapper è ovviamente un'alternativa migliore. (Anche se suggerirei di aspettare per scoprire se le sue prestazioni sono un problema prima di abbandonare EF).

Distribuzione : puoi dare un'occhiata a ClickOnce : puoi farlo funzionare molto rapidamente. link

Infine, vedo che non hai menzionato l'integrazione continua ovunque: hai qualcosa da configurare? In caso contrario, ti consiglio vivamente di ottenere un server di build automatico ASAP che possa reagire a ogni nuovo commit e che esegua i test di unità ogni volta. (Ad esempio, TeamCity o Jenkins: entrambi sono relativamente rapidi e facili da utilizzare)

    
risposta data 14.03.2016 - 11:26
fonte
2

Con il contesto che hai descritto, ci sono molti suggerimenti che possono essere fatti. Tuttavia, ne chiedi solo uno:

With time in mind, what should be our main focus?

Con le 5 cose che non sei sicuro vale la pena e devi scegliere solo uno per iniziare, ti consiglio di iniziare con unità test . Accoppiato con il corretto controllo della fonte, farlo correttamente dovrebbe darti la sicurezza di provare le altre cose. Pensalo come una sorta di rete di sicurezza. È doppiamente importante se non conosci la lingua di destinazione: troppo facile da rompere qualcosa accidentalmente.

Dai un'occhiata a Sviluppo basato sui test se non lo conosci già.

    
risposta data 14.03.2016 - 10:21
fonte

Leggi altre domande sui tag