estandares de calidad en el diseño de algoritmos (autoguardado)

16
República Bolivariana de Venezuela Ministerio de Poder Popular para la Educación Superior Universitaria Misión Sucre Aldea: Ciudad Angostura Trayecto I Trimestre I Unidad Curricular: Introducción a la Programación Profesora: Liceda. Ingris Manaure Participante: Br. Luis Daniel Oronoz

Upload: daniel-oronoz

Post on 05-Jul-2015

649 views

Category:

Documents


2 download

DESCRIPTION

espero que lo disfruntennn y que sea de mucha ayudaa

TRANSCRIPT

Page 1: estandares de calidad en el diseño de algoritmos (Autoguardado)

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)

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)

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)

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)

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)

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)

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)

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)

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)

            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)

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.