estandares de calidad en el diseño de algoritmos (autoguardado)
DESCRIPTION
espero que lo disfruntennn y que sea de mucha ayudaaTRANSCRIPT
![Page 1: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/1.jpg)
República Bolivariana de VenezuelaMinisterio de Poder Popular para la Educación Superior
Universitaria Misión SucreAldea: Ciudad Angostura Trayecto I Trimestre I
Unidad Curricular: Introducción a la Programación
Profesora:
Liceda. Ingris Manaure
Participante:
Br. Luis Daniel Oronoz
Ciudad Bolívar, Junio de 2011
![Page 2: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/2.jpg)
ESTÁNDARES DE CALIDAD EN DISEÑO DE ALGORITMO Y CONSTRUCCIÓN
DE PROGRAMAS.
Introducción a los estándares de calidad.
Han surgidos muchas incógnitas y preguntas acerca de como diseñar y construir algoritmos y
utilizando los elementos de un lenguaje de programación. La investigación en esta área ha
permitido manifestar un grupo de procedimientos de diseño los cuales sirven para la realización de
muchos algoritmos. Es un instrumento básico para una propiedad inherente de
cualquier cosa que permita que esta sea comprobada con la misma especie a
excepción de cualquier tipo de software que se va a desarrollar sea de sistema.
La palabra cantidad tiene variados significados. El estándar (GPRS) (General
packet radio service) es una apreciación del estándar GSM, y por ello es que en
algunos casos se denomina GSM++ o GSM2+ dado que es un estándar de
teléfono de segunda generación que permite una evolución hacia la o tercera
generación el estándar GPRS por lo habitual se conoce como 25G.
Se han realizado algunas investigaciones respecto a la necesidad de diseñar
algoritmos correctos y eficientes utilizando los elementos de un lenguaje de
programación. El acto de diseñar un algoritmo puede considerarse como una tarea
que difícilmente podrá ser del todo automatizada. Es decir que todo problema
algorítmico resulta inmediato de resolver, otros son bastante complejos. La
investigación en esta área ha permitido descubrir un conjunto de métodos o
esquemas de diseño hacia los cuales puede orientarse la realización de muchos
algoritmos.
No obstante, idear un algoritmo continúa siendo una labor bastante creativa
donde los conocimientos y la experiencia del propio diseñador tienen un papel
fundamental.
Una forma de facilitar esta labor consiste en recurrir a técnicas conocidas de
diseño de algoritmos, es decir, a esquemas muy generales que pueden adaptarse
a un problema particular al detallar las partes generales del esquema, requiere un
![Page 3: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/3.jpg)
análisis minucioso del problema de forma que la solución se vaya construyendo en
etapas. Aun así, hay problemas cuya solución no puede hallarse sino mediante un
proceso de búsqueda, a pesar de lo complejas que son las operaciones. Por
último, Si el hábil programador dispone de un recetario de algoritmos de donde
poder seleccionar el más adecuado para cada problema, su tarea se simplifica.
Aprender los principios básicos del diseño de algoritmos podemos
preguntarnos por un método aceptable. El mas entendido, y quizás el mejor, es
organizar el diseño sobre un esquema de algoritmo o una técnica de diseño que
haya demostrado su utilidad para otros problemas. Este método de trabajo es
practicable, puesto que existe un número reducido de esquema y técnicas de
diseño. El conocimiento de técnicas de diseño es solo un primer paso para el
diseñador, que debe completarse con otros conocimientos y, sobre todo, con la
experiencia.
Técnicas de Mantenimiento de Programas
El mantenimiento de software o manutención de software es una de las
actividades más comunes en la ingeniería de software, es el proceso de mejora y
optimización del software después de su entrega al usuario final (es decir; revisión
del programa), así como también corrección y prevención de los defectos.
El mantenimiento de software es también una de las fases en el ciclo de vida de
desarrollo de sistemas (SDLC, sigla en inglés de system development life cycle),
que se aplica al desarrollo de software. La fase de mantenimiento es la fase que
viene después del despliegue (implementación) del software en el campo.
La fase de mantenimiento de software involucra cambios al software en orden de
corregir defectos y dependencias encontradas durante su uso tanto como la
adición de nueva funcionalidad para mejorar la usabilidad y aplicabilidad del
software.
El mantenimiento del software involucra (pilines flic`s) varias técnicas específicas.
Una técnica es el rebajamiento estático, la cual es usada para identificar todo el
![Page 4: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/4.jpg)
código de programa que puede modificar alguna variable. Es generalmente útil en
la prefabricación del código del programa y fue específicamente útil en asegurar
conformidad para el problema del año 2000.
La fase de mantenimiento de software es una parte explícita del modelo en
cascada del proceso de desarrollo de software el cual fue desarrollado durante el
movimiento de programación estructurada en computadores. El otro gran modelo,
el Desarrollo en espiral desarrollado durante el movimiento de ingeniería de
software orientada a objeto no hace una mención explícita de la fase de
mantenimiento. Sin embargo, esta actividad es notable, considerando el hecho de
que dos tercios del coste del tiempo de vida de un sistema de software involucran
mantenimiento.
En un ambiente formal de desarrollo de software, la organización o equipo de
desarrollo tendrán algún mecanismo para documentar y rastrear defectos y
deficiencias. El Software tan igual como la mayoría de otros productos, es
típicamente lanzado con un conjunto conocido de defectos y deficiencias. El
software es lanzado con esos defectos conocidos porque la organización de
desarrollo en las utilidades y el valor del software en un determinado nivel de
calidad compensa el impacto de los defectos y deficiencias conocidas.
Las deficiencias conocidas son normalmente documentadas en una carta de
consideraciones operacionales o notas de lanzamiento (release notes) es así que
los usuarios del software serán capaces de trabajar evitando las deficiencias
conocidas y conocerán cuándo el uso del software sería inadecuado para tareas
específicas.
Con el lanzamiento del software (software release), otros defectos y deficiencias
no documentados serán descubiertas por los usuarios del software. Tan pronto
como estos defectos sean reportados a la organización de desarrollo, serán
ingresados en el sistema de rastreo de defectos.
Las personas involucradas en la fase de mantenimiento de software esperan
trabajar en estos defectos conocidos, ubicarlos y preparar un nuevo lanzamiento
![Page 5: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/5.jpg)
del software, conocido como un lanzamiento de mantenimiento, el cual resolverá
los temas pendientes.
Tipos de mantenimiento
A continuación se señalan los tipos de mantenimientos existentes, definidos tal y
como se especifican para la metodología de MÉTRICA:
• Perfectivo: son las acciones llevadas a cabo para mejorar la calidad interna
de los sistemas en cualquiera de sus aspectos: reestructuración del código,
definición más clara del sistema y optimización del rendimiento y eficiencia.
• Evolutivo: son las incorporaciones, modificaciones y eliminaciones
necesarias en un producto software para cubrir la expansión o cambio en las
necesidades del usuario.
• Adaptativo: son las modificaciones que afectan a los entornos en los que el
sistema opera, por ejemplo, cambios de configuración del hardware, software de
base, gestores de base de datos, comunicaciones, etc.
• Correctivo: son aquellos cambios precisos para corregir errores del
producto software.
Cabe señalar que, de estos 4 tipos de mantenimiento, solamente el correctivo y el
evolutivo entran en el ámbito de MÉTRICA versión 3, ya que los otros dos
requieren actividades y perfiles distintos a los del proceso de desarrollo.
• Modelo de Madurez y Capacidad del mantenimiento
• Fragilidad del software
• Gestión de Proyectos
• Fases del desarrollo de software
Es importante tener en cuenta el efecto del Iceberg, es decir , en el momento en el
que se le hace mantenimiento a un Software no se cuenta muchas veces con el
![Page 6: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/6.jpg)
factor económico (¿Cuánto dinero se invertirá en el mantenimiento?), y una vez se
comienza a desarrollar la fase de mantenimiento en la aplicación, comienzan a
surgir nuevos requerimientos, el efecto del iceberg (en la superficie se ve solo una
parte de lo que realmente es su tamaño).
Dentro de la ingeniería del software se proporcionan soluciones técnicas que
permiten abordar el mantenimiento de manera que su impacto en coste dentro del
ciclo de vida sea menor. Las soluciones técnicas pueden ser de tres tipos:
1. Ingeniería inversa: Análisis de un sistema para identificar sus componentes y
las relaciones entre ellos, así como para crear representaciones del sistema en
otra forma o en un nivel de abstracción más elevado.
2. Reingeniería: Modificación de un producto software, o de ciertos
componentes, usando para el análisis del sistema existente técnicas de ingeniería
inversa y, para la etapa de reconstrucción, herramientas de ingeniería directa, de
tal manera que se oriente este cambio hacia mayores niveles de facilidad en
cuanto a mantenimiento, reutilización, comprensión o evolución.
3. Reestructuración del software: Cambio de representación de un producto
software, pero dentro del mismo nivel de abstracción.
El objetivos de estas técnicas es proporcionar métodos para reconstruir el
software, ya sea reprogramándolo, redocumentándolo, rediseñándolo, o
rehaciendo alguna/s característica/s del producto. La diferencia entre las
soluciones descritas radica en cuál es el origen y cuál es el destino de las mismas
(producto inicial y/o producto final).
La Ingeniería directa corresponde al desarrollo del software tradicional. La
Ingeniería Inversa es el proceso de análisis de un sistema para identificar sus
componentes e interrelaciones y crear representaciones del sistema en otra forma
o a un nivel más alto de abstracción. La Reingeniería es el examen y la alteración
de un sistema para reconstruirlo de una nueva forma y la subsiguiente
![Page 7: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/7.jpg)
implementación de esta nueva forma. La Reestructuración es la modificación del
software para hacerlo más fácil de entender y cambiar.
La reingeniería hace referencia a un ciclo, esto es, se aplican técnicas de
ingeniería inversa para conseguir representaciones de mayor abstracción del
producto y sobre ellas se aplican técnicas de ingeniería directa para rediseñar o
reimplementar el producto.
Cualquiera de estas técnicas se puede aplicar a lo largo de todas las fases del
ciclo de vida o bien entre algunas de sus fases.
También existen otras tecnologías, como por ejemplo:
* La remodularización: consiste en cambiar la estructura modular de un sistema
de forma que se obtenga una nueva estructura siguiendo los principios del diseño
estructurado.
* Análisis de la facilidad de mantenimiento: normalmente la mayor parte del
mantenimiento se centra relativamente en unos pocos módulos del sistema.
* Visualización: el proceso más antiguo para la comprensión del software.
* Análisis y mediciones: son importantes tecnologías que estudian ciertas
propiedades de los programas.
Formas de trazabilizar un algoritmo
Algunas consideraciones pueden contribuir a mejorar la calidad de los
algoritmos y programa mediante la reducción del número de errores que aparecen
al desarrollarlos. También influyen haciendo que nuestros algoritmos resulten más
fáciles de leer y entender para otras personas. Los criterios de estilo pueden
reflejarse en un conjunto de normas de estilo de codificación. Ello asegura que
tanto algoritmos como programa resulten legibles y puedan modificarse fácilmente
en caso de necesidad. Generalmente, estas normas de estilo se dirigen hacia
aspectos como la forma de construir los nombres de variables o tipo de datos que
aparezcan.
![Page 8: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/8.jpg)
Formas y técnicas de documentar algoritmos y programas
La documentación
Un programa de computadora necesita siempre de una documentación que
permita a los usuarios aprender a utilizarlos y mantenerlo, la documentación del
programa se puede concretar a manual del usuario y manual de mantenimiento.
Manual del usuario
La documentación de un programa suele producirse con dos propósitos, el
primero seria explicar las funciones del software y describir el modo de utilizarlas
estas está diseñado para ser leídas por el usuario del programa y la segunda
describir el software en si para poder mantener el sistema en una etapa posterior
de su ciclo de vida.
La documentación de usuario es un instrumento muy importante. Una buena
documentación de usuario hará al programa más accesible.
El manual de usuario debe contener los siguientes puntos.
Ordenes necesarias para cargar el programa en memoria desde el
almacenamiento secundario y comenzar su funcionamiento.
Nombres de los archivos externos a los que accede el programa.
Formato de todos los mensajes de error o informes.
Opciones en el funcionamiento del programa.
Descripción detallada de la función realizada por el programa.
Descripción detallada de cualquier salida producida por el programa
Manual de mantenimiento
El manual de mantenimiento es la documentación requerida para mantener un
programa durante su ciclo de vida. Se divide en dos categorías, documentación
interna y documentación externa.
Documentación interna
![Page 9: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/9.jpg)
Esta documentación cubre los aspectos del programa relativos a la sintaxis de
lenguaje.
Esta documentación está contenida en los comentarios entre llaves, paréntesis
o asteriscos. Algunos temas a considerar son:
Cabecera de programa (breve descripción del programa)
Nombres significativos para describir identificadores.
Comentarios relativos a la función del programa.
Claridad de estilo y formato, líneas en blanco para separa módulos.
Comentarios significativos.
Documentación externa
Documentación ajena al programa fuente, que se suele incluir en un manual
que acompaña al programa. Esta documentación debe incluir:
Listado actual del programa fuente.
Especificación del programa.
Diagrama de estructura que representa la organización jerárquica de los
módulos que comprenden el programa.
Explicaciones de formulas complejas
Especificación de los datos a procesar.
Formatos de pantallas utilizados para interactuar con los usuarios
Cualquier indicación especial que pueda servir a los programadores que
deben mantener el programa
Reglas de documentación Un programa bien documentado es aquel que otras
personas pueden leer, usar y modificar. Existe muchos tipos de documentación y
con frecuencia los temas a incluir dependen del programa. A continuación
señalamos algunas características esenciales de documentación de un programa
![Page 10: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/10.jpg)
Un comentario de cabecera para el programa que incluye:
Descripción del programa.
Autor y fecha.
Descripción de la entrada y salida del programa.
Descripción de cómo utilizar el programa.
Hipótesis sobre tipos de datos esperados.
Breve descripción de los algoritmos globales y estructurados de datos.
Descripción de las variables importantes.
Otra de las formas para trazabilidad un algoritmo es a través del diagrama de
flujos son las representaciones graficas de los pasos precisos para la solución
algorítmica de un problema y para su diseño se utilizan distintivos o figuras que
representan un ejercicio adentro del procedimiento.
A la hora de realizar un Diagrama de Flujo deben seguirme ciertos pasos que
ayudan a resolver un determinado problema algorítmico:
» Se debe trazar de arriba hacia abajo y de izquierda a derecha.
» Siempre debe utilizarse flechas horizontales u verticales.
» Cada paso debe expresar una acción concreta.
También corresponde efectuar una secuencia de flujos normales que deben
cumplirse tales como, un inicio, una lectura o entrada de datos, procesamiento de
datos, salida de información y un final. Los flujo gramas cuentan con ventajas y
desventajas en el período de utilización.
Ventajas:
Veloz comprensión de las relaciones.
Análisis de las diferentes secciones del programa.
![Page 11: estandares de calidad en el diseño de algoritmos (Autoguardado)](https://reader036.vdocuments.co/reader036/viewer/2022082809/5571fb4e49795991699481a5/html5/thumbnails/11.jpg)
Puede usarse como modelo de trabajo en el diseño de un nuevo programa
o sistema.
Enriquece la comunicación con el usuario.
Permite la documentación adecuada de los programas.
Excelente codificación de los programas.
Depuración y pruebas ordenadas de los programas.
Desventajas:
Cuando estamos en presencia de diagramas complejos y detallados
pueden resultar laboriosos en su planteamiento y diseño.
Las acciones a seguir tras salida de un símbolo de decisión pueden ser
difíciles de seguir sin existen más caminos de lo contemplado.
Se puede decir que con la investigación realizada hay aspectos muy importantes e interesantes
que hay que resaltar como la necesidad del mundo por ayudar a programadores a mejorar la
calidad e integridad del software. Y una forma de trazabilidad y perfeccionar los algoritmos con
respecto a la creación de programas y puedan cambiarse fácilmente en caso de necesidad, y otros
aspectos que surgen en la creación de los algoritmos.