Behaviour Engineering

Created by Jijith Nadumuri at 28 Apr 2010 16:30 and updated at 28 Apr 2010 16:33

A New Way To Write Your URS

Let us discuss on a topic which can cause a rethink on how we write URS, SRS etc and the way we gather software requirements from our customers. It is about behavior-engineering and behavior-trees.

Behavior-Engineering is a new discipline that is related to systems and software engineering. Behavior-engineering employs a graphical Behavior Modeling Language (BML). It is used to construct complete behavior-trees from the utterance of a customer as he/she speaks in natural language, about his requirements or describe the desired behavior of the system. It is not restricted to software-requirements alone, but is applicable to user-requirements gathering process in any discipline or where ever there is a need to describe behavior. Behavior-Trees are a cognitive compromise between pictures and words. It is different from a flow-chart. A flow-chart is closer to the source-code and the computer-programming language. It is a representation of the source-code, focusing its logical flow. A behavior-tree on the other hand, is closer to the natural-language spoken by the customer or the user, as he/she describes the user-requirements.

The Behavior-Tree here captures the fragment of behavior: “When a car arrives, if the gate is open the car may proceed, otherwise if the gate is closed, when and if the driver presses the button the gate will open and then the car may proceed”. Each tagged rectangle refers to a component (or entity or person) in a state. The ?? … ?? Parenthesis for a state refers to an event, the ? … ? Parenthesis refers to a condition/decision associated with a component and a state parenthesized by […] refers to the named component realizing the parenthesized state. The event corresponding to the car being at the entrance is the root of the behavior tree.

Behavior Trees represent, in a formal graphical form, natural language descriptions of behavior of people, organizations, “things” and systems. Wherever there is behavior, there is something that is behaving – hence the component-state representation. Behavior involves events, conditions/decisions, and actions that lead to the realization of states by components or entities. Translation of behavior to a behavior tree and the subsequent integration of behavior trees help us uncover problems with original textual descriptions. What is equally important is that Behavior Trees amplify our ability to deal with complexity. They do this by providing contextually integrated descriptions of behavior.

Once behavior has been translated and integrated, the resulting representation has significant emergent properties. It can be used systematically to derive the architecture of the system together with the integrated behavior of each of the individual components in the system. Next time when you speak to the customer to capture what he/ she says about his / her requirements, listen carefully and write it in the form of a behavior tree. Show it back to the customer for any changes. After refinement, it will be an excellent document that can act as your URS or SRS.

You can read more about this in the following links:-

  1. Introduction: Behavior Engineering
  2. Introduction : Behavior Tree
  3. Very Interesting Case Studies

Share:- Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License