05 julio 2015
01 julio 2015
18 junio 2015
Estimación de un libro de 100 cuartillas
Libro de 100 cuartillas
Promedio de pulsaciones por hoja: 17450 pph
Promedio de pulsaciones por hoja: 17450 pph
Estimación de tiempo efectivo: 51.63 min
10 junio 2015
08 junio 2015
Base de datos, proceso de mejora
Proceso de mejora: Al inicio comencé a escribir el código del jsp a mano en el cuaderno hasta comprender las funciones y para recordar los pasos en general que se deben de seguir, una vez que sentí que estaba bien asimilado el código, comencé a realizar códigos en la computadora con diferentes ejemplos pero con un formato semejante. Al inicio realicé cada una de las actividades de m anera aislada para posteriormente unirlas y realizar la tarea completa de un altas en un jsp con su base de datos y html.
02 junio 2015
28 abril 2015
Proceso de mejora continua
La finalidad de este proceso es que, al final de cada
siclo, se logren identificar las posibles mejoras que se pueden implementar en
el futuro. Se buscan procesos más rápidos y eficientes de producción de
productos y servicios.
También abarca la actualización, un cambio constante
de las actividades ya que la necesidades también cambian con el transcurso del
tiempo y el desarrollo de tecnologías.
Debe existir una planeación del proyecto,
posteriormente se debe implementar el proyecto y, durante el proceso, verificar
las actividades y posibles mejoras, es ahí donde se busca una mejora por mínima
que sea. Antes de implementar un cambio
en el proyecto se debe hacer una estimación de todos posibles escenarios que puede
haber y de ahí se considera si es conveniente realizar ese cambio o replantearse
el cambio de mejora.
La importancia de este proceso es que la organización
tiene más herramientas para un ambiente competitivo ya que se vuelve más
productivo y tiene más posibilidades de ofrecer productos y servicios de
calidad ya que cumple con una de las condiciones básicas del proceso de calidad
que es la mejora continua.
Sin embargo, es importante destacar que la mejora no
es únicamente de un solo proceso, si no que los cambios deben buscarse en todo
el proceso ya que llega a haber una distorsión de los objetivos y se pierde la
visión del proyecto. Esto conlleva a que todos los integrantes del proyecto
deben participar y estar al tanto de los cambios del proceso.
Es recomendable documentar los cambios que se llevan a
cabo para no perder los objetivos generales y, si llega a existir alguna falla
en el proceso, identificar los posibles errores. Para identificar las mejoras
se debe identificar la métrica que se implementará para registrar los cambios
de la manera más objetiva posible.
Se concluye que este proceso requiere tiempo para
visualizar los beneficios que se logran y debe existir experiencia de los
integrantes y esto se logra únicamente con práctica y tiempo. Todos los procesos son importantes para poder
garantizar que existe una mejora continua y la comunicación en equipo es
importante para agilizar este aspecto.
Fuentes:
http://www.guiadelacalidad.com/modelo-efqm/mejora-continua
http://www.eoi.es/blogs/mariavictoriaflores/definicion-de-mejora-continua/
Modelos de calidad de software
CMMI Capability
Maturity Model Integration
Modelo de calidad que clasifica empresas en nivele de calidad. Los
niveles sirven para conocer la madurez de los procesos que realizan para
producir software. Se toma el conocimiento
situado en la organización.
Consta de cinco niveles:
Inicial o Nivel 1:
Empresas que no llevan a cabo procesos de planeación de proyectos.
No hay control sobre el estado del proyecto.
Repetible o Nivel 2:
El proyecto es controlado en el desarrollo y se pueden repetir los resultados
obtenidos.
Se implementan los siguientes procesos:
·
Gestión de requisitos
·
Planificación de proyectos
·
Gestión de proveedores
·
Aseguramiento de la calidad
·
Gestión de la configuración.
Definido o Nivel 3:
El proceso para desarrollar proyectos ya está definida, está establecida, documentada y se pueden
medir datos objetivos para desarrollar objetivos concretos.
Se implementa:
·
Desarrollo
de requisitos
·
Solución de 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 información
·
Gestión de riesgos
·
Análisis y resolución de toma de decisiones
Cuantitativamente Gestionado o
Nivel 4:
Se usan objetivos medibles para alcanzar las necesidades de los clientes
y la organización del proyecto.
Se implementan estos procesos:
- Gestión cuantitativa de proyectos
- Mejora de los procesos de la organización
Optimizado o Nivel 5:
Su objetivo es la mejora de las actividades realizadas en el transcurso
del proyecto. Las mejoras son incrementales e innovan los procesos que son
identificados gracias a las métricas que son antes identificadas, han pasado
por un proceso de evaluación y son puestas en práctica. Está muy relacionado
con el Nivel 4.
Los procesos son:
- Innovación organizacional
- Análisis y resolución de las causas
PSP: PEROSNAL
SOFTWARE PROCESS
Permite mejorar la forma en la que se construyen software. Considera
aspectos de planeación, calidad, estimación de costos y productividad.
Se basa en la estimación de dichos aspectos, permite sabe cuánto y cómo
se desarrollan las tareas de un proceso. Sus características principales es que
se basa en métricas y estimaciones que se utilizan para la evaluación y mejora
de procesos para así ser implementado en procesos futuros.
Durante cada proyecto el ingeniero debe generar un documento en donde se
registran todas las actividades realizadas, estos documentos llevan el nombre
de script los cuales son la base de este modelo de calidad.
TSP: TEAM SOFTARE PROCESS
Es un método de establecimiento de mejora para proyectos de desarrollo
de software.
Este modelo se desarrolla en equipos y ayuda a establecer sus objetivos,
planifica los procesos y se hace una revisión del trabajo con la finalidad de desarrollar
productos de calidad.
La organización del trabajo es la parte más importante de este modelo y
el ámbito en el que se desempeñan debe ser óptimo.
El marco que se implementa se combina con el modelo PSP, se realiza un
historial de actividades y se buscan las posibles mejoras de cada integrante
así como en conjunto.
Fuente:
21 abril 2015
Calidad del Software
Hipótesis
Si alguna característica de la
calidad del software es desequilibrada o no se implementa de manera correcta
con las demás, el software carecerá de ésta.
Argumentación
Exactitud
o
Es la base de un software
o
Es un factor externo que se logra a
través de los requerimientos funcionales del software y tiene que lograr sus
objetivos.
o
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.
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.
Robustez
La
robustez se define como la capacidad de responder ante algún evento que pueda
comprometer la funcionalidad de este en otras palabras es la capacidad de
responder ante sucesos inesperados.
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.
Este
es importante ya que si el software tiene exactitud, antes definido y pasa algo
fuera de estos, el sistema deja de funcionar
dañando el contenido que tenía; dejando su objetivo el cual es realizar
cualquier función, por lo mismo se convierte en un sistema inservible y sin
calidad.
Para
poder calificar la robustez se utiliza una determinada métrica o indicadores.
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."
Una
métrica propuesta por un compañero nuestro fue 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.
Robustez= #veces funcionó bien/#veces errores
que hayan ocurrido
En
mi opinión modificaría esta métrica como la división del número de veces en las
cuales fallo entre el número de veces en las cuales respondió bien ante esta
falla, va obteniendo mayor robustez mientras vaya aumentando el resultante.
Robustez=#veces
fallidas/#veces que respondió bien ante fallas
Fácil de Usar (Usabilidad)
Se define cómo la simplicidad con la que el usuario con sus
conocimientos y aptitudes conviven con el software de manera adecuada y
logrando un aprovechamiento del mismo. En otras palabras, que el esfuerzo y
entrenamiento del usuario sea solo el necesario para que este pueda interactuar
con el sistema de manera óptima y el proceso implementado sea el adecuado.
La usabilidad comienza desde la instalación hasta la aplicación del
sistema.
Este factor es importante cuando hablamos de calidad de software debido
a que al inicio el usuario debe tener una idea de cómo funciona el sistema, de
lo contrario, es muy complicado que lo siga implementando o que al utilizarlo
no logre aprovechar los alcances del sistema o incluso puede causar confusión y
frustración al usuario lo que provocaría que este dude de la calidad del
software. El programa debe considerar toda gama
de usuarios, desde los usuarios “principiantes” hasta los que tienen más
experiencia en la implementación del software. Al mismo tiempo se debe
considerar el siguiente principio “No pretendas que conoces al usuario; no lo
conoces” para que el sistema sea flexible ante cualquier tipo de usuario.
Se propuso la siguiente métrica:
Usabilidad = (Nivel de conocimiento del usuario)(Tiempo que tardó en
aprender a usar el software)
Portabilidad
Lo podemos definir
como la capacidad necesaria para trasladar el programa de un sistema
hardware-software a otro de una manera eficiente y efectiva, y con el número
mínimo de modificaciones.
Podemos decir que
se refiere a tener las capacidades de adaptar su software en el entorno
distinto, instalar el software y reemplazar atributos en el cambio de sistema,
pero sin contar aplicaciones distintas
del sistema.
Contextualización
Un sistema que se
encuentra en un local tiene la capacidad de ser instalado en otra computadora
con otro sistema operativo y con un pequeño esfuerzo en modificarlo debe ser
capaz de tener las mismas funciones iniciales.
Métrica
Una fórmula que
podemos ocupar para medir es:
Portabilidad
= 1 – (RM / RA)
Dónde: *RM son los recursos necesarios para
mover el sistema al nuevo entorno
*RA son los recursos necesarios
para adaptar el sistema en el nuevo entorno residente.
Extensibilidad
La
extensibilidad se define como la facilidad de adaptación del sistema hacia los
cambios de especificación, un ejemplo es cuando estás haciendo un tenga, con
tan solo un bloque que muevas se puede caer toda la torre, si lo trasladamos a
un software quiere decir que modifiques alguna cosa y cuando lo haces se cae
todo tu software es una clara muestra de que no cumple con la extensibilidad.
Como
en el ejemplo, es algo importante que debe tener un software, ya que vivimos en
un mundo que cambia constante mente y más si se trata de tecnología, y de
negocios; los cuales serán dedicados la mayoría de softwares.
Para
erradicar este problema una de las opciones es trabajar los softwares de manera
individual, como en POO (Programación Orientada a Objetos).
En
algunos textos dicen que los principios de extensibilidad son:
· Diseños simples( simple arquitectura)
· Descentralización (independientes)
Una
métrica que utilizaría para evaluar la extensibilidad sería:
Extensibilidad=
#modificaciones/#modificaciones bien respondidas
Compatibilidad
Se refiere a la capacidad del software para compartir o convivir con
otro sistema, que el programa sea capaz de compartir información con uno o más
sistemas que se encuentren en su mismo entorno mientras realiza las funciones
por la que es requerido. Para esto se requiere generalizar el programa y
homogenizar sus aspectos, con esto se logra que al juntarse no haya
discrepancia ante requerimientos específicos que impidan la convivencia.
Es casi imposible que existan sistemas aislados, por muy bueno que sea
un programa, si no puede convivir con el entorno en el que se encuentra, el
sistema no se podrá desarrollar como se fue requerido.
Se propuso la siguiente métrica:
Compatibilidad = Sistemas con los que es capaz de
trabajar en conjunto/1+Número de cambios en el sistema para interactuar
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 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.
Contextualización
Un software que
aplique la reutilización permite que el desarrollo sea más eficiente, incremente
su productividad y sea rápido, los tiempos se reducen y permite el avance en
algún otro aspecto del sistema como eficiencia, exactitud, etc.
Métrica
La reutilización
dentro de un sistema puede ser medida a través de una fórmula 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.
Ejemplo
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.
Funcionalidad
Se define como el
número de posibilidades que proporciona
un sistema.
En un software de
calidad se deben incluir solo la
característica necesaria para su diseño e implementación, por lo cual no se
deben de incluir funciones innecesarias que puedan complicar al usuario la implementación del sistema.
Contextualización
La calidad de
Software requiere esta característica debido a que si un sistema es
funcionarle, éste permite que se cumpla el objetivo de resolver una
problemática y no se desvíe por
“solucionar” otras.
Ejemplo
En el 2011,
Facebook actualización el muro, donde el usuario escribía o recibía
comentarios, cambiándolo a biografía, lo
que dificultó a muchos usuarios sus acciones en la red social, perdiendo su
funcionalidad.
Métrica
Características
|
SI
|
No
|
Cumple
con las funciones necesarias.
|
||
Tiene
el diseño necesario para que ser un software amigable.
|
||
Sus
métodos tienen el mínimo núm. de
errores o ninguno.
|
||
Sus
actualizaciones no afectan a la calidad de software.
|
Ecuación para
calcular la funcionalidad:
Funcionalidad=#métodos
* métrica aciertos/#errores
Eficiencia
La eficiencia se entiende como la
cantidad de recursos computacionales y de código requeridos por un producto de
software para llevar a cabo las funciones encomendadas, en otras palabras,
es la capacidad del software para hacer buen uso de los recursos de hardware
que manipula. El concepto de eficiencia puede ser confundido con eficacia en
ocasiones, pero se debe tener en cuenta que son dos significados distintos; la
eficiencia busca cumplir con la funcionalidad de la manera más “sutil” posible,
mientras que la eficacia solo se enfoca alcanzar el resultado esperado. La
eficiencia en un Software es imprescindible para la obtención del máximo
beneficio.
La métrica
propuesta para medir la eficiencia está dada por la siguiente ecuación:
Eficiencia
= resultados/recursos
Donde a su vez, los
recursos pueden ser definidos como:
recursos= memoria utilizada + tiempo
Por lo tanto, la ecuación que devuelve el valor de la
eficiencia es:
eficiencia= resultados/(memoria utilizada
+ tiempo empleado)
En términos más
vanos, se refiere al uso de los recursos involucrados en la realización de una
meta, o más específicamente a la relación entre los recursos aplicados y el
resultado obtenido. Cuando decimos por ejemplo: "Él es una persona
eficiente" queremos manifestar que hace su trabajo muy rápido, sin
demoras, es decir hace un buen uso del recurso tiempo con relación al
resultado. Este concepto de eficiencia se aplica a cualquier otro recurso,
siempre vinculado, por supuesto a un resultado definido. Al referirnos a la
eficiencia en el Software, implícitamente hace presencia el desempeño, siendo
casi sinónimos. Una actividad eficiente hace un uso óptimo de los recursos y,
por tanto, tiene el menor costo posible.
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 sí 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
A
manera de retomar el concepto, la calidad en el software se define como el
conjunto de cualidades que lo caracterizan y que determinan su utilidad y
existencia. Es necesario estar conscientes de que la calidad en el software es
medible, por lo tanto se establecen métricas para determinar esta cualidad,
además las métricas que se utilizan varían dependiendo de cada una de las características
la integran. Como se observó con anterioridad, para cada una de estas
cualidades se propusieron distintos criterios a evaluar, y cada uno de estos
era introducido en ecuaciones que arrojaban un rango de valores para los que la
calidad era aceptable. Tomando en cuenta lo anterior, podemos concluir que
todas estas características dependen una de la otra, es decir, si en algún
momento falta alguna o su valor es inferior al admisible,
todas las demás se verán afectadas en mayor o menor medida, dependiendo de la
correlación que exista entre ellas. En adición, es recomendable tener en cuenta
tanto la obtención de la calidad como su control durante todas las etapas del
ciclo de vida del software, ya que desperfectos posteriores podrían causar
graves daños y costos extra de reparación.
Suscribirse a:
Entradas (Atom)