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
- 1)
context Domain
inv : nbHosts > 0
- 2)
context Host
inv : self.ipAddr == checkIPFormat()
- 3)
context ServeurREST
inv : self.nbDNSserver == 1
- 4)
//nb de host doivent rester le même après modifications
context ServeurREST :: modification(hostname, address)
pre : x = self.domain.nbhosts
post : self.domain.nbhosts == x