Sunday February 5th 2012

Insider

Archives

Lady Java

Muy bonito video :)

Calidad que debe tener una empresa de desarrollo de software

organizacion_calidad            

      En los últimos días estuve investigando como  comenzar una empresa de desarrollo de software, como la mayoría sabe, una empresa es la mejor forma de independizarse a largo plazo del trabajo convencional de una oficina, o en otros casos salirse del outsorcing, una modalidad que en lo personal no me gusta… pero que lamentablemente se está haciendo popular en Latinoamérica.

Iniciar una empresa no es nada fácil, sin embargo una de las ventajas de una empresa de desarrollo es que se puede iniciar sin necesidad de una ubicación física, lo cual nos puede ahorrar mucho en costos, también podemos iniciarla con una oficina virtual, es decir pagar mensualmente por tener un teléfono, dirección postal, y ciertas horas de oficinas al mes.

Independientemente de los costos iniciales, lo que en todos creo que concordamos es que una empresa debe tener una calidad infalible, por lo que hablare un poco sobre que significa la calidad y cómo podemos acoplarla al mundo del desarrollo de software.

Conceptos de calidad:

  • Jurán: “Calidad es que un producto sea adecuado para su uso. Así, la calidad consiste en ausencia de deficiencias en aquellas características que satisfacen al cliente”
  • ISO: “Grado en el que un conjunto de características inherentes cumplen con los requisitos”, siendo un requisito una necesidad o expectativa.
  • “Es el juicio que el cliente tiene sobre un producto o servicio, resultado del grado con el cual un conjunto de características inherentes al producto cumplen con requerimientos
  • “Calidad es la creación continua de valor para el cliente”

Read the rest of this entry »

Problemas más comunes en los departamentos de informática.

departamento_de_informatica

1. La mayoría de los jefes de informática se comprometen a entregar resultados en tiempos record, sin tomar en cuenta a quienes realmente hacen el trabajo

2. Si no son los jefes quienes se comprometen, por lo general tienen que aceptar los tiempos marcados por los directivos, pues aquellos son impuestos, sin considerar el grado de dificultad de los trabajos, ni los recursos con que se cuenta.

3. En gran cantidad de instalaciones los técnicos aprenden sobre la marcha, de una manera pro completo empírico y sin planes de capacitación previamente definidos. Muchos de los técnicos se inscriben por iniciativa propia en escuelas técnicas, costeando sus propios estudios.

4. Todo el tiempo se encuentran saturados de trabajo por falta de planeación efectiva, razón por la cual difícilmente realizan labor de investigación, necesarias para la cual difícilmente realizan labor de investigación, necesaria para la mejor explotación de los recursos de computo.

5. Con frecuencia, los usuarios se sienten insatisfechos por la falta de un nivel de servicio acorde con sus verdaderas necesidades de información, y en ocasiones están en completa discordia con informática.

6. Existe gran escasez de personal con experiencia, y la mayoría de las empresas no pueden contratar el personal suficiente.

7. No hay metodologías de trabajo, y donde llegan a existir, difícilmente son respetadas.

8. Los sueldos son muy desiguales, tanto en la propia instalación como de una a otra, lo que provoca bastantes insatisfacciones personales.

9. No existe una planificación adecuada de los recursos tanto físico como humano, todo es dado a la improvisación.

 

¿Qué opinan?

Optimizar las concatenaciones del texto en Java

 procesos compu 

Los problemas de perfomance al concatenar con += en vez de ocupar un objeto StringBuffer y utilizar el método append lo podemos observar en la siguiente imagen:

clip_image004

Podemos observar que si son 20 líneas, en este caso el uso del += se tarda 745.2 veces más, y entre mas líneas este número crece.

Esto se debe a que el objeto String es inmutable, por lo que cada vez que se utilizar la concatenación por medio del += se está añadiendo al Heap.

Si adicional al usar el StringBuffer, inicializamos con el numero de caracteres que tendrá la cadena (en algunos casos se pueda) podemos mejorar todavía más el perfomance de la aplicación.

Por Ejemplo -> cadenaDeTexto.setLength(300);

El código para que puedan comprobarlos por ustedes mismos es el siguiente:

public class Main {
public static void main(String[] args) {
  //Test the String Concatenation using + operator
        long startTime = System.currentTimeMillis();
        String result = "hello";
        for(int i=0;i<1500;i++){
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";
        result += "hello";
        result += "hello2";
        result += "hello3";
        result += "hello4";  
        
        }
        long endTime = System.currentTimeMillis();
        System.out.println("Time taken for string concatenation using += operator : "
                                        + (endTime – startTime)+ " milli seconds");
        //Test the String Concatenation using StringBuffer
        long startTime1 = System.currentTimeMillis();
        StringBuffer result1 = new StringBuffer("hello");
        result1.setLength(300);
        for(int i=0;i<1500;i++){
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        result1.append("hello");
        result1.append("hello2");
        result1.append("hello3");
        result1.append("hello4");
        
        }
        long endTime1 = System.currentTimeMillis();
        System.out.println("Time taken for string concatenation using StringBuffer.append :  " 
                                        + (endTime1 – startTime1)+ " milli seconds");
        }
/* (non-Java-doc)
* @see java.lang.Object#Object()
*/
public Main() {
super();
}
}

Contraseña por default en WebLogic Server

 logo_oracle

Cuando se crea una aplicación en Jdeveloper y necesitamos por un motivo a otro(crear un datasource) entrar a la consola de administración de WebLogic nos damos cuenta de que no se puede ingresar a esta con el usuario por default weblogic y su contraseña correspondiente weblogic que encontramos en la página de Oracle.

Por un motivo u otro, el password por default se cambia a weblogic1

El usuario y pass del servidor WebLogic integrado en Jdeveloper son los siguientes:

Usuario:       weblogic

Contrasena: weblogic1