lunes, 3 de abril de 2017

Diferencias entre Ciencias la Computación, Ingeniera y Arquitectura de Software


Para referirnos a nuestra profesión (o a aspectos de ella) de una forma más o menos formal, solemos usar términos como “Ciencias de la computación”, “Ingeniería de Software” o “Arquitectura de Software”, muchas veces de manera intercambiada, y sin distinguir entre cada uno de ellos. En el siguiente artículo voy a establecer puntos que nos ayuden a diferenciarlos entre sí.

Dejemos claro para comenzar que el objetivo de nuestra profesión es hacer sistemas software. Ese es el punto que no debemos perder de vista, y debemos enfocarlo todo a través de él.

¿Qué es un sistema?


Un sistema, para la finalidad que nos ocupa, es un conjunto de elementos, de diversa índole, que trabajan juntos para poder conseguir un objetivo.

¿Qué es un sistema software?


Es un conjunto de elementos (principalmente) software y de otra índole que interactúan entre sí para ofrecer una funcionalidad.

En cuento al software puede incluirse aplicaciones, servicios, portales web, programas propios o desarrollo de terceros.

¿Incluye los sistemas software, la parte hardware? Si. Es imposible ver un sistema software como algo aislado del hardware. El software está diseñado para instalarse en determinado hardware (Teléfonos, PC, MAC, servidores…) y en determinada estructura (como ciertas redes, o arquitecturas cliente servidor, o incluso modelos menos convencionales).

¿Los usuarios son parte del sistema? Si, en el sentido que estos cumplen roles que contempla el software. Es necesario diseñar siempre el software desde el punto de vista de las necesidades de los usuarios.

Ante de nada…


En cuento a las definiciones aquí expuestas, no son tratadas de forma académica, o dicho de otra forma no se busca empatar los conceptos con títulos universitarios ya que estos varían en cada país y muchas veces usan los términos equivalentes o casi equivalentes.

En este artículo se busca obtener en cada definición un fin práctico, casi laboral.

Arquitectura de Software


La arquitectura de software se encarga de la creación de sistemas, enfocándose en los puntos:

  • Formaliza el cómo se debe diseñar un sistema.
  • Define (identifica) los componentes de un sistema, las relaciones entre ellos y su funcionalidad.
  • Las conexiones con otros sistemas.
  • La escalabilidad y la capacidad de mantenimiento de un software.
  • La sencillez en general de un código.
  • Identifica los puntos reutilizables de un código, y crea un escenario donde esto es posible.

La importancia de una arquitectura es que garantiza que el código de un sistema siga siendo compatible “hacia atrás” (lo existen), y “hacia delante”, hacia las necesidades futuras y todavía no determinadas. En otras palabras posibilidad el cambio.

Ingeniera de Software


La Ingeniera del Software abarca más puntos y de índole más diversa que la Arquitectura de Software, o dicho de otra forma la Arquitectura de Software es un punto más, perteneciente a la Ingeniera de Software.

La Ingeniera de Software abarca todos los procesos de la creación de software, desde la identificación apropiada de las necesidades, hasta más allá de la creación de un sistema como producto ("más allá", porque la ingeniera de software no acaba con la entrega del mencionado sistema).

Los puntos en los que se enfoca la Ingeniera de Software son los siguientes:
  • Definir la metodología de trabajo. Dicha metodología puede varias según las necesidades del cliente, equipo (de trabajo), o producto.
  • Gestionar los proyectos, así como de los recursos asignados (que pueden ser humanos, físicos, o económicos)
  • Define apropiadamente todas las fases del proyecto, y las necesidades y objetivos de cada uno.
  • Define los roles a cumplir en el proyecto.
  • También se encarga de la relación (en varios niveles) con el cliente y de detectar sus necesidades.
  • Como ya mencionamos la arquitectura del software es gestionada como un subconjunto.
  • En general, define de manera formal todos los pasos de creación y mantenimiento de un sistema, abarcando no solo aspectos tecnológicos, sino de procesos y de gestión.

Ciencias de la computación


Las ciencias de la computación pertenecen a un rublo diferente a los anteriores, su fin es menos práctico y más teórico, enfocándose más a asuntos académicos y de investigación y menos en conseguir un producto funcional.

Las ciencias de la computación se encarga de descubrir que es lo “que se puede hacer” y “por qué”. La ingeniería se encarga de encontrar un sentido práctico, funcional e incluso laboral, al conociendo obtenido.


No hay comentarios:

Publicar un comentario