Fuente: Flickr

Explicando las diferencias entre Ingeniería de Sistemas, Ingeniería de Software, Ingeniería de Sistemas de Información, Ingeniería Informática, Ciencias de la Computación y Tecnologías de la Información.

Estoy seguro que muchas áreas de RRHH u otras áreas de una empresa, no conocen la clara diferencia que hay entre un Ingeniero de Sistemas, un Ingeniero de Software, un Ingeniero de Sistemas de Información, un Ingeniero Informático, un Licenciado en Tecnologías de la Información y un Licenciado en Ciencias de la Computación.

Las mismas dudas las debe de tener un escolar de 3ero, 4to o 5to de secundaria, al momento de pensar qué carrera debe de estudiar.

Espero que este post permita aclarar las grandes y principales diferencias que tiene cada una de estas tan diferentes profesiones o carreras universitarias.

Ingeniería de Sistemas (System Engineering)

La Ingeniería de Sistemas es normada por la INCOSE, ¿qué es la INCOSE? Es el International Council on Systems Engineering, la cual es una organización sin fines de lucro fundada para desarrollar y diseminar los principios y prácticas interdisciplinarias que permiten la realización de sistemas exitosos.

En otras palabras es la organización que se encarga de normar a la Ingeniería de Sistemas. Mayor información en www.incose.org.

Antes de presentarles la correcta definición de Ingeniería de Sistemas, revisemos la definición de Sistema que da la misma INCOSE:

“Un sistema es una construcción o colección de diferentes elementos que en conjunto producen resultados que no pueden obtenerse únicamente por sus elementos. Los elementos, o partes, pueden incluir personas, hardware, software, instalaciones, políticas y documentos; es decir, todo lo que se requiere para producir resultados a nivel de sistema. Los resultados incluyen cualidades, propiedades, características, funciones, comportamiento y rendimiento a nivel del sistema. El valor agregado por el sistema como un todo, más allá de aquel contribuido independientemente por las partes, se crea principalmente por la relación entre las partes; es decir, cómo estas están interconectadas” (extraído de Definition of a System).

Algo muy importante que comentar del anterior párrafo, es que no relaciona al término sistema con software, ni con proceso de desarrollo de software, ni relaciona de manera directa la definición de sistema con tecnología.

Dentro de toda la información que brinda la INCOSE podemos encontrar el SEBoK o Guide to the Systems Engineering Body of Knowledge, cuyo fin “es el de proporcionar un conocimiento básico de la ingeniería de sistemas ampliamente aceptado, basado en la comunidad y actualizado regularmente” (extraído de SEBoK Introduction).

Y en el SEBoK encontramos el siguiente párrafo:

“La definición comúnmente aceptada de Ingeniería de Sistemas utilizada en todo el SEBoK (INCOSE 2015) define a la SE como un enfoque interdisciplinario que se aplica a lo largo de todo el ciclo de vida de un sistema identificado (bajo la definición dada anteriormente de Sistema). La definición establece que la ingeniería de sistemas “integra todas las disciplinas y grupos de especialidades en un esfuerzo de equipo, formando un proceso de desarrollo estructurado que va desde el concepto hasta la realización y la operación”. Por lo tanto, SE es una disciplina de la ingeniería preocupada por todos los aspectos del ciclo de vida de un sistema de ingeniería, que incluye cómo nos organizamos para realizar (hacer) la ingeniería, qué es producido por dicha ingeniería y cómo se utilizan y se necesitan los sistemas resultantes para satisfacer las necesidades de los interesados.” (extraído de Systems Engineering and Management).

INCOSE

Imagen: INCOSE

Si aún no es clara la definición de Ingeniería de Sistemas, mejor sigamos leyendo hasta el final. =)

Ingeniería de Software (Software Engineering)

Antes de comprender qué significa Ingeniería de Software, revisemos tres (03) definiciones de lo que significa el término software:

“Todo o parte de los programas, procedimientos, reglas y documentación asociada de un sistema de procesamiento de información.”

“Programas informáticos, procedimientos y, posiblemente, la documentación asociada y los datos relacionados con la operación de un sistema informático.”

“Programa o conjunto de programas utilizados para hacer funcionar una computadora.”

(extraído del documento ISO/IEC/IEEE 24765 Systems and software engineering — Vocabulary).

Teniendo en claro que significa software, veamos la definición de Ingeniería de Software:

“La aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo, operación y mantenimiento de software; es decir, la aplicación de la ingeniería al software.” (extraído de Software Engineering 2014 – Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering)

Claramente, puede entenderse que la Ingeniería de Software se encarga de todo el proceso de desarrollo del software y de su ciclo de vida.

En equivalencia con el SEBoK existe el SWEBOK, o Software Engineering Body Of Knowledge, el cual lo podemos ubicar en http://www.swebok.org/. Dentro de dicho documento podemos encontrar las quince (15) áreas de conocimiento (o Knowledge Areas) de la Ingeniería de Software:

  1. Software Requirements
  2. Software Design
  3. Software Construction
  4. Software Testing
  5. Software Maintenance
  6. Software Configuration Management
  7. Software Engineering Management
  8. Software Engineering Process
  9. Software Engineering Models and Methods
  10. Software Quality
  11. Software Engineering Professional Practice
  12. Software Engineering Economics
  13. Computing Foundations
  14. Mathematical Foundations
  15. Engineering Foundations

Con toda esta información, creo que nos queda muy en claro lo que es la Ingeniería de Software. Continuemos con la siguiente carrera…

Ingeniería de Sistemas de Información (Information Systems Engineering)

Antes que nada, veamos primero la definición de Sistema de Información:

“Los Sistemas de Información como campo de estudio académico abarcan los conceptos, principios y procesos para dos amplias áreas de actividad dentro de las organizaciones: (1) La adquisición, implementación y gestión de los recursos y servicios de tecnología de la información (la función de los sistemas de información) y (2) El desarrollo, operación y evolución de la infraestructura y los sistemas para su uso en procesos organizacionales (desarrollo del sistema, operación del sistema y mantenimiento del sistema).” (extraído de Information Systems 2010 – Curriculum Guidelines for Undergraduate Degree Programs in Information Systems).

Teniendo en claro la definición de Sistemas de Información, pasemos a ver la definición de Ingeniería de Sistemas de Información:

“Los especialistas en sistemas de información se enfocan en integrar soluciones de tecnología de la información y procesos comerciales para satisfacer las necesidades de información de los negocios y otras empresas, permitiéndoles alcanzar sus objetivos de una manera efectiva y eficiente. La perspectiva de esta disciplina sobre la tecnología de la información enfatiza la información y considera que la tecnología es un instrumento para generar, procesar y distribuir información. Los profesionales de la disciplina se preocupan principalmente por la información que los sistemas informáticos pueden proporcionar para ayudar a una empresa a definir y alcanzar sus objetivos, y los procesos que una empresa puede implementar o mejorar utilizando la tecnología de la información. Deben comprender los factores técnicos y organizativos, y deben poder ayudar a una organización a determinar cómo la información y los procesos empresariales habilitados con la tecnología pueden proporcionar una ventaja competitiva.” (extraído de Computing Curricula 2005 – The Overview Report).

Entonces, podemos resumir que el Ingeniero de Sistemas de Información se encarga de integrar los procesos de negocio haciendo uso de las tecnologías de la información, y sobre todo tiene el conocimiento necesario para poder comprender, mapear, documentar y mejorar los procesos de cualquier organización.

Al parecer no existe un equivalente al SWEBOK o SEBoK para la Ingeniería de Sistemas de Información, es decir, no existe un ISEBOK, o por lo menos alguna versión draft del mismo. Pero el Information Systems 2010 – Curriculum Guidelines for Undergraduate Degree Programs in Information Systems (referenciado anteriormente) lista las siguientes áreas de conocimiento específicas:

  1. IS Management and Leadership
  2. Data and Information Management
  3. Systems Analysis & Design
  4. IS Project Management
  5. Enterprise Architecture
  6. User Experience
  7. Professional Issues in Information Systems

Al revisar las áreas de conocimiento de la Ingeniería de Sistemas de Información, notamos claramente las diferencias entre un Ingeniero de Sistemas, un Ingeniero de Software y un Ingeniero de Sistemas de Información. Pero aún no hemos terminado, continuemos revisando las otras carreras.

Ciencias de la Computación (Computer Science)

Primero veamos la definición de Computación o Informática:

“De manera general, podemos definir a la informática como cualquier actividad orientada hacia los objetivos de requerir, el beneficiarse de o de crear computadoras. Por lo tanto, la informática incluye el diseño y la construcción de sistemas de hardware y software para una amplia gama de propósitos; el procesar, estructurar y administrar varios tipos de información; realizando estudios científicos utilizando computadoras; hacer que los sistemas informáticos se comporten de manera inteligente; crear y utilizar medios de comunicación y entretenimiento; encontrar y recopilar información relevante para un propósito particular, y así sucesivamente.” (extraído de Computing Curricula 2005 – The Overview Report).

Es importante comentar que esta definición es una definición utilizada en el Overview Report para definir el término Computing, y luego de ello hacer referencia a cada una de las Carreras en Computación. No debe entenderse como una definición exclusiva de la Carrera de Ciencias de la Computación.

Ahora revisemos directamente la definición de la carrera de Ciencias de la Computación:

“Las Ciencias de la Computación abarcan una amplia gama, desde sus fundamentos teóricos y algorítmicos hasta desarrollos de vanguardia en robótica, visión artificial (computer vision), sistemas inteligentes, bioinformática y otras áreas apasionantes. Se puede pensar que el trabajo de los licenciados en Ciencias de la Computación se divide en tres categorías.

  • Diseñan e implementan software. Los licenciados en Ciencias de la Computación se enfrentan a trabajos de programación desafiantes. También supervisan a otros programadores, manteniéndolos al tanto de los nuevos enfoques.
  • Idean nuevas formas de utilizar computadoras. El progreso en las áreas de CS de redes, bases de datos e interfaz humano-computadora permitió el desarrollo de la World Wide Web. Ahora los investigadores de CS están trabajando con científicos de otros campos para hacer que los robots se conviertan en ayudantes prácticos e inteligentes, que utilicen bases de datos para crear nuevos conocimientos y que utilizan a las computadoras para ayudar a descifrar los secretos de nuestro ADN.
  • Desarrollan formas efectivas de resolver problemas informáticos. Por ejemplo, los científicos informáticos desarrollan las mejores formas posibles de almacenar información en bases de datos, enviar datos a través de redes y visualizar imágenes complejas. Su experiencia teórica les permite determinar el mejor rendimiento posible, y su estudio de algoritmos les ayuda a desarrollar nuevos enfoques que proporcionan un mejor rendimiento.”

(extraído de Computing Curricula 2005 – The Overview Report).

Es decir, que el Licenciado en Ciencias de la Computación es capaz de diseñar y construir software haciendo uso de algoritmos avanzados, pudiendo aplicar su conocimiento en campos como la inteligencia artificial, machine learning, big data, procesamiento de imágenes, entre otros.

Tampoco existe un Computer Science Body Of Knowledge o CSBOK. Pero en el Computer Science Curricula 2013 podemos encontrar las áreas de conocimiento de esta carrera:

  1. AL – Algorithms and Complexity
  2. AR – Architecture and Organization
  3. CN – Computational Science
  4. DS – Discrete Structures
  5. GV – Graphics and Visualization
  6. HCI – Human-Computer Interaction
  7. IAS – Information Assurance and Security
  8. IM – Information Management
  9. IS – Intelligent Systems
  10. NC – Networking and Communications
  11. OS – Operating Systems
  12. PBD – Platform-based Development
  13. PD – Parallel and Distributed Computing
  14. PL – Programming Languages
  15. SDF – Software Development Fundamentals
  16. SE – Software Engineering
  17. SF – Systems Fundamentals
  18. SP – Social Issues and Professional Practice

Ahora veamos las 2 últimas carreras…

Ingeniería Informática o Ingeniería en Computación (Computer Engineering)

En la carrera anterior revisamos la definición de Computación o Informática, por lo que pasaremos a revisar directamente la definición de la carrera Ingeniería Informática o Ingeniería en Computación:

“La ingeniería informática se preocupa por el diseño y la construcción de computadoras y sistemas informáticos. Implica el estudio de hardware, software, comunicaciones y la interacción entre ellos. Su plan de estudios se centra en las teorías, los principios y las prácticas de la ingeniería eléctrica tradicional y las matemáticas y los aplica a los problemas del diseño de computadoras y dispositivos basados en computadoras.” (extraído de Computing Curricula 2005 – The Overview Report).

Otro extracto del mismo documento nos cuenta el origen de la Ingeniería Informática:

“La ingeniería informática solidificó su surgimiento gracias a la ingeniería eléctrica. La ingeniería informática surgió de la ingeniería electrónica a fines de la década de 1970 y en la de 1980, pero no fue hasta la década de 1990 cuando los chips de computadora se convirtieron en componentes básicos de la mayoría de los tipos de dispositivos eléctricos y muchos tipos de dispositivos mecánicos. (Por ejemplo, los automóviles modernos contienen numerosas computadoras que realizan tareas que son transparentes para el conductor). Los ingenieros informáticos diseñan y programan los chips que permiten el control digital de muchos tipos de dispositivos.”

Gracias a este último párrafo podemos comprender que la Ingeniería Informática y la Ingeniería Electrónica son carreras hermanas, y que la Ingeniería Informática se encarga de la construcción de computadoras y sistemas informáticos.

En relación a su respectivo Body of Knowledge, al parecer no existe el Computer Engineering Body Of Knowledge o CEBOK. Pero a pesar de ello podemos encontrar las áreas de conocimiento de esta ingeniería en el Computer Engineering Curricula 2016:

  1. Circuits and Electronics
  2. Computing Algorithms
  3. Computer Architecture and Organization
  4. Digital Design
  5. Embedded Systems
  6. Computer Networks
  7. Preparation for Professional Practice
  8. Information Security
  9. Signal Processing
  10. Systems and Project Engineering
  11. System Resource Management
  12. Software Design

Y ahora la última carrera…

Tecnologías de la Información (Information Technology)

Primero revisemos la definición de Tecnologías de la Información:

“La tecnología de la información es el estudio de enfoques sistémicos para seleccionar, desarrollar, aplicar, integrar y administrar tecnologías informáticas seguras para permitir a los usuarios alcanzar sus objetivos personales, organizacionales y sociales.” (extraído de Information Technology Curricula 2017)

Ahora veamos la definición de la carrera en Tecnologías de la Informacion:

“En la sección anterior, comentamos que los Sistemas de Información se centran en los aspectos de la información de la tecnología de la información. La tecnología de la información es el complemento de dicha perspectiva: su énfasis está en la tecnología en sí más que en la información que transmite. TI es un campo nuevo y de rápido crecimiento que comenzó como una respuesta a las necesidades prácticas y cotidianas de las empresas y otras organizaciones.

En la actualidad, las organizaciones de todo tipo dependen de las tecnologías de la información. Necesitan tener los sistemas correctos y apropiados en su respectivo lugar. Estos sistemas deben funcionar correctamente, ser seguros, estar actualizados, ser mantenidos y reemplazados según corresponda. Los empleados de una organización requieren el apoyo del personal de TI que entienden los sistemas informáticos y su software y se comprometen a resolver los problemas relacionados con la informática que puedan tener. Los graduados de programas de tecnología de la información abordan estas necesidades.”  (extraído de Information Technology Curricula 2017)

En equivalencia con el SWEBOK y el SEBOK, existe el EITBOK o Enterprise Information Technology Body Of Knowledge (mayor información en el siguiente link). En el EITBOK no pude encontrar las áreas de conocimiento de esta carrera, pero sí en el Information Technology Curricula 2017, descritas en esta versión como dominios:

  • Essential IT domains:
    • ITE-CSP Cybersecurity Principles
    • ITE-GPP Global Professional Practice
    • ITE-IMA Information Management
    • ITE-IST Integrated Systems Technology
    • ITE-NET Networking
    • ITE-PFT Platform Technologies
    • ITE-SPA System Paradigms
    • ITE-SWF Software Fundamentals
    • ITE-UXD User Experience Design
    • ITE-WMS Web and Mobile Systems
  • Supplemental IT domains
    • ITS-ANE Applied Networks
    • ITS-CCO Cloud Computing
    • ITS-CEC Cybersecurity Emerging Challenges
    • ITS-DSA Data Scalability and Analytics
    • ITS-IOT Internet of Things
    • ITS-MAP Mobile Applications
    • ITS-SDM Software Development and Management
    • ITS-SRE Social Responsibility
    • ITS-VSS Virtual Systems and Services

De manera intencional incluí los dominios suplementarios a fin de que se pueda tener un mejor entendimiento de lo que puede hacer un Licenciado en Tecnologías de la Información.

En resumen…

La carrera de Ingeniería de Sistemas es una carrera no necesariamente relacionada con la creación, desarrollo, configuración o despliegue de aplicaciones o del software.

Hace varios años escuché de un Director de Carrera de una universidad privada, que un Ingeniero de Sistemas es necesario (o que la Ingeniería de Sistemas es necesaria) cuando en un proyecto trabajan en conjunto 3 o más diferentes ingenierías, como por ejemplo un ingeniero de software, un ingeniero electrónico y un ingeniero mecánico.

Si buscamos en las universidades de Europa y de Estados Unidos, encontraremos que la carrera de Ingeniería de Sistemas es una carrera que se dicta mayormente en programas de maestría, y en menor cantidad en programas de pregrado. Esta última línea es soportada por el hecho que en la misma Wiki del SEBoK (http://sebokwiki.org/), sólo se puede encontrar referencias al Body of Knowledge and Curriculum to Advance Systems Engineering (BKCASE) y al Graduate Reference Curriculum for Systems Engineering (GRCSE) v.1.1. Este último contiene el detalle de las materias y tópicos que deben cursarse en un programa de postgrado.

Espero a futuro darme tiempo de realizar una investigación para contabilizar el número exacto de programas de pregrado y de maestría de Ingeniería de Sistemas existentes.

Algo que deben haber notado, es que NO he incluido las áreas de conocimiento en Ingeniería de Sistemas. Esto se debe a que las 25 áreas que contiene el SEBOK, no tienen una correspondencia directa con los cursos o con la currícula que se imparte en dicha carrera, a diferencia del resto de carreras mencionadas.

Para las otras carreras, la Association for Computing Machinery (o ACM, más información en https://www.acm.org/) define y publica las recomendaciones de las currículas para sus programas de pregrado y de postgrado, donde lista los cursos que deberían de impartirse en cada carrera. Si deseas conocer el detalle de cada una de ellas puedes acceder a https://www.acm.org/education/curricula-recommendations.

Debe quedarnos muy en claro que en Perú, algunas universidades asignan un nombre a las carreras que enseñan o imparten, pero no necesariamente dictan los cursos indicados en las currículas definidas por la ACM, por lo que sería bueno que antes de contratar aun profesional revises además de su experiencia la formación que ha tenido, y si esta formación calza con tus necesidades.

Finalmente…

Luego de haber leído y revisado las diferencias entre las distintas carreras de Ingeniería, ¿A qué profesional de qué carrera contratarás en tu empresa?

Espero les haya servido todo lo descrito. Nos vemos!!