martes, diciembre 06, 2005

MotoLatino

martes, noviembre 29, 2005

Simbolos e iconos usados en UML




Que es UML?



UML = Unified Modeling
Language Lenguaje Unificado de Modelamiento

Es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software. Se usa para entender, diseñar, configurar, mantener y controlar la información sobre los sistemas a construir.

UML capta la información sobre la estructura estática y el comportamiento dinámico de un sistema. Un sistema se modela como una colección de objetos discretos que interactúan para realizar un trabajo que finalmente beneficia a un usuario externo. El lenguaje de modelado pretende unificar la experiencia pasada sobre técnicas de modelado e incorporar las mejores prácticas actuales en un acercamiento estándar. UML no es un lenguaje de programación.
Las herramientas pueden ofrecer generadores de código de UML para una gran variedad de lenguaje de programación, así como construir modelos por ingeniería inversa a partir de programas existentes.

Es un lenguaje de propósito general para el modelado orientado a objetos. UML es también un lenguaje de modelamiento visual que permite una abstracción del sistema y sus componentes. Existían diversos métodos y técnicas Orientadas a Objetos, con muchos aspectos en común pero utilizando distintas notaciones, se presentaban inconvenientes para el aprendizaje, aplicación, construcción y uso de herramientas, etc., además de pugnas entre enfoques, lo que genero la creacion del UML como estándar para el modelamiento de sistemas de software principalmente, pero con posibilidades de ser aplicado a todo tipo de proyectos.
UML es un lenguaje de modelado de propósito general que pueden usar todos los modeladores. No tiene propietario y está basado en el común acuerdo de gran parte de la comunidad informática.

UML no pretende ser un método de desarrollo completo. No incluye un proceso de desarrollo paso a paso. UML incluye todos los conceptos que se consideran necesarios para utilizar un proceso moderno iterativo, basado en construir una sólida arquitectura para resolver requisitos dirigidos por casos de uso.
Ser tan simple como sea posible pero manteniendo la capacidad de modelar toda la gama de sistemas que se necesita construir. UML necesita ser lo suficientemente expresivo para manejar todos los conceptos que se originan en un sistema moderno, tales como la concurrencia y distribución, así como también los mecanismos de la ingeniería de software, como son la encapsulación y componentes.

Debe ser un lenguaje universal, como cualquier lenguaje de propósito general.
Imponer un estándar mundial.

Arquitectura de cuatro capas, definida a fin de cumplir con la especificación Meta Object Facility del OMG:
  • Meta-metamodelo: define el lenguaje para especificar metamodelos.
  • Metamodelo: define el lenguaje para especificar modelos.
  • Modelo: define el lenguaje para describir un dominio de información.
  • Objetos de usuario: define un dominio de información específico.

Áreas conceptuales de UML

Los conceptos y modelos de UML pueden agruparse en las siguientes áreas conceptuales:
Estructura estática:

Cualquier modelo preciso debe primero definir su universo, esto es, los conceptos clave de la aplicación, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de construcciones es la estructura estática. Los conceptos de la aplicación son modelados como clases, cada una de las cuales describe un conjunto de objetos que almacenan información y se comunican para implementar un comportamiento. La información que almacena es modelada como atributos; La estructura estática se expresa con diagramas de clases y puede usarse para generar la mayoría de las declaraciones de estructuras de datos en un programa.
Comportamiento dinámico:
Hay dos formas de modelar el comportamiento, una es la historia de la vida de un objeto y la forma como interactúa con el resto del mundo y la otra es por los patrones de comunicación de un conjunto de objetos conectados, es decir la forma en que interactúan entre sí. La visión de un objeto aislado es una maquina de estados, muestra la forma en que el objeto responde a los eventos en función de su estado actual. La visión de la interacción de los objetos se representa con los enlaces entre objetos junto con el flujo de mensajes y los enlaces entre ellos. Este punto de vista unifica la estructura de los datos, el control de flujo y el flujo de datos.
Construcciones de implementación:

Los modelos UML tienen significado para el análisis lógico y para la implementación física. Un componente es una parte física reemplazable de un sistema y es capaz de responder a las peticiones descritas por un conjunto de interfaces. Un nodo es un recurso computacional que define una localización durante la ejecución de un sistema. Puede contener componentes y objetos.

Organización del modelo:

La información del modelo debe ser dividida en piezas coherentes, para que los equipos puedan trabajar en las diferentes partes de forma concurrente. El conocimiento humano requiere que se organice el contenido del modelo en paquetes de tamaño modesto. Los paquetes son unidades organizativas, jerárquicas y de propósito general de los modelos de UML. Pueden usarse para almacenamiento, control de acceso, gestión de la configuración y construcción de bibliotecas que contengan fragmentos de código reutilizable.
Mecanismos de extensión:
UML tiene una limitada capacidad de extensión pero que es suficiente para la mayoría de las extensiones que requiere el Òdia a diaÓ sin la necesidad de un cambio en el lenguaje básico. Un estereotipo es una nueva clase de elemento de modelado con la misma estructura que un elemento existente pero con restricciones adicionales.
Un Modelo captura una vista de un sistema del mundo real. Es una abstracción de dicho sistema, considerando un cierto propósito. Así, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propósito del modelo, y a un apropiado nivel de detalle. Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de interés. El código fuente del sistema es el modelo más detallado del sistema (y además es ejecutable). Sin embargo, se requieren otros modelos. Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos.
Diagramas UML
Un Diagrama es una representación gráfica de una colección de elementos de modelado, a menudo dibujada como un grafo conexo de arcos (relaciones) y vértices (otros elementos del modelo). Un diagrama no es un elemento semántico, un diagrama muestra representaciones de elementos semánticos del modelo, pero su significado no se ve afectado por la forma en que son representados. Un diagrama está contenido dentro de un paquete.
La mayoría de los diagramas de UML y algunos símbolos complejos son grafos que contienen formas conectadas por rutas. La infomación está sobre todo en la topología, no en el tamaño o la colocación de los símbolos (hay algunas excepciones como el diagrma de secuencia con un eje métrico de tiempo). Hay tres clases importantes de relaciones visuales: conexión (generalmente de líneas a formas de dos dimensiones), contención (de símbolos por formas cerradas de dos dimensiones), y adhesión visual (un símbolo que está "cerca" de otro en un diagrama). Estas relaciones geométricas se reasignan a conexiones entre nodos en un gráfico en la forma analizada de la notación.
La notación de UML está pensada para ser dibujada en superficies bidimensionales. Algunas formas bidimensionales son proyecciones de formas tridimensionales tales como cubos, pero todavía se representan como íconos en una superficie bidimensional.

Hay cuatro clases de construcciones gráficas que se usan en la notación de UML: íconos, símbolos bidimensionales, rutas y cadenas. Un ícono es una figura gráfica con un tamaño y forma fijos. No se amplía para contener a su contenido. Los iconos pueden aparecer dentro de símbolos de área, como terminadores en las rutas o como símbolos independientes que puedan o no conectar con las rutas.
Los símbolos de dos dimensiones tienen altura y anchura variables, y pueden ampliarse para permitir otras cosas tales como listas de cadenas o de otros símbolos. Muchos de ellos están divididos en compartimientos similares o de tipos diferentes. Las rutas se conectan con los símbolos, el arrastrar o suprimir uno de ellos afecta a su contenido y las rutas conectadas. Una ruta es una secuencia de segmentos de recta o de curva que se unen en sus puntos finales. Conceptualmente una ruta es una sola entidad topológica, aunque sus segmentos se pueden manipular gráficamente. un segemento no debería existir separado de su ruta.
Las rutas siempre van conectdas en ambos extremos. Las cadenas presentan varias clases de información en una forma "no analizada", UML asume que cada uso de una cadena en la notación tiene una sintaxis por la cual pueda ser analizada la información del modelo subyancente. Las cadenas pueden existir como el contenido de un compartimiento, como elementos en las listas, como etiquetas unidas a los símbolos o a las rutas, o como elementos independientes en un diagrama.

lunes, noviembre 21, 2005

¿Que es un algoritmo?

Un algoritmo es una lista de instrucciones para efectuar paso por paso algú proceso. Una receta en algú libro de cocina sería un excelente ejemplo de algoritmo.

martes, noviembre 15, 2005

Estructura de un objeto

Un objeto puede considerarse una cápsula dividida en tres partes

  1. Relaciones
  2. Propiedades
  3. Metodos

*Cada división desempeña papeles independientes.

La relación permite que el objeto se inserte en la organización y está formada esencialmente por punteros a otros objetos.

Las propiedades distinguen aun objeto determinado de los demás que forman parte de la misma organización, la propiedades de un objeto pueden ser heredadas a sus descendientes.

Los métodos son las operaciones que pueden realizarse sobre el objeto, se incorporan en forma de programas que el obejto es capaz de ejecutar y los pone a disposición de sus descendientes.

Programación orientada a objetos

Introducción

La orientación a objetos promete mejoras en el diseño, desarrollo y mantenimiento del software, ofrece una solución a largo plazo a la problematica de siempre, la falta de potabilidad, rehusabilidad, ciclos de desarrollo largo y tecnicas no intuitivas.

Un lenguaje orientado a obejtos ataca a estos problemas,

Caracteristicas (tres)

  • Basado en objetos
  • Basados en clases
  • Capaz de tener herencia

El concepto programación orientada a objetos no es nuevo (OOP). El lenguaje Smalltalk se basa en el.

La OOP se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos.

El objeto es elemental en la OOP. Definimos un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.

Propiedades importantes de los objetos

  • No es un dato simple, contiene en su interior cierto número de componentes estructurados
  • No es un ente aislado, forma parte de una organización jerarquica o de otro tipo

martes, septiembre 27, 2005

Variables



Como en otros lenguajes de programación no se puede vivir sin variables. En la programación en shell todas las variables son de tipo string y no es necesario declararlas. Para asignar un valor a una variable se escribe:
nombre_de_la_variable=valor

Para obtener el valor de la variable simplemente hay que poner el signo del dólar delante de la variable:

#!/bin/sh
# asignamos un valor:
a="hola mundo"
# ahora mostramos el contenido de "a":
echo "A es:"
echo $a

Escribe estas líneas en tu editor de textos y guardalo p.ej. como primero. Después haz ejecutable el script escribiendo chmod +x primero en el shell y después ejecútalo escribiendo ./primero

El script mostrará lo siguiente:

A es:
hola mundo

Algunas veces es posible confundir nombres de variables con el resto del texto:

num=2
echo "este es el $numº"

Aquí no se mostrará "este es el 2º" si no "este es el " porque el shell busca una variable llamada numdo que no tiene valor. Para decirle al shell que queremos mostrar la variable num tenemos que usar llaves:

num=2
echo "este es el ${num}º"

Con esto imprimiremos lo que queremos:

este es el 2º

Hay una serie de variables que se establecen automaticamente. Hablaremos sobre ellas más adelante cuando las usemos por primera vez. Si necesitas manejar expresiones matemáticas entonces necesitas usar programas como expr .Además de las variables de shell normales que son únicamente válidas dentro del programa en shell hay también variables de entorno. Una variable precedida de la palabra clave export es una variable de entorno. No vamos a comentar nada más sobre ellas ya que normalmente sólo se utilizan en scripts de entrada al sistema.

Creando un script

Existen muchos shells disponibles para Linux pero habitualmente se utiliza el bash (bourne again shell) para la programación en shell ya que está disponible libremente y es fácil de usar. Por lo tanto todos los scripts que escribamos en este artículo usarán el bash (aunque la mayoría de veces también funcionarán con su hermano mayor, el bourne shell).Para escribir nuestros programas en shell usaremos cualquier clase de editor de texto, p.ej. nedit, kedit, emacs, vi... como con otros lenguajes de programación. El programa debe empezar con la siguiente línea (debe ser la primera línea del fichero):

#!/bin/sh

Lo caracteres #! indican al sistema que el primer argumento que sigue en la linea es el programa a utilizar para ejecutar este fichero. En este caso usamos el shell /bin/sh.Cuando hallas escrito y guardado tu script debes hacerlo ejecutable para poder usarlo.Para hacer el script ejecutable escribechmod +x nombre-del-fichero Después puedes ejecutar tu script escribiendo: ./nombre-del-fichero


Comentarios

Los comentarios en la programación en shell comienzan con # se prolongan hasta el final de la línea. Te recomendamos que uses comentarios. Si tienes comentarios y no usas un cierto script durante algún tiempo inmediatamente sabrás qué hace y cómo funciona.

¿Por qué la programación en shell?

Incluso existiendo varios interfaces gráficos disponibles para Linux el shell sigue siendo una herramienta muy eficiente. El shell no es sólo una colección de comandos sino un buen lenguaje de programación. Se pueden automatizar muchas tareas con él, el shell es muy útil para tareas de administración, puedes comprobar rápidamente si tus ideas funcionan lo que lo hace muy útil cuando estás creando un prototipo y es muy útil para pequeñas utilidades que realizan tareas relativamente simples donde la eficiencia importa menos que la facilidad de configuración, mantenimiento y portabilidad.

jueves, septiembre 22, 2005

Control de Taréas y Procesos


Muchos comandos Linux toman su entrada de algo conocido como entrada estándar y envían su salida a la salida estándar
Cada vez que usted ejecuta un programa, usted lanza lo que se conoce como proceso, que es simplemente el nombre que se le da a un programa cuando se esta ejecutando.El comando ps visualiza la lista de procesos que se están ejecutando actualmente, por ejemplo:

[Crispin@Globus /Crispin]§ ps
PID TTY TIME CMD
45 pts/0 00:00:00 bash
84 pts/0 00:00:00 ps
La columna PID representa el identificador de proceso. La ultima columna CMD, es el nombre del proceso que se esta ejecutando. Un proceso que esta corriendo se denomina tarea para el shell. Los términos proceso y tarea, son intercambiables. Sin embargo, se suele denominar «tarea» a un proceso, cuando es usado en conjunción con control de tareas, que es un rasgo del shell que permite cambiar entre distintas tareas.
En muchos casos, los usuarios solo ejecutan un trabajo cada vez, que es el ultimo comando que ellos teclearon desde el shell. Sin embargo, usando el control de tareas, usted podrá ejecutar diferentes tareas al mismo tiempo, cambiando entre cada uno de ellos conforme lo necesite.

Primer Plano y Segundo Plano

Un proceso puede estar en Primer plano o en Segundo plano. Solo puede haber un proceso en primer plano al mismo tiempo, el proceso que esta en primer plano, es el que interactúa con usted recibe entradas de teclado, y envía las salidas al monitor. (Salvo, por supuesto, que haya re-dirigido la entrada o la salida). El proceso en segundo plano, no recibe ninguna señal desde el teclado por lo general, se ejecutan en silencio sin necesidad de interacción. Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se esta ejecutando actualmente, sino que esta temporalmente parado. Después de suspender una tarea, puede indicar a la misma que continúe, en primer plano o en segundo, según necesite. Retomar una tarea suspendida no cambia en nada el estado de la misma la tarea continuara ejecutándose justo donde se dejo.

Tenga en cuenta que suspender un trabajo no es lo mismo que interrumpirlo. Cuando usted interrumpe un proceso (generalmente con la pulsación de ), el proceso muere, y deja de estar en memoria y utilizar recursos del ordenador. Una vez eliminado, el proceso no puede continuar ejecutándose, y deberá ser lanzado otra vez para volver a realizar sus tareas. También se puede dar el caso de que algunos programas capturan la interrupción, de modo que pulsando no se para inmediatamente. Esto se hace para permitir al programa realizar operaciones necesarias de limpieza antes de terminar. De hecho, algunos programas simplemente no se dejan matar por ninguna interrupción.

Envío a Segundo Plano y eleiminación de procesos
Una forma de mandar procesos a segundo plano es añadiendo un carácter & al final de cada comando.

martes, septiembre 20, 2005

SHELL DE UNIX

EL SHELL COMO INTERPRETE DE COMANDOS

Cuando un usuario comienza una sesión de Unix se dice que ya entra en un shell o dialecto que interpreta los comandos según su propia sintaxis. Despues de que el shell interpreta el comando, el UNIX lo llama y ejecuta. Una vez que un programa ha sido llamado y ejecutado se dice que el proceso ha concluido. A cada proceso se le adjudica un número concreto que se le denomina PID.

EL SHELL Y LOS TIPOS DE SHELL

UNIX ofrece tres tipos de shell o modos de interpretación de comandos: Bourne Shell(sh); Korn Shell(ksh); C Shell(csh).
El Bourne shell es el más antiguo y tuvo gran popularidad en su lanzamiento, es el shell por defecto del UNIX.
El C shell reensambla la programación en lenguaje C y por tanto es más completo que el anterior.
El Korn Shell es el más moderno de los tres y el más desconocido

USUARIO <==> INTERPRETACION DE COMANDOS <==> MODULO DEL SO KERNEL <==> HARDWARE

Hay varios tipos de intérprete de órdenes shell, escudo en inglés en el mundo de Unix. Los más importantes son la ``shell Bourne'' y la ``shell C''. La shell Bourne utiliza una sintaxis de órdenes como la shell original de los primeros sistemas UNIX, como System III. El nombre de la shell Bourne en la mayoría de los sistemas es /bin/sh (donde sh significa ``shell''. La shell C (no confundir con una concha marina) utiliza diferente sintaxis, parecida al lenguaje de programación ``C'', y en la mayoría de los sistemas se llama /bin/csh.

Bajo , hay disponibles muchas variaciones de intérpretes de órdenes. Las dos más comúnmente utilizadas son Bourne Again Shell, o ``bash'' (/bin/bash), y ``Tcsh'' (/bin/tcsh). La variante bash es una forma de shell Bourne que incluye muchas de las características avanzadas de la shell C. A causa de que bash soporta un superconjunto de sintaxis de la shell Bourne, los guiones de la shell escritos en el estándar de la shell Bourne podrían trabajar con bash. Si se prefiere la sintaxis de la shell C, soporta tcsh, que es una versión ampliada de la shell C.

El tipo de shell que usted decida utilizar será sobre todo una cuestión de fe. Algunas personas prefieren la sintaxis de la shell Bourne con las características avanzadas de bash, y otros prefieren la sintaxis más estructurada de la shell C. Por lo que respecta a órdenes normales como cp y ls, la shell que se use no importa, la sintaxis es la misma. Sólo cuando se comienzan a escribir guiones de órdenes o a usar las características avanzadas de la shell, comienzan a importar las diferencias entre los tipos de shell. Al discutir las características de varios intérpretes, se notarán las diferencias entre las shells C y Bourne.

Sin embargo, para los propósitos de este manual, la mayoría de estas diferencias son mínimas (si realmente estás interesado en este punto, lea las páginas sobre bash y tcsh).También puede leer el ``Bash Scripting HOWTO''

martes, septiembre 06, 2005

VPN sobre Linux

Proximamente manual vpn sobre linux

VPN sobre Windows

Proximamente como montar una vpn en windows 2003