What is the best way to discuss/plan/negotiate about code architecture remotely?
Ci sono molte tecniche, a seconda della tua squadra. Consiglio vivamente l'utilizzo del controllo di versione e quindi la standardizzazione su un elaboratore di testi e un editor di diagrammi (fino alla versione), a seconda delle preferenze del team. Ciò garantirà che tutti possano visualizzare e modificare i diagrammi e i documenti prodotti.
Un grosso problema con molti sistemi di controllo delle versioni è che i file binari non possono essere diffusi o uniti. È necessario essere consapevoli di ciò, poiché molto di ciò che viene prodotto dai word processor e gli editor di diagrammi sono file binari. Assicurati di non calpestare il lavoro di altre persone.
How can we discuss it via documentation: write code interfaces/ comment/ modify, track history of the code architecture?
Quando si discute un'architettura, è importante realizzare diversi tipi di viste del sistema. Diverse parti interessate richiedono diverse visualizzazioni del sistema per eseguire analisi, progettazione dettagliata e implementazione. Un esempio di un insieme di visualizzazioni sarebbe il 4 + 1 Architectural View Model che utilizza una serie di vari diagrammi UML per mostrare vari aspetti del sistema. Mi sono concentrato sul modello 4 + 1 e ho scelto i diagrammi UML appropriati per ogni vista nel corso di architettura del software che ho seguito.
Se stai usando vari diagrammi UML, devi identificare quelli che vuoi. Il modello 4 + 1 suggerisce vari diagrammi per ogni vista, ma ci sono 14 tipi di diagrammi in UML 2.2, e i diagrammi che troverai utili varieranno a seconda del progetto.
Per quanto riguarda le interfacce di codice, non essere troppo dettagliato nella fase di architettura. Potrebbero esserci alcune interfacce attese dal client che si conoscono (specialmente se si sta creando un'API per il consumo), e va bene lavorare con quelle. Ma non lasciarti coinvolgere in qualcosa di non chiaramente specificato dalle tue esigenze quando si tratta di dettagli specifici a livello di classe - che possono venire più tardi in fase di progettazione.
Qualsiasi controllo di versione che stai utilizzando può tenere traccia delle modifiche. Come ho detto prima, probabilmente lavorerai con un numero di file binari, quindi dovrai fare molta attenzione e usare le note di modifica dettagliate poiché i file diffetti diventano più difficili.
We are using c# and VS2010
L'architettura e anche le decisioni di progettazione di alto livello dovrebbero essere indipendenti dal linguaggio e dagli strumenti di implementazione che state utilizzando. Non lasciare che gli strumenti che stai utilizzando ti guidino fino a quando non prendi decisioni di progettazione dettagliate, quando scegli quali funzionalità linguistiche ti aiuteranno meglio a realizzare la tua architettura e le decisioni progettuali di alto livello fatte in precedenza.