miércoles, 22 de enero de 2014

definiciones : informática


Lenguaje de programación


Un ejemplo de código fuente escrito en el lenguaje de programación Java, que imprimirá el mensaje "Hello World!" a la salida estándar cuando es compilado y ejecutado

Un 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.1

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 diseñar el contenido de los documentos).

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamentepróximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.




características generales de java
Simple
Basado en el lenguaje C++ pero donde se eliminan muchas de las características OOP que se utilizan esporádicamente y que creaban frecuentes problemas a losprogramadores. Esta eliminación de causas de error y problemas de mantenimiento facilita y reduce el coste del desarrollo de software.
Java no da soporte a struct, union y pointer
Java no ofrece typedef ni #define
No permite la sobrecarga de operadores.
No ofrece herencia múltiple.
Maneja los comandos en línea de diferente manera que C++
Java tienen una clase String, que permite un mejor manejo que los arrays de terminación nula del C y C++.
Java tiene un sistema automático de asignación y liberación de memoria (recolector de basura) que mejora mucho los sistemas del C++
Orientado al objeto
Java da buen soporte a las técnicas de desarrollo OOP y en resumen a la reutilización de componentes de software.
Distribuido
Java se ha diseñado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP. El código Java se puede manipular a través de recursos URL con la misma facilidad que C y C++ utilizan recursos locales (archivos).
Interpretado
El compilador Java traduce cada fichero fuente de clases a código de bytes (Bytecode), que puede ser interpretado por todas las máquinas que den soporte a un visualizador de que funcione con Java. Este Bytecode no es especifico de una máquina determinada, por lo que no se compila y enlaza como en el ciclo clásico, sino que se interpreta.
Sólido
El código Java no se quiebra fácilmente ante errores de programación. Así el relaje que existe en la declaración y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversión forzada (cast) de enteros en punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos. Así en Java no es posible escribir en áreas arbitrarias de memoria ni realizar operaciones que corrompan el código. En resumen se eliminan muchas de las posibilidades de "trucos" que ofrecía el C y C++.
Seguro
Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas características antes descritas que evitan la corrupción de código evitan su manipulación. Actualmente se esta trabajando en encriptar el código.
Arquitectura neutral
El compilador crea códigos de byte (Bytecode) que se envía al visualizador solicitado y se interpreta en la máquina que posee un interprete de Java o dispone de un visualizador que funciona con Java.
Portable
Al ser de arquitectura neutral es altamente portable, pero esta característica puede verse de otra manera: Los tipos estándares (int, float ...) están igualmente implementados en todas las máquinas por lo que las operaciones aritméticas funcionaran igual en todas las máquinas.
Alto desempeño
al ser código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun este código resultar de una eficacia similar a compilaciones de C y C++.
Multihilos
Java puede aplicarse a la realización de aplicaciones en las que ocurra más de una cosa a la vez. Java, apoyándose en un sistema de gestión de eventos basado en el paradigma de condición y monitores C.A.R. permite apoyar la conducta en tiempo real e interactiva en programas
Dinámico
al contrario que C++ que exige se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes.






multiplataforma




En informática, multi-plataforma, es un atributo conferido a los programas informáticos o los métodos de cálculo y los conceptos que se ejecutan e interoperar en múltiples plataformas informáticas. Software multiplataforma puede dividirse en dos tipos; requiere una compilación individual para cada plataforma que le da soporte, y el otro se puede ejecutar directamente en cualquier plataforma sin preparación especial, por ejemplo, el software escrito en un lenguaje interpretado o pre-compilado portátil bytecode para que los intérpretes o paquetes en tiempo de ejecución son componentes comunes o estándar de todas las plataformas. Por ejemplo, una aplicación multiplataforma puede ejecutarse en Microsoft Windows en la arquitectura x86, Linux en la arquitectura x86 y Mac OS X ya sea en el PowerPC o sistemas Apple Macintosh basados en x86. Una plataforma cruzada aplicación se puede ejecutar en tantos como todas las plataformas existentes, o en tan pocos como dos plataformas.








recolector de basura


es un mecanismo implícito de gestión de memoriaimplementado en algunos lenguajes de programación de tipo interpretado o semiinterpretado.


metodo justo a tiempo


es un sistema de organización de la producción para las fábricas, de origen japonés. También conocido como método Toyota oJIT, permite aumentar la productividad. Permite reducir el costo de la gestión y por pérdidas en almacenes debido a acciones innecesarias. De esta forma, no se produce bajo suposiciones, sino sobre pedidos reales. Una definición del objetivo del Justo a Tiempo sería «producir los elementos que se necesitan, en las cantidades que se necesitan, en el momento en que se necesitan.



Interfaz de programación de aplicaciones


es el conjunto de funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción. Son usadas generalmente en las bibliotecas.






JVM




es una máquina virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (elbytecode Java), el cual es generado por el compilador del lenguaje Java.



Entorno de desarrollo integrado
Un entorno de desarrollo integrado, llamado también IDE es un programa informático compuesto por un conjunto de herramientas deprogramación. Puede dedicarse en exclusiva a un solo lenguaje de programación o bien puede utilizarse para varios.






Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en Java. Puede instalarse en una computadora local o en una unidad de red.

En la unidad de red se pueden tener las herramientas distribuidas en varias computadoras y trabajar como una sola aplicación.







Java Runtime Environment o JRE es un conjunto de utilidades que permite la ejecución de programas Java.



Programación orientada a objetos







La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.



Encapsulamiento (informática)






En Programación modular, y más específicamente en programación orientada a objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.



Polimorfismo (informática)




En programación orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.

La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.

Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) comoSmalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.


viernes, 27 de septiembre de 2013

Visual Basic

constructor: Los constructores son métodos de clase que se ejecutan automáticamente cuando se crea un objeto de un tipo determinado. Normalmente, los constructores inicializan los miembros de datos del nuevo objeto. Un constructor solo puede ejecutarse una vez cuando se crea una clase. Además, el código del constructor siempre se ejecuta antes que cualquier otro código en una clase. Sin embargo, puede crear varias sobrecargas del constructor de la misma forma que para cualquier otro método.
Para definir un constructor para una clase:
public class SampleClass { public SampleClass() { // Add code here } }
Los destructores: se utilizan para destruir instancias de clases. En .NET Framework, el recolector de elementos no utilizados administra automáticamente la asignación y la liberación de memoria para los objetos administrados en la aplicación. Sin embargo, es posible que aún se necesiten destructores para limpiar cualquiera de los recursos no administrados creados por la aplicación. Solo puede haber un destructor para una clase.

como se define una clase: Utilice Instrucción Class (Visual Basic) para definir una clase a partir de la cual crea el objeto que necesita.
Public Class reversibleButton
Asegúrese de que sigue una instrucción End Class después de la última línea de código de la clase. De manera predeterminada, el entorno de desarrollo integrado (IDE) genera automáticamente End Class cuando escribe una instrucción Class.
Agregue Inherits (Instrucción) inmediatamente después de la instrucción Class. Especifique la clase de la que se deriva su nueva clase.
Inherits System.Windows.Forms.Button
Su nueva clase hereda todos los miembros definidos por la clase base.
Agregue el código para los miembros adicionales que expone la clase derivada. Por ejemplo, puede agregar un método reverseColors y su clase derivada podría aparecer del modo siguiente:
Public Class reversibleButton
    Inherits System.Windows.Forms.Button
    Public Sub reverseColors()
        Dim saveColor As System.Drawing.Color = Me.BackColor
        Me.BackColor = Me.ForeColor
        Me.ForeColor = saveColor
    End Sub
End Class

como se instancia una clase: Una vez que tenemos una clase definida, lo único de lo que disponemos es de una especie de plantilla o molde a partir del cual podemos crear objetos en memoria. Para crear esos objetos en Visual C# 2005 lo podemos hacer de dos formas, pero como veremos siempre será mediante la instrucción new que es la encargada de crear el objeto en la memoria y asignar la dirección del mismo a la variable usada en la parte izquierda de la asignación.
Declarar primero la variable y después instanciarla
Lo primero que tenemos que hacer es declarar una variable del tipo que queremos instanciar, esto lo hacemos de la misma forma que con cualquier otro tipo de datos

viernes, 20 de septiembre de 2013

terminología de POO(Programación Orientada a Objetos).



Herencia
Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.
Ejemplo Java: import javax.*;
import javax.swing.JOptionPane;

public class Mamifero{   
    private int patas;
    private String nombre;

    public void imprimirPatas(){
      JOptionPane.showMessageDialog(null," Tiene " + patas + " patas\n", "Mamifero", JOptionPane.INFORMATION_MESSAGE);
    }

    public Mamifero(String nombre, int patas){
      this.nombre = nombre;
      this.patas = patas;
    }
}

public class Perro extends Mamifero {
    public Perro(String nombre){
      super(nombre, 4);
    }
}

public class Gato extends Mamifero {
    public Gato(String nombre){
      super(nombre, 4);
    }
}

public class CrearPerro {
    public static void main(String[] args) {
      Perro perrito = new Perro("Pantaleon");
      perrito.imprimirPatas();   /*Está en la clase mamífero*/
    }
}
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
ejemplo
# include <iostream.h>

class Caja {
    double longitud, anchura, altura;
  public:
    void set (double dim1, double dim2, double dim3);
    void print (void);
    double getLongitud (void);
};

void Caja :: set (double dim1, double dim2, double dim3)
{
    longitud = dim1;
    anchura = dim2;
    altura = dim3;
};

void Caja :: print (void)
{
    cout << "longitud = " << longitud <<'\n';
    cout << "anchura = " << anchura <<'\n';
    cout << "altura = " << altura <<'\n';
};

double Caja:: getLongitud (void) {
    return longitud;
};

main ()
{
   double longitud;    Caja pequeña, mediana, grande;

   pequeña.set(5, 4, 10);
   mediana.set (10, 6, 20);
   grande.set (20, 10, 30);

   pequeña.print();
   mediana.print();
   grande.print();

   longitud = grande.getLongitud();
   cout << "longitud de la caja grande = " << longitud <<'\n';
}
Abstracción
Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
Ejemplo : Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Una analogía sería modelizar un coche en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar. En un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.

Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.

Estos objetos son utilizables en los programas, por ejemplo en un programa de matemáticas se puede hacer uso de objetos fracción y en un programa que gestione un taller de coches, objetos coche. Los programas orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc.

interfaz
 En informática, esta noción se utiliza para nombrar a la conexión física y funcional entre dos sistemas o dispositivos de cualquier tipo dando una comunicación entre distintos niveles. Su plural es interfaces.
Ejemplo :
El manejo de las GUI requiere de un dispositivo señalador (por ejemplo, un ratón).



Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
Ejemplos :


Atributos
Características que tiene la clase
Un buen ejemplo es el proceso de asignación de valores XML a las propiedades (elementos). Tenga en cuenta que el valor del elemento se encuentra antes de la etiqueta de cierre (por separado), no en el propio elemento. El mismo elemento puede tener una serie de atributos establecidos (Nombre = "estoesunapropiedad").

Si el elemento en cuestión puede ser considerado una propiedad (Nombre_Cliente) de otra entidad (digamos "cliente"), el elemento puede tener cero o más atributos (propiedades) de su propio (Nombre_Cliente es de Tipo = "tipotexto").

Un atributo de un objeto por lo general consiste de un nombre y un valor; de un elemento, un tipo o nombre de clase; de un archivo, un nombre y extensión.

Cada atributo nombrado tiene asociado un conjunto de reglas denominadas operaciones: uno no agrega caracteres o manipula y procesa una matriz de enteros como una imagen ni procesa texto como tipo de coma flotante (números decimales).
Por tanto, una definición de objeto se puede ampliar mediante la imposición de tipos de datos: un formato de representación, un valor por defecto, y las operaciones legales (normas) y restricciones ("¡División por cero no está permitida!") Son todos los que podrían participar en la definición un atributo, o por el contrario, se puede decir que son atributos de ese tipo de objeto. Un archivo JPEG no es decodificado por las mismas operaciones (por muy similares que sean, estos son todos formatos de datos de gráficos) como un archivo BMP o PNG, ni es un número de coma flotante operado por las normas aplicadas al los enteros largos.
Por ejemplo, en computación gráfica los objetos de planos pueden tener atributos tales como espesor (con valores reales), color (con valores descriptivos como el marrón o verde o los valores definidos en un cierto modelo de color, como RGB), etc Un objeto círculo se puede definir con atributos similares, como un origen y radio.

Lenguajes de marca, como HTML y XML, utilizan los atributos para describir los datos y el formato de los datos.
Método
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
ejemplo
Clase Poligono {
atributo arregloDePuntosEnElPlanoCartesiano;

metodo Area calcularArea( ) {
- procedimiento para calcular el area dentro de todo el arreglo de puntos en el
plano cartesiano.
- devolver Area calculada
}
}
Instancia

En el paradigma de la orientación a objetos, una instancia (en inglés, instance) se refiere a una realización específica de una clase o prototipo determinados.

En general, cuando se ejecuta un programa en un computador, se dice que éste se instancia. En lenguajes que crean objetos a partir de clases, un objeto es una instancia de una clase. Esto es, es un miembro de una clase que tiene atributos en lugar de variables. En un contexto del mundo real, podríamos pensar en "Perro" como una clase y en un perro concreto en una instancia de esta clase.
En Java, por ejemplo, si tenemos una clase definida como:

 public class Perro {}

Podremos acceder a la instancia que representa la clase (y es una instancia de la clasejava.lang.Class<Perro>), en un programa principal de clase Main, del siguiente modo:

 public class Main {
   public static void main(String... args) {
     Class<?> perroClass = Perro.class;

     System.out.println(perroClass);   }
 }

Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.
Por ejemplo: dado un plano para construir sillas (una clase de nombre clase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sería un objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas) utilizando la definición de la clase (plano) anterior. Los conceptos de clase y objetos son análogos a los de tipo de datos y variable; es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dicho tipo:

int a,b;


Concurrencia

Dos o más procesos decimos que son concurrentes, paralelos, o que se ejecutan concurrentemente, cuando son procesados almismo tiempo, es decir, que para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.
En sistemas multiprocesador, esta ejecución simultánea podría conseguirse completamente, puesto que podremos asignarle, porejemplo, un proceso A al procesador A y un proceso B al procesador B y cada procesador realizaran la ejecución de su proceso.
Ejemplo:
„ En el hardware (la herramienta para solucionar el problema):

„ ejecución paralela de instrucciones
„ funcionamiento paralelo de los periféricos
„ procesadores múltiples
„ sistemas distribuidos

Cuando tenemos un solo procesador se producirá un intercalado delas instrucciones de ambos procesos, de tal forma que tendremos la sensación de que hay un paralelismo en el sistema (concurrencia, ejecución simultánea de más de un proceso).
Ahora bien, está claro que en esto tenemos que tener en cuenta que mientras un proceso está escribiendo unvalor en una variable determinada, puede darse el caso que otro proceso que es concurrente al primero vaya aleer o escribir en esa misma variable, entonces habráque estudiar el caso en el que un proceso haga unaoperación sobre una variable (o recurso en general) yotro proceso concurrente a él realice otra operación detal forma que no se realice correctamente. Para estudiaresto, y determinar el tipo de operaciones que se puedenrealizar sobre recursos compartidos utilizaremos lascondiciones de Bernstein.
Ejemplo: Productor-Consumidor ejecutado
concurrentemente.
– Productor: Genera información y la acumula en un buffer.
– Consumidor: Accede al buffer y usa la información.
– Caso de:
• Programa de impresión que produce caracteres y consume
el manejador de la impresora.
• Compilador produce código ensamblador y consume el
Ensamblador



Persistencia
se refiere a la propiedad de los datos para que estos sobrevivan de alguna manera.De forma sencilla puede entenderse que los datos tienen una duración efímera; desde el momento en que estos cambian de valor se considera que no hay persistencia de los mismos. Sin embargo en informática hay varios ámbitos donde se aplica y se entiende la persistencia.
Dim x As Collection
Dim y As Collection
Dim dia As String

Set x = New Collection

x.Add ("Domingo")
x.Add ("Jueves")
Set y = x
dia = y.Item(1)
MsgBox dia

y.Add ("Sábado")
dia = x.Item(3)
MsgBox dia

Set x = nothing

dia = y.Item(1)
MsgBox dia


Visibilidad

Capacidad de restringir el acceso a atributos y servicios de un objeto. Particularmente importante en el diseño e implementación. (ej.: público / protegido / privado)

martes, 30 de julio de 2013

IEEE 830

1.   Quien lo invento :  Thomas Alva Edison,  Alexander Graham Bell y Franklin Leonard Pope (IEEE )


2.      "Saber que es y para que sirve :  IEEE (leído i-e-cubo en España e i-triple-e en Hispanoamérica) corresponde a las siglas de (Institute of Electrical and Electronics Engineers) en español Instituto de Ingenieros Eléctricos y Electrónicos, una asociación técnico-profesional mundial dedicada a la estandarización, entre otras cosas. Con cerca de 425.000 miembros y voluntarios en 160 países, es la mayor asociación internacional sin ánimo de lucro formada por profesionales de las nuevas tecnologías, como ingenieros eléctricos, ingenieros en electrónica, científicos de la computación, ingenieros en informática, matemáticos aplicados, ingenieros en biomédica, ingenieros en telecomunicación e ingenieros en Mecatrónica.Su creación se remonta al año 1884, contando entre sus fundadores a personalidades de la talla de Thomas Alva Edison, Alexander Graham Bell y Franklin Leonard Pope. En 1963 adoptó el nombre de IEEE al fusionarse asociaciones como el AIEE (American Institute of Electrical Engineers) y el IRE (Institute of Radio Engineers).Según el mismo IEEE, su trabajo es promover la creatividad, el desarrollo y la integración, compartir y aplicar los avances en las tecnologías de la información, electrónica y ciencias en general para beneficio de la humanidad y de los mismos profesionales. Algunos de sus estándares son:
VHDLPOSIXIEEE 1394IEEE 488IEEE 802IEEE 802.11IEEE 754Mediante sus actividades de publicación técnica, conferencias y estándares basados en consenso, el IEEE produce más del 30% de la literatura publicada en el mundo sobre ingeniería eléctrica, en computación, telecomunicaciones y tecnología de control, organiza más de 1000 conferencias al año en todo el mundo, y posee cerca de 900 estándares activos, con otros 700 más bajo desarrollo.
  3.       Coger cada uno de los términos e investigar los que no entienda :
  Normalización : La normalización o estandarización es la redacción y aprobación de normas que se establecen para garantizar el acoplamiento de elementos construidos independientemente, así como garantizar el repuesto en caso de ser necesario, garantizar la calidad de los elementos fabricados, la seguridad de funcionamiento y trabajar con responsabilidad social.
 Ingeniería mecatrónica :  La mecatrónica es una disciplina que une la ingeniería mecánica, ingeniería electrónica, ingeniería de control e ingeniería informática; la cual sirve para diseñar y desarrollar productos que involucren sistemas de control para el diseño de productos o procesos inteligentes, lo cual busca crear maquinaria más compleja para facilitar las actividades del ser humano a través de procesos electrónicos en la industria mecánica principalmente. Debido a que combina varias ingenierías en una sola, su punto fuerte es la versatilidad
 Telecomunicación : La telecomunicación, o telecomunicaciones indistintamente, es el estudio y aplicación de la técnica que diseña sistemas que permitan la comunicación a larga distancia, a través de la transmisión y recepción de señales. La definición dada por la Unión Internacional de Telecomunicaciones (ITU, International Telecommunication Union) para telecomunicación es «toda emisión, transmisión y recepción de signos, señales, escritos e imágenes, sonidos e informaciones de cualquier naturaleza, por hilo, radioelectricidad, medios ópticos u otros sistemas electromagnéticos Típicamente estas señales se propagan a través de ondas electromagnéticas, pero es extensible a cualquier medio que permita la comunicación entre un origen y un destino como medios escritos, sonidos, imágenes. El término telecomunicación» resulta al añadir a comunicación el prefijo griego tele-, que significa distancia.


lunes, 22 de julio de 2013

Proyectos y tipos de requisitos

Un requisito funcional :

Define una función del sistema de software o sus componentes. Una función es descrita como un conjunto de entradas, comportamientos y salidas. Los requerimientos funcionales pueden ser: cálculos, detalles técnicos, manipulación de datos y otras funcionalidades específicas que se supone, un sistema debe cumplir. Los requerimientos de comportamiento para cada requerimiento funcional se muestran en los casos de uso. Son complementados por los requisitos no funcionales, que se enfocan en cambio en el diseño o la implementación.

Un requisito no funcional :

 Atributo de calidad es, en la ingeniería de sistemas y la ingeniería de software, un requisito que especifica criterios que pueden usarse para juzgar la operación de un sistema en lugar de sus comportamientos específicos, ya que éstos corresponden a los requisitos funcionales. Por tanto, se refieren a todos los requisitos que ni describen información a guardar, ni funciones a realizar.


Funcionales:

Son las funcionalidades  con las que el sistema de cumplir, en el caso de Google chrome serian:
Cuenta de usuario
Extensiones
Marcadores
Enlaces Favoritos
Interfaz Personalizable
Ultimas ventanas Abiertas
Ultimas ventanas Serradas
Historial de Búsqueda
Barra de Búsqueda
Pagina Anterior
Pagina  Siguiente
Pagina Principal

Entre muchas otras.


Requerimientos no Funcionales:


Son aquellos requerimientos importantes que se deben tener en cuenta para un buen   funcionalismo de un sistema, pero que no son para interactuar  o modificables por el usuario









 PUNTO 2 : La definición del alcance de un proyecto es el proceso de subdividir los entregables principales en componentes administrables con el objetivo de:
1. Mejorar la exactitud de los estimados de costo y tiempo.
2. Definir una línea de base para medición y control del proyecto.
3. Facilitar una clara asignación de roles y responsabilidades.


Básicamente, la declaración de alcance se usa para definir lo que está dentro de las fronteras del proyecto y lo que está afuera de estas fronteras. Es decir, que el alcance es la definición de los puntos que entran y no entran en el proyecto y que es acordado por todas las partes, refiriéndose a todos los requerimientos a satisfacer en el proyecto.

Las áreas que pueden ser examinadas a la hora de identificar el alcance son: datos, procesos, aplicaciones y áreas de negocio.

Los siguientes tipos de información servirán como ayuda a la hora de identificar el alcance:
Tipos de entregables que están dentro y fuera del alcance (requerimientos de negocio y análisis de la situación actual).
Procesos del ciclo de vida que están dentro y fuera del alcance (Análisis, diseño, pruebas).
Tipos de datos que están dentro y fuera del alcance (financieros, ventas, empleados, etc…).
Fuentes de datos o bases de datos que están dentro y fuera del alcance (facturación, mayor general, nómina, activos, etc…).
Organizaciones que están dentro y fuera del alcance (Recursos humanos, manufactura, proveedores, etc…).
Funcionalidades que están dentro y fuera del alcance (Soporte de decisiones, captura de datos, reportes de gestión, etc…).


PUNTO 3 :


En programación un módulo es una porción de un programa de computadora. De las varias tareas que debe realizar un programa para cumplir con su función u objetivos, un módulo realizará, comúnmente, una de dichas tareas (o varias, en algún caso). En general (no necesariamente relacionado con la programación), un módulo recibe como entrada la salida que haya proporcionado otro módulo o los datos de entrada al sistema (programa) si se trata del módulo principal de éste; y proporcionará una salida que, a su vez, podrá ser utilizada como entrada de otro un módulo o bien contribuirá directamente a la salida final del sistema (programa), si se retorna al módulo principal. Particularmente, en el caso de la programación, los módulos suelen estar (no necesariamente) organizados jerárquicamente en niveles, de forma que hay un módulo principal que realiza las llamadas oportunas a los módulos de nivel inferior. Cuando un módulo es convocado, recibe como entrada los datos proporcionados por otro del mismo o superior nivel, el que ha hecho la llamada; luego realiza su tarea. A su vez este módulo convocado puede llamar a otro u otros módulos de nivel inferior si fuera necesario; cuando ellos finalizan su tareas, devuelven la salida pertinente al módulo inmediato llamador, en secuencia reversa, finalmente se continúa con la ejecución del módulo principal.

Cada uno de los módulos de un programa idealmente debería cumplir las siguientes características: Tamaño relativamente pequeño.- Esto facilita aislar el impacto que pueda tener la realización de un cambio en el programa, bien para corregir un error, o bien por rediseño del algoritmo correspondiente. Independencia modular.- Cuanto más independientes son los módulos entre sí más fácil y flexiblemente se trabajará con ellos, esto implica que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos. Como consecuencia de la independencia modular un módulo cumplirá: Características de caja negra, es decir abstracción (ver abstracción en programación orientada a objetos). Aislamiento de los detalles mediante encapsulamiento (ver encapsulamiento en programación orientada a objetos). La independencia modular mejora el rendimiento humano, pudiendo realizarse programación en equipo y desarrollar módulos paralelamente. También contribuye a la reutilización de software.

Ejemplo :



PUNTO 4 :
-4.3 :
  Requisitos Funcionales de google chrome:

Son las funcionalidades  con las que el sistema de cumplir, en el caso de Google chrome serian:
Cuenta de usuario
Extensiones
Marcadores
Enlaces Favoritos
Interfaz Personalizable
Ultimas ventanas Abiertas
Ultimas ventanas Serradas
Historial de Búsqueda
Barra de Búsqueda
Pagina Anterior
Pagina  Siguiente
Pagina Principal

Requisitos No funcionales  de google chrome:





4.5 : publico general que tengan acceso a internet


punto 2

2- red mine :

Requerimientos :  Redmine debería funcionar en la mayoría de los sistemas operativos Unix, Linux, Mac, servidor de Mac y Windows, siempre y cuando Ruby esté disponible en esa plataforma. Ver HowTos

Compatibilidad :

 • Ruby 1.9 no es compatible aún. Se requiere usar Ruby 1.8.x como se indicó anteriormente.
• Se requiere Rake 0.8.7 (versión 0.9.x no es compatible con Rails aún)
• Es necesario Rack 1.1.x , 1.1.0 tiene un error haciendo uso de comillas simples). La
migración de base de datos fallaría con otra versión.
• Mongrel 1.1.5 necesita un parche para funcionar bien con Rails 2.3.11. En el caso de
actualización, otro problema puede aparecer por algún tiempo después de la migración (#
7857).
• I18n 0.4.2 se requiere para Redmine> = 1.0.5
• Rails 2.3.11 hasta 2.3.14 sufren de un grave problema con el envío de correos electrónicos
a varios destinatarios (cuando estos superan la cifra de 8). Ver
http://www.redmine.org/issues/8751 para más detalles y solución.


VERSIÓN DE REDMINE
Se recomienda a la mayoría de los usuarios instalar las versiones puntuales de Redmine.
Redmine actualmente publica una nueva versión cada 6 meses, y estas publicaciones son
consideradas muy usables y estables. No se recomienda instalar Redmine del tronco, a menos
que esté muy familiarizado con Ruby on Rails y se encuentre siempre al día con los cambios – El

Tronco se rompe a menudo.


Es una herramienta para la gestión de proyectos y el seguimiento de errores escrita usando el framework Ruby on Rails. Incluye un calendario y unos diagramas de Gantt para la representación visual de la línea del tiempo de los proyectos. Es software libre y de código abierto, disponible bajo la Licencia Pública General de GNU v2.
Algunas de sus caracteristicas son :
- Soporte de múltiples proyectos.
- Roles flexibles basados en control de acceso.
- Sistema de seguimiento de errores flexible.
- Diagramas de Gantt y calendario.
- Wiki colaborativa para cada proyecto.
- Administración de noticias, documentos y archivos.
- Notificaciones por correo electrónico.
- Integración SCM (Subversion, CVS, Git, Mercurial, Bazaar y Darcs).
- Soporte para diferentes bases de datos (MySQL, PostgreSQL y SQLite).
Se puede extender mediante el uso de plugins, la gran mayoría de ellos escritos por la comunidad.
Puedes probar una demo del producto para hacerte una idea de las capacidades de este software. Este es el software para gestión de proyectos que venimos utilizando en mi trabajo hace tiempo y la verdad es que estamos bastante contentos con su desempeño.

Propiedades de la función

  • Nombre : El nombre de visualización de la función
  • Los problemas pueden ser asignados a este rol : si no se controla, los problemas no se pueden asignar a los miembros de esta función en un proyecto.
  • Problemas de visibilidad : el supuesto de que esta función incluye la vista Problemas permiso, las siguientes reglas se aplican a los problemas de los proyectos que el usuario está vinculado a través de él:
    • Todos los temas : el usuario puede ver todos los temas. Este es el valor predeterminado.
    • Todos los temas de no privados : el usuario puede ver todas las cuestiones que no estén marcados como privados.
    • Temas creados por o cedidos al usuario : el usuario sólo puede ver los problemas creados por o atribuidos a él / ella.

Permisos

Al editar una función, puede definir los permisos marcando / desmarcando las diferentes acciones.
PermisoDescripción
Permisos de Project
Crear un proyectoPermitir a los usuarios que no son administradores para crear un proyecto raíz
Puede especificar qué papel se le asigna automáticamente a un usuario que no sea administrador que crea un proyecto (ver RedmineSettings )
Editar proyectoPermitir al usuario editar las propiedades del proyecto
Seleccione los módulos del proyectoPermite al usuario activar / desactivar los módulos del proyecto (tales como las cuestiones de seguimiento, wiki, repositorio ...)
Gestionar MiembrosPermite al usuario añadir / quitar miembros del proyecto o cambiar las funciones de los miembros existentes
Administrar versionesPermitir al usuario añadir / editar / borrar versiones de proyecto
Crear subproyectosPermite al usuario añadir subproyectos del proyecto
Permisos Tablas
Administrar tablasPermitir al usuario añadir / editar / borrar foros proyecto
Enviar mensajesPermitir al usuario publicar nuevos temas en foros
Editar mensajesPermitir al usuario editar los mensajes y eliminar los archivos adjuntos de mensajes
Editar mensajes propiosPermitir al usuario editar sus propios mensajes sólo
Eliminación de los mensajesPermite al usuario borrar cualquier tema o respuesta
Eliminación de los mensajes propiosPermite al usuario borrar sus propios temas o respuestas
Permisos Documentos
Administrar documentosPermitir al usuario añadir / editar / borrar los documentos del proyecto
Ver documentosPermitir a los usuarios ver documentos
Permisos Archivos
Gestión de archivosPermite al usuario añadir / editar / borrar archivos de proyecto en la sección Archivos
Ver archivosPermitir al usuario ver archivos
Seguimiento de problemas
Administrar categorías de emisiónPermitir al usuario añadir / editar / eliminar categorías de emisión
Ver EdicionesPermitir al usuario ver los problemas del proyecto
Añadir cuestionesPermite al usuario crear nuevos temas
Editar cuestionesPermitir al usuario editar plenamente las cuestiones existentes
Manejar las relaciones de emisiónPermite al usuario añadir / eliminar las relaciones entre las cuestiones
Gestione subtareasPermite al usuario añadir / eliminar tareas parciales a los problemas
Añadir notasPermite al usuario añadir comentarios a los temas ya existentes
Editar notasPermitir al usuario editar cualquier comentario cuestión
Editar propias notasPermitir al usuario editar sus propios comentarios sólo
Mueva cuestionesPermite al usuario moverse cuestiones existentes a otro proyecto
Eliminar los problemasPermite al usuario borrar los problemas
Gestione consultas públicasPermite al usuario añadir / editar / borrar emitir consultas que son visibles por todos los usuarios
Guardar búsquedasPermitir al usuario guardar sus propias consultas tema
Ver Diagrama de GanttPermitir al usuario ver el diagrama de Gantt
Ver calendarioPermitir al usuario ver el calendario
Ver la lista de los observadoresPermitir al usuario ver quién está viendo un tema
Añadir observadoresPermitir a los usuarios agregar otros usuarios como observadores de un problema
Eliminar los observadoresPermite al usuario eliminar los observadores de un problema
Permisos Noticias
Gestione noticiasPermitir al usuario añadir / editar / borrar noticias del proyecto
Comentar las noticiasPermite al usuario añadir comentarios a las noticias
Permisos del repositorio
Gestione repositorioPermite al usuario configurar el repositorio del proyecto
Examinar repositorioPermite al usuario navegar y ver el contenido del repositorio del proyecto
Ver changesetsPermitir a los usuarios ver los conjuntos de cambios
Comprometerse accesoUtilizado por Redmine.pm para dar acceso de escritura al repositorio del proyecto
Ver Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl
Permisos de seguimiento de tiempo
Entrar el tiempo pasadoPermitir al usuario iniciar el tiempo en el proyecto
Ver el tiempo pasadoPermitir al usuario ver los registros de tiempo en el proyecto
Editar registros de tiempoPermitir al usuario editar cualquier registro del tiempo
Editar registros de tiempo propioPermitir al usuario editar su propio tiempo sólo registra
Administrar las actividades del proyectoPermitir al usuario añadir / editar / borrar actividades
Permisos Wiki
Gestione wikiPermite al usuario crear o eliminar el wiki del proyecto
Eliminación de una wiki es una irreversible operación, borra todas las páginas, su historia y todos los archivos adjuntos!
Cambiar el nombre de las páginas wikiPermite al usuario cambiar el nombre de la página wiki existente o asignar páginas wiki a una página principal
Eliminar páginas wikiPermite al usuario eliminar páginas wiki
Eliminación de una página wiki es un irreversible operación, la página y toda su historia se borran!
Ver wikiPermitir al usuario ver el wiki
Exportar páginas wikiPermite al usuario exportar páginas wiki a varios formatos (pdf, html, ...)
Ver el historial wikiPermitir al usuario ver las versiones anteriores de las páginas wiki y diff entre las versiones
Editar páginas wikiPermitir a los usuarios editar páginas wiki sin protección
Eliminar archivos adjuntosPermite al usuario borrar adjuntos de páginas wiki existentes
Proteger páginas wikiPermite al usuario bloquear / desbloquear las páginas wiki y editar páginas bloqueadas

jueves, 18 de julio de 2013

herramientas de gestión de proyectos

HERRAMIENTAS PARA GESTION DE PROYECTOS :

 Redmine
Es una herramienta para la gestión de proyectos y el seguimiento de errores escrita usando el framework Ruby on Rails. Incluye un calendario y unos diagramas de Gantt para la representación visual de la línea del tiempo de los proyectos. Es software libre y de código abierto, disponible bajo la Licencia Pública General de GNU v2.
Algunas de sus caracteristicas son :
- Soporte de múltiples proyectos.
- Roles flexibles basados en control de acceso.
- Sistema de seguimiento de errores flexible.
- Diagramas de Gantt y calendario.
- Wiki colaborativa para cada proyecto.
- Administración de noticias, documentos y archivos.
- Notificaciones por correo electrónico.
- Integración SCM (Subversion, CVS, Git, Mercurial, Bazaar y Darcs).
- Soporte para diferentes bases de datos (MySQL, PostgreSQL y SQLite).

Se puede extender mediante el uso de plugins, la gran mayoría de ellos escritos por la comunidad.

Puedes probar una demo del producto para hacerte una idea de las capacidades de este software. Este es el software para gestión de proyectos que venimos utilizando en mi trabajo hace tiempo y la verdad es que estamos bastante contentos con su desempeño.







Project-Open

Es un conjunto de soluciones ERP open source para la gestión empresarial orientada a proyectos. Dentro del sistema project-open existen varios proyectos verticales:
- project-translation: solución para agencias de traducción.
- project-consulting: para consultoras con intranet de plataforma colaborativa, gestión de proyectos, workflow y gestión del conocimiento.
- project-agency: solución para agencias de publicidad e Internet, que optimiza la gestión de los recursos internos de la empresa.
- project-lifecycle: solución PLM (product lifecycle management) para laboratorios I+D, ingenierías y OEM en empresas de producción industrial.

Algunas de sus principales características son las siguientes:
- Intranet colaborativa para gestionar proyectos.
- Gestión financiera.
- Almacen de ficheros.
- Sistema Wiki integrado.
- Foro colaborativo.
- Bug tracker para acciones correctivas.
- Gestión de la carga de trabajo mediante Gantt Project.
- Workflow.

Es un referente gracias a su amplia comunidad y millares de usuarios y muy popular en países como Alemania.




 eGroupWare

Es una solución de trabajo en grupo vía web, de código abierto. Está escrita en PHP utilizando bases de datos, tales como LDAP, PostgreSQL, o MySQL.

Algunas de sus características son:
- Calendario (programación de horario de grupos, de recursos y de contactos).
- Gestor de contactos con base de datos en SQL o LDAP.
- Cliente de correo integrado tipo webmail usa el protocolo IMAP (FelaMiMail).
- Infolog, una aplicación para tarea y notas.
- Gestor de recursos (inventario) y una herramienta para su reserva integrado en el Calendario del eGroupWare.
- Gestor de archivos.
- Sistema de autor de web con listas de control de acceso.
- Seguimiento de proyecto integrado con el gestor de proyectos.
- Seguimiento de errores.
- Wiki.
- Base de conocimiento.


El equipo principal detrás de eGroupware es de habla alemana y está localizado en Alemania





WEBGRAFIA :

http://unadocenade.com/una-docena-de-herramientas-colaborativas-para-la-gestion-de-proyectos/

WEBGRAFIA IMAGENES:

https://www.google.com.co/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&docid=xjlKDHd79-8NoM&tbnid=c2PgClejDxvK0M:&ved=0CAQQjB0&url=http%3A%2F%2Fproject-management.com%2Fredmine-software-review%2F&ei=10HoUcXzMYna9QSrgIEo&bvm=bv.49478099,d.eWU&psig=AFQjCNHWac70nFYm2d4TIbtLUK1EfEpAOw&ust=1374262099341338


https://www.google.com.co/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&docid=PH1ddnOb33fM5M&tbnid=1CIGhOET_ebPUM:&ved=0CAQQjB0&url=http%3A%2F%2Fwww.project-open.org%2F&ei=NkLoUdzDGoeK9gTjsIGwBQ&bvm=bv.49478099,d.eWU&psig=AFQjCNGSjYDoS7c0CAqjaLR3GqtuO-WeAA&ust=1374262191050412

https://www.google.com.co/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&docid=ZG4Y4BMYm7r1LM&tbnid=fN1_hZZaHiiKKM:&ved=0CAQQjB0&url=http%3A%2F%2Flinux.softpedia.com%2FprogScreenshots%2FeGroupWare-Enterprise-Collaboration-Screenshot-106.html&ei=e0LoUaDrMonu8QTGsIGoDg&bvm=bv.49478099,d.eWU&psig=AFQjCNG1qVv5DVEX6zyO3BzS6F-QgASiJw&ust=1374262265421095