vincoli nello sviluppo di software

4

Secondo questo

As opposed to the constraints in other kinds of engineering, where the constraints of what you can build are the constraints of physical systems, the constraints imposed in building large software systems are the limitations of our own minds.

Questo suona interessante su carta, ma mi ha anche fatto pensare.

  • E i vincoli di memoria? Non dovremmo anche pensare a come gestire la memoria per evitare perdite?
  • Se chiamiamo una funzione ricorsiva, non dovremmo considerare la dimensione della pila se TCO non è possibile?

Le situazioni di cui sopra non sono altrettanto difficili come i vincoli fisici di cui si parla nel video?

Qualcuno può spiegare cosa significa?

    
posta morbidCode 20.10.2016 - 20:48
fonte

2 risposte

8

Sì, ma non è così difficile come un vincolo fisico in altre discipline ingegneristiche.

L'utilizzo della memoria, la potenza del processore, lo spazio su disco, la velocità della rete e altro ancora sono vincoli. Tuttavia, ci sono due considerazioni. Innanzitutto, sono facilmente espandibili. È possibile aggiungere risorse aggiuntive o distribuire il problema su più nodi o aggiornare componenti hardware, ad esempio. In secondo luogo, il tuo software può esistere su più piattaforme con caratteristiche diverse perché è così facilmente copiato e inserito in una varietà di ambienti diversi. Nessuno di questi è vero per molte cose fisiche.

Inoltre, puoi scrivere codice ignorando questi vincoli. Alla fine, potrebbe funzionare se lo si sposta in un ambiente più appropriato o se si aspetta che l'hardware raggiunga il livello. Non puoi semplicemente prendere, per esempio, un ponte e spostarlo in un nuovo attraversamento del fiume perché non ha funzionato nella prima posizione in cui lo hai costruito.

Poiché whatsisname fa riferimento a un'altra risposta , alcuni sforzi di ingegneria del software hanno dei vincoli fisici. Qualunque cosa viva nel mondo fisico ha probabilmente dei vincoli fisici - molti sistemi embedded o sistemi di controllo, per esempio. Tuttavia, per quanto riguarda tutto il codice scritto, questo non è un intero lotto.

In genere sono d'accordo sul fatto che l'ingegneria del software sia diversa da altre discipline ingegneristiche radicate nel mondo fisico, ma abbiamo dei vincoli diversi dalle nostre menti. Oltre al triangolo del progetto che influisce su qualsiasi progetto di ingegneria, spesso ci occupiamo di migliorare i progetti precedenti e siamo vincolati da varie decisioni passate.

    
risposta data 20.10.2016 - 20:59
fonte
4

Aren't the above situations just as challenging as physical constraints talked about in the video?

Possono esserlo, ma per la maggior parte degli sviluppatori e dei progetti non lo sono.

Alcuni software sono stati scritti con restrizioni rigide e serie su velocità, memoria, spazio, ecc. Se si sta scrivendo il software per il computer di guida dello space shuttle, dove si ha un'attività specifica da eseguire, si dispone di hardware specifico su cui verrà eseguito e la tua "logica di business" consiste esclusivamente nella manipolazione delle equazioni fisiche, quindi i vincoli che affronterai come sviluppatori di software per quel progetto stanno affrontando vincoli fisici più o meno allo stesso modo degli ingegneri per i motori a razzo.

D'altro canto, se stai lavorando per un'azienda che scrive software per programmare appuntamenti dal dentista, per la maggior parte i tuoi limiti fisici svaniscono completamente. Non puoi pensare a quanto spazio o memoria usi il tuo programma, e probabilmente starai bene. Date e orari sono un argomento di grande sventura per molti sviluppatori di software, e tuttavia, dal momento che la maggior parte degli uffici dentistici sono aperti solo durante il normale orario di lavoro, è possibile avere date di trattamento piuttosto scadenti e andare avanti per anni. Quando ti leghi alla fatturazione e ti colleghi ai fornitori di assicurazioni, devi lavorare con vincoli che non sono dettati dalle leggi dell'universo. Invece, i vostri vincoli non hanno praticamente alcun fondamento nella realtà, e sono invece un incomprensibile conglomerato empio di ciò che decine di tipi di MBA pensavano fossero buone idee in dozzine di tempi diversi riguardanti soggetti vagamente correlati. Tutto ciò può essere piegato o sostituito con l'approvazione di un manager.

Una piccola manciata di sviluppatori di software lavora su cose come il software dello space shuttle. La stragrande maggioranza sta lavorando su cose come il software di programmazione. Se cerchi di costruire il software del dentista secondo gli standard per lo space shuttle, ti porteranno 70 anni e ti costeranno un trilione di dollari, e non sarà notevolmente migliore della concorrenza.

    
risposta data 20.10.2016 - 21:23
fonte

Leggi altre domande sui tag