Progettazione software per paradigmi non orientati agli oggetti

3

Attualmente sto lavorando a un progetto in cui sto scrivendo il firmware per un sistema elettronico in C, e mi è stato chiesto di produrre documentazione sullo sviluppo / evoluzione del software per i dispositivi embedded. Avendo sviluppato un software nel paradigma object oriented, so di usare UML per documentare il software come i diagrammi di classe con gli oggetti, tuttavia questo non funziona per documentare lo sviluppo del mio sistema embedded. Quindi cosa dovrei produrre per documentare lo sviluppo del mio firmware?

    
posta Dean 18.11.2012 - 15:45
fonte

3 risposte

4

Anche per un sistema che non è progettato secondo il paradigma OO, puoi ancora utilizzare la notazione UML per documentare il sistema, eventualmente estesa con alcuni Diagrammi del flusso di dati (dato che non riesco a trovare immediatamente un diagramma corrispondente in UML). I diagrammi che vale la pena esaminare, anche per i sistemi non OO sono:

  • Diagrammi di stato (transizione)
  • Utilizza i diagrammi dei casi
  • Diagrammi di sequenza

Quando modellizzi un sistema non OO, potresti dover essere un po 'flessibile rispetto a ciò che modesti come una "classe".

Ad esempio, se hai un file di intestazione stack.h come questo

struct stack;
struct stack* stack_create(void);
void stack_destroy(struct stack*);
void stack_push(struct stack*, void*);
void stack_pop(struct stack*);
void* stack_top(struct stack*);

con l'implementazione corrispondente, non c'è niente che ti impedisca di presentarlo come uno stack di classe nei tuoi modelli.

    
risposta data 18.11.2012 - 16:50
fonte
6

Puoi creare una progettazione orientata agli oggetti e implementarla in C, anche se C non supporta direttamente concetti orientati agli oggetti.

Vedi ad esempio Rumbaugh et al., "Modellazione e progettazione orientata agli oggetti", Capitolo 16, Prentice-Hall 1991, ISBN 0-13-629841-9.

    
risposta data 18.11.2012 - 16:11
fonte
2

Fai lo stesso design solo con moduli concettuali (come avresti dovuto fare in design OO) piuttosto che in classi esplicite. In C, quei moduli tendono ad essere funzioni, strutture o un insieme di funzioni, strutture o entrambi.

    
risposta data 18.11.2012 - 16:45
fonte

Leggi altre domande sui tag