Jak ludzie określają minimalne wymagania sprzętowe dla oprogramowania?

21

Jak ludzie określają minimalne wymagania sprzętowe dla oprogramowania? Na przykład: w jaki sposób firma zajmująca się tworzeniem oprogramowania może powiedzieć klientowi, że będzie potrzebować 8 GB pamięci RAM, aby poprawnie uruchomić program?

Byron
źródło

Odpowiedzi:

31

Po pierwsze, nie wszystkie wymagania są twardymi wymaganiami, ale raczej minimalny obsługiwany sprzęt. Jeśli ktoś ma mniej niż minimum, może działać - ale nie optymalnie lub w ogóle nie działać. W obu przypadkach nie jest to obsługiwany system, a problemy, które masz, są twoje.

Najprostszym sposobem na uzyskanie wymagań sprzętowych jest zgadnięcie. Deweloper patrzy na swoją maszynę i mówi: „Tak, działa na mojej, to są wymagania”.

W bardziej rygorystycznym środowisku firma programistyczna ma zestaw systemów testowych. Może nie być w domu (twórcy jabłek spoza domu czasami korzystają z Apple Compatibility Lab ). W ramach procesu testowania jeden testuje cały dostępny sprzęt i określa minimalne wymagania do jego uruchomienia.

Kolejnym czynnikiem w wymaganiach sprzętowych są podstawowe wymagania dla systemu operacyjnego. Teoretycznie system Windows 7 wymaga minimum 1 GB pamięci RAM do uruchomienia. Dlatego testowanie systemu 512 MB z systemem Windows 7 jest bezsensowne.

Przetestuj system z 1 GB pamięci RAM. Czy to działa? Nie ... ulepsz barana. Powtarzaj test i aktualizacje, aż aplikacja będzie działać w obsługiwany sposób, i podaj te wymagania jako minimalne.

Gdy wydajność staje się częścią obietnicy oprogramowania, „obsługiwane” obejmuje to, że oprócz faktycznego działania, operacja spełnia minimalne oczekiwania dotyczące wydajności.


źródło
8
Solidna odpowiedź. Nie zaszkodzi dodać, że czasami wystarczy po prostu rzucić metaforyczną strzałką w ścianę i zgadywać. To zdecydowanie może być bardzo subiektywny proces.
1
+1: Bardzo dobra odpowiedź. Warto również zauważyć, że testy wydajności oprogramowania często wskazują wymagania sprzętowe. Oznacza to, że mniej chodzi o „czy to działa”, a więcej o spojrzenie na wymagania dotyczące perf. Jeśli istnieje wymóg, że operacja ozajmuje <czasu t, wówczas dowolna kombinacja sprzętowa, która spełnia ten cel, staje się wartością minimalną.
Steven Evers,
Tylko do namysłu systemy deweloperskie powinny zwykle być znacznie bardziej rozbudowane. Co oznacza, że ​​deweloper, widząc, jak ledwo się czołga w swojej konfiguracji, raczej nie zakończy pracy. Chyba że zarządzanie było głupio skąpe.
Deduplicator
@Deduplicator Mógłbym wspomnieć o niedawnym pracodawcy, który miał deweloperów na Dell 280s (retrospekcje uruchamiania eclipse i jboss na nim). Jasne, to była też platforma docelowa - ale działały tylko w IE.
6

Wymagania sprzętowe dzielą się na kilka różnych segmentów. Często przy określaniu konkretnych wymagań sprzętowych dla każdego tworzonego systemu oprogramowania uwzględniane są wymagania z kilku tych segmentów.

Ograniczenia techniczne w architekturze

Są to rodzaje wymagań, które absolutnie musi spełnić wbudowany system i które zostały specjalnie zaprojektowane w systemie od samego początku. Na przykład „wymagany jest procesor x86”.

Prostym przykładem, który przychodzi mi na myśl, jest pakiet Microsoft Office dla komputerów Mac. Początkowo komputery Mac używały procesorów Power PC, podczas gdy system Microsoft Windows był ściśle ukierunkowany na komputery „kompatybilne z IBM” (głównie z procesorami x86). Ponieważ system Windows, a tym samym pakiet Office działały tylko na platformie x86, został napisany zupełnie nowy zestaw kodu (z różnymi ograniczeniami technicznymi) do obsługi pakietu Office na komputerze Power PC dla systemu Mac OS. Po przeniesieniu komputerów Mac na procesory Intel x86 stary zoptymalizowany pakiet Office dla komputerów Mac przestał działać - i ograniczenia techniczne ponownie zmieniły się w przypadku nowej wersji pakietu Office dla komputerów Mac na platformie Intel. Aplikacje zoptymalizowane dla wersji 32-bitowej i 64-bitowej to kolejny łatwy przykład.

Domniemane wymagania sprzętowe

Czasami nie aktywnie decydujesz się ograniczyć, ale inne decyzje, które podejmujesz w sposób dorozumiany, wymuszają na tobie wymagania. Częstym scenariuszem jest tworzenie na podstawie dowolnego rodzaju frameworka.

Na przykład, jeśli budujesz aplikację .Net 4.0, .Net 4.0 ma wymagania sprzętowe sprawdzone przez laboratoria sprzętowe Microsoft. Teraz Twoja aplikacja wymaga co najmniej takich samych wymagań sprzętowych, jakich wymaga środowisko .Net 4.0.

Kontekstowe wymagania sprzętowe

W większości przypadków, gdy mówisz o wymaganiach sprzętowych, tak naprawdę mówisz o tym, w jaki sposób obsługujesz określone scenariusze atrybutów jakości. Rzeczy takie jak wydajność, niezawodność, dostępność i inne funkcje.

Jest to coś, z czym często mam do czynienia, tworząc zalecenia sprzętowe dla klientów budujących aplikacje na platformie IBM InfoSphere Data Explorer (w zasadzie platforma wyszukiwarki Big Data). Podstawowe wymagania Eksploratora danych są minimalne (można je uruchomić na laptopie), ale zalecenia sprzętowe dla każdej konkretnej aplikacji Big Data (czytaj: wymagania) sprowadzają się do konkretnych scenariuszy atrybutów jakości dla tej aplikacji. Jak szybko dane powinny być indeksowane? Ile zapytań na sekundę należy przetworzyć? Ile przestojów jest do przyjęcia?

Zidentyfikowanie konkretnych scenariuszy atrybutów jakości rysuje linię w piasku i pozwala mi zalecić minimalne wymagania sprzętowe w oparciu o te scenariusze - X liczby procesorów z Y ilością pamięci RAM, Z gigabajtów dysków twardych, N systemów nadmiarowych. W naszym przypadku mamy podstawowe formuły (określone na podstawie szeroko zakrojonych testów w naszych laboratoriach sprzętowych), które wykorzystują założenia ze scenariuszy atrybutów jakości, aby pomóc w ustaleniu punktu wyjścia dla rekomendacji sprzętowej. To zalecenie staje się wymogiem dla tej konkretnej aplikacji Big Data.

W tym przykładzie w przypadku dowolnego systemu produkcyjnego laptop naprawdę nie zrobi tego, mimo że technicznie spełnia minimalne wymagania. Kontekst tej implementacji - konkretne scenariusze i dane, niezależnie od tego, czy są uruchomione w produkcji, czy nie, i tak dalej, określają wymagania sprzętowe.

Jeśli założenia scenariuszy zmienią się, zmienią się wymagania sprzętowe. Wyrażenie: „Wymagana jest pamięć RAM w rozmiarze Y GB do prawidłowego działania oprogramowania”, naprawdę oznacza „Potrzebna jest pamięć RAM w rozmiarze GB do przeszukania X milionów dokumentów w godzinach Z lub szybkości ABC docs / min”.

Minimalne obsługiwane wymagania sprzętowe

Oznacza to, że specyfikacje sprzętu powinny działać poprawnie, a grupa wsparcia jest przygotowana do pomocy w rozwiązywaniu problemów. Zasadniczo jest to zestaw sprzętu, do którego masz bezpośredni dostęp, albo na maszynie programistycznej, albo przez pewnego rodzaju laboratorium testowe.

Jednym z przykładów jest prawie każda wydana aplikacja na Androida. Jako programista Androida testujesz swoją aplikację za pomocą symulatorów oprogramowania, prawdopodobnie na co najmniej kilku urządzeniach fizycznych. Ale istnieją tysiące różnych urządzeń z Androidem, z których wiele ma małe ... dziwactwa ... które mogą powodować problemy z aplikacją. W większości przypadków nadal będziesz oferować wsparcie, jeśli użytkownik napotka problemy. W większości przypadków użytkownicy nie napotkają problemów, nawet jeśli nie testowaliście konkretnie tej odmiany sprzętu. Microsoft ma ten problem także z Windows - ile jest różnych kombinacji kart graficznych, płyty głównej, procesora i pamięci?

Zasadniczo określenie minimalnego obsługiwanego sprzętu jest jak powiedzenie: „to oprogramowanie działa na moim komputerze, spodziewam się, że będzie działać na komputerach podobnych do mojego, wielu ludzi bez problemu korzystało z tego oprogramowania na wielu różnych komputerach, twój przebieg może się różnić i jeśli masz problem, zrobię co w mojej mocy, aby pomóc / naprawić, ale nie mogę dać żadnych gwarancji. ”

Michał
źródło
0

W przypadku niektórych aplikacji wymagania mogą być twarde, na przykład gdy programista przeanalizował lub profilował swoją aplikację i dokładnie wie, ile megaflopów, MIPS, wielokątów na sekundę, rozmiarów zestawu roboczego macierzy itp. Jest wymaganych do spełnienia określonego testu wydajności .

W przypadku małych programistów problemem może być koszt. Mają dostępny tylko jeden system, dlatego deklarują jego specyfikację jako minimum, ponieważ nie byli w stanie przetestować aplikacji na żadnym innym (wolniejszym, mniejszym itp.) I nie mają pojęcia, jak działa aplikacja z mniejszymi zasobami.

hotpaw2
źródło