UNIDAD 1
Introducción a los sistemas
¿Qué es un sistema?
Iniciamos el recorrido introduciendo los conceptos básicos relacionados con sistemas, sistemas informáticos y software.
Esta unidad nos servirá para unificar las definiciones que debemos conocer antes de comenzar a programar.
Seguramente el término “sistema” lo habrán conocido cuando cursaban su escuela secundaria, en la asignatura Biología.
También, en la vida cotidiana utilizamos este concepto para hablar del sistema ferroviario, sistema de salud, sistema inmunológico, por nombrar algunos.
Entonces…
Te contamos que el concepto de sistema surge del denominado enfoque sistémico, basado en la Teoría General de los Sistemas formulada a mediados del Siglo XX.
Inicialmente, esta teoría estaba basada en el estudio de los organismos como sistemas biológicos, pero luego se generalizó su alcance a todo tipo de sistemas. De tal manera que hoy se utiliza el término sistema en todas las áreas del conocimiento humano.
¿Qué es un software?
Hoy en día, gracias a la utilización de la tecnología y de los sistemas en la gran parte de las actividades, el término software se usa constantemente, pero no siempre queda bien claro a qué se refiere. El software en un sistema corresponde a todos los elementos lógicos, intangibles.
Seguramente estarás pensando que no, todos estos elementos son tangibles.
Es por eso que podemos ponernos de acuerdo en definir que:
Ciclo de vida de software
Todo programa está formado por un conjunto de módulos o subprogramas que interactúan entre sí. En muchos casos, durante todo el proceso de desarrollo, intervienen distintas personas con diferentes responsabilidades. Es por eso que los programas atraviesan diferentes etapas durante su proceso de construcción, y es lo que se conoce como «ciclo de vida«.
El desarrollo de un sistema se realiza durante todo el ciclo de vida, que es el período de tiempo que se extiende desde la idea original del problema a resolver hasta el mantenimiento y desarrollo de las mejoras.
Independientemente de las metodologías de desarrollo que se utilicen, podemos identificar las siguientes etapas o momentos en el desarrollo del software:
El siguiente esquema nos presenta una visualización del ciclo de vida del software:
Metodologías de desarrollo de sistemas
Como definimos anteriormente, las etapas del ciclo de vida del software son los procesos generales que suele tener todo desarrollo. Ahora bien, a lo largo de las últimas décadas se han estudiado estos procesos para buscar cuál es el método óptimo. Como resultados de esos trabajos se han desarrollado diferentes metodologías de desarrollo de sistemas. Cada una de ellas presenta ventajas y desventajas, y no hay una que sea mejor que las otras en todos los casos.
Dependiendo del proyecto, la cantidad de personas que intervengan y hasta los plazos de desarrollo y entrega del producto, algunas metodologías serán mucho más eficientes que otras. Por eso es importante conocer cuáles son las principales metodologías, para poder tomar tus propias decisiones.
Entonces nos preguntamos…
Les presentaremos a continuación los principales modelos de desarrollo:
- Modelo de cascada,
- Modelo espiral,
- Modelos de desarrollo iterativo e incremental,
- Modelo de desarrollo ágil.
1. Modelo de cascada
El modelo cascada define las siguientes etapas que deben cumplirse de forma sucesiva:
Este modelo es el denominado modelo clásico de software, ya que está relacionado con las etapas del ciclo de vida.
2. Modelo espiral
En el modelo espiral, durante cada ciclo se realizarán cuatro actividades:
3. Modelos de desarrollo iterativo e incremental
En estos modelos también se realiza un desarrollo por ciclos.
Si estamos realizando un desarrollo iterativo, en cada ciclo o iteración, se revisa y mejora el producto desarrollado. Es importante señalar que este ciclo no implica añadir funcionalidades en el producto, pero si la revisión y la mejora.
Si estamos realizando un desarrollo incremental, en cada ciclo iremos liberando partes del software (que se llaman prototipos) periódicamente, en cada iteración, y cada nueva versión, normalmente, aumenta la funcionalidad y mejora en calidad respecto a la anterior.
4. Modelo de desarrollo ágil
El modelo de desarrollo ágil se basa en los modelos iterativos e incrementales, en donde los ciclos son muy cortos (en general una o dos semanas) y con la distinción que dentro de ellos no se encuentran etapas en cascada.
Lenguajes de programación
Entonces:
Ahora te presentaremos los principales tipos de lenguajes de programación utilizados en la actualidad:
Lenguaje de máquina
Este lenguaje es el que entiende directamente una computadora. Está formado por instrucciones binarias (dígitos 0 y 1) que especifican operaciones y las direcciones de memoria implicadas en dichas operaciones.
El código máquina es el denominado código binario. Estas instrucciones dependen del hardware de la computadora, y por lo tanto, varían de una en otra.
Este lenguaje al ser entendible por computadoras es muy poco legible y claro para los programadores, es por eso que se han desarrollado otros lenguajes de programación más cercanos a los idiomas para que sea mucho más fácil programar. Estos lenguajes se dividen en lenguajes de bajo y de alto nivel.
Lenguaje de bajo nivel
Es más simple de utilizar que el lenguaje máquina, pero también depende del hardware en donde se esté ejecutando.
El principal lenguaje de bajo nivel es el ensamblador.
Lenguajes de alto nivel
Estos lenguajes son los más utilizados por los programadores, ya que están diseñados para que las personas lo pueden entender de manera mucho más fácil que los lenguajes de bajo nivel.
Otra ventaja que tiene es que un programa escrito en este tipo de lenguaje es independiente del hardware en donde se va a ejecutar.
Los principales lenguajes de alto nivel son C, C++, Pascal, Java, VisualBasic.
Los programas fuente escritos en estos lenguajes tiene que ser traducidos al lenguaje máquina. Para eso se utiliza un programa traductor que es un intérprete o un compilador.
En la siguiente sección te presentaremos los programas traductores utilizados por los lenguajes de alto nivel.
Lenguajes interpretados y compilados
De esta manera tenemos lenguajes interpretados o compilados.
Por otro lado, los lenguajes compilados son aquellos que necesitan un compilador para poder ejecutarse.
En general, el programa objeto es la traducción al código máquina, y que depende de cada modelo de computadora. Por lo tanto, el compilador debe ser específico para el modelo de computadora que va a ejecutar el programa.
El proceso de compilación abarca las siguientes etapas:
- Compilación del programa fuente.
- Verificación de errores de compilación.
- Obtención del programa objeto.
- Enlace del programa objeto con todos los programas necesarios del sistema operativo.
- Ejecución del programa.