Introducción
El presente trabajo describe los enunciados sobre estándares de calidad calidad en el diseño de algoritmos y construcción de programas, describiendo los conceptos sobre esta materia que permitan obtener conocimiento para el uso o aplicación de técnicas o herramientas en las exigencias de la vida moderna que requieren buscar nuevos modelos y sistemas que nos permitan ser más eficaz y eficiente. En el transcurso de los años el software se ha vuelto cada vez más complicado, el incremento en la potencia de los ordena dores, la aparición de modernos dispositivos y tecnologías ha generado la necesidad de nuevos sistemas operativos y aplicaciones de mayor complejidad. De manera que esta complejidad ha traído consigo la demanda de nuevos métodos y herramientas que nos ayuden en la construcción de este software.
Introducción de estándares de calidad Calidad término utilizado que ha adquirido gran relevancia con el paso del
tiempo, considerada como uno de los principales activos con los que se cuenta un desarrollador para mejorar su posición competitiva global. Conseguir calidad en el software es esencial, de manera manera que se utilicen modelos y métodos apropiados para controlar el proceso de desarrollo. Todo tipo de Software, requiere que los analistas, diseñadores y desarrolladores apliquen características y elementos de calidad para lograr productos que se adapten a las necesidades de los usuarios, el uso eficiente y eficaz de los recursos informático informáticoss debe involucrar involucrar elementos que produzcan soluciones como la planeación, la administración, y la utilización de métodos que permitan un software de calidad. Mediante la planeación se determinan los recursos necesarios para el desarrollo de un proyecto, la factibilidad del mismo y el tiempo estimado de desarrollo; a través de la administración se controla, evalúa y corrige la dirección de acuerdo a la contingencias y demás elementos que van presentándose durante su desarrollo y mediante mediante una metodología se b usca lograr el acople de los participantes y la garantía de una determinada calidad. Para evaluar un software en su calidad debe ser eficaz, debe ser amigable, producir resultados confiables, realizar todas las operaciones que se requieran ejecutar las operaciones en un tiempo aceptado, ser amigable y de fácil uso por el grupo de usuarios a quien este dirigido. Eficiente, en el sentido que su costo en el desarrollo y uso obtengan el máximo beneficio o condiciones aceptables en un tiempo establecido tanto para los desarrolladores como las organizaciones involucradas, además de considerar otros aspectos fundamentales como son: solidez, exactitud, completitud, mantenibilidad, reutilizabilidad, claridad en la documentación entre otros. La influencias sobre standares de calidad se basan sobre las ideas presentadas por Robert Dunn, Philip Crosby y Roger S. Pressman , referente a que la calidad del software se toma desde dos puntos de vista: la calidad en el proceso de desarrollo y la calidad en el producto final, a grupándose en los standares de confiabilidad, utilizabilidad, mantenibilidad y adaptabilidad según Pressman la calidad del software es ³la concordancia con los requerimientos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se espera de todo software desarrollado profesionalmente´ .
A continuación se presentan los factores de calidad sobre las bases presentadas por Robert Dunn, Philip Crosby y Roger S. Pressman: Pressman: Confiabilidad: Este término es necesario sea separado en varios elementos que
permiten darle al software el matiz de fiable. Sus componente son: Completitud Consistencia y precisión Solidez Simplicidad y y y y
y y
Calidad en los procesos de desarrollo
Seguridad y Verificabilidad, estas dos últimas que se determinan con el sistema en uso.
Usabilidad: Si bien es cierto que la confiabilidad es un factor muy importante en la calidad del software también lo es el hecho de que es necesario considerar otros factores como los que se mencionan en esta sección puesto que de nada sirve un software que funcione correcta y confiablemente si el usuario prefiere no utilizarlo. Exactitud de los procesos Claridad y exactitud de la documentación Completitud Eficiencia y verificabilidad del software Claridad y amigabilidad de la interfaz y y y y y
Mantenibilidad: Este aspecto de calidad involucra los elementos que simplifican la labor de prevención, corrección o ampliación del código del programa. Retomar un código escrito meses antes es un trabajo dispendioso y agobiante, en especial cuando las aplicaciones no cuentan con la característica a la cual aquí se hace referencia. Se pueden considerar considerar c omo atributos de este aspecto Exactitud y claridad en la documentación Modularidad acoplamiento Facilidad de lectura Simplicidad y y y y
Portabilidad: Es la capacidad que posee un sistema de información que le permite funcionar en diferentes plataformas ya sean hardware o de software. A continuación se describen cada uno de los aspectos de calida d mencionados: Calidad en los procesos de desarrollo. Se resume en la frase "bien planeado y cuidadosamente ejecutado". Este aspecto asegura la confiabilidad, puesto que el plan que se realice para desarrollar el sistema, debe incluir pruebas bien seleccionadas seleccio nadas que evalúen la confiabilidad del programa en cualquier situación. interfaz : De igual forma la interfaz debe ser clara clara Claridad y amigabilidad de la interfaz y agradable al usuario, las interfaces complejas son causa de la no utilización de los sistemas de información. Claridad y exactitud de la documentación: Hay que anotar que toda aplicación requiere de una documentación suficientemente clara con el fin de que cualquier persona con conocimientos básicos en computación pueda aprender la forma de operación sin que requiera la asesoría de los desarrolladores o conocedores de la herramienta, a menos que se trate de eventualidades donde realmente sea necesario consultar al proveedor. Completitud o adecuación: Se refiere a que los resultados de operaciones sean
acordes al comportamiento del mundo real desde todos los estados y condiciones permitidos por la aplicación, es decir, el programa debe reflejar la realidad. Un Un programa es inconsistent inconsistente e si presenta resp uestas erróneas en algunos casos. Una mala especificación de rangos en un dominio sobre los cuales realizan diferentes operaciones matemáticas puede llevar a que algunos
cálculos se realicen dentro de límites inapropiados, obteniéndose resultados erróneos. Otro caso de inconsistencia se presenta cuando ocurren eventos que paran abruptamente la ejecución del programa, sólo un sistema de calidad podrá conservar datos consistentes después de una falla. Eficiencia y verificabilidad del software: Otro aspecto que no debe pasar por alto es el de la verificabilidad, puesto que es imprescindible contar con los requerimientos, y sobre todo en aquellos sistemas donde se obtengan resultados que no sean visibles. Exactitud de los procesos: Un programa no será utilizado por un usuario si sus resultados no son exactos. Tampoco se puede garantizar el uso de un programa que no presta las utilidades que el usuario requiere, es decir, que sea incompleto. Además, un programa ineficiente que no cumpla con los requerimientos de tiempo, memoria o flexibilidad no podrá satisfacer las expectativas de quienes lo utilizan. Robustez o solidez: Se refiere a la capacidad del software de defenderse de las acciones anormales que llevan al sistema a un estado no deseado o por lo menos no previsto, causando un comportamiento inesperado, indeseado y posiblemente erróneo. El software de hoy, debe estar en capacidad de analizar los datos que recibe para hacer cumplir requerimientos o condiciones del software y enfrentar de la mejor manera los errores cometidos por un usuario al utilizar la aplicación. Es importante resaltar, que la solidez no siempre es generada por la digitación inapropiada del usuario, sino también por un mal procesamiento o un mal encadenamiento de procesos. El resultado de un proceso, aunque sea correcto, puede estar fuera de los límites permitidos en los parámetros del módulo que lo recibe y si este módulo no controla los parámetros que le entran caerá en un estado inesperado. Seguridad y auditabilidad: Son importantes, puesto que un usuario no puede confiar en los datos de un sistema que no le ayude a controlar el acceso de personas no autorizadas o a detectar errores de operación en los que se introducen y generan datos erróneos. Simplicidad: Promueve la utilización de estructuras de fácil manipulación con el fin de evitar que el programador se aleje del problema que desea resolv er. Además, se reduce la probabilidad de cometer errores. Así que, no es aconsejable hacer uso de estructuras complejas a menos que se necesite cumplir con requerimientos de vital importancia tales como tiempos máximos de proceso u otros similares. Forma de Trazabilizar un Algoritmo
La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su eficacia y velocidad.
Para la realización de un algoritmo se deben seguir los siguientes pasos: . Se debe escribir escribir de arriba hacia abajo, de izquierda a derecha. 2. Siempre se se utilizan flechas verticales y horizontales. 3. Cada paso expresa una acción concreta De igual manera se sigue una secuencia en el flujo normal en su desarrollo: . Un inicio 2. Una lectura o entrada de datos. 3. Procesamiento de datos. 4. Una salida de información. 5. Un final. Formas y Técnicas de Documentar Algoritmos y programas
Documentar el código de un programa es añadir suficiente información como para explicar lo que hace, punto por punto, de forma que no sólo los ordenadores sepan qué hacer, sino que además los humanos entiendan qué están haciendo y por qué. Porque entre lo que tiene que hacer un programa y cómo lo hace hay una distancia impresionante: todas las horas que el programador ha dedicado a pergeñar una solución y escribirla en el lenguaje que corresponda para que el ordenador la ejecute ciegamente. Documentar un programa no es sólo un acto de buen hacer del programador por aquello de dejar la obra rematada. Es además una necesidad que sólo se aprecia en su debida magnitud cuando hay errores que reparar o hay que extender el programa con nuevas capacidades o adapta adapta rlo a un nuevo escenario. Hay dos reglas que no se deben olvidar nunca: . todos los programas tienen errores y descubrirlos sólo es cuestión de tiempo y de que el programa tenga éxito y se utilice frecuentemente. 2. todos los programas sufren modificaciones a lo largo de su vida, al menos todos aquellos que tienen éxito. Por una u otra razón, todo programa que tenga éxito será modificado en el futuro, bien por el programador original, bien por otro programador que le sustituya. Pensando en esta revisión de códi go es por lo que es importante importante que el programa se entienda: para poder repararlo y modificarlo. ¿Qué hay que documentar? Hay que añadir explicaciones a todo lo que no es evidente. o hay que repetir lo que se hace, sino explicar por qué se hace. El algoritmo trata de resolver problemas mediante programas. Fases: y
y
y y y
Análisis preliminar o evaluación del problema: Estudiar el problema en general y ver que parte nos interesa. Definición o análisis del problema: Ver que es lo que entra y que es lo que sale, las posibles condiciones o restricciones. Diseño del algoritmo: Diseñar la solución. El programa: Codificación del algoritmo en un lenguaje de programación. Ejecución del programa y las pruebas: Ver si el programa hace lo que queríamos.
Un algoritmo es una fórmula para resolver un problema. Es un conjunto de acciones o secuencia de operaciones que ejecutadas en un determinado orden resuelven el problema. Existe n algoritmos, hay que coger el más efectivo. Características: Tiene que ser preciso. Tiene que estar bien definido. Tiene que ser finito. La programación es adaptar el algoritmo al ordenador. El algoritmo es independiente según donde lo implemente. y y y
RESOLUCIÓN DE PROBLEMAS: La resolución de un problema desde el punto de vista algorítmico tiene 3 fases: Análisis del problema: Comprensión. Diseño del algoritmo: Resolución algorítmica. Resolución en computadora: Implantación del algoritmo en un lenguaje de programación. y y y
ANÁLISIS DEL PROBLEMA: El objetivo de ésta fase es comprender el problema para lo cual como resultado tenemos que obtener la especificación de las entradas y salidas del problema. Tiene que quedar claro que entra y que sale. DISEÑO DEL ALGORITMO: Una vez comprendido el problema problema se trata de determinar qué pasos o acciones tenemos que realizar para resolverlo. Como criterios a seguir a la hora de dar la solución algorítmica hay que tener en cuenta: Si el problema es bastante complicado lo mejor es dividirlo en partes más pequeñas e intentar dividirlo en partes más pequeñas e intentar resolverlas por separado. Esta metodología de ³divide y vencerás´ también se conoce con el nombre de diseño descendente. Las ventajas de aplicar esto son: Al dividir el problema en módulos o partes se comprende más fácilmente. Al hacer modificaciones es más fácil sobre un módulo en particular que en todo el algoritmo. En cuanto a los resultados, se probarán mucho mejor comprobando si cada módulo da el resultado correcto que si intentamos probar de un golpe todo el programa porque si se produce un error error sabemos en que módulo ha sido. Una segunda filosofía a la hora de diseñar algoritmos es el refinamiento por pasos, y es partir de una idea general e ir concretando cada vez más esa descripción hasta que tengamos algo tan concreto para resolver. Pasamos de lo más complejo a lo más simple. y
y y
y
y
La representación de los algoritmos: Una vez que tenemos la solución hay que implementarla con alguna representación. Las representaciones más usadas usadas son los los flujo gramas, los diagramas NS y el pseudocódigo. También la solución se puede escribir en algunos casos en lenguaje natural pero no se hace porque es muy ambiguo, e incluso otras formas de expresión como fórmulas matemáticas. Escritura del algoritmo: Al escribir el algoritmo hay que tener en cuenta: Las acciones o pasos a realizar tienen que tener un determinado orden. En cada momento solo se puede ejecutar una acción. Dentro de las sentencias del algoritmo pueden existir palabras reservadas palabras propias del lenguaje de programación programación que tienen para el compilador compilador un determinado determinado significad significado o. Si estamos utilizando pseudocódigo tenemos también que usar la identación aumenta la legibilidad del problema problema para que se pueda leer mej ejor or . y y y
y
RESOLUCIÓN EN LA COMPUTADORA: Es hacer entender nuestro algoritmo algoritmo a la computad ora para que lo pueda hacer. Codificamos el algoritmo en un leguaje de programación. Ejecutar el programa antes compilado. Comprobar los resultados y si no funciona, corregirlo. y y y
FLUJOGRAMAS: Es una notación gráfica para implementar algoritmos. Se basa en la utilización de unos símbolos gráficos que denominamos cajas, en las que escribimos las acciones que tiene que realizar el algoritmo. Las cajas están conectadas entre sí por líneas y eso nos indica el orden en el que tenemos que ejecutar las acciones. En todo algoritmo siempre habrá una caja de inicio y otra de fin, para el principio y final del algoritmo. Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan u na acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados .
CONCLUSION
En el cumplimiento de las tareas realizadas, estamos en la capacidad de interpretar lo referente a estándares en la aplicación eficiente en la calidad del diseño de algoritmos y construcción de programas, de manera que los analistas, diseñadores y desarrolladores puedan aplicar estos elementos para que se logren productos adaptados a las necesidades del usuario. Cabe destacar que para desarrollar un algoritmo conocido el problema se deben tomar una serie de pasos o acciones para resolverlo y tener cuidado a la hora de documentarlo, en este sentido se requiere ser eficiente y eficaz en la aplicación de calidad para el desarrollo de programas.