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, 27 de septiembre de 2013
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.
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.
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.
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.
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 :
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.
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.
| Permiso | Descripción |
|---|---|
| Permisos de Project | |
| Crear un proyecto | Permitir 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 proyecto | Permitir al usuario editar las propiedades del proyecto |
| Seleccione los módulos del proyecto | Permite al usuario activar / desactivar los módulos del proyecto (tales como las cuestiones de seguimiento, wiki, repositorio ...) |
| Gestionar Miembros | Permite al usuario añadir / quitar miembros del proyecto o cambiar las funciones de los miembros existentes |
| Administrar versiones | Permitir al usuario añadir / editar / borrar versiones de proyecto |
| Crear subproyectos | Permite al usuario añadir subproyectos del proyecto |
| Permisos Tablas | |
| Administrar tablas | Permitir al usuario añadir / editar / borrar foros proyecto |
| Enviar mensajes | Permitir al usuario publicar nuevos temas en foros |
| Editar mensajes | Permitir al usuario editar los mensajes y eliminar los archivos adjuntos de mensajes |
| Editar mensajes propios | Permitir al usuario editar sus propios mensajes sólo |
| Eliminación de los mensajes | Permite al usuario borrar cualquier tema o respuesta |
| Eliminación de los mensajes propios | Permite al usuario borrar sus propios temas o respuestas |
| Permisos Documentos | |
| Administrar documentos | Permitir al usuario añadir / editar / borrar los documentos del proyecto |
| Ver documentos | Permitir a los usuarios ver documentos |
| Permisos Archivos | |
| Gestión de archivos | Permite al usuario añadir / editar / borrar archivos de proyecto en la sección Archivos |
| Ver archivos | Permitir al usuario ver archivos |
| Seguimiento de problemas | |
| Administrar categorías de emisión | Permitir al usuario añadir / editar / eliminar categorías de emisión |
| Ver Ediciones | Permitir al usuario ver los problemas del proyecto |
| Añadir cuestiones | Permite al usuario crear nuevos temas |
| Editar cuestiones | Permitir al usuario editar plenamente las cuestiones existentes |
| Manejar las relaciones de emisión | Permite al usuario añadir / eliminar las relaciones entre las cuestiones |
| Gestione subtareas | Permite al usuario añadir / eliminar tareas parciales a los problemas |
| Añadir notas | Permite al usuario añadir comentarios a los temas ya existentes |
| Editar notas | Permitir al usuario editar cualquier comentario cuestión |
| Editar propias notas | Permitir al usuario editar sus propios comentarios sólo |
| Mueva cuestiones | Permite al usuario moverse cuestiones existentes a otro proyecto |
| Eliminar los problemas | Permite al usuario borrar los problemas |
| Gestione consultas públicas | Permite al usuario añadir / editar / borrar emitir consultas que son visibles por todos los usuarios |
| Guardar búsquedas | Permitir al usuario guardar sus propias consultas tema |
| Ver Diagrama de Gantt | Permitir al usuario ver el diagrama de Gantt |
| Ver calendario | Permitir al usuario ver el calendario |
| Ver la lista de los observadores | Permitir al usuario ver quién está viendo un tema |
| Añadir observadores | Permitir a los usuarios agregar otros usuarios como observadores de un problema |
| Eliminar los observadores | Permite al usuario eliminar los observadores de un problema |
| Permisos Noticias | |
| Gestione noticias | Permitir al usuario añadir / editar / borrar noticias del proyecto |
| Comentar las noticias | Permite al usuario añadir comentarios a las noticias |
| Permisos del repositorio | |
| Gestione repositorio | Permite al usuario configurar el repositorio del proyecto |
| Examinar repositorio | Permite al usuario navegar y ver el contenido del repositorio del proyecto |
| Ver changesets | Permitir a los usuarios ver los conjuntos de cambios |
| Comprometerse acceso | Utilizado 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 pasado | Permitir al usuario iniciar el tiempo en el proyecto |
| Ver el tiempo pasado | Permitir al usuario ver los registros de tiempo en el proyecto |
| Editar registros de tiempo | Permitir al usuario editar cualquier registro del tiempo |
| Editar registros de tiempo propio | Permitir al usuario editar su propio tiempo sólo registra |
| Administrar las actividades del proyecto | Permitir al usuario añadir / editar / borrar actividades |
| Permisos Wiki | |
| Gestione wiki | Permite 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 wiki | Permite al usuario cambiar el nombre de la página wiki existente o asignar páginas wiki a una página principal |
| Eliminar páginas wiki | Permite 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 wiki | Permitir al usuario ver el wiki |
| Exportar páginas wiki | Permite al usuario exportar páginas wiki a varios formatos (pdf, html, ...) |
| Ver el historial wiki | Permitir al usuario ver las versiones anteriores de las páginas wiki y diff entre las versiones |
| Editar páginas wiki | Permitir a los usuarios editar páginas wiki sin protección |
| Eliminar archivos adjuntos | Permite al usuario borrar adjuntos de páginas wiki existentes |
| Proteger páginas wiki | Permite 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
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
martes, 9 de julio de 2013
ingeniería del software
Que es metodología:
La metodología hace referencia al conjunto de procedimientos racionales utilizados para alcanzar una gama de objetivos que rigen en una investigación científica una o tareas que requieran habilidades, conocimientos o cuidados específicos. Alternativamente puede definirse la metodología como el estudio o elección de un método pertinente para un determinado objetivo.
Clases de metodologías del software :
Modelo en cascada
Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño, implementación, pruebas (validación), la integración, y mantenimiento. La primera descripción formal del modelo de cascada se cita a menudo a un artículo publicado por Winston Royce W.2 en 1970, aunque Royce no utiliza el término "cascada" de este artículo.
Los principios básicos del modelo de cascada son los siguientes:
• El proyecto está dividido en fases secuenciales, con cierta superposición y splashback aceptable entre fases.
• Se hace hincapié en la planificación, los horarios, fechas, presupuestos y ejecución de todo un sistema de una sola vez.
• Un estricto control se mantiene durante la vida del proyecto a través de la utilización de una amplia documentación escrita, así como a través de comentarios y aprobación / signoff por el usuario y la tecnología de la información de gestión al final de la mayoría de las fases antes de comenzar la próxima fase.
Prototipado:
El prototipado es el framework de actividades dedicada al desarrollo de software prototipo, es decir, versiones incompletas del software a desarrollar.
Incremental:
Provee una estrategia para controlar la complejidad y los riesgos, desarrollando una parte del producto software reservando el resto de aspectos para el futuro.
Los principios básicos son:
• Una serie de mini-Cascadas se llevan a cabo, donde todas las fases de la cascada modelo de desarrollo se han completado para una pequeña parte de los sistemas, antes de proceder a la próxima incremental
• Se definen los requisitos antes de proceder con lo evolutivo, se realiza un mini-Cascada de desarrollo de cada uno de los incrementos del sistema
• El concepto inicial de software, análisis de las necesidades, y el diseño de la arquitectura y colectiva básicas se definen utilizando el enfoque de cascada, seguida por iterativo de prototipos, que culmina en la instalación del prototipo final.
Espiral:
Los principios básicos son:
• La atención se centra en la evaluación y reducción del riesgo del proyecto dividiendo el proyecto en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo, así como ofrecer la oportunidad de evaluar los riesgos y con un peso de la consideración de la continuación del proyecto durante todo el ciclo de vida.
• Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: determinar objetivos, alternativas, y desencadenantes de la iteración; Evaluar alternativas; Identificar y resolver los riesgos; desarrollar y verificar los resultados de la iteración, y plan de la próxima iteración.
• Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia, y termina con la revisión y examinación.
Rapid Application Development (RAD):
El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software, que implica el desarrollo iterativo y la construcción de prototipos. El desarrollo rápido de aplicaciones es un término originalmente utilizado para describir un proceso de desarrollo de software introducido por James Martin en 1991.
Principios básicos:
- Objetivo clave es para un rápido desarrollo y entrega de una alta calidad en un sistema de relativamente bajo coste de inversión.
- Intenta reducir el riesgos inherente del proyecto partiéndolo en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo.
- Orientación dedicada a producir sistemas de alta calidad con rapidez, principalmente mediante el uso de iteración por prototipos (en cualquier etapa de desarrollo), promueve la participación de los usuarios y el uso de herramientas de desarrollo computarizadas. Estas herramientas pueden incluir constructores de Interfaz gráfica de usuario (GUI), Computer Aided Software Engineering (CASE) las herramientas, los sistemas de gestión de bases de datos (DBMS), lenguajes de programación de cuarta generación, generadores de código, y técnicas orientada a objetos.
- Hace especial hincapié en el cumplimiento de la necesidad comercial, mientras que la ingeniería tecnológica o la excelencia es de menor importancia.
- Control de proyecto implica el desarrollo de prioridades y la definición de los plazos de entrega. Si el proyecto empieza a aplazarse, se hace hincapié en la reducción de requisitos para el ajuste, no en el aumento de la fecha límite.
- En general incluye Joint application development (JAD), donde los usuarios están intensamente participando en el diseño del sistema, ya sea a través de la creación de consenso estructurado en talleres, o por vía electrónica.
- La participación activa de los usuarios es imprescindible.
- Iterativamente realiza la producción de software, en lugar de enfocarse en un prototipo.
- Produce la documentación necesaria para facilitar el futuro desarrollo y mantenimiento.
Suscribirse a:
Entradas (Atom)







