Sei sulla pagina 1di 9

Introducción

El presente trabajo describe los enunciados sobre estándares de 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 ordenadores, 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 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áticos debe 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 una metodología se busca
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, agrupá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:

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
 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

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 como atributos de este aspecto
 Exactitud y claridad en la documentación
 Modularidad acoplamiento
 Facilidad de lectura
 Simplicidad

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 calidad
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 que evalúen la confiabilidad del
programa en cualquier situación.

Claridad y amigabilidad de la interfaz: De igual forma la interfaz debe ser clara


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 programa es inconsistente si presenta respuestas 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 resolver.
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 representar un algoritmo, antes de ser convertido a lenguaje de
programación, se utilizan algunos métodos de representación escrita, grafica, o
matemática. Los más conocidos son:

Lenguaje Natural
Pseudocódigo
Diagramación libre (Diagramas de Flujo)

Lenguaje Natural: Conocido también como lenguaje binario, en el único que


entiende la computadora digital, pues es su lenguaje natural en el cual solo se
pueden utilizar dos símbolos: el cero (0) y el uno (1).

Pseudocódigo: Es un lenguaje de programación algorítmico, es un lenguaje


intermedio entre el lenguaje natural y cualquier lenguaje de programación
especifico como el Fortran, Pascal, etc. El Pseudocódigo describe un algoritmo
utilizando una mezcla de frases en lenguaje común, instrucciones de
programación y palabras clave que definen las estructuras básicas. Su objetivo
es permitir que el programador se centre en los aspectos lógicos de la solución
a un problema.

Diagrama de Flujo: Son representaciones graficas de los pasos necesarios que


conllevan a la solución algorítmica de un problema. Son conocidos también
como Ordinogramas el cual representa de manera grafica, el orden de los
pasos o acciones de un algoritmo. Para diseñarlos se utilizan determinados
símbolos o figuras que representan una acción dentro del procedimiento. Estos
símbolos se han normalizado o estandarizado para representar los pasos del
algoritmo, cada paso se representa a través del símbolo adecuado, que van
uniendo con flechas, denominadas líneas de flujo, que a su vez indican el
orden en que los pasos deben ser ejecutados.

Los símbolos más utilizados para diseñar flujo gramas tenemos los siguientes:

Dirección del
Salida a Flujo de Datos
pantalla

Decisión
Inicio/Fin Conector

Conector
Salida por Fuera de
Proceso
Impresora Pagina
Para la realización de un algoritmo se deben seguir los siguientes pasos:
1. Se debe escribir de arriba hacia abajo, de izquierda a derecha.
2. Siempre 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:
1. 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 adaptarlo a un nuevo
escenario. Hay dos reglas que no se deben olvidar nunca:
1. 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ódigo es por lo que es 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.
No hay que repetir lo que se hace, sino explicar por qué se hace.
El algoritmo trata de resolver problemas mediante programas.

Fases:
 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.

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.

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 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 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.
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 son 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 que tienen
para el compilador un determinado significado).
 Si estamos utilizando pseudocódigo tenemos también que usar la
identación (aumenta la legibilidad del problema para que se pueda leer
mejor).

RESOLUCIÓN EN LA COMPUTADORA:

Es hacer entender nuestro algoritmo a la computadora 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.

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