domingo, 28 de junio de 2015

Formatos TPPC


Bueno, al parecer he llenado los formatos tal y como han sido las especificaciones, tengo duda en algunos pero aqui estan.

Cuaderno Registro Tiempos


Cuaderno Trabajo



Resumen Semanal de Actividades

Resumen Plan de Proyecto



Tareas del Proyecto


domingo, 21 de junio de 2015

Altas y consultas


También me preguntaron de cuanto cobraría por hacer
que un programa registre 'n' datos y los consulte.

Tomando mi tiempo, tengo que:

 
 
   *El precio en moneda nacional tomando en cuenta que
   el dolar esta a $15.6
 
   Por tanto, el precio para altas y consultas es
-$11.6 USD
-$180.96 MNX

Libro de 100 cuartillas


Bueno, me preguntaron hace unos días de cuanto cobraría por hacer un libro de 100 cuartillas, con letra Arial 12, con interlineado 2.0 y texto justificado.

Entonces, viendo mis estadísticas del Curso Meca, y en promedio hago 247 PPM (Pulsaciones por minuto), y me puse a hacer el promedio del tiempo que me tardo y salió 63.5 segundos, con un porcentaje de error dee 4.05%


Después, me puse a llenar una hoja en Word con puras letras (sin espacios) para verificar cuantos caracteres tiene una cuartilla con esas especificaciones. Y en particular me salieron 1979 caracteres.

Entonces el cálculo es 

Si                60 seg -->  247 caracteres
entonces     x seg   ---> 1979
Por tanto x = 480 seg = 0.13 hr

Considerando que en cada cuartilla me tarde lo mismo
             Implica que 100 cuartillas = 13.3 hrs.


domingo, 7 de junio de 2015

Código para dar de "alta" en una Página Web

Todos hemos entrado a una página en la cual tenemos que ingresar los datos que nos piden para poder registrarnos (por ejemplo, facebok" o "darnos de alta" en el sistema de dicha página.
Llenamos los campos que nos piden, y sólo con dar un click en donde dice "Registrarse" ya estamos registrados.

Pero ... ¿Se han preguntado qué es lo que pasa internamente cuando le damos en "registrarse"?
¿Cómo le hace "el sistema" para poder registrarnos o "darnos de alta"?
Bueno, se los explicaré de manera simplificada.

Con ayuda de un servidor, se enviará la página que contendrá los campos a llenar a nuestro navegador, después de eso, nosotros llenamos el formulario con los datos que nos piden. Al dar click en "registrarse" el servidor envía una página que hará que los datos ingresados en el formulario se registren en la base de datos, ésta página estará escrita en su mayor parte en un lenguaje de programación que hará posible la conexión con la base de datos. Una vez que llego ésta información al servidor y por supuesto, ya está registrada en la base de datos, el servidor (o la misma página programada)  envía un mensaje de que el registro ha sido exitoso

¿Pero Cómo se hace todo esto?
Primero que nada se necesitamos saber qué datos pedir, y en base a ello crear la base de datos. En esta ocasión vamos a simular que estamos en una empresa y que pediremos nombre, contraseña, el puesto que tiene el empleado y el sueldo que recibe.

Código SQL


Después crear la página que contendrá dichos datos.
Código de la página (HTML)



Y por último, crearemos el archivo que hará posible la conexión a la base de datos y posteriormente registrará los datos enviados. El código está en JSP (Java Page Server), y con el lenguaje de programación, valga la redundancia, Java


Nosotros solamente podremos ver esto:

Sorprendente ...  ¿no creen?

Bueno, pues eso es todo por hoy.

¡Hasta la próxima!

sábado, 6 de junio de 2015

Curso de Mecanografía

¡Hola que tal a todos! :D

Hace unas 3 semanas ingresé a un curso de mecanografía gratuito. El objetivo de dicho curso es aumentar la calidad de los trabajos que se realizan y la rapidez con la que se realiza al momento de escribir sobre el teclado, usando los DIEZ (o bueno, todos los dedos de la mano) sin mirar el teclado.
Consta de 28 lecciones de las cuales apenas estoy en la 16.

Entonces, el Miércoles pasado realicé un test de velocidad, en el cual se te muestra un texto largo el cual usas casi todos los elementos del teclado de la computadora.


Les comparto mi resultado:





Descargué el certificado, 

Estoy trabajando para mejorar esa velocidad, pero sobretodo disminuir el número (o porcentaje) de errores. 

Hasta Pronto

jueves, 28 de mayo de 2015

Hacer el código de un programa a partir de un Diagrama de Casos de Uso

Todos sabemos que lo programadores se ponen a trabajar en base a un diagrama de clases, en los cuales se les indica que es lo que tienen que hacer, qué tipo de variables tendrán cada una de las clases , la relación entre ellas etc.
Bueno, la clase pasada con el profesor de TPPC  de nuestra sagrada escuela hizo un diagrama de clases.
Lo que tuvimos que hacer fue, mientras su cronómetro estaba corriendo, copiar todo el diagrama de clases y hacer el código del programa en el cuaderno. Una vez que hayamos terminado teníamos que ver el tiempo que registraba el reloj en ése momento

Diagrama de clases

El diagrama era el que aparece en la siguiente imagen, sólo tenía 4 atributos y 6 métodos

Código del Diagrama de Clases

Cada quién empezó a realizar su código, éste es el mío




Lo que está encerrado con azul en la imagen es el tiempo neto que me tardé en hacer el código a mano. Fue de 5 minutos 34 segundos.

Algunos compañeros (muy pocos) me pareció que terminaron a las 4 minutos, y conforme o termine cada vez fueron aumentando el numero de compañeros que se levantaba a revisar el tiempo que se tardaron.
¿Cuál será el tiempo medio del grupo en el cual terminaron de escribir su código?
Por ahora no lo sé, pero muy pronto lo sabremos tosdos ;)

martes, 28 de abril de 2015

Etapas de la Calidad y Calidad en el software

El concepto de calidad y la forma en la cual se evalúa ha evolucionado a través del tiempo, y es que no es lo mismo lo que se hacía en la edad media, que lo que se hacía en la revolución industrial. Revisemos.

Primero se pensaba que la calidad era cuando un producto estaba bien hecho, es decir que luciera como un arte, con una cierta metodología que solo los maestros artesanos y sus discípulos sabían. Y nosotros lo hemos notado. Quién no ha visto una mesa de madera del siglo XVI. La calidad, en ese entonces, la determinaba totalmente el cliente

Mesa con arte del siglo XVI


Llegó la revolución industrial, y con ella se empezaron a sustituir a las personas por máquinas que podían hacer más cosas que un individuo. Entonces notaron que el proceso para que se consiguieran dichos resultados era muy tardado, entonces buscaban que estuviera terminado el producto lo más pronto posible y que además no fuera un solo producto, sino que fueran bastantes; el detalle estuvo en que lo terminaba pronto pero la "vida" útil de los productos era corta, entonces hubo otra inconformidad.

Mesa hecha en la etapa de la Rev. Industrial

Para evitar esto, las empresas comenzaron a fijarse en cómo iba quedando el producto final. Comenzaban a fabricarlos y hasta el último revisaban si el producto era de calidad. Ya no solo hacían las cosas en masa y en el menor tiempo, sino que también buscaban si había algún fallo en el producto final. Pero esto significó también muchas pérdidas, pues si varios productos resultaban defectuosos se tenían que volver a producir otros, y esto implicaba materiales nuevos, tiempo, en fin, había inconformidad.



Entonces, en vez de fijarse hasta el último, decidieron revisar que en el proceso de elaboración se hicieran bien las cosas, para asegurar así la calidad final del producto. Es decir, ya no lo dejaban para el final, sino que se revisaba que en cada etapa de la elaboración del producto se hiciera lo mejor posible. Así entonces, se revisaba las máquinas que estuvieran en buen estado que los trabajadores realizaran bien su cargo, etc.

Mesa de los años 40

Después, la competencia aumentó, pues no sólo había una sola empresa o negocio dedicado a lo mismo. Entonces se optó por mejorar cada vez más la calidad. A esto se le conoce como PROCESO DE MEJORA CONTINUA. Y ésta ya no depende nada más de los procesos que se lleven, o lo bonito que se haya hecho, o el tiempo en el que se haya fabricado, sino también de los trabajadores, de la atención al cliente. La cuestión es mejorar cada vez más para obtener así la CALIDAD TOTAL


Mesa Moderna

Etapas de la Calidad

Bueno, ¿Y ésto en que afecta en la calidad del software? ¿Qué relación tiene con esa parte?
Bueno, pues resulta que también se desarrollaron normas y modelos para realizar software con calidad. Entre ellos están

  • Modelo CMMI
  • Modelo TSP (PSP)
Modelo CMMI (Capability Maturity Model Integration)
O modelo de Madurez de Capacidades Integrado. Fue desarrollado por el SEI  (Software Enginnering Institute
Más que todo, este modelo busca la mejora continúa tanto en los procesos de desarrollo de productos como en los servicios
 "Consiste en las mejores prácticas que tratan las actividades de desarrollo y de mantenimiento que cubren el ciclo de vida del producto, desde la concepción a la entrega y el mantenimiento." (Chrisis, M., Konrad, M., & Shrum Sandy, 2009)
Su métrica, con la cual mide la madurez del desarrollo del software va desde el 1 hasta el 5

Niveles de Madurez (Por etapas)

  1. Inicial/Desarrollado: El proceso es impredecible, es reactivo y pobremente controlado.
  2. Administrado/Gestionado: El proceso es reactivo y se caracteriza por su aplicación a proyectos.
  3. Definido: El proceso es proactivo y se ve a nivel de la organización
  4. Administrado/Gestionado cuantitativamente: El proceso es medido y controlado.
  5. Optimizado: : El proceso se enfoca en la mejora continua
Niveles de madurez (Coninuo)

  • Nivel 0 (Incompleto): : El proceso no se ejecuta o se hace parcialmente
  • Nivel 1 (Ejecutado): El proceso se ejecuta y se producen productos basados en productos de entrada identificados
  • Nivel 2 (Administrado): El proceso es reactivo y se caracteriza por su aplicación a proyectos.
  • Nivel 3 (Definido): El proceso es proactivo y se ve a nivel de la organización.
  • Nivel 4 (Administrado Cuantitativamente): El proceso es medido y controlado
  • Nivel 5 (Optim€izado): El proceso se enfoca en la mejora continua
Modelo CMMI
Modelo TSP / PSP (Team Software Process/ Personal Software Process)
Según Walter Arriaga el TSP es esencialmente el conjunto de prácticas de estrategias que debe seguir un administrador para poder aprovechar el valor que le ofrece a una empresa o grupo de trabajo contar con un equipo de personas capacitadas en PSP que es el Personal Software Process.

El PSP es un conjunto de procesos a nivel personal para el desarrollo de software. Es decir, evalúa solamente al desarrollador, para que éste sea capaz de desempeñarse en cualquier ambiente y en cualquier industria.

Con PSP los desarrolladores utilizan procesos definidos para mejorar el desempeño de trabajo, aplicando las métricas correspondientes

Proceso de Mejora Continua
Según la Norma ISO 9001 el proceso de mejora continua consiste en  mejorar constantemente la eficacia del sistema de calidad aplicando la política de calidad, los objetivos de calidad, los resultados de la revisión, el análisis de datos, las acciones correctivas y preventivas y la revisión de la Dirección. Identifique de qué manera los procesos citados contribuyen a la mejora constante del Sistema de Gestión de Calidad.

La Dirección es responsable de la mejora constante de la eficacia del Sistema de Gestión de Calidad (5.1). Estos procesos son los instrumentos que deben utilizarse para obtener la mejora continua.

Ya no se debe de hacer algun otro proceso, sino asegurar la mejora constante revisando la relación entre cada uno de los procesos mencionados anteriormente.


Hemos visto que la percepción de la calidad ha cambiado respecto a las épocas en las cuales se está haciendo referencia, se crearon Normas y estándares para que se asegure firmemente la calidad. A cada "cambio" se le llamo etapa.

La última es la de Calidad Total, que no sólo involucra a los procesos de producción, sino también a los trabajadores y a los servicios. Con ello surgen los modelos CMMI, TSP/PSP para evaluar la madurez del producto final, los procesos que llevan a cabo las empresas para lograr dicho producto y el desempeño de cada uno de los trabajadores. Para mejorar continuamente.

En éstos tiempos la competencia está al por mayor, tanto en la industria del software como en cualquier otra, cada vez surgen nuevas empresas, y las empresas antiguas no quieren perder ante las nuevas. ¿Y qué hará que haya calidad en cada una? ¿El tiempo de actividad de cada una? No, lo que hará que haya más calidad depende de cuán constante estén mejorando. No hay que dejarse llevar por el dicho "Más vale viejo por conocido, que nuevo por conocer".

Bibliografía

  1. Pedrini, H.. (1995). Detalles de la Norma ISO. Abril 2015, de Alconet Sitio web: http://www.alconet.com.ar/ISO/menu.html
  2. Chrisis, M., Konrad, M., & Shrum Sandy. (2009). CMMI® Guía para la integración de procesos y la mejora de productos Segunda edición. Abril 2015, de Software Enginnering Institute Sitio web: http://www.sei.cmu.edu/library/assets/cmmi-dev-v12-spanish.pdf
  3. AllSoft. (2008). El Modelo CMMI. Abril 2015, de AllSotf Sitio web: http://www.allsoft.com.mx/recursos/ElModeloCMMI.pdf
  4. Kernel. (2009). Metodología PSP/TSP. Abril 2015, de Kernel Sitio web: http://www.kernel.com.mx/documentos/psp_tsp.pdf
  5. Salgado, J. (2012). ¿Qué es TSP?. Abril 2015, de IBM Sitio web: http://www.ibm.com/developerworks/ssa/podcast/13/tsp-psp.pdf
  6. ISO. (2008). Mejora. Abril 2015, de Normas 9000 Sitio web: http://www.normas9000.com/iso-9000-59.html

martes, 21 de abril de 2015

Ensayo Calidad del Software, factores y su imperativa aplicación al proceso de realizacion del software

Así como la calidad en sí, la calidad del software es un proceso de mejora continua que lleva consigo el cumplimiento de ciertos requisitos a través de los cuales se forma una métrica correspondiente para el estudio de esta. A continuación se explicarán, así como se propondrán ciertas ecuaciones para su respectivo cálculo.

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 la computadora.

Se propuso una métrica para la eficiencia de la siguiente manera:

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

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. 

Otro de los aspectos a considerar es la exactitud de la cual se puede decir que:

  •  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: 
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.

Además, ¿Qué es indispensable para las empresas desarrolladoras de software? Cumplir con la responsabilidad. Por ello la puntualidad se juega un papel imperativo.
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. 

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 día 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”.

Otro concepto de gran importancia es la funcionalidad ya que busca hacer un balance entre las funciones necesarias para que un software funcione y las que son innecesarias pues al enfocarse en mayor medida a éstas pueden retrasar el avance del proyecto.
Un ejemplo muy claro de cuando no se aplicó la funcionalidad fue en Facebook entre 2011-2012 pues se incluyó una actualización en la presentación de las biografías de todos los usuarios lo que dificultó a muchos sus acciones en la red social, perdiendo su funcionalidad.

Métrica sobre la Funcionalidad
Deberá cumplir con 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:

Pero así como hay que tener en cuenta sólo agregar las funciones necesarias también es importante tener en cuenta que en cualquier momento pueden surgir condiciones anormales y para esto debemos tener presente la robustez.

La robustez se define como la respuesta del software a eventos no planificados o fuera del uso normal de éste, si el software no se derrumba a la hora de una acción imprevista o ante un uso inapropiado, podremos decir que cuenta con robustez.

La reutilización juega un papel muy importante porque al volver a utilizar funciones nuestro trabajo será menor y así podremos dedicar más atención a aspectos como la robustez y exactitud.
Entonces ¿Qué es la 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 definirla de manera más 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 fórmula que establecimos como
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.

Pero ¿De qué nos serviría todo lo anterior si nuestro software no es fácil de usar?
Podemos definir el fácil uso como 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.
La cual se puede medir de acuerdo al tiempo que se tarde una persona con conocimientos nulos sobre el sistema.
De acuerdo con lo anterior , la ecuación queda asi:

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”.

Otro concepto no menos importante es la compatibilidad pues ¿Para qué queremos un software si no es compatible con nuestro sistema tiene problemas al interactuar con otros softwares?
La compatibilidad es: 

  • 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.
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
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.
Podemos medir la compatibilidad de la siguiente manera:
¿Podríamos decir que un software tiene calidad si no busca mejorar continuamente?
La extensibilidad significa que el sistema está diseñado para incluir ganchos y los mecanismos para la expansión/mejora del sistema con capacidades previstas sin tener que hacer cambios importantes en la infraestructura del sistema. También puede significar que el comportamiento de un sistema de software se puede modificar en tiempo de ejecución, sin necesidad de recompilar o modificar el código fuente original. Por ejemplo, un sistema de software puede tener una interfaz de programación de aplicaciones de público que permite su comportamiento para ser ampliado o modificado por personas que no tienen acceso al código fuente original.

La extensibilidad juega un papel importante en la calidad del software debido a que gracias a esta se facilita el mantenimiento del software así como futuras implementaciones o mejoras y para evitar la obsolescencia
Un ejemplo de extensibilidad es cuando hacíamos proyectos escolares en java y trabajábamos Programación Orientada a Objetos, programábamos los requerimientos en diferentes módulos o clases, lo que hacía que si había un error en el programa, se tuviera que corregir solo el código de esa clase y no tener q buscar el error en el sistema y cambiar todo el código para arreglarlo
Una forma de medir la extensibilidad es con la siguiente formula:

Por último tenemos la portabilidad que también es indispensable pues de éste modo cualquier persona aunque tenga diferentes tipos de hardware o software podrá utilizar el sistema.
La portabilidad es la facilidad que tiene un software para adaptarse a distintos ambientes de software y hardware.
Un software portable es aquél que, independientemente del sistema operativo sobre el que se esté trabajando y el hardware con el que cuente un computador, pueda funcionar sin ningún problema.
Los programas que realizábamos en Java son un ejemplo de software portable, pues así fuera iOs o Windows, dichos programas se podían ejecutar sin ningún problema, sin embargo algunas computadoras ejecutan más rápido los programas u otras no identifican los caracteres que otras si pueden interpretar.


En general no sólo se busca software porque si, siempre tenemos en cuenta, -aunque no tengamos conocimientos en calidad-, que sea de nuestro beneficio. Principalmente, algo en lo que siempre nos fijamos en algún software es que sea exacto, que haga lo que dice que hace, de lo contrario, ¿Para que lo descargamos?¿Para qué lo tenemos si no nos va a funcionar?. Muy pocas veces encontramos software no exacto. Después, lo segundo que nos podemos fijar es en la facilidad en la que podemos utilizar dicho software, si no le entendemos, lo más seguro es que nos aburra o nos desespere, aunado a esto está la rapidez con la que corra en nuestra computadora, etc.
En fin, conociendo poco o acerca de los factores de la calidad del software, siempre la buscamos, e incluso la exigimos. El reto es para quien desarrolla y vende software.



lunes, 13 de abril de 2015

La calidad en el Software


Vivimos en una sociedad en donde la calidad debe de formar parte de todo lo que nos rodea, todo debe de ser de calidad, incluso nuestra propia vida. Sin embargo, en ésta ocasión nos enfocaremos a la calidad en el software.
En la actualidad, la calidad en el software se ha convertido en uno de los principales problemas que tiene que afrontar la Ingeniería de Software (SOLARTE, MUÑOZ, & ARIAS, 2009, pág. 375) debido que ésta depende de su eficiencia en cada sistema operativo, el coste para su mantenimiento y perfeccionamiento durante su utilización (Ibíd.)
Hemos visto, al momento de descargar un programa, la página nos indica primero los requerimientos que debe de cubrir nuestra computadora para su buen funcionamiento, por ejemplo: para cuál sistema operativo (SO) está disponible, de cuantos bits debe de haber en procesador, el tamaño en MB del archivo a descargar. Si por error seleccionamos un SO distinto al que tenemos nosotros, muy probablemente no podamos instalarlo a causa de que los SO no siempre tienen las mismas funciones ni el mismo tipo de extensión de archivo. No vamos a descargar un programa para Android (.apk) en Windows (.exe) porque definitivamente no nos va a funcionar.
En el caso contrario, si lo que falla es que el programa se tardó en cargar, o necesitaba más funciones pues habrá un fallo en él, éste fallo será reportado y será analizado por todo el equipo implicado en su desarrollo. Tal análisis puede tomar tiempo que se pudo haber ahorrado. Todo esto influye en la calidad de dicho programa (Software). Veremos a continuación la definición

¿Qué es la calidad del Software?
 
“La calidad es la suma de todos aquellos aspectos o características de un producto o servicio que influyen en su capacidad para satisfacer las necesidades, expresadas o implícitas” (ISO 8402)[1]
Podríamos decir que es el conjunto de actividades que se adaptan a las necesidades del cliente, la utilidad y el resultado (solución) que propone el programador, tales como pruebas, revisiones, y verificaciones para asegurar que el producto desarrollado cumpla los requisitos asignados[2] por el usuario.

A pesar de que sabemos que nuestro producto debe de cubrir los requisitos de nuestro cliente, necesitamos saber si nos faltan criterios por evaluar. Existen autores, tales como McCall, Boehm, los cuales se han enfocado a la calidad en éste ámbito, proponiendo modelos que ayudarán a determinar la calidad de nuestro producto.

Tipos de modelos
Antes de revisar cuáles son los modelos que proponen los autores antes mencionados, veamos qué tipos de modelos hay (son tres):
Modelos de calidad de software con valor técnico.
·         Calidad de Proceso: Serán las actividades que influyen en la calidad del producto (Peña, 2011). El software debe de funcionar en todo momento, debe de permitirnos utilizarlo cuando sea necesario (Velthuis M., 2003)[3]
·         Calidad de producto: Serán las propiedades del producto según usuario y según desarrollador (Ibíd. supra). El software deberá cubrir las funcionalidades que publica, es decir, debe de hacer lo que dice que hace.
Modelos de calidad de software con valor comercial
·         Calidad en uso: Relación  del producto con el ambiente donde se emplea. No solamente de hacer lo que dice que hace, sino que lo tiene que hacerlo de manera adecuada.


Modelo de calidad según McCall
Este se basa en 11 factores de calidad, los cuales se agrupan en tres categorías
§  Operación del Producto
o   Facilidad de uso (¿Puedo ejecutarlo?)
o   Integridad (¿Es seguro?)
o   Corrección (¿Hace el software lo que yo quiero?)
o   Fiabilidad (¿Lo hace todo de manera exacta?)
o   Eficiencia (Se ejecutará en Hardware lo mejor posible)
§  Revisión del producto
o   Facilidad de mantenimiento (¿Puedo arreglarlo?)
o   Facilidad de prueba (¿Puedo probarlo?)
o   Flexibilidad (¿Puedo modificarlo?)
§    Transición del producto
o   Facilidad de reutilización (¿Podré reutilizar parte del software?)
o   Interoperabilidad (¿Podré comunicarlo con otros sistemas?)
o   Portabilidad (¿Podré utilizarlo en otra máquina?)
Analizando a los factores de calidad que propone McCall, podremos decir que él hace hincapié en la calidad en el proceso y en la calidad comercial, siempre debe de tenerse en cuenta que funcione bien, sin ningún error o interrupción independientemente de cuál sea el SO en el que será montado. La calidad de producto pasa a segundo plano, pues solamente se toma en cuenta cuando se tiene que hacer alguna corrección. ¿Me sería útil un programa que no haga lo que yo demando? Si no lo hace, entonces ¿De qué me serviría que se pueda comunicar con otros ordenadores (computadoras)? Pueda ser que su programa funcione bien, y sea muy eficiente, pero si no hace lo que yo quiero en qué más debo de fijarme.


Modelo de calidad según Boehm
Fue propuesto en el año de 1978 por Barry Boehm. En éste modelo se exige además que el software haga lo que el usuario desee, que sea factible su aprendizaje de uso, con un diseño bueno, atractivo al usuario, un codificado entendible para cuando se necesite su mantenimiento y/o actualizaciones. Por tanto, hace más hincapié en la calidad del producto y la calidad comercial.

Existen más modelos que nos propone la ISO (International Organization for Standardization) para que un producto se considere de calidad. La familia ISO 9000 aborda diversos aspectos de la gestión de la calidad y contiene algunas de las normas más conocidas de la ISO. Las normas proporcionan orientación y herramientas para las empresas y organizaciones que quieren asegurarse de que sus productos y servicios cumplen consistentemente los requerimientos del cliente, y que la calidad se mejora constantemente.” (ISO 9000, 2015)


Hemos visto en los modelos anteriores que se manejan conceptos tales como utilidad, portabilidad, los cuales son factores que ayudarán a determinar la calidad de nuestro software. … Pero cuál es su significado dentro de todo esto. Veremos su significado original según la RAE (Real Academia Española) y después su interpretación
·         Exactitud: Puntualidad y fidelidad en la ejecución de algo. En este caso se refiere a la cercanía que tiene la ejecución del programa con el objetivo para el cual fue hecho. Ejemplo: Si un programa que su objetivo es el de calcular el promedio de ciertos números, pero resulta que solamente suma… entonces no será un software exacto.
·         Robustez: Cualidad de robusto: Fuerte, vigoroso, firme. En el software, se refiere a la capacidad de reacción que tiene el programa ante situaciones que no fueron contempladas en un principio. Por ejemplo, si a un programa que reproduce audio únicamente en formato MP3, pero tú no lo sabes, entonces se te ocurre reproducir un canción en formato wma, un programa robusto identificará el error y desplegará mensajes que sean compresibles para el usuario
·         Extensibilidad: Cualidad de extensible: Hacer que algo (…) ocupe más lugar o espacio que el que antes ocupaba. En el software es casi lo mismo, la única diferencia es que en el software es un principio de diseño de sistema el cual contempla los cambios futuros que se hagan. En pocas palabras, las actualizaciones que requerirá el software.
·         Reutilización: Utilizar algo, bien con la función que desempeñaba anteriormente o con otros fines. En el software es la capacidad que se cuenta para que, a partir de lo ya desarrollado, se pueda generar un nuevo producto, sin la necesidad de desarrollarlo desde cero.
·         Compatibilidad: Que puede funcionar directamente con otro dispositivo, aparato o programa. Ésta definición nos dice claramente lo que es a compatibilidad en el software. Ejemplo: Tenemos el claro ejemplo de los productos de office que han cambiado conforme avanzan las actualizaciones de Windows. Word 2010 es compatible con sus versiones anteriores porque permite abrir archivos con extensión .DOC (Usando por versiones anteriores) sabiendo que ahora la extensión es .DOCX, esto permite guardar archivos que pueden interpretar computadoras antiguas con SO Windows.
·         Eficiencia: Capacidad de disponer de alguien o de algo para conseguir un efecto determinado. En el software, es la capacidad de los programas de aprovechar sólo los recursos necesarios para su funcionamiento
·        Portabilidad: No existe una definición en la RAE acerca de éste término, sin embargo en el software se refiere a la capacidad con la que puede se puede ejecutar cierto programa en las diferentes plataformas de Hardware o Software que existen. Por ejemplo, el lenguaje de programación Java es portable ya que se puede ejecutar tanto en Windows así como en Linux o IOs.
·      Factible (Fácil de usar): Que se puede hacer. Lo interpretamos como la facilidad con la que un Usuario puede interactuar con un programa. Por ejemplo, hay ocasiones en que a las personas se les hace tedioso o difícil el uso del cajero automático, debido a que cuando terminas de hacer una operación en tu tarjeta y quieres continuar con otra transacción, el programa termina su ejecución y tienes que volver a insertar la tarjeta.
·         Funcionalidad Se dice de todo aquello en cuyo diseño u organización se ha atendido, sobre todo, a la facilidad, utilidad y comodidad de su empleo. En general, es lo que el producto (programa) puede hacer. Probar a funcionalidad de un programa es asegurar que el programa funciona tal y como se espera.
·         Puntualidad: Certidumbre y conveniencia precisa de las cosas, para el fin a que se destinan. Es la manera en la cual el software cumple con el (los) objetivos con los cuales fue elaborado.



Conclusión
Sin duda alguna, siempre se busca la calidad. En lo personal, cuando descargo un programa o una aplicación, lo primero en lo que me fijo es que cumpla con lo que dice que hace, por ejemplo, descargo un editor de textos en el cual se puede guardar el texto en el lenguaje de programación que estés utilizando, identifica las palabras reservadas de alrededor de 10 lenguajes de programación y html. Sin embargo, explorando sus demás funcionalidades (porque siempre exploro que más puede hacer el programa) me di cuenta que además se podían grabar macros, ejecutar un código html en el navegador que tengas. Puedes modificar su entorno en fin, hace más que editar texto e identificar en cuál lenguaje estás programando. Entonces considerando lo anterior, puedo decir que es un programa de calidad, ya que ha sido fácil de usar, sus funciones se han ido extendido, hace más que editar texto, hasta ahora no se han presentado problemas, puede ser descargado para Windows. Sin embargo ahí no se pueden reproducir música o videos, pues es un editor de texto y por tanto es exacto.
En fin, el software tiene últimamente mucha demanda, debido a que se desarrollan más aplicaciones, programas para la mejora o automatización de procesos que antes lo realizaban los humanos. A raíz de esto, se han ido creando nuevas empresas dedicadas al desarrollo de software. Sin los modelos antes presentados, y sin la norma ISO 9000, la calidad en el software sería subjetiva y sólo dependería de la visión de unos cuantos.

Bibliografía

1.     Solarte, G., Muñoz, L. & Arias, B. (2009). Modelos de Calidad para Procesos de Software. Scientia Et Technica, XV (42) 375-379. Recuperado de http://www.redalyc.org/articulo.oa?id=84916714069
2.     Palazzolo, C., (2005). Calidad de Software, Herramientas de Software. Abril 2015, de No Qualiity Inside Sitio web: http://noqualityinside.com/nqi/nqifiles/CalidadDeSW_diap.pdf
3.     Gallardo E., (2014). La calidad en el desarrollo del software. Contacto Nuclear, 19-21. abril 2015, De Instituto Nacional de Investigación Nuclear Base de datos. Recuperado de: http://www.inin.gob.mx/publicaciones/documentospdf/SOFTWARE.pdf
4.     Navarro O., (No especifica). Calidad en el Calidad en el Desarrollo de Software. Abril 2015, de Universidad Tecnológica de Jalisco Sitio web: http://ozarate.net/material/calidad_presentacion1.pdf
5.     Peña J., (2011). Calidad del Software. Abril 2015, de Universidad Veracruzana Sitio web: http://www.uv.mx/personal/jfernandez/files/2010/07/8_Calidad.pdf
6.     ISO. (2015). ISO 9000 - Quality Management. 10 Abril de 2015, de International Organization for Standardization Sitio web: http://www.iso.org/iso/iso_9000
7.     RAE. (2014). Diccionario de la lengua española 23a Edición. 11 de abril de 2015, de Real Academia Española Sitio web: http://lema.rae.es/drae/




[1] Op. (Palazzolo, 2005, pág. 4)
[2] (Gallardo, 2010)
[3] (Navarro, 2015, pág. 5)