miércoles, 1 de julio de 2015

martes, 23 de junio de 2015

Tiempos de mi formulario ABCC

A continuación muestro mis estadísticas a la hora de realizar mi formulario:

Libro de 100 paginas

Digamos que una persona quiere que transcriba un libro de 100 Páginas, yo necesito saber cuanto tiempo voy a consumir para llevar a cabo el trabajo y realizar un estimado similar al mundo real con el ámbito de la programación para prepararnos en el futuro, con la herramienta de cursomeca en la clase de Técnicas de Programación con Calidad eh calculado en un ejercicio similar el tiempo que me llevaría transcribir un libro de 100 páginas, estos fueron los resultados:


domingo, 7 de junio de 2015

JSP ALTAS Y CONSULTAS

HTML

"<html>
    <head>
        <title>Busqueda Hotelera</title>
        <script type = "text/javascript" src="validaciones.js">
        </script>
        <link rel="stylesheet" type="text/css" href="newcss.css" media="screen"/>
    </head>
    <body style="height: 100%; margin: 0px">
        <form action="altas.jsp" method="post" name="altas">
            <div style="float: left; display: table; width: 100%; height: 100%">
                <div style="float: left; display: table; width: 100%; height: 10%;  background-color: yellowgreen">
                    <center> <FONT FACE="roman" size="8" Color="black">Busqueda Hotelera</FONT> </center>
                </div>
                <div style="float: left; display: table; width: 50%; height: 70%;  background-color: khaki">
                    <center> <font face="roman" size="4" color="black">Registro de datos</font></center>
                    <br><br> 
                    Nombre:
                    <input type="text" name="nombre" id="cuadro1" onkeypress="return soloLetras(event)">
                    <img src="image/imagen1.jpg" id="Ivo1" alt="bien" style="visibility: hidden; height: 25px; width: 25px;">
                    <br><br>
                    Apellidos:
                    <input type="text" name="apellido" onkeypress="return soloLetras(event)">
                    <img src="image/imagen1.jpg" id="Ivo3" alt="bien" style="visibility: hidden; height: 25px; width: 25px;">
                    <br><br>
                    Codigo de registro: (max 4)
                    <input type="text" name="registro" id="cuadro2"  maxlength="4" onkeypress="return soloNumeros(event)">
                    <img src="image/imagen1.jpg" id="Ivo2" alt="bien" style="visibility: hidden; height: 25px; width: 25px;">
                    <br><br>
                    Telefono:
                    <input type="text" name="telefono" id="cuadro3" onkeypress="return soloNumeros(event)">
                    <img src="image/imagen1.jpg" id="Ivo4" alt="bien" style="visibility: hidden; height: 25px; width: 25px;">
                    <br><br>
                    <select name="combo" id="centro" onchange="cambio()">
                        <option value="centrot"> Seleccione un centro turistico </option>
                        <option value="Acapulco"> Acapulco </option>
                        <option value="Veracruz"> Veracruz </option>
                        <option value="Cancun"> Cancun </option>
                        <option value="Los Cabos"> Los Cabos </option>
                    </select>

                    <select name="combohot" id="hoteles">
                        <option value="hotel"> Seleccione un hotel </option>
                    </select>
                    <br><br>
                    Sexo
                    <br><br>
                    Hombre:
                    <input type="radio" name="sexo" value="Hombre">
                    Mujer:
                    <input type="radio" name="sexo" value="Mujer">


                </div>
                <div style="float: left; display: table; width: 50%; height: 70%;  background-color: khaki">
                    <center> <font face="roman" size="4" color="black">Hoteles</font></center>
                    <br><br> 
                    <img id="img3" src="fotos/chabelo1.jpg" alt="ola k ase" onMouseOver="tiempo()" onmouseout="termina()">
                    <br><br><br><br><br>
                    Sueldo
                    <input type="text" name="sueldo" maxlength="5" onkeyup="up(sueldo, conversion)" onkeypress="return soloNumeros(event)">
                    <img src="image/imagen1.jpg" id="Ivo5" alt="bien" style="visibility: hidden; height: 25px; width: 25px;">
                    <br><br>
                    Conversion
                    <input type="text" name="conversion" size="50" onkeypress="return validaNum(event)">
                    <br><br><br><br>
                </div>
                <div style="float: left; display: table; width: 100%; height: 20%;  background-color: gold ">
                    <fieldset>
                        <legend>Comentarios</legend>
                        <textarea name="texto" id="comentario" rows="4" cols="50" placeholder="Comentario">
                        </textarea>
                    </fieldset>
                    <input type="button" name="desplegar" value="Desplegar" onclick="ivoLove(registro, nombre, apellido, telefono, sueldo, sexo)">
                    <input type="submit" name="altas" value="Altas">
                    <a href="consultas.html"> Consultas </a>
                    <a href="consultagen.jsp"> Consulta General</a>
                </div>
            </div>
        </form>
    </body>

</html>"

ALTAS

"<%-- 
    Document   : altas
    Created on : 24-may-2015, 20:49:39
    Author     : ivolove
--%>

<<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@page import="java.sql.*,java.io.*" %>
        <%
            String nombre = request.getParameter("nombre");
            String apellido = request.getParameter("apellido");
            String registro = request.getParameter("registro");
            String telefono = request.getParameter("telefono");
            String combo = request.getParameter("combo");
            String combohot = request.getParameter("combohot");
            String sexo = request.getParameter("sexo");
            String sueldo = request.getParameter("sueldo");
            String conversion = request.getParameter("conversion");
            String texto = request.getParameter("texto");
            PreparedStatement pstatement = null;

            Connection conn = null;

            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/IvoLove", "root", "n0m3l0");
            String querystring = "INSERT INTO datos VALUES(?,?,?,?,?,?,?,?,?,?)";
            pstatement = conn.prepareStatement(querystring);
            pstatement.setString(1, nombre);
            pstatement.setString(2, apellido);
            pstatement.setString(3, registro);
            pstatement.setString(4, telefono);
            pstatement.setString(5, combo);
            pstatement.setString(6, combohot);
            pstatement.setString(7, sexo);
            pstatement.setString(8, sueldo);
            pstatement.setString(9, conversion);
            pstatement.setString(10, texto);

            pstatement.executeUpdate();

            out.println("<script>alert('Registro dado de alta exitosamente.')</script>");
            out.print("<META HTTP-EQUIV='REFRESH' CONTENT='.0000001;URL=http://localhost:8080/ForABC/'/>");
        %>
    </body>
</html>"

CONSULTAS
"<%-- 
    Document   : consultas
    Created on : 31/05/2015, 11:39:39 PM
    Author     : IvoLove
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@page import="java.sql.*,java.io.*" %>
        <%
            String cadbus;
            Connection c = null;
            Statement s = null;
            ResultSet r = null;
            cadbus = request.getParameter("registro");
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                c = DriverManager.getConnection("jdbc:mysql://localhost/IvoLove", "root", "n0m3l0");
                s = c.createStatement();
            } catch (SQLException error) {   
                out.println(error.toString());
            }
            try {
                String queryStr = "select * from datos where registro=?";
                PreparedStatement pstmt = c.prepareStatement(queryStr);
                pstmt.setString(1, cadbus);

                r = pstmt.executeQuery();

                if (r.next()) {
                   
                    String nombre = r.getString("nombre");
                    String apellido = r.getString("apellido");
                    String registro = r.getString("registro");
                    String telefono = r.getString("telefono");
                    String combo = r.getString("combo");
                    String combohot = r.getString("combohot");
                    String sexo = r.getString("sexo");
                    String sueldo = r.getString("sueldo");
                    String conversion = r.getString("conversion");
                    String texto = r.getString("texto");
                    out.print("Los datos consultados son :");
                    out.print("<br><br>");
                    out.print("<br><br>");
                    out.print("Nombre :");
                    out.println(nombre);
                    out.print("<br><br>");
                    out.print("Apellido :");
                    out.println(apellido);
                    out.print("<br><br>");
                    out.print("Clave :");
                    out.println(registro);
                    out.print("<br><br>");
                    out.print("Telefono:");
                    out.println(telefono);
                    out.print("<br><br>");
                    out.print("Zona Hotelera :");
                    out.println(combo);
                    out.print("<br><br>");
                    out.print("Hoteles :");
                    out.println(combohot);
                    out.print("<br><br>");
                    out.print("Sexo :");
                    out.println(sexo);
                    out.print("<br><br>");
                    out.print("Sueldo :");
                    out.println(sueldo);
                    out.print("<br><br>");
                    out.print("Conversion :");
                    out.println(conversion);
                    out.print("<br><br>");
                    out.print("Comentario :");
                    out.println(texto);
                    out.print("<br><br>");
                    out.print("<br><br>");
                    out.println("<script>alert('Consulta exitosa.')</script>");

                } else {
                    out.println("<script>alert('Consulta fallida, el registro no existe.')</script>");
                }
                out.println("<META HTTP-EQUIV='REFRESH' CONTENT='.0000001; URL=http://localhost:8080/ForABC/'/>");
            }
            catch(SQLException error)
                    {
                        out.print(error.toString());
                    }
        %>
    </body>
</html>"

Base de datos



Test de velocidad Curso Meca

Al principio de este curso no era tan complejo para mi usar todos los dedos para escribir ya que en la secundaria yo ya había tenido taller de mecanografía, pero lo que para mi si era complicado era hacerlo con una considerable velocidad, así que con el paso de el curso mi objetivo principal fue aumentar mi velocidad, y con el resultado de este test, puedo darme cuenta que si mejore, pero obviamente hay mucho mas que mejorar ya que algunos compañeros tienen velocidades mayores a la mía.


Ejemplo de Clase en JAVA

Mi Ejercicio Final


Tiempo requerido para escribirlo: 9 min 24 seg.
Tiempo requerido para codificarlo: 67 seg.

martes, 28 de abril de 2015

Cuadro Sinóptico Etapas de la Calidad, Modelos de Calidad y Proceso de Mejora Continua



Modelos de Calidad

Los modelos de calidad son referencias que las organizaciones utilizan para mejorar su gestión. Los modelos, a diferencia de las normas, no contienen requisitos que deben cumplir los sistemas de gestión de la calidad sino directrices para la mejora. 

CMMI
El CMMI es un modelo de calidad del software que clasifica las empresas en niveles de madurez. Estos niveles sirven para conocer la madurez de los procesos que se realizan para producir software.

Niveles CMMI
Los niveles CMMI son 5:
Inicial o Nivel 1 CMMI. Este es el nivel en donde están todas las empresas que no tienen procesos. Los presupuestos se disparan, no es posible entregar el proyecto en fechas, los empleados si tienen que quedar durante noches y fines de semana para terminar un proyecto. No hay control sobre el estado del proyecto, el desarrollo del proyecto es completamente opaco, no se sabe que pasara con él.
Nivel 2 CMMI. Quiere decir que el éxito de los resultados obtenidos se puede repetir. La principal diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado durante el desarrollo del mismo. El desarrollo no es opaco y se puede saber el estado del proyecto en todo momento.
Los procesos que hay que implantar para alcanzar este nivel son:

  •   Gestión de requisitos
  •   Planificación de proyectos
  •   Seguimiento y control de proyectos
  •   Gestión de proveedores
  •   Aseguramiento de la calidad
  •   Gestión de la configuración

Nivel 3 CMMI. Alcanzar este nivel significa que la forma de desarrollar proyectos (gestión e ingeniería) está definida, por definida quiere decir que está establecida, documentada y que existen métricas (obtención de datos objetivos) para la consecución de objetivos concretos.
Los procesos que hay que implantar para alcanzar este nivel son:

  •   Desarrollo de requisitos
  •   Solución Técnica
  •   Integración del producto
  •   Verificación
  •   Validación
  •   Desarrollo y mejora de los procesos de la organización
  •   Definición de los procesos de la organización
  •   Planificación de la formación
  •   Gestión de riesgos
  •   Análisis y resolución de toma de decisiones

La mayoría de las empresas que llegan al nivel 3 paran aquí, ya que es un nivel que proporciona muchos beneficios y no ven la necesidad de ir más allá porque tienen cubiertas la mayoría de sus necesidades.
Nivel 4 CMMI. Los proyectos usan objetivos medibles para alcanzar las necesidades de los clientes y la organización. Se usan métricas para gestionar la organización.
Los procesos que hay que implantar para alcanzar este nivel son:

  •   Gestión cuantitativa de proyectos
  •   Mejora de los procesos de la organización

Nivel 5 CMMI. Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son identificadas, evaluadas y puestas en práctica.
Los procesos que hay que implantar para alcanzar este nivel son:

  •   Innovación organizacional
  •   Análisis y resolución de las causas

Normalmente las empresas que intentan alcanzar los niveles 4 y 5 lo realizan simultáneamente ya que están muy relacionados.
La implantación de un modelo de estas características es un proceso largo y costoso que puede costar varios años de esfuerzo. Aun así el beneficio obtenido para la empresa es mucho mayor que lo invertido.
¿Qué es PSP y TSP?
PSP (Personal Software Process)
El PSP® es un marco de trabajo de procesos para guiar a los desarrolladores en:

  •   Definir sus propios procesos
  •   Planear y dar seguimiento a su propio trabajo
  •   Administrar la calidad de sus propios productos de trabajo

El PSP® es un proceso personal que al estar basado en los principios de mejora,  ayuda a la gente a establecer sus metas personales, identificar qué métodos utilizarán, medir sus trabajo y analizar los resultados, para ajustar los métodos que utilizan para cumplir sus metas.
En conclusión, el PSP® es un proceso definido para ayudar a realizar mejor el trabajo, cuyo objetivo es obtener y reportar datos precisos y completos del trabajo que se realiza a nivel individual, con el fin de mejorar el proceso individual, afectando de esta manera al desempeño de todo el equipo.
TSP (Team Software Process)
Es un modelo de referencia de ingeniería de software que provee un énfasis en los procesos, los productos y el trabajo en equipo. El TSP® toma de base los principios de PSP para realizar los procesos y principios de ingeniería de software en un ambiente de trabajo en equipo.
El TSP® enfatiza el trabajo en equipo porque:

  •   Los equipos no se forman mágicamente,
  •   Los pasos para formar un equipo no son obvios,
  •   Se deben entender las fortalezas/debilidades de cada miembro del equipo y cómo estas soportan el desempeño del mismo.

Los equipos no son un accidente, se requiere una estrategia definida para trabajar juntos de manera coordinada, establecer responsabilidades y dar seguimiento al avance. Esto se logra teniendo metas comunes, acordando planes de acción y con un liderazgo apropiado.
El Team Software Process no es una capacitación, usa los principios de PSP® para poner en práctica lo aprendido en el mismo y ayudar a formar y poner en marcha equipos de alto desempeño para producir productos de clase mundial, de manera cíclica, es decir al término de cada ciclo, el equipo debe entregar una versión del producto que pueda ser probada (que sea un subconjunto del producto final), de tal manera que los productos de los ciclos combinados generan el producto final. Cada miembro del equipo, en un desarrollo TSP® planea sus actividades, da seguimiento a su trabajo y reporta su avance, controla sus propios procesos,  se involucra en la planeación y decisiones de todo el equipo y tiene roles y responsabilidades explícitas.
EL MODELO DEMING PRIZE
Definición del modelo
El modelo Deming Prize ha estado presente en Japón desde 1951 y se creó con el objeto de convertirse en una herramienta para la mejora de las empresas de ese país.
El premio que promulga se entrega a las empresas que se destacan sobresalientemente por la dirección y control de Calidad, y además por promover la Gestión de la Calidad en aquellas empresas que ven en este modelo una oportunidad de excelencia.
EL MODELO IBEROAMERICANO DE EXCELENCIA EN LA GESTIÓN.
El Modelo Iberoamericano de Excelencia en la Gestión fue implantado por FUNDIBEQ (Fundación Iberoamericana para la Gestión de la Calidad) en 1999. Ese mismo año se publican las bases del Premio Iberoamericano de Excelencia en la Gestión. FUNDIBQ es una organización supranacional apoyada y constituida por algunas empresas, sin ánimo de lucro, que está promoviendo y desarrollando la gestión global de la calidad en el ámbito iberoamericano.
EL MODELO MALCOLM BALDRIGE
Definición del modelo
El presente modelo sirve como base para desarrollar autoevaluaciones de las organizaciones y así entregar información del estado de estas. Además ayuda a mejorar las prácticas de gestión, ayuda a la comunicación y sirve como herramienta de trabajo para la planificación y entrega finalmente oportunidades de aprendizaje.
Este modelo ayuda a las organizaciones a utilizar un enfoque global e integrado para la gestión de estas, entregando mayor valor a los clientes y grupos de interés; mejorando así la eficacia y capacidades de toda la organización.
EL MODELO DE EXCELENCIA DE LA EUROPEAN FOUNDATION FOR QUALITY MANAGEMENT.

Definición del modelo
El presente modelo fue creado por la Europeran Foundation for Quality Management en el año 1990 y el premio se comenzó a entregar anualmente  a las empresas reconocidas por la excelencia a partir del año 1992.
El modelo partió como un modelo básico con la premisa que los buenos resultados se podrían obtener con el compromiso de los integrantes de la organización por mejorar los procesos, recibiendo la denominación de Modelo de Excelencia Empresarial (Business Excellence Model). El año 1999 en modelo se modificó a uno más avanzado donde los cambios más sustanciales recaían en la incorporación de la innovación y el aprendizaje como claves de la ventaja competitiva, acentuando la orientación a los clientes y stakeholders. Finalmente en el año 2003 se realizaron pequeñas modificaciones en alguno de sus criterios.
El Modelo EFQM de Excelencia puede aplicarse con los siguientes objetivos:

  •   Autoevaluación de la organización.
  •   Autoevaluación realizada por un tercero.
  •   Realizar Benchmarking.
  •   Base para presentarse al premio Europeo de la Calidad.

NORMAS ISO 9000
Las series de ISO 9000 son un grupo de 5 individuales, pero relacionadas, estándares internacionales de administración de la calidad y aseguramiento de calidad.
La principal norma de la familia es:

  •   ISO 9001:2000 - Sistemas de Gestión de la Calidad - Requisitos.
  •   Y otra norma es vinculante a la anterior: ISO 9004:2000 - Sistemas de Gestión de la Calidad - Guía de mejoras del funcionamiento.
  •   La ISO 9000:2000 contiene las definiciones de los términos que se utilizan en las otras dos normas. Es decir que si alguien necesita conocer qué se entiende por "sistema de gestión de la calidad", "no conformidad", "producto", por ejemplo, debe referirse a esta norma.
  •   La ISO 9001:2000 es la norma que contiene los requisitos que debe cumplir una organización para la implementación de un SGC.


Algunos beneficios que se alcanzan al instrumentar estas series en la empresa, son:

  •   La posibilidad de darle calidad al producto o servicio
  •   Evitar costos de inspecciones finales, costos de garantías y reprocesos
  •   Puede reducirse el número de auditorías de los clientes a los procesos de operación
  •   Mayor aceptación por parte de los clientes y acogida en los mercados tanto nacionales como internacionales

Proceso de Mejora Continua
Mejora Continua - Ciclo PDCA
La mejora continua de la capacidad y resultados, debe ser el objetivo permanente de la organización. Para ello se utiliza un ciclo PDCA, el cual se basa en el principio de mejora continua de la gestión de la calidad. Ésta es una de las bases que inspiran la filosofía de la gestión excelente.
"Mejora mañana lo que puedas mejorar hoy, pero mejora todos los días"
La base del modelo de mejora continua es la autoevaluación. En ella detectamos puntos fuertes, que hay que tratar de mantener y áreas de mejora, cuyo objetivo deberá ser un proyecto de mejora.
El ciclo PDCA de mejora continua se basa en los siguientes apartados:
Plan (planificar)

  •   Organización lógica del trabajo
  •   Identificación del problema y planificación.
  •   Observaciones y análisis.
  •   Establecimiento de objetivos a alcanzar.
  •   Establecimiento de indicadores de control.

Do (hacer)

  •   Correcta realización de las tareas planificadas
  •   Preparación exhaustiva y sistemática de lo previsto.
  •   Aplicación controlada del plan.
  •   Verificación de la aplicación.

Check (comprobar)

  •  Comprobación de los logros obtenidos
  •   Verificación de los resultados de las acciones realizadas.
  •   Comparación con los objetivos.
  • Adjust (ajustar)
  •  Posibilidad de aprovechar y extender aprendizajes y experiencias adquiridas en otros casos
  •  Analizar los datos obtenidos.
  •   Proponer alternativa de mejora.
  •   Estandarización y consolidación.
  •   Preparación de la siguiente etapa del plan.

La excelencia ha de alcanzarse mediante un proceso de mejora continua. Mejora, en todos los campos, de las capacidades del personal, eficiencia de los recursos, de las relaciones con el público, entre los miembros de la organización, con la sociedad y cuanto se le ocurra a la organización, que pueda mejorarse en dicha organización, y que se traduzca en una mejora de la calidad del producto o servicio que prestamos.
Alcanzar los mejores resultados, no es labor de un día. Es un proceso progresivo en el que no puede haber retrocesos. Han de cumplirse los objetivos de la organización, y prepararse para los próximos retos.

Referencia:

http://www.alconet.com.ar/ISO/calidad001.html

https://prezi.com/-snhj_pzt5-q/etapas-de-evolucion-de-la-calidad/

https://calidadudl.wordpress.com/2010/07/28/etapas-de-la-calidad/

martes, 21 de abril de 2015

Ensayo calidad de software

Eficiencia

Se entiende que la eficiencia es la capacidad del software para hacer buen uso de los recursos que manipula con respecto al hardware. A diferencia de la eficacia, la eficiencia no busca solo cumplir con la funcionalidad, sino que va más allá de eso. Un software de calidad debe ser eficiente para que se  obtengan el máximo beneficio o por lo menos un beneficio conveniente por parte de los involucrados en su desarrollo  haciendo que haya un buen rendimiento del hardware de computadora.
Se propuso una métrica para la eficiencia de la siguiente manera:
eficiencia=  resultados/recursos
Y a partir de esta se tomaron en cuenta como recursos la memoria y el tiempo que ocupa un software en realizar sus funciones y como resultados una evaluación de pruebas del software
recursos=memoria utilizada+tiempo empleado

El SAES del IPN es un software relativamente eficaz, sin embargo en muchas ocasiones poco eficiente pues algo que los usuarios (los estudiantes) notamos a menudo es la tardanza con que realiza sus funciones. Seguramente  lo que hace que éste software no logre solucionar esta problemática es porque el análisis que se necesita para la mejora continua no es de las principales prioridades. 
Cuando se está comenzando un proyecto, se tiene presente con cumplir aquello que venga en los requerimientos, sin embargo, entregar algo que no se quede en ese nivel sino que trascienda es lo que hace la diferencia. 

Exactitud

  • Es la base de un software 
  • Es un factor externo que se logra a través de los requerimientos funcionales del software y tiene que lograr sus objetivos. 
  • En la exactitud, todo va concatenado en función del software, tomando en cuenta que todos los elementos involucrados deben estar verificados, garantizados y asegurados por el desarrollador.

EJEMPLO: WinRaR.
Métrica: 
Exactitud=Número de requerimientos-  Número de requerimientos cumplidos
En donde, si la exactitud es = 0, el software es de calidad y conforme la exactitud > 0, va decreciendo ésta. 

La exactitud, como ya lo hemos mencionado, es la parte fundamental del software que, sin ella, el software simplemente sería nefasto. No importa si la interfaz es hermosa, si su capacidad es mayor o tenga algo extra, si no cumple con los requerimientos exactos. 

Puntualidad


Es la habilidad de un sistema de ser entregado según la fecha prefijada o antes de que los usuarios lo esperen.
La economía acompaña este punto siendo la habilidad de un sistema para ser terminado exactamente o por debajo de su presupuesto original.
Las presiones de puntualidad podrían tentarnos a usar técnicas de “Desarrollo Rápido de Aplicaciones” cuyos resultados pueden no poseer mucha extensibilidad.
Métrica
Para esto debemos tener en cuenta que debemos medir el retraso pues es así como nos puede ayudar a mejorar a ese punto y darle más calidad.
R: retraso
T: Tiempo dado en horas  en que es dado el software de acuerdo a lo prefijado.
P: Tiempo prefijado dado en horas.
R=T-P
Siendo que si R es cero el retraso es nulo y fue entregado a tiempo, si es positivo hubo un retraso lo que indica que se necesita hacer una mejora en cambio si es negativo quiere decir que fue entregado antes que puede hablar bien.
Ejemplo:
En una escuela es pedido un software que se necesita ser entregado para su evaluación final dentro de 36 horas, uno de los equipos entrega su trabajo en 40 horas por lo que se aplica la métrica.
R=T-P;                     R=40-36;                      R=4
El resultado quiere decir que hubo un retraso de 4 horas que hizo que su calificación fue menor por lo que se necesita un proceso de mejora  para obtener una mejor calificación.
Este punto es importante pues en una gran empresa puede significar el que pidan o no pidan sus proyectos pues hoy en dia el mundo se mueve en tiempos exactos y lo que menos quieren es perder tiempo  ya que a ellos aplica el dicho: “el tiempo es oro".


Funcionalidad

Es en el cual se incluye las características necesaria para un software, sin incluir funciones innecesarias de software que complican al usuario realizar su acción


Ejemplificar el concepto

Facebook en 2011-2012 incluye una actualización sobre cambiar tu perfil por biografía lo que dificulto a muchos usuarios sus acciones en la red social, perdiendo su funcionalidad

Metrica sobre la Funcionalidad


Cumple las funciones necesarias

Tienes los diseños (adornos) necesarios para que se  haga un software amigable

Sus métodos tienen el mínimo #errores o ninguno

Sus actualizaciones no afectan a la calidad de software


Ecuación para calcular la funcionalidad

Funcionalidad=(#metodos*métrica)/#errores


 Robustez 

Por ejemplo, la robustez en software se define como la capacidad de responder ante algún evento que pueda comprometer la funcionalidad de este, como algún cálculo erróneo, una métrica aproximada sería dividir el número de veces que el software funcionó bien entre el número de errores que hayan ocurrido, si es mayor a 1 el resultante, el software tiene robustez.
También se utilizan normas para la calidad de software, siendo la más común la  ISO 9000 la cual [3]"Pone a disposición de un auditor o certificador los procesos internos, de forma que este indique si cumple o no la normativa al 100%, audita el sistema; Si los resultados son positivos se emite la certificación y cada cierto tiempo se tiene que renovar; La certificación es costosa, a consecuencia de costes que ocasionan la lejanía y el tiempo de duración de proceso (aprox. 6 meses). Se certifica la empresa y la metodología para el desarrollo de la aplicación." 

Reutilización



El concepto de reutilización dentro del software puede aplicarse de distintas maneras al momento de usarlo.
  1. Consiste en la capacidad de un sistema (software) de ser utilizado en algún otro con el cual haya alguna similitud ya sea de código, diseño o especificación
  2. Es la creación de un sistema a partir de alguno ya existente

Pero la forma de definirlo de manera mas adecuada es: 

Elementos de software creados en desarrollos anteriores que son empleados en un sistema nuevo que simplifica el proceso de desarrollo y a su vez otorga mayor calidad.

Un software que aplique la reutilización permite que el desarrollo sea mas eficiente, incremente su productividad y sea rápido, por lo los tiempos se reducen y permite el avance en algún otro aspecto del sistema como eficiencia, exactitud, etc.

La reutilización dentro de un sistema puede ser medida a través de una formula que establecimos como:

Porcentaje de reutilización=((Software reutilizado)/(Software total))* 100


La reutilización no es lo mismo que la herencia o la copia del código en algún sistema. La reutilización normalmente puede ser dada en diversos programas mediante la importación, es decir, es una característica que solo se da en programación orientada a objetos.

En Java es fácil notar esta reutilización al momento de hacer uso de las librerías que nos brinda, se importa la clase de esa librería y se puede hacer uso de su contenido en el nuevo código.

Facil de usar 

Es la simplicidad con la cual las personas de varios conocimientos y cualidades tienen la capacidad de aprender a utilizar un software, aplicándolo para resolver problemas.
Tenemos que tomar en cuenta también la facilidad de instalación, de operar el software y de monitorearlo.
En la calidad del software es fundamental la facilidad de uso de éste, ya que normalmente el usuario que requerirá tu sistema no tiene conocimientos tan amplios acerca de éste, motivo por el cual es necesario hacerlo a un nivel de interpretación fácil para que el usuario pueda darle un uso efectivo. Si tu software no es fácil de usar, el usuario tendrá complicaciones al utilizarlo y de esta manera no satisfaces las necesidades planteadas, entonces podría dudarse de su calidad.
Un ejemplo de un software “Usable” es Facebook, ya que la mayoría de las personas poseen las herramientas necesarias para comprenderlo y utilizarlo para su conveniencia.
Es importante que el software proporcione orientación para los usuarios principiantes y al mismo tiempo no aburre a las personas con mayor cantidad de conocimientos en el tema, siendo muy útiles las interfaces de usuario, éstas se rigen por el siguiente principio: “No pretendas que conoces al usuario; no lo conoces”.


Compatibilidad 

Conceptualización:
*Facilidad para combinar un elemento de software con otro.
*Interacción de grupos de información a través de un lenguaje de software.
El que no haya compatibilidad no significa que los sistemas no funcionen o estén defectuosos, simplemente que no pueden trabajar juntos, que son incompatibles. La incompatibilidad se puede deber a varias causas, pero principalmente porque un sistema está obsoleto con respecto al otro o porque se ha diseñado para usar con un sistema en particular y no funciona con otros.

Contextualización:
Es importante generalizar software para que aumente su concepto y utilización en diferentes contextos, aquí se basa lo vital que es su papel y su respectiva evaluación

Ejemplificación:
Un ejemplo muy importante de compatibilidad, es el de las páginas web que son creadas a través de lenguajes como Javascript y HTML5; éstos se pueden reproducir y pueden correr en todos los exploradores  web existentes y cualquier tipo de página web se puede visualizar al cien por ciento.

 

Conclusión:

Finalmente la calidad de software es importante para cualquier sistema, ya que compromete al programador a entregar un producto de calidad, en base a las especificaciones requeridas, por ejemplo, si es agradable estéticamente pero sus procesos no son realizados en el tiempo estipulado, a menos que el cliente no haya pedido como requerimiento que sus tareas sean hechas en el menor tiempo posible, no será de calidad para el usuario. Al final, es subjetivo para cualquiera.






domingo, 12 de abril de 2015

¿Qué es la calidad de software?

Introducción:

En un mundo globalizado en donde las organizaciones se ven enfrentadas a competencia de nivel mundial, la calidad se convierte en un importante punto diferenciador, además de aumentar la satisfacción general del cliente, disminuir costos y optimizar los recursos, los productos o servicios que ostentan certificados de calidad son preferidos por los compradores porque trasmiten seguridad y confianza. Esto también constituye un atributo de valor para las estrategias de comercialización en el exterior. Si bien la industria del software es nueva, ha tenido que madurar rápidamente, tal como lo exigen los avances tecnológicos y su alta participación al interior de las empresas. Esta industria comparte con las demás industrias el interés por la calidad y la competitividad.

Desarrollo:

La obtención de un software con calidad implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del software que permitan uniformar la filosofía de trabajo, en aras de lograr una mayor confiabilidad, mantenibilidad y facilidad de prueba, a la vez que eleven la productividad, tanto para la labor de desarrollo como para el control de la calidad del software.
Los requisitos del software son la base de las medidas de calidad. La falta de concordancia con los requisitos es una falta de calidad. Los estándares o metodologías definen un conjunto de criterios de desarrollo que guían la forma en que se aplica la ingeniería del software. Si no se sigue ninguna metodología siempre habrá falta de calidad.
Existen algunos requisitos implícitos o expectativas que a menudo no se mencionan, o se mencionan de forma incompleta (por ejemplo el deseo de un buen mantenimiento) que también pueden implicar una falta de calidad.

La política establecida debe estar sustentada sobre tres principios básicos: tecnológico, administrativo y ergonómico.
  • El principio tecnológico define las técnicas a utilizar en el proceso de desarrollo del software.
  • El principio administrativo contempla las funciones de planificación y control del desarrollo del software, así como la organización del ambiente o centro de ingeniería de software.
  • El principio ergonómico define la interfaz entre el usuario y el ambiente automatizado.

La adopción de una buena política contribuye en gran medida a lograr la calidad del software, pero no la asegura. Para el aseguramiento de la calidad es necesario su control o evaluación.
A partir del siguiente gráfico se observa la interrelación existente entre la Gestión de la Calidad, el Aseguramiento de la Calidad y el Control de la Calidad.
Medición del software

En el software lo que se mide son atributos propios del mismo, se descompone un atributo general en otros más simples de medir, a veces se mide bien o mal ya que la descomposición del atributo genérico de calidad en otros sub-atributos se torna irreal, se mide con datos estadísticos no avalados, es imposible decir que la medición se hace en forma correcta.
El concepto de medida va de más a menos, va de lo general a lo concreto y lo concreto es asociado a la métrica, cuya combinación te daría el nivel de calidad o seguridad de tu producto. Las ciencias bien estructuradas se basan en medidas bien hechas, se basan en la matemática.

Tipos de medidas
  • Número de errores durante un periodo determinado.
  • Fallo en la codificación o diseño de un sistema que causa que el programa no funcione correctamente o falle.
  • Tamaño de un producto informático (líneas de código)
  • Métrica de punto función (IBM): relaciona funcionalidades que ofrecía.
  • Estimación de costes y esfuerzos.                              
  • COCOMO

Conclusiones:
No se puede medir la calidad del software de forma correcta debido a su naturaleza, la certificación se da a los procesos, la correcta consecución de los mismos garantizaría un buen software. No se puede medir al software como tal, sino los atributos que la conforman, tales métodos de medida deben ser exactos. El usuario final mide la calidad del software según lo que tenga o no, es en ese sentido que la calidad del software depende de quien la juzgue. El hecho de que una empresa tenga certificación en calidad de software no garantiza que su software sea de calidad.
De igual manera lograr el éxito en la producción de software es hacerlo con calidad y demostrar su buena calidad. Esto sólo es posible con la implantación de un Sistema para el Aseguramiento de la Calidad del Software directamente relacionado con la política establecida para su elaboración y que esté en correspondencia con la definición internacional ISO de calidad, amplia mente aceptada, y por los estándares del grupo ISO 9000.


Definiciones:

Exactitud.
En ingenieríacienciaindustria y estadística, se denomina exactitud a la capacidad de un instrumento de acercarse al valor de la magnitud real. La exactitud es diferente de la precisión.

Robustez. 
La robustez puede referirse a características físicas o simbólicas. Una construcción que se mantiene en pie desde hace varios siglos demuestra su robustez por haber resistido el paso del tiempo. Esto puede ser posible por la calidad de los materiales y la capacidad de los constructores. En cambio, si una construcción comienza a tener fallas estructurales a los cinco años de su nacimiento, nadie podría destacar su robustez, ya que se trata de una edificación endeble y frágil.


Extensibilidad.
La extensibilidad, es una característica exclusiva que diferencia el medio hipertextual del medio impreso. Si en el medio impreso también podemos establecer diferentes niveles de profundización y jerarquización vertical (de arriba abajo), sólo el hipertexto permite una gradualidad horizontal. Esto es, la extensibilidad es la cualidad que permite a un hipertexto ir de lo secuencial a lo reticular, de la línea a la red con ramificaciones no jerárquicas ni lineales, sino asociativas y multilineales. Esta cualidad se aplica tanto a una red hipertextual cerrada como a su salida a la World Wide Web. El texto se va ampliando y extendiendo a medida que optemos por seguir un enlace sea éste interno o externo al propio hiperdocumento. Y así, podemos hablar de extensibilidad interna y extensibilidad externa. La extensibilidad, está pues muy relacionada con otras 3 características del hipertexto: conectividad, gradualidad y apertura. En la Web, las posibilidades de extensión del hipertexto son casi infinitas. 

Reutilizacion.
Reutilizar consiste en darle de nuevo utilidad a los objetos, con el mismo fin o con otros. Ello va en función del objeto a reutilizar, pero también en función de la imaginación y creatividad de quien lo use.

Compatibilidad.
La compatibilidad es la condición que hace que un programa y un sistema, arquitectura o aplicación logren comprenderse correctamente tanto directamente o indirectamente (mediante un algoritmo). A este algoritmo que hace que un programa logre ser comprendido por un sistema, arquitectura o aplicación se lo denomina emulador por el hecho de que es un intérprete entre el programa y el sistema, arquitectura o aplicación.

Eficiencia.
Se puede definir la eficiencia como la relación entre los recursos utilizados en un proyecto y los logros conseguidos con el mismo. Se entiende que la eficiencia se da cuando se utilizan menos recursos para lograr un mismo objetivo. O al contrario, cuando se logran más objetivos con los mismos o menos recursos.

Portabilidad.
Se define como la característica que posee un software para ejecutarse en diferentes plataformas, el código fuente del software es capaz de reutilizarse en vez de crearse un nuevo código cuando el software pasa de una plataforma a otra (ver la nota, a continuación de este párrafo). A mayor portabilidad menor es la dependencia del software con respecto a la plataforma.

Visibilidad.
La visibilidad es la cualidad perceptible, que permite ver objetos a una determinada distancia. A menor visibilidad peor se verán objetos a la lejanía, mientras que a mayor visibilidad se verán mejor objetos lejanos.

Funcionalidad.
Conjunto de características que hacen que algo sea práctico y utilitario.

Puntualidad.
Puntualidad es una actitud humana considerada en muchas sociedades como la virtud de coordinarse cronológicamente para cumplir una tarea requerida o satisfacer una obligación antes o en un plazo anteriormente comprometido o hecho a otra persona.


Referencias: