Risposte:
Prima di tutto, non tutti i requisiti sono requisiti rigidi, ma piuttosto l'hardware minimo supportato. Se qualcuno ha meno del minimo, potrebbe funzionare, ma non in modo ottimale, oppure potrebbe non funzionare affatto. In entrambi i casi, non è un sistema supportato e i problemi che hai sono tuoi.
Il modo più semplice per ottenere i requisiti hardware è indovinare. Lo sviluppatore guarda la loro macchina e dice "Sì, funziona sulla mia, ecco i requisiti."
In un ambiente più rigoroso, la società di sviluppo ha una suite di sistemi di test. Potrebbe non essere in casa (gli sviluppatori di mele non in casa usano occasionalmente il Apple Compatibility Lab ). Come parte del processo di test, uno verifica tutto l'hardware disponibile e determina i requisiti minimi per l'esecuzione.
Un altro fattore nei requisiti hardware sono i requisiti di base per il sistema operativo. In teoria, Windows 7 richiede un minimo di 1 GB di RAM per funzionare. Quindi test su un sistema da 512 MB con Windows 7 non ha senso.
Testare il sistema in esecuzione con 1 GB di RAM. Funziona? No ... aggiorna il montone. Ripetere il test e gli aggiornamenti fino a quando l'applicazione non funziona in modo sostenibile ed elencarli come requisiti minimi.
Quando le prestazioni diventano parte della promessa del software, il "sopportabile" comprende che, oltre a essere effettivamente in esecuzione, l'operazione soddisfa le aspettative di prestazione minime.
o
richieda <tempo t
per essere completata, qualunque combinazione hardware che soddisfi tale obiettivo diventa la specifica minima.
I requisiti hardware rientrano in un paio di secchi diversi. Spesso includerai i requisiti di alcuni di questi bucket quando determinerai requisiti hardware specifici per qualsiasi sistema software che crei.
Vincoli tecnici in architettura
Questi sono i tipi di requisiti che devono assolutamente essere soddisfatti dal sistema costruito e sono progettati specificamente nel sistema dall'inizio. Ad esempio, "è richiesto un processore x86".
Un semplice esempio che viene in mente è Microsoft Office per Mac. Inizialmente i Mac utilizzavano CPU Power PC mentre Microsoft Windows era indirizzato ai computer "IBM compatibili" (principalmente con processori x86). Poiché Windows e quindi Office funzionavano solo su x86, è stato scritto un set completamente nuovo di codice (con diversi vincoli tecnici) per supportare Office su Power PC per Mac OS. Una volta che il Mac è passato ai processori Intel x86, il vecchio Power PC ha ottimizzato Office per Mac non ha più funzionato e i vincoli tecnici sono nuovamente cambiati per una nuova versione di Office per Mac su Intel. Le applicazioni ottimizzate per 32 vs 64 bit sono un altro semplice esempio.
Requisiti hardware impliciti
A volte non scegli attivamente di vincolarti, ma altre decisioni che prendi implicitamente ti impongono requisiti. Uno scenario comune si basa su qualsiasi tipo di framework.
Ad esempio, se si sta creando un'applicazione .Net 4.0, .Net 4.0 ha i requisiti hardware controllati attraverso i laboratori hardware di Microsoft. Ora l'applicazione richiede almeno gli stessi requisiti hardware richiesti dal framework .Net 4.0.
Requisiti hardware contestuali
Nella maggior parte dei casi, quando si parla di requisiti hardware, ciò di cui si sta realmente parlando è il modo in cui si supportano scenari di attributi di qualità specifici. Cose come prestazioni, affidabilità, disponibilità e altre funzionalità.
Questo è qualcosa di cui mi occupo spesso nel formulare raccomandazioni hardware per i clienti che creano applicazioni su IBM InfoSphere Data Explorer (sostanzialmente una piattaforma di motori di ricerca per Big Data). I requisiti di base di Data Explorer sono minimi (è possibile eseguirlo su un laptop), ma i consigli hardware per qualsiasi specifica applicazione Big Data (leggi: requisiti) si riducono a specifici scenari di attributi di qualità per quell'applicazione. Con quale velocità devono essere indicizzati i dati? Quante query al secondo devono essere elaborate? Quanto tempo di fermo è accettabile?
L'identificazione di scenari di attributi di qualità specifici traccia una linea nella sabbia e mi consente di formulare una raccomandazione per i requisiti hardware minimi basati su quegli scenari: numero X di CPU con Y quantità di RAM, Z Gigabyte di dischi rigidi, N sistemi ridondanti. Nel nostro caso, abbiamo formule di base (determinate attraverso test approfonditi nei nostri laboratori hardware) che utilizzano ipotesi dagli scenari degli attributi di qualità per aiutare a determinare un punto di partenza per una raccomandazione hardware. Questa raccomandazione diventa il requisito per quella specifica applicazione Big Data.
In questo esempio, per qualsiasi sistema di produzione, un laptop non funzionerà, anche se tecnicamente soddisfa i requisiti "minimi". Il contesto di tale implementazione: gli scenari e i dati specifici, siano essi in esecuzione in produzione o meno, e così via, dettano i requisiti hardware.
Se le ipotesi negli scenari cambiano, allora cambieranno anche i requisiti hardware. Quindi la frase "Y GB RAM è necessaria per eseguire correttamente il software", significa in realtà "Y GB RAM è necessario per eseguire la scansione di X milioni di documenti in Z ore o una velocità di documenti ABC / min."
Requisiti hardware minimi supportati
In altre parole, le specifiche hardware dovrebbero funzionare correttamente e il tuo gruppo di supporto è pronto ad aiutare a risolvere i problemi. Generalmente questo è il set di hardware a cui hai accesso diretto, sia la tua macchina di sviluppo che attraverso un laboratorio di prova di qualche tipo.
Un esempio di questo è praticamente qualsiasi app Android che è stata rilasciata. Come sviluppatore Android testare la tua app tramite alcuni simulatori software, probabilmente su almeno alcuni dispositivi fisici. Ma ci sono migliaia di dispositivi diversi con Android, molti dei quali con piccole ... stranezze che potrebbero causare problemi alla tua app. Nella maggior parte dei casi, offrirai comunque supporto se un utente incontra problemi. E nella maggior parte dei casi gli utenti non si imbatteranno in problemi anche se non hai testato specificamente su quella variazione hardware. Microsoft ha questo problema anche con Windows: quante diverse schede video, schede madri, CPU, combinazioni di memoria ci sono?
Fondamentalmente, identificare l'hardware minimo supportato è come dire "questo software funziona sulla mia macchina, mi aspetto che funzioni su macchine simili alla mia, molte persone hanno usato questo software su molte macchine diverse senza problemi, il tuo chilometraggio può variare e in caso di problemi, farò del mio meglio per aiutare / risolvere, ma non posso fornire garanzie ".
Per alcune applicazioni i requisiti potrebbero essere effettivamente requisiti difficili, ad esempio quando lo sviluppatore ha analizzato o profilato la propria app e sa esattamente quanti megaflop, MIPS, poligoni al secondo, dimensioni dei set di lavoro dell'array, ecc. Sono richiesti per soddisfare alcuni benchmark di prestazione specificati .
Per i piccoli sviluppatori, il problema potrebbe essere il costo. Hanno solo un sistema disponibile e quindi dichiarano le specifiche di quel sistema come il minimo, in quanto non sono stati in grado di testare l'app su qualsiasi altra cosa (più lenta, più piccola, ecc.) E hanno pochi indizi su come farebbe l'app con meno risorse.