martes, 18 de septiembre de 2007
La usabilidad en el software
La usabilidad es la cualidad que tiene un sistema por la que permite a sus usuarios alcanzar objetivos específicos como lo es escribir una carta con efectividad, eficiencia y satisfacción. Es decir, que cuanto mejor permita hacer algo un sistema mayor usabilidad tendrá. Si el sistema ayuda a que el usuario cometa los menos errores o se recupera de ellos fácilmente, si permite hacer la tarea lo más rápidamente posible y además el usuario queda satisfecho con la labor realizada, el sistema tiene una buena usabilidad.
El concepto en torno al cual gravita la usabilidad es la calidad de uso. No se trata de pelearse con el ordenador para conseguir que haga lo que uno quiere sino todo lo contrario; el objetivo es que el sistema esté diseñado como una herramienta que encaja con la forma de trabajar del usuario y le permite realizar aquello que éste pretende hacer lo mejor posible.
Prueba de usabilidad
Las pruebas de usabilidad son una forma de medir que tan bien puede una persona usar un objeto hecho por el hombre, como puede ser una página Web una interfaz de usuario, un documento o un dispositivo.
Las pruebas de usabilidad consisten en seleccionar a un grupo de usuarios de una aplicación y solicitarles que lleven a cabo las tareas para las cuales fue diseñada, en tanto el equipo de diseño, desarrollo y otros involucrados toman nota de la interacción, particularmente de los errores y dificultades con las que se encuentren los usuarios.
No es necesario que se trate de una aplicación completamente terminada, pudiendo tratarse de un prototipo.
Métricas de Usabilidad
Exactitud: Número de errores cometidos por los sujetos de prueba y si estos fueron recuperables o no al usar los datos o procedimientos adecuados.
Tiempo requerido para concluir la actividad.
Recuerdo: Qué tanto recuerda el usuario después de un periodo sin usar la aplicación.
Respuesta emocional: Cómo se siente el usuario al terminar la tarea (bajo tensión, satisfecho, molesto).
Calidad en el software
La calidad en el software es el conjunto de propiedades y de características de un producto o servicio, que le confieren aptitud para satisfacer las necesidades explícitas o implícitas (ISO 8402).
Los estándares que se siguen a partir de los años ochentas.
-Mercado competitivo y de oferta
-Precio de venta fijado por el mercado
-Planificación y medida de la calidad. Modelos de calidad.
-Afecta a todos los departamentos.
-1980. Interés por la calidad en los EEUU. TQM
-1987. Premio Malcom Baldrige Quality Award
-1987. ISO 9000. A partir de las normas británicas
-1992. Premio Europeo a la calidad de la EFQM.
Los estándares actuales de calidad.
-Impacto estratégico. Oportunidad de ventaja competitiva.
-Planificación, fijación de objetivos, coordinación, formación, adaptación de toda la organización.
-Afecta a la sociedad en general: directivos, trabajadores, clientes.
-“Una filosofía, una cultura, una estrategia, un estilo de gerencia de la empresa”.
-ISO 9001:2000
domingo, 16 de septiembre de 2007
Etapa de pruebas
La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además, esta etapa implica:
· Verificar la interacción de componentes.
· Verificar la integración adecuada de los componentes.
· Verificar que todos los requisitos se han implementado correctamente.
· Identificar y asegurar que los defectos encontrados se han corregido antes de entregar el software al cliente.
· Diseñar pruebas que sistemáticamente saquen a la luz diferentes clases de errores, haciéndolo con la menor cantidad de tiempo y esfuerzo.
La prueba no es una actividad sencilla, no es una etapa del proyecto en la cual se asegura la calidad, sino que la prueba debe ocurrir durante todo el ciclo de vida: podemos probar la funcionalidad de los primeros prototipos; probar la estabilidad, cobertura y rendimiento de la arquitectura; probar el producto final.
Lo que conduce al principal beneficio de la prueba: proporcionar una comunicación mientras hay todavía tiempo y recursos para hacer algo.
La prueba es un proceso que se enfoca sobre la lógica interna del software y las funciones externas. La prueba es un proceso de ejecución de un programa con la intención de descubrir un error. Un buen caso de prueba es aquel que tiene alta probabilidad de mostrar un error no descubierto hasta entonces. Una prueba tiene éxito si descubre un error no detectado hasta entonces.
La prueba no puede asegurar la ausencia de defectos; sólo puede demostrar que existen defectos en el software.
Tipos de Pruebas
Pruebas de unidad
La prueba de unidad se centra en el módulo. Usando la descripción del diseño detallado como guía, se prueban los caminos de control importantes con el fin de descubrir errores dentro del ámbito del módulo. La prueba de unidad hace uso intensivo de las técnicas de prueba de caja blanca.
Prueba de integración
El objetivo es coger los módulos probados en la prueba de unidad y construir una estructura de programa que esté de acuerdo con lo que dicta el diseño.
Hay dos formas de integración:
Integración no incremental: Se combinan todos los módulos por anticipado y se prueba todo el programa en conjunto.
Integración incremental: El programa se construye y se prueba en pequeños segmentos.
En la prueba de integración el foco de atención es el diseño y la construcción de la arquitectura del software.
Las técnicas que más prevalecen son las de diseño de casos de prueba de caja negra, aunque se pueden llevar a cabo unas pocas pruebas de caja blanca.
Matriz de Pruebas
Este artefacto consiste en una matriz que representa las relaciones entre los casos de uso y las pruebas.
Esta matriz contiene la identificación del caso de uso, escenario, caso de prueba, tipo de prueba y ciclo de prueba. Cabe destacar que con herramientas automatizadas se pueden realizar matrices de dichas relaciones.
Integración del proyecto
La producción, tiene como una de sus funciones permitir la traducción de las especificaciones técnicas del producto en procedimientos y secuencias de producción, minimizando la ejecución inadecuada o incompleta de esas especificaciones. Los proyectos de producción, cuyo objetivo principal es el de integrar el proyecto y la obra, presenta soluciones adecuadas para mejorar los procesos de ejecución de una determinada actividad constructiva.
La manera tradicional de proyectar una obra es, que una etapa del proceso continúa al termino de otra y así sucesivamente originando una secuenciación de actividades y una falta de integración y retroalimentación de dicho proceso. El gran fracaso de esta mera forma de proyectar es la falta de comunicación y coordinación de las actividades
martes, 11 de septiembre de 2007
ALGUNOS CONCEPTOS
¿Qué es un compilador?
Programa que traduce instrucciones escritas en un lenguaje de alto nivel, a un lenguaje de máquina.
Aplicación informática que se usa para crear programas en un cierto lenguaje de programación y convierte los programas creados en un lenguaje de programación al lenguaje interno del ordenador código máquina. En los compiladores, todo el programa original llamado fuente se convierte a código máquina en bloque, y el programa resultante que es llamado programa ejecutable se puede en otro ordenador usar sin necesidad de recurrir otra vez al compilador.
¿Qué es un editor de texto?
Programa utilizado para crear y manipular archivos de textos; lenguaje fuente de un programa, listado de nombres y direcciones.
Estos programas se diferencian de los procesadores de textos porque no disponen de características elaboradas de formato e impresión tales como alineado automático, negritas, fuentes tipográficas, cuerpos. Por ejemplo el Bloc de notas de Windows es un editor de texto.
¿Qué es un parseo?
Proceso de analizar una secuencia de símbolos a fin de determinar su estructura gramatical con respecto a una gramática formal dada. Formalmente es llamado análisis de sintaxis. Un parser es un programa de computación que lleva a cabo esta tarea.El parseo transforma una entrada de texto en una estructura de datos usualmente un árbol, que es apropiada para ser procesada. Generalmente los parsers primero identifican los símbolos de la entrada y luego construyen el árbol de parseo para esos símbolos
¿Qué es un depurador o debug?
Debug es un editor y ensamblador, es un intérprete que trabaja en tiempo real
¿Qué es código fuente?
El código fuente es un texto escrito generalmente por una persona que se utiliza como base para generar otro código con un compilador o intérprete para ser ejecutado por una computadora.
Conjunto de instrucciones escritas en un lenguaje específico, en la forma de un fichero de texto, que es convertido a un programa directamente ejecutable en la computadora.
¿Qué es código objeto?
Se llama código objeto en programación al código resultante de la compilación del código fuente, por lo general está codificado en código de máquina y distribuido en varios archivos resultantes de la compilación de cada archivo de código fuente. Para obtener un archivo ejecutable se han de enlazar todos los archivos de código fuente con un programa llamado enlazador ó linker.
¿Qué es una librería?
En computación, una biblioteca es un conjunto de procedimientos y funciones agrupadas en un archivo con el fin de ser aprovechadas por otros programas. Al proceso de hacer accesibles estos subprogramas al programa principal se le llama enlace (link).
¿Qué es código binario (ejecutable)?
Lenguaje en el cual toda la información es representada por secuencias de ceros y unos
¿Qué es IDE?
IDE: Entorno integrado de desarrollo: un entorno desde el que se pueden editar programas, compilarlos y depurarlos (Integrated Development Environment).
¿Qué es QA?
Se refieren a todas las cosas buenas que nos gustaría ver en nuestro producto. Nosotros construimos un producto de calidad y aseguramos su calidad manteniendo calidad en mente todo el tiempo y realizando las actividades seleccionadas abajo; en otras palabras es un control de calidad.
¿Qué es un ligador o linker?
Un enlazador es un programa que toma los ficheros de código objeto generado en los primeros pasos del proceso de compilación, la información de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza código objeto con biblioteca con lo que finalmente produce un fichero ejecutable
viernes, 7 de septiembre de 2007
Implementación en un ciclo de vida en el software
El ciclo de vida del prototipo involucra el desarrollo de un modelo funcional. Debe realizarse la documentación de los requerimientos del usuario, además se crean escenarios para la construcción de prototipos.
Evaluar la petición del software y determinar si es o no un buen candidato a prototipo y dado un proyecto candidato aceptable, el analista desarrolla una representación abreviada de los requerimientos.
Después de revisar la representación de requerimientos se crea unas especificaciones de diseño abreviadas. El software del prototipo se crea prueba y refina; una vez que el prototipo ha sido probado, se presenta al cliente, el cuál conduce la prueba de la aplicación y sugiere modificaciones.
martes, 28 de agosto de 2007
Algunas Definiciones
Metodología de ingeniería del software
En principio comenzaré por decir que la metodología, dentro de la ingeniería de software se encarga de elaborar estrategias de desarrollo de software que promuevan prácticas adoptativas en vez de predictivas; centradas en las personas o los equipos, orientadas hacia la funcionalidad y la entrega, de comunicación intensiva y que requieren implicación directa del cliente.
Ya mencionado a lo que se refiere con metodología del software a continuación remencionan algunas:
Estrategias metodológicas
-Clase magistral, para los temas correspondientes a fundamentación teórica.
-Ejercicios desarrollados en clase, para comprensión y aplicación de los temas.
-Lecturas de elementos teóricos que permitan la crítica y generen la duda acerca de las formas de evaluación.
Estrategias evaluativas
-A través de tareas de aplicación y medición de algoritmos.
-Elaboración de casos de medición para un modelo desarrollado.
-Aplicación de los aspectos de calidad (ISO), para la dar fiabilidad en el productoterminado.
-Consultas de elementos adicionales y algoritmos de alto desempeño para cubrir aspectos necesarios en la calidad del software.
En conclusión podemos decir que las metodologías de desarrollo de software son un conjunto de procedimientos, técnicas y ayudas a la documentación para el desarrollo de productos software. Las técnicas indican cómo debe ser realizada una actividad técnica determinada identificada en la metodología. Combina el empleo de unos modelos o representaciones gráficas junto con el empleo de unos procedimientos detallados. Se debe tener en consideración que una técnica determinada puede ser utilizada en una o más actividades de la metodología de desarrollo de software. Además se debe tener mucho cuidado cuando se quiere cambiar una técnica por otra.
Ciclo de vida de software
El ciclo de vida de un sistema de información es un enfoque por fases del análisis y diseño que sostiene que los sistemas son desarrollados de mejor manera mediante el uso de un ciclo especifico de actividades del analista y del usuario.
En otras palabras ciclo de vida del software se le llama al conjunto de las fases empleadas para la realización del mismo.
Elementos de un ciclo de vida
Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por tareas planificables de manera que lo que conceptualmente se considera una misma fase se pueda ejecutar más de una vez a lo largo de un proyecto, recibiendo en cada pasada de ejecución aportaciones de los resultados intermedios que se van produciendo (realimentación).
A continuación se presenta los distintos elementos que integran un ciclo de vida:
Fases: Una fase es un conjunto de actividades relacionadas con un objetivo en el desarrollo del proyecto. Se construye agrupando tareas (actividades elementales) que pueden compartir un tramo determinado del tiempo de vida de un proyecto.
Cuanto más grande y complejo sea un proyecto, mayor detalle se necesitará en la definición de las fases para que el contenido de cada una siga siendo manejable.
De esta forma, cada fase de un proyecto puede considerarse un “micro-proyecto” en sí mismo, compuesto por un conjunto de micro-fases.
Otro motivo para descomponer una fase en subfases menores puede ser el interés de separar partes temporales del proyecto, requiriendo distintos procesos de gestión.
Cada fase viene definida por un conjunto de elementos observables externamente, como son las actividades con las que se relaciona, los datos de entrada (resultados de la fase anterior, documentos o productos requeridos para la fase, experiencias de proyectos anteriores), los datos de salida (resultados a utilizar por la fase posterior, experiencia acumulada, pruebas o resultados efectuados) y la estructura interna de la fase.
Entregables: Son los productos intermedios que generan las fases. Pueden ser materiales (componentes, equipos) o inmateriales (documentos, software). Los entregables permiten evaluar la marcha del proyecto mediante comprobaciones de su adecuación o no a los requisitos funcionales y de condiciones de realización previamente establecidos. Cada una de estas evaluaciones puede servir, además, para la toma de decisiones a lo largo del desarrollo del proyecto.
Dentro de cada fase general de un modelo de ciclo de vida, se pueden establecer una serie de objetivos y tareas que lo caracterizan.
Fase de definición (¿qué hacer?)
o Estudio de viabilidad.
o Conocer los requisitos que debe satisfacer el sistema (funciones y limitaciones de contexto).
o Asegurar que los requisitos son alcanzables.
o Formalizar el acuerdo con los usuarios.
o Realizar una planificación detallada.
Fase de diseño (¿cómo hacerlo? Soluciones en coste, tiempo y calidad)
o Identificar soluciones tecnológicas para cada una de las funciones del sistema.
o Asignar recursos materiales para cada una de las funciones.
o Proponer (identificar y seleccionar) subcontratas.
o Establecer métodos de validación del diseño.
o Ajustar las especificaciones del producto.
Fase de construcción
o Generar el producto o servicio pretendido con el proyecto.
o Integrar los elementos subcontratados o adquiridos externamente.
o Validar que el producto obtenido satisface los requisitos de diseño previamente definidos y realizar, si es necesario, los ajustes necesarios en dicho diseño para corregir posibles lagunas, errores o inconsistencias.
Fase de mantenimiento y operación
o Operación: asegurar que el uso del proyecto es el pretendido.
o Mantenimiento (nos referimos a un mantenimiento no habitual, es decir, aquel que no se limita a reparar averías o desgastes habituales -este es el caso del mantenimiento en productos software, ya que en un programa no cabe hablar de averías o de desgaste)
Programación Extrema
La Programación Extrema es una de las llamadas Metodologías Ágiles de desarrollo de software más exitosas de los tiempos recientes.
En un equipo de programación extrema hay una división fundamental entre los roles del cliente y el programador. El Cliente es dueño del “qué se obtiene” y el programador es dueño del “cuánto cuesta”.
El Cliente decide:
-Alcance lo que el sistema debe hacer.
-Prioridad qué es lo más importante.
-Composición de las entregas qué debe estar en la entrega para que sea útil.
-Fechas de las entregas para cuándo se necesitan las entregas.
El Programador decide:
-Tiempo estimado para agregar una característica.
-Consecuencias técnicas, el Programador explica las consecuencias de las decisiones técnicas, pero el Cliente es quien toma la decisión.
-El proceso, cómo trabajará el equipo.
-Cronograma detallado dentro de la iteración.
PSP Este proceso está basado en la revisión de cada etapa del ciclo de desarrollo de software, de esta manera se logra incorporar disciplina en el proyecto.
TSP Este proceso se enfoca en la administración estructural de un grupo, así como los requerimientos del producto a desarrollar, basándose en las mejores y más actuales prácticas de la industria.
RUP Este proceso diseñado por La Rational Software Corporation describe como desarrollar software efectivamente usando técnicas comerciales empleando únicamente los procesos necesarios.
SCRUMEs una metodología ágil para el desarrollo de software enfocándose fuertemente en la parte del control empírico de procesos de software en lugar de los procesos ya definidos.
UML Es el lenguaje de modelado de sistemas de software más conocido en la actualidad; aún cuando todavía no es un estándar oficial, está apoyado en gran manera por la OMG (Object Management Group), industria de cómputo que promueve la interoperabilidad orientada a objetos entro los entornos de computacionales.
¿Qué es software?
Software: también conocido como programático y aplicación informática- es la parte lógica del ordenador, esto es, el conjunto de programas que puede ejecutar el hardware para la realización de las tareas de computación a las que se destina. Es el conjunto de instrucciones que permite la utilización del equipo.