Desarrollo de Sistemas a Medida

Realizando sistemas a medida orientado a servicios

Realizamos Tiendas Online

Te construimos tu tienda online para que ofrescas tus productos y ganes más

Realizamos reportes online y en excel

Analisis de información para generar reportes

Soporte Informático

No pierdas tiempo tenemos el mejor servicio de soporte garantizado

Auditoria Informática

Te asesoramos para sacar el mayor beneficio de la tecnología

martes, 26 de junio de 2018

Plan de estudio - Programación 2


CARRERA : INGENIERÍA DE SISTEMAS 
SEMESTRE : SEXTO 
ASIGNATURA : ANÁLISIS Y DISEÑO DE SISTEMAS I 
SIGLA O CÓDIGO : INS216
PRE-REQUISITO : INS215
CARGA HORARIA : HT = 52; HP = 36 , TOT = 88 
CRÉDITOS : 9 
DOCENTE : Ing. Angel Céspedes Quiroz
UNIVERSIDAD : Universidad Nacional del Oriente

I. COMPETENCIAS 

ALCANCE 

Aprender los fundamentos e identificar y programar los distintos tipos de relaciones de la programación orientada a objetos, así también programar interfaces gráficas.

a) Genérico o básica 

Adquiere los conocimientos necesarios de programación orientada a objetos y programación visual. 

b) Disciplinaria 

Reconoce los diagramas de UML que se utilizan para en el análisis de la arquitectura, casos de uso y clases. Valora la importancia de elaborar el análisis del sistema para facilitar el trabajo en el diseño y la programación. 

Al término del curso, el estudiante será capaz de: 

a. Manejar correctamente la programación orientado a objetos, interpretando modelos y programando los mismos. 

b. Aprender a programar interfaces graficas. 

II. PRIORIZACIÓN DE HABILIDADES INTELECTUALES DE ORDEN SUPERIOR 

a. Pensamiento analítico, crítico y reflexivo. 

III. CONTENIDO MÍNIMO 

Fundamentos de programación. Programación Orienta a Objetos. Programación Visual en C#.

IV. UNIDADES PROGRAMÁTICAS 

1. FUNDAMENTOS DE LENGUAJES DE PROGRAMACION
  • Lenguajes de Maquina.
  • Lenguajes Ensambladores.
  • Lenguajes De Alto Nivel.
  • Lenguajes Compilados. 
  • Lenguajes Interpretados. 
  • Lenguajes Declarativos. 
  • Lenguajes Imperativos. 
  • Lenguajes Orientado a Objetos.
2. PROGRAMACIÓN ORIENTADA A OBJETOS 

Ø  Conceptos generales de programación orientada a objetos.
Ø  Asociacion
Ø  Herencia.
Ø  Agregación.
Ø  Composición
Ø  Programación de las relaciones en C#.

3. PROGRAMACION VISUAL EN C#

Ø  Programación básica en lenguajes visuales.
Ø  Programación avanzada en lenguajes visuales.

V. EVALUACIÓN A LOS ESTUDIANTES 

a. Trabajos Prácticos 20 Puntos
b. Primer Parcial 20 Puntos
c. Segundo Parcial 20 Puntos
d. Examen Final 40 Puntos

TOTAL, CALIFICACIÓN 100 Puntos

VI. METODOLOGÍA

a. Clases magistrales.
b. Resolución de casos prácticos.

VII. BIBLIOGRAFÍA 

1.    Arbib-Alagic, The Design of Well Structured and Correct Programs, Springer Verlag
2.    Joyanes Aguilar, Fundamentos de la Programación, Editorial McGraw Hill
3.    Joyanes Aguilar, Programación Orientada a Objetos, Editorial McGraw Hill
4.    Cevallos J., Microsoft Visual C++, Programación Avanzada, Ra-ma
5.    0Knuth, D., Fundamental Algorithms, Addison Wesley
6.    Harel D., Algorithmics: The Spirit of Computing, Addison Wesley
7.    Blaider E., Programación en Java, Editorial Megabyte
8.    Lemay L, Aprendiendo HTML para Web, Simon & Schuster

VII. HERRAMIENTAS

jueves, 21 de junio de 2018

Conceptos básicos de VueJS


Vue.js es un framework de JavaScript nuevo, si lo comparamos con otros frameworks como Backbone o Ember.

Sin embargo, su facilidad de aprendizaje y uso con respecto a otros frameworks y libraries como ReactJS, su rendimiento comparado con AngularJS y la facilidad para usarlo y adaptarlo a proyectos tanto grandes como pequeños, ha hecho que Vue gane cada vez más popularidad.

Objetos especiales

vm:
el objeto que representa la instancia de Vue.
key: propiedad que identificará como único a un elemento para ser reutilizado por Vue
$data: variable que contiene el modelo de la instancia Vue en el objeto vm.
$event: variable que representa el evento cuando se ejecuta en la instancia Vue en el objeto vm.
$store: variable que representa el estado de la aplicación cuando se usa Vuex en Vue.
$route: variable que representa el objeto de rutas de la aplicación cuando se usa Vue Router en Vue.
template: etiqueta HTML que mantiene el contenido del lado del cliente que no se renderiza cuando se carga una página, pero que posteriormente puede ser instanciado durante el tiempo de ejecución empleando JavaScript.

Directivas

Atributos especiales que nos permiten realizar cambios reactivos en el DOM.

v-model: enlaza los datos a través de la propiedad data .
v-bind: añadir o remover atributos ( atajo : ).
v-show: permite mostrar u ocultar contenido del DOM sin eliminarlo del mismo, no funciona con la etiqueta template.
v-if, v-else-if, v-else: condicionales.
v-for: ciclos, se puede usar el operador in u of indistintamente.
v-on: manejar eventos ( atajo @ ).
v-once: evita la reactividad en un elemento, lo vuelve estático.
v-text: muestra contenido textual dentro de un elemento, NO acepta código HTML.
v-html: muestra contenido textual dentro de un elemento, SÍ acepta código HTML.
v-pre: ignora las expresiones Vue del elemento, evitando la compilación reactiva del mismo.
Interpolaciones

  • Enlazan de datos entre Vue.js y el DOM. Se requiere el uso de las dobles llaves

{{ propiedad }}


  • Podemos hacer operaciones aritméticas

{{ 19 + 7 }}


  • Podemos concatenar

Hola, {{ propiedad + ':)' }}


  • Podemos hacer expresiones de una sola línea

{{ propiedad ? true : false }}

lunes, 18 de junio de 2018

Desarrollador web: Front-end, back-end ¿Quién es quién?

Un desarrollador web no es una sola cosa, sino que abarca múltiples conjuntos de habilidades que se traducen en diferentes especialidades. Los tres términos más comunes que se utilizan para nombrar dichas especialidades de forma genérica son: front-end, back-end y full stack. En este artículo trataremos de definir cada una de ellas y ver sus diferencias.

Desarrollador Front-end:

Trabaja del lado Cliente, en el navegador, en el lado de lo que se ve. Principalmente se ocupa de los componentes externos del sitio web o de la aplicación web. Como consecuencia, deben dominar obligatoriamente:

HTML: HyperText Markup Language, es el componente estructural clave de todas las webs de internet. Sin él las páginas web no pueden existir.

CSS: Cascading Style Sheets, es lo que le proporciona estilo a HTML.

JavaScript: Usando solo HTML y CSS tus webs serían páginas estáticas, con JS tus páginas web son interactivas.

Desarrollador Back-end:
El desarrollador back-end trabaja del lado Servidor, detrás del escenario, permitiendo con su trabajo que el usuario disfrute de su experiencia.

Sin él, el desarrollo llevado a cabo por su anterior compañero no se sostendría.

Para ser programador del lado Servidor, son numerosos los lenguajes y frameworks entre los que elegir, todo dependerá de la empresa en la que caigas.

A día de hoy, los más comunes son:


ASP.NET: es la plataforma de desarrollo web de Microsoft. Muy utilizada en las empresas. Tiene las variantes Web Forms y MVC, y ahora también ASP.NET Core MVC.
PHP: por ejemplo, el famoso gestor de contenidos WordPress usa por detrás PHP. Laravel es uno de los frameworks usados con este lenguaje.
Ruby: junto con su framework Ruby on rails.
Python: fácil de aprender. Usado a menudo con Django como framework
Node.js: se está haciendo cada vez más popular debido a que usa el mismo lenguaje que en el lado cliente: JavaScript.
Java: el lenguaje clásico y uno de los más demandados.

Sin embargo, no es suficiente con dominar un lenguaje y un framework. Toda aplicación web debe almacenar datos de alguna manera. Por lo tanto, un desarrollador back-end también debe estar familiarizado con las bases de datos. Entre las más comunes destacan:
  • SQL Server
  • MySQL
  • Oracle
  • PostgreSQL
  • MongoDB, que es un almacén de datos no-relacional o NoSQL.
Al igual que hemos comentado antes el entorno en el que trabajes te obligará a especializarte en una u otra.


viernes, 18 de mayo de 2018

Solución sobre desarrollo MonoDevelop usando GTK# en Windows 64 bits


Para poder correr un programa escrito en C#, que use GTK#, en Windows, primero es necesario instalar GTK# for .NET

Por lo que el instalador de un programa que usa GTK# debería checar la versión de GTK# ya instalada, si hay una, y si es oportuno ejecutar la instalación de GTK# antes de instalar la aplicación que depende de ella.

El problema aparece cuando estamos usando GTK# 32 bits en un Windows de 64 bits. Si la solución la creamos en MonoDevelop corriendo en Windows no habrá mayores complicaciones.

Podemos compilar sin problemas en Windows 64 bits. Pero yo me he topado casos en los cuales después de compilar desde MonoDevelop corriendo en Linux 64 bits, el assembly resultado de la compilación no corre en Windows 64 bits (no hay problema si el sistema es de 32 bits).

Aún si en las propiedades del proyecto figura como 32 bits. Mientras que al revés sí funciona, compilar en Windows y luego correr en Linux usando Mono.

Al intentar recompilar el programa usando MonoDevelop en Windows resulta que ahora no encontraba ninguna de las referencias. Desde GTK#, glade, etc. Nada, como si ninguna estuviera instalada. Noten que GTK# sí estaba instalada en el sistema.

Según las listas de correo del proyecto Mono se debe forzar la arquitectura como de 32 bits. Pero en mi caso, en las propiedades del proyecto ya figuraba como 32 bits.

La primera vez que tuve este problema lo solucioné yendo a las propiedades del proyecto y volviendo a seleccionar x86 en todas las páginas en las que aparece un Combo Box que permita seleccionar la arquitectura. Luego, al recompilar, se podía correr el programa de nuevo en Windows con total normalidad.

Pensé que con esto bastaba pero cuando volví a editar el proyecto desde Linux, y recompilé, al querer correrlo en Windows ocurrió lo mismo que la primera vez. E igual que la primera vez las versiones de Windows de 32 bit no se vieron afectadas, pero era imposible correr el programa en Windows de 64 bit. Intenté solucionarlo igual que lo había hecho la primera vez pero no funcionó.

Lo que sí me funcionó esta segunda vez fue borrar el ejecutable del programa y el archivo pdb que queda en el mismo directorio después de compilar. Luego abrí el archivo de solución (sln) con MonoDevelop y recompilé y ahora sí todo fue como se esperaba.

No aparecieron errores relacionados con referencias faltantes a GTK#.
Quisiera poder dar más información sobre esto pero por ahora me es imposible. Simplemente diré que este problema se presenta cada vez que edito el proyecto desde Linux y lo compilo. El resultado de esa compilación corre bien tanto en Linux 32/64 bit como en Windows de 32 bit. Pero para poder correr el programa en Windows 64 bit debo hacer lo que indico más arriba y recompilar, de lo contrario obtengo un montón de errores de referencias a GTK# que no se pueden satisfacer.

Los archivos pdb sólo se generan si compilamos con el objetivo debug del proyecto. O pasando /debug al compilador.

miércoles, 25 de abril de 2018

UML: Diagrama de Componentes y de Despliegue



Un diagrama de componentes es un diagrama tipo del Lenguaje Unificado de Modelado. Un diagrama de componentes representa cómo un sistema de software es dividido en componentes y muestra las dependencias entre estos componentes.

El Diagrama de Despliegue es un tipo de diagrama del Lenguaje Unificado de Modelado que se utiliza para modelar la disposición física de los artefactos software en nodos (usualmente plataforma de hardware

Adjunto la presentación:

lunes, 23 de abril de 2018

UML: Diagrama de Colaboración



Introducción.

Los diagramas de colaboración son otro tipo de diagramas de interacción, que contiene la misma información que los diagramas de secuencia, sólo que se centran en las responsabilidades de cada objeto, en lugar del tiempo en que los mensajes son enviados. Un Diagrama de Colaboración describe en forma de un grafo el comportamiento de sistemas, subsistemas y operaciones, representando los objetos que intervienen, así como los mensajes que intercambian, enumerados en el tiempo.

Definición.


El diagrama de colaboración es un tipo de diagrama de interacción cuyo objetivo es describir el comportamiento dinámico del sistema de información mostrando cómo interactúan los objetos entre sí.

Propósitos.

  • Manejar la comunicación entre los elementos del sistema. 
  • Mostrar cómo será implementada una operación. 
  • Indicar cómo deben colaborar los objetos del sistema para llevar a cabo una operación. 

Características.
  • Muestra cómo las instancias específicas de las clases trabajan juntas para conseguir un objetivo común. 
  • Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un objeto a otro. Dicha implementación es llamada "enlace". 

Ventajas.

  1. Permite elegir el orden en que pueden hacerse las cosas. 
  2. Puede describir procesos o casos de uso. 
  3. Muestra los aspectos dinámicos de un sistema. 
  4. Establece las reglas de secuencia a seguir. 
  5. Ayuda a un programador a desarrollar código a través de una descripción lógica de un proceso. 
Desventajas

La gran desventaja de los diagramas de colaboración es que no indican de forma explícita que los objetos ejecutan qué actividades ni tampoco la forma en que el servicio de mensajería trabaja entre ellos. Para mostrar tales interacciones de forma clara son necesarios los diagramas de interacción, los cuales son más utilizados en la práctica.

Elementos.

Objetos o Roles
: nodos del grafo.
Enlaces o comunicaciones: arcos del grafo.
Mensajes: llevan número de secuencia y flecha dirigida.
Anidamiento: se utiliza la numeración decimal
Iteración: colocar un * antes del número de secuencia y una cláusula de condición, si es necesario.
Bifurcación: los caminos alternativos tendrán el mismo número de secuencia, seguido del número de subsecuencia, y se deben distinguir por una condición.


Ejercicio Práctico:

Caso de Uso: Generar pedido




UML: Diagrama de secuencia


Diagrama de Secuencia.

Introducción.


El diagrama de Secuencia, muestra gráficamente los eventos que originan los actores dentro de un sistema y cómo se comunican (interactúan) entre sí a lo largo del tiempo. Esta descripción es importante porque puede dar detalle a los casos de uso, aclarándolos al nivel de mensajes.El diagrama de secuencia es más adecuado para observar la perspectiva cronológica de las interacciones, muestra la secuencia explícita de mensajes y son mejores para especificaciones de tiempo real y para escenarios complejos. La creación de los diagramas de secuencia forma parte de la investigación para conocer el sistema, por lo que es parte del análisis del mismo.

Definición.

Los diagramas de secuencia ilustran la interacción entre objetos y el orden secuencial en el que ocurren dichas interacciones, es decir cómo se comunican los objetos entre sí.

Propósitos.

Poner énfasis en el orden y momento en que se envían los mensajes a los objetos.
Proporcionar un camino a partir de los escenarios para describir las operaciones en una forma más detallada.
Mostrar la secuencia de comportamiento de un caso de uso.

Características.

Mostrar la secuencia de mensajes entre objetos durante un escenario concreto.
Cada objeto viene dado por una barra vertical.
El tiempo transcurre de arriba abajo.
Cuando existe demora entre el envío y la atención se puede indicar usando una línea oblicua

Ventajas.

Da la posibilidad de representar los mensajes en función del tiempo.
La separación de los mensajes no indica intervalos o cantidades de tiempo, solo ordenación temporal.
Es posible añadir restricciones temporales.

Desventajas.

Una representación de un diagrama de secuencia demasiado largo, puede ser difícilmente entendido por alguien ajeno al sistema.

Elementos.

OBJETOS:

Se obtienen de los diagramas de casos de uso, y se representan con dos componentes: opcionalmente el nombre del objeto, y la clase a la que pertenece.


MENSAJES:

Es una comunicación entre objetos que transmite información con la expectativa de desatar una acción. La recepción de un mensaje es, normalmente, considerada un evento Se representan mediante una flecha horizontal que va desde la línea de vida del objeto que envió el mensaje hasta la línea de vida del objeto que ha recibido el mensaje.


MÉTODOS Y OPERACIONES:

Son representados con rectángulos que se encuentran sobre la línea del objeto al cual pertenecen. La longitud de estos rectángulos se puede usar para determinar cómo se va estableciendo el control durante la secuencia, ya que un método obtiene el control desde el inicio del rectángulo hasta el final del rectángulo.


RECURSIVIDAD:

En ocasiones un objeto posee una operación que se invoca a sí misma. A esto se le conoce como recursividad y es una característica fundamental de varios lenguajes de programación.


Ejercicio Práctico:

Caso de Uso: Logueo del sistema