En el nivel más alto, tiene la función de presentar al usuario una interfaz que le facilite su interacción con el ordenador. Esta interfaz tiene que diseñarse de manera que permita a la persona trabajar con objetos de alto nivel y que tengan alguna relación con su mundo real. De esta manera, no necesita estar pendiente de los numerosos detalles técnicos necesarios para que el hardware funcione. Es el software el que enlaza ambos niveles. Esta capacidad de permitir abstraer al usuario de los detalles del hardware es fundamental para poder trabajar con eficiencia con un sistema informático.
Software de infraestructura básica
Es el que realiza las funciones más básicas de un sistema de información, que cuentan no sólo el control del hardware, sino de todos aquellos subsistemas que forman una base sobre la cual las aplicaciones de usuario puedan funcionar. Básicamente, es lo que se conoce como sistema operativo, pero también incluye otras piezas utilizadas por la mayoría de las aplicaciones como, por ejemplo, el sistema de correo electrónico o el de acceso a bases de datos.
Toda organización necesita incluir muchos productos de software de infraestructura básica. Los riesgos de intentar desarrollar en la organización estos productos son muy grandes, ya que son tecnológicamente complejos y requerirían un grado de especialización elevado y, por lo tanto, el coste de desarrollo sería muy importante. Por esto, lo recomendado es adquirir productos de mercado. No sólo resulta más económico, sino que también las empresas fabricantes verifican su calidad, garantizan la compatibilidad con otros productos y son capaces de seguir el ritmo de evolución de la tecnología, ya que tienen todos sus recursos dedicados a esto.

Software de aplicaciones
Al contrario que el software de infraestructura básica, el de aplicaciones necesita en su diseño y construcción conocer cómo es el usuario y su manera de actuar, de entender la organización y lo que espera obtener de los sistemas informáticos.
La utilización de paquetes comerciales para cubrir las necesidades del software de aplicaciones es recomendable, aunque no siempre es posible, ya que muchas características pueden ser específicas de la organización. En estos casos, la organización tiene que asumir el desarrollo del software específico.
