Está en la página 1de 19

|1

Fundamentos de
Construcción de
Software

Etapa de Contextualización
|2

Tabla de contenido
Introducción ....................................................................................................................... 3

Pregunta orientadora ......................................................................................................... 5

1. Introducción a los Fundamentos de Construcción de Software ........................... 6

1.1. Primera Generación (1950-1965) .............................................................. 6

1.2. Segunda generación (1965-1972) ............................................................. 6

1.3. Tercera Generación (1972-1989) .............................................................. 7

1.4. Cuarta generación. (1990-Hoy) ................................................................. 8

1.5. Quinta generación. .................................................................................... 8

2. La industria del software en Colombia ........................................................................ 9

2.1. Número de empresas del sector de las TI en Colombia ............................ 9

2.2. Tamaño de las empresas por el valor de sus ventas............................... 10

2.3. Productos y servicios que ofrece el sector de la teleinformática, software y ti

en Colombia ................................................................................................................. 10

7.Clasificación del software.............................................................................................. 12

7.1 Software de Sistema ................................................................................... 12

7.1.1 Sistema operativo .................................................................................... 12

8. Lenguajes de programación ......................................................................................... 14

Recursos complementarios.................................................. ¡Error! Marcador no definido.

Glosario ........................................................................................................................... 19
|3

Introducción

Desde la década de 1940, diseñar e implementar software ha evolucionado hasta


convertirse en una profesión que se ocupa de cómo crear mantener y maximizar su calidad.
A medida que los ordenadores iniciaron a tener un precio suficientemente bajo para ser
adquiridos por empresas menos grandes y pudientes, pero con el inconveniente de no
poder costear un departamento dedicado a programarlos a la medida de sus necesidades.
Iniciaron a surgir compañías dedicadas a este fin, precisamente. El punto de inflexión llegó
cuando una de ellas, ADR, hizo un programa en 1964 para que el fabricante de ordenadores
RCA lo ofreciera gratis a sus clientes, como era la costumbre.

Es cuando surge el programa Autoflow la herramienta diseñaba diagramas de flujo, a partir


de la codificación de un programa. Teniendo en cuenta que los diagramas de flujo en
aquella época formaban parte de la documentación que tenían que hacer los
programadores como parte funcional de la herramienta, pero los desarrolladores por
tradición no documentaban su trabajo, lo normal es que no lo hicieran o que lo realizaran
una sola vez, de modo que, si se reescribía el programa, como es lo habitual, el diagrama
ya no se correspondía. Pues bien, Autoflow cogía el código de un programa e imprimía
automáticamente el diagrama. ADR exigió un valor por el software sin llegar a un acuerdo
con RCA.

ADR lo comercializó en su primera versión sin mucho éxito, pero posteriormente lo


reescribió para el lenguaje más popular, Autocoder, del ordenador más vendido del
momento, el IBM 1401, por su parte RCA produjo un programa similar. ADR patentó el
suyo, pero con la idea de no venderlo así que hizo firmar contratos de arrendamiento a sus
clientes con la prohibición de reproducción y solo para su utilización. Para 1970, el programa
tenía aproximadamente dos mil usuarios, cifra bastante alta para una época en que no
había ordenadores personales.
|4

Posteriormente se desarrolló un programa que marcaría la línea que seguiría la mayoría de


las empresas a partir de entonces se llamó Mark IV, y fue comercializado por la empresa
Informatics en 1967. Era un gestor de ficheros, es decir, un precursor de las modernas
bases de datos, como las que vende Oracle, escrito para la gama de computadores
System/360 de IBM, lo que le permitía un público potencial muy alto. alcanzó el millón de
dólares en en ventas el primer año, y los términos en que ofrecía su software, fueron
similares a los de Autoflow, convirtiéndose en el estándar que seguiría la industria hasta
nuestros días: alquiler indefinido del programa y unos términos y condiciones que prohibían
la copia a terceros. Al principio ofrecía gratuitamente a sus clientes las mejoras al programa,
pero tras cuatro años decidió cambiar de política y cobrar por las versiones nuevas.

En 1969 IBM, decide separar el hardware del software y venderlos por separado, como dos
productos independientes pero relacionados esto a raíz de una investigación de las
autoridades antimonopolio. Los sistemas operativos y los lenguajes de programación
seguían incluidos en el precio de la máquina, pero con este movimiento los programas del
principal vendedor de ordenadores se ponían a la par que las de otros proveedores, en
aquel año la industria ingresó unos 20 millones de dólares, para 1975 la cifra se había
llegado hasta los 400. De ese dinero, 7,4 millones correspondían a Mark IV.

Cuando hablamos de software la imagen que todos tenemos en mente es Microsoft, lo


cierto es que todo el negocio de la industria del software correspondía a aplicaciones
destinadas a empresas y a la solución de problemas de tipo general. Hoy en día las
principales empresas del ramo, quitando la compañía de Bill Gates, tienen nombres tan
poco conocidos como SAP, Computer Associates, Software AG, Sybase, Informix... Y
algunos algo más familiares como IBM, HP, Oracle o Ericsson. Desde sus inicios el software
ha evolucionado el siguiente listado agrupa en el tiempo su desarrollo y evolución.
|5

Pregunta orientadora

Después de leer la acción formativa podrá dar respuesta sobre los conceptos generales
asociados con la construcción de software con los siguientes interrogantes: ¿Usted cómo
podría identificar las generaciones del desarrollo de software? ¿Para usted por qué es
importancia de la industria del software en Colombia? ¿Cómo realizarías la clasificación
sobre las aplicaciones de software y como resaltarías su existencias y relevancia en el
mercado? ¿Cuándo hablamos de los diferentes paradigmas de programación, puedo
determinar las diferencias en su clasificación? ¿Cuál sería la definición de lenguaje de
programación y cuales son los más utilizados en la industria?
|6

1. Introducción a los Fundamentos de Construcción de Software

1.1. Primera Generación (1950-1965)

En los primeros años de vida del software se consideraba como un añadido, los
ordenadores se programaban directamente en código de máquina (basado en sistema
binario), el software se desarrollaba con poca o ninguna planificación y sin ningún tipo de
documentación, prácticamente se programaba a prueba-error, siendo el hardware el
propósito principal No obstante, cada modelo de ordenador tenía su propia estructura
interna a la hora de programarse. A estos lenguajes se les denominaba Lenguaje de bajo
nivel, porque afectaban y controlaban directamente al hardware y estaban condicionados
por la estructura física de las computadoras. Dado que este tipo de lenguaje se acerca
mucho más a la lógica de la máquina es mucho más complicado programar, el uso de la
palabra bajo en su denominación no implica que el lenguaje sea menos potente que
un lenguaje de alto nivel se refiere al propósito principal que era el hardware, este tipo de
lenguajes se utilizan para programar ciertas tareas de los sistemas operativos, de
aplicaciones en tiempo real o controladores de dispositivos.

1.2. Segunda generación (1965-1972)

Esta generación nace con la incorporación del "transistor" a los ordenadores dando mayor
velocidad de procesamiento y que sustituyó a los bulbos electrónicos utilizados en los
equipos en años anteriores. Los lenguajes simbólicos, asimismo propios de la máquina,
simplifican la escritura de las instrucciones y las hacen más legibles, estos usan
abreviaciones para las instrucciones, como ADD (sumar), en lugar de números. Con esto
la programación se hizo menos engorrosa. Se utiliza el lenguaje ensamblador ensamblado
a través de un macroensamblador. Es el lenguaje de máquina combinado con una serie de
poderosas macros que permiten declarar estructuras de datos y de control complejas.
|7

Con el avance en el software de esta generación se redujo considerablemente


los costos asociados a la operación de los ordenadores que para este tiempo se usaban
principalmente en grandes empresas, universidades y organismos de gobierno.A partir de
esta época las computadoras se hacen mucho más conocidas y se deja de pensar que su
uso es exclusivo para científicos ya que se pensaba que habían sido diseñadas
por matemáticos para el uso de los matemáticos, pero ahora se hacía evidente su potencial
de uso en actividades comerciales.

También se inicia el desarrollo de los lenguajes de alto nivel, como FORTRAN (1954)
y COBOL (1959), que se acercan más a la lengua inglesa que el ensamblador facilitando la
codificación y permitiendo a los programadores dedicar más atención a la resolución de
problemas que a la codificación de programas. Se inicia así el desarrollo de los llamados
sistemas de cómputo.

1.3. Tercera Generación (1972-1989)

Junto con la evolución del software evolucionan los equipos de cómputo, se desarrollan los
circuitos integrados que es un circuito electrónico completo sobre una pastilla (chip) de
silicio. Aumentando ampliamente la velocidad de procesamiento; también se diversifican
los medios de almacenamiento externo así como la capacidad en disco duro.

Después del desarrollo lenguajes de alto nivel que sustituyen las instrucciones simbólicas
por códigos independientes de la máquina, parecidas al lenguaje humano o al de
las Matemáticas. Se aplican y utilizan estos lenguajes para que el usuario común pueda
solucionar problema de procesamiento de datos de una manera más fácil y rápida. Son
usados en ámbitos computacionales donde se logra un alto rendimiento con respecto a
lenguajes de generaciones anteriores. Entre ellos se encuentran
Ada, C++, C#, Cobol, Delphi Smalltalk, entre otros. Algunos de estos lenguajes pueden ser
de propósito general, es decir, que el lenguaje no está enfocado a una única especialidad,
sino que puede usarse para crear todo tipo de programas, se automatizan ciertas tareas
comunes creando bibliotecas para facilitar la programación permitiendo la reutilización de
código.
|8

1.4. Cuarta generación. (1990-Hoy)

Los ordenadores son controlados por microprocesadores, se miniaturiza los equipos y su


capacidad de procesamiento, aumenta su capacidad a límites impensados en épocas
anteriores, existe un aumento cuantitativo y cualitativo de las bases de datos, se desarrollan
nuevas y variadas formas de gestión para facilitar la consulta y edición, se desarrollan
herramientas que permiten construir aplicaciones sencillas combinando piezas
prefabricadas incursionan nuevos paradigmas de programación como ingeniería basada
por componentes. Cabe mencionar que, algunos proponen reservar el nombre de cuarta
generación para la programación orientada a objetos. Algunas de sus características son:
acceso a base de datos, capacidades gráficas, generación de código automáticamente, así
como poder programar visualmente (como por ejemplo Visual.Net o SQL). Entre sus
ventajas se cuenta una mayor productividad y menor agotamiento del programador, así
como menor concentración por su parte, ya que las herramientas proporcionadas incluyen
secuencias de instrucciones.

Se facilita el mantenimiento de las nuevas aplicaciones ya que se enfoca los esfuerzos al


problema en sí, teniendo en cuenta que se incorporan prefabricados o componentes
debidamente probados. Por otro lado, sus desventajas consisten en que estas
herramientas prefabricadas son generalmente menos flexibles que las instrucciones
directas en los lenguajes de bajo nivel. Además, se suelen crear dependencias con uno o
varios proveedores externos, lo que se traduce en pérdida de autonomía. Asimismo, es
frecuente que dichas herramientas prefabricadas contengan librerías de otros proveedores,
que conlleva instalar opciones adicionales que son consideradas opcionales. A menos que
existan acuerdos con otros proveedores, son programas que se ejecutan únicamente con
el lenguaje que lo creó.

1.5. Quinta generación.

En esta generación, la tecnología se caracterizan por ser más portables que ninguna de las
anteriores y se encuentra supremamente avanzadas la capacidad de procesamiento
|9

supera y por mucho a las anteriores, en estas se tiene un visión a la creación de


la Holografía y de la inteligencia artificial.

2. La industria del software en Colombia

A diferencia de varios países en Latinoamérica Colombia cuenta con El Ministerio de


Tecnologías de la Información y las Comunicaciones, según la Ley 1341 o Ley de TIC del
30 de julio de 2009, es la entidad que se encarga de diseñar, adoptar y promover las
políticas, planes, programas y proyectos del sector de las Tecnologías de la Información y
las Comunicaciones.

Según Fedesoft, (2019), argumenta que a los 30 años de trayectoria en Colombia la


Federación Colombiana para la Industria del Software y Tecnologías Informáticas
Relacionadas FEDESOFT, trabaja por el fortalecimiento de la industria del software
nacional. La federación trabaja en el desarrollo de políticas públicas, el impulso de la
formación y la competitividad de las firmas del sector, la generación de información sectorial
especializada y la exploración de oportunidades globales que posicionen a Colombia como
proveedor tecnológico de talla mundial. Actualmente, Fedesoft cuenta con cerca de 535
empresas afiliadas de todo el país, que representan cerca del 50% del total de la industria
del software nacional. La federación sostiene convenios con entidades del Gobierno,
unidades y otras asociaciones para cumplir su propósito de defender y promover la industria
nacional del software y en particular a sus afiliados.

2.1. Número de empresas del sector de las TI en Colombia

De acuerdo con el Censo del Directorio de Empresas Activas de la Industria del Software y
Servicios Asociados con TI de Colombia realizado por MinTIC, en el 2014 en Colombia
había 4016 empresas activas de las cuales el 80% se encuentran en la Región Centro, el
4% en la Región Norte, 6% en la Región Occidente, 4% en la Región Oriente, y el 6%
distribuidas en el resto del país.
|10

Figura 1. Distribución empresas activas del sector de las TI en Colombia 2014

Fuente: Fundación Universitaria Compensar (2021). Censo MinTIC, 2014

2.2. Tamaño de las empresas por el valor de sus ventas

Por el valor de sus ventas el mayor número de empresas en Colombia se ubica en el rango
de menos de 294 millones de pesos en ventas, únicamente el 3% de las empresas
presentan ventas superiores a 17.000 millones de pesos.

Figura 2. Tamaño de las empresas por valor de ventas

Fuente: Unipanamericana Compensar (2019). Censo MinTIC, 2014

2.3. Productos y servicios que ofrece el sector de la teleinformática, software y ti en


Colombia
|11

La figura 4 muestra los productos y servicios ofrecidos por el sector, así como también el
porcentaje de empresas que los ofrecen. De acuerdo con los resultados obtenidos en el
censo del 2014 realizado por el MinTIC1, se evidencia que el servicio más ofrecido por las
empresas encuestadas es el de data center con 21.2%, seguido por desarrollo/fábrica de
software con un 19.2%.

Figura 3. Productos y/o servicios ofrecidos por el sector

Fuente: Fundación Universitaria Compensar (2021). Censo MinTIC, 2014

De acuerdo con Censo MinTIC, (2014). El Gobierno Nacional entiende la importancia de


las Tecnologías de la Información, software y Teleinformática en el desarrollo de la
competitividad del país, por esta razón ha hecho ingentes esfuerzos por fortalecer la
infraestructura existente y con ella lograr la conectividad del 100% de los municipios; la
implementación de estrategias como gobierno en línea, TIC y comunidades étnicas, la
promoción de la industria de contenidos digitales, entre muchos otros, son programas que
facilitan la innovación, el acceso, la interacción y el desarrollo de la sociedad en su conjunto.
|12

Se propone visitar el siguiente enlace como material


complementario para afianzar conocimientos sobre el desarrollo
de software en Colombia

El software en Colombia

3. Clasificación del software

El Software son el conjunto de programas, aplicativos y sistemas operativos, que según las
funciones que realizan pueden ser clasificados en:

3.1. Software de Sistema

También llamado Software de Base se trata de un conjunto de programas que permiten


integrar y administrar los componentes de hardware, tomando el control sobre este,
proporciona un ambiente amigable para ejecutar otras aplicaciones además de dar soporte
y a otros programas.

El Software de Sistema se divide en:

Sistema operativo

También denominado OS por sus siglas en inglés (Operating System) el Sistema


Operativo es un conjunto de programas que administran los recursos de la computadora y
controlan su funcionamiento.

Funciones básicas
|13

✓ Suministro de Interfaz al Usuario

✓ Administración de Recursos

✓ Administración de Archivos

✓ Administración de Tareas

✓ Servicio de Soporte

entre ellos podemos encontrar Windows desarrollado por Microsoft en 1982 y puesto en
funcionamiento en 1985, Mac OS, Unix, GNU/Linux, Solaris.

Suministro de interfaz al usuario: Se basan en comandos, que permiten al usuario


comunicarse con la computadora interfaces que utilizan menús, e interfaces gráficas de
usuario.

Administración de recursos: Administran los recursos del hardware como la CPU,


memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.

Administración de archivos: Controla la creación, borrado, copiado y acceso de archivos


de datos y de programas.

Administración de tareas: Administra la información sobre los programas y procesos que


se están ejecutando en la computadora. Puede cambiar la prioridad entre procesos,
concluirlos y comprobar el uso de estos en la CPU, así como terminar programas.

Servicio de soporte: Los Servicios de Soporte de cada sistema operativo dependen de las
implementaciones añadidas a este, y pueden consistir en inclusión de utilidades nuevas,
actualización de versiones, mejoras de seguridad, controladores de nuevos periféricos, o
corrección de errores de software.
|14

4. Conceptos asociados en la construcción de software

Lenguajes de programación

En los inicios de la informática, los programas se codificaban en código máquina y


requerían un conocimiento profundo del ordenador. Por ejemplo si un científico quisiera
resolver un problema matemático ayudándose del ordenador tenía entonces dos problemas
más: cómo generar un algoritmo que resolviera el problema y cómo traducir ese algoritmo
a código máquina. El hardware es la parte física de un ordenador: el procesador, la
memoria, los dispositivos, etc. Pero entonces surge la pregunta ¿se podría crear un
lenguaje que permitiera leer y modificar los programas fácilmente sin preocuparse del
hardware? Veamos si eso se ha conseguido, analizando los lenguajes más importantes
históricamente y en la actualidad. Uno de los primeros lenguajes conocidos y utilizados en
todo el mundo fue FORTRAN. Posteriormente se crearon COBOL y LISP. Estos tres han
sido los padres de los lenguajes de programación y han servido de base para el desarrollo
de muchos otros. A continuación, se describen algunas de las distintas variantes de
paradigmas de programación:

Figura 4. Ranking lenguajes de programación más utilizados

Fuente: Fundación Universitaria Compensar (2021). Índice TIOBE Junio de 2019


|15

TIOBE: El índice de la Comunidad de Programación TIOBE es un


indicador de la popularidad de los lenguajes de programación. El
índice se actualiza una vez al mes. Las calificaciones se basan en
el número de ingenieros calificados en todo el mundo, cursos y
proveedores externos. Los motores de búsqueda populares como
Google, Bing, Yahoo !, Wikipedia, Amazon, YouTube y Baidu se
utilizan para calcular las calificaciones.

Figura 5. Ranking lenguajes de programación más utilizados gráfico

Fuente: Fundación Universitaria Compensar (2021). Índice TIOBE Junio de 2019

Los lenguajes de programación se pueden clasificar según varios criterios:

Por ejemplo por evolución histórica generación a la cual pertenece el lenguaje, nivel de
abstracción, propósito, forma de ejecutarse, paradigma de programación, lugar de
ejecución, concurrencia, interactividad. La mayoría de lenguajes no pueden ser clasificados
en una categoría, pues surgen incorporando ideas de otros lenguajes y de varios
paradigmas de programación

Nivel de abstracción, o sea, según el grado de cercanía a la máquina:


|16

• Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las


características del procesador. Ejemplo: Lenguajes ensamblador.
• Lenguajes de nivel medio: Permiten un mayor grado de abstracción, pero al mismo
tiempo mantienen algunas cualidades de los lenguajes de bajo nivel.
• Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos,
tipos de datos, etc., de una manera cercana al pensamiento humano ignorando
(abstrayéndose) del funcionamiento de la máquina.

Propósito, Es decir, el tipo de problema que se desea solucionar al ser utilizado:

• Lenguajes de propósito general: Aptos para todo tipo de tareas: Ejemplo: C.


• Lenguajes de propósito específico: Hechos para un objetivo muy concreto. Ejemplo:
Csound (para crear ficheros de audio).
• Lenguajes de programación de sistemas: Diseñados para programar sistemas
operativos o drivers. Ejemplo: C.
• Lenguajes de script: Para realizar tareas varias de control y auxiliares. Antiguamente
eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (“Job Control
Languages”). Se subdividen en varias clases (de shell, de GUI, de programación
Web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript (programación Web).

Manera de ejecutarse.

• Lenguajes compilados: Un programa traductor traduce el código del programa


(código fuente) en código máquina (código objeto). Otro programa, el enlazador,
unirá los ficheros de código objeto del programa principal con los de las librerías
para producir el programa ejecutable. Ejemplo: C.

• Lenguajes interpretados: Un programa (intérprete), ejecuta las instrucciones del


programa de manera directa. Ejemplo: Lisp. También los hay mixtos, como Java,
que primero pasan por una fase de compilación en la que el código fuente se
transforma en “bytecode”, y este “bytecode” puede ser ejecutado luego
|17

(interpretado) en ordenadores con distintas arquitecturas (procesadores) que


tengan todos instalados la misma “máquina virtual” Java.

Manera de abordar la tarea a realizar.

Según la manera de abordar la tarea a realizar, pueden ser:

• Lenguajes imperativos, Lenguajes declarativos. Ejemplos: de lenguajes


declarativos, pero que no son lenguajes de programación, son HTML (para describir
páginas Web) o SQL (para consultar bases de datos).

Paradigma de programación. El paradigma de programación es el estilo de programación


empleado.

Se propone visitar el siguiente enlace como material


complementario para afianzar conocimientos sobre Tipos de
software

Tipos de software
|18

Referencias

• Mazón Olivo, B. E., Cartuche Calva, J. J., Chimarro Chipantiza, V. L., & Rivas
Asanza, W. B. (2015). Fundamentos de programación orientada a objetos en JAVA.
• Null, Linda. (2012). The essentials of computer organization and architecture.
Sudbury.
Clasificación: 004.22 N855e.
• Anfinson, David. (2009). Fundamentos de tecnología de la información: Hardware y
Software para PC. Pearson.Clasificación: 004.6 A534f
• Pressman, Roger. (2006). Ingeniería del Software: un enfoque práctico. McGraw Hill
Clasificación: 005 P737i
• Synspace.(2000-2019).Visible body: Indice TIOBE .Suiza.Recuperado de
https://www.tiobe.com/tiobe-index
• Fedesoft.(1987-2019).Visible body: Indice.Fedesoft-Federación Colombiana de
Software .Colombia.Recuperado de https://fedesoft.org/
|19

Glosario
Paradigma de Programación: Un paradigma de programación es un estilo de desarrollo de
programas. Es decir, un modelo para resolver problemas computacionales. Los lenguajes
de programación, necesariamente, se encuadran en uno o varios paradigmas a la vez a
partir del tipo de órdenes que permiten implementar, algo que tiene una relación directa con
su sintaxis.

Lenguaje de Programación: Es el conjunto de instrucciones a través del cual los humanos


interactúan con las computadoras. Un lenguaje de programación nos permite comunicarnos
con las computadoras a través de algoritmos e instrucciones escritas en una sintaxis que la
computadora entiende e interpreta en lenguaje de máquina.

Código Binario: El código binario permite entender y diseñar sistemas electrónicos digitales.
Su sistema de numeración es de vital importancia para la electrónica. También existen
distintas configuraciones como BDC, ASCII, etc. Los códigos binarios son un arreglo de dos
caracteres, 1 y 0. Entonces, con sólo estos dos dígitos se pueden representar a todo el
conjunto de números. También se pueden realizar operaciones lógicas y aritméticas.
Incluso se pueden representar números imaginarios y reales. Dicha numeración se puede
representar o medir en bits de información. Por ejemplo, 8 bits de información permiten
representar hasta 2^8 = 256 combinaciones, desde 0 hasta 255. Cuando se crea un numero
con signo, el bit 7 se usa para representar al signo, 0 en el último bit representaría el + y 1
el menos. Por lo tanto, un numero con signo de 8 bits, puede representar valores desde -
127 hasta +127.

También podría gustarte