A continuación les presentaré una tabla con una estimación de lo que me tardaría en hacer un altas cambios y consultas.
No supe que era postmortem pero como pueden observar la planificación es de lo más importante e incluso creo que puede llevar más tiempo
jueves, 2 de julio de 2015
domingo, 7 de junio de 2015
martes, 28 de abril de 2015
Modelos de calidad del software
¿Qué es el CMM - CMMI?
El CMM - 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.
Los niveles CMM - CMMI son
5:
Inicial o Nivel 1 CMM -
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, te tienes 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 sabes lo que pasa en él.
Repetible o Nivel 2 CMM -
CMMI. Quiere decir que el éxito de los resultados obtenidos se pueden 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
Definido o Nivel 3 CMM -
CMMI. Resumiéndolo mucho, este alcanzar este nivel significa que la forma de
desarrollar proyectos (gestión e ingeniería) esta definida, por definida quiere
decir que esta 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.
Cuantitativamente Gestionado
o Nivel 4 CMM - 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
Optimizado o Nivel 5 CMM -
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.
martes, 21 de abril de 2015
Ensayo Calidad del Software, factores y su imperativa aplicación al proceso de realización 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 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:
Exactitud = # Requerimientos - # 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.
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.
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”.
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.
- 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
- Es la creación de un sistema a partir de alguno ya existente
Pero la forma de
definirlo 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.
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.
Métrica:
Nivel de conocimientos * tiempo
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 que 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.
Se propone la siguiente
métrica para su medición:
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.
martes, 7 de abril de 2015
¿Qué es la calidad del Software?
En
el blog anterior habíamos llegado a la conclusión de que la calidad es la
cualidad de un servicio o producto que debe cumplir con ciertos requerimientos
o necesidades pero ésta siempre dependerá de la persona o estándar que la mida.
Pero si nos enfocamos a los softwares ¿Cómo podemos saber si un software tiene
calidad? ¿Hay estándares o normas que lo midan? En este trabajo explicaré la
importancia de que un software tenga calidad y la forma en que ésta se mide.
Para
empezar ¿Qué es un software? Según Oxford University Press (1993) el término
software o programa se aplica a aquellos componentes de un sistema informático
que no son tangibles, es decir, que físicamente no se pueden tocar pero también
Sánchez Montoya (1995: 54) dice que el programa supone un “conjunto de [...]
pasos que indican a la máquina (hardware) aquello que debe hacer". Pero
entonces ¿Qué es la calidad del software?
“Si hablamos de la calidad del software, una de las
primeras definiciones aseguraba que “La calidad de un programa o sistema se
evaluaba de acuerdo al número de defectos por cada mil líneas de código (KLOC:
Kilo Lines Of Code)”
López A. M.,
Cabrera, C. & Valencia, L. E (2008). Introducción a la calidad de software.1
Scientia
Et Technica. Recuperado de: http://www.redalyc.org/articulo.oa?id=84920503058
1Apud. Pressman,
Roger, Ingeniería de Software 3a Ed, McGraw Hill, 1993
Sin
embargo analizando otras definiciones también se toman en cuenta factores
externos que sean de interés al usuario y tanto factores externos como internos
se pueden medir gracias a los Modelos de
Calidad ya que desde el principio de la ingeniería de software, se observó
que la calidad está compuesta por una composición de muchas características y
lo que los modelos de calidad buscan es describir estas características y sus
relaciones.
¿Por qué es tan importante la calidad de Software?
Podemos
observar que existen muchas normas que evalúan diferentes productos o servicios
y esto es muy importante ya que de esta manera nos dará la seguridad de que un
producto es confiable y así dará puntos extra en su comercialización. Lo mismo
pasa con un software, existen formas de medir la calidad y así asegurarnos de
que nuestro software tenga la capacidad de competir contra otros y que además
exista una mayor posibilidad de destacar, ahora bien, veamos cómo podemos
asegurar esto.
“El profesor Vidal
Alonso Secades, de la Facultad de Informática de La Universidad Pontificia de
Salamanca, afirma que las definiciones de calidad están orientadas a las
facilidades que ofrece el software una vez esté terminado, éste debe contener
las siguientes capacidades:
- Fiabilidad: Capacidad de operar sin errores.
- Modificable: Capacidad de hacer los cambios necesarios de una forma sencilla.
- Comprensible: Capacidad de comprender el software operativo, de cara a un cambio o arreglo.
- Rendimiento: Velocidad en y compacidad del software.
- Utilizable: Capacidad del uso sencillo del software.
- Probable: Capacidad de construir y ejecutar fácilmente los casos de prueba.
- Portable: Capacidad de mover el software fácilmente de un entorno de trabajo a otro. “
López A. M.,
Cabrera, C. & Valencia, L. E (2008). Introducción a la calidad de software.
Scientia Et Technica. Recuperado de: http://www.redalyc.org/articulo.oa?id=84920503058
Aunque
también considero importantes las siguientes cualidades:
- Exactitud: Capacidad de acercarse al valor real sin la existencia de fallos.
- Robustez: Capacidad de reaccionar de una manera adecuada ante situaciones imprevistas.
- Extensibilidad: Facilidad de adaptación del software a nuevos requisitos o cambios en la especificación
- Reutilización: Es el proceso de creación de sistemas de software a partir de un software existente
- Compatibilidad: De acuerdo a WordReference es la adecuación o capacidad de un equipo informático para funcionar junto con otro.
- Eficiencia: Capacidad para realizar o cumplir adecuadamente una función.
- Funcionalidad: De acuerdo a WordReference es el conjunto de características que hacen que algo sea práctico y utilitario
- Puntualidad: De acuerdo a WordReference es la característica de lo que se produce en el momento adecuado o acordado
Podemos
concluir que es muy importante tener en cuenta estas características independientemente
del modelo de calidad que elijamos pues son un importante factor para
diferenciar nuestro software de otros y así asegurar el éxito y más ahora que vivimos
en un mundo globalizado y la competitividad siempre está presente.
Bibliografía
Prendes, M. P.
& Amorós, L. (2001) Accesibilidad en
aplicaciones informáticas. Santiago de Compostela. Universidad de Montemorelos.
López A. M.,
Cabrera, C. & Valencia, L. E (2008). Introducción a la calidad de software.
Scientia
Et Technica. Recuperado de: http://www.redalyc.org/articulo.oa?id=84920503058
Palazzolo, C. (2005) Calidad de
Software. Software Facultad de Informática, Ciencias de la Comunicación y
Técnicas Especiales. Recuperado de: http://noqualityinside.com/nqi/nqifiles/CalidadDeSW_diap.pdf
Fillottrani, P. R. (2007) Calidad en el
Desarrollo de Software, Ciencias e Ingeniería de la Computación. Recuperado de:
http://www.cs.uns.edu.ar/~prf/teaching/SQ07/clase6.pdf
lunes, 30 de marzo de 2015
¿Qué es la calidad?
Hemos escuchado varias
veces la palabra "calidad ", incluso nos han llegado a pedir que
trabajemos teniendo en cuenta dicho término pero ¿Qué es realmente la calidad?
En este trabajo daré
mi punto de vista sobre lo que yo entiendo sobre ella teniendo en cuenta las
muchas definiciones que existen.
La calidad Según el
Diccionario de la Real Academia de la Lengua Española (RAE), es la “propiedad o
conjunto de propiedades inherentes a algo, que permiten juzgar su valor”. Analizando
varias definiciones tanto de filósofos como de griegos pude darme cuenta que realmente todos llegaban
a lo siguiente “Un objeto presentará calidad siempre y cuando satisfagan las necesidades de los clientes
para su uso o consumo o cuando cumplan ciertos requerimientos ya establecidos.
Yo pienso que en
realidad la calidad es algo subjetivo ya que ésta está relacionada con las
percepciones de cada persona y además la calidad como término tiene muchos
usos.
“La calidad puede referirse a la
calidad de vida de las personas de un país, la calidad del agua que bebemos o
del aire que respiramos, la calidad del servicio prestado por una determinada
empresa, o la calidad de un producto en general.
"Existe también el control de calidad, la garantía de calidad y la gestión de calidad son conceptos que están relacionados con la calidad en la industria y los servicios. Estos conceptos se utilizan en diversas áreas a través de indicadores de calidad, como los estándares o normas de calidad, por ejemplo, ISO 9000, ISO 14000, y otros, definidos por la Organización Internacional de Normalización desde 1947."
"Una visión actual del concepto de calidad indica que calidad es entregar al cliente no lo que quiere, sino lo que nunca se había imaginado que quería y que una vez que lo obtenga, se dé cuenta que era lo que siempre había querido."“Significado de Calidad” (s/f.). En Significados.com. Disponible en: http://www.significados.com/calidad/ [Consultado: 29 de marzo de 2015, 11:02 am].
"Existe también el control de calidad, la garantía de calidad y la gestión de calidad son conceptos que están relacionados con la calidad en la industria y los servicios. Estos conceptos se utilizan en diversas áreas a través de indicadores de calidad, como los estándares o normas de calidad, por ejemplo, ISO 9000, ISO 14000, y otros, definidos por la Organización Internacional de Normalización desde 1947."
"Una visión actual del concepto de calidad indica que calidad es entregar al cliente no lo que quiere, sino lo que nunca se había imaginado que quería y que una vez que lo obtenga, se dé cuenta que era lo que siempre había querido."“Significado de Calidad” (s/f.). En Significados.com. Disponible en: http://www.significados.com/calidad/ [Consultado: 29 de marzo de 2015, 11:02 am].
Aunque al principio puede generar un poco de risa el significado anterior creo es el que mejor define a la calidad pues siempre será aquello que supere nuestras expectativas.Por lo tanto, analizando lo anterior es difícil proponer una definición pero nos podemos dar cuenta de que para afirmar que algo tiene calidad debemos medirlo de alguna forma así que podemos decir que la calidad es la cualidad de un servicio o producto que además de cumplir con ciertos requerimientos o necesidades puede dar un extra pero ésta dependerá de la persona o estándar que la mida.
Bibliografía
- Filip Vermeulen. (2012). El origen de la palabra calidad, su concepto y su aplicación de Blogger Sitio web: http://calidadfuerza4.blogspot.mx/2012/08/origen-de-la-palabra-calidad.html
- Antonio Oriol Martín Martín. (2012). ¿Qué es la Calidad? de queaprendemoshoy Sitio web: http://queaprendemoshoy.com/%C2%BFque-es-la-calidad-i-%C2%BFpor-que-este-concepto-%E2%80%9Csuena-tan-bien%E2%80%9D/
- (2013) Significado de Calidad de Significados Sitio Web: http://www.significados.com/calidad/
Suscribirse a:
Entradas (Atom)