# Analista de sistemas

El analista de sistemas o de tecnologías de la información es un profesional especializado del área de la ingeniería de software e informática, encargado del desarrollo de aplicaciones en lo que respecta a su diseño y obtención de los algoritmos, así como de analizar las posibles utilidades y modificaciones necesarias de los sistemas operativos para una mayor eficacia de un sistema informático.

## Orígenes

En sus inicios, la industria del software adoptó un enfoque organizativo tayloriano, al igual que la mayoría de las industrias del momento. Este enfoque propugna la especialización de funciones como método organizativo. Bajo tal enfoque, el proceso de construcción de software se concibe como un conjunto de tareas altamente especializadas donde está claramente definido el papel de cada categoría profesional:
* El analista tiene como cometido analizar un problema y describirlo con el propósito de ser solucionado mediante un sistema informático.
* El diseñador realiza, con base en el análisis, el diseño de la solución.
* El analista tiene que delimitar el análisis para ver lo que se quiere hacer inicialmente y después darle al usuario nuevas opciones de uso.

## Evolución de la profesión

Hoy en día, el analista de sistemas ha tenido que actualizarse absorbiendo conocimientos nuevos para poder realizar su trabajo ya que las exigencias de las nuevas tecnologías y metodologías de desarrollo de software han cambiado. Los avances de la ingeniería del software en su corta vida han puesto de manifiesto que las funciones que cumplía el analista de sistemas no eran suficientes para lograr un mínimo éxito en el desarrollo de software de hoy en día.
Las funciones más relevantes que se incorporan son:
* Dirección (de proyectos), para dirigir las personas hacia el resultado deseado.
* Educación de requisitos, para determinar el comportamiento que se espera del software.
* Garantía de calidad, para garantizar las expectativas del cliente.
* Diseño, para que exista una mínima certeza de que el software es viable y eficaz con la tecnología existente para los trabajos
* Gestión de configuración, para controlar el caos a medida que el software crece.
En informática, la semántica es considerada una aplicación de la matemática lógica. La semántica refleja el significado de programas o funciones.
Los programas pueden separarse en su parte sintáctica (la estructura gramatical) y su parte semántica (el significado). Por ejemplo, las siguientes sentencias de programación utilizan diferentes sintaxis (en diferentes lenguajes), pero resultan en la misma semántica (hacen lo mismo):
* x += y; (C, Java, etc)
* x := x + y; (Pascal)
* x = x + y (BASIC, Fortran)
En general, las tres operaciones lo que hacen (semántica) es sumar Y con X y almacenar el resultado en X..
Lo que no se escapa a profesionales como el ingeniero de software, el jefe de proyecto, el modelador de software, o el analista-programador. Esta última figura es muy popular y cubre la necesidad de un rol que posea tanto conocimientos técnicos como de análisis ya que siempre se necesitará un intérprete entre el cliente y los programadores involucrados en los proyectos; y, por ahora, no existen carreras como la de jefe de proyecto o modelador de software.
Es deseable también que el analista de sistemas tenga conocimientos -al menos básicos- de usabilidad. Ya que cualquier sistema que no esté al servicio de los usuarios o no esté diseñado pensando en el usuario, no tiene mucho sentido.

## Perfil tradicional del analista de software

Las cualidades que se esperan de un analista son esencialmente la capacidad de abstracción y de análisis. Los conocimientos que requiere son aquellos relacionados con las técnicas de análisis de sistemas de información:
* Conocimiento del paradigma tradicional de la ingeniería del software y del tradicional ciclo de vida del software en cascada.
* Modelado funcional: Diagrama de flujo de datos, diagrama de estado, etc.
* Modelado de datos y sus técnicas: Diagrama entidad-relación, modelo relacional, etc.
* Conocimiento de la tecnología: arquitectura de software, bases de datos, etc.
Todas estas son materias propias de la titulación denominada Ingeniería Informática, aunque posteriormente el ingeniero no suele ejercer ninguno de estos conocimientos dentro de un proyecto y estas materias son base en la titulación de Análisis de Sistemas.