Come visualizzare il design di un programma per comunicarlo agli altri

3

Sto (ri) progettando alcuni pacchetti per R , e attualmente sto elaborando le funzioni necessarie, gli oggetti, sia interno che per l'interfaccia con l'utente. Ho documentato le singole funzioni e oggetti.

Quindi ho la descrizione di tutte le piccole parti. Ora ho bisogno di dare una panoramica di come le parti si adattano insieme. Lo schema del motore, per così dire.

Ho iniziato a creare alcuni grafici simili a diagrammi di flusso in Visio, ma quella divenne rapidamente una raccolta maldestra e inutile di scatole, arrrows e what-not. Quindi da qui la domanda:

  • Esiste un software specifico che puoi utilizzare per valutare il design del tuo programma
  • Se è così, ti invitiamo a condividere alcuni suggerimenti su come farlo in modo più efficiente
  • In caso contrario, in che modo altri progettisti creano lo schema dei loro programmi e lo comunicano agli altri?

Modifica: NON sto chiedendo come spiegare processi complessi a qualcuno, né a chiedere come illustrare la logica di programmazione. Ti sto chiedendo come comunicare il design di un programma / pacchetto, cioè:

  • gli oggetti (con caratteristiche chiave e rappresentazione se possibile)
  • le relative funzioni (con argomenti e funzioni se possibile)
  • l'interrelazione tra le funzioni dell'interfaccia e le funzioni interne (sto parlando di un pacchetto di estensioni per un linguaggio di scripting, tienilo a mente)

Quindi qualcosa del genere:

Mameglio.Questaè(partedelle)interrelazionitralefunzionidelvecchiopacchettocheorastoriprogettandoperovvimotivi:-)

PS:hocreatoilgraficodasolo,utilizzandoglistrumentidiestrazionedelcodicesull'origineealimentandolamatricediinterrelazioneper yEd Editor grafico .

    
posta Joris Meys 15.10.2012 - 16:06
fonte

6 risposte

4

Is there specific software you can use for vizualizing the design of your program

Dove lavoro, usiamo Visio, principalmente.

If so, care to share some tips on how to do this most efficiently

Con diagrammi di flusso, per il flusso del programma. Per l'organizzazione del programma, simile a UML (probabilmente non strettamente conforme agli standard UML, ma nessuno è troppo preoccupato per questo;)) vengono utilizzati i diagrammi.

Per diagrammi complessi come il tuo, usare uno strumento per generare un diagramma di sistema completo come questo potrebbe essere un buon punto di partenza, solo per avere un'idea di come siano le cose, ma suggerirei di suddividerlo in molti diagrammi più piccoli, forse uno per ogni sottosistema, che sembra abbiano circondato da una scatola. I collegamenti ad altri sottosistemi non devono puntare ai moduli all'interno di questi sistemi, ma solo al nome del sottosistema. In realtà, penso che in Visio sia anche possibile creare collegamenti tra le pagine del diagramma, quindi se qualcuno fa clic sul link che va da un modulo complesso a un altro, verrà indirizzato direttamente a quel modulo. Potrebbe anche aiutare a creare un diagramma ad un livello più alto - qualcosa che mostri le interazioni tra ciascun sottosistema e ignora ciascun modulo di livello inferiore.

Seguirò una strategia simile di divisione e conquista per i diagrammi del diagramma di flusso di questo sistema.

Cercare di rappresentare un sistema così grande in un singolo diagramma è difficile e se il risultato è troppo complicato, potrebbe essere inutile. Ho ho visto che è stato fatto, ma è difficile farlo bene, e hanno dovuto stamparlo su speciali cartoncini per renderlo leggibile. Era affisso lungo 4 pareti di corridoi che si affacciavano sul corridoio e diventava fastidioso quando un gruppo di analisti si riuniva attorno a esso discutendo possibili cambiamenti e impatti. Alla fine del progetto è stato coperto con la penna, la matita e il markup dell'evidenziatore ...

    
risposta data 15.10.2012 - 16:56
fonte
2

UML è un'opzione molto strong per rappresentare graficamente i programmi. Grady Booch e un team di altri hanno scritto un ottimo libro chiamato Analisi orientata agli oggetti e progettazione con applicazioni che introduce OOAD piuttosto rigorosamente trascorrendo circa 150 pagine discutendo concetti prima di immergersi nella notazione. Mentre in alcuni casi i diagrammi sono facili da comprendere senza molto addestramento, Booch è un maestro nel definire idee come la complessità, distinguendo tra modello di oggetto e modello di classe e classificazione. Il consiglio sulla complessità include la discussione di diversi strumenti come la decomposizione algoritmica, la decomposizione orientata agli oggetti, l'astrazione, la gerarchia e l'incapsulamento.

È importante ricordare che potrebbe essere necessario esaminare il software da diverse prospettive in modo da poter acquisire la struttura statica e il comportamento dinamico di oggetti e classi. Un diagramma di classe catturerebbe la struttura statica di una o più classi mentre un diagramma di sequenza catturerebbe il comportamento dinamico di due o più oggetti mentre interagiscono. Booch suddivide anche le categorie in diagrammi strutturali, comportamentali e di interazione.

Diagrammi UML

  • Strutturale
    • Package
    • Class
    • Componente
    • distribuzione
    • Oggetto
    • Struttura composita
  • comportamentale
    • Usa caso
    • attività
    • Macchina di stato
  • Interazione
    • Sequenza
    • Comunicazione
    • Panoramica dell'interazione
    • Timing

Per chiunque possa nominare solo tre o quattro diagrammi UML, questa dovrebbe essere una sveglia. Se trascorri un giorno o poche ore al giorno per una settimana, potresti non conoscere l'UML molto profondamente. Spesso, l'UML viene insegnato come un corso di quattro giorni e talvolta come tre o quattro giorni per l'analisi orientata agli oggetti seguita da tre o quattro giorni di progettazione orientata agli oggetti. I corsi universitari possono insegnare come corsi di uno o più corsi semestrali, o piegarli in una sequenza che seguiva il ciclo di vita del software cascata (requisiti e analisi (con casi d'uso), architettura software e / o design (con i diagrammi rimanenti) programmazione orientata agli oggetti (con Java, C ++, ecc.) e test (che rivisita casi d'uso o diagrammi di stato)).

Martin Fowler ha un libro che mi piace chiamato UML Distilled dove essenzialmente espone un pattern per ogni diagramma scrivi, elencando il nome, una breve descrizione, esempi del diagramma e cosa significano gli archi, i nodi e i decoratori e, soprattutto, quando usarli. Nel suo materiale introduttivo descrive UML come avente tre applicazioni: fare un progetto software, come un linguaggio di programmazione di livello superiore che genera codice (o talvolta ingegneri inversi dal codice, o trasmuta avanti e indietro nell'ingegneria del software round-trip), o il mio preferito, come uno schizzo che aiuta a comunicare tra gli sviluppatori alcuni aspetti localizzati e specifici del design.

Gli odiatori di UML hanno ragione su molte cose. Ad esempio, su quanto overhead può essere coinvolto nell'uso di UML per documentare un progetto (in modalità modello o linguaggio di programmazione). A volte dicono, un pazzo con uno strumento è ancora un pazzo. È una cattiva idea per uno sviluppatore sotto-addestrato saltare in un diagramma di creazione così come è per un programmatore FORTRAN iniziare a scrivere in C ++ o Java da una tabella che mostra quali istruzioni sono equivalenti. Con un editor di diagrammi UML dello strumento CASE (Computer Aided Software Engineering) (CASE ha subito molte critiche) è diventato possibile per i cattivi progettisti realizzare progetti di grosse dimensioni molto più velocemente.

Gli amanti di UML faranno notare che ci consente un linguaggio comune per comunicare il nostro design in modo visivo ed espressivo. Dato che rappresentiamo lo stesso design in più modi, ci dà una grande prova per il codice che scriveremo. Poiché è visibile, facilita una forma di comunicazione con gli altri che è più veloce (elaboriamo le informazioni visive molto più velocemente del verbale, e per via indiretta, rispetto al testo) e ci offre molte opportunità di revisione tra pari. Poiché utilizziamo più di una vista, ci consente di spostarci tra viste gerarchiche come diagrammi di distribuzione, diagrammi di pacchetti e diagrammi di classe. Possiamo vedere le stesse informazioni a riposo nel diagramma degli oggetti e in movimento nel diagramma di attività e nel diagramma di sequenza. Usando diagrammi correlati, possiamo rivelare i problemi con completezza e coerenza in anticipo, e talvolta usare una rappresentazione che è facilmente generata come un diagramma di stato per scoprire il contenuto necessario in un altro diagramma come un diagramma di sequenza.

    
risposta data 15.10.2012 - 18:18
fonte
0

Ci sono una varietà di strumenti per trasmettere la progettazione di un programma in generale. Strumenti come UML e Diagramma degli oggetti dovrebbe essere sufficiente per te.

Includere anche commenti nel codice come e quando necessario.

    
risposta data 15.10.2012 - 16:39
fonte
0

Separa il grafico in più semplici, più piccoli. Uno dovrebbe essere una panoramica generale delle parti chiave, un'altra mostra l'interazione tra due o tre parti, quindi un grafico che mostra un modulo in dettaglio. Personalmente preferisco i grafici non-formali disegnati a mano.

Ognuno dovrebbe venire con una descrizione testuale e le ragioni dietro il (ri) design. Anche la creazione di una FAQ alla fine del documento può essere utile (prova a raccogliere le domande dalle persone che incontrano il sistema per la prima volta).

    
risposta data 15.10.2012 - 17:01
fonte
-1

Granulare il flusso dell'applicazione e preparare un diagramma del flusso di lavoro. Oppure vai per i digram di sequenza. Diagrammi di flusso validi per esprimere le logiche; non per il design dell'app

    
risposta data 15.10.2012 - 20:18
fonte
-2

Sto usando processing.org (Java) per modellare reti di geni. Questo essenzialmente documenta il software basato sul DNA usando un diagramma del nodo originariamente usato per disegnare relazioni nelle reti di telefoni cellulari link .

Ho sostituito i numeri di cellulare con i geni (software DNA) e ho costruito un modello basato sul peso per analizzare le relazioni tra i geni nel cancro. Sto sperimentando un modello per le cellule staminali. link

    
risposta data 30.01.2014 - 17:45
fonte

Leggi altre domande sui tag