martes, 23 de junio de 2015

Programa Altas y Consultas sobre Web

20 dls por hora de desarrollo
$7000 MXN sueldo de Programador Jr($43.75/hr)

Precio del Programa: $306.60
Tiempo: 40 minutos.

Costo del Programa: $29.16
% de Ganancia: 700%

Cuanto Cobrar por un LIbro

Tiempo por hoja: 12 minutos(Arial 12 y doble espacio).
12 min x 100 hojas = 1200 minutos.
Tiempo por el Libro: 1200 min(20 hrs)
Salario de un Escritor $4500(9.84/hr)

Costo por hoja: $1.75 x 100 paginas.

Por realizar un libro de 100 paginas cobraria: $185 pesos.

martes, 9 de junio de 2015

HTML w/ ALTAS, CONSULTAS, JSP y BASE DE DATOS

INDEX.html


Altas Consultas

ALTAS.html


ALTAS.jsp


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@page import="java.io.*, java.sql.*" %>
        <%
            String nombre = request.getParameter("nombre");
            String tipo = request.getParameter("tipo");
            String query = "INSERT INTO per VALUES(?,?)";
            PreparedStatement ps = null;
            Connection c = null;
            
            Class.forName("com.mysql.jdbc.Driver");
            c = DriverManager.getConnection("jdbc:mysql://localhost/exam3", "root", "");
            ps = c.prepareStatement(query);
            
            ps.setString(1, nombre);
            ps.setString(2, tipo);
            ps.executeUpdate();
            
            out.println("<script>alert('alta exitosa')</script>");
            out.println("<META HTTP-EQUIV='REFRESH' CONTENT='.0000001; URL=http://localhost:8080/practExamAlCoJSP3/'/>");
        %>
    </body>
</html>

CONSULTA.html




CONSULTA.jsp


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@page import="java.io.*, java.sql.*" %>
        <%
            String bus = request.getParameter("nombre");
            String query = "SELECT * FROM per WHERE nombre =?";
            Statement s = null;
            ResultSet r = null;
            Connection c = null;
            
            try{
                Class.forName("com.mysql.jdbc.Driver");
                c = DriverManager.getConnection("jdbc:mysql://localhost/exam3", "root", "");
                s = c.createStatement();
            }
            catch(SQLException error){
                out.print(error.toString());
            }
            try{
                PreparedStatement ps = c.prepareStatement(query);
                ps.setString(1, bus);
                r = ps.executeQuery();
                
                if(r.next()){
                    String cad1 = r.getString("nombre");
                    String cad2 = r.getString("tipo");
                    
                    out.println(cad1);
                    out.println(cad2);
                    out.println("<script>alert('Encontrado')</script>");
            
                }
                else{
                    out.println("<script>alert('no encontrado')</script>");
                }
                out.println("<META HTTP-EQUIV='REFRESH' CONTENT='.0000001; URL=http://localhost:8080/practExamAlCoJSP3/'/>");
            }
            catch(SQLException error){
                out.print(error.toString());
            }
                    
        %>
    </body>
</html>

PROCESO DE MEJORA CONTINUA


- La primera vez que lo realice me llevo 40 minutos y 3 errores al correr el altas, la segunda vez baje sustancialmente mi tiempo a 18 minutos y sin errores; la ultima vez que lo realice(4ta vez) mi tiempo fue de 11 min sin errores.
Me di cuenta que para mejorar el tiempo en realizarlo hay varias cosas que se pueden hacer y son las siguientes:

  1. Entender el código, si lo entiendes puedes eliminar código repetitivo e inservible, ademas de saber qué es lo que va después de cada sentencia;
  2. Modificar el nombre de las variables utilizar palabras clave, fáciles y cortas;
  3. Reutilizar código, ademas de ahorrarte mucho tiempo tambien ahorrar lineas de código;
Para el proceso de mejora se necesita saber los errores que vas cometiendo para qué los repares, aprendas de ellos y saber evitarlos.

sábado, 30 de mayo de 2015

Ejercicio Class Usuarios

class usuarios {

    private String nombre;
    private String aPaterno;
    private String aMaterno;

    public String getNombre() {
        return nombre;
    }
    public void setNombre(String id1) {
        this.nombre = id1;
    }
    public String getaPaterno() {
        return aPaterno;
    }
    public void setaPaterno(String id2) {
        this.aPaterno = id2;
    }
    public String getaMaterno() {
        return aMaterno;
    }
    public void setaMaterno(String id3) {
        this.aMaterno = id3;
    }
    public void imprimoUsuario(){
        System.out.println(nombre + " " + aPaterno + " " + aMaterno);
    }
}



- Total de Errores: 2


- Tiempo: 5 minutos con 47 segundos.


- 27 Lineas

martes, 12 de mayo de 2015

Modelos de Calidad

Es un proceso por el cual se se analizan las posibilidades de mejora en el proceso de desarrollo de software, ya que se pretende estar en la 4ta etapa de la calidad mejorando continuamente la calidad de los procesos individuales del desarrollo para así poder tener un resultado de calidad

TSP

TSP (Team Software Process) o PSP (Personal Software Proces)

Este modelo se basa en el CMMI y es un proceso de desarrollo para equipos de ingenieros el objetivo de este modelo es mejorar el desempeño de los integrantes de un equipo en forma individual y en grupal.
En 1998 fue creado por Watts Humphrey para mejorar la calidad de software, cuando se esta trabajando en TSP los equipos encuentran y reparan defectos, también mejora el rendimiento en equipo, esto con fin de reducir el tiempo que se usa en probar el software, y cuando se trabaja con PSP se toma en cuenta las fallas, el tiempo que toma desarrollar y también permite una mejor organizacion.El Team Software Process (TSP) es un proceso de desarrollo para equipos de ingenieros basado en CMMi. Este modelo es una continuación de la CMM (Capability Maturity Model) ya que al igual que éste, trata de demostrar que es más productivo trabajar con prácticas de ingeniería de software y también es benéfico para su mantenimiento.


A diferencia de otros métodos…

  • Mejora el desempeño tanto de equipos como individuos.
  • Es disciplinado y ágil.
  • Provee beneficios inmediatos y medibles.
  • Acelera las iniciativas de mejora de procesos organizacionales.

Como ya se menciono TSP es una metodología para dirigir el trabajo de mejora y desarrollo de software además de que establece un entorno donde el trabajo efectivo de equipo es normal y natural. 

CMMI

Estudia los procesos de desarrollo de software de una organizacion y produce una evaluacion de la madurez de la organizacion, segun una escala de cinco niveles
CMMI es un marco de mejora de procesos en el campo del software y sistemas que dispone actualmente de tres modelos de aplicación:
  • CMMI para el desarrollo.
  • CMMI para los servicios.
  • CMMI para las adquisiciones.
Estos modelos, conocidos como constelaciones CMMI, constituyen conjuntos de buenas prácticas que se han ido consolidando en la industria y servicios desde que se hizo público y aplicable el primer modelo de madurez publicado en 1993. Actualmente se están aplicando en varios miles de organizaciones internacionales tanto públicas como privadas y con un amplio rango de tamaños y de tipos de aplicación de productos y servicios.
Cada modelo está definido por categorías de áreas de proceso y descritas cada una de ellas en términos de prácticas específicas y genéricas que son las que hay que implementar para conseguir el conjunto de metas establecidas para cada área del proceso.
La evaluación del cumplimiento de las implementaciones está soportada por dos documentos:

  • ARC: Appraisal Requirements for CMMI.
  • SCAMPI : Method Description Document.

domingo, 26 de abril de 2015

Factores Externos

Exactitud

Definición:
Es la cualidad primaria de un software la cual es el cumplimiento del objetivo por el que se creó el software, tiene que satisfacer los requerimientos y especificaciones.
Características:
Necesita de los requerimientos especificados a detalle y en orden
Se cumple o no se cumple. No tiene otra opción.
Métrica:
Basándose en los requerimientos estos se analizan y se hace una prueba del software la cual es monitoreada y en caso de cumplir todos los requerimientos. La valoración será.
-Cumple o -No cumple
Ejemplo:
Analizamos la funcionalidad de una calculadora al usarla para una suma simple. Pero al digitar los números y signos necesarios esta no fue capaz de realizar la acción así que por lo tanto no cumple las especificaciones y no es exacta.

Robustez


Definición:

Es la capacidad del software para responder adecuadamente a situaciones adversas. Que no causarán eventos graves o catastróficos.

Características:
·                Adición de la exactitud
·                Va más allá de las especificaciones del software
·                Está en constante desarrollo

Métrica:
TE: Total de errores
TEM: Total de errores malos
(TE-TEM)X100/TE = Robustez del software

Ejemplo:
Si se presenta errores en tu software, la robustez hará un despliegue de mensajes de error apropiados, en donde se pueda terminar la aplicación de manera limpia y segura para los datos.


Reutilización


Definición:

Es la habilidad de completar un software con líneas de código de uno anterior.
Según Internet:
"La reutilización de software es el uso de elementos software existentes, durante la construcción de nuevos sistemas de software. El enfoque de la reutilización no es sólo el código fuente, sino cualquier producto intermedio generado en el proceso de desarrollo..."

Características:
·                Evitar reinventar soluciones encontradas anteriormente
·                El proyecto es similar a alguno anterior o es ese mismo proyecto pero con configuración diferente.
·                 
Métrica (según Internet):
Porcentaje de Reutilización = (Software reutilizado / Software total) * 100

Ejemplo:
Utilizar el archivo leer que la maestra de POO nos brindó en todos nuestros proyectos, o copiar y pegar el scanner de un proyecto a otro.
Definición: Capacidad que tiene un software de mezclarse con el sistema o cualquier otro tipo de software.
Características:
·                Diseño homogéneo
·                Uso de estándares
·                Formato de Archivos
·                Estructuras de datos
·                Interfaces de usuarios.
Métricas:
Sistemas Operativos en el mercado en los que puede correr
Máximo 100% - Mínimo: Parte proporcional que equivalga a solo un sistema operativo.

Compatibilidad


Definición:
Capacidad que tiene un software de mezclarse con el sistema o cualquier otro tipo de software.
Características:
Diseño homogéneo
Uso de estándares
* Formato de Archivos
* Estructuras de datos
* Interfaces de usuarios.
Métricas:
Sistemas Operativos en el mercado en los que puede correr
Máximo 100% - Mínimo: Parte proporcional que equivalga a solo un sistema operativo

Extensibilidad

Definición:
-Es la habilidad de un software para que tenga una facilidad de modificación de cambios para futuras necesidades
Características:
1. Se deben cumplir todas las necesidades cuando el software sufra el cambio
2. Entre mas grande sea el sistema, más dificultad tendrá el cambio en el.
3. Un cambio en el software puede cambiar toda la estructura del sistema
Métrica:
NN: Numero de necesidades a cambiar
NC: Numero de necesidades corregidas
T: Tiempo en el cambio
(NN-NC)/T = % Extensibilidad
Ejemplo:
Cualquier actualización de software para corregir algún error.

Facilidad de uso


¿Qué es?
Simplicidad con la cual, las personas de diferentes formaciones y aptitudes pueden aprender a usar los productos de Software y aplicarlos a la resolución de problemas. Cubre la facilidad de instalación, operación y supervisión.
¿Qué debe tener?
·                        Interfaz sencilla.
·                        No utiliza lenguaje técnico ni lenguaje común.
·                        Instalación fácil.
·                ·      Ayuda o tutorial dependiendo del software.
Métrica de la facilidad de uso:
Exactitud: Número de errores cometidos por el sujeto de prueba.
Tiempo: Tiempo requerido para concluir la actividad.
Recuerdo: Qué tanto recuerda el usuario después de un periodo sin usar el software.
Respuesta emocional: Cómo se siente el usuario al terminar la tarea.
Características:
Facilidad y aprendizaje: Se define como en cuánto tiempo un usuario que nunca ha visto esa interfaz, puede aprender a usarla bien y realizar aplicaciones básicas.
Eficiencia de uso: Determina la rapidez con que se puede desarrollar las tareas por parte del usuario.
Retención sobre el tiempo: Cuando un usuario ha utilizado un sistema, deja de usarlo y lo quiere usar de nuevo; qué tan bien recuerda su funcionamiento.
Tasas de error: Cuando el sistema ayuda al usuario a no cometer errores y cuando los hace, ayudarlo a recuperarse fácil y rápidamente.
Satisfacción: Se refiere a qué tanto le gustaron a los usuarios los atributos del sistema y la impresión subjetiva del usuario.

Funcionalidad


Definición:
Que el software se apegue a sus requisitos (dados por el cliente) y tenga solo las funciones necesarias para cumplirlas para que no pierda consistencia ni sus otros criterios de calidad
Características:
·                Evitar añadir funciones no requeridas o no especificadas
·                Trabajar en la consistencia del software para evitar anomalías al momento de su  lanzamiento
·                 Basar el software en un conjunto reducido de ideas generales
·                 Al crear más funciones, basarlas en las ideas generales y no crearlas con nuevas  ideas
Métrica:
Parámetros de medición
Cuenta
Factor de ponderación
Simple
Medio
Complejo
Número de entradas de usuario
X
3
4
6
=
Número de salidas de usuario
X
4
5
7
=
Número de peticiones de usuario
X
3
4
6
=
Número de archivos
X
7
10
15
=
Número de interfaces externas
X
5
7
10
=
Cuenta_total

PF
Punto de función
Cuenta_total
Es la suma de todas las entradas obtenidas
fi

Donde i=1 hasta 14. Son valores de ajuste de la complejidad basados en las respuestas a las cuestiones señaladas de la siguiente tabla:
Evaluar cada factor en escala 0 a 5
0
1
2
3
4
5
No influencia
Incidental
Moderado
Medio
Significativo
Esencial

Fi :
1
¿Requiere el sistema copias de seguridad y de recuperación fiables?
2
¿Se requiere comunicación de datos?
3
¿Existen funciones de procesamiento distribuido?
4
¿Es crítico el rendimiento?
5
¿Se ejecutará el sistema en un entorno operativo existente y fuertemente utilizado?
6
¿Requiere el sistema entrada de datos interactiva?
7
¿Requiere la entrada de datos interactiva que las transacciones de entrada se lleven a cabo sobre múltiples pantallas u operaciones?
8
¿Se actualizan los archivos maestros de forma interactiva?
9
¿Son complejas las entradas, las salidas, los archivos o las peticiones?
10
¿Es complejo el procesamiento interno?
11
¿Se ha diseñado el código para ser reutilizable?
12
¿Están incluidas en el diseño la conversión y la instalación?
13
¿Se ha diseñado el sistema para soportar múltiples instalaciones en diferentes organizaciones?
14
¿Se ha diseñado la aplicación para facilitar los cambios y para ser fácilmente utilizada por el usuario?


Se determinan 5 características del ámbito de la información y los cálculos aparecen en la posición apropiada de la tabla. Los valores del ámbito de información están definidos de la siguiente manera:

Número de entradas de usuario: se cuenta cada entrada de usuario que proporcione al software diferentes datos orientados a la aplicación.
Número de salidas de usuario: se cuenta cada salida que proporciona al usuario información orientada a la aplicación. En este contexto las salidas se refieren a informes, pantallas, mensajes de error.

Número de peticiones de usuario: una petición esta definida como una entrada interactiva que resulta de la generación de algún tipo de respuesta en forma de salida interactiva. Se cuenta cada petición por separado.
Número de archivos: se cuenta cada archivo maestro lógico.
Número de interfaces externas: se cuentan todas las interfaces legibles por la maquina por ejemplo: archivos de datos, en cinta o discos que son utilizados para transmitir información a otro sistema.
Cuando han sido recogidos los datos anteriores, se asocia el valor de complejidad a cada cuenta. Las organizaciones que utilizan métodos de puntos de función desarrollan criterios para determinar si una entrada es denominada simple, media o compleja. No obstante la determinación de la complejidad es algo subjetivo.
    
Para calcular los puntos de función se utiliza la siguiente relación:

     PF = Cuenta_total * [0.65 + 0.01 * ∑(fi)]
 Ejemplo:
Una calculadora únicamente tiene las funciones de hacer operaciones aritméticas y algebraicas con los números tecleados.

Puntualidad


Definición:

Es la habilidad de un software, de ser entregado lo antes posible para así iniciar su función satisfaciendo las necesidades del cliente.
Características:
·                La entrega debe ser igual o antes del tiempo establecido.
·                Se debe entregar un proyecto completo que cumpla con los requerimientos acordados. 
·                El hecho de entregarlo antes no debe disminuir la buena presentación.
·                 
Ejemplo:
Proyecto Aula (Cada semestre los alumnos deben realizar un proyecto que debe ser entregado en la fecha establecida por los profesores. De lo contrario el proyecto no tiene validez).

Métrica:

Periodo (día, mes, año)