Powered By Blogger

lunes, 2 de agosto de 2010

Sound Juice. No aparece para convertir a .mp3

Sound Juicer es una aplicación gráfica para extraer pistas de audio en diferentes formatos, tales como Ogg Vorbis, MP3, FLAC y WAV, para lo cual, utiliza GStreamer. También permite clonar o reproducir el CD de audio en cuestión, y eventualmente, recolectar información sobre este último accediendo a la base de datos MusicBrainz.

Sound Juicer es software libre, utiliza las librerías GTK+ y forma parte del escritorio GNOME a partir de la versión 2.10.

http://es.wikipedia.org/wiki/Sound_Juicer

Si al tratar de convertir tus canciones favoritas del cd al formato .mp3 no aparece la opción correspondiente, solo dirigete a SISTEMA > ADMINISTRACIÓN > GESTOR DE PAQUETES SYNAPTIC y descargar el siguiente paquete: ubuntu-restricted-extras.

Luego dirégete a APLICACIONES > SONIDO Y VIDEO > EXTRACTOR DE SONIDO DE CD y una vez inciado el programa busca en EDITOR > PREFERENCIAS y seleccione la opcion CD quality, MP3 (tipo .mp3). Luego solo reinicia el software y ya estará visible esta opción.




viernes, 28 de mayo de 2010

Ingenieria de Requisitos: Casos de Uso

La Ingeniería de requisitos comprende todas las tareas relacionadas con la determinación de las necesidades o de las condiciones a satisfacer para un software nuevo o modificado, tomando en cuenta los diversos requisitos de los inversores, que pueden entrar en conflicto entre ellos.

Muchas veces se habla de requerimientos en vez de requisitos, esto se debe a una mala traducción del inglés. La palabra requirementdebe ser traducida como requisito, mientras que requerimiento se traduce al inglés como request.

El propósito de la ingeniería de requisitos es hacer que los mismos alcancen un estado óptimo antes de alcanzar la fase de diseño en el proyecto. Los buenos requisitos deben ser medibles, comprobables, sin ambigüedades o contradicciones, etc.

Un caso de uso es una técnica para documentar posibles requisitos, graficando la relación del sistema con los usuarios u otros sistemas. Dado que el propio sistema aparece como una caja negra, y sólo se representa su interacción con entidades externas, permite omitir dichos aspectos y determinar los que realmente corresponden a las entidades externas.

viernes, 21 de mayo de 2010

Conceptos sobre UML

1. ¿Qué es UML?
UML, es probablemente, una de las innovaciones conceptuales en el mundo tecnológico del desarrollo de software que más expectativas y entusiasmos haya generado en muchos años, comparable a la aparición e implementación de los lenguajes COBOL, BASIC, Pascal, C++ y más recientemente Java o XML. Además todas las expectativas se han cumplido y han generado a su vez nuevas expectativas. UML es ya un estándar industrial de la industria, pero no sólo de la industria del software sino, en general, de cualquier industria que requiera la construcción de modelos como condición previa para el diseño y posterior construcción de prototipos.

Referencia: James Rumbaugh, Ivar Jacobson, Grady Booch. “El Lenguaje Unificado de Modelado. Manual de Referencia”.

El UML (Lenguaje Unificado de Modelado) es una de las herramientas más emocionantes en el mundo actual del desarrollo de sistemas, Esto se debe a que permite a los creadores de sistemas generar diseños que capturen sus ideas en una forma convencional y fácil de comprender para comunicarlas a otras personas.

Referencia: Joseph Schmuller. “Aprendiendo UML en 24 horas”.

2. ¿Cuál es la importancia de UML?
UML ayuda al usuario a entender la realidad de la tecnología y la posibilidad de que reflexione antes de invertir y gastar grandes cantidades de dinero en proyectos que no estén seguros en su desarrollo, reduciendo el coste u el tiempo empleado en la construcción de las piezas que construirán el modelo.

Sin embargo, desde el punto de vista puramente tecnológico, UML, tiene una gran cantidad de propiedades que han sido las que, realmente, han contribuido a hacer de UML el estándar de facto de la industria que es en realidad. Algunas de las propiedades de UML como lenguaje estándar son:

Concurrencia, es un lenguaje distribuido y adecuado a las necesidades de conectividad actuales y futuras.

Ampliamente utilizado por la industria desde su adopción por OGM.

Reemplaza a decenas de notaciones empleadas con otros lenguajes.

Modela estructuras complejas.

Las estructuras más importantes que soportan tienen su fundamento en las tecnologías orientadas a objeto, tales como objeto, clase, componentes y nodos.

Emplea operaciones abstractas como guía para variaciones futuras, añadiendo variables si es necesario.

Comportamiento del sistema: casos de uso, diagramas de secuencia y de colaboraciones, que sirven para evaluar el estado de las máquinas.

Referencia: James Rumbaugh, Ivar Jacobson, Grady Booch. “El Lenguaje Unificado de Modelado. Manual de Referencia”.

3. ¿Cuáles son los beneficios del modelado?
Se puede definir tres ámbitos de utilidad o beneficios al realizar un modelado:

Aprender / Entender
Implementar en un ordenador
Tomar decisiones

Aprender / Entender.
• En primer lugar hay que destacar que la experiencia demuestra que el principal beneficio en la generación de un modelo es el entendimiento que el modelador adquiere del comportamiento de la realidad. Puede ocurrir, y de hecho ocurre con frecuencia, que una vez finalizado el modelo, los objetivos perseguidos inicialmente se hayan alcanzado sin hacer ningún tipo de experimento.
• Es habitual que para desarrollar un modelo se tenga que acceder a información a la que nunca se le habría prestado atención.
• Una vez construido el modelo, se puede utilizar su ejecución para conocer como el sistema actúa y reacciona.

Implementar en un ordenador.
• La automatización de procesos exige la modelización previa. Así, solo es posible implementar la contabilidad en un ordenador porque está completamente normalizada.
• Si se desea gestionar la información que genera una empresa, o implementar un sistema de gestión de recursos humanos es necesario realizar un modelo de dicha empresa que comprenda de la manera más eficiente posible toda la información vinculada.

Toma de decisiones
• Los modelos construidos permiten mediante su resolución ayudar a la toma de decisiones generando decisiones al problema que optimizan un objetivo establecido.
• Asimismo pueden ser utilizados para evaluar el impacto de tomar decisiones, antes de tomarlas, y de este modo elegir la que más se ajuste a la solución.

Referencia: http://www.google.co.ve/url?sa=t&source=web&ct=res&cd=7&ved=0CDQQFjAG&url=http%3A%2F%2Fs3.amazonaws.com%2Flcp%2Fjorgesauri%2Fmyfiles%2FMODELADO-DE SISTEMAS.ppt&ei=PZv2S_TKKcaOOJTRpcYI&usg=AFQjCNFB1Tl04tbBmulML1kEsu1hm5oR4g&sig2=_9EtpDRT-sHZvHVAIsP-8Q

4. ¿Cuál es el origen de UML y en qué métodos está basado?
UML es una consolidación de muchas de las notaciones y conceptos más usados orientados a objetos. Empezó como una consolidación del trabajo de Grade Booch, James Rumbaugh, e Ivar Jacobson, creadores de tres de las metodologías orientadas a objetos más populares. UML se construyó sobre la semántica y notación de Booch, OMT, OOSE, y otras metodologías líderes.

Referencia: Popkin Software and Systems. “Modelado de Sistemas con UML”

5. ¿Cuáles son los objetivos de UML?

Posibilita el intercambio de modelos entre las distintas herramientas CASE orientadas a objetos del mercado. Para ello era necesario definir una notación y semántica común.. Hay que tener en cuenta que el estándar UML no define un proceso de desarrollo específico, tan solo se trata de una notación.

Referencia: http://www.clikear.com/manuales/uml/introduccion.aspx

Permite visualizar, especificar, construir y documentar un sistema.
Ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.

Es utilizado para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.

Referencia: http://es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado

6. ¿Cuál es el futuro de UML?
El UML no tiene propietario y está abierto para todos. Muchos metodologistas, organizaciones y vendedores de herramientas han comenzado a usarlo. Aunque UML define un lenguaje preciso, no es una barrera a futuras mejoras en conceptos de modelado. Hemos visto muchas técnicas líderes, pero esperamos que futuras técnicas influyan en las versiones futuras de UML. El UML actualmente espera ser la base de muchas herramientas, incluyendo aquellas de modelado visual, simulación y ambientes de desarrollo. El UML ha integrado muchas ideas disparatadas, su integración acelerará el uso de metodologías OO.

El desarrollo basado en componentes se aproxima y merece mencionarlo, éste es correlativo con las tradicionales técnicas OO. Mientras el uso de componentes está comenzando a incrementarse esto no significa que las técnicas basadas en componentes reemplazarán a las técnicas OO. Sólo hay sutiles diferencias entre la semántica de componentes y clases.

Referencia: http://www.usmp.edu.pe/publicaciones/bole

miércoles, 19 de mayo de 2010

UML (Lenguaje de Modelado Unificado)

Desde los inicios de la informática se han estado utilizando distintas formas de representar los diseños de una manera más bien personal o con algún modelo gráfico, La falta de estandarización en la representación gráfica de un modelo impedía que los diseños gráficos realizados se pudieran compartir fácilmente entre distintos diseñadores, con este objetivo se creó el Lenguaje Unificado de Modelado (UML: Unified Modeling Language).

UML es el lenguaje de modelado de sistemas de software más conocido en la actualidad; es el estándar internacional aprobado por la OMG (Object Managment Group), consorcio creado en 1989 responsable de la creación, desarrollo y revisión de especificaciones para la industrial del software.

Entendiendo lo anterior, podemos decir que es necesario y obligatorio el mejorar la calidad del desarrollo de software y para esto debemos adoptar procedimientos, metodologías y herramientas que permitan una estandarización en la ingeniería de software, esto es precisamente lo que ofrecen los lenguajes de modelado de software, un lenguaje común que permite el crear una disciplina con estándares como existe en la ingeniería civil, ingeniería eléctrica, entre otros.

martes, 18 de mayo de 2010

Otro Ejemplo de Eventos en Java

Este ejemplo es un applet que permite realizar operaciones básica arisméticas una vez introducido números en cuadros de texto, tambien posee un conjunto de validaciones sobre éstas operaciones.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.applet.Applet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
*
* @author renan
*/
public class BotonesApplet extends Applet implements ActionListener{
JLabel etiqueta1,etiqueta2,etiqueta3;
JTextField campo1,campo2,campo3;
JButton suma_bot, resta_bot, multi_bot, divi_bot, mayor_bot, limp_bot, raiz1_bot, raiz2_bot;
float var,var2,var3;
/**
* Initialization method that will be called after the applet is loaded
* into the browser.
*/
public void init() {

etiqueta1 = new JLabel("Primer Número: ");
etiqueta2 = new JLabel("Segundo Número: ");
etiqueta3 = new JLabel("Resultado: ");

campo1 = new JTextField(10);
campo1.setHorizontalAlignment(JTextField.RIGHT);//para que los numero se escriban a la derecha
campo2 = new JTextField(10);
campo2.setHorizontalAlignment(JTextField.RIGHT);
campo3 = new JTextField(15);
campo3.setHorizontalAlignment(JTextField.RIGHT);
campo3.setEditable(false);

suma_bot = new JButton("Sumar");
resta_bot = new JButton("Restar");
multi_bot = new JButton("Multiplicar");
divi_bot = new JButton("Dividir");
raiz1_bot = new JButton("Raiz del primero");
raiz2_bot = new JButton("Raiz del segundo");
mayor_bot = new JButton("Mayor");
limp_bot = new JButton("Limpiar Todo");

add(etiqueta1);
add(campo1);
add(etiqueta2);
add(campo2);
add(suma_bot);
add(resta_bot);
add(multi_bot);
add(divi_bot);
add(raiz1_bot);
add(raiz2_bot);
add(mayor_bot);
add(limp_bot);
add(etiqueta3);
add(campo3);

suma_bot.addActionListener(this);
resta_bot.addActionListener(this);
multi_bot.addActionListener(this);
divi_bot.addActionListener(this);
limp_bot.addActionListener(this);
mayor_bot.addActionListener(this);
raiz1_bot.addActionListener(this);
raiz2_bot.addActionListener(this);
// TODO start asynchronous download of heavy resources

}

public void actionPerformed(ActionEvent e) {

if(e.getSource() == suma_bot)
{
if(verificar())
{
var2 = Float.valueOf(campo1.getText());
var3 = Float.valueOf(campo2.getText());
campo3.setText(String.valueOf(var2 + var3));
}
else
JOptionPane.showMessageDialog(this, "Error, alguno de los campos estan vacios");
}

if(e.getSource() == resta_bot)
{
if(verificar())
{
var2 = Float.valueOf(campo1.getText());
var3 = Float.valueOf(campo2.getText());
campo3.setText(String.valueOf(var2 - var3));
}
else
JOptionPane.showMessageDialog(this, "Error, alguno de los campos estan vacios");
}

if(e.getSource() == multi_bot)
{
if(verificar())
{
var2 = Float.valueOf(campo1.getText());
var3 = Float.valueOf(campo2.getText());
campo3.setText(String.valueOf(var2 * var3));
}
else
JOptionPane.showMessageDialog(this, "Error, alguno de los campos estan vacios");
}

if(e.getSource() == divi_bot)
{
if(verificar())
{
var2 = Float.valueOf(campo1.getText());
var3 = Float.valueOf(campo2.getText());
if(var3 == 0)
JOptionPane.showMessageDialog(this, "Error, no es posibe la división entre cero");
else
campo3.setText(String.valueOf(var2 / var3));
}
else
JOptionPane.showMessageDialog(this, "Error, alguno de los campos estan vacios");
}

if(e.getSource() == mayor_bot)
{
if(verificar())
{
var2 = Float.valueOf(campo1.getText());
var3 = Float.valueOf(campo2.getText());
if(var2 > var3)
campo3.setText(String.valueOf(var2));
if(var2 <>
campo3.setText(String.valueOf(var3));
if(var2 == var3)
campo3.setText("Son iguales");
}
else
JOptionPane.showMessageDialog(this, "Error, alguno de los campos estan vacios");

}

if(e.getSource() == raiz1_bot)
{
var = Float.valueOf(campo1.getText());
if(var<0) var =" Float.valueOf(campo2.getText());">

Applet en Java: Eventos. Cambio de Color de fondo

Aqui un ejemplo del manejo de eventos en Java utilizando un applet para seleccionar el color de fondo del mismo haciendo uso de 3 ScrollBar por medio de las funciones paint y repain.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import javax.swing.JLabel;
import javax.swing.JScrollBar;
import javax.swing.JTextField;

/**
*
* @author renan
*/
public class NewApplet extends Applet implements AdjustmentListener{
JLabel etiqueta1, etiqueta2, etiqueta3;
JScrollBar barra1,barra2,barra3;
JTextField campo1,campo2,campo3;
int valor1,valor2,valor3;
/**
* Initialization method that will be called after the applet is loaded
* into the browser.
*/
public void init() {
// TODO start asynchronous download of heavy resources

barra1 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 255);
barra2 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 255);
barra3 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 255);

etiqueta1 = new JLabel("Deslizador #1: ");
etiqueta2 = new JLabel("Deslizador #2: ");
etiqueta3 = new JLabel("Deslizador #3: ");

campo1 = new JTextField(3);
campo1.setEditable(false);
campo2 = new JTextField(3);
campo2.setEditable(false);
campo3 = new JTextField(3);
campo3.setEditable(false);

add(barra1);
add(barra2);
add(barra3);
add(etiqueta1);
add(campo1);
add(etiqueta2);
add(campo2);
add(etiqueta3);
add(campo3);

barra1.addAdjustmentListener(this);
barra2.addAdjustmentListener(this);
barra3.addAdjustmentListener(this);
}

public void adjustmentValueChanged(AdjustmentEvent e) {
valor1 = barra1.getValue();
campo1.setText(""+valor1);

valor2 = barra2.getValue();
campo2.setText(""+valor2);

valor3 = barra3.getValue();
campo3.setText(""+valor3);

repaint();
}
public void paint(Graphics g)
{

g.drawRect(0, 0, 200, 400);
g.setColor(new Color(valor1, valor2, valor3));

g.fillRect(0, 0, 200, 400);
g.setColor(Color.BLACK);
}
// TODO overwrite start(), stop() and destroy() methods
}

Más información: http://es.wikipedia.org/wiki/Applet_Java

viernes, 14 de mayo de 2010

Programación en Java. Tema: Eventos


Eventos

Un evento se refiere a alguna acción que puede ser realizada por el usuario para que el applet realice alguna serie de instrucciones. Entre algunos eventos dentro de un applet tenemos:

  • oprimir en un botón específico.

  • mover una barra de desplazamiento.

  • oprimir una tecla específica.

Cuando un applet esta ejecutándose, éste puede estar esperando que el usuario active alguna secuencia de instrucciones mediante la selección de algún elemento de interfaz gráfica definida para esto, como lo hemos hecho anteriormente con el objeto de la clase Button.

Cuando creamos un objeto de interfaz gráfica que nos servirá para que el usuario indique alguna acción, es importante definirle a este objeto que será escuchado por la clase específica que se encarga de revisar si hay algún evento que ha sido realizado.

Escuchadores de eventos (Listeners)

Un Escuchador (Listener) es un objeto que es notificado cuando un evento ocurre. Este tiene dos requerimientos: 1) Debió haber sido registrado con una o más fuentes que reciben notificaciones sobre tipos de eventos específicos, y 2) Debe implementar métodos que reciban y procesen éstas notificaciones.

Los métodos que reciben y procesan estas notificaciones están definidos en un grupo de interfaces encontradas en java.awt.event. Por ejemplo la clase MouseMotionListener define dos métodos que reciben notificaciones cuando el ratón es arrastrado o movido. Algún objeto puede recibir y procesar uno o ambos de estos eventos si éste provee una implementación de esta interfase. Ver ejemplo.