June, 27 2012, 3113 room at Faculty of Computer Science, Universitas Indonesia, i presented my thesis work to lecturers, Drs. Yohannes Stefanus Ph.D and Prof. Heru Suhartanto Ph.D. My friends from FMSE Lab and Ultra 2008 came to see presentation. They supported me very well. That afternoon, i successfully defended my thesis arguments. I got nice discussion with my lecturers, even though i can’t answer some questions satisfactorily. They asked me philosophical questions in my research and it is not easy to explain about it to lecturers. Hahaa. 😀
My thesis research is in formal method and software engineering area. I don’t think before, i will do research in this topic. I would prefer to do research in cryptography and information security area. For some reasons, i had to forget about it and search another topic. Then i did ‘random search’ to look for my thesis topic. This topic must be fun and interesting for me to do and the important thing, i need to feel research experience.
February, 2012. I rushed off to campus in the afternoon. I had a schedule to meet Dr. Ade Azurat to talk about offer of thesis topic. When i heard offered topic for the first time, i feel strange with it: Behavior tree. What kind of tree it is, i thought. Dr. Ade kept explaining the topic enthusiastically. For further explanation about behavior tree, i’m asked to attend tomorrow saturday meetup in Formal Method in Software Engineering Lab. Mmm, maybe it will be interesting.
After that Saturday meetup, i accepted this topic in behavior tree *challenge accepted*. My search is over here. Although it is still obscure, i decided to take and started to learn more. Now i can say, i was pleased with my decision. Alhamdulillah. 🙂
Right now i want to explain a little thing about behavior tree to you. Maybe you are interested with this idea. 😉
Behavior tree is related to modeling software requirements problem. As we know, requirements are written in natural language. As usual and best practice, modeling requirements uses UML (Unified Modeling Language). In UML, we create many diagrams: class diagram, use-case diagram, sequence diagram, etc. This diagrams is nice to use for us. But we can’t ensure diagrams that we’ve created consistent each other. The diagrams are not able to detect aspects of ambiguity, inconsistency, and incompleteness of the modeling requirements. Moreover, there is no verification method is available for model of software requirements.
For this need, behavior tree is introduced. Behavior tree is diagram or graphical notation like a tree structure to model requirements formally. It has formal representation of the requirements. Since it is formal, requirements can be modeled and verified.
Diagram below explains about idea to model requirements using behavior tree.
In behavior tree, requirements is divided into pieces of requirement. One piece of requirement is modeled into single behavior tree. Then all single behavior tree can be integrated to one behavior tree. This integrated behavior tree represents our requirements. From this integrated behavior tree, we can verify our model of requirements, simulate and animate the trace of error, and even generate code from the model! 😀
To make behavior tree idea clear for you, below example of requirement in natural language labeled R1 and its behavior tree. Let’s see.
R1: Trains in the running state. When the train began to approach the lights, machinist noticed the light signal.
Okay, i think it is enough to introduce behavior tree. It is interesting, isn’t it? I’m still learn more about behavior tree. I and my friends in FMSE have a dream to make Integrated Tool in Behavior Tree. So, non-expert user can model requirements to behavior tree, then simulate and verify it easily.
In the end of words, i want to say, “woow, this is feel of research.” Nice experience with behavior tree. Next step started. Ganbatte for this kind of tree. Yayy. \:D/