Gedi Automate and sell more with our CRM and Sales Advisor EMIASSISTANT IA. Mobile and web design. 🤖 🇦🇪🇺🇸🇬🇧 Estamos consolidados cómo compañía desde hace 10 años.

Somos una agencia digital enfocada en el desarrollo de software corporativos. Implementamos estrategias de Marketing Digital de alto impacto para lograr el aumento en la adquisición de clientes, y recordación de la marca, desarrollamos aplicaciones móviles, comercio electrónico y sitios web especializados. Contamos con personas profesionales capacitadas y certificadas por Google para ofrecer un se

rvicio profesional y de calidad. Síguenos en
Twitter: Gediisas
Linkedln: Gedi International SAS
Instagram: Gedicolombia

¿Qué caracteriza a un buen diseño de software? Es bastante más fácil señalar las características que debe tener un buen ...
17/01/2018

¿Qué caracteriza a un buen diseño de software?

Es bastante más fácil señalar las características que debe tener un buen diseño de software(1) que explicar como llegar a él. Hay muchos artículos que recogen algunas de estas características, y hoy quiero mostrar como estos incluyen a menudo elementos que tienen poco que ver con lo bueno o lo malo que sea este diseño. Usaré como ejemplos tres de los resultados que me han salido en la primera página de la búsqueda en Google de good software design.

La primera característica de un buen diseño de software que aparece en este breve artículo, es “que proporciona la funcionalidad necesaria”. La primera en la frente. Un diseño malo también puede proporcionar la funcionalidad necesaria. Por ese camino no distinguiremos entre diseño bueno y diseño malo. Ese mismo fallo lo cometen también en este otro, que nos indica en el segundo punto que el buen diseño debe ser “robusto”. Esto no suena mal, robusto es una palabra con connotaciones positivas, pero cuando concretan lo que es robusto dicen que “el software es resistente a fallos, capaz de reconocer cuando ha habido fallos y capaz de recuperarse de los mismos”. Están describiendo características de un buen software, no de un buen diseño. Un software mal diseñado puede exhibir características positivas: lleno de funcionalidades útiles, eficiente, robusto, estéticamente atractivo, intuitivo, bien integrado con otros programas del entorno, barato etc. Ninguna de estas cosas nos asegura que su diseño sea bueno. Si seguimos leyendo este segundo artículo, encontramos que casi todas las características que describen son las de un buen software y no las de un buen diseño.

Aquí empiezan mejor encaminados: complejidad mínima, fácil de mantener, autoexplicativo etc. pero acaban por cometer el mismo error. Dicen que un buen diseño es reusable (podría ser), pero luego explican que “diseñamos el sistema para que puedan usarse piezas de él en otros sistemas”. Explicada así, la reusabilidad es de los componentes del sistema, no del diseño. Un sistema mal diseñado puede tener partes fácilmente reusables (aunque sea accidentalmente). Pasa de nuevo cuando hablan de portabilidad: es difícil saber exactamente a qué se podrían referir al decir que un diseño puede ser portable, pero leyendo la explicación está claro que se refieren a la portabilidad del sistema, no del diseño. Un software mal diseñado puede ser fácilmente portable (por ejemplo porque lo hemos hecho en Java).

En todos estos artículos también hay cosas que realmente caracterizan a un buen diseño de software: lo más simple posible, consistente, documentado, sin duplicación innecesaria, expresado en un lenguaje preciso, mantenible, reusable etc. Pero en ninguno distinguen entre un buen software, y un software bien diseñado.

Que un software tenga un buen diseño interesa a sus desarrolladores presentes y futuros. A los usuarios les da igual que las 20000 líneas de código estén en un único módulo, si la aplicación es atractiva, funciona rápido y cubre sus necesidades. Que sacar la versión 2.0 de esta aplicación nos cueste dos años en lugar de dos meses por culpa de su mal diseño, tampoco tendrá impacto negativo en los usuarios, porque para entonces ya se habrán pasado a la competencia. El impacto negativo de un mal diseño de software lo sufren directamente los desarrolladores y la empresa que lo vende, e indirectamente (como mucho) sus usuarios.

Un buen diseño de software nos debe ayudar a construir aplicaciones con características positivas que puedan ser percibidas por sus usuarios (un buen software), pero ni un buen diseño garantiza un buen software, ni un buen software implica siempre un buen diseño. Lo que caracteriza a un buen diseño de software es muy distinto de lo que caracteriza a una buena aplicación. Ambas cosas se confunden con frecuencia porque están relacionadas, pero tenemos que ser capaces de distinguirlas porque difícilmente podremos hacer buenos diseños si no sabemos distinguir qué los caracteriza, y difícilmente podremos hacer buen software si pensamos que para ello nos basta con hacer un buen diseño.

En la próxima entrada del blog hablaremos un poco más de las características de un buen diseño de software y llegaremos a una conclusión que a algunos puede que os sorprenda.

(1) Hablo de diseño de software desde el punto de vista de la ingeniería del software: la actividad que consiste en determinar cómo voy a construir una aplicación o sistema de información que cumpla con unos requisitos determinados, bajo ciertas restricciones de plazos y recursos económicos. No estoy hablando por ejemplo del diseño gráfico de las interfaces de usuario.

6 Requisitos imprescindibles que debe tener un buen Software de Gestión para empresas Para una empresa, una adecuada imp...
16/01/2018

6 Requisitos imprescindibles que debe tener un buen Software de Gestión para empresas

Para una empresa, una adecuada implementación de su ERP de gestión puede suponer una mejora en sus flujos de trabajo al disponer de una visión más clara de todos los datos, mejorando la toma de decisiones y la planificación de estrategias futuras, y así, ofrecer un mejor servicio al cliente.

Para poder satisfacer las necesidades de gestión de cualquier tipo de negocio, en Galdón Software consideramos que un buen software de gestión debe cumplir los siguientes requisitos:

1. Adaptable.
Más allá de las funcionalidades estándares que ofrece un ERP, se debe tener en cuenta la facilidad para adaptarse a futuras necesidades que pueda tener la empresa. Si sus limitaciones son excesivas en cuanto al grado de personalización del Software ERP, es conveniente buscar otras alternativas.

2. Escalable.
Un ERP debe ofrecer la posibilidad de crecer en todo momento. Debe estar compuesto por una estructura modular capaz de abarcar una amplia funcionalidad a distintos niveles, adaptándose a las necesidades de la empresa en cada momento.

3. Facilidad de integración.
En la mayoría de los casos, cuando se requiere implementar un ERP en un modelo de negocio, nos encontramos ante la dificultad de integrar datos anteriores o aplicaciones ya existentes de otros fabricantes. Por lo tanto, el ERP que finalmente se vaya a integrar debe solucionar satisfactoriamente esta problemática. En caso contrario, se debe apostar por otro software de gestión que sí nos asegure una óptima integración del ERP.

4. Herramientas de análisis.
Antes de la elección del ERP, es importante que la empresa se asegure de que el software disponga de las herramientas de análisis suficientes para medir resultados: rentabilidad, costes, facturación, almacén, etc.

5. Servicio Técnico.
Al tratarse de la implementación de un software informático, es conveniente que el proveedor del ERP disponga de un servicio técnico capaz de garantizar el correcto funcionamiento de nuestra solución de gestión. Aparte de ofrecernos un servicio de reparación o mantenimiento, el equipo técnico tiene que ser capaz de solucionar cualquier inconveniente de manera rápida, ya que, si se produce algún retraso, afectaría directamente al rendimiento de la empresa.

6. Formación.
Manejar un ERP de gestión recién implantado puede resultar una tarea complicada al principio. Por ello, y para comenzar a obtener resultados positivos lo antes posible, es conveniente que la empresa proveedora del software ofrezca un servicio de formación para los usuarios.

Estos requisitos son fundamentales a la hora de elegir un buen software ERP de gestión. En Galdón Software disponemos de soluciones de gestión para cualquier tipo de empresas totalmente adaptables a las necesidades de su sector, 100% escalable y fácilmente integrable. Cuenta con poderosas herramientas de análisis para una óptima planificación de estrategias y toma de decisiones. Nuestro servicio técnico resuelve cualquier petición en tiempo récord, además, formamos a nuestros clientes para que sus empresas empiecen a disfrutar, lo antes posible, de los beneficios que supone integrar un ERP de gestión de tales características.

7 CONSEJOS PARA NO SER VÍCTIMA DE DELITOS CIBERNÉTICOS EN NAVIDAD Desde la clonación de tus tarjetas de crédito y débito...
16/01/2018

7 CONSEJOS PARA NO SER VÍCTIMA DE DELITOS CIBERNÉTICOS EN NAVIDAD

Desde la clonación de tus tarjetas de crédito y débito, pasando por el robo de información personal como imágenes y documentos, hasta ataques dirigidos a la entidad financiera de la que eres cliente, son todos delitos de los que podrías ser víctima. Según un reporte de Symantec del 2013, cada segundo 12 personas son víctimas de ciberataques y anualmente la cifra de usuarios afectados asciende considerablemente.

Por lo anterior, Microsoft nos entrega siete consejos para evitar caer en las redes de los ciberdelincuentes durante las festividades de fin de año. Estas son:

1. Archivos en la nube
Aunque suene increíble, las fotos que tomes en estas vacaciones pueden estar más seguras almacenadas en la nube, fuera de tu computador, que en el mismo disco duro de tu pc. Es así como guardar tus documentos en servicios como OneDrive te permite decidir sobre tus carpetas: estas pueden ser compartidas o no, y además tienes la posibilidad de que los archivos almacenados se ubiquen en servidores o unidades distintas que los hacen inmunes a errores de hardware. Más adelante, podrás acceder a ellos desde cualquier dispositivo móvil o a través de la página web.

Mantener toda tu información almacenada de forma convencional te convierte en una víctima potencial del ransomware, un software malicioso que al infectar tu computador le da al ciberdelincuente la capacidad de bloquearlo desde una ubicación remota, y secuestrar tus archivos hasta que pagues una suma de dinero específica.

2. Ojo con ‘el paseo millonario online’
Los robos de identidad y los crímenes en línea aumentan sustancialmente con el creciente número de compras y transacciones que tu familia y tu hacen durante el fin de año. Estos se pueden reducir en gran medida si logras identificar con prontitud que tu información ha sido robada y algún delincuente anda de compras con tus tarjetas.

Cuando sospeches que algo esta mal no dudes en revisar tus estados de cuenta y movimientos bancarios, esta es la forma más fácil de darse cuenta si algo está fuera de lo común. Muchos bancos y servicios financieros usan sistemas de prevención de fraude cuando detectan un comportamiento de compra inusual (por ejemplo que vives en Bogotá, pero de repente estás haciendo compras desde Houston). Ante esto, las entidades bancarias suelen llamarte para confirmar. No tomes estas llamadas a la ligera, ya que son una alerta de que algo malo pudo haber ocurrido.

3. Desconfía de la palabra gratis cuando estás navegando en internet
En época de aguinaldos, cuando los gastos y los precios se incrementan, los software supuestamente ‘gratis’ como protectores de pantalla, oportunidades ultra secretas de inversión que te prometen fortunas y los concursos que sorprendentemente has ganado sin haber participado, son los ganchos más utilizados por los hackers para captar tu atención. Descargando estos programas te expones a divulgar información personal que puede parar en manos de delincuentes. En 2015, 965 de las 7.111 denuncias formales recibidas por la Dijin referenciaron violación de datos personales.

4. Sé precavido con los correos electrónicos que recibes
Noviembre y diciembre son los meses del año con mayor flujo de email marketing (ofertas por correo electrónico), y es probable que tu bandeja de entrada se llene con descuentos de viajes, ropa y tecnología, así como correos que suplantan la identidad de bancos y otras entidades financieras. Ten cuidado, ya que el 75% de ataques por software malicioso (Malware) se propaga vía correo electrónico; no sigas enlaces para acceder a servicios bancarios y cuando sospeches de algún contenido o remitente, elimina de inmediato ese mensaje.

Ahora bien, si crees que tu computador ha sido víctima de algún virus es necesario que descargues un antivirus que haga un análisis de tu sistema y detecte cualquier código malicioso que pueda poner tu información en riesgo.

5. Cuida a tus hijos en la red esta Navidad
Internet está al alcance de tus dedos, y en época de vacaciones se consolida como una fuente de entretenimiento con contenidos infinitos, algunos apropiados para los niños y otros no tanto. Estos últimos podrían poner en riesgo la seguridad de tus pequeños, aún más cuando Colombia pasó de tener 8.8 millones de conexiones en el 2008 a casi 14 millones en el 2016, según cifras de Red Papaz.

En apoyo a un mejor uso de la tecnología para los niños, compañías como Microsoft ha mejorado sus herramientas de control parental con sistemas operativos como Windows 10. A través de este instrumento se pueden establecer límites para el número de horas de uso de un equipo, los tipos de juegos a los que pueden acceder los niños y los programas que pueden ejecutar.

6. Mantén tus dispositivos actualizados
Un regalo de cada uno de nosotros a nuestro computador en esta navidad podría ser una actualización de software. Un computador viejo y un software desactualizado o sin licencia, son ‘condiciones dulces’ para los ciberdelincuentes.

A diario se crean más de un millón de amenazas y programas maliciosos, y para mantenerlos alejados de tu máquina es oportuno aplicar parches y otras correcciones de software tan pronto como estén disponibles. Implementar actualizaciones de forma regular bloquea a los atacantes para que puedan aprovechar las fallas del software (vulnerabilidades) que podrían usar para entrar en tu sistema. Esto no te protegerá de todos los ataques, pero si hará que sea mucho más difícil para los hackers tener acceso a tu información.

7. Sé riguroso en la escogencia de tus contraseñas
Las contraseñas son un elemento intrínseco del mundo virtual. En relación con estas, para el 2015, el 60% de los ataques cibernéticos fueron dirigidos a personas del común, y el 65% a pequeñas y medianas empresas. Actualmente usamos las contraseñas para todo y en época de navidad es común que entre visitas, novenas y viajes accedas a tus cuentas desde plataformas de comercio electrónico y banca en línea, múltiples redes sociales en dispositivos prestados o de hoteles, con lo cual se hace necesario escoger contraseñas difíciles de adivinar. Las siguientes son características de una contraseña segura:

-Compuesta por ocho caracteres o más.
-Con una combinación de letras, números y símbolos (por ejemplo # $%!?).
-No incluye su nombre de inicio de sesión, su apellido o palabras asociadas a su vida cotidiana que puedan ser identificadas con facilidad.
-Contraseñas distintas para cada uno de los servicios que usa en línea.

Las 11 ventajas de implantar un ERP en tu empresa ¿Por qué un ERP? ¿Qué va a aportar a mi empresa? Dado que implantar un...
15/01/2018

Las 11 ventajas de implantar un ERP en tu empresa

¿Por qué un ERP? ¿Qué va a aportar a mi empresa? Dado que implantar un sistema ERP es un proceso largo y complejo es normal que a muchos empresarios les surjan dudas sobre su viabilidad. Y no es para menos: por término medio pueden transcurrir entre 6 y 12 meses (como mínimo) antes de que el sistema ERP sea plenamente operativo. Por ello (y por la gran cantidad de recursos que consume) las dudas sobre la incorporación de estos sistemas están más que justificadas.

Así que… ¿Por qué implantar una aplicación ERP?

Un ERP es un sistema de información capaz de centralizar y unificar los datos procedentes de los distintos departamentos empresariales facilitando la fluidez de la información. Tanto gerentes como mandos intermedios contarán con información unificada en tiempo real que facilitará el proceso de toma de decisiones.

¿Qué ganan las empresas que apuestan por un ERP?
1. Mejora el proceso de toma de decisiones.
Tal y como adelantábamos al principio del artículo, los sistemas ERP permiten crear una base de datos compartida con más información y de mayor calidad que los responsables podrán visualizar en su pantalla en tiempo real agilizando y mejorando el proceso de toma de decisiones.

2.Planificación realista de los escenarios futuros.
Al disponer de información de mayor calidad es posible realizar estimaciones y previsiones realistas anticipándonos a los escenarios futuros.

3. Las mínimas duplicidades.
En las empresas que todavía no cuentan con una solución ERP es fácil comprobar que sus departamentos actúan con cierta independencia unos de otros, por lo que acaban generando registros e informes por duplicado. La integración que supone el ERP permitirá disminuir drásticamente estas duplicidades.

4. Los sistemas ERP son modulares.
Los ERP están formados por módulos. De esta manera podrás implantar los módulos que tu empresa necesite en cada momento. Si en el futuro tu empresa evoluciona y crece tu ERP lo hará con ella si incorporas nuevas funcionalidades.

5. Total adaptación a las necesidades de tu empresa.
Todas las empresas son diferentes. Por ello el proveedor de tu sistema ERP deberá realizar un análisis previo sobre las necesidades de tu organización para garantizar que la aplicación se adapta perfectamente a ella. La solución ERP debe adaptarse a tu negocio, no al revés.

6. Mayor control y trazabilidad.
Los sistemas ERP facilitan el seguimiento del producto a lo largo de la organización, desde que entra la materia prima hasta la entrega del producto acabado a los clientes.

7. Integración con el resto de los miembros de la cadena de valor.
El nuevo concepto ERP II supera los límites de la empresa añadiendo a otros integrantes de la cadena de valor: clientes y proveedores.

Así el proveedor pasa a ser un socio estratégico del que podemos extraer una ventaja competitiva al participar activamente en el diseño y desarrollo de nuevos productos aportando su experiencia.

Respecto a los clientes, los ERP permiten contar con más información y de mayor calidad que permitirá ajustar las órdenes de producción y de compra a sus necesidades. Por otro lado dispondremos de una base de datos sobre nuestros clientes segmentada que nos permitirá realizar campañas de marketing orientadas a segmentos específicos.

8. Mejor comunicación interna.
El ERP suprime las barreras a la información entre los distintos departamentos integrándolos y mejorando la comunicación interna.

9. Automatización de tareas.
Los sistemas ERP permiten automatizar tareas pesadas y repetitivas que anteriormente se realizaban a mano (generación de albaranes, facturas etcétera).

De ese modo nuestros operarios podrán dedicarse a tareas más productivas que realmente son las que nos aportan valor. Pero es más, al reducirse el componente humano, caerá el número de errores (aunque no se eliminará del todo dado que seguirán siendo necesarias ciertas acciones manuales como la introducción de datos).

10. Menos costos, más competitividad.
La mayor eficiencia conseguida, la disminución en el número de errores y la reducción de tareas duplicadas permiten disminuir los costes empresariales. La reducción de costes nos va a permiti

Aumentar nuestro margen de beneficios al caer el coste unitario.

Reducir el precio de cada producto al disminuir su coste.

O ambas.

11. Aumento del rendimiento y del retorno de la inversión en el largo plazo.
Gracias a todas las ventajas anteriores se podrá conseguir un incremento de la rentabilidad y de los beneficios. En otras palabras, el aumento del rendimiento conseguido con la implantación del ERP compensa, en el largo plazo, la inversión inicial realizada.

En conclusión, si bien es cierto que implantar un ERP es un proceso complejo, no necesariamente debe ser doloroso si se gestiona adecuadamente y se dispone del equipo adecuado para líder el cambio. La recompensa la encontraremos en las enormes ventajas que reportará a la empresa que incorpore esta solución… ¿Estás preparado para sumarte al cambio?

Los 10 lenguajes de programación más populares en la actualidad  Java continúa siendo el lenguaje de programación más po...
15/01/2018

Los 10 lenguajes de programación más populares en la actualidad

Java continúa siendo el lenguaje de programación más popular en el mundo, seguido por C y C++. Conocé la lista completa a continuación
Los 5 lenguajes de programación más populares de la actualidad son: Java, C, C++, Pyhton y C #. Así lo asegura el Índice TIOBE en su última actualización de junio 2017. La novedad es que el lenguaje de programación Kotlin salta a los 50 más populares. Probablemente te preguntes qué se supone que debas interpretar por lenguaje de programación "más popular". A continuación, te explicamos.

El Índice TIOBE es un índice elaborado por una empresa de software holandesa que se especializa en la evaluación y seguimiento de la calidad de los programas informáticos. Actualmente, la empresa revisa en tiempo real más de 300 millones de códigos de diversos programas informáticos por día actualizando mes a mes su índice.

El Índice TIOBE se elabora a partir de diversas variables, como por ejemplo, número de ingenieros cualificados en determinado lenguaje, las búsquedas que hacen los usuarios a través de los buscadores solicitando información de los distintos lenguajes de programación, la demanda de cursos o los lenguajes que están siendo más utilizados. El índice no dice cuál es el mejor, o en qué lenguaje de programación se escribió la mayor cantidad de líneas de código. Más bien sirve para que un programador pueda determinar si sus conocimientos en un determinado lenguaje han quedado obsoletos, o si por el contrario sus conocimientos están vigentes. También puede ser de utilidad si tienes que tomar una decisión estratégica respecto a qué lenguaje debes utilizar para la construcción de determinado software. Los datos que veremos a continuación corresponden al mes de junio de 2017.

1. Java
Reconocido por su legibilidad y simplicidad, Java es uno de los lenguajes de programación más adoptados: más 9 millones de desarrolladores lo usan y está presente en 7 mil millones de dispositivos en todo el mundo. Desde 2001 se mantiene en las primeras posiciones, llegando al número puesto número 2 como la más baja de todas en marzo de 2015. Su enorme popularidad se debe a su poder de permanencia, cuestión que asegura el funcionamiento a largo plazo de las aplicaciones que lo utilizan.

Asimismo, cabe destacar que el manejo de Java está incluido dentro de las 20 habilidades más valoradas por los empleadores en 2016, según un estudio elaborado por LinkedIn.

¿Te gustaría saber más? Conocé >4 cursos online gratuitos para que aprendas a programar en Java y comenzá a estudiar hoy mismo. Si sos de Córdoba, informate sobre la Carrera de Web Developer que ofrece el Instituto Superior Santo Domingo.

2. C
Creado entre 1969 y 1972 en los Laboratorios Bell, es uno de los más utilizados en el mundo. Si bien es ejecutado en la mayoría de los sistemas operativos, es de propósito general, con lo cual es muy flexible. Es muy popular para el desarrollo de aplicaciones de escritorio, como el conocido editor gráfico GIMP.

Conocé el Curso de Diseño de Sitios Web y Maquetación HTML de la Nueva Escuela de Diseño y Comunicación en Balvanera.

3. C++
Conocido por el nombre “C Plus Plus”, este lenguaje de programación orientado a objetos surge como una continuación y ampliación del C. Hay una gran cantidad de programas escritos en C++, como por ejemplo los paquetes de Adobe.

4. Python
Un lenguaje de programación multiplataforma y multiparadigma, que también es de propósito general. Esto significa que soporta la orientación a objetos, la programación imperativa y funcional. Su simpleza, legibilidad y similitud con el idioma inglés lo convierten en un gran lenguaje ideal para principiantes.

5. C #
También llamado “C Sharp”, este lenguaje de programación orientado a objetos fue desarrollado en el año 2000 por Microsoft para ser empleado en una amplia gama de aplicaciones empresariales ejecutadas en el framework .NET. C Sharp es una evolución del C y C++ que se destaca por su sencillez y modernidad.

Tal vez te pueda interesar la Certificación Oracle de Java (OCJP Oracle Certified Java Programmer) que brinda la UTN de forma online.

6. Visual Basic. NET
Pasó del número 9 en junio de 2016 al sexto lugar en 2017. Es utilizado por una gran cantidad de personas a lo largo del mundo que no cuentan con conocimientos profundos como desarrolladores, quienes encuentran en visual basic, además de una sintaxis sencilla, la posibilidad de automatizar sus propios procesos y crear sus propias aplicaciones web. Es visto como uno de los lenguajes más amigables para los que recién comienzan, sobre todo a comparación de C #.

7. JavaScript
Antes que nada, no confundir con Java. Son lenguajes distintos. Javascript es un lenguaje de programación que puede ser utilizado para crear programas que luego son acoplados a una página web o dentro de programas más grandes. Sirve para crear efectos y realizar acciones interactivas. Podemos ver funcionando este lenguaje en servicios como el chat, calculadoras, buscadores de información y un sin fin de utilidades más.

Conocé la Certificación MCSD 70-480 Programming in HTML with Javascript and CSS3 que ofrece la UTN de forma online.

8. PHP
Creado en 1994 por el programador canadiende Rasmus Lerdorf, nunca pretendió ser un lenguaje de programación, sino que fue creado con la intención de contar con un conjunto de herramientas para el mantenimiento de las páginas web . Es de fácil acceso para nuevos programadores y a su vez ofrece a los más experientes muchas posibilidades.

Conocé el Curso Online sobre Diseño de Páginas Web que dicta la Nueva Escuela de Comunicación.

9. Perl
Creado Larry Wall, Pearl es una sigla que significa Practical Extraction and Report Language. Es un lenguaje de propósito general que sirve practicamente para todo, como puede ser la generación y tratamiento de ficheros, para analizar datos y textos, y muchas otras cosas más. Si bien hay proyectos complejos y completos escritos en Pearl, son los menos.

Si querés aprender más de este lenguaje, visita este curso gratuito de Udemy o infórmate sobre el Curso de Operador de Linux que dicta el Instituto San Isidro, en el cual se ve, entre otras cosas, programación en lenguaje Perl.

10. Assembly language (ASL)
Assembly language (lenguaje ensamblador) saltó de la posición número 12 en 2016 al número 10 en 2017. Se trata de un lenguaje de programación de bajo nivel utilizado para interactuar con hardware informático. Utiliza comandos estructurados, en sustitución de los números, permitiendo a las personas tener una mayor legibilidad de los códigos. Si bien es más sencillo de leer que el código binario se trata de un lenguaje difícil que muchas veces es sustituido por uno superior, como por ejemplo C.

10 consejos para el desarrollo seguro de aplicaciones  A lo largo de los últimos meses, hemos sido testigos del crecimie...
12/01/2018

10 consejos para el desarrollo seguro de aplicaciones

A lo largo de los últimos meses, hemos sido testigos del crecimiento en la tendencia para la generación de programas de concientización sobre el desarrollo seguro de aplicaciones. En esta décima edición de SEGURINFO en Argentina, esto se ha visto reflejado en numerosas exposiciones enfocadas a dar soporte a esta temática.

Entre ellas, encontramos la charla de Ivan Arce, director del Programa de Seguridad en TIC para la Fundación Sadosky, quien presentó cómo evitar los 10 problemas de seguridad más frecuentes en el diseño de software.

La seguridad en los productos software constituye una propiedad emergente dictaminada por la cohesión de múltiples factores a lo largo del proceso de desarrollo, desde su misma concepción hasta la muerte del producto. Cuando hablamos de evaluar la seguridad de los programas informáticos, hacemos referencia a un conjunto de actividades a lo largo del ciclo de desarrollo que nace que con la idealización del sistema, y se extiende sobre el diseño, la codificación y el fortalecimiento del mismo.

No debemos caer en el error de confundir la seguridad del sistema con las características de éste, como ser la utilización de ciertos protocolos como SSL. Tampoco debemos confundirla con los componentes de seguridad que se ven inmersos en la arquitectura del sistema, como la presencia de firewalls, o limitarla al cumplimiento de una normativa o certificación en particular.

La seguridad del producto es una propiedad dinámica que varía en el tiempo, y que resulta crítica si consideramos el rol que cubren estas aplicaciones en la sociedad moderna. Surge tras reconocer que existen atacantes, y que estos se encuentran siempre dispuestos a probar cada potencial camino de entrada para lograr el control del sistema, y por tanto fuerzan a las empresas de desarrollo de software a pensar mecanismos de control para resistir estos ataques.

Se estima que en la actualidad, el 50% de las vulnerabilidades en los sistemas tienen su origen en fallas de diseño. Estas últimas se diferencian de las fallas de implementación –comúnmente conocidas como bugs, surgidas en la codificación o prueba- por nacer de manera temprana en el proceso de desarrollo y poseer un impacto tan profundo en el sistema que demanda la reingeniería del mismo. Es por esto mismo que resulta crucial desplegar los recursos necesarios para identificar y arreglar estas fallas de diseño de manera temprana, a fin de reducir el costo que éstas producen al arraigarse al producto que se está creando.

¿Cómo guiamos el desarrollo seguro?
Para ayudar a la evaluación de la madurez de la seguridad en el proceso de desarrollo de software, el expositor presenta una lista de problemáticas comunes al momento de diseñar aplicaciones, que pueden llegar a afectar la seguridad en el producto final. Veamos cuáles son estos consejos para el diseño seguro.

1. Ningún componente es confiable hasta demostrar lo contrario
Un error común en el desarrollo de software es englobar funcionalidad sensible en un ambiente de ejecución sobre el cual no tenemos ningún tipo de control. No es debido suponer que los componentes del sistema son confiables hasta que esto pueda ser demostrado.

Por ejemplo, si tenemos un entorno de cliente-servidor, se deben tomar las precauciones contra posibles clientes adulterados desplegando mecanismos de verificación. Debemos pensar que éste se encuentra en el dominio del usuario, quien no siempre tendrá las mejores intenciones.

2. Delinear mecanismos de autenticación difíciles de eludir
La autenticación es el proceso que nos permite acreditar la identidad del usuario y asignarle un identificador único. El desarrollo de métodos autenticación centralizados que cubran cada posible camino de ingreso es uno de los pilares en la construcción de aplicaciones seguras.

Si se trata de páginas web, debemos pensar qué sitios requerirán el manejo de usuarios autenticados, y cuidar que terceros indebidos no se entrometan en el sistema desde URLs no protegidas. La utilización de múltiples factores de autenticación nos permitirá reforzar el sistema comprobando no sólo lo que el usuario sabe sino, por ejemplo, también lo que éste posee.

3. Autorizar, además de autenticar
La autorización es el proceso que designa si un usuario autenticado puede o no realizar una acción que cambia el estado del sistema. Los procesos de autorización sobre usuarios autenticados deben ser pensados desde el diseño y previenen contra sesiones que han caído en las manos equívocas.

4. Separar datos de instrucciones de control
Este punto es clave cuando se trabaja con código capaz de modificarse a sí mismo, o lenguajes que compilan dicho código en tiempo de ejecución -tales como JavaScript-, donde las mismas instrucciones se reciben como datos. Entonces, se vuelve de suma importancia sanear las entradas que recibe el sistema para evitar que atacantes puedan manipular el flujo de ejecución ingresando datos maliciosos.

5. Validar todos los datos explícitamente
Las entradas al sistema deben evaluarse con una filosofía de lista blanca por sobre lista negra: determinar qué se permitirá, y denegar todo aquello que no se corresponda. Debemos pensar que un atacante interpreta los datos como posibles lenguajes de programación, con la intención de manipular el estado del sistema. Por esto, se torna necesario inspeccionar estos datos de entrada, generando los procedimientos automáticos para llevarlos a formas canónicas bien conocidas.

Además, esta validación de entradas debe darse cercana al momento en que los datos son en efecto utilizados, puesto que el desfasaje entre la validación y la utilización brinda una ventana de oportunidad para la generación de ataques.

Para implementar esto, pueden diseñarse componentes comunes que centralicen validaciones tanto sintácticas –estructurales– como semánticas –de significado–, y sacar provecho de los tipos de datos presentes en el lenguaje de programación sobre el cual se está trabajando.

6. Utilizar criptografía correctamente
La comprensión de las nociones criptográficas que aplican al sistema en desarrollo es necesaria para poder entender qué elementos y qué característica de los mismos se busca proteger, contra qué formas de ataque, y consecuentemente, cuál es la mejor manera de lograr este objetivo.

La creación de propias soluciones criptográficas, como siempre, es una decisión riesgosa que puede derivar en un sistema defectuoso, y por tanto es rotundamente desaconsejada. En cambio, se debe acudir al correcto asesoramiento para encontrar las librerías y herramientas que nos permitan aumentar el costo de ataque para el cibercriminal.

7. Identificar datos sensibles y cómo se los debería gestionar
Resulta complicado proteger nuestra información si no tenemos en claro qué es lo que realmente buscamos cuidar. La definición de los datos cuya protección resulta fundamental para el funcionamiento del sistema es crítica, puesto que a partir de ella podremos comenzar a esbozar los procesos para el diseño de la seguridad desde el mismo comienzo del ciclo de desarrollo, y no como un añadido en las etapas de implementación o despliegue.

La definición de los requerimientos de anonimidad y los metadatos que se manejan dará pie a la toma de decisiones en cuanto a los caminos que hacen a su protección.

8. Considerar siempre a los usuarios del sistema
Un sistema técnicamente perfecto que no cubre las necesidades de los usuarios es un sistema inservible. La seguridad utilizable debe ser una de las metas a alcanzar cuando se plantean los objetivos de seguridad para el sistema. Por un lado, no es prudente transferir al usuario cuestiones de seguridad que pueden resolver los mismos desarrolladores, a fin de evitar la fatiga.

Por otro lado, es necesario mantener una comunicación con el usuario para otorgar cierto grado de transparencia sobre cómo opera el sistema. La configuración por defecto debe ser la configuración segura, siempre.

9. La integración de componentes cambia la superficie de ataque
Las aplicaciones actuales constituyen sistemas complejos con muchos componentes interactuando de manera simultánea. Cada vez que se realiza un cambio en el sistema, el panorama de seguridad cambia y debe ser reevaluado. Esta reexaminación es el resultado de la coordinación entre las áreas y proyectos.

Los componentes deben ser analizados de manera unitaria y en conjunto, teniendo en cuenta cómo se combinan, mantienen o reemplazan.

10. Considerar cambios futuros en objetos y actores
Desde el diseño, debemos considerar que las propiedades del sistema y sus usuarios cambian constantemente. Algunos factores a considerar son el crecimiento de la población de usuarios, cómo las migraciones afectan al sistema, o cómo afectarán vulnerabilidades futuras sobre componentes que se han desplegado a gran escala.

Los procedimientos de actualización de manera segura deben de diseñarse con un horizonte a futuro de meses, años o incluso décadas.

En resumen…
Las organizaciones actuales han comenzado a comprender que la identificación y remediación temprana de problemas posee un costo inversamente proporcional al tiempo que el error permanece en el sistema.

La instauración de un ciclo de desarrollo seguro mediante la instrumentación de un modelo de diseño orientado a la seguridad que genere sinergia entre el área de seguridad y desarrollo, nos acerca un paso más hacia el despliegue de aplicaciones más robustas y mucho más rentables.

Address

Dubai

Opening Hours

Monday 09:00 - 17:00
Tuesday 09:00 - 17:00
Wednesday 09:00 - 17:00
Thursday 09:00 - 17:00
Friday 09:00 - 17:00
Saturday 09:00 - 17:00

Alerts

Be the first to know and let us send you an email when Gedi posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Contact The Business

Send a message to Gedi:

Share