AdSense_BarHorizontal

Mostrando entradas con la etiqueta Lenguajes de programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Lenguajes de programacion. Mostrar todas las entradas

martes, 16 de agosto de 2016

Glosario (segunda parte) y apuntes

En esta nueva entrada de DatoByte les comparto nuevos conceptos relacionados con el mundo de sistemas (Hardware y software) adicional de unos apuntes del segundo capitulo del libro Ingenieria de Software 9na Edicion

Iniciemos con los conceptos:

Ingeniería del software: este término fue acuñado para definir la necesidad de una disciplina científica que, como ocurre en otras áreas, permita aplicar un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software.

Gestión Predictiva de proyectos: es una disciplina formal de gestión, basada en la planificación, ejecución y seguimiento a través de procesos sistemáticos y repetibles.

Producción basada en procesos: se crean modelos de procesos basados en el principio de Pareto, empleado con buenos resultados en la producción industrial. Dicho principio nos indica que la calidad del resultado depende básicamente de la calidad de los procesos.

Desarrollo guiado por pruebas de software, o Test-driven development (TDD): es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring). Para escribir las pruebas generalmente se utilizan las pruebas unitarias (unit test en inglés). En primer lugar, se escribe una prueba y se verifica que las pruebas fallan. A continuación, se implementa el código que hace que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que el software cumple con los requisitos que se han establecido.

Glosario Programacion

XPath
XSLT



Apuntes

Actividades fundamentales en la Ingenieria de Software

Existen muchos diferentes procesos de software, pero todos deben incluir cuatro actividades
que son fundamentales para la ingeniería de software:
1. Especificación del software Tienen que definirse tanto la funcionalidad del software
como las restricciones de su operación.
2. Diseño e implementación del software Debe desarrollarse el software para cumplir
con las especificaciones.
3. Validación del software Hay que validar el software para asegurarse de que cumple
lo que el cliente quiere.
4. Evolución del software El software tiene que evolucionar para satisfacer las necesidades
cambiantes del cliente.


Causas Principales de los Fracasos en los proyectos de Software

Según el informe de Standish, las diez causas principales de los fracasos, por orden de importancia, son:
-Escasa participación de los usuarios
-Requerimientos y especificaciones incompletas
-Cambios frecuentes en los requerimientos y especificaciones
-Falta de soporte ejecutivo
-Incompetencia tecnológica
-Falta de recursos
-Expectativas no realistas
-Objetivos poco claros
-Cronogramas irreales
-Nuevas tecnologías

Principios del Manifiesto Agil

Individuos e interacciones sobre procesos y herramientas
Software que funciona sobre documentación exhaustiva
Colaboración con el cliente sobre negociación de contratos
Responder ante el cambio sobre seguimiento de un plan

miércoles, 17 de febrero de 2016

Iniciando programacion en JavaScript

En esta nueva entrada de DatoByte les quiero compartir conceptos básicos para iniciar la programación en JavaScripts.

¿Qué es Javascript?


JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas web dinámicas.

Una página web dinámica es aquella que incorpora efectos como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario.

Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que no es necesario compilar los programas para ejecutarlos. En otras palabras, los programas escritos con JavaScript se pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios.

A pesar de su nombre, JavaScript no guarda ninguna relación directa con el lenguaje de programación Java. Legalmente, JavaScript es una marca registrada de la empresa Sun Microsystems

Javascript es un lenguaje con muchas posibilidades, utilizado para crear pequeños programas que luego son insertados en una página web y en programas más grandes, orientados a objetos mucho más complejos. Con Javascript podemos crear diferentes efectos e interactuar con nuestros usuarios.

Es necesario resaltar que hay dos tipos de JavaScript: por un lado está el que se ejecuta en el cliente, este es el Javascript propiamente dicho, aunque técnicamente se denomina Navigator JavaScript. Pero también existe un Javascript que se ejecuta en el servidor, es más reciente y se denomina LiveWire Javascript.

¿Dónde puedo ver funcionando Javascript?


Entre los diferentes servicios que se encuentran realizados con Javascript en Internet se encuentran:

  • Correo
  • Chat
  • Buscadores de Información

También podemos encontrar o crear códigos para insertarlos en las páginas como:

  • Reloj
  • Contadores de visitas
  • Fechas
  • Calculadoras
  • Validadores de formularios
  • Detectores de navegadores e idiomas


No todo es color rosa


En cuanto a las limitaciones, JavaScript fue diseñado de forma que se ejecutara en un entorno muy limitado que permitiera a los usuarios confiar en la ejecución de los scripts.

De esta forma, los scripts de JavaScript no pueden comunicarse con recursos que no pertenezcan al mismo dominio desde el que se descargó el script. Los scripts tampoco pueden cerrar ventanas que no hayan abierto esos mismos scripts. Las ventanas que se crean no pueden ser demasiado pequeñas ni demasiado grandes ni colocarse fuera de la vista del usuario (aunque los detalles concretos dependen de cada navegador).

Además, los scripts no pueden acceder a los archivos del ordenador del usuario (ni en modo lectura ni en modo escritura) y tampoco pueden leer o modificar las preferencias del navegador.

Por último, si la ejecución de un script dura demasiado tiempo (por ejemplo por un error de programación) el navegador informa al usuario de que un script está consumiendo demasiados recursos y le da la posibilidad de detener su ejecución.

A pesar de todo, existen alternativas para poder saltarse algunas de las limitaciones anteriores. La alternativa más utilizada y conocida consiste en firmar digitalmente el script y solicitar al usuario el permiso para realizar esas acciones.


Veamos un poco de JavaScript



Crear un objeto en javaScript es tan sencillo como:


var vehiculo={};


Si queremos añadirle propiedades con valores podemos hacerlo de varias formas:

Le podemos añadir las propiedades al momento de crear el propio objeto:

var vehiculo={
marca:"Chevrolet",
referencia:"Camaro ZL1",
placa:"XYZ 123",
modelo:2016
}

Tambien podemos añadirselas una vez creado el objeto:

var vehiculo={};
vehiculo.marca="Chevrolet";
vehiculo.referencia="Camaro ZL1";
vehiculo.placa="XYZ 123";
vehiculo.modelo=2016;

O inclusive mediante un constructor


function Vehiculo() {
this.marca="Chevrolet";
this.referencia="Camaro ZL1";
this.placa="XYZ 123";
this.modelo=2016;
}
  
var vehiculo=new Vehiculo();

También les podemos añadir funciones:

Al crear el propio objeto:

var vehiculo={
marca:"Chevrolet",
referencia:"Camaro ZL1",
placa:"XYZ 123",
modelo:2016
getDescripcionCompleta:function() {
return this.marca+this.referencia;
}
}

Una vez creado el objeto:

var vehiculo={};
   
vehiculo.marca="Chevrolet";
vehiculo.referencia="Camaro ZL1";
vehiculo.placa="XYZ 123";
vehiculo.modelo=2016;
vehiculo.getDescripcionCompleta=function() {
return this.marca+this.referencia;
};

Mediante un constructor

function Vehiculo() {
this.marca="Chevrolet";
this.referencia="Camaro ZL1";
this.placa="XYZ 123";
this.modelo=2016;
this..getDescripcionCompleta=function() {
return this.marca+this.referencia;
};
}
  
var vehiculo=new Vehiculo();


Funciones


Hay unas formas de crear funciones

La forma clásica

function sumar(a,b) {
return a+b;
}
  
var c=sumar(1,2);

Crear una funcion como una variable

var sumar=function (a,b) {
return a+b;
}
  
var c=sumar(1,2);

Podemos hacer funciones que retornan funciones y llamarlas directamente.

function getFunction() {
var sumar=function (a,b) {
return a+b;
}
return sumar;
}
  
var c=getFunction()(1,2);

Closure

Ahora vamos a ver una de las cosas mas raras para un programador Java. Una closure. Inicialmente es como un simple puntero a una función, algo como lo que ya existía en C, pero hay algo más. Veamos el siguiente ejemplo:



function getFunction() {
var extra=100;
var sumar=function (a,b) {
return a+b+extra;
}
return sumar;
}
  
var sumaClosure=getFunction();
var c=sumaClosure(1,2);

Al ejecutar el ejemplo , la variable c vale 103. Igual no te parece raro pero cuando se está ejecutando la función sumaClosure,ya no debería existir la variable extra pero si que existe y la función sumaClosure aun puede usar su valor aun cuando ya no estamos dentro de getFunction. Es es realmente una closure. Una función que se ejecuta en el contexto de donde se creo no donde está ahora. Puede parecer que esto es poco útil, pero con tanta llamada asíncrona en JavaScript es realmente útil.

El ejemplo lo podemos liar un poco mas añadiendo nuevas variables llamadas extra y veremos como no afecta al resultado, éste sigue siendo 103:


var extra=1000;
  
function getFunction() {
  
  var extra=100;
  
  var sumar=function (a,b) {
    return a+b+extra;
  }
  
  return sumar;
}
  
extra=1100;
  
var fn=getFunction();
  
extra=1200;
  
var c=fn(1,2);


Espero estos conocimiento básicos sean de utilidad para iniciación de lenguajes de programación del lado del cliente, Proximamente estare publicando un tutorial de AngularJS.

domingo, 10 de mayo de 2015

Entornos de desarrollo, Lenguajes de Programacion y Bases de datos

En esta nueva entrada de DatoByte les quiero comentar acerca de Entornos de desarrollo, Lenguajes de Programación y bases de datos.

Comencemos entonces definiendo estos 3 conceptos.
(Las siguientes definiciciones son tomadas de Wikipedia)

¿Que es un entorno de desarrollo?

Resultado de imagen para Integrated development environment
Un entorno de desarrollo, también conocido como IDE (Integrated development environment ), "por sus siglas en inglés", es una aplicación de software, que proporciona servicios integrales para facilitarle al programador de computadora el desarrollo de software. Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDEs tienen auto-completado inteligente de código.

Algunos IDEs contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. El límite entre un entorno de desarrollo integrado y otras partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica del usuario (Interfaz gráfica de usuario (GUI -"por sus siglas en inglés"-) se integran un sistema controlador de versión y varias herramientas. Muchos IDEs modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos.

¿Que es un lenguaje de programación?

Resultado de imagen para lenguaje de programacionUn lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras.

Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.

Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación.

También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:

El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten estructurar el contenido de los documentos).

¿Que es una Base de datos?

Resultado de imagen para SGBDUn sistema de gestión de bases de datos (SGBD) es un conjunto de programas que permiten el almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar herramientas para añadir, borrar, modificar y analizar los datos. Los usuarios pueden acceder a la información usando herramientas específicas de interrogación y de generación de informes, o bien mediante aplicaciones al efecto.

Estos sistemas también proporcionan métodos para mantener la integridad de los datos, para administrar el acceso de usuarios a los datos y para recuperar la información si el sistema se corrompe. Permiten presentar la información de la base de datos en variados formatos. La mayoría incluyen un generador de informes. También pueden incluir un módulo gráfico que permita presentar la información con gráficos y tablas.

Hay muchos tipos distintos según cómo manejen los datos y muchos tamaños distintos de acuerdo a si operan en computadoras personales y con poca memoria o grandes sistemas que funcionan en mainframes con sistemas de almacenamiento especiales.

En mi opinión:

Teniendo en cuenta lo anterior, la idea del desarrollo de un nuevo software deberá pasar por la elección de estos 3 aspectos, decisiones que son de gran análisis por los arquitectos de software teniendo en cuenta diferentes aspectos como conocimientos del equipo de desarrollo, Escalabilidad del software, Compatibilidad con otros softwares, Costos y licencias, entre otros, de acuerdo al análisis de estos aspectos surge entonces la decisión de en que entorno y lenguaje se va a trabajar, notese que estas decisiones no se pueden tomar a la ligera, No es cuestión de sentarse y que todos los involucrados comentes que IDE, que lenguaje y que SGBD desean usar, Que por cierto, iniciar un debate de cual es el mejor en cada uno de estos 3 aspectos, es considerado la perdida de tiempo mas grande que se pueda realizar en cuanto al desarrollo de software se refiere, a mi modo personal No hay un lenguaje mejor que el otro (Hablando de lenguajes de alto Nivel http://datobyte.blogspot.com/2015/04/glosario.html) de igual manera no hay un IDE o SGBD que sea el  mejor de todos, Sin embargo si cabe resaltar que si hay lenguajes mas usados que otros y se preguntaran, que tiene que ver que sea mas usado, lo que intereza en este punto es que si es mas usado, probablemente vas a encontrar mas documentación acerca de el, y en temas de lenguajes de programación, la documentación en un aspecto muy importante a destacar. sin embargo por ultimo debes saber que como dije en su momento estas elecciones los arquitectos de softwares las tomaran de acuerdo al equipo de trabajo y al tipo de proyecto que se va a realizar.

LA MANZANA DE LA DISCORDIA EN UN GRUPO DE DESARROLLADORES DE SOFTWARE ES PREGUNTAR CUAL ES EL MEJOR EN CADA UNO DE ESTOS ASPECTOS.

Cabe tambien mencionar en este post cuales son las combinaciones (IDE, lenguaje de programación Y SGBD) mas usadas en el desarrollo de softwares.

Iniciemos entonces comentando cuales son los lenguajes, IDE y SGBD mas conocidos:

IDE  Visual Studio, NetBeans y Eclipse
 Lenguajes de programacion  PHP, .Net, Java, Android
SGBD Oracle, MySql y SQL Server, SQLite 

 Las combinaciones mas usadas en el mercado son:
Visual Studio - .Net (C# y VB)  - SQL Server

Netbeans  - Java- MySQL, Oracle

Eclipse - PHP- Oracle

Eclipse - Android - SQLite,MySQL


Las anteriores combinaciones son las mas usadas en el mercado, sin embargo no son las unicas usadas, bien es sabido que existes muchos Lenguaes, SGBD e IDEs, Por ello hacer una elección nuevamente dependerá de el tipo de proyecto a realizar, teniendo en cuenta las diferentes ventajas y desventajas de cada uno de estos aspectos.

Que combinación de estos 3 aspectos sugieres?

Mencion Honorifica para desarrollo de videojuegos: Unity(IDE) - C#