Câu trả lời:
Trước hết, không phải tất cả các yêu cầu đều là yêu cầu cứng, mà là phần cứng được hỗ trợ tối thiểu. Nếu ai đó có ít hơn mức tối thiểu, nó có thể chạy - nhưng không tối ưu, hoặc có thể không chạy chút nào. Trong cả hai trường hợp, nó không phải là một hệ thống được hỗ trợ và các vấn đề bạn có là của riêng bạn.
Cách đơn giản nhất để có được yêu cầu phần cứng là đoán. Nhà phát triển nhìn vào máy của họ và nói "Đúng, nó chạy trên máy của tôi, đó là yêu cầu."
Trong một môi trường khắt khe hơn, công ty phát triển có một bộ các hệ thống thử nghiệm. Nó có thể không ở trong nhà (các nhà phát triển không phải là người trong nhà thỉnh thoảng sử dụng Phòng thí nghiệm Tương thích của Apple ). Là một phần của quy trình thử nghiệm, một thử nghiệm trên tất cả các phần cứng có sẵn và xác định các yêu cầu tối thiểu để nó chạy.
Một yếu tố khác trong yêu cầu phần cứng là các yêu cầu cơ bản cho hệ điều hành. Về lý thuyết, Windows 7 yêu cầu tối thiểu 1GB ram để chạy. Vì vậy, thử nghiệm đối với hệ thống 512 MB chạy Windows 7 là vô lý.
Kiểm tra hệ thống đang chạy với 1 GB ram. Nó có hoạt động không? Không ... nâng cấp ram. Lặp lại thử nghiệm và nâng cấp cho đến khi ứng dụng hoạt động theo cách có thể hỗ trợ và liệt kê những yêu cầu tối thiểu.
Khi hiệu suất trở thành một phần của lời hứa của phần mềm, 'có thể hỗ trợ' bao gồm ngoài việc thực sự chạy, hoạt động đó đáp ứng mong đợi hiệu suất tối thiểu.
o
cần <thời gian t
để hoàn thành, thì bất kỳ sự kết hợp phần cứng nào thỏa mãn mục tiêu đó đều trở thành thông số tối thiểu.
Yêu cầu phần cứng rơi vào một vài thùng khác nhau. Thông thường, bạn sẽ bao gồm các yêu cầu từ một vài trong số các nhóm này khi xác định các yêu cầu phần cứng cụ thể cho bất kỳ hệ thống phần mềm nào bạn xây dựng.
Những hạn chế kỹ thuật trong kiến trúc
Đây là những loại yêu cầu hoàn toàn phải được hệ thống xây dựng thỏa mãn và được thiết kế riêng cho hệ thống ngay từ đầu. Ví dụ: "bộ xử lý x86 là bắt buộc."
Một ví dụ dễ hiểu xuất hiện là Microsoft Office cho Mac. Ban đầu máy Mac sử dụng CPU Power PC trong khi Microsoft Windows được nhắm mục tiêu nghiêm ngặt vào các máy "Tương thích IBM" (chủ yếu sử dụng bộ xử lý x86). Vì Windows và do đó Office chỉ hoạt động trên x86, một bộ mã hoàn toàn mới (với các ràng buộc kỹ thuật khác nhau) đã được viết để hỗ trợ Office trên Power PC cho Mac OS. Khi Mac chuyển sang bộ xử lý Intel x86, Office PC cũ được tối ưu hóa cho PC không còn hoạt động nữa - và các hạn chế kỹ thuật lại một lần nữa thay đổi đối với phiên bản Office cho Mac mới trên Intel. Các ứng dụng được tối ưu hóa cho 32 so với 64 bit là một ví dụ dễ dàng khác.
Yêu cầu phần cứng tiềm ẩn
Đôi khi bạn không chủ động chọn cách kìm hãm bản thân, nhưng những quyết định khác mà bạn đưa ra bắt buộc đối với bạn. Một kịch bản phổ biến là xây dựng trên bất kỳ loại khung nào.
Ví dụ: nếu bạn đang xây dựng một ứng dụng .Net 4.0, .Net 4.0 có các yêu cầu phần cứng được xem xét thông qua các phòng thí nghiệm phần cứng của Microsoft. Bây giờ ứng dụng của bạn yêu cầu ít nhất các yêu cầu phần cứng giống như khung .Net 4.0 yêu cầu.
Yêu cầu phần cứng theo ngữ cảnh
Hầu hết thời gian khi bạn nói về các yêu cầu phần cứng, điều bạn thực sự đang nói đến là cách bạn hỗ trợ các kịch bản thuộc tính chất lượng cụ thể. Những thứ như hiệu suất, độ tin cậy, tính sẵn có và các khả năng khác.
Đây là điều tôi thường xuyên giải quyết trong việc đưa ra các đề xuất phần cứng cho khách hàng xây dựng các ứng dụng trên IBM InfoSphere Data Explorer (về cơ bản là nền tảng công cụ tìm kiếm Dữ liệu lớn). Các yêu cầu cơ bản của Trình khám phá dữ liệu là tối thiểu (bạn có thể chạy trên máy tính xách tay), nhưng các đề xuất phần cứng cho bất kỳ ứng dụng Dữ liệu lớn cụ thể nào (đọc: yêu cầu) đưa ra các kịch bản thuộc tính chất lượng cụ thể cho ứng dụng đó. Làm thế nào nhanh chóng dữ liệu nên được lập chỉ mục? Có bao nhiêu truy vấn mỗi giây nên được xử lý? Bao nhiêu thời gian xuống là chấp nhận được?
Xác định các kịch bản thuộc tính chất lượng cụ thể vẽ một đường thẳng trên cát và cho phép tôi đưa ra đề xuất cho các yêu cầu phần cứng tối thiểu dựa trên các kịch bản đó - Số lượng CPU X có dung lượng RAM Y, ổ đĩa cứng Z Gigabyte, hệ thống dự phòng. Trong trường hợp của chúng tôi, chúng tôi có các công thức cơ bản (được xác định thông qua thử nghiệm rộng rãi trong phòng thí nghiệm phần cứng của chúng tôi) sử dụng các giả định từ các kịch bản thuộc tính chất lượng để giúp xác định điểm bắt đầu cho đề xuất phần cứng. Khuyến nghị này trở thành yêu cầu cho ứng dụng Dữ liệu lớn cụ thể đó.
Trong ví dụ này, đối với bất kỳ hệ thống sản xuất nào, một chiếc máy tính xách tay thực sự sẽ không làm được mặc dù về mặt kỹ thuật nó đáp ứng các yêu cầu "tối thiểu". Bối cảnh của việc triển khai đó - các kịch bản và dữ liệu cụ thể, cho dù nó có chạy trong sản xuất hay không, v.v., chỉ ra các yêu cầu phần cứng.
Nếu các giả định trong các kịch bản thay đổi, thì các yêu cầu phần cứng cũng vậy. Vì vậy, cụm từ "Cần có RAM Y GB để chạy phần mềm đúng cách", thực sự có nghĩa là "Cần có RAM Y GB để thu thập dữ liệu X triệu tài liệu trong Z giờ hoặc tốc độ tài liệu ABC / phút."
Yêu cầu phần cứng tối thiểu được hỗ trợ
Đó là, các thông số kỹ thuật phần cứng dự kiến sẽ hoạt động chính xác và nhóm Hỗ trợ của bạn đã sẵn sàng để giúp khắc phục sự cố. Nói chung, đây là bộ phần cứng mà bạn có quyền truy cập trực tiếp, hoặc máy phát triển của bạn hoặc thông qua một phòng thí nghiệm thử nghiệm nào đó.
Một ví dụ về điều này là khá nhiều ứng dụng Android đã được phát hành. Là một nhà phát triển Android, bạn kiểm tra ứng dụng của mình thông qua một số trình giả lập phần mềm, có thể trên ít nhất một vài thiết bị vật lý. Nhưng có 1000 thiết bị khác nhau chạy Android, nhiều trong số đó có ít ... sự kỳ quặc ... có thể khiến ứng dụng của bạn gặp sự cố. Trong hầu hết các trường hợp, bạn vẫn sẽ cung cấp hỗ trợ nếu người dùng gặp sự cố. Và trong hầu hết các trường hợp, người dùng sẽ không gặp phải sự cố mặc dù bạn không kiểm tra cụ thể về biến thể phần cứng đó. Microsoft cũng gặp vấn đề này với Windows - có bao nhiêu card màn hình, bo mạch chủ, cpu, bộ nhớ kết hợp khác nhau?
Về cơ bản, xác định phần cứng được hỗ trợ tối thiểu giống như nói rằng "phần mềm này hoạt động trên máy của tôi, tôi hy vọng rằng nó sẽ hoạt động trên các máy tương tự như tôi, rất nhiều người đã sử dụng phần mềm này trên nhiều máy khác nhau mà không gặp sự cố, số dặm của bạn có thể khác nhau và nếu bạn gặp sự cố tôi sẽ cố gắng hết sức để giúp đỡ / khắc phục nhưng tôi không thể đảm bảo. "
Đối với một số ứng dụng, các yêu cầu thực sự có thể là các yêu cầu khó, chẳng hạn như khi nhà phát triển đã phân tích hoặc định hình ứng dụng của họ và biết chính xác có bao nhiêu megaflop, MIPS, đa giác mỗi giây, kích thước tập hợp mảng, v.v. .
Đối với các nhà phát triển nhỏ, chi phí có thể là vấn đề. Họ chỉ có sẵn một hệ thống và vì vậy họ tuyên bố thông số kỹ thuật của hệ thống là tối thiểu, vì họ chưa thể kiểm tra ứng dụng trên bất kỳ thứ gì khác (chậm hơn, nhỏ hơn, v.v.) và có chút manh mối về cách ứng dụng sẽ làm với ít tài nguyên hơn.