martes, 21 de abril de 2015

Ensayo - Calidad de Software

Alumno: Victor Cuauhtemoc Vargas Ramírez
Especialidad: Programación   
Grupo: 4IM8  
Profesor: Juan Manuel Cruz Mendoza
TÉCNICAS DE PROGRAMACIÓN PERSONAL CON CALIDAD
Miércoles 22 de Abril del 2015



INTRODUCCIÓN.


Durante la clase de Técnicas de Programación Personal con Calidad se analizaron los factores internos y externos que nos permiten evaluar la calidad del software, obteniendo que la calidad del software es mejor descrita como una combinación de varios factores.


Existen diversos tipos de software a lo largo del mundo, todos ellos cumplen una función específica, es decir, es el fin con el que fueron creados.
Sin embargo, todos ellos para que puedan funcionar y destacar, tienen que estar en un cierto nivel de calidad, 



Todos queremos que nuestros sistemas de software sean rápidos, útiles y sencillos de usar, de tal manera que el usuario detecte estas características y juzgue de una manera mas objetiva el nivel de calidad que posee el software que se le brindó.



DESARROLLO.

Siempre para que nuestro usuario pueda analizar y evaluar nuestro sistema toma en cuenta los factores externos de acuerdo a su percepción, ya que, ellos debido a su falta de conocimientos acerca del código y temas acerca de la programación, no podrían evaluar nuestro nivel de programación de acuerdo al código.

Veamos ahora, los factores mas importantes:

1. Exactitud

 Es lo más trascendente dentro un software.
 Es un factor externo que se satisface a través de los requerimientos funcionales del software y tiene que lograr con los objetivos planteados.

 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 de software.

Un ejemplo software exacto podría ser WinRaR, ya que aparentemente, cumple con todo lo que nos ofrece.

Podríamos establecer una 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. 

2. Robustez



La robustez en software se define como la capacidad de responder ante algún evento que pueda comprometer la funcionalidad de este. 

Al terminar de programar un sistema siempre se presentan situaciones que no se contemplan y la robustez nos asegura que estas no causaran eventos catastróficos que dañen la integridad de nuestro programa, de esta manera la robustez hará un despliegue de mensajes de error apropiados en donde pueda terminarse la ejecución de manera limpia manteniendo los datos seguros.


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


3. 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.   Podemos afirmar que  es la creación de un sistema a partir de alguno ya existente.

Sin embargo la definición 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 formula que establecimos como:

Porcentaje de reutilización = (Software reutilizado/Software total) x 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.


4. Extensibilildad


Es la facilidad de adaptar los productos del software a los cambios que el cliente especifique.


5. Compatibilidad


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


COMPATIBILIDAD:  
Sistemas con los que es capaz de trabajar en conjunto / 1 + Numero de cambios que requiere el sistema para interactuar con el otro en cuestión.

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

7. Portabilidad

El esfuerzo necesario para transferir el programa de un entorno de hardware o software a otro.

8. Fácil de usar


Es la simplicidad con la cual las personas de varios conocimientos y cualidades tienen la capacidad de aprender a usar un software, aplicándolo para resolver problemas.

En la calidad del software es fundamental la facilidad de uso de tu sistema, ya que normalmente el usuario que requerirá tu sistema no tiene tantos conocimientos 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 sus 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”.

Podríamos calcularlo por medio del tiempo que tarda en aprender a usar el software una persona con conocimientos muy básicos de computación, a menor tiempo, mayor facilidad de uso.


9. Funcionalidad


Es la característica en la cual se incluyen las características necesarias para un software, sin incluir funciones innecesarias de software que complican al usuario realizar su acción.

Por ejemplo en el año de 2011-2012 Facebook  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 

Aspectos importantes acerca de 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  numero de errores
  • Sus actualizaciones no afectan a la calidad de software



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








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 e intentando o pretendiendo cubrir los factores que evalúan su calidad.

Como anteriormente se mencionó, un software siempre será de calidad cuando cumpla todos los factores que la miden, sin embargo será cuestión del usuario si le agrada o no, y el le podrá poner una evaluación de manera subjetiva.



REFERENCIAS.

  • Resumen Capitulo 1 de: "Object Oriented Software Construction" 2da Edition. Bernard Meyer
  • Interpretaciones de alumnos del grupo 4IM8 de la Especialidad de Programación del CECyT 9. Abril 15, 2015.

No hay comentarios:

Publicar un comentario