SlideShare ist ein Scribd-Unternehmen logo
1 von 16
ALGORÍTMICA Y
PROGRAMACIÓN
Unidad 2:
Estándares de Calidad en el
Diseño de Algoritmos y
Construcción de Programas
2.1.- Estándares de Calidad
Distinguir las reglas prácticas
para el diseño y construcción de
algoritmos y programas con
calidad y eficiencia
Profa. Yenny Salazar
Contenido
o Calidad de Software
o Estándares de Calidad de Software
o Principios de Diseño de Sistemas de Software
• Modularidad mediante diseño descendente.
• Abstracción y ocultamiento de la información.
• Modificabilidad.
• Comprensibilidad y fiabilidad.
• Interfaces de usuario.
• Programación segura contra fallos.
• Facilidad de uso.
• Eficiencia.
• Estilo de programación.
• Depuración.
• Documentación.
o Modelos de Calidad del Software (MCS).
o Generalidades.
o Actividades.
o Referencias.
Calidad de Software
La calidad del software es un concepto complejo que no es
directamente comparable con la calidad de la manufactura de
producto. Los productos de software se han convertido hoy en
día en uno de los principales objetivos estratégicos de las
organizaciones debido a que, los procesos más importantes de
las organizaciones, y por lo tanto su supervivencia, dependen
del buen funcionamiento de los sistemas de software.
El significado de la palabra calidad genera mucha confusión,
quizás por la multidimensionalidad del propio concepto. por lo
anterior el glosario de estándares de computación IEEE Std.
610 – 1991, define la calidad del
software como “el grado con el que
un sistema, componente o proceso
cumple los requerimientos
especificados y las necesidades
o expectativas del cliente o
usuario”.
Los estándares de calidad de software hacen parte de la
ingeniería de software, utilización de estándares y metodologías
para el diseño, programación, prueba y análisis del software
desarrollado, con el objetivo de ofrecer una mayor confiabilidad
y mantenibilidad, en concordancia con los requisitos exigidos,
con esto se eleva la productividad y el control en la calidad de
software, parte de la gestión de la calidad se orienta a mejorar
su eficacia y eficiencia.
Los estándares definen un conjunto de criterios que guían la
forma en que se aplican procedimientos y metodologías al
software desarrollado, la certificación de calidad
permite una valoración independiente de la
organización, donde se demuestra la capacidad
de desarrollar productos y servicios de
calidad.
Estándares de Calidad de Software
Principios de Diseño de Sistemas de Software
El diseño de sistemas de software de calidad requiere el
cumplimiento de una serie de características y objetivos. En un
sentido general, los objetivos a conseguir que se consideran
útiles en el diseño de sistemas incluyen al menos los siguientes
principios:
1. Modularidad mediante diseño descendente.
2. Abstracción y ocultamiento de la información.
3. Modificabilidad.
4. Comprensibilidad y fiabilidad.
5. Interfaces de usuario.
6. Programación segura contra fallos.
7. Facilidad de uso.
8. Eficiencia.
9. Estilo de programación.
10.Depuración.
11.Documentación.
1. Modularidad mediante diseño descendente:
La descomposición del problema se realiza a través de un
diseño descendente que a través de niveles sucesivos de
refinamiento se obtendrán diferentes módulos. Normalmente los
módulos de alto nivel especifican qué acciones han de realizarse
mientras que los módulos de bajo nivel definen cómo se realizan
las acciones.
oConstrucción del programa: La descomposición de un
programa en módulos permite que diversos programadores
trabajen de modo independiente en cada uno de sus módulos.
oDepuración del programa: Se facilita esta tarea al centrarse en
la depuración de pequeños programas más fáciles de verificar.
oLegibilidad: Los programas modulares son más fáciles de leer.
oEliminación de código redundante: Permite identificar
operaciones que suceden en muchas partes diferentes del
programa y para implementarlos como subprogramas. Esto
significa que el código de una operación aparecerá sólo una vez,
produciendo como resultado un aumento en la legibilidad y
modificabilidad.
Principios de Diseño de Sistemas de Software
2. Abstracción y ocultamiento de la información:
La idea es definir una parte de un sistema de modo que puede
ser comprendido por sí mismo (como una unidad) sin conoci-
miento de sus detalles específicos y sin conocimiento de cómo
se utiliza esta unidad a un nivel más alto.
Existen dos tipos de abstracciones: procedimental y de datos.
oProcedimental: es aquella en que se separa el propósito de un
subprograma de su implementación. La modularidad y la
abstracción procedimental se complementan entre sí.
oDe Datos: su propósito es aislar cada estructura de datos y
sus acciones asociadas.
Otro principio de diseño es la ocultación de la información. Su
propósito es hacer inaccesible ciertos detalles que no afecten a
los otros módulos del sistema.
La abstracción identifica los aspectos esenciales de módulos y
estructura de datos, que se pueden tratar como cajas negras,
asegurando que ninguna otra caja negra pueda acceder a estos
detalles ocultos.
Principios de Diseño de Sistemas de Software
3. Modificabilidad:
Se refiere a los cambios controlados de un sistema dado. Un
pequeño cambio en los requisitos en un programa modular
normalmente requiere un cambio pequeño sólo en algunos de
sus módulos. La modularidad aísla las modificaciones.
El uso de procedimientos tiene la ventaja de eliminar código
redundante, y hacer al programa más modificable.
4. Comprensibilidad y fiabilidad.
Un sistema se dice que es comprensible si refleja directamente
una visión natural del mundo.
Una característica de un sistema eficaz es la simplicidad. En
general, un sistema sencillo puede ser comprendido más
fácilmente que uno complejo.
Un objetivo importante en la producción de sistemas es el de
la fiabilidad. El objetivo de crear programas fiables ha de ser
crítico en la mayoría de las situaciones.
Principios de Diseño de Sistemas de Software
5. Interfaces de usuario:
En un entorno interactivo se ha de tener en cuenta las
preguntas posibles al usuario y sobre todo aquellas que
solicitan entradas de usuario. Es conveniente que se realicen
eco de las entradas de un programa. Siempre que un programa
lee datos, bien de usuario a través de un terminal o de un
archivo, el programa debe incluir los valores leídos en su salida.
Etiquetar la salida con cabeceras y mensajes adecuados.
6. Programación segura contra fallos:
Un programa es seguro contra fallos cuando se ejecuta
razonablemente por cualquiera que lo utilice. Para conseguir
este objetivo se han de comprobar los errores en datos de
entrada y en la lógica del programa.
7. Facilidad de uso:
Se refiere a la utilidad del sistema, esta propiedad ha de
tenerse presente en todas las etapas del ciclo de vida, pero es
vital en la fase de diseño e implementación.
Principios de Diseño de Sistemas de Software
8. Eficiencia:
Su objetivo es hacer un uso óptimo de los recursos del
programa, lo cual implica recursos de tiempo y espacio. Un
sistema eficiente es aquel cuya velocidad es mayor con el menor
espacio de memoria ocupada. En tiempos pasados los recursos
de memoria principal y de CPU eran factores claves a considerar
para aumentar la velocidad de ejecución. Hoy día debe existir
un compromiso entre legibilidad, modificabilidad y eficiencia,
aunque, con excepciones, prevalecerá la legibilidad y facilidad
de modificación.
9. Estilo de programación:
Requiere de unas reglas de escritura, que buscan que los
programas, no sólo sean legibles y modificables por quienes los
han construido, sino también puedan ser leídos y modificados
por otros programadores.
Las reglas de estilo para construir programas claros, legibles y
fácilmente modificables dependerá del tipo de programación y
lenguaje.
Principios de Diseño de Sistemas de Software
10. Depuración:
Un programa es correcto sólo si se producen resultados
correctos para todas las entradas válidas posibles. El proceso de
eliminar errores -bugs- se denomina depuración de un
programa.
Cuando el compilador detecta un error, la computadora visua-
liza un mensaje, que indica que se ha producido un error y cuál
puede ser la causa posible del mismo. No obstante, los mensa-
jes de error son con frecuencia, difíciles de interpretar y son a
veces engañosos.
Los errores de programación se pueden dividir en tres clases:
errores de compilación (sintaxis), errores en tiempo de ejecución
y errores lógicos.
Principios de Diseño de Sistemas de Software
11. Documentación:
Un programa (paquete de software) de computadora necesita
siempre de una documentación que permita a sus usuarios
aprender a utilizarlo y mantenerlo. Se produce para dos fines,
uno para explicar las características del software y describir
cómo utilizarlo; y el otro para describir la composición interna
del mismo, de modo que el sistema pueda ser mantenido a lo
largo de su ciclo de vida.
La primera se denomina documentación del usuario y la
segunda documentación del sistema.
La documentación del usuario está diseñada para ser leída
por el usuario del software, tiende a ser no técnica.
La documentación del sistema es más técnica, uno de sus
componentes es la versión fuente de todos los programas del
sistema, para lo que se requiere un buen uso de la sintaxis y de
la gramática del lenguaje de programación. Así mismo se
requiere seguir convenios de notación, indentación, estándares
para los nombres de variables, constantes, objetos, clases, etc.
Principios de Diseño de Sistemas de Software
Modelos de Calidad del Software (MCS)
Son aquellos documentos que integran la mayor parte de las
mejores prácticas, proponen temas de administración en los que
cada organización debe hacer énfasis, integran diferentes
prácticas dirigidas a los procesos clave y permiten medir los
avances en calidad.
Esto permite evaluar el sistema, bien sea cualitativa o
cuantitativamente, y de acuerdo con esta evaluación
la organización podrá proponer e implementar estrategias
que permitan la mejora del proceso dentro de las etapas de
análisis, diseño, desarrollo y pruebas del software.
Los modelos de calidad de software se clasifican de acuerdo
con el enfoque de evaluación, ya sea a nivel de
proceso, producto o calidad en uso.
Generalidades
El desarrollo de un buen producto software se realiza durante
el ciclo de vida. Razón por la cual, los aspectos relacionados con
la calidad deben tomarse en cuenta desde que se tiene la idea
principal del sistema hasta la entrega del producto final.
Diferentes herramientas ayudan al programador a escribir
códigos de calidad, como lo son: el diseño descendente, la
modularidad, la abstracción, la ocultación de información, entre
otros. Durante la fase de diseño, la abstracción es uno de los
medios más importantes con los que se intenta hacer frente
a la complejidad; así como el uso de lenguajes modernos, los
cuales facilitan la implementación de abstracciones de datos.
Gracias a los estándares de calidad para el desarrollo de
software se puede facilitar la realización de los proyectos,
haciéndolos más eficientes y más fáciles de desarrollar, para así
lograr satisfacer las necesidades del cliente.
Los estándares permite mejorar y unificar la forma en que se
trabaja y que el software desarrollado sea de calidad.
o Explicar brevemente el significado de los siguientes
términos:
• Ciclo de vida de desarrollo de sistemas.
• Ingeniería de software.
• Usuario.
• Caja negra.
o Establecer semejanzas y diferencias entre: programa,
sub-programas, módulos, rutinas y procedimientos.
o Describir y diferenciar entre errores de compilación
(sintaxis), errores en tiempo de ejecución y errores
lógicos.
o Investigar los enfoque de evaluación de un modelo de
calidad de software: a nivel de proceso, nivel de
producto y calidad en uso).
o Realizar un cuadro comparativos de los Modelos de
Calidad de Software: CMMI, PSP y ISO 15504.
Actividades
Corona, M. y Ancona M. 2011. Diseño de
algoritmos y su codificación en lenguaje C.
McGraw-Hill. México.
Joyanes, L. y Zahonero, I. 2002. Programación
en C. Metodología, algoritmos y estructura de
datos. McGraw-Hill.
Joyanes, L. 2008. Fundamentos de
Programación, Algoritmos, Estructura de
Datos y Objetos. Cuarta edición. McGraw-Hill.
López, J. Algoritmos y Programación. 2009.
Segunda Edición. Eduteka.
Referencias
Profa. Yenny Salazar

Weitere ähnliche Inhalte

Was ist angesagt?

Lpc++ fases para la creación de un programa
Lpc++ fases para la creación de un programaLpc++ fases para la creación de un programa
Lpc++ fases para la creación de un programaA Tenelema
 
EliDastaSoftware
EliDastaSoftwareEliDastaSoftware
EliDastaSoftwareElidaDasta
 
Ciclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWARECiclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWAREJ Martin Luzon
 
331161221 santaella u2-estandaresenedisenodealgoritmos
331161221 santaella u2-estandaresenedisenodealgoritmos331161221 santaella u2-estandaresenedisenodealgoritmos
331161221 santaella u2-estandaresenedisenodealgoritmosSol Hernández
 
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. Cristhian Martinez
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesmellcv
 
Herramientas de Desarrollo de Software
Herramientas de Desarrollo de SoftwareHerramientas de Desarrollo de Software
Herramientas de Desarrollo de SoftwareTe Amo Gabriel
 
Ciclo de vida del desarrollo de software
Ciclo de vida del desarrollo de softwareCiclo de vida del desarrollo de software
Ciclo de vida del desarrollo de softwareDiana Ortiz
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programazeta2015
 
Fundamentos de diseño de software
Fundamentos de diseño de softwareFundamentos de diseño de software
Fundamentos de diseño de softwareLuis Jesus Curbata
 
Diseño de componentes.
Diseño de componentes.Diseño de componentes.
Diseño de componentes.Annel D'Jesús
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de softwarenancyespe21
 
Ingeniería del-software
Ingeniería del-softwareIngeniería del-software
Ingeniería del-softwareAndrea Marge
 
Ingenieria de software basada en componentes -jeiner gonzalez blanco
Ingenieria de software basada en componentes  -jeiner gonzalez blancoIngenieria de software basada en componentes  -jeiner gonzalez blanco
Ingenieria de software basada en componentes -jeiner gonzalez blancoJeiner Gonzalez Blanco
 

Was ist angesagt? (20)

Lpc++ fases para la creación de un programa
Lpc++ fases para la creación de un programaLpc++ fases para la creación de un programa
Lpc++ fases para la creación de un programa
 
EliDastaSoftware
EliDastaSoftwareEliDastaSoftware
EliDastaSoftware
 
Ciclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWARECiclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWARE
 
Ciclodevida 1.1
Ciclodevida 1.1Ciclodevida 1.1
Ciclodevida 1.1
 
331161221 santaella u2-estandaresenedisenodealgoritmos
331161221 santaella u2-estandaresenedisenodealgoritmos331161221 santaella u2-estandaresenedisenodealgoritmos
331161221 santaella u2-estandaresenedisenodealgoritmos
 
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE. SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
SELECCIÓN DE TECNICAS DE INGENIERIA DE SOFTWARE.
 
Diccionario
DiccionarioDiccionario
Diccionario
 
Metodo de entrega
Metodo de entregaMetodo de entrega
Metodo de entrega
 
Software
SoftwareSoftware
Software
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
Herramientas de Desarrollo de Software
Herramientas de Desarrollo de SoftwareHerramientas de Desarrollo de Software
Herramientas de Desarrollo de Software
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 
Ciclo de vida del desarrollo de software
Ciclo de vida del desarrollo de softwareCiclo de vida del desarrollo de software
Ciclo de vida del desarrollo de software
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programa
 
Fundamentos de diseño de software
Fundamentos de diseño de softwareFundamentos de diseño de software
Fundamentos de diseño de software
 
Diseño de componentes.
Diseño de componentes.Diseño de componentes.
Diseño de componentes.
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Ensayo Jesus Guerrero
Ensayo Jesus GuerreroEnsayo Jesus Guerrero
Ensayo Jesus Guerrero
 
Ingeniería del-software
Ingeniería del-softwareIngeniería del-software
Ingeniería del-software
 
Ingenieria de software basada en componentes -jeiner gonzalez blanco
Ingenieria de software basada en componentes  -jeiner gonzalez blancoIngenieria de software basada en componentes  -jeiner gonzalez blanco
Ingenieria de software basada en componentes -jeiner gonzalez blanco
 

Ähnlich wie Tema 2.1.- Estándares de Calidad

Estándares de calidad de software
Estándares de calidad de software Estándares de calidad de software
Estándares de calidad de software JoseMarcano93
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxHawkMartnez
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareluis javier perez
 
FUNDAMENTOS DE SISTEMAS
FUNDAMENTOS DE SISTEMASFUNDAMENTOS DE SISTEMAS
FUNDAMENTOS DE SISTEMASCinthia López
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un softwaressalzar
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobarEdwin Alexander
 
Ingenieria del Softaware. Seún Glenn Brookshear
Ingenieria del Softaware. Seún Glenn BrookshearIngenieria del Softaware. Seún Glenn Brookshear
Ingenieria del Softaware. Seún Glenn BrookshearCarlos Escobar
 
Análisis del Proyecto de Software
Análisis del Proyecto de SoftwareAnálisis del Proyecto de Software
Análisis del Proyecto de SoftwareMaricela Ramirez
 
Ensayo sobre el Software y sus tipos
Ensayo sobre el Software y sus tiposEnsayo sobre el Software y sus tipos
Ensayo sobre el Software y sus tiposJordi Cuevas
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1Jose Garcia
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un softwarejafigueroa26
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un softwareCESARCONTRERAS009
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un softwareCESARCONTRERAS009
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un softwarejafigueroa26
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesUlises Cruz
 

Ähnlich wie Tema 2.1.- Estándares de Calidad (20)

Estándares de calidad de software
Estándares de calidad de software Estándares de calidad de software
Estándares de calidad de software
 
Adrian adrianza
Adrian adrianzaAdrian adrianza
Adrian adrianza
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
 
Fundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de softwareFundamentos básicos para el diseño de software
Fundamentos básicos para el diseño de software
 
Prueba de dominio
Prueba de dominioPrueba de dominio
Prueba de dominio
 
FUNDAMENTOS DE SISTEMAS
FUNDAMENTOS DE SISTEMASFUNDAMENTOS DE SISTEMAS
FUNDAMENTOS DE SISTEMAS
 
Fundamentos para el diseño de un software
Fundamentos para el diseño de un softwareFundamentos para el diseño de un software
Fundamentos para el diseño de un software
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
Ingenieria del Softaware. Seún Glenn Brookshear
Ingenieria del Softaware. Seún Glenn BrookshearIngenieria del Softaware. Seún Glenn Brookshear
Ingenieria del Softaware. Seún Glenn Brookshear
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Análisis del Proyecto de Software
Análisis del Proyecto de SoftwareAnálisis del Proyecto de Software
Análisis del Proyecto de Software
 
Ensayo sobre el Software y sus tipos
Ensayo sobre el Software y sus tiposEnsayo sobre el Software y sus tipos
Ensayo sobre el Software y sus tipos
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un software
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un software
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un software
 
Proceso y diseño de un software
Proceso y diseño  de un   softwareProceso y diseño  de un   software
Proceso y diseño de un software
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 

Mehr von Yenny Salazar

Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de ProblemasUnidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de ProblemasYenny Salazar
 
3.3.- Operadores y Expresiones
3.3.- Operadores y Expresiones3.3.- Operadores y Expresiones
3.3.- Operadores y ExpresionesYenny Salazar
 
3.2.- Identificadores, Variables y Constantes
3.2.- Identificadores, Variables y Constantes3.2.- Identificadores, Variables y Constantes
3.2.- Identificadores, Variables y ConstantesYenny Salazar
 
Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- ProgramaciónYenny Salazar
 
1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo1.2.3.- Pseudocódigo
1.2.3.- PseudocódigoYenny Salazar
 
Tema 1.2.2.- Diagramas de Flujo
Tema 1.2.2.- Diagramas de FlujoTema 1.2.2.- Diagramas de Flujo
Tema 1.2.2.- Diagramas de FlujoYenny Salazar
 
1.1. Conceptos básicos de Algorítmica y Programación
1.1. Conceptos básicos de Algorítmica y Programación1.1. Conceptos básicos de Algorítmica y Programación
1.1. Conceptos básicos de Algorítmica y ProgramaciónYenny Salazar
 
Principios Fundamentales para el Proceso de la toma de decisiones
Principios Fundamentales para el Proceso de la toma de decisionesPrincipios Fundamentales para el Proceso de la toma de decisiones
Principios Fundamentales para el Proceso de la toma de decisionesYenny Salazar
 

Mehr von Yenny Salazar (9)

Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de ProblemasUnidad 4 Metodología para el Análisis y Planteamiento de Problemas
Unidad 4 Metodología para el Análisis y Planteamiento de Problemas
 
3.3.- Operadores y Expresiones
3.3.- Operadores y Expresiones3.3.- Operadores y Expresiones
3.3.- Operadores y Expresiones
 
3.2.- Identificadores, Variables y Constantes
3.2.- Identificadores, Variables y Constantes3.2.- Identificadores, Variables y Constantes
3.2.- Identificadores, Variables y Constantes
 
3.1.- Tipo de Datos
3.1.- Tipo de Datos3.1.- Tipo de Datos
3.1.- Tipo de Datos
 
Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- Programación
 
1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo1.2.3.- Pseudocódigo
1.2.3.- Pseudocódigo
 
Tema 1.2.2.- Diagramas de Flujo
Tema 1.2.2.- Diagramas de FlujoTema 1.2.2.- Diagramas de Flujo
Tema 1.2.2.- Diagramas de Flujo
 
1.1. Conceptos básicos de Algorítmica y Programación
1.1. Conceptos básicos de Algorítmica y Programación1.1. Conceptos básicos de Algorítmica y Programación
1.1. Conceptos básicos de Algorítmica y Programación
 
Principios Fundamentales para el Proceso de la toma de decisiones
Principios Fundamentales para el Proceso de la toma de decisionesPrincipios Fundamentales para el Proceso de la toma de decisiones
Principios Fundamentales para el Proceso de la toma de decisiones
 

Tema 2.1.- Estándares de Calidad

  • 1. ALGORÍTMICA Y PROGRAMACIÓN Unidad 2: Estándares de Calidad en el Diseño de Algoritmos y Construcción de Programas 2.1.- Estándares de Calidad Distinguir las reglas prácticas para el diseño y construcción de algoritmos y programas con calidad y eficiencia Profa. Yenny Salazar
  • 2. Contenido o Calidad de Software o Estándares de Calidad de Software o Principios de Diseño de Sistemas de Software • Modularidad mediante diseño descendente. • Abstracción y ocultamiento de la información. • Modificabilidad. • Comprensibilidad y fiabilidad. • Interfaces de usuario. • Programación segura contra fallos. • Facilidad de uso. • Eficiencia. • Estilo de programación. • Depuración. • Documentación. o Modelos de Calidad del Software (MCS). o Generalidades. o Actividades. o Referencias.
  • 3. Calidad de Software La calidad del software es un concepto complejo que no es directamente comparable con la calidad de la manufactura de producto. Los productos de software se han convertido hoy en día en uno de los principales objetivos estratégicos de las organizaciones debido a que, los procesos más importantes de las organizaciones, y por lo tanto su supervivencia, dependen del buen funcionamiento de los sistemas de software. El significado de la palabra calidad genera mucha confusión, quizás por la multidimensionalidad del propio concepto. por lo anterior el glosario de estándares de computación IEEE Std. 610 – 1991, define la calidad del software como “el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario”.
  • 4. Los estándares de calidad de software hacen parte de la ingeniería de software, utilización de estándares y metodologías para el diseño, programación, prueba y análisis del software desarrollado, con el objetivo de ofrecer una mayor confiabilidad y mantenibilidad, en concordancia con los requisitos exigidos, con esto se eleva la productividad y el control en la calidad de software, parte de la gestión de la calidad se orienta a mejorar su eficacia y eficiencia. Los estándares definen un conjunto de criterios que guían la forma en que se aplican procedimientos y metodologías al software desarrollado, la certificación de calidad permite una valoración independiente de la organización, donde se demuestra la capacidad de desarrollar productos y servicios de calidad. Estándares de Calidad de Software
  • 5. Principios de Diseño de Sistemas de Software El diseño de sistemas de software de calidad requiere el cumplimiento de una serie de características y objetivos. En un sentido general, los objetivos a conseguir que se consideran útiles en el diseño de sistemas incluyen al menos los siguientes principios: 1. Modularidad mediante diseño descendente. 2. Abstracción y ocultamiento de la información. 3. Modificabilidad. 4. Comprensibilidad y fiabilidad. 5. Interfaces de usuario. 6. Programación segura contra fallos. 7. Facilidad de uso. 8. Eficiencia. 9. Estilo de programación. 10.Depuración. 11.Documentación.
  • 6. 1. Modularidad mediante diseño descendente: La descomposición del problema se realiza a través de un diseño descendente que a través de niveles sucesivos de refinamiento se obtendrán diferentes módulos. Normalmente los módulos de alto nivel especifican qué acciones han de realizarse mientras que los módulos de bajo nivel definen cómo se realizan las acciones. oConstrucción del programa: La descomposición de un programa en módulos permite que diversos programadores trabajen de modo independiente en cada uno de sus módulos. oDepuración del programa: Se facilita esta tarea al centrarse en la depuración de pequeños programas más fáciles de verificar. oLegibilidad: Los programas modulares son más fáciles de leer. oEliminación de código redundante: Permite identificar operaciones que suceden en muchas partes diferentes del programa y para implementarlos como subprogramas. Esto significa que el código de una operación aparecerá sólo una vez, produciendo como resultado un aumento en la legibilidad y modificabilidad. Principios de Diseño de Sistemas de Software
  • 7. 2. Abstracción y ocultamiento de la información: La idea es definir una parte de un sistema de modo que puede ser comprendido por sí mismo (como una unidad) sin conoci- miento de sus detalles específicos y sin conocimiento de cómo se utiliza esta unidad a un nivel más alto. Existen dos tipos de abstracciones: procedimental y de datos. oProcedimental: es aquella en que se separa el propósito de un subprograma de su implementación. La modularidad y la abstracción procedimental se complementan entre sí. oDe Datos: su propósito es aislar cada estructura de datos y sus acciones asociadas. Otro principio de diseño es la ocultación de la información. Su propósito es hacer inaccesible ciertos detalles que no afecten a los otros módulos del sistema. La abstracción identifica los aspectos esenciales de módulos y estructura de datos, que se pueden tratar como cajas negras, asegurando que ninguna otra caja negra pueda acceder a estos detalles ocultos. Principios de Diseño de Sistemas de Software
  • 8. 3. Modificabilidad: Se refiere a los cambios controlados de un sistema dado. Un pequeño cambio en los requisitos en un programa modular normalmente requiere un cambio pequeño sólo en algunos de sus módulos. La modularidad aísla las modificaciones. El uso de procedimientos tiene la ventaja de eliminar código redundante, y hacer al programa más modificable. 4. Comprensibilidad y fiabilidad. Un sistema se dice que es comprensible si refleja directamente una visión natural del mundo. Una característica de un sistema eficaz es la simplicidad. En general, un sistema sencillo puede ser comprendido más fácilmente que uno complejo. Un objetivo importante en la producción de sistemas es el de la fiabilidad. El objetivo de crear programas fiables ha de ser crítico en la mayoría de las situaciones. Principios de Diseño de Sistemas de Software
  • 9. 5. Interfaces de usuario: En un entorno interactivo se ha de tener en cuenta las preguntas posibles al usuario y sobre todo aquellas que solicitan entradas de usuario. Es conveniente que se realicen eco de las entradas de un programa. Siempre que un programa lee datos, bien de usuario a través de un terminal o de un archivo, el programa debe incluir los valores leídos en su salida. Etiquetar la salida con cabeceras y mensajes adecuados. 6. Programación segura contra fallos: Un programa es seguro contra fallos cuando se ejecuta razonablemente por cualquiera que lo utilice. Para conseguir este objetivo se han de comprobar los errores en datos de entrada y en la lógica del programa. 7. Facilidad de uso: Se refiere a la utilidad del sistema, esta propiedad ha de tenerse presente en todas las etapas del ciclo de vida, pero es vital en la fase de diseño e implementación. Principios de Diseño de Sistemas de Software
  • 10. 8. Eficiencia: Su objetivo es hacer un uso óptimo de los recursos del programa, lo cual implica recursos de tiempo y espacio. Un sistema eficiente es aquel cuya velocidad es mayor con el menor espacio de memoria ocupada. En tiempos pasados los recursos de memoria principal y de CPU eran factores claves a considerar para aumentar la velocidad de ejecución. Hoy día debe existir un compromiso entre legibilidad, modificabilidad y eficiencia, aunque, con excepciones, prevalecerá la legibilidad y facilidad de modificación. 9. Estilo de programación: Requiere de unas reglas de escritura, que buscan que los programas, no sólo sean legibles y modificables por quienes los han construido, sino también puedan ser leídos y modificados por otros programadores. Las reglas de estilo para construir programas claros, legibles y fácilmente modificables dependerá del tipo de programación y lenguaje. Principios de Diseño de Sistemas de Software
  • 11. 10. Depuración: Un programa es correcto sólo si se producen resultados correctos para todas las entradas válidas posibles. El proceso de eliminar errores -bugs- se denomina depuración de un programa. Cuando el compilador detecta un error, la computadora visua- liza un mensaje, que indica que se ha producido un error y cuál puede ser la causa posible del mismo. No obstante, los mensa- jes de error son con frecuencia, difíciles de interpretar y son a veces engañosos. Los errores de programación se pueden dividir en tres clases: errores de compilación (sintaxis), errores en tiempo de ejecución y errores lógicos. Principios de Diseño de Sistemas de Software
  • 12. 11. Documentación: Un programa (paquete de software) de computadora necesita siempre de una documentación que permita a sus usuarios aprender a utilizarlo y mantenerlo. Se produce para dos fines, uno para explicar las características del software y describir cómo utilizarlo; y el otro para describir la composición interna del mismo, de modo que el sistema pueda ser mantenido a lo largo de su ciclo de vida. La primera se denomina documentación del usuario y la segunda documentación del sistema. La documentación del usuario está diseñada para ser leída por el usuario del software, tiende a ser no técnica. La documentación del sistema es más técnica, uno de sus componentes es la versión fuente de todos los programas del sistema, para lo que se requiere un buen uso de la sintaxis y de la gramática del lenguaje de programación. Así mismo se requiere seguir convenios de notación, indentación, estándares para los nombres de variables, constantes, objetos, clases, etc. Principios de Diseño de Sistemas de Software
  • 13. Modelos de Calidad del Software (MCS) Son aquellos documentos que integran la mayor parte de las mejores prácticas, proponen temas de administración en los que cada organización debe hacer énfasis, integran diferentes prácticas dirigidas a los procesos clave y permiten medir los avances en calidad. Esto permite evaluar el sistema, bien sea cualitativa o cuantitativamente, y de acuerdo con esta evaluación la organización podrá proponer e implementar estrategias que permitan la mejora del proceso dentro de las etapas de análisis, diseño, desarrollo y pruebas del software. Los modelos de calidad de software se clasifican de acuerdo con el enfoque de evaluación, ya sea a nivel de proceso, producto o calidad en uso.
  • 14. Generalidades El desarrollo de un buen producto software se realiza durante el ciclo de vida. Razón por la cual, los aspectos relacionados con la calidad deben tomarse en cuenta desde que se tiene la idea principal del sistema hasta la entrega del producto final. Diferentes herramientas ayudan al programador a escribir códigos de calidad, como lo son: el diseño descendente, la modularidad, la abstracción, la ocultación de información, entre otros. Durante la fase de diseño, la abstracción es uno de los medios más importantes con los que se intenta hacer frente a la complejidad; así como el uso de lenguajes modernos, los cuales facilitan la implementación de abstracciones de datos. Gracias a los estándares de calidad para el desarrollo de software se puede facilitar la realización de los proyectos, haciéndolos más eficientes y más fáciles de desarrollar, para así lograr satisfacer las necesidades del cliente. Los estándares permite mejorar y unificar la forma en que se trabaja y que el software desarrollado sea de calidad.
  • 15. o Explicar brevemente el significado de los siguientes términos: • Ciclo de vida de desarrollo de sistemas. • Ingeniería de software. • Usuario. • Caja negra. o Establecer semejanzas y diferencias entre: programa, sub-programas, módulos, rutinas y procedimientos. o Describir y diferenciar entre errores de compilación (sintaxis), errores en tiempo de ejecución y errores lógicos. o Investigar los enfoque de evaluación de un modelo de calidad de software: a nivel de proceso, nivel de producto y calidad en uso). o Realizar un cuadro comparativos de los Modelos de Calidad de Software: CMMI, PSP y ISO 15504. Actividades
  • 16. Corona, M. y Ancona M. 2011. Diseño de algoritmos y su codificación en lenguaje C. McGraw-Hill. México. Joyanes, L. y Zahonero, I. 2002. Programación en C. Metodología, algoritmos y estructura de datos. McGraw-Hill. Joyanes, L. 2008. Fundamentos de Programación, Algoritmos, Estructura de Datos y Objetos. Cuarta edición. McGraw-Hill. López, J. Algoritmos y Programación. 2009. Segunda Edición. Eduteka. Referencias Profa. Yenny Salazar