SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Programación en
 Lenguajes Estructurados

    U.T. 8: Programación avanzada
Herramientas auxiliares de programación


C.F.G.S. “Desarrollo de Aplicaciones Informáticas”
            C.E.F.P. Juan de Colonia (Burgos)

                 Francisco Iglesias Villasol
                  David H. Martín Alonso
                  Serafina Martín Marcos
               José Antonio Palma Escudero

                   - Curso 2005/2006 -
2


                                           Contenidos
                   1.- Documentación: Finalidad
                   2.- Documentación: Etapas
                   3.- Documentación de código
                   4.- Documentación de interfaz
                   5.- El formato quot;Javadocquot;
                      –   Sintaxis
                      –   Doxygen
                      –   Reglas de estilo
                      –   Etiquetas de código
                   6.- Herramientas de mantenimiento (make)
                      –   Otras herramientas
                   7.- Vulnerabilidades y seguridad
                   8.- Referencias
                   9.- Licencia


ple-ut8 v1.0.odp            C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
3


                   U.T. 8: Programación avanzada



                   Documentación de código

                     – Javadoc

                     – Doxygen




ple-ut8 v1.0.odp            C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
4


                           Documentación: Finalidad
           Finalidad de la documentación
                   Intercambio de conocimiento acerca de la aplicación y su desarrollo
                   Aprovechamiento óptimo de la funcionalidad programada
           Calidad → Reducción de costes
                   Costes de desarrollo
                    –   Adecuación a las especificaciones
                    –   Reutilización de código
                    –   Reducción de errores
                    –   Reducción del esfuerzo de reparación
                    –   Reducción del esfuerzo de adaptación y mejora
                   Costes de explotación
                    –   Tiempo de aprendizaje
                    –   Uso eficiente
                    –   Reducción de errores de uso
           Supone un coste inicial amortizado inmediatamente
ple-ut8 v1.0.odp                    C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
5


                           Documentación: Etapas
           Distintas metodologías de desarrollo concretan distintos modelos
           Análisis y desarrollo
                   Organigramas, ordinogramas, pseudocódigo. (Prog. estructurada)
                   UML (Prog. Orientada a Objetos)
                   Diagramas entidad-relación (Bases de Datos)
           Codificación
                   Paradigmas: modular, estructurado, orientado a objetos
                   Identificadores
                   Comentarios en línea (aclaración del algoritmo)
                   Comentarios formales (ficheros, clases, funciones, parámetros)
           Puesta en producción
                   Manual de usuario
                   Manual de administrador
                   Manual de programador
ple-ut8 v1.0.odp                 C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
6


                           Documentación de código
           La falta de claridad en el código limita seriamente el desarrollo
                   El esfuerzo de programación crece exponencialmente
           La programación estructurada emplea patrones conocidos
                   Fácil comprensión
                   Fácil adaptación
                   Importancia de espaciado y sangrado
           Los identificadores facilitan la lectura y la comprensión
                   Nombres significativos
                   Importancia de evitar nombres crípticos
                   Diferentes convenios asociados históricamente con cada lenguaje
           Comentarios intercalados
                   Para explicar procesos complicados
                   NO sustituyen ni a la claridad, ni a la sencillez ni a los identificadores

ple-ut8 v1.0.odp                   C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
7


                           Documentación de interfaz
           Comentarios a nivel de módulos
                   Funciones, ficheros, clases. Identifican el módulo.
                   Informan de su funcionalidad y condiciones de uso (interfaz)
                   Simultáneos a la codificación
                    –   Ayuda del propio programador
                    –   Perdida de utilidad y de contenido si se hacen en diferido.

           Formatos predeterminados
                   Establecidos por la organización o comunidad de programadores
                   Propuestos por el lenguaje en lenguajes OO como Java o C# (.NET)
                   Determinados por las herramientas
           Generadores de documentación
                   Generación automática en formatos múltiples
                   A partir de los comentarios en el propio código


ple-ut8 v1.0.odp                    C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
8


                             El formato “Javadoc” (I)
           Java: lenguaje de programación orientado a objetos
                   Origen 1990 (Sun Microsystems)
                   Inspirado en C y C++
                   Interpretado, multiplataforma
                   Lenguaje de propósito general muy popular y referente en POO
           Javadoc: Herramienta de generación de documentación para Java
                   Parte del entorno de desarrollo básico (Java Development Kit, JDK)
                   A partir de comentarios en el código genera HTML (páginas web)
                   Uniformidad de estilo de TODA la documentación de Java
                   Mecanismo de comunicación universal → Reutilización
           Objetivo: documentar elementos reutilizables
                   Paquetes, clases, métodos, parámetros, atributos
                   Documentación de la interfaz para poder reutilizar clases

ple-ut8 v1.0.odp                 C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
9


                           El formato “Javadoc” (II)
                   Compatible C, pero con dos **
         /** Punto en un espacio 2D.
          * @author <a href=quot;mailto:profe@cesburquot;>Profe de PLE</a>
         */                   Identificación Formatos HTML
         public class Punto {
                                         Hiperenlaces a código
         /** Crea un {@link Punto} a partir de sus coordenadas.
           * @param cartesianas true para cartesianas, false para angulares
           * @param a abscisa o módulo
           * @param b ordenada o argumento
           */
         public Punto(boolean cartesianas, double a, double b) {
              ...
         }                                         Descripción de la funcionalidad
                       Palabras clave, con @
         /** Realiza un desplazamiento horizontal.
           * @param dx desplazamiento                                                                  Parámetros necesarios
           * @return la abscisa tras el desplazamiento
           */                                                                                              Resultados
         public void moverx(double dx) {
              ...
              return x;
         }

ple-ut8 v1.0.odp                  C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados                       02/07/2006
10


                                                        Doxygen
           Generador de documentación con licencia libre GPL de GNU
                   Multiplataforma: GNU/Linux, MAC OS X, MS Windows
                   Aplicable a C, C++, Java, C#, PHP, Python y alguno más
                   Compatible con Javadoc, aunque requiera algún ajuste para C
                   Genera ficheros HTML, pero también RTF y LATEX
           Operación:
                   Descarga e instalación
                    –   En Linux está disponible en las distribuciones habituales
                    –   DOS: Descargar, descomprimir y agregar al PATH. También hay instalador.
                   En el directorio de código fuente crear el fichero de configuración
                    –   doxygen -g → Doxyfile
                    –   Recomendable crear directorios separados: src, bin y docs
                   Editar el fichero Doxyfile a gusto con un editor de texto
                   Ejecutando nuevamente “doxygen” se generan los documentos
                    –   Genera avisos de código no documentado
ple-ut8 v1.0.odp                    C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
11


                                                      Doxyfile
                   PROJECT_NAME      = quot;PLE-UT8quot;
                   PROJECT_NUMBER      = 1.0
                   OUTPUT_DIRECTORY      = ../docs
                   OUTPUT_LANGUAGE       = Spanish
                   ALWAYS_DETAILED_SEC = YES
                   JAVADOC_AUTOBRIEF      = YES
                   DETAILS_AT_TOP    = YES
                   OPTIMIZE_OUTPUT_FOR_C = YES
                   RECURSIVE      = YES
                   SOURCE_BROWSER       = YES
                   ALPHABETICAL_INDEX = YES
           No genera nada hasta que no se documentan los ficheros
                   Etiqueta @file al frente de los ficheros deseados
                   Descripción de funciones incluyendo @param y @return
ple-ut8 v1.0.odp                C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
12


                          Ejemplo: buffer.h
   /** @file buffer.h Función para concatenar cadenas */

   /**
   * Tamaño de buffer empleado.
   */
   #define TAMBUF 1024

   /** Mantiene una cadena de texto a la que se puede agregar otras
   * cadenas. En caso de que el tamaño sobrepase el valor de
   * {@link #TAMBUF} la cadena total queda truncada, pero correctamente
   * terminada (con un cero).
   * @param texto una cadena de texto o NULL para inicializar
   * @return la cadena completa
   */
   const char *meteBuffer (const char *texto);




ple-ut8 v1.0.odp        C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
13


                                        Reglas de estilo
           Nuestro objetivo es documentar la funcionalidad de las funciones
                   Texto concreto y conciso
                   Tratar de no calcar el identificador, sino darle más sentido
                   No repetir: “Función que..”
                   Comienzan con un verbo en tercera persona de singular
                   La primera frase se emplea en los índices: ser muy concretos
                    –   Hasta el primer punto '.' y espacio (para no cortar direcciones de correo)
                    –   Podemos ampliar la explicación en oraciones sucesivas, pero teniendo en
                        cuenta que tampoco se busca explicar aquí el algoritmo: el código debe ser
                        autoexplicativo.
                   Indicar los comportamientos excepcionales y errores tratados




ple-ut8 v1.0.odp                    C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
14


                        Etiquetas Javadoc / Doxygen
           Delimitación de comentarios: /** */
           Descripciones: texto. Permiten HTML básico para formato.
           Parámetros de funciones: @param identificador
           Valor devuelto: @return (sin identificador)
           Enlaces internos:
                   En bloque: @see funcion() / @see #identificador
                   En línea: {@link funcion()} / {@link #identificador}
                    –   Entre llaves; se pueden intercalar en cualquier texto

           Identificación: @author nombre / @version numero
           Ficheros (en Doxygen): @file nombre.ext Contenido




ple-ut8 v1.0.odp                     C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
15


                   U.T. 8: Programación avanzada



                   Mantenimiento de proyectos

                     – Make

                     – Otras herramientas




ple-ut8 v1.0.odp              C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
Mantenimiento de proyectos:                                                              16




                                  make
           La compilación de proyectos se torna compleja
                   Gran número de ficheros implicados
                   Opciones de compilación
                   Diferencias de compilación entre sistemas heterogéneos
                   Posibilidad de compilación parcial de los elementos actualizados
           Solución: Mantenimiento externo de datos de compilación
                   Archivos de opciones adicionales, distribuidos junto al código
                   Estándar de facto para C: make
                   Entornos gráficos de desarrollo: modelos particulares
                    –   Complejidad adicional, particular del entorno
           Make: Herramienta de gestión y mantenimiento de programas
                   Descripción de cada proyecto: Archivos Makefile propios
                   Colección de tareas subordinadas
                   Admite macros para referencias repetibles
ple-ut8 v1.0.odp                     C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
17


                                     Ejemplo: Makefile
                   Tareas/dependencias/instrucciones
                    –   Antes de cada tarea se revisan las tareas de las que depende
                    –   Sólo ejecuta la tarea si está desactualizada respecto a las dependencias

      OBJS = modulo1.o modulo2.o
      FICH = modulo1.c modulo2.c cabecero.h Makefile

      miprograma: $(OBJS)                                                                     Tarea: dependencias
                                                                                              → instrucciones
         gcc -o miprograma modulo1.o modulo2.o

      modulo1.o: modulo1.c cabecero.h                                       gcc -c: Compilar, pero no enlazar
         gcc -Wall -c modulo1.c                                             (ficheros objeto con extensión .o)

      modulo2.o: modulo2.c cabecero.h                                              Dependencias: Sólo compilar
         gcc -Wall -c modulo2.c                                                     si x.c o x.h han cambiado

      clean borrar:
         rm -f $(OBJS)                                                               PLE> make
                                                                                     ...
                                                                                     PLE> make borrar
      zip comprimir:                                                                 ...
         zip miprograma.zip $(FICH)                                                  PLE> _


ple-ut8 v1.0.odp                     C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados             02/07/2006
18


                                Otras herramientas
           Autoconf y automake
                   Rizando el rizo: Generación automática del Makefile
                   Diagnóstico del sistema, herramientas y/o librerías disponibles
                   A partir de plantillas Makefile.in
                   Se incluyen scripts para el usuario: configure, setup, etc.
           CVS, Subversion [MC]
                   Sistemas centralizados en red de control de versiones
                   Recoge las actualizaciones de código de todos los programadores
                   Control de acceso de los usuarios por zonas
                   Controla incompatibilidades
                   Permite ramificaciones, congelaciones, reversiones, etc
                   Permite acceso histórico (versión del día tal, a tal hora)
                   Integrado, accesible en entornos de desarrollo


ple-ut8 v1.0.odp                  C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
19


                               Otras herramientas (II)
           Depuradores
                   Ejecución de programas en entornos controlables
                   Ejecución paso a paso, puntos de parada condicional
                   Monitorización del estado de las variables
                   Análisis post-mortem de volcados de memoria de programas acabados
                   Requieren una compilación diferenciada
                    –   Genera ejecutables ampliados, de mayor tamaño
                   Integrados en entornos de desarrollo
           Refactorizaciones
                   Herramientas que modifican el código fuente sin alterar su función
                   Mejora del código
                    –   Redenominación de identificadores
                    –   Extracción de variables y subprogramas
                    –   Reordenación de elementos en el código fuente


ple-ut8 v1.0.odp                    C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
20


                            Otras herramientas (III)
           Métricas
                   Análisis de código fuente: Indicadores de calidad
           Aspectos, patrones, plantillas, componentes
                   Modelos de código adaptables para ciertas situaciones
                   Facilitan la generación automática de código




ple-ut8 v1.0.odp                  C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
21


                   U.T. 8: Programación avanzada




                   Vulnerabilidades




ple-ut8 v1.0.odp            C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
Efecto de los fallos                                                         22




                                     del programador
           Los errores de programación no sólo afectan a la funcionalidad
           esperada del programa sino que pueden comprometer a terceros y
           poner en peligro la seguridad de todo el sistema.
                   La seguridad es prioritaria sobre el rendimiento del programa
                   Un pequeño error escondido, puesto en Internet, deja de ser pequeño
                   No podemos suponer que el usuario siga las instrucciones dadas
                    –   Los atacantes, al contrario, tratarán de forzar las entradas y sacar provecho
           Consecuencias
                   Destrucción del sistema
                   Pérdida de información o revelación de información clasificada
                   Denegación de servicio, imposibilidad de acceso
                   Ataque indirecto a otros sistemas
           Soluciones combinadas: programación + sistemas + recuperación
                   Medidas proactivas (previsión) y reactivas (reacción)
ple-ut8 v1.0.odp                     C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
Guía de buenos hábitos                                                             23




                                 del programador
                   Simplicidad del código (= modularidad, programación estructurada)
                   Vigilancia del uso de memoria evitando desbordamientos
                    –   Uso de funciones de librería con límite de búffer
                   Vigilancia de las entradas de usuario
                    –   Evitar reintento de entradas fallidas → Denegaciones de servicio
                   Vigilancia de los accesos a disco
                    –   Bloqueando los ficheros se puede bloquear el programa
                    –   Los ficheros temporales pueden ser muy vulnerables
                   Registro de operaciones
                    –   Permite investigar ataques sufridos: origen y alcance
                    –   Puede facilitar la recuperación de datos
                   Lecturas
                    –   Los hácker son los primeros en leer los foros de seguridad
                   Otro: está lista siempre estará incompleta, siempre faltará uno...


ple-ut8 v1.0.odp                     C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
24


                                                      Referencias
                    Doxygen Manual. [DOXMAN]
                      Patricio Salinas C. <psalinas@dcc.uchile.cl>
                      http://www.stack.nl/~dimitri/doxygen/manual.html

                    How to Write Doc Comments for the Javadoc Tool. [JDTUT]
                      Sun Microsystems <JavadocTool@sun.com>
                      http://java.sun.com/j2se/javadoc/writingdoccomments/

                    Midnight Commander - CVS Repositories. [MC]
                      GNU - Free Software Foundation
                      http://cvs.savannah.gnu.org/viewcvs/?root=mc




ple-ut8 v1.0.odp                       C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006
25


                                      Licencia de uso

                   Este material está disponible bajo una Licencia Creative Commons,
                           http://creativecommons.org/licenses/by-nc-sa/2.5/es/




ple-ut8 v1.0.odp                 C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados   02/07/2006

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Compiladores
CompiladoresCompiladores
Compiladores
 
Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Lenguaje de programacion c#
Lenguaje de programacion c#Lenguaje de programacion c#
Lenguaje de programacion c#
 
Características de los 10 lenguajes de programación
 Características de los 10 lenguajes de programación Características de los 10 lenguajes de programación
Características de los 10 lenguajes de programación
 
Curso c
Curso cCurso c
Curso c
 
Edgar avila aplicaciones de lenguaje c
Edgar avila aplicaciones de lenguaje cEdgar avila aplicaciones de lenguaje c
Edgar avila aplicaciones de lenguaje c
 
Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180
 
Qué es el lenguaje c
Qué es el lenguaje cQué es el lenguaje c
Qué es el lenguaje c
 
Lenguaje cc++
Lenguaje cc++Lenguaje cc++
Lenguaje cc++
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
 
Lenguaje c ibeth lozada
Lenguaje c ibeth lozadaLenguaje c ibeth lozada
Lenguaje c ibeth lozada
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++
 
Power point 3 y 4
Power point 3 y 4Power point 3 y 4
Power point 3 y 4
 
Temas segundo parcial sgbd
Temas segundo parcial sgbdTemas segundo parcial sgbd
Temas segundo parcial sgbd
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Aplicaciones de lenguaje c
Aplicaciones de lenguaje cAplicaciones de lenguaje c
Aplicaciones de lenguaje c
 
Evoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýnEvoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýn
 
Manual de C/C++
Manual de C/C++Manual de C/C++
Manual de C/C++
 
Apunte unidad 3
Apunte unidad 3Apunte unidad 3
Apunte unidad 3
 

Ähnlich wie Ple Ut8

Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de chek_sk8
 
9 anulacion
9   anulacion9   anulacion
9 anulacionzeta2015
 
Características de 10 lenguajes de programación
Características de 10 lenguajes de programaciónCaracterísticas de 10 lenguajes de programación
Características de 10 lenguajes de programaciónAlexa Chisaguano
 
P R O G R A M A V I S U A L C++
P R O G R A M A  V I S U A L  C++P R O G R A M A  V I S U A L  C++
P R O G R A M A V I S U A L C++alejigata
 
Desarrollo de aplicaciones
Desarrollo de aplicacionesDesarrollo de aplicaciones
Desarrollo de aplicacionesCarlos Herrera
 
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)pedrolrc
 
My programming language 04 05-2014
My programming language 04 05-2014My programming language 04 05-2014
My programming language 04 05-2014Neptuno Networks
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciajona427
 
Evolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacionEvolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacionSergio Maidana
 
Conceptos de Plataforma.Net
Conceptos de Plataforma.NetConceptos de Plataforma.Net
Conceptos de Plataforma.NetJesús R. Tineo
 

Ähnlich wie Ple Ut8 (20)

Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de c
 
9 anulacion
9   anulacion9   anulacion
9 anulacion
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Ingeniería Inversa de Código Fuente
Ingeniería Inversa de Código FuenteIngeniería Inversa de Código Fuente
Ingeniería Inversa de Código Fuente
 
Características de 10 lenguajes de programación
Características de 10 lenguajes de programaciónCaracterísticas de 10 lenguajes de programación
Características de 10 lenguajes de programación
 
Guia 1 java
Guia 1 javaGuia 1 java
Guia 1 java
 
P R O G R A M A V I S U A L C++
P R O G R A M A  V I S U A L  C++P R O G R A M A  V I S U A L  C++
P R O G R A M A V I S U A L C++
 
Desarrollo de aplicaciones
Desarrollo de aplicacionesDesarrollo de aplicaciones
Desarrollo de aplicaciones
 
Consulta c++
Consulta c++Consulta c++
Consulta c++
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
 
My programming language 04 05-2014
My programming language 04 05-2014My programming language 04 05-2014
My programming language 04 05-2014
 
Caracteristicas lenguajes
Caracteristicas lenguajesCaracteristicas lenguajes
Caracteristicas lenguajes
 
Tarea 5. investigacion
Tarea 5. investigacionTarea 5. investigacion
Tarea 5. investigacion
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Evolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacionEvolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacion
 
Iphone
IphoneIphone
Iphone
 
Conceptos de Plataforma.Net
Conceptos de Plataforma.NetConceptos de Plataforma.Net
Conceptos de Plataforma.Net
 
Cabrera ies 2011
Cabrera ies 2011Cabrera ies 2011
Cabrera ies 2011
 
Python
PythonPython
Python
 

Mehr von David Martin

Taller: «Gráficos en el Aula»
Taller: «Gráficos en el Aula»Taller: «Gráficos en el Aula»
Taller: «Gráficos en el Aula»David Martin
 
IW-UTXX: Programación web en PHP con bases de datos
IW-UTXX: Programación web en PHP con bases de datosIW-UTXX: Programación web en PHP con bases de datos
IW-UTXX: Programación web en PHP con bases de datosDavid Martin
 
LM-UT5: DTD, XML Schema
LM-UT5: DTD, XML Schema LM-UT5: DTD, XML Schema
LM-UT5: DTD, XML Schema David Martin
 
LM-UT8: Sistemas de Gestión empresarial
LM-UT8: Sistemas de Gestión empresarialLM-UT8: Sistemas de Gestión empresarial
LM-UT8: Sistemas de Gestión empresarialDavid Martin
 
LM-UT7: Almacenamiento XML
LM-UT7: Almacenamiento XML LM-UT7: Almacenamiento XML
LM-UT7: Almacenamiento XML David Martin
 
LM-UT6: Transformaciones XML
LM-UT6: Transformaciones XML LM-UT6: Transformaciones XML
LM-UT6: Transformaciones XML David Martin
 
LM-UT1: Lenguajes de marcas
LM-UT1: Lenguajes de marcas LM-UT1: Lenguajes de marcas
LM-UT1: Lenguajes de marcas David Martin
 
LM-UT4: Sindicación de contenidos
LM-UT4: Sindicación de contenidosLM-UT4: Sindicación de contenidos
LM-UT4: Sindicación de contenidosDavid Martin
 

Mehr von David Martin (19)

PLE UT10
PLE UT10PLE UT10
PLE UT10
 
Taller: «Gráficos en el Aula»
Taller: «Gráficos en el Aula»Taller: «Gráficos en el Aula»
Taller: «Gráficos en el Aula»
 
IW-UTXX: Programación web en PHP con bases de datos
IW-UTXX: Programación web en PHP con bases de datosIW-UTXX: Programación web en PHP con bases de datos
IW-UTXX: Programación web en PHP con bases de datos
 
LM-UT5: DTD, XML Schema
LM-UT5: DTD, XML Schema LM-UT5: DTD, XML Schema
LM-UT5: DTD, XML Schema
 
LM-UT8: Sistemas de Gestión empresarial
LM-UT8: Sistemas de Gestión empresarialLM-UT8: Sistemas de Gestión empresarial
LM-UT8: Sistemas de Gestión empresarial
 
LM-UT7: Almacenamiento XML
LM-UT7: Almacenamiento XML LM-UT7: Almacenamiento XML
LM-UT7: Almacenamiento XML
 
LM-UT6: Transformaciones XML
LM-UT6: Transformaciones XML LM-UT6: Transformaciones XML
LM-UT6: Transformaciones XML
 
LM-UT3: CSS
LM-UT3: CSS LM-UT3: CSS
LM-UT3: CSS
 
LM-UT2: HTML
LM-UT2: HTML LM-UT2: HTML
LM-UT2: HTML
 
LM-UT1: Lenguajes de marcas
LM-UT1: Lenguajes de marcas LM-UT1: Lenguajes de marcas
LM-UT1: Lenguajes de marcas
 
LM-UT4: Sindicación de contenidos
LM-UT4: Sindicación de contenidosLM-UT4: Sindicación de contenidos
LM-UT4: Sindicación de contenidos
 
Inkscape
InkscapeInkscape
Inkscape
 
La Aldea Global
La Aldea GlobalLa Aldea Global
La Aldea Global
 
Plataformas web
Plataformas webPlataformas web
Plataformas web
 
Burgo Red
Burgo RedBurgo Red
Burgo Red
 
Ethnet
EthnetEthnet
Ethnet
 
Ociburgo
OciburgoOciburgo
Ociburgo
 
Fundicar
FundicarFundicar
Fundicar
 
Eth100
Eth100Eth100
Eth100
 

Kürzlich hochgeladen

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Kürzlich hochgeladen (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

Ple Ut8

  • 1. Programación en Lenguajes Estructurados U.T. 8: Programación avanzada Herramientas auxiliares de programación C.F.G.S. “Desarrollo de Aplicaciones Informáticas” C.E.F.P. Juan de Colonia (Burgos) Francisco Iglesias Villasol David H. Martín Alonso Serafina Martín Marcos José Antonio Palma Escudero - Curso 2005/2006 -
  • 2. 2 Contenidos 1.- Documentación: Finalidad 2.- Documentación: Etapas 3.- Documentación de código 4.- Documentación de interfaz 5.- El formato quot;Javadocquot; – Sintaxis – Doxygen – Reglas de estilo – Etiquetas de código 6.- Herramientas de mantenimiento (make) – Otras herramientas 7.- Vulnerabilidades y seguridad 8.- Referencias 9.- Licencia ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 3. 3 U.T. 8: Programación avanzada Documentación de código – Javadoc – Doxygen ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 4. 4 Documentación: Finalidad Finalidad de la documentación Intercambio de conocimiento acerca de la aplicación y su desarrollo Aprovechamiento óptimo de la funcionalidad programada Calidad → Reducción de costes Costes de desarrollo – Adecuación a las especificaciones – Reutilización de código – Reducción de errores – Reducción del esfuerzo de reparación – Reducción del esfuerzo de adaptación y mejora Costes de explotación – Tiempo de aprendizaje – Uso eficiente – Reducción de errores de uso Supone un coste inicial amortizado inmediatamente ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 5. 5 Documentación: Etapas Distintas metodologías de desarrollo concretan distintos modelos Análisis y desarrollo Organigramas, ordinogramas, pseudocódigo. (Prog. estructurada) UML (Prog. Orientada a Objetos) Diagramas entidad-relación (Bases de Datos) Codificación Paradigmas: modular, estructurado, orientado a objetos Identificadores Comentarios en línea (aclaración del algoritmo) Comentarios formales (ficheros, clases, funciones, parámetros) Puesta en producción Manual de usuario Manual de administrador Manual de programador ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 6. 6 Documentación de código La falta de claridad en el código limita seriamente el desarrollo El esfuerzo de programación crece exponencialmente La programación estructurada emplea patrones conocidos Fácil comprensión Fácil adaptación Importancia de espaciado y sangrado Los identificadores facilitan la lectura y la comprensión Nombres significativos Importancia de evitar nombres crípticos Diferentes convenios asociados históricamente con cada lenguaje Comentarios intercalados Para explicar procesos complicados NO sustituyen ni a la claridad, ni a la sencillez ni a los identificadores ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 7. 7 Documentación de interfaz Comentarios a nivel de módulos Funciones, ficheros, clases. Identifican el módulo. Informan de su funcionalidad y condiciones de uso (interfaz) Simultáneos a la codificación – Ayuda del propio programador – Perdida de utilidad y de contenido si se hacen en diferido. Formatos predeterminados Establecidos por la organización o comunidad de programadores Propuestos por el lenguaje en lenguajes OO como Java o C# (.NET) Determinados por las herramientas Generadores de documentación Generación automática en formatos múltiples A partir de los comentarios en el propio código ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 8. 8 El formato “Javadoc” (I) Java: lenguaje de programación orientado a objetos Origen 1990 (Sun Microsystems) Inspirado en C y C++ Interpretado, multiplataforma Lenguaje de propósito general muy popular y referente en POO Javadoc: Herramienta de generación de documentación para Java Parte del entorno de desarrollo básico (Java Development Kit, JDK) A partir de comentarios en el código genera HTML (páginas web) Uniformidad de estilo de TODA la documentación de Java Mecanismo de comunicación universal → Reutilización Objetivo: documentar elementos reutilizables Paquetes, clases, métodos, parámetros, atributos Documentación de la interfaz para poder reutilizar clases ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 9. 9 El formato “Javadoc” (II) Compatible C, pero con dos ** /** Punto en un espacio 2D. * @author <a href=quot;mailto:profe@cesburquot;>Profe de PLE</a> */ Identificación Formatos HTML public class Punto { Hiperenlaces a código /** Crea un {@link Punto} a partir de sus coordenadas. * @param cartesianas true para cartesianas, false para angulares * @param a abscisa o módulo * @param b ordenada o argumento */ public Punto(boolean cartesianas, double a, double b) { ... } Descripción de la funcionalidad Palabras clave, con @ /** Realiza un desplazamiento horizontal. * @param dx desplazamiento Parámetros necesarios * @return la abscisa tras el desplazamiento */ Resultados public void moverx(double dx) { ... return x; } ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 10. 10 Doxygen Generador de documentación con licencia libre GPL de GNU Multiplataforma: GNU/Linux, MAC OS X, MS Windows Aplicable a C, C++, Java, C#, PHP, Python y alguno más Compatible con Javadoc, aunque requiera algún ajuste para C Genera ficheros HTML, pero también RTF y LATEX Operación: Descarga e instalación – En Linux está disponible en las distribuciones habituales – DOS: Descargar, descomprimir y agregar al PATH. También hay instalador. En el directorio de código fuente crear el fichero de configuración – doxygen -g → Doxyfile – Recomendable crear directorios separados: src, bin y docs Editar el fichero Doxyfile a gusto con un editor de texto Ejecutando nuevamente “doxygen” se generan los documentos – Genera avisos de código no documentado ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 11. 11 Doxyfile PROJECT_NAME = quot;PLE-UT8quot; PROJECT_NUMBER = 1.0 OUTPUT_DIRECTORY = ../docs OUTPUT_LANGUAGE = Spanish ALWAYS_DETAILED_SEC = YES JAVADOC_AUTOBRIEF = YES DETAILS_AT_TOP = YES OPTIMIZE_OUTPUT_FOR_C = YES RECURSIVE = YES SOURCE_BROWSER = YES ALPHABETICAL_INDEX = YES No genera nada hasta que no se documentan los ficheros Etiqueta @file al frente de los ficheros deseados Descripción de funciones incluyendo @param y @return ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 12. 12 Ejemplo: buffer.h /** @file buffer.h Función para concatenar cadenas */ /** * Tamaño de buffer empleado. */ #define TAMBUF 1024 /** Mantiene una cadena de texto a la que se puede agregar otras * cadenas. En caso de que el tamaño sobrepase el valor de * {@link #TAMBUF} la cadena total queda truncada, pero correctamente * terminada (con un cero). * @param texto una cadena de texto o NULL para inicializar * @return la cadena completa */ const char *meteBuffer (const char *texto); ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 13. 13 Reglas de estilo Nuestro objetivo es documentar la funcionalidad de las funciones Texto concreto y conciso Tratar de no calcar el identificador, sino darle más sentido No repetir: “Función que..” Comienzan con un verbo en tercera persona de singular La primera frase se emplea en los índices: ser muy concretos – Hasta el primer punto '.' y espacio (para no cortar direcciones de correo) – Podemos ampliar la explicación en oraciones sucesivas, pero teniendo en cuenta que tampoco se busca explicar aquí el algoritmo: el código debe ser autoexplicativo. Indicar los comportamientos excepcionales y errores tratados ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 14. 14 Etiquetas Javadoc / Doxygen Delimitación de comentarios: /** */ Descripciones: texto. Permiten HTML básico para formato. Parámetros de funciones: @param identificador Valor devuelto: @return (sin identificador) Enlaces internos: En bloque: @see funcion() / @see #identificador En línea: {@link funcion()} / {@link #identificador} – Entre llaves; se pueden intercalar en cualquier texto Identificación: @author nombre / @version numero Ficheros (en Doxygen): @file nombre.ext Contenido ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 15. 15 U.T. 8: Programación avanzada Mantenimiento de proyectos – Make – Otras herramientas ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 16. Mantenimiento de proyectos: 16 make La compilación de proyectos se torna compleja Gran número de ficheros implicados Opciones de compilación Diferencias de compilación entre sistemas heterogéneos Posibilidad de compilación parcial de los elementos actualizados Solución: Mantenimiento externo de datos de compilación Archivos de opciones adicionales, distribuidos junto al código Estándar de facto para C: make Entornos gráficos de desarrollo: modelos particulares – Complejidad adicional, particular del entorno Make: Herramienta de gestión y mantenimiento de programas Descripción de cada proyecto: Archivos Makefile propios Colección de tareas subordinadas Admite macros para referencias repetibles ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 17. 17 Ejemplo: Makefile Tareas/dependencias/instrucciones – Antes de cada tarea se revisan las tareas de las que depende – Sólo ejecuta la tarea si está desactualizada respecto a las dependencias OBJS = modulo1.o modulo2.o FICH = modulo1.c modulo2.c cabecero.h Makefile miprograma: $(OBJS) Tarea: dependencias → instrucciones gcc -o miprograma modulo1.o modulo2.o modulo1.o: modulo1.c cabecero.h gcc -c: Compilar, pero no enlazar gcc -Wall -c modulo1.c (ficheros objeto con extensión .o) modulo2.o: modulo2.c cabecero.h Dependencias: Sólo compilar gcc -Wall -c modulo2.c si x.c o x.h han cambiado clean borrar: rm -f $(OBJS) PLE> make ... PLE> make borrar zip comprimir: ... zip miprograma.zip $(FICH) PLE> _ ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 18. 18 Otras herramientas Autoconf y automake Rizando el rizo: Generación automática del Makefile Diagnóstico del sistema, herramientas y/o librerías disponibles A partir de plantillas Makefile.in Se incluyen scripts para el usuario: configure, setup, etc. CVS, Subversion [MC] Sistemas centralizados en red de control de versiones Recoge las actualizaciones de código de todos los programadores Control de acceso de los usuarios por zonas Controla incompatibilidades Permite ramificaciones, congelaciones, reversiones, etc Permite acceso histórico (versión del día tal, a tal hora) Integrado, accesible en entornos de desarrollo ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 19. 19 Otras herramientas (II) Depuradores Ejecución de programas en entornos controlables Ejecución paso a paso, puntos de parada condicional Monitorización del estado de las variables Análisis post-mortem de volcados de memoria de programas acabados Requieren una compilación diferenciada – Genera ejecutables ampliados, de mayor tamaño Integrados en entornos de desarrollo Refactorizaciones Herramientas que modifican el código fuente sin alterar su función Mejora del código – Redenominación de identificadores – Extracción de variables y subprogramas – Reordenación de elementos en el código fuente ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 20. 20 Otras herramientas (III) Métricas Análisis de código fuente: Indicadores de calidad Aspectos, patrones, plantillas, componentes Modelos de código adaptables para ciertas situaciones Facilitan la generación automática de código ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 21. 21 U.T. 8: Programación avanzada Vulnerabilidades ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 22. Efecto de los fallos 22 del programador Los errores de programación no sólo afectan a la funcionalidad esperada del programa sino que pueden comprometer a terceros y poner en peligro la seguridad de todo el sistema. La seguridad es prioritaria sobre el rendimiento del programa Un pequeño error escondido, puesto en Internet, deja de ser pequeño No podemos suponer que el usuario siga las instrucciones dadas – Los atacantes, al contrario, tratarán de forzar las entradas y sacar provecho Consecuencias Destrucción del sistema Pérdida de información o revelación de información clasificada Denegación de servicio, imposibilidad de acceso Ataque indirecto a otros sistemas Soluciones combinadas: programación + sistemas + recuperación Medidas proactivas (previsión) y reactivas (reacción) ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 23. Guía de buenos hábitos 23 del programador Simplicidad del código (= modularidad, programación estructurada) Vigilancia del uso de memoria evitando desbordamientos – Uso de funciones de librería con límite de búffer Vigilancia de las entradas de usuario – Evitar reintento de entradas fallidas → Denegaciones de servicio Vigilancia de los accesos a disco – Bloqueando los ficheros se puede bloquear el programa – Los ficheros temporales pueden ser muy vulnerables Registro de operaciones – Permite investigar ataques sufridos: origen y alcance – Puede facilitar la recuperación de datos Lecturas – Los hácker son los primeros en leer los foros de seguridad Otro: está lista siempre estará incompleta, siempre faltará uno... ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 24. 24 Referencias  Doxygen Manual. [DOXMAN] Patricio Salinas C. <psalinas@dcc.uchile.cl> http://www.stack.nl/~dimitri/doxygen/manual.html  How to Write Doc Comments for the Javadoc Tool. [JDTUT] Sun Microsystems <JavadocTool@sun.com> http://java.sun.com/j2se/javadoc/writingdoccomments/  Midnight Commander - CVS Repositories. [MC] GNU - Free Software Foundation http://cvs.savannah.gnu.org/viewcvs/?root=mc ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006
  • 25. 25 Licencia de uso Este material está disponible bajo una Licencia Creative Commons, http://creativecommons.org/licenses/by-nc-sa/2.5/es/ ple-ut8 v1.0.odp C.E.F.P. Juan de Colonia - Programación en Lenguajes Estructurados 02/07/2006