« See All Blog Posts

How to Learn the Difference Between Hard and Minimum System Requirements?

Embeded Systems Blog 7

Since software and hardware are typically sold or developed separately, companies face a common problem. How do you develop a cost-efficient turnkey solution that works seamlessly as a system from the hardware and software point of view? Think about the last time that you purchased a computer. Who can tell you if the software you are looking to use will be compatible with the computer you are buying? Buying a computer, even for consumer purposes, can take labor intensive research and you will still be unsure if you are oversizing the computer just to sustain regular operations.

From the point of view of software developers, they commonly develop their solution with functionality and capability in mind but without being able to predict the hardware platform users will leverage. In the past, users sometimes had to wait until the next generation processors were launched to run the required hardware. Now, due to the silicon limitations, software should be developed considering hardware constraints (the other way around also applies). As a result, we have started to find more engineers talking about “Minimum System Requirements”.

What are Minimum System Requirements?

Minimum System Requirements are a set of technical specifications that software companies publish along with their software solutions to let the customer know the hardware that works with it. These requirements never imply that the software has been holistically or intensively tested with different hardware platforms to pinpoint the one that works best and the one that is cost effective. On the contrary, these requirements were invented as legal coverage in case the software solution could not be supported by a hardware system with less than the specified specs. Consequently, if you run the software in a system with less capacity, you cannot complain to the company because they warned you beforehand about the “minimum requirements”.

How do you determine which should be the requirements?

When you usually ask salespeople about this, you might get the annoying answer: “It depends!”. But in this post, you will find some key points to research when designing a solution. It is true that you need to analyze several aspects before determining if a software solution will run in a specific hardware platform. However, not all requirements are utterly and completely necessary. The features without which the system will not function properly are hard requirements. Can you spot the difference with minimum system requirements? The first implies that the system went through testing to determine the needed capabilities without oversizing components. The second not only oversize components unintentionally but also cannot guarantee proper functioning.

So, let’s review some common requirement categories that you should study to determine hard system requirements:

  1. Technical Architecture Constraints: Normally this is a requirement that must be satisfied by the system being designed and that is specifically designed into the solution from the start. For example, if your application runs with an x86 architecture you cannot run that application with an ARM architecture.
  2. Implicit Hardware Requirements: Often these system requirements are not chosen consciously because this type of system requirements depend on other libraries or drivers that you are using. For example, if you are building a .Net 3.0 application, your system needs to meet the minimum system requirements for .Net 3.0 framework.
  3. Contextual Hardware Requirements: These are the requirements that most users will freely speak about because they are typically related to user experience. This is how you support specific quality attribute scenarios, for example: performance, reliability, and availability. These are the requirements that you want to include to offer a positive user experience.
  4. Minimum Supported Hardware Requirements: these are the hardware specifications expected to work correctly with specific software and that your Support Group is prepared to help troubleshoot. Generally, this is the set of hardware to which you have direct access, either your development machine or through a testing lab.

Learning the difference between hard and minimum system requirement's role is just the beginning in determining the best hardware for your software solution. Sizing hardware correctly can help you with the current difficult market and economy conditions as you will save money and time while offering great performance solutions that work seamlessly. If you want to read more about how to choose the best hardware for your solution, read (Embedded System Architecture is the Foundation for Design and Planning. To continue reading about Embedded Systems, visit this page.