Logiciels UML et Merise sous Linux

Le développement d'un projet se déroule en plusieurs étapes majeurs dont la conception technique. Il existe un tas de méthodes dont Merise et l'UML. Quels sont les outils existants pour la réalisation des différents diagrammes inhérents à ces méthodologies ?

Le MCD permet de décrire les entités d'une application et de mette en évidence les relations qui existent entre elles. Pour la réalisation de ce diagramme, NextObjects est vraiment idéal. Il permet d'ailleurs de générer le MPD, du SQL, des modèles de classes et bien d'autres choses. Le site d'éditeur est down mais vous pouvez télécharger le logiciel depuis SourceForge.

NextObjects

Bien que NextObjects puisse générer des MPD, j'utilise Mysql Workbench pour leur génération. Je travail avec MySQL et il contient tous les outils dont j'ai besoin. Par ailleurs, il est possible d'écrire des plugins en LUA pour, à titre d'exemple, générer des schéma XML au format Propel. Il est maintenant packagé dans Debian (Jessie, dépôt non-free).

Mysql-Workbench

Pour la génération des diagrammes de cas d'utilisation, de séquence, de classe, d'état et d'activité, j'utilise 2 outils. Le premier est ArgoUML, écrit en JAVA aqui fonctionne très bien. Il est intuitif et permet de cadrer ce qu'on fait. Il est édité par Tigris et est dispo sur leur site.

ArgoUML

Enfin, il m'arrive d'utiliser l'incontournable DIA qui est un véritable couteau suisse des diagrammes. Il a cependant 2 défauts majeurs : la mise en page est parfois hasardeuse et il manque certains pictigrammes. Il est packagé dans toutes les bonnes distributions depuis des lustres.

Dia

Debian + XPS 15 (9530)

Mon agence m'a acheté le dernier XPS 15 de Dell (9530). C'est une belle machine, autant à l'extérieur qu'à l'intérieur...Cependant, aussi jolie soit-elle, installer Debian dessus n'a pas été de tout repos. Livrée avec Windows 8 et des Gigas d'espace disque monopolisés par les partitions EFI, Windows 8 et les partitions de restauration, j'ai commencé par faire le grand ménage en virant tout.

J'ai installé Debian dessus, je me suis confronté à l'éternel problème des matériels plus ou moins reconnus. J'ai quand même eu de la chance car une grande partie d'entre eux l'était.

Il faut savoir quel ce laptop n'a pas de port ethernet, ainsi, il m'a été nécessaire d'utiliser un adapteur USB/Ethernet. Sachez que Debian Wheezy pète une pile avec l'USB3 et les dongles USB2. Faute au kernel ? Sans doute, mais je n'ai pas voulu perdre de temps avec ces conneries donc j'ai migré sur la SID. Le kernel est donc plus récent et j'ai écarté des problèmes de connectivité.

Après l'installation, j'ai rencontré 3 problèmes majeurs :

  • pas d'interface wifi
  • pas de son
  • mplayer lisait les vidéos de manière saccadée
  • mon touchpad ne me permettait pas de faire un middle click : pas pratique du tout pour faire des copiés/collés

Le Wifi

Il a suffit d'installer le paquet iwlwifi et tout est rentré dans dans l'ordre. Ça implique d'avoir paramétré les dépots non-free (@see).

Le son

Ce souci de son m'a littéralement fait rager. Le problème est simple en fait : la sortie HDMI est considérée comme une carte son et Alsa la positionne comme carte par défaut. Pour résoudre le problème, j'ai installé pulseaudio (et ça m'a fait mal aux fesses) et j'ai placé la conf suivante dans mon ~/.asoundrc :

Edit : Pulseaudio ne sert à rien en fait....sauf poser des problèmes donc il a été supprimé.

pcm.!default { 
    type hw 
    card 1 
} 

ctl.!default { 
    type hw 
    card 1 
} 

Au démarrage de mon WM (i3), j'exécute pulseaudio comme suit :

exec pulseaudio --start

Et j'ai également cet init d'Alsa :

exec alsactl init -c 1

Mplayer

Pour pouvoir lire des vidéos avec mplayer2, voici la conf que j'ai écrite dans ~/.mplayer2/config

[default]
vo=x11
vc=ffh264vdpau,ffmpeg12vdpau,
zoom=1

Le Touchpad

Pour "activer" le middle click sur le touchpad, j'ai transpiré quelques heures. Encore une fois, le problème est simple (et la solution également) :

  • le touchpad n'a qu'un seul boutton
  • c'est la position du clique qui détermine si on fait un clique gauche, un clique droit ou bien le clique du mileu (middle click)

Synclient (en ligne de commande) permet de connaître les valeurs attribuées par Synaptics pour les paramètres du touchpad. Il s'avère que par défaut, le middle click a tout à 0, c'est à dire qu'aucune position de clique ne permet de détecter ce fameux clique.

Il suffit donc de modifier ces valeurs et tout devrait rentrer dans l'ordre. Voici ce que j'exécute au lancement du WM :

exec synclient MiddleButtonAreaLeft=2700
exec synclient MiddleButtonAreaRight=3500

Un bout de scotch pour repérer au touché cette position (entre les clique gauche et le clique droit) et l'affaire est bouclée.

J'espère que ça pourra aider :)

[tips] Envoyer du mail depuis un post de développement

Le développement d'applications web nécessite souvent l'envoi d'emails, ne serait-ce que pour la gestion d'un espace membre par exemple. On a deux façons de voir les choses quand on est encore en phase de développement :

  • Utiliser un serveur de mail "fake" qui va délivrer une copie du mail si il avait été envoyé
  • Utiliser un vrai serveur d'envoi de mail

La première méthode est pas mal du tout, cependant il arrivera le moment où il faudra vraiment envoyer le mail, ne serait-ce que pour s'assurer qu'on n'est pas passé à côté de quelque chose (comme un problème lié aux clients mails). Ainsi, je suis assez partisant d'envoyer du vrai mail, même dans la phase de développement.

Pour se faire, deux nouvelles solutions s'offrent à nous :

  • Passer par un serveur de mail en local pour délivrer le mail
  • Passer par un relais SMTP pour délivrer le message

Dans le premier cas, vous avez 1 chance sur 100 que le message ne soit pas bloqué par les services anti-spam. Du coup, on va préférer passer un relais SMTP qui lui ne devrait pas poser de problème.

Pour se faire, on va installer un serveur de mail en local puis configurer un relais SMTP. Ça veut dire que le serveur de mail va faire office de client pour se connecter à un autre serveur de mail pour délivrer nos messages. Le principal intérêt de cette méthode est que quelque soit le programme qui enverra du mail en utilisant le serveur de mail "localhost" pourra faire transiter les messages vers le relais SMTP et les délivrer correctement.

Le seul pré-requis est d'avoir un relais SMTP sur lequel se connecter. En d'autres mots, vous devez avoir un prestataire d'envoie de mail qui n'est pas trop restrictif (donc pas Free par exemple) : OVH, Gandi, Gmail, …

Il faut déjà installer un serveur de mail sur sa machine. Je vous propose d'utiliser Postfix dont la renommée n'est pas à faire :

Afficher/masquer le code
$ su - 
# aptitude update
# aptitude install postfix

Éditions à présent le fichier de conf (/etc/postfix/main.cf) :

Afficher/masquer le code
[...]
myhostname = exemple.fr

relayhost = serveur.smtp.relais # exemple : mail.deblan.fr
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
[...]

Il est nécessaire de prévoir un fichier pour s'authentifier sur le serveur SMTP relais :

Afficher/masquer le code
# touch /etc/postfix/sasl_passwd
# echo "serveur.smtp.relais login:password" > /etc/postfix/sasl_passwd

Modifiez le login et le password, si le login contient un "@", remplacez le par "#".

Afficher/masquer le code
# postmap /etc/postfix/sasl_passwd (à faire à chaque modification du fichier)
# chown root:root /etc/postfix/sasl_passwd*
# chmod 600 /etc/postfix/sasl_passwd*
# service postfix restart

À présent, si le relais mail n'est pas bloquant et que les identifiants sont bons, vous passerez par un "vrai" serveur de mails pour délivrer les messages de votre espaces de développement (et pas que).

Si vous envoyez le mail au nom d'un domaine qui n'est pas celui du serveur de mail, il faudra prendre le temps de faire une configuration SPF pour rendre l'envoi de mail légitime depuis ce serveur relais. À titre d'exemple, j'ai deux serveurs de mails qui peuvent délivrer des messages avec comme domaine d'expédition "deblan.fr". Les ip's associées sont 5.135.190.125 et 109.190.159.83. Voici les entrées DNS que j'ai créées :

Afficher/masquer le code
$ dig -t TXT deblan.fr
[...]
deblan.fr. 10739 IN TXT	"spf2.0/mfrom mx ip4:109.190.159.83 ip4:5.135.190.125 ~all"
deblan.fr. 10739 IN TXT	"v=spf1 ip4:109.190.159.83 ip4:5.135.190.125 ~all"
[...]

$ dig -t SPF deblan.fr
[...]
deblan.fr. 10739 IN	SPF	"spf2.0/mfrom mx ip4:109.190.159.83 ip4:5.135.190.125 ~all"
deblan.fr. 10739 IN	SPF	"v=spf1 ip4:109.190.159.83 ip4:5.135.190.125 ~all"
[...]

Si je fais un test de query SPF, voilà résultats :

Afficher/masquer le code
$ spfquery -i 5.135.190.125 -s foo@deblan.fr | tail -n 1
Received-SPF: pass (spfquery: domain of deblan.fr designates 5.135.190.125 as permitted sender) client-ip=5.135.190.125; envelope-from=foo@deblan.fr;
'
$ spfquery -i 109.190.159.83 -s foo@deblan.fr | tail -n 1
Received-SPF: pass (spfquery: domain of deblan.fr designates 109.190.159.83 as permitted sender) client-ip=109.190.159.83; envelope-from=foo@deblan.fr;

$ spfquery -i 1.2.3.4 -s foo@deblan.fr | tail -n 1
Received-SPF: softfail (spfquery: transitioning domain of deblan.fr does not designate 1.2.3.4 as permitted sender) client-ip=1.2.3.4; envelope-from=foo@deblan.fr;

Les 2 ip's que je rend légitimes passent le test sans problème alors que le 3ème est en échec. Ce test SPF devient très important et par expérience, c'est la source de beaucoup de rejets. Si vous avez des IPV6, pensez à les déclarer, je me suis fais avoir il y a quelques jours encore :)

J'espère que ça vous sera utile :)