Páginas: Anterior 1 2 3 Siguiente
Páginas: Anterior 1 2 3 Siguiente

Páginas: Anterior 1 2 3 Siguiente

Extrayendo diagramas UML de código python con PyReverse

24 07 2011

En la mayoría de proyectos Python de gran desarrollo, se hace necesario documentar el desarrollo de una aplicación.

A menudo se utilizan los diagramas UML, para ilustrar diagramas de clases, paquetes, etc.

Pyreverse es una utilidad que analiza el código fuente Python y extrae diagramas de clases y dependencias con paquetes.

En los diagramas generados se muestran:

  • Atributos de clases y si es posible su tipo
  • Métodos de clases
  • Enlaces de herencia entre clases
  • Enlaces de asociación entre clases
  • Representación de excepciones e interfaces

Nota: Esta utilidad ha sido integrada desde 2008 con Pylint a partir de la versión 0.15.

Instalación en Ubuntu 11.04

Puesto que Pyreverse esta integrado en Pylint y este utiliza Graphviz para generar los diagramas nos basta con instalar los siguientes paquetes:

1
sudo apt-get install graphviz pylint

A modo de ejemplo, utilizare el código fuente de Tivion, para generar algunos diagramas UML.

Generaramos con pyreverse, un archivo classes_Tivion.png aplicándolo a la carpeta src de Tivion:

1
pyreverse -o png -p Tivion src/

-o : establece el formato de salida
-p nombre : produce los archivos de salida añadiendo el nombre establecido

Esto generará un diagrama como el siguiente (haz click para agrandar):

Python Classes Tivion

Pero el layout por defecto, es algo espartano y podemos mejorarlo con otras hojas de estilo XML que definamos. Para ello necesitamos cambiar el formato de salida a .dot, para posteriormente generar un archivo SVG.

Generar el .dot

1
pyreverse -o dot -p Tivion src/

Generar el SVG a partir del DOT

1
dot -Tsvg classes_Tivion.dot > classes_Tivion.svg

Aplicar el layout mejorado

Para ello he utilizado el xsl definido aquí:

1
xsltproc notugly.xsl classes_Tivion.svg > classes_Tivion-notugly.svg

Esto mejora un poco, pero habría que editar el .dot para cambiar los estilos de cada “record”. Como prueba, he editado un par de records, cambiándoles el fondo, pero sería necesario automatizarlo, o incluso mucho mejor si pyreverse admitiera un xsl y lo generara ya con otro layout mas moderno.

El resultado es el siguiente (haz click para agrandar):

Python Class Tivion pretty layout

Python Class Tivion pretty layout

Fuentes

Pyreverse : UML Diagrams for Python

Making Graphviz output pretty with xsl

Making Graphviz output pretty with xsl (updated)

VN:F [1.9.13_1145]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)


Tivion ganador del mejor proyecto en el III Concurso Universitario de Software Libre de Castilla-La Mancha

30 04 2010

Winner cup Tivion

De nuevo buenas noticias para Tivion, tras anunciar el pasado miércoles que era finalista en el CUSL regional, la sorpresa ha sido máxima cuando he resultado ganador del mayor premio del concurso con el “Premio especial JCCM – CESLCAM – Mejor proyecto“, dotado con 1500 € en metálico.

Aparte del premio, la jornada fue muy enriquecedora ya que conocí en persona a los otros finalistas e intercambiamos muchas ideas y opiniones sobre software libre y sobre otros temas como es de suponer.

Hice nuevos amigos, conocí a mucha más gente y la asistencia de público me sorprendió bastante, ya que el aforo estaba a un 80 o 90%, que calculo que serían unas 150 personas, todas muy interesadas en los proyectos, charlas y talleres que se hicieron.

Esta es la foto de los ganadores que nos hicieron (soy el del centro, camiseta blanca con un logo negro):

CUSL regional foto de los ganadores

CUSL regional foto de los ganadores

El resto de ganadores para esta edición son:
- José María Ochotorena, Primer Premio al Proyecto más Innovador por su proyecto LUCKA.
- José Luis Segura, Primer Premio Mejor Utilidad por su proyecto ARGOS.
- Hugo Caballero, Javier Cózar y José Miguel Serrano, Segundo Premio a Mejor Utilidad por su proyecto TURMS.

Por otro lado, al resultar ganador, paso a ser finalista del CUSL a nivel nacional, en la que han participado más de 100 alumnos de 150 proyectos diferentes de todas las universidades de España y que se celebrará en la Escuela Superior de Ingeniería de la Universidad de Cádiz los días 13 y 14 de Mayo.

El resto de finalistas del IV Concurso Universitario de Software Libre a nivel nacional son:

  • Casual Services, de Daniel Martín Yerga de la Universidad de Oviedo [Blog][Código]
  • Cañafote: Redes de sensores basados en Arduino, de Álvaro Neira Ayuso de la Universidad de Sevilla [Blog][Código]
  • Curuxa, de Adrián Bulnes Parra de la Universidad de Oviedo [Blog][Código]
  • Kora, de Jose Alcalá Correa de la Universidad de Granada [Blog][Código]
  • TBO, de Daniel García Moreno de la Universidad Nacional de educación a distancia [Blog][Código]
  • Visuse, de José Luis López Pino de la Universidad de Granada [Blog][Código]
  • WikiUnix, de Noelia Sales Montes de la Universidad de Cádiz [Blog][Código]

Así mismo, se otorgarán las siguientes menciones especiales:

  • oFlute, de José Tomás Tocino García de la Universidad de Cádiz [Blog][Código]
  • Resistencia en Cádiz: 1812, de Pablo Recio Quijano de la Universidad de Cádiz [Blog][Código]
  • Tea: Tiny Environmental Analyzer, de Ricardo Cañuelo Navarro de la Universidad de Granada [Blog][Código]
  • Gexal, de Juan Santamaría Moreno y de Christian Blaya Benito del IES Villaverde de Madrid como proyecto destacado en la categoría Junior [Blog][Código]

Por último, os dejo unos vídeos de la exposición que hice y entrega de premios y las trasnsparencias y alguna documentación en pdf adicional que recopila información del proyecto (en los vídeos he cortado algún trozo donde se perdía tiempo al poner el vídeo y bajado el volumen de los aplausos).

Tivion – Exposicion CUSL CLM – Parte 1 (9 min 43 seg)

Imagen de previsualización de YouTube

Tivion – Exposicion CUSL CLM – Parte 2 (9 min 21 seg)

Imagen de previsualización de YouTube

Entrega de premios CUSL 2009-2010 Castilla – La Mancha (3 min 18 seg)

Imagen de previsualización de YouTube

Documentación

Ya os contaré que tal en Mayo, y ¡suerte al resto de finalistas!

¿Te gusta el software libre y realizas algún desarrollo en Castilla-La Mancha? Te animo a que te apuntes para el próximo año y me hagas competencia ;)

Más info en http://www.ceslcam.es/concurso/

Notas de Centro de Excelencia de Software Libre de Castilla-La Mancha en Facebook

Finalistas del IV Concurso Universitario de Software Libre

Escuela
Superior de Ingeniería de la Universidad de Cádiz
VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)


Comprobar si un usuario es root con Python

7 12 2008

Python root

Cuando realizamos algún programa en Python a veces es necesario conocer si el usuario que lo ejecuta tiene privilegios de administrador o superusuario, también conocido como usuario root.

Con Python este asunto es una tarea bastante sencilla, simplemente debemos importar la biblioteca “os” (Operating System, del inglés Sistema Operativo) y llamar a la función geteuid() que nos devuelve el id del usuario efectivo (euid=efective user identification). Si esta función nos devuelve el valor de 0 entonces es el usuario root.

Si guardamos el siguiente código (por ejemplo con el nombre check_root.py) y le damos permisos de ejecución, podremos comprobar fácilmente esta tarea:

?Descargar check_root.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""
Comprobar si el usuario es root
"""
 
import os
import sys
 
if os.geteuid() != 0:
    print 'Debes tener privilegios root para este script.'
    sys.exit(1)
else:
    print 'Bienvenido usuario root'

Para darle permisos de ejecución a nuestro script check_root.py:

1
$ sudo chmod +x check_root.py
VN:F [1.9.13_1145]
Rating: 9.5/10 (2 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)


Páginas: Anterior 1 2 3 Siguiente