SlideShare una empresa de Scribd logo
1 de 30
Técnicas de
Programación
UNIDAD 1
ING. ALVARO ENRIQUE RUANO
Contenido
● Estilo y Codificación
● Documentación
o Manual de usuario
o Manual de mantenimiento
o Manual de operador
● Depuración
● Pruebas
Estilo y Codificación
Se busca que los programas sean legibles y modificables por los
creadores y por otras personas.
La calidad de un programa se relaciona directamente con su
escritura, legibilidad y comprensibilidad.
El objetivo de estandarizar el estilo de los programas es crear
eficiencia a través de una comunidad de desarrolladores
(trabajadores de una empresa, una comunidad de desarrollo
de software libre, estudiantes en un proyecto universitario,
etc.).
Estilo y Codificación
Las reglas de estilo para construir programas claros,
legibles y fácilmente modificables dependerá del tipo
de programación y lenguaje elegido.
No existe una fórmula mágica que garantice
programas legibles, pero existen diferentes reglas que
facilitarán la tarea y con las que la mayoría de
personas están de acuerdo.
Estilo y Codificación
Las características con que debe cumplir el código:
● Entendible: Debe ser fácil de leer, interpretar y
modificar. Debe incluir documentación apropiada
(documentación interna).
● Correcto: Debe de compilar sin problemas y
ejecutarse tal como está documentado.
Estilo y Codificación
● Consistente: El estilo de codificación debe de ser
consistente a través de todo el programa, proyecto o
institución (según alcance definido).
● Moderno: Se deben utilizar las recomendaciones
publicadas más recientemente para los componentes que
utilicemos.
● Seguro: Se debe evitar el uso de “hacks” o malas prácticas
de programación. En ningún momento se debe
comprometer la estabilidad de los equipos donde se
ejecute el programa.
Estilo y Codificación
● Reglas para lenguajes estructurados (Luis Joyanes Aguilar)
◦ Capítulo 18 del libro de su libro “Fundamentos de Programación”
● The Chromium Projects Coding Style (Google Chrome)
o http://www.chromium.org/developers/coding-style
● Mozilla Developer Network Coding Style (Firefox)
o https://developer.mozilla.org/en-
US/docs/Mozilla/Developer_guide/Coding_Style
● Apache OpenOffice Cpp Coding Standards (OpenOffice y LibreOffice)
o https://wiki.openoffice.org/wiki/Cpp_Coding_Standards
Documentación
Un programa de computadora necesita siempre de
una documentación que permita a sus usuarios
aprender a utilizarlo y mantenerlo.
La documentación es una parte importante de
cualquier paquete de software y su desarrollo es una
pieza clave en la “Ingeniería de Sofware”.
Documentación
Existen varios grupos de personas interesadas en conocer la
documentación de un sistema:
● Programadores: Personas que realizan las modificaciones al
programa.
● Operadores: Personas encargada de ejecutar el programa,
introducir datos y extraer resultados.
● Usuarios: Personas que explotan el programa y entienden
las entradas y salida que produce.
Documentación
En el contexto actual, los programas son interactivos, por lo que el rol de
usuario también incluye las tareas originalmente asociadas al rol de
operador.
Actualmente se denomina operador del programa a aquel usuario que
realiza acciones que requieren un conocimiento técnico y más especializado,
por ejemplo cierre bancarios, cierres contables o parametrizaciones
importantes.
La documentación que debe incluir un software es:
● Manual de usuario
● Manual de mantenimiento
● Manual de operador
Manual de usuario/operador
Es una documentación que presenta una inducción a las
funciones más utilizadas de un software.
El frecuente que se edite en forma de libro, aunque la
tendencia actual es que se presente en forma digital con el
nombre de “manual de ayuda en línea”.
Es un instrumento comercial importante, una buena
documentación hará que el programa sea más accesible para
las personas y atractivo para la compra.
Manual de usuario/operador
Este proceso puede ser realizado por los desarrolladores, aunque lo más
común es que las empresas contratan “escritores técnicos” para elaborar
esta parte del proceso de producción.
Las partes que incluye son:
● Instrucciones del proceso de instalación
● Instrucciones del proceso de acceso o carga del programa
● Referencia del detalle de todas las funciones del software
● Nombre de archivos externos a los que accede el programa
● Formato de los mensajes de error y explicaciones asociadas
● Descripción detallada de las salidas o informes que genera el programa
Manual de mantenimiento
El manual de mantenimiento (documentación del sistema) es por naturaleza
más técnica que el del usuario, ya que está dirigido a los programadores.
Abarca toda la documentación generada durante el ciclo de vida del
software, y su intención es que permite darle mantenimiento durante el
resto de la vida del programa.
Los documentos son considerados “Documentación Externa”.
Los comentarios incluidos en el código fuente se llaman “Documentación
Interna” y están estrechamente asociados con las normas de estilo
utilizadas.
Manual de mantenimiento
Dependiendo de la metodología y tecnología utilizada, así
variará el contenido del manual, aunque habitualmente
contiene:
● Especificaciones originales del sistema (ERS)
● Especificaciones con las que se verificó el programa
(Implementación)
● Diagramas de flujos de datos (Diseño Estructurado)
● Diagramas entidad-relación (Base de Datos)
● Diccionario de datos (Base de Datos)
● Diagramas de distribución y componentes del sistema
(POO)
Depuración
Según la conocida Ley de Murphy: si algo puede salir mal,
saldrá mal.
Un programa raramente funciona correctamente desde la
primera vez.
Un programa funciona correctamente solamente si produce
resultados correctos para “todas las entradas válidas
posibles”.
El proceso de eliminar errores (bugs) se llama depuración
(debugging).
Depuración
Existen tres tipos de errores:
● De compilación (syntax error)
o Son detectados por el compilador
o Son errores de sintaxis, instrucción mal escrita
o La computadora nos dice la causa del error para poder
corregirlo, dependiendo del compilador puede ser
fácil o difícil de interpretar
 C# -> Fácil interpretación
 C++ -> Difícil interpretación
Depuración
● De tiempo de ejecución (runtime error)
o Son detectados por el computador cuando el
programa está siendo ejecutado
o Dependen de los valores de entrada dados por el
usuario, así como del flujo de ejecución que tome el
programa
o Normalmente está asociado a advertencias (warnings)
en el tiempo de compilación
Depuración
● Lógicos
o El programa produce resultados erróneos
o Se permite compilar y ejecutar sin problemas
o Son los más difíciles de resolver
o Corresponden a un entendimiento inadecuado
el problema a resolver o a un diseño
incorrecto del programa
Depuración
Existen herramientas que pueden ser utilizadas para la
depuración de programas:
● Sentencias de escritura
o Dependiendo del lenguaje de programación se
pueden utilizar las instrucciones “Print” o
“MessageBox” para mostrar el flujo que está tomando
un programa.
o No es una herramienta desarrollada para este fin,
pero puede aprovecharse.
Depuración
● Puntos de ruptura (break-point)
o Permite detener el programa en un punto específico
para realizar un seguimiento a partir de este punto.
o Normalmente se permite un avance instrucción por
instrucción para ver el desenvolvimiento del programa.
o Es más recomendable que la técnica anterior.
o Visual Studio provee esta la funcionalidad (lo verémos
en laboratorio)
Depuración
● Examinar el contenido de variables (watches)
o Permite visualizar el contenido de las
variables
o Se utilizan en conjunto con break-points
o Muy útiles para evaluar las variables al inicio
o fin de la iteraciones y antes y después de
las llamadas a métodos o subprogramas.
o Esta funcionalidad también está incluida en
Visual Studio
Pruebas
● Comúnmente llamadas comprobación, pruebas o testing.
● Acciones que determinan si un programa funciona correctamente o no.
● Nos permiten verificar y validar la calidad del software que estamos
desarrollando.
o Verificación: Busca comprobar que el sistema implementa
correctamente una función específica. ¿Estamos construyendo el
producto correctamente?
o Validación: Busca comprobar que el sistema hace lo que tiene
que hacer. ¿Estamos construyendo el producto correcto?
Pruebas
Pruebas
● Probar un software conlleva todo un proceso.
Pruebas
● Datos de prueba:
o La ingeniería de software contempla la construcción
sistemática de un conjunto de pruebas.
o Para su correcta construcción se debe considerar:
 Conocer la salida de cada programa por cada dato
de entrada.
 Deben incluir aquellas entradas que
probablemente originarán más errores.
Pruebas de Verificación
● Pruebas Unitarias
o Su objetivo es ejecutar cada módulo (unidad mínima
de software) de la aplicación-
o Busca asegurar que el código funciona de acuerdo a
las especificaciones, validando módulos.
o Visual Studio provee formas de realizarlas.
● Pruebas de Integración:
o Identifica errores generados por la combinación de
módulos probados unitariamente.
o Puede utilizarse la técnica top-down o bottom-up
o Prueba de interfaces.
Pruebas de Validación
● Determina la aceptación o rechazo del sistema desarrollado
● También llamadas pruebas de aceptación, entre las cuales
encontramos:
● Pruebas Alfa
o El usuario prueba en presencia del desarrollador.
o El desarrollador recopila los resultados de las pruebas.
● Pruebas Beta
o El usuario prueba en su estación de trabajo.
o El desarrollador no está presente.
o El usuario recopila resultados y los envía.
Pruebas de Sistema
● Determinan si el software se integrará al sistema
dónde operará o en un ambiente similar.
● Entre los tipos de pruebas de sistema
encontramos:
o Recuperación
o Carga
o Seguridad
Pruebas
Gracias por su atención

Más contenido relacionado

La actualidad más candente

Procedimiento de creación de un programa
Procedimiento de creación de un programaProcedimiento de creación de un programa
Procedimiento de creación de un programaYoder Rivadeneira
 
Trabajo practico de investigacion sobre el software
Trabajo practico de investigacion sobre el softwareTrabajo practico de investigacion sobre el software
Trabajo practico de investigacion sobre el softwareAlexz Rock
 
14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de softwareJhon Barrera
 
Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.Isabel Gómez
 
Libro 3 presentación tareas y saber del programador
Libro 3 presentación tareas y saber del programadorLibro 3 presentación tareas y saber del programador
Libro 3 presentación tareas y saber del programadordavidcab
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Lis Pater
 
Ciclo de vida del software
Ciclo de vida del softwareCiclo de vida del software
Ciclo de vida del softwarecoldclean
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwarejuankexmisiodj
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUPAngelDX
 
Alfonso software
Alfonso softwareAlfonso software
Alfonso softwareismael_2014
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareMiguel Sanchez
 
Trabajo sobre software y sus clasificaciones
Trabajo sobre software y sus clasificacionesTrabajo sobre software y sus clasificaciones
Trabajo sobre software y sus clasificacionesmarlenaguirre
 

La actualidad más candente (20)

Procedimiento de creación de un programa
Procedimiento de creación de un programaProcedimiento de creación de un programa
Procedimiento de creación de un programa
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
software del sistema
software del sistemasoftware del sistema
software del sistema
 
Tema vi
Tema viTema vi
Tema vi
 
Trabajo practico de investigacion sobre el software
Trabajo practico de investigacion sobre el softwareTrabajo practico de investigacion sobre el software
Trabajo practico de investigacion sobre el software
 
14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.
 
Libro 3 presentación tareas y saber del programador
Libro 3 presentación tareas y saber del programadorLibro 3 presentación tareas y saber del programador
Libro 3 presentación tareas y saber del programador
 
Entregables de pruebas
Entregables de pruebasEntregables de pruebas
Entregables de pruebas
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Software
SoftwareSoftware
Software
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema
 
Ciclo de vida del software
Ciclo de vida del softwareCiclo de vida del software
Ciclo de vida del software
 
Tecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.softwareTecnicas.de.ingenieria.de.software
Tecnicas.de.ingenieria.de.software
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUP
 
Garcia callejas
Garcia callejas Garcia callejas
Garcia callejas
 
Alfonso software
Alfonso softwareAlfonso software
Alfonso software
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Trabajo sobre software y sus clasificaciones
Trabajo sobre software y sus clasificacionesTrabajo sobre software y sus clasificaciones
Trabajo sobre software y sus clasificaciones
 

Similar a Técnicas de programación

Software & Hardware Erick
Software & Hardware ErickSoftware & Hardware Erick
Software & Hardware Erickerick
 
Software & Hardware Erick
Software & Hardware ErickSoftware & Hardware Erick
Software & Hardware Erickerick
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 
Aprende programar-6330-completo
Aprende programar-6330-completoAprende programar-6330-completo
Aprende programar-6330-completojackie_18
 
Mariajosehernandezcardenas 233101 9_agosto
Mariajosehernandezcardenas 233101 9_agostoMariajosehernandezcardenas 233101 9_agosto
Mariajosehernandezcardenas 233101 9_agostoMariaJoshernandezcar
 
Resolución de problemas haciendo uso del computador
Resolución de problemas haciendo uso del computadorResolución de problemas haciendo uso del computador
Resolución de problemas haciendo uso del computadorVictor Alfonzo Marquina
 
Fases en el desarrollo de un programa
Fases en el desarrollo de un programaFases en el desarrollo de un programa
Fases en el desarrollo de un programaBeydasanchezhernandez
 
Software pps
Software pps Software pps
Software pps ORLA23
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
4 5 Ingenieria De Software
4 5 Ingenieria De Software4 5 Ingenieria De Software
4 5 Ingenieria De SoftwareUVM
 
Tipos de software
Tipos de softwareTipos de software
Tipos de software59681271
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Dulcevelazquez6
 
Fases de desarrollo de un programa...
Fases de desarrollo de un programa... Fases de desarrollo de un programa...
Fases de desarrollo de un programa... grachika
 

Similar a Técnicas de programación (20)

Software & Hardware Erick
Software & Hardware ErickSoftware & Hardware Erick
Software & Hardware Erick
 
Software & Hardware Erick
Software & Hardware ErickSoftware & Hardware Erick
Software & Hardware Erick
 
Fasesdedesarrollodeunprograma
FasesdedesarrollodeunprogramaFasesdedesarrollodeunprograma
Fasesdedesarrollodeunprograma
 
Tarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computadorTarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computador
 
Programacion
ProgramacionProgramacion
Programacion
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Aprende programar-6330-completo
Aprende programar-6330-completoAprende programar-6330-completo
Aprende programar-6330-completo
 
Mariajosehernandezcardenas 233101 9_agosto
Mariajosehernandezcardenas 233101 9_agostoMariajosehernandezcardenas 233101 9_agosto
Mariajosehernandezcardenas 233101 9_agosto
 
Resolución de problemas haciendo uso del computador
Resolución de problemas haciendo uso del computadorResolución de problemas haciendo uso del computador
Resolución de problemas haciendo uso del computador
 
RA.1.pdf
RA.1.pdfRA.1.pdf
RA.1.pdf
 
Fases en el desarrollo de un programa
Fases en el desarrollo de un programaFases en el desarrollo de un programa
Fases en el desarrollo de un programa
 
Software PPS TIC
Software PPS TICSoftware PPS TIC
Software PPS TIC
 
Software pps
Software pps Software pps
Software pps
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Programacion informatica
Programacion informaticaProgramacion informatica
Programacion informatica
 
XXXS
XXXSXXXS
XXXS
 
4 5 Ingenieria De Software
4 5 Ingenieria De Software4 5 Ingenieria De Software
4 5 Ingenieria De Software
 
Tipos de software
Tipos de softwareTipos de software
Tipos de software
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
 
Fases de desarrollo de un programa...
Fases de desarrollo de un programa... Fases de desarrollo de un programa...
Fases de desarrollo de un programa...
 

Más de Alvaro Enrique Ruano

Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Alvaro Enrique Ruano
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmosAlvaro Enrique Ruano
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y ShellAlvaro Enrique Ruano
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesAlvaro Enrique Ruano
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoAlvaro Enrique Ruano
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Alvaro Enrique Ruano
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareAlvaro Enrique Ruano
 

Más de Alvaro Enrique Ruano (18)

Resumen caso Enron
Resumen caso EnronResumen caso Enron
Resumen caso Enron
 
Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Ordenamientos rápido y mezcla
Ordenamientos rápido y mezclaOrdenamientos rápido y mezcla
Ordenamientos rápido y mezcla
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y Shell
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
 

Técnicas de programación

  • 2. Contenido ● Estilo y Codificación ● Documentación o Manual de usuario o Manual de mantenimiento o Manual de operador ● Depuración ● Pruebas
  • 3. Estilo y Codificación Se busca que los programas sean legibles y modificables por los creadores y por otras personas. La calidad de un programa se relaciona directamente con su escritura, legibilidad y comprensibilidad. El objetivo de estandarizar el estilo de los programas es crear eficiencia a través de una comunidad de desarrolladores (trabajadores de una empresa, una comunidad de desarrollo de software libre, estudiantes en un proyecto universitario, etc.).
  • 4. Estilo y Codificación Las reglas de estilo para construir programas claros, legibles y fácilmente modificables dependerá del tipo de programación y lenguaje elegido. No existe una fórmula mágica que garantice programas legibles, pero existen diferentes reglas que facilitarán la tarea y con las que la mayoría de personas están de acuerdo.
  • 5. Estilo y Codificación Las características con que debe cumplir el código: ● Entendible: Debe ser fácil de leer, interpretar y modificar. Debe incluir documentación apropiada (documentación interna). ● Correcto: Debe de compilar sin problemas y ejecutarse tal como está documentado.
  • 6. Estilo y Codificación ● Consistente: El estilo de codificación debe de ser consistente a través de todo el programa, proyecto o institución (según alcance definido). ● Moderno: Se deben utilizar las recomendaciones publicadas más recientemente para los componentes que utilicemos. ● Seguro: Se debe evitar el uso de “hacks” o malas prácticas de programación. En ningún momento se debe comprometer la estabilidad de los equipos donde se ejecute el programa.
  • 7. Estilo y Codificación ● Reglas para lenguajes estructurados (Luis Joyanes Aguilar) ◦ Capítulo 18 del libro de su libro “Fundamentos de Programación” ● The Chromium Projects Coding Style (Google Chrome) o http://www.chromium.org/developers/coding-style ● Mozilla Developer Network Coding Style (Firefox) o https://developer.mozilla.org/en- US/docs/Mozilla/Developer_guide/Coding_Style ● Apache OpenOffice Cpp Coding Standards (OpenOffice y LibreOffice) o https://wiki.openoffice.org/wiki/Cpp_Coding_Standards
  • 8. Documentación Un programa de computadora necesita siempre de una documentación que permita a sus usuarios aprender a utilizarlo y mantenerlo. La documentación es una parte importante de cualquier paquete de software y su desarrollo es una pieza clave en la “Ingeniería de Sofware”.
  • 9. Documentación Existen varios grupos de personas interesadas en conocer la documentación de un sistema: ● Programadores: Personas que realizan las modificaciones al programa. ● Operadores: Personas encargada de ejecutar el programa, introducir datos y extraer resultados. ● Usuarios: Personas que explotan el programa y entienden las entradas y salida que produce.
  • 10. Documentación En el contexto actual, los programas son interactivos, por lo que el rol de usuario también incluye las tareas originalmente asociadas al rol de operador. Actualmente se denomina operador del programa a aquel usuario que realiza acciones que requieren un conocimiento técnico y más especializado, por ejemplo cierre bancarios, cierres contables o parametrizaciones importantes. La documentación que debe incluir un software es: ● Manual de usuario ● Manual de mantenimiento ● Manual de operador
  • 11. Manual de usuario/operador Es una documentación que presenta una inducción a las funciones más utilizadas de un software. El frecuente que se edite en forma de libro, aunque la tendencia actual es que se presente en forma digital con el nombre de “manual de ayuda en línea”. Es un instrumento comercial importante, una buena documentación hará que el programa sea más accesible para las personas y atractivo para la compra.
  • 12. Manual de usuario/operador Este proceso puede ser realizado por los desarrolladores, aunque lo más común es que las empresas contratan “escritores técnicos” para elaborar esta parte del proceso de producción. Las partes que incluye son: ● Instrucciones del proceso de instalación ● Instrucciones del proceso de acceso o carga del programa ● Referencia del detalle de todas las funciones del software ● Nombre de archivos externos a los que accede el programa ● Formato de los mensajes de error y explicaciones asociadas ● Descripción detallada de las salidas o informes que genera el programa
  • 13. Manual de mantenimiento El manual de mantenimiento (documentación del sistema) es por naturaleza más técnica que el del usuario, ya que está dirigido a los programadores. Abarca toda la documentación generada durante el ciclo de vida del software, y su intención es que permite darle mantenimiento durante el resto de la vida del programa. Los documentos son considerados “Documentación Externa”. Los comentarios incluidos en el código fuente se llaman “Documentación Interna” y están estrechamente asociados con las normas de estilo utilizadas.
  • 14. Manual de mantenimiento Dependiendo de la metodología y tecnología utilizada, así variará el contenido del manual, aunque habitualmente contiene: ● Especificaciones originales del sistema (ERS) ● Especificaciones con las que se verificó el programa (Implementación) ● Diagramas de flujos de datos (Diseño Estructurado) ● Diagramas entidad-relación (Base de Datos) ● Diccionario de datos (Base de Datos) ● Diagramas de distribución y componentes del sistema (POO)
  • 15. Depuración Según la conocida Ley de Murphy: si algo puede salir mal, saldrá mal. Un programa raramente funciona correctamente desde la primera vez. Un programa funciona correctamente solamente si produce resultados correctos para “todas las entradas válidas posibles”. El proceso de eliminar errores (bugs) se llama depuración (debugging).
  • 16. Depuración Existen tres tipos de errores: ● De compilación (syntax error) o Son detectados por el compilador o Son errores de sintaxis, instrucción mal escrita o La computadora nos dice la causa del error para poder corregirlo, dependiendo del compilador puede ser fácil o difícil de interpretar  C# -> Fácil interpretación  C++ -> Difícil interpretación
  • 17. Depuración ● De tiempo de ejecución (runtime error) o Son detectados por el computador cuando el programa está siendo ejecutado o Dependen de los valores de entrada dados por el usuario, así como del flujo de ejecución que tome el programa o Normalmente está asociado a advertencias (warnings) en el tiempo de compilación
  • 18. Depuración ● Lógicos o El programa produce resultados erróneos o Se permite compilar y ejecutar sin problemas o Son los más difíciles de resolver o Corresponden a un entendimiento inadecuado el problema a resolver o a un diseño incorrecto del programa
  • 19. Depuración Existen herramientas que pueden ser utilizadas para la depuración de programas: ● Sentencias de escritura o Dependiendo del lenguaje de programación se pueden utilizar las instrucciones “Print” o “MessageBox” para mostrar el flujo que está tomando un programa. o No es una herramienta desarrollada para este fin, pero puede aprovecharse.
  • 20. Depuración ● Puntos de ruptura (break-point) o Permite detener el programa en un punto específico para realizar un seguimiento a partir de este punto. o Normalmente se permite un avance instrucción por instrucción para ver el desenvolvimiento del programa. o Es más recomendable que la técnica anterior. o Visual Studio provee esta la funcionalidad (lo verémos en laboratorio)
  • 21. Depuración ● Examinar el contenido de variables (watches) o Permite visualizar el contenido de las variables o Se utilizan en conjunto con break-points o Muy útiles para evaluar las variables al inicio o fin de la iteraciones y antes y después de las llamadas a métodos o subprogramas. o Esta funcionalidad también está incluida en Visual Studio
  • 22. Pruebas ● Comúnmente llamadas comprobación, pruebas o testing. ● Acciones que determinan si un programa funciona correctamente o no. ● Nos permiten verificar y validar la calidad del software que estamos desarrollando. o Verificación: Busca comprobar que el sistema implementa correctamente una función específica. ¿Estamos construyendo el producto correctamente? o Validación: Busca comprobar que el sistema hace lo que tiene que hacer. ¿Estamos construyendo el producto correcto?
  • 24. Pruebas ● Probar un software conlleva todo un proceso.
  • 25. Pruebas ● Datos de prueba: o La ingeniería de software contempla la construcción sistemática de un conjunto de pruebas. o Para su correcta construcción se debe considerar:  Conocer la salida de cada programa por cada dato de entrada.  Deben incluir aquellas entradas que probablemente originarán más errores.
  • 26. Pruebas de Verificación ● Pruebas Unitarias o Su objetivo es ejecutar cada módulo (unidad mínima de software) de la aplicación- o Busca asegurar que el código funciona de acuerdo a las especificaciones, validando módulos. o Visual Studio provee formas de realizarlas. ● Pruebas de Integración: o Identifica errores generados por la combinación de módulos probados unitariamente. o Puede utilizarse la técnica top-down o bottom-up o Prueba de interfaces.
  • 27. Pruebas de Validación ● Determina la aceptación o rechazo del sistema desarrollado ● También llamadas pruebas de aceptación, entre las cuales encontramos: ● Pruebas Alfa o El usuario prueba en presencia del desarrollador. o El desarrollador recopila los resultados de las pruebas. ● Pruebas Beta o El usuario prueba en su estación de trabajo. o El desarrollador no está presente. o El usuario recopila resultados y los envía.
  • 28. Pruebas de Sistema ● Determinan si el software se integrará al sistema dónde operará o en un ambiente similar. ● Entre los tipos de pruebas de sistema encontramos: o Recuperación o Carga o Seguridad
  • 30. Gracias por su atención