| Main | Develop |
|---|---|
RETUSS (Real-time Ensure Traceability between UML and Source-code System) ã¯ãUMLãšãœãŒã¹ã³ãŒãéã®ãã¬ãŒãµããªãã£ããªã¢ã«ã¿ã€ã ã«ç¶æããããŒã«ã§ãã
çŸåšã次ã«ç€ºãé ç®ã«å¯Ÿå¿ããŠããŸãã
- UML
- ã¯ã©ã¹å³
- ã·ãŒã±ã³ã¹å³
- ãœãŒã¹ã³ãŒã
- Java
- C++ïŒã·ãŒã±ã³ã¹å³ã«ã¯æªå¯Ÿå¿ïŒ
- Windows 10 Pro (64 bit) 1803
- IntelliJ IDEA 2019.1 (Community Edition)
- Java 11
- Gradle 5.4
æé ã®æŠèŠããæ¬¡ã«ç€ºããŸãã
- OpenJDK11ã®ã€ã³ã¹ããŒã«
- Gradleã®ã€ã³ã¹ããŒã«
- IntelliJã®ã€ã³ã¹ããŒã«
- Gitã³ãã³ãã®ã€ã³ã¹ããŒã«
- GitHubäžã®RETUSSã®ãã©ãŒã¯ããã³ã¯ããŒã³
- IntelliJã®æ¢åã·ã¹ãã å±éã§RETUSSã®build.gradleã®éžæ
- ãã«ãã³ãã³ãã®äœæ
詳现ãªèª¬æã¯ãRETUSSã®éçºç°å¢æ§ç¯ã説æããWikiãã芧ãã ããã
RETUSSã¯ã次ã®5ã€ã®æ§é ãæã¡ãŸãã
- 衚瀺éš
- 察å¿éš
- èšè¿°éš
- 倿éš
- ä¿ç®¡éš
åé ç®ãšã察å¿ãããã¡ã€ã«ã説æããŸãã
ãŠãŒã¶ã«ã¡ã€ã³ãŠã£ã³ããŠãšãœãŒã¹ã³ãŒããŠã£ã³ããŠã衚瀺ããæ©èœãæäŸããŸãã
ãšãããšã«ãã³ã€ã€ã§ãããå®éã¯åãªãGUIç»é¢ã§ãã
src/main/resources ãã£ã¬ã¯ããªäžã® retussMain.fxml ãã¡ã€ã«ããã³ retussCode.fxml ã«è©²åœããŸãã
衚瀺éšãåŒåºãåœä»€ããŸãšããŠä¿æããŠããã衚瀺éšã®ã€ãã³ããã³ãã©ãšå¯Ÿå¿ããåŠçãæäŸããŸãã
src/main/java/io/github/morichan/retuss/window ãã£ã¬ã¯ããªäžã® MainController.java ãã¡ã€ã«ããã³ CodeController.java ãã¡ã€ã«ã«è©²åœããŸãã
ã¯ã©ã¹å³ãã·ãŒã±ã³ã¹å³ãããã³ãœãŒã¹ã³ãŒãã®èšè¿°ã«å¿ èŠãšãªãåŠçãæäŸããŸãã
äžèšã®ãã¡ã€ã«ä»¥å€ã®ã»ãŒå
šãŠã«è©²åœããŸãããç¹ã«è©²åœããã®ã¯ã src/main/java/io/github/morichan/retuss/window ãã£ã¬ã¯ããªäžã® ClassDiagramDrawer.java ãã¡ã€ã«ããã³ SequenceDiagramDrawer.java ãã¡ã€ã«ã§ãã
ã¯ã©ã¹å³ãã·ãŒã±ã³ã¹å³ããŸãã¯ãœãŒã¹ã³ãŒãã®èšè¿°æ©èœã®å®è¡åŸãä»ã®ã¯ã©ã¹å³ãã·ãŒã±ã³ã¹å³ãããã³ãœãŒã¹ã³ãŒãã«å€æããåŠçãæäŸããŸãã
ãããšèšã£ãŠå¯Ÿå¿ãããã¡ã€ã«ã¯ååšãããåã¡ãœããå
ã«ç¹åšããŠããŸãã
å
šäœçã«å©çšããŠããã®ã¯ã src/main/java/io/github/morichan/retuss/translator ããã±ãŒãžã§ãã
ãããŸããã
åºæ¬çã«ãã¯ã©ã¹å³ãããœãŒã¹ã³ãŒãã«å€æããããããœãŒã¹ã³ãŒãããã·ãŒã±ã³ã¹å³ã«å€æããã ãã§ãã çµæçã«ã¯ã¯ã©ã¹å³ããã·ãŒã±ã³ã¹å³ã«å€æããŠããŸãããããããã¯ã©ã¹å³ã«ååšããªãæ¯èããã·ãŒã±ã³ã¹å³ã§è¡šããŠããããã倿ã§ãããšããããããŸããã
åºæ¬çã« src/main/java/io/github/morichan/retuss/window/ClassDiagramDrawer.java ãã¡ã€ã«ã§ãã
åºæ¬çã« src/main/java/io/github/morichan/retuss/window/SequenceDiagramDrawer.java ãã¡ã€ã«ã§ãã
ãããŸããã
ã·ãŒã±ã³ã¹å³ã®èšè¿°æ©èœãã»ãŒååšããªãããããã®ä»çµã¿èªäœãæ©èœããŠããŸããã å¯äžã®æ©èœã§ããã·ãŒã±ã³ã¹å³ã®åé€ã¯ãã¯ã©ã¹å³ã®æ§é ã¬ãã«ã倿Žãããããã·ãŒã±ã³ã¹å³ -> ã¯ã©ã¹å³ -> ãœãŒã¹ã³ãŒãã®é ã«å€æããŸãã
åºæ¬çã« src/main/java/io/github/morichan/retuss/window/CodeController.java ãã¡ã€ã«ã§ãã
åºæ¬çã« src/main/java/io/github/morichan/retuss/window/CodeController.java ãã¡ã€ã«ã§ãã
ãã¯ã©ã¹å³ãæ å ±ããã·ãŒã±ã³ã¹å³ãæ å ±ãããã³ããœãŒã¹ã³ãŒããæ å ±ãå éšããŒã¿ãšããŠä¿æããŸããä»ã®éšã«ããŒã¿ã®æäŸãããŸãã
ãšãããšãäœãä»äºãããŠããã¿ããã§ããããããªããšã¯ãããŸããã çµå±ã¯æ å ±ãšããåã®å éšããŒã¿ãªã®ã§ãåå°ã«ç¹åšããŠããŸãã
å€ãã¯ã src/main/java/io/github/morichan/retuss/language ããã±ãŒãžã§ãã
ãã®RETUSSãã©ã®ããã«ãªã£ãŠãããšè¯ãã®ããéçºè ã®äž»èŠ³ã§æžããŠãããŸãã
ãªã«ãããããã¯ãã£ãŠããããã§ãã
ãã£ããJavaFXãå©çšããŠããã®ã«ããŸã£ããMVCæ§é ãããããŸããã
Cã®äžã«Mãååšããåã¯ã©ã¹ã責任ãæã¡åããŠããããä¿®æ£ã倧å€ã§ãã
äžçªã®åé¡ã¯ãSequenceDiagramDrawerã¯ã©ã¹ãClassDiagramDrawerãä¿æããŠããªãç¹ã ãšæã£ãŠããŸãã MainControllerã¯ã©ã¹ãSequenceDiagramDrawerã¯ã©ã¹ãä¿æããŠããã®ã¯ããã®ã§ãããClassDiagramDrawerã¯ã©ã¹ããçŽæ¥å€æããã·ãŒã±ã³ã¹å³ãèšå®ã§ããŸããã MainControllerã«äžåºŠæ»ããŠããèšå®ããªãããªããã°ãªãããåããã©ãããšãã®äžãããŸããã ãã£ããJavaãå©çšããŠããã®ã ãããåç §æž¡ãã§SequenceDiagramDrawerã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã䞡人ãæãŠã°ããã®ã«ãšæããŸãã
äžèšã®è©±ã¯ãClassDiagramDrawerã¯ã©ã¹ã«ã€ããŠãå šãåãã§ãã
å®ã¯ãç°¡åã«ã·ãŒã±ã³ã¹å³ããã¯ã©ã¹å³ã«å€æã§ããŸããã
ãšããã®ããã·ãŒã±ã³ã¹å³ã1ã€åé€ããŠããå®ã¯äœãå€ãã£ãŠããŸããã æ¬¡ã®æé ãèžãå¿ èŠããããŸãã
- ã¯ã©ã¹å³ã¿ããéžæãããœãŒã¹ã³ãŒãã«ã·ãŒã±ã³ã¹å³ã®å 容ãåæ ããã
- ãœãŒã¹ã³ãŒããèšè¿°ïŒæ¹è¡ã远å ããçšåºŠã§ããïŒããã¯ã©ã¹å³ã«åæ ããã
ãŸãããã®æã«ã¡ãœããå ã®æ§æã¯å šãŠæ¶ããŠããŸããŸãã
æãããã·ãŒã±ã³ã¹å³ãåé€åŸã«ã¯ã©ã¹å³ã¿ããéžæãããšãã¯ã©ã¹å³ã®å éšæ å ±ã«åæ ãããã®ããœãŒã¹ã³ãŒãã«å€æããŠããããã ãšæšæž¬ããŸãã ClassDiagramDrawerã¯ã©ã¹ã§ãœãŒã¹ã³ãŒãã«å€æããéãã·ãŒã±ã³ã¹å³ã®æ å ±ãŸã§å¯Ÿå¿ããŠããªãã®ãåå ã§ãã
ã·ãŒã±ã³ã¹å³ãšC++ã«é¢ããé ç®ã«ã€ããŠã¯ãå šããã¹ãã³ãŒããååšããŠããŸããã ã«ãã¬ããžã70%ãåã£ãŠããŸãããã®ãŸãŸã§ã¯åé¡ã ããã§ãã
ãããŠã€ã³ãã³ãã¯æããŠã»ããã£ãã§ãã ããã§ãªããŠããæžãæ¹ãªã©ã«ã¯ãŸã ãŸã æ¹åã®äœå°ã¯ãããšæããŸãã ã³ã¡ã³ããªããŠæ¶ããŠããããšæãã®ã§ããã
åé¡ã¯ããã©ãçæ³ãèªãããã§ãã
ãªã«ããæéèŠé ç®ã ãšæã£ãŠããŸãã
ãããŠãã¡ãã»ãŒãžã®è¿œå ã»å€æŽã»åé€ãããã¯ã§ããããã«ãããã§ãã ãŸããã©ã€ãã©ã€ã³ã®å€æŽã¯ãã£ãŠããããšæããŸããã远å ãšåé€ã¯ç¡ããŠããããšæããŸãã ã©ã€ãã©ã€ã³ã®è¿œå ã¯ãã¡ãã»ãŒãžå ãå€ãªå Žæã«çœ®ãããšã§ãèªåçã«è¿œå ããã°ããã§ãã ã©ã€ãã©ã€ã³ã®åé€ã¯ãé¢ä¿ããŠããã¡ãã»ãŒãžãå šãŠåé€ããéã«åé€ããã°ããã§ãã
æ»ãå€ããªãvoidåã§åŒæ°ãç¡ãã¡ãœãããšãä»£å ¥æãšããŒã«ã«å€æ°å®çŸ©æã ãã§ã¯æããã«åäžè¶³ã§ãã ãã£ãšå¢ããããã§ãã
ãšããããäžçªã¯ifæãforæã«å¯Ÿå¿ããè€åãã©ã°ã¡ã³ããèšè¿°ã§ããããã«ãã¹ãã§ãã ã·ãŒã±ã³ã¹å³åŽã§ã®èšè¿°æ©èœãšããŠã远å ãããã§ãã
é¢ä¿ã®é¢ä¿å ãŸãã¯é¢ä¿å ã®å€æŽããé¢ä¿ã®ç·ã®æãç·å¯Ÿå¿ãªã©ãã§ããããšã¯ãŸã ãŸã ãããŸãã
ç¹ã«ãã¯ã©ã¹ãŸãã¯é¢ä¿ã®é衚瀺ã¯ããã€ããã£ãŠã¿ããã§ãã ã¯ã©ã¹ãšé¢ä¿ãå€ããªãããããšããã£ã±ãèŠã¥ãããªããããã€ã³ã©ã€ã³å±æ§ã«çœ®ãã°åé¡ãªããšæããŸãã
ããšãããã±ãŒãžã«å¯Ÿå¿ãããã§ãã å¯èŠæ§ã®ããã±ãŒãžããäœã®æå³ãæã£ãŠããªãã®ããã£ãããªãã§ãã
ããããã£ã®readOnlyãéç屿§ãªã©ãJavaãC++ã§ãæ¯èŒçç°¡åã«å€æèŠåãäœãããããã®ã¯äœãããã§ãã ãã£ããfescueãå©çšããŠããã®ã«ãRETUSSã§ã§ããããšãæ£èŠè¡šçŸãšã»ãŒå€ãããªãã®ã¯ã€ãŸããªãã§ãã
倿èŠåã«ã€ããŠã¯ãäžçªã®ç ç©¶é ç®ã ãšæãã®ã§ãæ¯éãšãèããŠã¿ãŠãã ããã
ããã¯ãããªã«å¿ èŠæ§ãæããŠããŸããã ããããããã°äŸ¿å©ã§ããããšã«ã¯å€ããããé©åœã«ãšã©ãŒãåºãã°ãããããªæ°ãããŸãã
ãããããœãŒã¹ã³ãŒãäžã§èšè¿°ããéã«ããã¡ãã¡ãšã©ãŒãåºãŠãããšé¬±é¶ããã§ãã 倿°hogeãæ¢ã«ååšããç¶æ ã§ãhoge2ãæžãããšhogeãŸã§æžããšãšã©ãŒãåºãŠæ»ãããã®ã¯ãåä»ãã®äžãããŸããã ãã®èŸºã®UIãã©ããããã§ãäžå¿ç 究察象ã«ãªããªãããšãç¡ããšæããŸãã
ãã©ãããªã«é¢çœãããšèšããããšãããããããŸããã
ãããŠãœãŒã¹ã³ãŒãã¯å€éšãã¡ã€ã«ã«ä¿åãããã§ãã
UMLã®å€éšãã¡ã€ã«ä¿åã«ã€ããŠã¯ãXMIã䜿ãã¹ãã ãšæããŸãã 仿§ãããããæå¿µããŸãããããã£ãŠã¿ãŠããããšæããŸãã ç¹ã«ãXMIã®å ¥åºåãã§ãããšãå¥ã®UMLããŒã«ãšäœµçšã§ãããããã¡ãªããã¯å°å³ã«é«ãã§ãã
å人çã«ã¯ãPlantUML圢åŒã«åºåãšããã®ãé¢çœããšæããŸãã ããŒãµã¯PlantUMLãæã£ãŠããã®ãã©ããè¬ã§ããã詊ããŠã¿ã䟡å€ã¯ããã®ã§ã¯ãªãã§ããããã
RETUSSã¯ãå¥ã«ãªããžã§ã¯ãæåèšèªã«ã®ã¿å¯Ÿå¿ããŠããããã§ã¯ãããŸããã UMLãšã®å¯Ÿå¿é¢ä¿ããå®è£ ã§ããã°ããŸããœãŒã¹ã³ãŒãã®æ§æè§£æãã§ããã°ãã©ã®ãããªèšèªã«ã察å¿ã§ããŸãã
ã€ã³ã¿ããªã¿èšèªã颿°åèšèªã«å¯Ÿå¿ã§ãããšãããã¯ããã§é¢çœããã§ãã
ã¯ã©ã¹å³ã§ããŒããèšè¿°ã§ããæ©èœã¯ç¡ããªããŸããã ããã¯ãããŒããæžããŠããœãŒã¹ã³ãŒãã«åæ ã§ããªãããã§ãã
ãŸãããœãŒã¹ã³ãŒãäžã§ã³ã¡ã³ããæžããŠããããã«æ¶ããŠããŸããŸãã ããã¯ãã³ã¡ã³ããæ§æè§£æããŠããããã¯ã©ã¹å³ã«å¯Ÿå¿ã§ããªãããã§ãã
ããããã©ãã«ãäžäŸ¿ã§ãªããŸããã ããŒãã¯ã¡ã¢ãšããŠåœ¹ç«ã€ã®ã«ããããç¡ãã®ã¯ã€ããã§ãã ãã¡ãããã³ã¡ã³ãããªãã®ã«ãœãŒã¹ã³ãŒããæžããªããŠãèŠè¡ã§ãããããŸããã ãã²å¯Ÿå¿ããŠã»ããã§ãã
ãã£ããUMLã«ã¯OCLãšãããªããžã§ã¯ãå¶çŽèšèªãããã®ã ããããã²äœ¿ãã¹ãã§ãã 屿§ããã³æäœã®ããããã£ã§äœ¿ãã®ããã¡ããã§ãããããŒãã«æžããšããã®ãæã ãšæããŸãã
ã©ã¡ãã«ãããOCLã®æ§æè§£æåšã®ç»å ŽãåŸ ãããŸãã
ãããç¡ããšãRETUSSã¯C++ã«å¯Ÿå¿ããŠããããšãŸã§èšããªãã§ãããã
ããããããããã¡ã€ã«ãã察å¿ããŠããªãçŸåšãã©ã®ããã«å®è£ ãæžãã¹ããã¯èãã©ããã§ãã ãŸããC++ã®æ§æè§£æåšãããŸãåªç§ã§ãªãããããdefineæããããšãã¡ãšããC++ã®æ§æè§£æèªäœã«ãåé¡ãå€ããã§ãã
楜ãããããããŸãããã
- ãã¹ãã³ãŒãã®ã³ã³ãã€ã«æã«ã¯
-Djdk.attach.allowAttachSelfã·ã¹ãã ããããã£ã远å ããŠãã ããã - ãã«ãããéã«TestFXã«ããGUIãã¹ããå®è¡ãããããããŠã¹ãªã©ãåãããªãããã«ããŠãã ããã
- JMockitã¯ä»ã®ã©ã€ãã©ãªãšæ¯ã¹ãŠããããŒãžã§ã³ã®éãã«ãã仿§å€æŽãæ¿ããããã§ãã ãããŸã§æ žãšãªããããªäºã¯ããŠããªããšæããŸãããæ°ãä»ããŠãã ããã
- ãã¹ãã³ãŒãå ã§ã¯Hamcrestã§ã¯ãªãAssertJã®ã¿ã䜿çšããŠããŸãããTestFXãHamcrestãå©çšããŠãããããHamcrestãé€å€ã§ããŸããã ãã¹ãã³ãŒãå ã§ã¯AssertJã®ã¿ã䜿çšããŠãããããšå©ãããŸãã