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.