Proj-2013-2014-Open DynDNS/UML

Cahier des charges

Lien vers document SRS -> Software Requirements Specification (SRS)

Review sur argoUML

ArgoUML est un logiciel libre de création de diagrammes UML. Programmé en Java, il est édité sous licence EPL 1.0. Il est multilingue, supporte la génération de code et l'ingénierie inverse. Les interfaces sont plus ou moins clairs et compréhensible par les utilisateurs soit normal ou soit développeur. La construction d’un diagramme se faire par la méthode drag-and-drop et on peut facilement ajouter, supprimer et modifier des composants dans un modèle existante. Il existe aussi un fonction d’export pour exporter le diagramme en format image(PNG, JPG etc), ce qui est pratique pour les intégrer dans un rapport ou présentation.

Une des avantages de ce programme est la différenciation des types de diagrammes par des boutons spécifiques. Par exemple si on veut générer un diagramme de classe, en appuyant sur le bouton, on peut avoir tous les interfaces nécessaires pour le faire et les fonctionnalités non-concernées sont omises.

La génération de code est supportée pour plusieurs langages comme C++, Csharp, JAVA, PHP, SQL etc. Etant des débutants dans la conception des diagrammes UML, nous avons trouvé que argoUML est un bon outil pour s’y lancer grâce à son interface ergonomique et facile. La seul inconvénient que nous avons constaté pendant le DM est la manque de support pour le type diagramme d’objet et nous avons dû utiliser un autre outil (googleDoc) pour faire cela.

Diagramme de contexte



Diagramme de cas d'utilisation



Diagramme de class



Diagramme d'objets



Diagramme de séquence
 * on se place sur le client qui vient de d'arriver sur un réseau public et a lancé le démon sur sa tablette



Diagramme d'états
 * l'état du client(démon)



Quelsques expressions OCL context Domain
 * 1)

inv : nbHosts > 0

context Host
 * 2)

inv : self.ipAddr == checkIPFormat

context ServeurREST
 * 3)

inv : self.nbDNSserver == 1

//nb de host doivent rester le même après modifications
 * 4)

context ServeurREST :: modification(hostname, address)

pre : x = self.domain.nbhosts

post : self.domain.nbhosts == x