Java 1,a) 1,b) 1,c) 1,d) Known Unknown Unknown Unknown 2 Known Unknown Archface-U iarch-u iarch-u Partial Model 1. Known Unknown Unknown Unknown Known Unknown 1 Kyushu University a) fukamachi@posl.ait.kyushu-u.ac.jp b) ubayashi@ait.kyushu-u.ac.jp c) hosoai@qito.kyushu-u.ac.jp d) kamei@ait.kyushu-u.ac.jp Archface-UArchface- Uncertain Archface-U Archface-U Archface-U 2 3 Archface-U 4 Archface-U 5 Archface-U Partial Model 6 34 7 1
2. 2.1 Partial Model [6] [4] [3] Known Unknown Known Unknown Famelis Partial Models: Towards Modeling and Reasoning with Uncertainty[4] Famelis Partial Model 1 Partial Model LTSLabelled Transition System 1 P2P 6 (a-f) Partial Model(g) Partial Model Partial Model OR Partial ModelΦ M Φ P Φ M Φ P Φ M Φ P SAT *1 SAT 1 True False *1 True False True SAT 1 P2P 6 (a-f) Partial Model(g) [4] Figure 1. 1 Partial Model M p [4] Table 1. Φ M Φ P Φ M Φ P Property p SAT SAT Maybe SAT UNSAT True UNSAT SAT False UNSAT UNSAT (error) Maybe Φ M Φ P Φ M Φ P SAT Φ M Φ P Φ M Φ P Maybe UNSAT Partial Model error 2.2 Known Unknown Partial Model Partial Model Partial Model 2
どれを実装するかが不確か 実装するかどうかが不確か 2 Archface-U 3 Observer Partial Model Partial Model Partial Model Partial Model 2 (1) (2) 2 1 Alternative 2 Optional 3. Archface-U 2 Archface[7] Archface-U 3.1 Archface-U Archface Java Archface Archface Archface iarch 4 Observer Archface Archface-U Archface-U Archface Certain Archface Uncertain Archface 2 2 Uncertain Archface Certain Archface 3.2 Archface-U Archface-U Component-and-Connector [1] Archface-U Archface-U Java Archface-U Observer Observer 1 Observer Observer Subject 2 Subject Observer 3 4 Observer UML 3
1 interface component Subject{ 2 void setstate(state state); 3 State getstate(); 4 void addobserver(observer observer); 5 } 6 interface component Observer{ 7 void update(); 8 } 9 uncertain component usubject extends Subject{ 10 [void _notify();] 11 { 12 void removeobserver(), 13 void deleteobserver() 14 }; 15 } 16 17 interface connector cobserverpattern{ 18 Subject=(Subject.setState ->Observer.update 19 ->Subject.getState ->Subject); 20 Observer=(Observer.update-> 21 Subject.getState ->Observer); 22 } 23 uncertain connector ucobserverpattern 24 extends cobserverpattern{ 25 Subject=(Subject.setState -> 26 [Subject._notify]->Observer.update 27 ->Subject.getState ->Subject); 28 } 5 Observer Archface-U Observer 4 Subject setstate Subject notify Observer update Observer update Subject getstate Subject Observer 5 Observer Archface-U 3.2.1 Certain Archface Certain Archface Archface 2 interface component Java Java 5 setstate interface connector FSPFinite State Process[5] 5 Observer.update Subject.getState Observer 3.2.2 Uncertain Archface Uncertain Archface AlternativeOptional 2 2 Alternative {}Optional []Archface-U Uncertain Archface Uncertain Archface Certain Archface Uncertain Archface Java 1 4. Archface-U Archface-U 4.1 Archface-U 6 Archface-U Partial Model Archface-U Java Archface-U Java Archface-U Partial Model Partial Model 2.1 Java 4.2 Archface-U Archface-U Java 3.2 4.2.1 Certain Archface 5 setstate 4
!"#".$.*%&! " # $' &! " # $' 7 Alternative Partial Model 2345-6&78-&2&"&- 2345-6&79:+&';< " / 1! 0 $ #?48-%#-%73,"&-?48-%#-%73,"&- > 2345-6&7=-&2&"&-!"#$%&#'() $"%&'"()*+,-( 6 Archface-U Observer.update Subject.getState Observer 4.2.2 Uncertain Archface 4.2.2.1 5 notify Optional notify Optional Optional Optional Optional Archface-U removeobserverdeleteobserver Alternative removeobserverdeleteobserver 4.2.2.2 5 ucobserverpattern notify Optional Archface-U Subject Optional 5 Subject.setState Subject. notify Observer.update Subject.getState notify Subject.setState Observer.update Subject.getState Alternative {} Uncertain Archface 5. Archface-U Partial Model 4.1 Archface-U Partial Model Partial Model Partial Model Archface-U 5.1 Archface-U Partial Model Archface-U Partial Model Archface-U Partial Model Archface-U 2 1 AlternativeOptional Archface LTS Archface-U 2 Partial Model 1 Alternative Optional 5.1.1 Alternative C1->{U1,U2}->C2 Archface-U 7 1 Model1 C1->U1->C2 Model2C1->U2->C2 2 2 7 Partial Model 5
!1! # # "!"#$%"&'()*+&,&$+#-"$%.+ ()*+& ', + & ', $! & %!!"#$%#&'"(')*$%#!) $#! # " - ' %# #1 $!./#0*04/#1%!50/#1%#60230./" #./!0*0/!1$!0230./# "1 %!./!0*0/!1$!02304/!1%!50/!1%#60230/!1$#0230./! "./#0*0/#1%!0230./" -1 7 %#./!0*0$!02304%!50%#60230$#0230./! "./#0*0/#1%#0230./" $# - 9 Alternative 8 Optional Partial Model 5.1.2 Optional C1->[U1]->C2 Archface-U 8 1 Model1C1->C2 Model2 C1->U1->C2 2 2 8 Partial Model Optional C2 Model1 3 4 Model2 2 4 Partial Model 5.2 Partial Model Archface-U Partial Model LTS Archface-U 1 1 1 1 Certain Archface 2 Alternative 3 1 4 Archface-U Partial Model Archface-U 1!"#$%"&'()*+& *2 *,, + '*.* ', ',, + - - 10.* '* & *, % + ( ', - /0*1#10*2'*1341/0, /0,1#10,2.*1341/0+./"0*0/"1$#0230./- /0,1#10,2',1341/0- /0+1#10+2',1341/0- ' ',,-$%)."&!#$%&$'(#)$%&$!"!"#$% & ' () $ % & ' (),2 /0,1#150,2.*1341/0+610,2',71341/0- /0,1#150,2.*13410+2',610,2',71341/0- +2 /0*1#10*2'*134150*2.*13410*2',610*2',7 341/0* -2 8 /0*1#1'*13415.*1341!"61!"71341/0* /0*1#1'*13415.*6971341',1341/0* /0*1#1'*1341:.*;1341',1341/0* Optional 2 1 1 5.1 Alternative Optional 5.2.1 Alternative Alternative 9 Partial Model 1 Partial Model $P1 2 $P2 2 2 Alternative $P1 Archface-U 1 3 Archface-U 4 Archface-U 5.1 6
!"#"!"#$%&#' 11 Archface-U iarch-u 5.2.2 Optional Optional 1 Alternative 2 $P2 = P2.U1 -> $P3 $P2 = P2.C2 -> $P4 $P3 $P4 3 4 Archface-U Alternative -> 1 3 $P1 Archface-U {} C2 {} C2 C2 Archface-U {} Alternative {U1, φ} φ U1 Optional 5.1 Archface-U 6. iarch 3.2 Archface-U iarch-u 11 iarch-u Eclipse[2] iarch-u Archface-U XText[8] DSLDomain Specific LanguagesJava JDTJava Development Tools ASTAbstract Syntax Tree API 3.2 Java 7. Archface-U iarch-u Java Partial Model A 26240007. [1] Allen, R. and Garlan, D.: Formalizing Architectural Connection, Proceedings of the 16th International Conference on Software Engineering, pp. 71 80 (1994). 7
[2] Eclipse - The Eclipse Foundation open source community website. http://eclipse.org/home/index. php (2015/01/11). [3] Elbaum, S. and Rosenblum, D. S.: Known Unknowns: Testing in the Presence of Uncertainty, Proceedings of the 22nd International Symposium on Foundations of Software Engineering, pp. 833 836 (2014). [4] Famelis, M., Salay, R. and Chechik, M.: Partial Models: Towards Modeling and Reasoning with Uncertainty, Proceedings of the 34th International Conference on Software Engineering, pp. 573 583 (2012). [5] Magee, J. and Kramer, J.: State Models and Java Programs (1999). [6] Salay, R., Gorzny, J. and Chechik, M.: Change Propagation Due to Uncertainty Change, Fundamental Approaches to Software Engineering, pp. 21 36 (2013). [7] Ubayashi, N., Nomura, J. and Tamai, T.: Archface: A Contract Place Where Architectural Design and Code Meet Together, Proceedings of the 32nd International Conference on Software Engineering, pp. 75 84 (2010). [8] Xtext - Language Development Made Easy! http: //eclipse.org/xtext/ (2015/01/10). 8