Está en la página 1de 38

Desarrollo

INGENIERÍA DE SOFTWARE
Desarrollo
• 3.1 Lenguajes para el desarrollo de software
• 3.2 Manejadores de bases de datos
• 3.3 Construcción del sistema
3.1 Lenguajes para el
desarrollo de software
Lenguajes de programación más usados
• El mundo IT está en constante
evolución y una buena muestra
de ello son la continua
aparición de lenguajes de
programación.
• Pero, ¿sabes cuáles son los
lenguajes de programación
más usados en 2019-2020?
¿Cómo saber cuáles son los lenguajes de
programación más usados?
• Uno de los más conocidos es el índice TIOBE, que se elabora combinando el número de
páginas web dedicadas a un lenguaje, el número de búsquedas en diferentes buscadores,
cantidad de profesionales certificados…

• Sin embargo, al contar el número de páginas dedicadas a un lenguaje, el índice TIOBE puede
no reflejar el interés y uso real en la actualidad.

• En cambio, el índice PYPL (Popularity of Programming Language Index) analiza la frecuencia


con la que se buscan tutoriales para aprender un lenguaje de programación.

• Así, supone que a más búsquedas, más popular es el lenguaje de programación. Según el
Índice PYPL, los 10 lenguajes de programación más usados en todo el mundo son los
siguientes.
Phyton
• Python es uno de los lenguajes de programación más
usados actualmente y la tendencia sigue al alza. Lo tiene
todo: es de código abierto, una sintaxis sencilla y fácil de
entender, por lo que ahorra tiempo y recursos. Es uno de
los mejores para iniciarse en el mundo de la
programación.

• Python es un lenguaje versátil que puede tener múltiples


aplicaciones. Una de ellas, la Inteligencia Artificial, gracias
a bibliotecas como Keras o TensorFlow. También puede ser
de utilidad para aplicaciones de Big Data, gracias a
bibliotecas de procesamiento de datos.

• Este lenguaje de programación también se emplea en el


desarrollo web, sobre todo, gracias a sus frameworks
Django o Flask. Por poner algunos ejemplos, los sitios web
de SemRush o Reddit están desarrollados con Python.
Java
• Java es un lenguaje de programación de propósito general,
orientado a objetos y diseñado para tener las
dependencias de implementación mínimas posibles. Con
este lenguaje de programación se pueden crear
aplicaciones y procesos en múltiples dispositivos.

• Su ámbito de aplicación es amplísimo, por lo que permite


crear software para dispositivos móviles, terminales de
venta, cajeros automáticos, IoT (internet de las cosas),
además de páginas web.

• Java fue el lenguaje por defecto para desarrollar


aplicaciones para Android y, aunque Kotlin está ganando
enteros día a día, Java sigue siendo muy necesario.

• Respecto a los juegos móviles, los primeros estaban


desarrollados con Java. Hoy en día, Java sigue teniendo un
papel importante en el mundo de los videojuegos, gracias
a frameworks como JMonkeyEngine o Ardor 3D.
JavaScript
• JavaScript es un lenguaje de programación interpretado,
orientado a objetos y que se utiliza principalmente en la
forma del lado del cliente.

• Este lenguaje de programación sirve para todo:


aplicaciones web, servidores, aplicaciones móviles… Su
peculiaridad es que no necesita compilación ninguna, ya
que es el propio navegador quién lee el código y realiza las
acciones que le indica. Por este motivo, es uno de los
lenguajes para crear páginas web cuando se quieren
plantear elementos interactivos o más visuales.

• Sin embargo, gracias a las prestaciones de HTML5 y las


librerías de gráficos 2D y 3D, Javascript tiene también un
papel relevante para el desarrollo de videojuegos,
especialmente, si éste se ejecuta desde el navegador.
C#
• C# es un lenguaje que sigue apareciendo en los listados de
lenguajes de programación más usados. Creado por
Microsoft, está presente en entornos empresariales, como
instituciones gubernamentales, entidades bancarias o
médicas.

• Aunque más allá de este tipo de aplicaciones, tiene


también usos muy versátiles: internet de las cosas,
desarrollo de videojuegos, web o aplicaciones móviles.
Para el desarrollo web, puedes utilizar el framework
ASP.NET o la herramienta Xamarin para desarrollar
aplicaciones nativas para Android e iOS.

• Pero si lo tuyo son los videojuegos, C# es el lenguaje que


debes dominar. Y es que una de las herramientas más
potentes hoy en día como es Unity soporta varios
lenguajes de forma nativa. Uno de ellos es C#.
PHP
• PHP es un lenguaje de programación de
propósito general de código del lado
del servidor. Este lenguaje garantiza una
buena comunicación entre web y
servidor, por lo que las páginas web
desarrolladas con este lenguaje son
estables y con buen rendimiento.
• Actualmente, muchas páginas web
están diseñadas con WordPress, que
trabaja con PHP. Por ello, este lenguaje
te permitirá desarrollar tanto proyectos
como plugins para esta plataforma.
C/C++
• C++ es un lenguaje de
programación surgido como
extensión del lenguaje C para
que pudiese manipular
objetos. Ambos lenguajes de
programación siguen siendo
utilizados en la actualidad en
bases de datos, navegadores
web, compiladores o
videojuegos.
R
• R es un lenguaje de
programación enfocado al
análisis estadístico. Se trata de
uno de los lenguajes de
programación más utilizados
en investigación científica,
aunque también tiene
aplicaciones al machine
learning, minería de datos,
investigación biomédica o
matemáticas financieras.
Objective-C
• Objective-C es un lenguaje de
programación basado en C, pero
añadiéndole capacidades de
programación orientada a objetos. Se
trata de un lenguaje dirigido a crear
aplicaciones en iOS y macOS.
• Objective-C es un lenguaje más
complejo y con diferencias con respecto
a otros lenguajes como C# o Java. Esto
hace que muchos programadores vean
como una barrera para desarrollar para
iOS o macOS comprender bien y usar
Objective-C.
Swift
• Este lenguaje de programación se
mantiene dentro del TOP 10 de los
más usados. Creado por Apple, está
enfocado al desarrollo de
aplicaciones para iOS y macOS.

• Pese a tener poca trayectoria, surgió


en 2014, tiene una gran comunidad
de desarrollo detrás, especialmente
desde que pasó a ser de código
abierto.
Matlab
• Matlab es la abreviatura de Matrix
Laboratory, laboratorio de matrices, y
es un sistema de cómputo numérico
que ofrece un IDE (Entorno de
Desarrollo Integrado) con lenguaje de
programación propio (M).

• Entre sus prestaciones se encuentran la


representación de datos y funciones,
creación de interfaz de usuario, la
implementación de algoritmos o la
comunicación con programas en otros
lenguajes.
Y Hay Más…
• Aunque hemos repasado el top 10 de los más usados según el
índice PYPL, hay otros que se quedan fuera de los 10 clasificados,
pero que están teniendo un importante crecimiento.

• TypeScript, Kotlin, Go y Rust, son otros de los lenguajes de


programación a los que deberías seguirle la pista si no quieres
quedarte atrás
Pero…. ¿Qué es un Framework?
• Es una estructura conceptual y tecnológica de soporte definido,
normalmente con artefactos o módulos de software concretos, que
puede servir de base para la organización y desarrollo de software.
Vamos, una manera de hacernos más fácil la programación.
Ventajas de usar un FrameWork
• 1.- Evitar escribir código repetitivo
• La mayoría de los proyectos tienen partes comunes necesarias para el funcionamiento como,
por ejemplo, acceso a base de datos, validación de formularios o seguridad. Un framework nos
evita tener que programar estas partes, de esta manera nos resulta más fácil centrarnos en
programar la aplicación.
• 2.- Utilizar buenas prácticas
• Los frameworks están basados en patrones de desarrollo, normalmente MVC (Modelo-Vista-
Controlador) que ayudan a separar los datos y la lógica de negocio de la interfaz con el usuario.
Vamos, que gracias a ellos, lo tenemos todo más ordenado.
• 3.-Permitir hacer cosas avanzadas que tú no harías
• Está claro que un framework siempre te va permitir hacer cosas de una manera fácil y segura,
que para ti serían imposibles o al menos te costaría mucho tiempo hacerlas.
• 4.-Desarrollar más rápido
• Si tenemos en cuenta los puntos anteriores, sabremos que desarrollar una aplicación con un
framework nos permite hacerlo más rápido, más limpio y más seguro.
¿Qué Framework usar?
• Debemos tener claro cuáles son las
características y necesidades de
nuestro proyecto para elegir que
tecnología utilizar. Si con un framework
sencillo tenemos bastante, no hay
necesidad de usar uno más complicado,
ya que lo único que vamos a conseguir
es complicarnos la vida. Por otro lado,
utilizar el mismo framework que te fue
bien en otro proyecto, tal vez no sea la
decisión correcta. Dicho esto te
exponemos una serie de factores que
debes considerar a la hora de elegir uno
u otro:
Factores a considerar a la hora de elegir un framework
u otro
• 1.-Desarrollo web con PHP 5
• 2.-Soporte de comunidad
• Es muy importante que el framework elegido tenga una comunidad activa y participativa. De
esta manera te va a ser más fácil conseguir ayuda en los momentos difíciles. Visita la web de la
comunidad y asegúrate que obtendrás consejos y soluciones cuando los necesites.
• 3.-Documentación
• La documentación de un framework debe estar actualizada y ser lo bastante amplia para que
te ayude con los problemas que te puedan surgir. Una herramienta bien documentada es
mucho más fácil de utilizar.
• 4.-Simplicidad y potencia
• Algunos framework son muy potentes pero difíciles de entender. El código generado por el
framework debe ser claro y limpio, que no tengas que preocuparte de las peculiaridades
internas del framework.
• 6.-Reutilización
• Es imprescindible que los elementos desarrollados puedan ser reutilizados en varios proyectos.
• 7.-Patrón Active Record
• Es interesante tener una clase especifica que se encargue de realizar las operaciones de modificación y
consulta de una determinada tabla de una base de datos. De esta forma nuestra aplicación quedará
aislada del trabajo con SQL.
• 8.-Posicionamiento
• Dependiendo del proyecto puede ser que no nos interese estar bien posicionado, pero si no es así, es
interesante que el framework ofrezca funcionalidades como url’s amigables, etc., para no tener que
rehacer el proyecto más adelante.
• 9.-Seguridad
• Puede ser un tema que en un principio pasamos por alto y luego ya es demasiado tarde. Asegúrate que el
framework este desarrollado tomando la seguridad como punto de partida. Si un framework es muy
potente pero no es seguro no nos sirve de nada.

• Despues de todos estos consejos lo último que te queda es probar, ya que es la


única manera de saber si un framework se adapta a las necesidades de tu
proyecto.
3.2 Manejadores de bases de
datos
3.2 Manejadores de bases de datos
• Un Sistema Gestor de Base de Datos (SGBD)
o DataBase Managenent System (DBMS) es
un sistema que permite la creación, gestión
y administración de bases de datos, así
como la elección y manejo de las
estructuras necesarias para el
almacenamiento y búsqueda de
información del modo más eficiente
posible.
• En la actualidad, existen multitud de SGBD
y pueden ser clasificados según la forma en
que administran los datos en:
• Relacionales (SQL)
• No relacionales (NoSQL)
Sistemas Gestores de bases de datos Relacionales
(SQL)
• Desde que se comenzó a usar el modelo de bases de datos
relacionales, en 1970, ha ido sufriendo una serie de
transformaciones hasta convertirse, hoy en día, en el modelo más
utilizado para administrar bases de datos.

• Este modelo se basa fundamentalmente en establecer relaciones o


vínculos entre los datos, imaginando una tabla aparte por cada
relación existente con sus propios registros y atributos.
• Es el sistema gestor de bases de datos relacional
por excelencia.
MySQL • Es un SGBD multihilo y multiusuario utilizado en la
gran parte de las páginas web actuales. Además es
el más usado en aplicaciones creadas como
software libre.
• Se ofrece bajo la GNU GPL aunque también es
posible adquirir una licencia para empresas que
quieran incorporarlo en productos privativos
(Desde la compra por parte de Oracle se está
orientando a este ámbito empresarial).
• Las principales ventajas de este Sistema Gestor de
Bases de datos son:
• Facilidad de uso y gran rendimiento
• Facilidad para instalar y configurar
• Soporte multiplataforma
• Soporte SSL
• La principal desventaja es la escalabilidad, es decir,
no trabaja de manera eficiente con bases de datos
muy grandes que superan un determinado tamaño.
MariaDB
• Este SGBD es una derivación de MySQL que cuenta con la
mayoría de las características de este e incluye varias
extensiones.
• Nace a partir de la adquisición de MySQL por parte de
Oracle para seguir la filosofía Open Source y tiene la
ventaja de que es totalmente compatible con MySQL.
• Entre las principales características de este Sistema Gestor
de Bases de datos se encuentran:
• Aumento de motores de almacenamiento
• Gran escalabilidad
• Seguridad y rapidez en transacciones
• Extensiones y nuevas características relacionadas con su
aplicación para Bases de datos NoSQL.
• No tiene desventajas muy aparentes salvo algunas
pequeñas incompatibilidades en la migración de MariaDB
y MySQL o pequeños atrasos en la liberación de versiones
estables.
• Más que un Sistema Gestor de bases de
datos como tal, SQLite es una biblioteca
SQLite escrita en C que implementa un SGBD y que
permite transacciones sin necesidad de un
servidor ni configuraciones.
• Es una biblioteca utilizada en multitud de
aplicaciones actuales ya que es open source
y las consultas son muy eficientes.
• Las principales características de SQLite
son:
• El tamaño, al tratarse de una biblioteca, es
mucho menor que cualquier SGBD
• Reúne los cuatro criterios ACID
(Atomicidad, Consistencia, Aislamiento y
Durabilidad) logrando gran estabilidad
• Gran portabilidad y rendimiento
• La gran desventaja de SQLite es la
escalabilidad ya que no soporta bases de
datos que sean muy grandes.
PostgreSQL
• Este sistema gestor de base de datos relacional está
orientado a objetos y es libre, publicado bajo la
licencia BSD.
• Sus principales características son:
• Control de Concurrencias multiversión (MVCC)
• Flexibilidad en cuanto a lenguajes de programación
• Multiplataforma
• Dispone de una herramienta (pgAdmin,
https://www.pgadmin.org/) muy fácil e intuitiva
para la administración de las bases de datos.
• Robustez, Eficiencia y Estabilidad.
• La principal desventaja es la lentitud para la
administración de bases de datos pequeñas ya que
está optimizado para gestionar grandes volúmenes
de datos.
Microsoft SQL Server
• Es un sistema gestor de bases de datos relacionales
basado en el lenguaje Transact-SQL, capaz de poner
a disposición de muchos usuarios grandes
cantidades de datos de manera simultánea.
• Es un sistema propietario de Microsoft. Sus
principales características son:
• Soporte exclusivo por parte de Microsoft.
• Escalabilidad, estabilidad y seguridad.
• Posibilidad de cancelar consultas.
• Potente entorno gráfico de administración que
permite utilizar comandos DDL y DML.
• Aunque es nativo para Windows puede utilizarse
desde hace ya un tiempo en otras plataformas
como Linux o Docker.
• Su principal desventaja es el precio. Cuenta con un
plan gratuito (Express) pero lo normal es la elección
de alguno de los planes de pago disponibles
(Standard, Developer, Enterprise o SQL Azure, la
versión de SQL Server en la nube).
Oracle
• Tradicionamente, Oracle ha sido el
SGBD por excelencia para el mundo
empresarial, considerado siempre
como el más completo y robusto,
destacando por:
• Soporte de transacciones.
• Estabilidad.
• Escalabilidad.
• Multiplataforma.
• La principal desventaja, al igual que SQL
Server, es el costo del software ya que,
aunque cuenta con una versión gratuita
(Express Edition o XE), sus principales
opciones son de pago.
Sistemas Gestores de bases de datos NoRelacionales
(NoSQL)
• Una base de datos no relacional (NoSQL) es aquella base de datos que:

• No requiere de estructuras de datos fijas como tablas


• No garantiza completamente las características ACID
• Escala muy bien horizontalmente.
• Se utilizan en entornos distribuidos que han de estar siempre disponibles
y operativos y que gestionan un importante volumen de datos.

• Para la administración de este tipo de bases de datos, actualmente los


principales sistemas gestores de bases de datos (SGBD NoSQL) son:
MongoDB
• Estamos ante el Sistema Gestor de Bases de Datos no
relacionales (SGBD NoSQL) más popular y utilizado
actualmente.
• MongoDB es un SBGD NoSQL orientado a ficheros que
almacena la información en estructuras BSON con un
esquema dinámico que permite su facilidad de
integración.
• Empresas como Google, Facebook, eBay, Cisco o
Adobe utilizan MongoDB como Sistema Gestor de
Bases de datos.
• Las principales características de MongoDB son:
• Indexación y replicación
• Balanceo de carga
• Almacenamiento en ficheros
• Consultas ad hoc
• Escalabilidad horizontal
• Open Source
• Como desventaja principal, MongoDB no es un SGBD
adecuado para realizar transacciones complejas.
Redis
• Redis está basado en el
almacenamiento clave-valor. Podríamos
verlo como un vector enorme que
almacena todo tipo de datos, desde
cadenas, hashses, listas, etc.
• El principal uso de este SGBD es para el
almacenamiento en memoria caché y la
administración de sesiones.
• Las características principales son:
• Atomicidad y persistencia
• Gran velocidad
• Simplicidad
• Multiplataforma
Cassandra
• Al igual que Redis, Cassandra también utiliza
almacenamiento clave-valor. Es un SGBD NoSQL
distribuido y masivamente escalable.
• Facebook, Twitter, Instagram, Spotify o Netflix
utilizan Cassandra.
• Dispone de un lenguaje propio para las consultas
denominado CQL (Cassandra Query Languaje).
• Las principales características de este SGBD NoSQL
son:
• Multiplataforma
• Propio lenguaje de consultas (CQL)
• Escalado lineal y horizontal
• Es un SGBD distribuido
• Utiliza una arquitectura peer-to-peer
Otros SGBD NoSQL
• Otros Sistemas Gestores de bases de datos no relacionales muy utilizados son:
• Azure Cosmos DB
• RavenDB
• ObjectDB
• Apache CouchDB
• Neo4j
• Google BigTable
• Apache Hbase
• Amazon DynamoDB
¡Adáptate a tus datos!
• Existen más gestores de bases de datos en el mercado, pero estos son los
más usados.

• Es importante entender que, para elegir el SGBD más adecuado, se debe


comenzar por el estudio del tipo de datos que se van a almacenar y
cómo se van a administrar.

• Entre los Sistemas Gestores de Base de Datos citados seguro que


encontrarás el que más se adapta a tus necesidades de acuerdo a la
inversión a realizar, volumen de información a almacenar, tipo de
consultas a realizar, etc.
3.3 Construcción del Sistema

También podría gustarte