Mostrando entradas con la etiqueta Estudios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Estudios. Mostrar todas las entradas

lunes, 5 de marzo de 2018

Las Pruebas Unitarias

Hoy estoy abriendo un nuevo sub genero de temas en este blog, Basado en Q.A y Tdd que orientare a lo largo de este año (2018) a Python, Ruby y C#. Con esto espero no dejar de lado sobre

domingo, 1 de octubre de 2017

Realidad Aumentada

¿Qué es la Realidad Aumentada? 

La realidad aumentada es un es la combinación de la visión personal del individuo del mundo real a través o combinada con dispositivos tecnológico, en síntesis podemos decir que es la combinación de tecnología y mundo real. Dichos dispositivos añaden información del mundo virtual a elementos reales físicos, de este modo el usuario percibe ambas sin sumergirse en un ambiente netamente virtual
Con la ayuda de la tecnología (por ejemplo, añadiendo la visión por computador y reconocimiento de objetos) la información sobre el mundo real alrededor del usuario, se convierte en interactiva y digital. La información artificial sobre el medio ambiente y los objetos puede ser almacenada y recuperada como una capa de información en la parte superior de la visión del mundo real.
La realidad aumentada en el campo de la investigación explora la aplicación de imágenes generada por computador en tiempo

miércoles, 6 de septiembre de 2017

Carreras del futuro: Diseñador de videojuegos

Conoce qué hace y en qué debes formarte para ser diseñador de videojuegos
Los diseñadores de videojuegos son los que crean la idea y establecen (junto al director artístico) cómo será la apariencia y cómo serán las distintas partes del juego, desde la parte artística hasta el sonido, la interfaz del juego y la forma de jugarlo. Para esto realizan los storyboards, bocetando lo que el usuario verá mientras juega.     
La de videojuego es una de las mayores industrias del arte y entretenimiento
La de videojuego es una de las mayores industrias del arte y entretenimiento  |  Fuente: Shutterstock

Los diseñadores de videojuegos son los que crean la idea y establecen (junto al director artístico) cómo será la apariencia y cómo serán las distintas partes del juego, desde la parte artística hasta el sonido, la interfaz del juego y la forma de jugarlo. Para esto realizan los storyboards, bocetando lo que el usuario verá mientras juega.     


En la actualidad los videojuegos se desarrollan para varias plataformas distintas, como ordenadores, consolas, teléfonos móviles o plataformas online. Los diseñadores de videojuegos son profesionales híbridos entre el diseño y la tecnología; y por esto, acompañado a que es una industria que está en constante crecimiento, esta carrera está entre las más sólidas como profesión del futuro.

¿Qué habilidades necesito para convertirme en diseñador de videojuegos?

Si bien los diseñadores de videojuegos deben ser profesionales creativos e innovadores, es fundamental que tengan formación en informática y programación ya que trabajarán con programas altamente complejos.

Ser gamer es la primera condición necesaria para convertirte en diseñador de videojuegos; y aunque por supuesto que con esto no alcanza, sí es una característica favorable que quien está frente al desarrollo de un producto pueda diferenciar entre un videojuego bueno y otro que tiene mucho por mejorar. Y naturalmente esto es más fácil de notar si eres un apasionado del videojuego.  

La creatividad también es importante para un diseñador de videojuegos, ya que finalmente lo que contarán son las ideas que puedas tener para diseñar el videojuego más alucinante. Si no te sientes creativo no te preocupes, contrario a lo que muchos piensan no se nace con un caudal infinito de creatividad, sino que esta es una habilidad que puede desarrollarse mediante distintos recursos. Mira, juega, investiga, compara, lee, haz y deshaz: la idea vendrá.

Luego, entre las otras cualidades necesarias están la atención al detalle, a la calidad y originalidad, capacidad de trabajar bajo presión, de poder establecer objetivos, resolver problemas y coordinar distintas áreas y procesos de producción. Es decir, contar con una actitud profesional, algo que te exigirán desde para trabajar como oficinista hasta como astronauta, por nombrar dos campos contrapuestos.

En cuanto a la inspiración para crear un videojuego se puede partir desde un libro, película, serie o historia conocida a ser una idea totalmente original, ideada por el diseñador o el equipo de trabajo.

Como mencionamos, la capacidad de trabajar en equipo es una habilidad requerida en un diseñador de videojuegos ya que harán un trabajo que involucra muchas áreas de producción distintas con profesionales muy distintos como desarrolladores 2D o 3D, músicos, escritores, artistas gráficos o programadores y también clientes y empresarios dispuestos a aportar en lo económico para llevar adelante una idea (por eso también es importante que sepan comunicarse y persuadir al posible inversionista). 

¿Qué puedo estudiar para convertirme en diseñador de videojuegos?
  • 1 – Licenciatura en Ingeniería en Animación Digital en la Universidad Panamericana Ciudad de México
  • 2 – Animación Digital en la Universidad de Las Américas Puebla
  • 3 – Ingeniería en Tecnología Interactiva en Animación Digital en la Universidad del Valle de México
  • 4 – Licenciatura en Ingeniería en Diseño y Animación Digital en la Universidad Anáhuac Mayab
  • 5 – Licenciatura en Diseño Digital de Medios Interactivos en la Universidad Autónoma de Ciudad Juárez
  • 6 – Diseño, Animación y Arte Digital en la Universidad Tecnológica de México






lunes, 31 de julio de 2017

Pomodoro (cronometro) Para developer en c#

En la vida cotidiana realizamos esfuerzos mentales, ya sea estudiando, trabajando o incluso jugando. Dicho esfuerzo se determina como mental, y al igual que cuando entrenamos un músculo (bicep, tricep, abdominales), debe realizarse en periodos de tiempo especifico que suelen llamarse repeticiones.  Sin embargo, para el efuerzo mental no existe tal cosa como "repeticiones" y en sustitucion tenemos un tiempo T.  Francesco Cirillo, en los años 80,  creo un metodo llamado Pomodoro que consistia en realizar ciclos de 45 minutos con un cronometro de cocina con forma de tomate, de alli el nombre, que significa tomate en italiano,  ésto, con el fin de concentrar su esfuerzo mental en una sola y única tarea (estudiar, analizar o calcular), despejando cualquier interrupción y unicamente concentrandose en dicha tarea.

Bueno, basta de conceptos y explicaciones historicas, lo que hoy os he traido es un experimento para ayudarlos a concentrase cuando esten desarrollando. Llevé entonces el mismo concepto de "cronometro" al mundo digital a travez del lenguaje C#. El mismo, se basa en dos controles Timers, uno que lleva el tiempo de pomodoro y otro que realiza seguimiento al timer principal para mostrar en pantalla el tiempo que esta transcurriendo. Adicional a ello tambien usé un NotifyIcon para esconder el programa y apollandome en la clase WMPLib de windows, ejecutar sonidos en mp3; y para este caso, usé sonidos bien frikis, así que espero difruten el proyecto.

Explicacion del Proyecto:

Primero explicaremos como añadir la libreria WMPLib a nuestro proyecto para ejecutar los sonidos:

Para ello, vamos a importar una referencia llamada Windows Media Player

Aqui la podemos constatar 

Luego la llamamos para su uso en la clase 



Ahora vamos a agregar los sonidos que queremos ejecutar. Esto es muy simple, vamos a nuestra solución, pulsamos click derecho, agregar-> elemento existente y en la ventana ponemos en los filtros todos los archivos, buscando los que queremos para este proyecto y ya los tiene agregados 


Y ahora creamos el metodo " ejecutar sonido " al cual llamaremos y con una sobrecarga  definiremos qué sonidos queremos ejecutar, usando el metodo .play()


Ahora si, vamos al main de este proyecto. Agregando dos controles Timers al form, uno llamado Pomodoro y otro Verificador. (además de un NotifyIcon y un ToolTip, que sería bueno que más adelante explique como funcionan,... pero será para otra publicación )



Adicional, agregaremos un control numericupdown para así tomar del usuario el tiempo que tendrá el timer; recordemos que el timer usa el tiempo en milisegundos.

Tenemos entonces, el metodo Inicio y el metodo Pausar

Iniciar: con este metodo, básicamente, invocamos los metodos Start o Stop, dependiendo de si queremos detener o iniciar el timer del pomodoro, tomando la cantidad de tiempo ingresada por el usuario en el control numerico y lo multiplicandolo por 60, luego por mil para obtener el tiempo en milisegundos 



Éste metodo Pasuar me dio pelea pero basicamente era por que fui terco queriendo crear un algoritmo que me diera el tiempo que resta del tiempo original, así que me fume un porro digital y salio esto:



 Y basicamente esta fue la solución; un metodo que le agrega al objeto tiempo fin  (que será el tiempo de ahora, más el tiempo del pomodoro)


Por último, tenemos este metodo en el que, cuando el timer Verificador entra en ciclo muestra al usuario cuánto tiempo resta. El tiempo de ciclo de este timer es menos de un segundo para así mostrar lo más rapido posible el tiempo actualizado



En fin!, este es un proyecto muy cortico y cool que hice hace ya unas semanas, pero no tenía tiempo, jejeje; pronto subiré otro sobre captura de pantalla, un reproductor de sonido en c#, un ejemplo del uso de drag and drop también en c# y a ver si me digno a subir unos cuanto proyectos orientados a web en php; pero eso será para otra publicación. Hasta entonces, aquí abajo les dejo el link para que se descarguen el ejemplo y que el codigo este con ustedes.... "y con su compilador".


Descarga del Proyecto:








miércoles, 1 de febrero de 2017

Concepto de La computación en la nube



Para iniciar debemos explicar que es una aplicación y una base de datos según algunas fuentes una aplicación es un programa informático ( Escrito en un lenguaje de programación) que permite al usuario realizar diversos tipos de tarea , pues solucionan , facilitar o/y automatizan procesos como por ejemplo Procesos contables, procesos de nómina hasta incluso un procesador de texto ; Por otra parte una base de datos se puede definir como un conjunto de aplicación, herramientas y conceptos ( incluso posee su propio lenguaje “universal” llamado SQL ANSI)  para el almacenaje, distribución y verificación de datos  los cuales cumplen una representación virtual del datos del mundo real incluyendo su estructura de los mismo.

Teniendo claro estos conceptos nos surge una incógnita. ¿Qué son las bases de datos y aplicaciones en la nube?.  Pues su concepto o implicación no dista mucho de su concepto original pero en síntesis se podría explicar que las aplicaciones  y las bases de datos funcionan en la internet; para eso responderemos la siguiente pregunta  ¿qué es la nube?
Su nombre especifico es computación en la nube y  según la AEEE: “es un paradigma en el que la información se almacena de manera permanente en servidores de Internet y se envía a caches”. La nube, como también se le conoce, es una Herramienta, recursos y plataformas  que permite solucionar a través de internet necesidades del área de TI (por su siglas en inglés, Tecnología información). De esta manera estos recursos estarán disponibles constantemente a los usuarios desde cualquier parte del mundo siempre y cuando disponga de una conexión a internet, estos servicios ofrecen un 99.9% por ciento de disponibilidad. Este modelo de negocio  ofrece a los clientes acceder a un índice de productos y servicios sin que el mismo maneje de manera profunda conocimientos en el  área y sin posser una infraestructura física en la localidad. Las empresas que ofrecen estos servicios en la nube poseen granjas de servidores medidas en  teraflops por segundo de procesamiento y actualizan constantemente la plataforma permitiendo una escalabilidad de los servicios ofrecidos “sin afectar” al cliente final. A parte esto asegura la información almacenada en los servidores de la nube de ataques informáticos, gobiernos locales o entes terroristas.

La Nube se puede separar por tipos. Las nubes publicas donde la computación es mantenida y gestionada por terceras no vinculadas a la organización; Las nubes privadas Están creadas bajo las característica e infraestructura de un solo cliente ofrecen un estándar de seguridad superior puesto que estas controlan que y donde se ve. Y por último tenemos la hibridas y comunitarias donde las hibridas ofrecen un modelo combinado de las públicas y las privadas sobre pedido y costos del cliente y las comunitarias  cuyo modelo es expuesto por Joyanes Aguilar en el 2012, especificando que este modelo tiene la finalidad de servir y a una fundación o propósito común.

LA idea de la nube nace en los años 60 pero no es hasta la llegada de la internet de banda ancha que no tiene un inicio formal, Según nuestras fuentes una de las primeras páginas que emulaba el servicio de computación en la nube fue saleforce.com en el 1999, que proporcionaba un servicio pionero de entrega de aplicaciones empresariales a través de una página web. Es entonces con el nacimiento de lo que se conoce del internet 2.0 y el desarrollo de la teoría de la internet de las cosas donde podemos ver un desarrollo constante de la computación en la nube, siendo grandes exponentes a partir del 2002 a la empresa  Amazon por Amazon Web Services y luego en el 2006 Ellos mismo lanzando Elalatic Compute Cloud (EC2)  para luego en el 2009 Google ofrece  aplicaciones basadas en el navegador y mas luego en el 2010 Microsoft con su plataforma Azure. De las palabras de Jeremy Allaire CEO de Brightcove donde dice: “El pc de escritorio está muerto. Bienvenidos a la nube de internet”

La computación en la nube o también la nube posee características fundamentales y notables, que hacen frente a demandas del modelo de negocios tecnológico tradicional, entre las cuales tenemos:

Ø  Costos: debido a que la adquisición del servicio se realiza una sola vez, esto elimina costo en actualización de hardware junto con una estructura de costo fijada al tiempo de uso del servicio reduce drásticamente costo eléctricos por ejemplo.

Ø  Escalabilidad: como consecuencia de mejora del servicio para la competencia en el mercado. Los clientes se ven directamente beneficiados de mejoras tanto de software como de hardware que las empresas apliquen a sus servidores.

Ø  Seguridad: al estar centralizada la información y las aplicaciones, es mucho más fácil para las empresas destinar más tiempo y recursos a problemas de este tipo. El usuario sería responsable solo de la información alojada en la nube y el proveedor de su seguridad física

Ø  Mantenimiento: el cliente se vería directa desentendido de este tema dejando al proveedor el mantenimiento del servicio y de la infraestructura física, sin embargo algunos elementos relevantes a la configuración siguen permaneciendo tareas del cliente

Ø  Independencia: Permitiendo al usuario acceder a la nube desde cualquier dispositivo y lugar del mundo.

Las ventajas y desventajas de  la computación en la nube  se resumir en prestación de servicios a nivel mundial, implementación más rápida  y actualización automáticas como ventaja basadas en las características fundamentales de la computación, pero posee fuertes desventajas en las que podemos mencionar; centralización absoluta dependiente de una seguridad general ofrecida por el proveedor, la disponibilidad del servicio está sujeta a la disponibilidad de internet y disposición de tecnología especializada podría tardar meses en ser implementada.

No obstantes los servicios  que ofrece la nube se dividen en tres conceptos fundamentales, dependiendo directamente de lo que se va a ofrecer al cliente y orden que va desde el más abstracto al menor :

      I.        Software como servicios; (SaaS por su siglas en ingles  Software as a Service).

    II.        Plataformas como servicios; (PaaS por su siglas en ingles  Plataform as a Service).

   III.        Infraestructura  como servicios; (IaaS por su siglas en ingles  Software as a Service).

La modalidad Software como servicio (SaaS) Las aplicaciones están alojadas en los servidores de la compañía que ofrece el servicio y esta puesta a disposición a través de la red. Es multitendencia por lo tanto es una sola instancia del software que se ejecuta en la estructura del proveedor  y provee a múltiples clientes .Se encuentra en la capa mas alta  y evita al cliente la instalación y configuración de la aplicación sin embargo puede que ciertas aplicaciones den parámetros configurables al cliente.

Plataforma como servicio (PaaS),  Abstrae del hardware físico y la administración de servidores del cliente y para cualquier proyecto de desarrollo web de una empresa remplaza a las empresas de hosting  como la conocemos hasta ahora. Pertenece a la capa del medio permite ofrecer una plataforma óptima para el desarrollo o programación de aplicación, brindando prueba un entorno con herramientas, APIs pre configuradas y sistemas básicos para ello. Se ha discutido mucho sobre este servicio puesto que entre su ventajas está el desarrollo de aplicación con una complejidad reducida,  también manteniendo y mejoración de la aplicación mucho más sencilla permitiendo básicamente una característica básica de la computación en la nube que es la independencia en el momentos del desarrollo de la aplicación. Sin embargo podemos notar que también posee desventajas, tales basadas en que los desarrolladores no podrían usar herramientas convencionales  y el producto final queda encapsulado a una sola plataforma ofrecida por el PaaS.

Infraestructura  como servicios (IaaS), Similar a los servicios en la nube  anteriormente mencionados,  Proporciona recursos informáticos Alojados en un entorno Vitalizado, apoyando así las operaciones derivadas de almacenamientos, hardware y componentes de red. Se encuentra en la capa inferior, albergando todo lo referente al almacenamiento y computo como servicio entandar.

Una vez aclarado el concepto de la computación en la nube. Podemos describir lo que es las aplicaciones y la base de datos en la nube. La base de datos en la nube es entonces Servicios ofrecidos por consola web en la cual el usuario crea y gestiona estructura y datos en ella a la cual aplicaciones podrán conectarse a ellas a través de APIs cuidando la estabilidad y alta disponibilidad del servicio. El concepto de base de datos en la nube se aprecia en el renglón del medio en la clasificación de la computación en la nube siendo una plataforma prestada como servicio. Dentro de las bases de datos en la nube podemos observar modelos diferentes en este caso dos  Las bases de datos SQL que  tienen escalabilidad baja porque no fueron creada de forma original  para la nube, aunque los servicios de base de datos SQL basados ​​en la nube están intentando abordar este modelo. Y por otro Las NoSQL siendo otro tipo de base de datos que puede ejecutarse en la nube. Las bases de datos NoSQL están diseñadas para soportar cargas pesadas de lectura y escritura, además son capaces de escalar hacia arriba y hacia abajo con flexibilidad.
Entre los proveedores de este servicio destacamos los siguientes dependiendo de los modelos antes nombrado: Amazon Relational Database Service con MySQL, Microsoft SQL Azure con MS SQL y EnterpriseDB con Postgres Plus Cloud Database como servicios de modelos de datos SQl
Y Amazon DynamoDB, Google App Engine Almacenamiento de datos, MongoDB Base de datos como servicio2 ofreciendo modelos de datos NoSQL.

Las aplicaciones en la nube Pertenecen al escalos de SaaS o Software como servicio, estas son ejecutadas desde el navegador o en incluso algunos casos un gestor de navegador especifico distintos al navegador tradicional. Entre las aplicaciones en la nube destacamos la siguientes:


Agilebuddy, aplicación ideal para  scrum o alguna metodología ágil, usada para proyectos grandes, obteniendo un gran rendimiento en la gestión de proyectos. Google Docs permitiendo al usuario no instalar una suite ofimática en su computador para realizar documentos, ofrece una hoja de cálculo similar a Excel. Spotify, Orientados a los amantes de la música el concepto es básico, música en línea para escuchar sin irrumpir en violación de copyright. 

Referencias 

España, Dan Rivas. (September 8, 2010)  [http://deldan.com/2010/09/11-importantes-aplicaciones-en-la-nube/] disponible en http://deldan.com consultado: 2017, Enero 30
Fundación Wikimedia, Inc (9 dic 2016) [https://es.wikipedia.org/wiki/Base_de_datos_en_la_nube]
Disponible en https://es.wikipedia.org consultado: 2017, Enero 8
Fundación Wikimedia, Inc (25 ene 2017) [ https://es.wikipedia.org/wiki/Computación_en_la_nube] disponible en http://deldan.com consultado: 2017, Enero 31
Margaret Rouse(diciembre 2010) [http://searchdatacenter.techtarget.com/es/definicion/Computacion-en-la-nube] disponible en techtarget.com/es consultado el : 2017, Enero 30
Fundación Wikimedia, Inc (12 ene 2017) [https://es.wikipedia.org/wiki/Aplicación_informática] Disponible en https://es.wikipedia.org consultado: 2017, Enero 29
Fundación Wikimedia, Inc (30 ene 2017) [https://es.wikipedia.org/wiki/Software_como_servicio] Disponible en https://es.wikipedia.org consultado: 2017, febrero 1
Interoute Communications Limited (2013) [http://www.interoute.es/what-iaas] disponible en http://www.interoute.es consultado: 2017, Enero 29

miércoles, 8 de abril de 2015

UML Diagrama de clase

Introducción


En los diagramas de clases de UML, se describen el objeto y las estructuras de información que se utilizan en la aplicación, tanto de forma interna como en la comunicación con los usuarios. Esta información se describe sin hacer referencia a ninguna implementación concreta. Las clases y relaciones se pueden implementar de muchas maneras, por ejemplo, en tablas de bases de datos, en nodos XML o en composiciones de objetos de software.



Elementos que componen al diagrama:



la clase es el elemento princpal del diagrama compone el formato de creacion de los objetos ( los objetos son instancias de las clases). Con ellas modelamos los sistemas, estan reprecentadas de las sigueinte forma.

un rectangulo en vertical dividido en tres partes:

  1. Superior = nombre de la clase , 
  2. Media= propiedades o atributos y objetos de la clase 
  3. Inferior = metodos o procesos de la clases 

un ejemplo de un clase puede ser con el tema automotriz en el cual

  • la clase se llama carro
  • los atributos o propiedades son candidad de ruedas,motor y puertas
  • y los metodos u operaciones = encender ,andar y frenar

Las clases internamente poseen atributos y metodos internamente; Antes de continuar con atributos y metodos  debemos explicar los niveles de Protección de los elementos contenidos en la clase

  • publicas  {símbolo (+) } Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
  • privadas {símbolo (-)}  Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).
  • protegidas  {símbolo (#)}Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven.

Atributos o propiedades 

son las características principales de la clase esta pueden, si la clase fuese mesa sus propiedades o atributos seria

  • cantidad de patas de la mesa, 
  • color de la mesa ,
  •  alto de la mesa
  •  etc.


 Estas propiedades  caracterizan a la clase de otra clases y son heredarles. Al igual tiene un tipo de dato basico ( string ,int ,decimal, float ,boolean) para poder saber distinguirla y hacer uso correctas de ellas a su vez  possen un nivel de Protección que nos indican hasta que nivel llega su uso en el sistema por instancias y clases deribadas


Metodos u Operaciones 


es el la seccion inferior del rectangulos, y nos indica que Hace la clase. en el ejemplo anteriro lo realize con la mesa en este caso volvemos al ejemplo del carro. La clase carro posee operaciones o metodos que ella relaiza al ser llamado ese metodo por una instancia y su interaccion con otras clases del diagrama, un ejemplo de metodo seria


  • andar
  • frenar
  • encender
  • apagar
Siguiendo la esquematizan de c++ los metodos no inidican que tipo de dato son pero si indican si devuelven o no dato alguno para determinar esto  se coloca el ejemplo de andar de la clase carro, si fuese un metodo que devuelve dato se coloca asi: Andar() de lo contrario si no devolviese dato alguno fuese asi andar(): void  indicando que si es método mas no devuelve dato. A su vez estos metodos possen un nivel de proteccion determinado 

Relaciones entre las clases 


Existen diversos tipos de relaciones y cardinalidad entre las clases en el diagrama de clases empezemos por explicar lo que son las Cardinalidades:


Cardinalidades

indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas son:


  • uno o muchos: 1..* (1..n)
  • 0 o muchos: 0..* (0..n)
  • número fijo: m   (m denota el número).

Relaciones de Herencia  


Indica que una subclase hereda los métodos y propiedades  especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected)


Agregación



Para modelar objetos complejos, n bastan los tipos de datos básicos que proveen los lenguajes: int, decimales y string . Cuando se requiere componer objetos que son instancias de clases definidas por el desarrollador de la aplicación, tenemos dos posibilidades:


  • Por Valor: Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. Este tipo de relación es comunmente llamada Composición (el Objeto base se contruye a partir del objeto incluido, es decir, es "parte/todo").



  • Por Referencia (ref): Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye. Este tipo de relación es comunmente llamada Agregación (el objeto base utiliza al incluido para su funcionamiento).
La flecha en este tipo de relación indica la navegabilidad del objeto refereniado. Cuando no existe este tipo de particularidad la flecha se elimina.

En este ejemplo una ciudad tiene un areopuerto pero se puede dar el caso de que una ciudad tenga mas de un areopuerto



Asociación

La relación entre las clases conocidas como Asociación permite asociar objetos que colaboran juntos. Significativamente , no es una relación fuerte , es decir , el tiempo de vida de un objeto depende de la otra .





Una mesa puede tener asociada  muchas sillas en cambio una silla tendra una unica mesa

Instanciación (uso)


Representa un tipo de relación muy particular, en la que una clase es instanciada (su instanciación es dependiente de otro objeto/clase). Se denota por una flecha punteada.

El uso más particular de este tipo de relación es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicación grafica que instancia una ventana (la creación del Objeto Ventana esta condicionado a la instanciación proveniente desde el objeto Aplicacion):




Cabe destacar que el objeto creado (en este caso la Ventana gráfica) no se almacena dentro del objeto que lo crea (en este caso la Aplicación, de lo contrario se crea un nuevo objeto en el sistema ).



Clase Abstracta


Una clase abstracta se denota con el nombre de la clase y de los métodos con letra "itálica". Esto indica que la clase definida no puede ser instanciada pues posee métodos abstractos (aún no han sido definidos, es decir, sin implementación). La única forma de utilizarla es definiendo subclases, que implementan los métodos abstractos definidos.




Parametro de las Clases


Una clase parametrizada se denota con un subcuadro en el extremo superior de la clase, en donde se especifican los parámetros que deben ser pasados a la clase para que esta pueda ser instanciada. El ejemplo más típico es el caso de un Diccionario en donde una llave o palabra tiene asociado un significado, pero en este caso las llaves y elementos pueden ser genéricos. La genericidad puede venir dada de un Template (como en el caso de C++) o bien de alguna estructura predefinida (especialización a través de clases).






En este diagrama se puede apreciar lo siguiente
La clase persona es una clase abstracta que generara en herencia cliente y empleados ambos son personas heredadondo todo desde la superclase y possen elementos propios como +mostrar()


  • Empleado tiene elementos privados como sueldo__bruto y metodos publicos como calcular salario neto()



  • directivo es una clase que hereda de empleado sin embargo tiene una relacion con empleado de tipo subordinado indicando un nivel de rango empresarial superior dada por la logica de negocios del sistema



  • cliente esta relacionado con empresa donde es una relacion agregacion donde el tipo de dato es la clase en si



  • empresa tiene una relacion a su vez tambien de agregacion con empleados



El diagrama nos describe entonces lo siguiente. una empresa tiene empleados y clientes que son personas, a su vez existen empleados con mayor rango que son superiores directivo. la relacion de empleado y empresa es uno a muchos aunque no se muestra es la logica sin embargo se maneja el tipo de empleado de esa empresa a su vez igual con clientes.


Apoyado sobre el material 
http://users.dcc.uchile.cl/~psalinas/uml/modelo.html

lunes, 30 de marzo de 2015

UML

Uml



Uml o como es su acrónimo Lenguaje de modelado unificado es metodología de diseño y diagramas de sistemas / software usado a nivel internacional. Posee estándares usados a nivel mundial sobre el desarrollo de software  en la etapa de diseño. Este lenguaje permite a los arquitectos, ingenieros y programadores de software plasmar  de manera real lo que será los partes del sistema a manera de poder agilizar y facilitar el proceso de programación y codificación


Para explicar bien lo que significa uml debemos entender que es la metodología orientada a objetos, el modelado y los procesos

La metodología orientado a objeto en la programación dicta que los objetos programados interactúan entre si y estos no son mas que formas abstractas del mundo real llevados al mundo digital, si bien el ejemplo mas claro es un carro me gustaría usar el de la mesa; Una mesa en nuestro mundo posee  propiedades {cantidad de patas, material, forma, color, altura, ancho etc} y tiene acciones  como son sontener objetos, servir de apoyo etc como bien este objeto mesa tiene todas esta características en el mundo real en el mundo digital una mesa debería tener las mismas carateristicas y al interactuar con otros objetos puede usarse sus acciones ( sostener objetos por ejemplo)  o modificar algunas de sus propiedades. Esa es la metodología orientada a objetos el donde las antes llamadas variables y funciones no son mas nada que objetos y métodos que interactúan con otros realizando un fin… ¿Te recuerda algo… Teoría de Sistemas?

Bien una vez comprendido eso podemos decir que los procesos no son mas que un conjunto de acciones. En programación son llamados métodos pues estos realizando un conjunto de sentencias que tienen. Los procesos son la parte fundamental en la diagramación y planificación  del programa puesto que es muy necesario  poder describir y seguir la secuencia lógica de las acciones que realiza el proceso para no caer en la reprogramación o reestructuración del sistema

Por su parte el modelado Es la acción de diagramar y planificar desde un punto de vista una sección del sistema es decir si bien los procesos describen una secuencia de acciones y pueden llamar a otros procesos el modelado describiría una sección del sistema por ende una sección en sus procesos mas grande de un sistema, por ejemplo el modelado del sistema de refrigeración de un automóvil, si bien es parte del automóvil y es un sistema perteneciente a otro sistema mas grande el modelado seria realizar una serie de planificación y diagramación donde se explica paso a paso con un orden cronológico por procesos lo que realiza esa sección del sistema y que este modelado puede ser perfectamente unido al modelado del sistema mas grande.



Historia


Son tres los padre de uml o fundadores son 


  •         Grady Booch
  •          Ivar Jacobso
  •          james rumbaugh



  • Grady Booch  Teorizaba en 1980  que los elemetos digitales eran objetos y clases  que interactuaban entre si por lo tanto describía patrones donde los objetos interactuaban y ejecutando procesos resolviendo el problema y llegando al objetivo del sistema


  • Ivar Jacobso Con SDL (lenguaje de especificación), que se convirtió en estándar en 1967 aporto diagramas al uml donde se especifica los mensajes transmitidos entre diversas secciones del diagrama 


  • james rumbaugh aplico dentro de uml lo que despues su trabajo externo que fuer rup Proceso unificado racional procesos de descripción de objetos 








Diagramas

  • Modelado de Procesos 

  1. Diagrama de clases
  2. Diagrama de objetos
  3. Diagrama de componentes
  4. Diagrama de estructura compuesta
  5. Diagrama de paquetes
  6. Diagrama de despliegue

  • Modelado de Comportamiento 

  1. Diagrama de casos de uso
  2. Diagrama de actividades
  3. Diagrama de estado

  • Modelado de Interacción 

  1. Diagrama de secuencia
  2. Diagrama de comunicación 
  3. Diagrama de tiempo
  4. Diagrama de interacción

miércoles, 11 de marzo de 2015

Ciclo de Vida de un Sistema

Ciclo de vida de un sistema


El ciclo de vida de un sistema es todo el proceso que lleva desde que nace hasya que trabaja y muere parecido al ciclo natural del  hombre nacer, crecer, reproducirse y morir este en un sistema varia pues por decirlo asi podria haber dos etapas  la de confecciona de un sistema y su implementasion , varian y no son las misma pues cuando vemos el enfoque original de un sistema y luego como este queda  al final puede cambiar; agregándole o sustrayéndole procesos que realiza.


definiremos estoces estas dos partes en confeccion de un sistema que seria


  1. definición de necesidades 
  2. análisis
  3. diseño
  4. codificación


y en la parte de implementan contamos con ya hecho en teoria parte del sistema consideramos que no necesitamos trabajar mas y la parte principal de este ciclo que basado todo en pruebas contra la vida


  1. pruebas
  2. validación
  3. mantenimiento y evolución






  1. definición de necesidades: En esta Parte Puede ser también definida como Levantamiento de la información o por lo menos usamos en muchos caso las herramientas dadas propias de la Investigación de campo

Análisis


Después de ver las necesidades ahora confrontamos los datos recolectados para nuestro sistema contra los conocimiento de nuestra aera. Definimos empíricamente que sera el sistema, sus objetivos, sus metas. Que usaremos, Donde lo usaremos; En este punto también analizamos lo que que hay en el ambiente donde se desenvolverá el sistema que nos pueda ser útil, Analizamos las necesidades reales del cliente que muchas veces van mas alla de lo que ellos simplemente nos pide.

Podemos decir tambien que en esta area se define la:


  • la plataforma donde se desarrollara
  • la plataforma donde se ejecutara
  • si es un sistema informático el lenguaje a usar 

Diseño:


En el diceño de un sistema daré el ejemplo de un sistema informático en este caso


  • planteamos como sera la interface  visual por ejemplo desde su diceño y orden de sus
  • componentes , diseñamos los principios de la base de datos, 
  • planteamos  la sub divicion del sistema,  
  • planteamos las clases y sus usos,       
  • Como documentaremos a medida que vamos desarrollando (proximo paso)
  • diagramas de flujo del sistema


En definitiva es todo ese pre trabajo antes del trabajo para aligerar la carga que tendremos en el próximo paso.



Codificación


En esta sección. empezamos la programador como tal, Traducimos a lenguaje de progrmacion los diagramas y procesos que las etapas anteriores pudimos recopilar asi como las validaciones pertinente de los procesos y la data, basándonos en el lenguaje seleccionado en la sección  de diseño y análisis. En esta sección podemos determinar si por razones de lenguaje nuestro tiempo de producción sera mas o menos extenso de lo que previmos así como si el lenguaje nos brinda todas las herramientas necesarias para desarrollar nuestro sistema. por otra parte se pueden hacer modificaciones en el área de diseño y uso o combinación contra otras plataformas o/u lenguajes.
Se considera que esta sección del ciclo es una de las que mas peso tiene y a su vez tiene a modificar fuertemente las secciones anteriores ya sea por diversas razones (legales o  tecnológicas)





Pruebas 



Como su nombre lo dice se pone a prueba el sistema en un ambiente controlado alimentándolo con valores reales y comparando resultados contra resultados reales ya confirmados, para poder saber si hay fallas o problemas, y resolverlas a tiempo y antes del paso de validación o implementancion

A nivel de programa se le realizan la siguientes pruebas
  • Pruebas unitarias: Sirven para comprobar que cada módulo realice bien su tarea. 
  • Pruebas de interconexión: Sirven para comprobar en el programa el buen funcionamiento en conjunto de todos sus módulos. 
  • Pruebas de integración: Sirven para comprobar el funcionamiento correcto del conjunto de programas que forman la aplicación. (el funcionamiento de todo el sistema) 

Validación:

o bien llamada implementacion es la etapa del ciclo que mas costo y tiempo consume. En este proceso es donde se coloca el sistema en funcionamiento y se capacita al personal para su uso. Existen diversas formas de ponerse un sistema en funcionamiento Son las siguientes:

directo: Se abandona el sistema anterior ( de existir)y se adopta el numero imediantemente.
esto puede traer problemas y riegos a demas de no poder regresar a sistemas anteriores en la mayoría de los casos y los cambios para solventar los problemas deben hacerse en pleno funcionamiento del sistema

Paralelo: Es cuando tanto el sistema anteiror como el nuevo estan funcionando a mismo tiempo hasta que el nuevo cumpla con las espectativas o se cumpla con el proceso de entrenamiento del personal
posee muy bajo riesgo en su metodología, pero genera muchos problemas de costo y mantenimiento


Piloto. se pone a prueba el sistema en una sección aislada o parte de la organización y al completar los requisitos se implementa en general, es mucho menos costoso que el paralelo pero un  tanto mas riesgos

Fases: la implementacion del sistema se divide en parte o fases que se van  realizando a lo largo de un periodo de tiempo, sucesivamente. una vez iniciada la primera fase la segunda no se inicia hasta que se complete la primera. representa ser mas costoso por se hace mas lenta la implementacion pero es la que menos riesgo posee



Mantenimiento y Evolución


Es donde el sistema pasa la mayoría de su tiempo de vida como tal, pues en ella el sistema cumple con sus objetivos y se desenvuelve en el ambiente para el cual fue creado.

Evolución : Se busca formas de mejorar el sistema replanteando su diseño codificación y análisis, asi como adición de nuevos sub-sistemas o sub-procesos que permiten abarcar una mayor área de trabajo.

mantenimiento:  es que hagamos lo posible por no caer en errores, la actualización si el usuario tiene la necesidad de quitar o poner algo; téngase en cuenta que cuando surge mantenimiento tenemos que volver a hacer todos los pasos anteriores revisando que todas la condiciones sean favorables alrededor del sistema.



Teoria de sistemas - Analisis

La teoría de sistemas

 o teoría general de los sistemas es el estudio de múltiples disciplinas de los sistemas en general. Su objetivo es estudiar los principios aplicables a los sistemas en cualquier nivel en todos los campos de la investigación osease ciencia, filosofía o arte.

 La ciencia de sistemas observa totalidades, fenómenos, isomorfismos, causalidades circulares, y se basa en principios como la subsidiariedad, permisividad, multicausalidad, determinismo, complementariedad, y de acuerdo con las leyes encontradas en otras disciplinas y mediante el isomorfismo, plantea el entendimiento de la realidad como un complejo, con lo que logra su transdisciplinariedad, y multidisciplinariedad.

 la teoria de sistemas


segun la rae dice

1° Conjunto de reglas o principios sobre una materia racionalmente enlazados entre sí.


2°  Conjunto de cosas que relacionadas entre sí ordenadamente contribuyen a determinado objeto.



Sintetizando el tema hablamos que un sistema es un conjunto de elementos que convergen en acciones para un mismo fin, en la naturaleza podemos apreciar fuertemente un equilibrio o sistema en el cual el clima, las planta y los animales actúan para un mismo fin. A su vez también es apreciable este en el funcionamiento de un carro. tenemos el motor, la caja de cambio y el sistema de frenos Todo este conjunto de partes funciona para un mismo fin que es desplazarse del punto 'a' al punto 'b'.

Un sistema en informática  te permite procesar y almacenar datos. Este esta sub dividido en partes relacionada y entre ellos realizan un solo objetivo

un ejemplo seria los sistema de gerencia de un local el cual posee sub partes que por lo general son:

  • Facturación
  • Inventario
  • Contabilidad


Estos tres pueden funcionar por separado a simple vista pero internamente funcionan como un solo. pues facturación requiere de datos de inventario y pasa por contabilidad para los datos. Esto aplica también para el concepto de sistema operativo pues este sistema se encarga del manejo de múltiples elementos ( hardware y software) para así brindarle al usuario un ambiente manejable y con múltiples herramientas.

Característica de los sistemas

Objetivo:


Todos los sistemas tienen uno o varios objetivos para su funcionamientos, los elementos o partes u objetos que las relacionan y definen  están formadas para completar una meta(s) clara(s)


Globalismo:

Todo sistema proviene de un origen orgánico por lo cual el globalismo nos indica que todo cambio en en una parte del sistema afectara a las otras partes y a su vez todo el sistema. Esta teoria dicta que cada parte del sistema al verse relaciona entre si una accion en alguna de ella genera una reaccion en todas las partes relacionadas y modificando la forma de ejecucion o trabajo del conjunto o sistema. Esto va desde un cambio hasta material de proceso.

Entropia:

Es la tendencia que los sistemas tienen al desgaste, a la desintegración, para el relajamiento de los estándares y para un aumento de la aleatoriedad. A medida que la entropía aumenta, los sistemas se descomponen en estados más simples. La segunda ley de la termodinámica explica que la entropía en los sistemas aumenta con el correr del tiempo.A medida que aumenta la información, disminuye la entropía, pues la información es la base de la configuración y del orden.



 Homeostasis:

Es el equilibrio dinámico entre las partes del sistema. Los sistemas tienen una tendencia adaptarse con el fin de alcanzar un equilibrio interno frente a los cambios externos del medio ambiente.


Tipos De Sistemas

 Según su Constitución:


  • Sistemas conceptuales: están constituidos por conceptos que son ajenos a la realidad y que resultan meramente abstractos.

  • Sistemas físicos: los elementos que los componen, en cambio, son concretos y palpables, es decir que se los puede captar por medio del tacto.

 

Según su origen:


  • Sistemas artificiales: se caracterizan por ser producto de la creación humana, por lo que dependen de la presencia de otros para poder existir.

  • Sistemas naturales: estos en cambio, no dependen de la mano de obra del hombre para originarse.

 

 Según su movimiento:


  • Sistemas dinámicos: estos sistemas se caracterizan por presentar movimiento.
  • Sistemas estáticos: como su nombre indica, carecen de movimiento alguno.

 

 Según la complejidad de los elementos que los conforman:


  • Sistemas complejos: se caracterizan por estar compuestos por una serie de subsistemas, lo que vuelve difícil la tarea de identificar los distintos elementos que los componen.
 
  • Sistemas simples: a diferencia de los anteriores, éstos no cuentan con subsistemas, lo que permite identificar fácilmente a los elementos constitutivos de los mismos.

  Según su naturaleza:

  • Sistemas inertes: carece de vida alguna.
  • Sistemas vivos: estos, en cambio, si poseen vida.



NestJs Error on SecretKey for JWToken

  Imagine this you are coding happy, configuring your module has   auth.module.ts   using on your register the classic call to get env value...