<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.weizmann.ac.il/playgo/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.weizmann.ac.il/playgo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smadar</id>
		<title>WeizmannWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.weizmann.ac.il/playgo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smadar"/>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Special:Contributions/Smadar"/>
		<updated>2026-06-26T16:21:49Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.22.4</generator>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2021-04-28T09:53:22Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Version 5.0 ===&lt;br /&gt;
[https://drive.google.com/file/d/1bd9OIj2au6Oepg-sznuiiqeJn4OaafAs/view?usp=sharing PlayGo version 5.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/file/d/1TosVvv7DxSbyvfAWvGjtkaQC9exuk5Kq/view?usp=sharing PlayGo 5.0 User Guide]&lt;br /&gt;
&lt;br /&gt;
For high-resolution screen: follow the instructions [http://wiki.weizmann.ac.il/playgo/index.php/Troubleshoot#Resolution_problem_when_launching_PlayGo here] to fix the display.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Version 4.0 ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/hgjufxvyhnewpv2cr99x2dnn1mk3jdqc PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Version 4.0 ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/fce9sr9uki848564fqe9jx5dukhrmt0i PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/yb63vltoyd14ytkx8z5hhiq1bbaeqymo PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code of version 4.0 is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2021-04-28T09:50:04Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== Resolution problem when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': In high-resolutions laptop screen PlayGo may look strange having a very small icons and fonts. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': To scale Eclipse look on Windows 10, change the PlayGo settings as follows:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Right click the playgo.exe Icon &amp;lt;br&amp;gt;&lt;br /&gt;
2. Select '''Properties''' &amp;lt;br&amp;gt;&lt;br /&gt;
3. Select the '''Compatibility''' Tab &amp;lt;br&amp;gt;&lt;br /&gt;
4. Click the '''Change high DPI settings'''&amp;lt;br&amp;gt;&lt;br /&gt;
4. Under '''High DPI scaling override''' section check the '''Override High DPI scaling behavior''' option &amp;lt;br&amp;gt;&lt;br /&gt;
4.1 In '''Scaling performed by''' select '''System''' &amp;lt;br&amp;gt;&lt;br /&gt;
5. Finally, apply the changes by clicking the '''Apply''' or '''Ok''' buttons&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:enableJavaDebug.png|600px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2020-09-21T07:46:46Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* = Version 5.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Version 5.0 ===&lt;br /&gt;
[https://drive.google.com/file/d/1bd9OIj2au6Oepg-sznuiiqeJn4OaafAs/view?usp=sharing PlayGo version 5.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
=== Version 4.0 ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/hgjufxvyhnewpv2cr99x2dnn1mk3jdqc PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Version 4.0 ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/fce9sr9uki848564fqe9jx5dukhrmt0i PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/yb63vltoyd14ytkx8z5hhiq1bbaeqymo PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code of version 4.0 is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2020-09-21T07:46:27Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Version 5.0 ==&lt;br /&gt;
[https://drive.google.com/file/d/1bd9OIj2au6Oepg-sznuiiqeJn4OaafAs/view?usp=sharing PlayGo version 5.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
=== Version 4.0 ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/hgjufxvyhnewpv2cr99x2dnn1mk3jdqc PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Version 4.0 ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/fce9sr9uki848564fqe9jx5dukhrmt0i PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/yb63vltoyd14ytkx8z5hhiq1bbaeqymo PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code of version 4.0 is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2020-07-12T14:32:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Error when launching PlayGo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
'''Problem''': In high-resolutions laptop screen PlayGo may look strange having a very small icons and fonts. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': To scale Eclipse look on Windows 10, change the PlayGo settings as follows:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Right click the playgo.exe Icon &amp;lt;br&amp;gt;&lt;br /&gt;
2. Select '''Properties''' &amp;lt;br&amp;gt;&lt;br /&gt;
3. Select the '''Compatibility''' Tab &amp;lt;br&amp;gt;&lt;br /&gt;
4. Click the '''Change high DPI settings'''&amp;lt;br&amp;gt;&lt;br /&gt;
4. Under '''High DPI scaling override''' section check the '''Override High DPI scaling behavior''' option &amp;lt;br&amp;gt;&lt;br /&gt;
4.1 In '''Scaling performed by''' select '''System''' &amp;lt;br&amp;gt;&lt;br /&gt;
5. Finally, apply the changes by clicking the '''Apply''' or '''Ok''' buttons&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:enableJavaDebug.png|600px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2020-07-12T14:29:51Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Error when launching PlayGo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
'''Problem''': In high-resolutions laptop screen PlayGo may look strange having a very small icons and fonts. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': To scale Eclipse look on Windows 10, change the PlayGo settings as follows:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Right click the playgo.exe Icon &amp;lt;br&amp;gt;&lt;br /&gt;
2. Select '''Properties''' &amp;lt;br&amp;gt;&lt;br /&gt;
3. Select the '''Compatibility''' Tab &amp;lt;br&amp;gt;&lt;br /&gt;
4. Under Settings Section check the '''Override High DPI scaling behaviour''' option &amp;lt;br&amp;gt;&lt;br /&gt;
4.1 In '''Scaling performed by''' Select '''System''' &amp;lt;br&amp;gt;&lt;br /&gt;
5. Finally, click the '''Apply''' or '''Ok''' button&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:enableJavaDebug.png|600px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2020-07-12T14:29:19Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Error when launching PlayGo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
'''Problem''': In high-resolutions laptop screen PlayGo may look strange having a very small icons and fonts. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': To scale Eclipse look on Windows 10, change the PlayGo settings as follows:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Right click the PlayGo Icon &amp;lt;br&amp;gt;&lt;br /&gt;
2. Select '''Properties''' &amp;lt;br&amp;gt;&lt;br /&gt;
3. Select the '''Compatibility''' Tab &amp;lt;br&amp;gt;&lt;br /&gt;
4. Under Settings Section check the '''Override High DPI scaling behaviour''' option &amp;lt;br&amp;gt;&lt;br /&gt;
4.1 In '''Scaling performed by''' Select '''System''' &amp;lt;br&amp;gt;&lt;br /&gt;
5. Finally, click the '''Apply''' or '''Ok''' button&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:enableJavaDebug.png|600px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2020-07-12T14:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Error when launching PlayGo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
'''Problem''': In high-resolutions laptop screen PlayGo may look strange having a very small icons and fonts. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': To scale Eclipse look on Windows 10, change the PlayGo settings as follows:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Right click the PlayGo Icon &amp;lt;br&amp;gt;&lt;br /&gt;
2. Select '''Properties''' &amp;lt;br&amp;gt;&lt;br /&gt;
3. Select the '''Compatibility''' Tab &amp;lt;br&amp;gt;&lt;br /&gt;
4. Under Settings Section check the '''Override High DPI scaling behaviour''' option &amp;lt;br&amp;gt;&lt;br /&gt;
  4.1 In '''Scaling performed by''' Select '''System''' &amp;lt;br&amp;gt;&lt;br /&gt;
5. Finally, click the '''Apply''' or '''Ok''' button&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:enableJavaDebug.png|600px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo</id>
		<title>PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo"/>
				<updated>2017-04-20T11:03:08Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Related Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to PlayGo, a comprehensive tool for behavioral, scenario-based, programming, built around the language of [[Live sequence charts|''live sequence charts'' (LSC)]] and its Java derivative, and the play-in/play-out methods for programming and execution.&lt;br /&gt;
&lt;br /&gt;
PlayGo is intended to provide extensive support for the vision of [http://www.wisdom.weizmann.ac.il/~harel/papers/LiberatingProgramming.pdf &amp;quot;liberating programming&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
A description of the LSC language and the basic research underlying PlayGo can be found in [http://www.wisdom.weizmann.ac.il/~playbook/Updates/ComeLetsPlay.pdf D. Harel and R. Marelly, ''Come, Let's Play: Scenario-Based Programming Using LSCs and the Play-Engine'']. &amp;lt;br&amp;gt;For more information about the principles of behavioral programming, which were originally part of the basis of LSC, and for links to the implementations of behavioral programming in Java and Erlang, see [http://www.b-prog.org www.b-prog.org].&lt;br /&gt;
&lt;br /&gt;
*[[About PlayGo]]&lt;br /&gt;
*[[Language &amp;amp; Concepts]]&lt;br /&gt;
*[[PlayGo Feature List]]&lt;br /&gt;
*[[PlayGo Screenshots]]&lt;br /&gt;
*[[PlayGo Demos]]&lt;br /&gt;
*[[PlayGo Examples]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo HowTo | PlayGo HowTo...]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:Download.jpg|link=]] &amp;lt;span style=&amp;quot;font-size: medium;&amp;quot;&amp;gt;[[Download PlayGo]]  [[License| (view license)]]&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;Related Tools&amp;lt;/span&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
*[[The Tracer]], a prototype tool for scenario-based trace visualization and exploration.&lt;br /&gt;
*[[The LSC Compiler]], a compiler for multi-modal UML sequence diagrams.&lt;br /&gt;
&lt;br /&gt;
== Contact Information  ==&lt;br /&gt;
&lt;br /&gt;
E-mail us to: [mailto:playgo@weizmann.ac.il playgo@weizmann.ac.il]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=The_Latex_to_LSC_Compiler</id>
		<title>The Latex to LSC Compiler</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=The_Latex_to_LSC_Compiler"/>
				<updated>2017-04-20T11:02:51Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: Created page with &amp;quot;== The Latex to LSC Compiler ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Latex to LSC Compiler ==&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo</id>
		<title>PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo"/>
				<updated>2017-04-20T11:01:00Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Related Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to PlayGo, a comprehensive tool for behavioral, scenario-based, programming, built around the language of [[Live sequence charts|''live sequence charts'' (LSC)]] and its Java derivative, and the play-in/play-out methods for programming and execution.&lt;br /&gt;
&lt;br /&gt;
PlayGo is intended to provide extensive support for the vision of [http://www.wisdom.weizmann.ac.il/~harel/papers/LiberatingProgramming.pdf &amp;quot;liberating programming&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
A description of the LSC language and the basic research underlying PlayGo can be found in [http://www.wisdom.weizmann.ac.il/~playbook/Updates/ComeLetsPlay.pdf D. Harel and R. Marelly, ''Come, Let's Play: Scenario-Based Programming Using LSCs and the Play-Engine'']. &amp;lt;br&amp;gt;For more information about the principles of behavioral programming, which were originally part of the basis of LSC, and for links to the implementations of behavioral programming in Java and Erlang, see [http://www.b-prog.org www.b-prog.org].&lt;br /&gt;
&lt;br /&gt;
*[[About PlayGo]]&lt;br /&gt;
*[[Language &amp;amp; Concepts]]&lt;br /&gt;
*[[PlayGo Feature List]]&lt;br /&gt;
*[[PlayGo Screenshots]]&lt;br /&gt;
*[[PlayGo Demos]]&lt;br /&gt;
*[[PlayGo Examples]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo HowTo | PlayGo HowTo...]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:Download.jpg|link=]] &amp;lt;span style=&amp;quot;font-size: medium;&amp;quot;&amp;gt;[[Download PlayGo]]  [[License| (view license)]]&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;Related Tools&amp;lt;/span&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
*[[The Tracer]], a prototype tool for scenario-based trace visualization and exploration.&lt;br /&gt;
*[[The LSC Compiler]], a compiler for multi-modal UML sequence diagrams.&lt;br /&gt;
*[[The Latex to LSC Compiler]]&lt;br /&gt;
&lt;br /&gt;
== Contact Information  ==&lt;br /&gt;
&lt;br /&gt;
E-mail us to: [mailto:playgo@weizmann.ac.il playgo@weizmann.ac.il]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:LSC_Language_Reference_PlayGo.pdf</id>
		<title>File:LSC Language Reference PlayGo.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:LSC_Language_Reference_PlayGo.pdf"/>
				<updated>2017-02-28T10:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: Smadar uploaded a new version of &amp;amp;quot;File:LSC Language Reference PlayGo.pdf&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_debug</id>
		<title>How to debug</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_debug"/>
				<updated>2015-12-28T07:46:24Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debugging is by default enabled whenever you play out. To disable/enable debugging, check the corresponding flag in the 'Play-Out' properties by right-clicking your project and choosing properties--&amp;gt;PlayGo--&amp;gt;Play-Out--&amp;gt;General tab--&amp;gt;Debug flag:&lt;br /&gt;
&lt;br /&gt;
[[File:Playout.properties.general.jpg|800px|Playout.properties.general.jpg]]&amp;lt;br/&amp;gt;When playing-out you can see information about the LSC execution in the 'Play-Out' view, and you can set breakpoints directly on the LSC diagram or in the Java code.&lt;br /&gt;
&lt;br /&gt;
== Play-Out View ==&lt;br /&gt;
&lt;br /&gt;
[[File:PlayoutView.jpg|800px|PlayoutView.jpg]]&amp;lt;br/&amp;gt;The Play-Out view displays the information logged at runtime by the [[The Tracer|Tracer]]. Each line represents an explicit or implicit event that occurred during execution. The information is grouped by events. The icon at each line defines the type of information it provides:&amp;lt;br/&amp;gt;[[File:Event.gif]] - information about the event that occurred in the system and triggered the steps included in this sub tree. Contains the event signature.&amp;lt;br/&amp;gt;[[File:Cut.gif]] - information about the cut change. Includes the name of the LSC, the sequence of locations that constitute the current cut, and whether the cut is hot or cold.&amp;lt;br/&amp;gt;[[File:Binding.gif]] - information about a binding of a lifeline. Includes the type of lifeline and the name of the bounded instance.&amp;lt;br/&amp;gt;[[File:Completion.gif]] - information about LSC completion/finish.&amp;lt;br/&amp;gt;[[File:ViolationHot.gif]] - information about a hot violation.&amp;lt;br/&amp;gt;[[File:ViolationCold.gif]] - information about a cold violation.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Upon clicking an entry in the view, a graphical indication is displayed on the diagram. For example, when clicking a 'cut change' entry, the cut is drawn on the diagram. [[File:PlayoutView.cutChange.jpg|800px|PlayoutView.cutChange.jpg]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;The information provided in the play-out view can be filtered using the filters provided in the view's toolbar:&amp;lt;br/&amp;gt;[[File:PlayoutView.filters.png|800px|PlayoutView.filters.png]]&lt;br /&gt;
&lt;br /&gt;
== Applying breakpoints ==&lt;br /&gt;
&lt;br /&gt;
Breakpoints can be applied at runtime on the diagram, as well as in the Java code.&lt;br /&gt;
&lt;br /&gt;
On the diagram, set a breakpoint by right-clicking a message and choosing 'Toggle Breakpoint':&lt;br /&gt;
&lt;br /&gt;
[[File:LSCEditor.breakpoint.png|800px|LSCEditor.breakpoint.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;Applying a breakpoint in the Java code is done in the standard way (e.g., right-clicking the left-hand side-bar of a source line and choosing 'Toggle Breakpoint').&lt;br /&gt;
&lt;br /&gt;
In both cases, the execution will stop when reaching a breakpoint. Once stopped, it can be resumed by clicking the resume button in the toolbar of the Debug view: [[File:DebugView.jpg|800px|DebugView.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Troubleshoot#Play-out does not stop at breakpoint|Troubleshoot...]]'''&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_debug</id>
		<title>How to debug</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_debug"/>
				<updated>2015-12-28T07:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Applying breakpoints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debugging is by default enabled whenever you play out.&lt;br /&gt;
To disable/enable debugging, check the corresponding flag in the 'Play-Out' properties by&lt;br /&gt;
right-clicking your project and choosing properties--&amp;gt;PlayGo--&amp;gt;Play-Out--&amp;gt;General tab--&amp;gt;Debug flag:&lt;br /&gt;
&lt;br /&gt;
[[Image:playout.properties.general.jpg|800px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
When playing-out you can see information about the LSC execution in the 'Play-Out' view, and you can set breakpoints directly on the LSC diagram or in the Java code.&lt;br /&gt;
&lt;br /&gt;
==Play-Out View==&lt;br /&gt;
[[Image:playoutView.jpg|800px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The Play-Out view displays the information logged at runtime by the [[The_Tracer | Tracer]]. Each line represents an explicit or implicit event that occurred during execution. The information is grouped by events. The icon at each line defines the type of information it provides:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:event.gif]] - information about the event that occurred in the system and triggered the steps included in this sub tree. Contains the event signature.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:cut.gif]] - information about the cut change. Includes the name of the LSC, the sequence of locations that constitute the current cut, and whether the cut is hot or cold.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:binding.gif]] - information about a binding of a lifeline. Includes the type of lifeline and the name of the bounded instance.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:completion.gif]] - information about LSC completion/finish. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:violationHot.gif]] - information about a hot violation. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:violationCold.gif]] - information about a cold violation. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Upon clicking an entry in the view, a graphical indication is displayed on the diagram. For example, when clicking a 'cut change' entry, the cut is drawn on the diagram.&lt;br /&gt;
[[Image:playoutView.cutChange.jpg|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The information provided in the play-out view can be filtered using the filters provided in the view's toolbar:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:playoutView.filters.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Applying breakpoints==&lt;br /&gt;
Breakpoints can be applied at runtime on the diagram, as well as in the Java code.&lt;br /&gt;
&lt;br /&gt;
On the diagram, set a breakpoint by right-clicking a message and choosing 'Toggle Breakpoint':&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCEditor.breakpoint.png | 800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Applying a breakpoint in the Java code is done in the standard way (e.g., right-clicking the left-hand side-bar of a source line and choosing 'Toggle Breakpoint').&lt;br /&gt;
&lt;br /&gt;
In both cases, the execution will stop when reaching a breakpoint. Once stopped, it can be resumed by clicking the resume button in the toolbar of the Debug view:&lt;br /&gt;
[[Image:debugView.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
[[Troubleshoot#Play-out_does_not_stop_at_breakpoint|Troubleshoot...]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2015-12-28T07:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Play-out does not stop at breakpoint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:enableJavaDebug.png|600px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:EnableJavaDebug.png</id>
		<title>File:EnableJavaDebug.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:EnableJavaDebug.png"/>
				<updated>2015-12-28T07:41:15Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2015-12-28T07:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Play-out does not stop at breakpoint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:enableJavaDebug.png]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2015-12-28T07:39:46Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Play-out does not stop at breakpoint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:enableJavaDebug.jpg]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2015-12-28T07:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Play-out does not stop at breakpoint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:enableJavaDebug.jpg|800px]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2015-12-28T07:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Play-out does not stop at breakpoint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;br /&gt;
'''Problem''': You set a breakpoint on either the LSC or the Java code, but PlayGo does not stop when expected. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': From the toolbar, select Windows -&amp;gt; Preference -&amp;gt; PlayGo and check the 'Enable Java Debug' flag:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot</id>
		<title>Troubleshoot</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Troubleshoot"/>
				<updated>2015-12-28T07:34:05Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Unable to create LSC project  ==&lt;br /&gt;
&lt;br /&gt;
If you cannot find the 'New LSC Project' command in the 'File' menu, you may not be working with the PlayGo perspective. It is recommended to work with the provided PlayGo [http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html perspective]. Working with the PlayGo perspective provides shortcuts to some operations (e.g., create a new LSC Project) and some views (e.g., the system model view). To change the active perspective to the PlayGo perspective, click the 'Open Perspective' button on the toolbar, select 'Other...' and select 'PlayGo':&lt;br /&gt;
&lt;br /&gt;
[[Image:Open.perspective.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Play-out failure  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem:''' Play-out fails.&amp;lt;br&amp;gt; '''Solution:''' &amp;lt;br&amp;gt;&lt;br /&gt;
#PlayGo supports Java 7. Make sure you have the right version of Java installed, or [[Download PlayGo | download]] PlayGo package that includes the required Java Runtime Environment.&lt;br /&gt;
#Re-compile the LSC project by selecting and choosing Project-&amp;amp;gt;Build All, from the menu bar.&amp;lt;br&amp;gt;In case the problem persists, make sure the S2A aspects code was generated. To generate aspects:&amp;lt;br&amp;gt;&lt;br /&gt;
##Select the LSC project.&lt;br /&gt;
##Press the 'S2A Clean' button on the toolbar.&lt;br /&gt;
##Press the 'Build with S2A' button on the toolbar.&lt;br /&gt;
##To make sure Eclipse loaded the newly generated aspects, refresh the project directory by selecting the project, right-clicking it and selecting 'Refresh'&lt;br /&gt;
&lt;br /&gt;
If the new aspects are still not in place, there may be something wrong with your [[S2A Configuration|Play-Out Configuration]].&lt;br /&gt;
&lt;br /&gt;
== Error when launching PlayGo  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': When launching PlayGo, you get an error message: &amp;quot;The PlayGo executable launcher was unable to locate its companion shared library&amp;quot;.&amp;lt;br&amp;gt; '''Solution''': This error occurs when extracting the downloaded zip file using the Windows 7 default unzip program. Use WinZip or any other program to extract this file.&lt;br /&gt;
&lt;br /&gt;
== During play-out an event is executed in a loop  ==&lt;br /&gt;
&lt;br /&gt;
'''Problem''': During play-out, an enabled event is executed multiple times although it was expected to be executed once.&amp;lt;br&amp;gt; '''Solution''': This may happen if the event has an argument that is an object (rather than a primitive type), and that the object's class is missing the implementation of the method 'equals'. Add an implementation of the 'equals' method and play-out again. &amp;lt;br&amp;gt; '''Explanation''': During play-out, S2A chooses an enabled event from a list of enabled events, based on the selected strategy. After executing the event, S2A advances the cut of all relevant LSCs. The process of advancing a cut is done by searching for a match between the executed event with the enabled event in all live copies, and with minimal events in all LSCs. The matching process tries to match the event name as well as its argument values. Non-primitive argument values are compared using the 'equals' method.&lt;br /&gt;
&lt;br /&gt;
== Play-out does not stop at breakpoint ==&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-21T08:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* PlayGo for Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/hgjufxvyhnewpv2cr99x2dnn1mk3jdqc PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/fce9sr9uki848564fqe9jx5dukhrmt0i PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/yb63vltoyd14ytkx8z5hhiq1bbaeqymo PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-21T08:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* PlayGo for Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/hgjufxvyhnewpv2cr99x2dnn1mk3jdqc PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/fce9sr9uki848564fqe9jx5dukhrmt0i PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/ikcl08pqs56dydatzc4v1cbcxjamjnc5 PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-21T08:46:12Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/hgjufxvyhnewpv2cr99x2dnn1mk3jdqc PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xto8szkafiv0w9c7ac0pts4mhtlnah21 PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/ikcl08pqs56dydatzc4v1cbcxjamjnc5 PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-21T08:45:48Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0lb70tpkjwzwj4ulyb6et7pgipy00zsn PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/vhumq2ca0vujy3idyu2ons3jtlzplitz PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xto8szkafiv0w9c7ac0pts4mhtlnah21 PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/ikcl08pqs56dydatzc4v1cbcxjamjnc5 PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-21T08:45:26Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* PlayGo for Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/o22m6zd0bvpp7ghkfwjn2oh3zdh3pwjd PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0fxqa5zsg3f72gh33z0jhui36a6vd4mx PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/vhumq2ca0vujy3idyu2ons3jtlzplitz PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xto8szkafiv0w9c7ac0pts4mhtlnah21 PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/ikcl08pqs56dydatzc4v1cbcxjamjnc5 PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-21T08:44:53Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/9h9kw063qoyrqutnlgsvii4mqtjyvo8e PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0fxqa5zsg3f72gh33z0jhui36a6vd4mx PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/vhumq2ca0vujy3idyu2ons3jtlzplitz PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xto8szkafiv0w9c7ac0pts4mhtlnah21 PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/ikcl08pqs56dydatzc4v1cbcxjamjnc5 PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/878rj4ky80ax9sffjiftwuvjnswde5rk here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2015-12-21T07:53:29Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* System model play-in */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br/&amp;gt;[[File:NL.play-in.start.png|800px|NL.play-in.start.png]]&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&amp;lt;br&amp;gt;&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br/&amp;gt;[[File:Playin.toolbar1.JPG|800px|Playin.toolbar1.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br/&amp;gt;[[File:Properties.view.rightClickMenu.png|800px|Properties.view.rightClickMenu.png]]&lt;br /&gt;
&lt;br /&gt;
== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in| natural language (NL) play-in]], you can write scenarios in controlled natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL Rules ===&lt;br /&gt;
The scenarios specified in controlled NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interactive NL-Play-In Interface ===&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter the LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Quick fix mechanism  ====&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity; i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Statistical NL-Play-In Interface ===&lt;br /&gt;
&lt;br /&gt;
In case you have a complete textual requirements document, the process of interactive NL play-in may be time consuming and tedious. Instead, PlayGo allows you to import a complete requirements document and transform it into LSCs in batch. Each sentence will be transform into a single LSC. Disambiguation decisions are made using a statistical model that is trained on previously analysed requirement documents. The statistical model is optimized based on two sources of information:&lt;br /&gt;
*content information, i.e., the grammatical structure and lexical items used in individual requirements.&lt;br /&gt;
*context information, i.e., the coherence of the model expressed in the complete document, as a whole.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The requirements document has to adhere to the following rules:&lt;br /&gt;
*Each line contains a single sentence.&lt;br /&gt;
*Each sentence expresses a single requirement / scenario.&lt;br /&gt;
*All sentences obey the same grammar restrictions as in the interactive NL play-in.&lt;br /&gt;
*The file should have the suffix '''.desc'''.&lt;br /&gt;
&lt;br /&gt;
==== Uploading a requirements document ====&lt;br /&gt;
&lt;br /&gt;
In order to upload a requirements document follow these steps:&lt;br /&gt;
&lt;br /&gt;
#Create a textual requirements document &amp;amp;lt;filename&amp;amp;gt;.desc that adheres to the format specified above. Locate the file in your [[Getting Started with PlayGo#Create your First LSC Project|LSC project]].&lt;br /&gt;
#Right-click the &amp;amp;lt;filename&amp;amp;gt;.desc file and select 'Import Description'.&amp;amp;nbsp;&lt;br /&gt;
#A &amp;amp;lt;filename&amp;amp;gt;.lsc files has been created under the same directory, containing a sequence of LSCs, each of which corresponds to one of the textual requirements. A system model for the entire system is created automatically.&lt;br /&gt;
##In case a &amp;lt;filename&amp;gt;.lsc file already exists in the same directory, you will be asked whether to override its contents.&lt;br /&gt;
&lt;br /&gt;
==== Tuning the statistical model ====&lt;br /&gt;
&lt;br /&gt;
The statistical model that is used for parsing requirements document may be tuned using the LSC project properties:&lt;br /&gt;
&lt;br /&gt;
#Right-click the LSC project, and select Properties-&amp;gt;PlayGo-&amp;gt;Play-in.&lt;br /&gt;
#Select the StatisticalNL tab and choose a statistical grammar file:&amp;lt;br/&amp;gt;[[File:Properties.playin.statisticalNL.png]]&amp;lt;br/&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Select one of the two parsing modes:&lt;br /&gt;
##Without context; i.e., applying the parser in a sentence-by-sentence mode.&lt;br /&gt;
##With context; i.e., applying the parser for parsing a complete requirements document.&lt;br /&gt;
###In case the &amp;quot;with context&amp;quot; option was selected, you can pre-define how many parse-candidates the model considers via the 'Number of candidates per requirements' box.&amp;lt;br/&amp;gt;NOTE: The number of candidates represents a tradeoff between system accuracy and parse time. The more candidates the model is allowed to consider, the higher the accuracy of the parser. However, if the number of candidates per sentence is too high, parsing performance may be negatively affected. A complete empirical investigation of this tradeoff may be found in &amp;lt;ref&amp;gt; R. Tsarfaty, E. Pogrebezky, G. Weiss, Y. Natan, S. Szekely and D. Harel, &amp;quot;Semantic Parsing Using Content and Context: A Case Study from Requirements Elicitation&amp;quot;, Proc. Int. Conf. on Empirical Methods in Natural Language Processing (EMNLP), to appear, 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
#Click 'OK'.&lt;br /&gt;
&lt;br /&gt;
The statistical parser uses a pre-trained grammar based on a set of manually annotated requirements. Accuracy of the statistical parser may improve if you add more training examples for the statistical model. If you have a set of LSC examples that you would like to use for re-training the statistical parser, you can do so using the 'Train' button.&lt;br /&gt;
&lt;br /&gt;
See also [[How to train a model for statistical play-in]].&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://wiki.weizmann.ac.il/playgo/index.php/Wristwatch_Example Wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://wiki.weizmann.ac.il/playgo/index.php/Phone_Specification Phone].&lt;br /&gt;
&lt;br /&gt;
- [http://wiki.weizmann.ac.il/playgo/index.php/Baby_Monitor_Specification Baby Monitor].&lt;br /&gt;
&lt;br /&gt;
== Show &amp;amp;amp; Tell play-in  ==&lt;br /&gt;
&lt;br /&gt;
To use [[PlayGo Feature List#Show_.26_tell_play-in|Show &amp;amp;amp; Tell play-in]], click the 'Show &amp;amp;amp; Tell Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched. &amp;lt;br&amp;gt; The 'NL Play-In' view is opened with the 'Interact Enable' button selected, in order to allow interaction with the GUI: &amp;lt;br&amp;gt; [[Image:Show&amp;amp;Tell.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; An interaction with the GUI (e.g., clicking a button) creates segment of NL text in the requirement text field of the 'NL Play-In' view.&amp;lt;br&amp;gt; If the interaction can be interpreted in more than one way, a squiggly line appears, indicating an error, and a quick fix dialog is displayed upon hovering. The error can be resolved using the quick fix dialog: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Show&amp;amp;tell.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; As in NL play-in, the LSC is created when pressing ENTER, or when clicking the [[Image:NL.plus.jpg]] button at the view toolbar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2015-12-20T11:53:34Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Download the Wristwatch Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8, 231-274, 1987.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they were created in natural lanague play-in. The model was originally described in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is &amp;quot;time&amp;quot;, the display mode changes to &amp;quot;date&amp;quot;, otherwise if the display mode is &amp;quot;date&amp;quot;, the display mode changes to &amp;quot;time&amp;quot;.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is &amp;quot;time&amp;quot;, the display mode changes to &amp;quot;alarm&amp;quot;, otherwise if the display mode is &amp;quot;alarm&amp;quot;, the display mode changes to &amp;quot;chime&amp;quot;, otherwise if the display mode is &amp;quot;chime&amp;quot;, the display mode changes to &amp;quot;stopwatch&amp;quot;, otherwise if the display mode is &amp;quot;stopwatch&amp;quot;, the display mode changes to &amp;quot;time&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is &amp;quot;alarm&amp;quot; then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to &amp;quot;alarm&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to &amp;quot;alarm&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to &amp;quot;alarm&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is &amp;quot;time&amp;quot; , the display mode changes to &amp;quot;update&amp;quot; and the update type changes to &amp;quot;seconds&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is &amp;quot;seconds&amp;quot; , the update type changes to &amp;quot;minutes&amp;quot; otherwise if the update type is &amp;quot;minutes&amp;quot; , the update type changes to &amp;quot;hours&amp;quot; otherwise if the update type is &amp;quot;hours&amp;quot; , the update type changes to &amp;quot;date&amp;quot; otherwise if the update type is &amp;quot;date&amp;quot;, the display mode changes to &amp;quot;time&amp;quot; and the update type changes to &amp;quot;none&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals &amp;quot;seconds&amp;quot; , the display blinks seconds , otherwise if the update type equals &amp;quot;minutes&amp;quot; , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to &amp;quot;update&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:TypeChangeUpdate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is &amp;quot;time&amp;quot;, the display text changes to time value.&lt;br /&gt;
| Demonstrates a property change as a trigger.&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is &amp;quot;alarm&amp;quot; , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:EnableAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks hours , otherwise the display blinks none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:BlinkAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change.&lt;br /&gt;
| Demonstrates loop and forbidden element.&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off.&lt;br /&gt;
| Demonstrates symbolic \ non-deterministic objects.&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to &amp;quot;alarm&amp;quot;, the display text changes to the alarm value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmDisplay.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to &amp;quot;date&amp;quot;, the display text changes to the date value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wristwatch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below is a download of the wristwatch final application, as well as instructions for creating the wristwatch example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch final application (runnable jar)  ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/vm7kdsj3689wnqkpk22i Runnable Wristwatch with Swing GUI] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch LSC project  ===&lt;br /&gt;
&lt;br /&gt;
To work with the wristwatch application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Wristwatch&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The wristwatch example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How%20to%20Play-Out | how to play out]] and [[How_to_Play-In|how to play in]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:50:55Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:50:15Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:49:51Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:49:27Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:48:57Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left|PhoneLSC01.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left|PhoneLSC2.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left|PhoneLSC03.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
| &lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left|PhoneLSC04.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
| &lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left|PhoneLSC07.png]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left|PhoneLSC05.png]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left|PhoneLSC06.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left|PhoneLSC08.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left|PhoneLSC11.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left|PhoneLSC010.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left|PhoneLSC0011.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left|PhoneLSC24.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left|LSC012.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left|PhoneLSC013.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left|PhoneLSC18.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left|PhoneLSC14.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left|PhoneLSC15.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left|PhoneLSC16.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left|PhoneLSC12.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left|PhoneLSC17.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left|PhoneLSC20.png]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left|PhoneLSC23.png]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left|PhoneLSC22.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:47:17Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural language play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br/&amp;gt;[[File:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural language play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br/&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[File:PhoneLSC01.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[File:PhoneLSC2.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC03.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
| &lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC04.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
| &lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC07.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[File:PhoneLSC05.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[File:PhoneLSC06.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[File:PhoneLSC08.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC11.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC010.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC0011.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC24.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[File:LSC012.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[File:PhoneLSC013.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[File:PhoneLSC18.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[File:PhoneLSC14.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[File:PhoneLSC15.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[File:PhoneLSC16.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br/&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[File:PhoneLSC12.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[File:PhoneLSC17.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[File:PhoneLSC20.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
| [[File:PhoneLSC23.png|thumb|left]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[File:PhoneLSC22.png|thumb|left]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How to Play-Out|how to play out]] and [[How to Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:46:39Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural_language_play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br&amp;gt; [[Image:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural_language_play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[Image:PhoneLSC01.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[Image:PhoneLSC2.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC03.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC04.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC07.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[Image:PhoneLSC05.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC06.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[Image:PhoneLSC08.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC11.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC010.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC0011.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC24.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[Image:LSC012.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[Image:PhoneLSC013.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[Image:PhoneLSC18.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[Image:PhoneLSC14.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[Image:PhoneLSC15.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[Image:PhoneLSC16.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[Image:PhoneLSC12.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC17.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[Image:PhoneLSC20.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[Image:PhoneLSC23.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[Image:PhoneLSC22.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Phone LSC project  ==&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How%20to%20Play-Out | how to play out]] and [[How_to_Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural_language_play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br&amp;gt; [[Image:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural_language_play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[Image:PhoneLSC01.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[Image:PhoneLSC2.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC03.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC04.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC07.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[Image:PhoneLSC05.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC06.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[Image:PhoneLSC08.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC11.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC010.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC0011.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC24.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[Image:LSC012.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[Image:PhoneLSC013.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[Image:PhoneLSC18.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[Image:PhoneLSC14.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[Image:PhoneLSC15.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[Image:PhoneLSC16.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[Image:PhoneLSC12.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC17.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[Image:PhoneLSC20.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[Image:PhoneLSC23.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[Image:PhoneLSC22.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone LSC project  ===&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How%20to%20Play-Out | how to play out]] and [[How_to_Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:45:33Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural_language_play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br&amp;gt; [[Image:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural_language_play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[Image:PhoneLSC01.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[Image:PhoneLSC2.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC03.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC04.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC07.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[Image:PhoneLSC05.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC06.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[Image:PhoneLSC08.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC11.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC010.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC0011.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC24.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[Image:LSC012.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[Image:PhoneLSC013.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[Image:PhoneLSC18.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[Image:PhoneLSC14.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[Image:PhoneLSC15.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[Image:PhoneLSC16.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[Image:PhoneLSC12.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC17.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[Image:PhoneLSC20.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[Image:PhoneLSC23.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[Image:PhoneLSC22.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone LSC project  ===&lt;br /&gt;
&lt;br /&gt;
To work with the phone application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Phone&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The phone example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How%20to%20Play-Out | how to play out]] and [[How_to_Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification</id>
		<title>Phone Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Phone_Specification"/>
				<updated>2015-12-20T11:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The phone example demonstrates the creation of LSCs using [[PlayGo Feature List#Natural_language_play-in|NL play-in]]. It uses the default system model GUI created automatically by PlayGo. It was later augmented with a manually created Java swing GUI to make the application more user-friendly.&amp;lt;br&amp;gt; [[Image:Systemmodel GUI.png]]&lt;br /&gt;
&lt;br /&gt;
The automatically created system model GUI.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
For each requirement, we present the requirement in [[PlayGo Feature List#Natural_language_play-in|natural language]]&amp;amp;nbsp;with no additional explanation, since the text is straightforward. Additionally, we present the LSC diagram created and comments on the creation process, when necessary.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lock and Unlock&lt;br /&gt;
| when the user clicks the star and the user clicks the end, if the display state is &amp;quot;Time&amp;quot; then the display state changes to &amp;quot;num&amp;quot; otherwise if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;Time&amp;quot;&lt;br /&gt;
| Time state is considered to be the lock state, in which the phone displays the time and accepts calls. Num state is the unlock state, in which the user can also dial.&amp;lt;br&amp;gt;'''''Testing scenario''''': Click the star button and then click the end button, the phone starts as &amp;quot;Time&amp;quot; and should become &amp;quot;num&amp;quot;. Change it back to &amp;quot;Time&amp;quot;.&lt;br /&gt;
| [[Image:PhoneLSC01.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Back Color Changes&lt;br /&gt;
| when the display state changes to &amp;quot;num&amp;quot; then the display backcolor changes to &amp;quot;pink&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''': Change states between time, num and off, and see that the color changes to gray, pink and dark gray respectively.&lt;br /&gt;
| [[Image:PhoneLSC2.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes, if the display state is &amp;quot;Time&amp;quot; then the display backcolor changes to &amp;quot;gray&amp;quot; otherwise if the display state is &amp;quot;off&amp;quot; then the display backcolor changes to &amp;quot;darkGray&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC03.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Dial&lt;br /&gt;
| when the user clicks any Cnumber, if the display state is &amp;quot;num&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display concatenates the Cnumber value&lt;br /&gt;
|&lt;br /&gt;
Concatenate is a function implemented in Java, that concatenates the digits. It&amp;amp;nbsp;overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Click the number buttons and check the numbers that appear on the display.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC04.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Clear&lt;br /&gt;
| when the user clicks the clear, if the chip content is &amp;quot;&amp;quot; then the display clears&lt;br /&gt;
|&lt;br /&gt;
Clear is a function implemented in Java, that clears the last digit. It overrides the generated code of the display class. See code in playgo.systemmode.classes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''''Testing scenario''''':With the phone in num state (unlocked, display in pink color), dial some numbers and then press the c button, the last digit will be cleared.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC07.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| End&lt;br /&gt;
| when the user clicks the end then the chip clears and the memory clears and the display shows &amp;quot;&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| '''''Testing scenario''''':Press the end button to clear all numbers from the display. Also, check to see that upon pressing the end, the chip content clears, the memory clears and the speaker change to off.&lt;br /&gt;
| [[Image:PhoneLSC05.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| when the user clicks the power, if the display state is not &amp;quot;off&amp;quot; and the chip content is &amp;quot;&amp;quot; then the display state changes to &amp;quot;off&amp;quot; and the display Text changes to &amp;quot;&amp;quot; otherwise the display state changes to &amp;quot;num&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The off state is when the user switches off the phone, in which case the user can’t dial or accept a call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Pressing the p button will make the phone turn to off.&lt;br /&gt;
&lt;br /&gt;
| [[Image:PhoneLSC06.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Call&lt;br /&gt;
| when the user clicks the call, if the display length is not &amp;quot;1&amp;quot; then the chip content is set to the display Text&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | When the env gets any call from the chip, the env responses to the chip either by “busy” and the call is not connected, or by “ack“ and the call is connected.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''To generate an external call from the Env'''''- right-click the Env object in system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When required, provide the argument “ack” or “Busy”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''':Dial some digits (not a single digit, since that will activate the speed dial feature for the digit dialed), then press the call button. Depending on the response “busy” or “ack”(set the response from the env) the display will show “busy” or “connected“ and the speaker sound will stop.&lt;br /&gt;
| [[Image:PhoneLSC08.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the chip content is set, if the chip content is not &amp;quot;Busy&amp;quot; and the chip content is not &amp;quot;&amp;quot; and the chip content is not &amp;quot;incomingcall&amp;quot; and the chip content is not &amp;quot;ack&amp;quot; and the chip content is not &amp;quot;connected&amp;quot; then the chip makecall to the env and the speaker sound turns &amp;quot;ringout&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC11.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;ack&amp;quot; to the chip, if the chip content is &amp;quot;ack&amp;quot; then the display shows &amp;quot;connected&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC010.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the env receives &amp;quot;busy&amp;quot; to the chip, if the chip content is &amp;quot;busy&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC0011.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call and one second elapses, if the speaker sound is &amp;quot;ringout&amp;quot; then the display shows &amp;quot;busy&amp;quot; and the speaker sound changes to &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC24.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | SpeedDial&lt;br /&gt;
| when the user clicks any Cnumber and the user clicks the call, if the display length is &amp;quot;1&amp;quot; then the memory retreives the Cnumber value and the display shows the memory value&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Retreive is a function defined in memory class. It reads values from an xml file and stores the number corresponding to each speed dial digit.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': Dial a single digit, then press the call button. Check that the saved number corresponding to the digit is displayed and that the call is forwarded to the number.&lt;br /&gt;
| [[Image:LSC012.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the chip content changes to the memory value&lt;br /&gt;
| [[Image:PhoneLSC013.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the memory value changes then the display shows the memory value&lt;br /&gt;
| [[Image:PhoneLSC18.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Speaker&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringout&amp;quot; then the speaker plays.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:center;&amp;quot; | '''''Testing scenario''''':Dial some digits and click call. The speaker should play the playout tone. Then click the end, which makes the speaker turn off and the tone played stops. Set an incoming call from the env to the chip and check that the speaker plays ring tone. Click the end button to stop the tone.&lt;br /&gt;
| [[Image:PhoneLSC14.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns &amp;quot;off&amp;quot; then the speaker stops&lt;br /&gt;
| [[Image:PhoneLSC15.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the speaker sound turns to &amp;quot;ringing&amp;quot; then the speaker rings&lt;br /&gt;
| [[Image:PhoneLSC16.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top;hrizontal-align:center;&amp;quot; | Incomingcall&lt;br /&gt;
| when the env receives &amp;quot;incomingcall&amp;quot; to the chip, if the chip content is &amp;quot;incomingcall&amp;quot; then the display shows “incomingcall” and the display state changes to &amp;quot;num&amp;quot; and the speaker sound turns to &amp;quot;ringing&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | &amp;lt;br&amp;gt;To generate an external call from the Env, right-click the Env object in the system model and choose 'call other object'. After that right-click the receive method of the chip object and choose 'call message'. When prompted, provide the argument “incomingcall”.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''''Testing scenario''''': when the env sets “incomingcall” to the chip, the display will show the “incomingcall” and the speaker will start playing ‘playing’ tone. Click the end or call to turn the speaker to off when the display text is “incoming”&lt;br /&gt;
| [[Image:PhoneLSC12.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the speaker sound turns &amp;quot;off&amp;quot;&lt;br /&gt;
| [[Image:PhoneLSC17.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the call, if the display Text is &amp;quot;incomingcall&amp;quot; then the display Text changes to connected&lt;br /&gt;
| [[Image:PhoneLSC20.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Clock&lt;br /&gt;
| when the Clock ticks, if the display state is &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| [[Image:PhoneLSC23.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display state changes to &amp;quot;Time&amp;quot; then the display shows the Clock stringTime&lt;br /&gt;
| [[Image:PhoneLSC22.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Download the Phone Example  ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0j0bk7s6rurl88r64omm The phone LSC Project (for development purposes)] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation Instructions  ===&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace.&lt;br /&gt;
##Click the 'Next' button.&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded phone example.&lt;br /&gt;
##Click finish.&lt;br /&gt;
#The phone project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Instructions_for_creating_LSC_project_from_LSC_file</id>
		<title>Instructions for creating LSC project from LSC file</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Instructions_for_creating_LSC_project_from_LSC_file"/>
				<updated>2015-12-20T11:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#[[Download PlayGo | Download and install PlayGo]]&lt;br /&gt;
#Start PlayGo&lt;br /&gt;
#Create a new LSC project as follows:&lt;br /&gt;
## File menu--&amp;gt;New--&amp;gt;LSC Project&lt;br /&gt;
## In the new LSC project dialog, check the 'choose LSC file'; browse to select the LSC file (a file with the suffix .lsc).&lt;br /&gt;
## Click the 'Finish' button&lt;br /&gt;
&lt;br /&gt;
[[Image:new.lscProjectByModel.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''A new LSC project has been created and is ready for play-in and play-out.'''&lt;br /&gt;
&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo HowTo]]&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Baby_Monitor_Specification</id>
		<title>Baby Monitor Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Baby_Monitor_Specification"/>
				<updated>2015-12-20T11:41:04Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Baby Monitor LSC project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; &amp;lt;sub&amp;gt;&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;/sup&amp;gt;The list below is the Baby Monitor system's requirements in [http://en.wikipedia.org/wiki/Controlled_natural_language controlled English]. These are valid requirements that can be used for [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lsc1&lt;br /&gt;
| when the user clicks the increase_temperature_button, the temperature_threshold increases&lt;br /&gt;
| &amp;lt;br&amp;gt;&lt;br /&gt;
| [[Image:NL1.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc2&lt;br /&gt;
| when the user clicks the decrease_temperature_button, the temperature_threshold decreases&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL2.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc3&lt;br /&gt;
| when the user clicks a TempChange, the temperature_display color changes to yellow and the temperature_display displays the temperature_threshold value&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL3.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc4&lt;br /&gt;
| when the baby_unit temperature changes, the temperature_display displays the baby_unit temperature and the temperature_display color changes to green&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL4.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc5&lt;br /&gt;
| when the baby_unit temperature changes, if the baby_unit temperature is greater than temperature_threshold, the alert_light state changes to blinking&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL5.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc6&lt;br /&gt;
| when the baby_unit temperature changes, if the baby_unit temperature is greater than temperature_threshold, the mobile_unit beeps&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL6.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc7&lt;br /&gt;
| when the alert_light state changes to blinking, as long as the mobile_unit state is on and the user does not click the reset_alert_button, the alert_light state changes to on and one second elapses and the alert_light state changes to off and two seconds elapse&amp;lt;br&amp;gt;&lt;br /&gt;
| This requirement is not parsed in the current version of the NL play-in&lt;br /&gt;
| [[Image:Lsc7.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc8&lt;br /&gt;
| when the user clicks the baby_unit_power_button, the baby_unit state changes to on&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL8.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc9&lt;br /&gt;
| when the user clicks the mobile_unit_power_button, if the mobile_unit state is off, the mobile_unit state changes to on, otherwise if the mobile_unit state is on, the mobile_unit state changes to off&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL9.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc10&lt;br /&gt;
| when the mobile_unit state changes to on, as long as the mobile_unit state is on, if two seconds have elapsed and the baby_unit does not connect to the mobile_unit, the connection_light color changes to red&lt;br /&gt;
| This requirement is not parsed in the current version of the natural language play-in&lt;br /&gt;
| [[Image:Lsc10.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc11&lt;br /&gt;
| when the baby_unit state changes to on, as long as the mobile_unit state is on, the baby_unit connects to the mobile_unit and two seconds elapse&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL11.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc12&lt;br /&gt;
| when the baby_unit connects to the mobile_unit, the connection_light color changes to green&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot; style=&amp;quot;white-space:pre&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL12.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc13&lt;br /&gt;
| when the user clicks the reset_button, the baby_unit resets and the antenna position changes to close and the antenna init and the antenna position changes to open&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL13.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc14&lt;br /&gt;
| when the baby_unit resets, the baby_unit connects to the mobile_unit, the antenna position must be open&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Lsc14.jpg|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Baby Monitor Example  ==&lt;br /&gt;
&lt;br /&gt;
Below is a download of the baby monitor final application, as well as instructions for creating the baby monitor example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor final application (runnable jar)  ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/jwcpix17u06vxmbxl03s Runnable Baby Monitor with Swing GUI] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the baby monitor, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor LSC project  ===&lt;br /&gt;
&lt;br /&gt;
To work with the baby monitor application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Baby Monitor&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The baby monitor example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How%20to%20Play-Out | how to play out]] and [[How_to_Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Baby_Monitor_Specification</id>
		<title>Baby Monitor Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Baby_Monitor_Specification"/>
				<updated>2015-12-20T11:39:59Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Download the Baby Monitor Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; &amp;lt;sub&amp;gt;&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;/sup&amp;gt;The list below is the Baby Monitor system's requirements in [http://en.wikipedia.org/wiki/Controlled_natural_language controlled English]. These are valid requirements that can be used for [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;5%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Lsc1&lt;br /&gt;
| when the user clicks the increase_temperature_button, the temperature_threshold increases&lt;br /&gt;
| &amp;lt;br&amp;gt;&lt;br /&gt;
| [[Image:NL1.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc2&lt;br /&gt;
| when the user clicks the decrease_temperature_button, the temperature_threshold decreases&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL2.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc3&lt;br /&gt;
| when the user clicks a TempChange, the temperature_display color changes to yellow and the temperature_display displays the temperature_threshold value&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL3.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc4&lt;br /&gt;
| when the baby_unit temperature changes, the temperature_display displays the baby_unit temperature and the temperature_display color changes to green&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL4.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc5&lt;br /&gt;
| when the baby_unit temperature changes, if the baby_unit temperature is greater than temperature_threshold, the alert_light state changes to blinking&amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL5.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc6&lt;br /&gt;
| when the baby_unit temperature changes, if the baby_unit temperature is greater than temperature_threshold, the mobile_unit beeps&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL6.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc7&lt;br /&gt;
| when the alert_light state changes to blinking, as long as the mobile_unit state is on and the user does not click the reset_alert_button, the alert_light state changes to on and one second elapses and the alert_light state changes to off and two seconds elapse&amp;lt;br&amp;gt;&lt;br /&gt;
| This requirement is not parsed in the current version of the NL play-in&lt;br /&gt;
| [[Image:Lsc7.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc8&lt;br /&gt;
| when the user clicks the baby_unit_power_button, the baby_unit state changes to on&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL8.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc9&lt;br /&gt;
| when the user clicks the mobile_unit_power_button, if the mobile_unit state is off, the mobile_unit state changes to on, otherwise if the mobile_unit state is on, the mobile_unit state changes to off&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL9.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc10&lt;br /&gt;
| when the mobile_unit state changes to on, as long as the mobile_unit state is on, if two seconds have elapsed and the baby_unit does not connect to the mobile_unit, the connection_light color changes to red&lt;br /&gt;
| This requirement is not parsed in the current version of the natural language play-in&lt;br /&gt;
| [[Image:Lsc10.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc11&lt;br /&gt;
| when the baby_unit state changes to on, as long as the mobile_unit state is on, the baby_unit connects to the mobile_unit and two seconds elapse&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL11.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc12&lt;br /&gt;
| when the baby_unit connects to the mobile_unit, the connection_light color changes to green&amp;lt;span class=&amp;quot;Apple-tab-span&amp;quot; style=&amp;quot;white-space:pre&amp;quot;&amp;gt;	&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL12.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc13&lt;br /&gt;
| when the user clicks the reset_button, the baby_unit resets and the antenna position changes to close and the antenna init and the antenna position changes to open&lt;br /&gt;
|&lt;br /&gt;
| [[Image:NL13.jpg|thumb|left|80x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Lsc14&lt;br /&gt;
| when the baby_unit resets, the baby_unit connects to the mobile_unit, the antenna position must be open&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Lsc14.jpg|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Baby Monitor Example  ==&lt;br /&gt;
&lt;br /&gt;
Below is a download of the baby monitor final application, as well as instructions for creating the baby monitor example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor final application (runnable jar)  ===&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/jwcpix17u06vxmbxl03s Runnable Baby Monitor with Swing GUI] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the baby monitor, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor LSC project  ===&lt;br /&gt;
&lt;br /&gt;
To work with the baby monitor application, you can create it in your PlayGo workspace:&lt;br /&gt;
&lt;br /&gt;
#[http://wiki.weizmann.ac.il/harelgroup/Download%20PlayGo Download PlayGo].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Baby Monitor&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The baby monitor example project is now part of your workspace. You can start playing with it. For details refer to&amp;amp;nbsp;[[How%20to%20Play-Out | how to play out]] and [[How_to_Play-In|how to play in]].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2015-12-20T11:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Memory Game LSC project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Game ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|420px]][[Image:MemoryGameUI.png|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game. The memory game UI is written in Java Swing.&amp;lt;br&amp;gt; The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Symbolic Instances: '''card''' and '''anotherCard''' lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 16 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''click''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''click''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''click''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Download the Memory Game Example ====&lt;br /&gt;
&lt;br /&gt;
Below is a download of the memory game final application, as well as instructions for creating the memory game example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===== Memory game final application (runnable jar) =====&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/dina60yqs7dgd6oljzv1 Runnable Memory Game with Swing GUI]&lt;br /&gt;
&lt;br /&gt;
To run the memory game, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===== Memory Game LSC project =====&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the 'File' menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Memory Game&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The memory game example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]] and [[How_to_Play-In|how to play in]].&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor ===&lt;br /&gt;
&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg|frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language. &amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]], and others by [[Language &amp;amp; Concepts#Play-In|basic play-in]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Water Tap ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WaterTap.png|420px]][[Image:WaterTapUI.jpg|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water. The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
*Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
*Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
*Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xe31fgyg28q7netcezel Download Water Tap application] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:SampleLSC.png]][[Image:PhoneGUI.png|200px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project describes and implements a cell phone, including some common cell phone features, such as quick dial, lock and more. This project has been implemented using [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. Therefore, the example includes the controlled natural language to create each of the LSCs. &amp;lt;br&amp;gt; Details can be found [[Phone Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WristWatchGUI.jpg|230px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wristwatch application includes 20 LSCs, defining its behavior and demonstrating the use in [[PlayGo Feature List#Natural_Language_Play-in|NL play-in]].&amp;lt;br&amp;gt; Details about the specification and downloads can be found [[Wristwatch Example|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wall Painting ===&lt;br /&gt;
&lt;br /&gt;
[[Image:drone.jpg|230px]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(39,64,139);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall painting BP application is based on the [http://wiki.weizmann.ac.il/bp/index.php/Helicopter_flight_and_mission helicopter flight example], which uses the [https://code.google.com/p/javadrone/ ARDrone Java interface] and so it is prepared to be tested on a real ARDrone. The example also has a simulation mode with which one can run it without having an actual drone.&lt;br /&gt;
The example uploaded here demonstrates an S2A and BPJ integrated project; while the original example was written in BPJ, in this variant of the example, we have added LSCs to control the color supply.&lt;br /&gt;
&lt;br /&gt;
Details about the specification and downloads can be found [[Wall Painting Example|here]].&lt;br /&gt;
&lt;br /&gt;
== LSC Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== After '''A''' occurs, '''B''' must occur, unless exception '''C''' occurs  ===&lt;br /&gt;
&lt;br /&gt;
We want to specify the requirement: if event A occurs then event B must occur, unless event C occurs; meaning, if A occurs, either B or C must occur.&lt;br /&gt;
&lt;br /&gt;
LSC has a hot monitor idiom (so we can specify that if A occurred B must occur), but there is no idiom for hot monitoring one event from a list of events; e.g., hot monitor of either B or C.&lt;br /&gt;
&lt;br /&gt;
To specify hot monitor of event B or event C, we offer the following design pattern (see text explanation below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[Image:BMustOccurUnlessC.png]]&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
&lt;br /&gt;
#As long as A occurred and neither B not C occurred, LSC1 remains open in a cold cut, waiting for either C or B to occur and LSC2 remains open in a hot cut, indicating that the system as a whole is in hot global cut; i.e., the system must not stay in this state forever.&lt;br /&gt;
#If A occurred and then B occurred, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#If A occurred and then C occurred, similarly to the previous case, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#The LSCs below describe test cases / simulated environment behavior that we experimented with, and which highlight the overall behavior. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following LSCs describe valid behavior:&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC validBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The following LSC describes an invalid behavior, in which only A occurs and neither B not C occur (in which case, the system will remain in a hot cut):&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC invalidBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/l3a2rt13tec5ik2bauem Download this design pattern] &amp;lt;br&amp;gt; [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Instructions_for_creating_LSC_project_from_LSC_file Instructions for playing with this specification] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2015-12-20T11:35:10Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Memory game final application (runnable jar) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Game ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|420px]][[Image:MemoryGameUI.png|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game. The memory game UI is written in Java Swing.&amp;lt;br&amp;gt; The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Symbolic Instances: '''card''' and '''anotherCard''' lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 16 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''click''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''click''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''click''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Download the Memory Game Example ====&lt;br /&gt;
&lt;br /&gt;
Below is a download of the memory game final application, as well as instructions for creating the memory game example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===== Memory game final application (runnable jar) =====&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/dina60yqs7dgd6oljzv1 Runnable Memory Game with Swing GUI]&lt;br /&gt;
&lt;br /&gt;
To run the memory game, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===== Memory Game LSC project =====&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the File menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Memory Game&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The memory game example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]] and [[How_to_Play-In|how to play in]].&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor ===&lt;br /&gt;
&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg|frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language. &amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]], and others by [[Language &amp;amp; Concepts#Play-In|basic play-in]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Water Tap ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WaterTap.png|420px]][[Image:WaterTapUI.jpg|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water. The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
*Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
*Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
*Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xe31fgyg28q7netcezel Download Water Tap application] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:SampleLSC.png]][[Image:PhoneGUI.png|200px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project describes and implements a cell phone, including some common cell phone features, such as quick dial, lock and more. This project has been implemented using [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. Therefore, the example includes the controlled natural language to create each of the LSCs. &amp;lt;br&amp;gt; Details can be found [[Phone Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WristWatchGUI.jpg|230px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wristwatch application includes 20 LSCs, defining its behavior and demonstrating the use in [[PlayGo Feature List#Natural_Language_Play-in|NL play-in]].&amp;lt;br&amp;gt; Details about the specification and downloads can be found [[Wristwatch Example|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wall Painting ===&lt;br /&gt;
&lt;br /&gt;
[[Image:drone.jpg|230px]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(39,64,139);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall painting BP application is based on the [http://wiki.weizmann.ac.il/bp/index.php/Helicopter_flight_and_mission helicopter flight example], which uses the [https://code.google.com/p/javadrone/ ARDrone Java interface] and so it is prepared to be tested on a real ARDrone. The example also has a simulation mode with which one can run it without having an actual drone.&lt;br /&gt;
The example uploaded here demonstrates an S2A and BPJ integrated project; while the original example was written in BPJ, in this variant of the example, we have added LSCs to control the color supply.&lt;br /&gt;
&lt;br /&gt;
Details about the specification and downloads can be found [[Wall Painting Example|here]].&lt;br /&gt;
&lt;br /&gt;
== LSC Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== After '''A''' occurs, '''B''' must occur, unless exception '''C''' occurs  ===&lt;br /&gt;
&lt;br /&gt;
We want to specify the requirement: if event A occurs then event B must occur, unless event C occurs; meaning, if A occurs, either B or C must occur.&lt;br /&gt;
&lt;br /&gt;
LSC has a hot monitor idiom (so we can specify that if A occurred B must occur), but there is no idiom for hot monitoring one event from a list of events; e.g., hot monitor of either B or C.&lt;br /&gt;
&lt;br /&gt;
To specify hot monitor of event B or event C, we offer the following design pattern (see text explanation below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[Image:BMustOccurUnlessC.png]]&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
&lt;br /&gt;
#As long as A occurred and neither B not C occurred, LSC1 remains open in a cold cut, waiting for either C or B to occur and LSC2 remains open in a hot cut, indicating that the system as a whole is in hot global cut; i.e., the system must not stay in this state forever.&lt;br /&gt;
#If A occurred and then B occurred, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#If A occurred and then C occurred, similarly to the previous case, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#The LSCs below describe test cases / simulated environment behavior that we experimented with, and which highlight the overall behavior. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following LSCs describe valid behavior:&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC validBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The following LSC describes an invalid behavior, in which only A occurs and neither B not C occur (in which case, the system will remain in a hot cut):&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC invalidBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/l3a2rt13tec5ik2bauem Download this design pattern] &amp;lt;br&amp;gt; [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Instructions_for_creating_LSC_project_from_LSC_file Instructions for playing with this specification] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2015-12-20T11:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Memory game final application (runnable jar) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Game ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|420px]][[Image:MemoryGameUI.png|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game. The memory game UI is written in Java Swing.&amp;lt;br&amp;gt; The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Symbolic Instances: '''card''' and '''anotherCard''' lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 16 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''click''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''click''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''click''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Download the Memory Game Example ====&lt;br /&gt;
&lt;br /&gt;
Below is a download of the memory game final application, as well as instructions for creating the memory game example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===== Memory game final application (runnable jar) =====&lt;br /&gt;
&lt;br /&gt;
[[https://weizmann.box.com/s/dina60yqs7dgd6oljzv1|Runnable Memory Game with Swing GUI]]&lt;br /&gt;
&lt;br /&gt;
To run the memory game, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===== Memory Game LSC project =====&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the File menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Memory Game&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The memory game example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]] and [[How_to_Play-In|how to play in]].&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor ===&lt;br /&gt;
&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg|frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language. &amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]], and others by [[Language &amp;amp; Concepts#Play-In|basic play-in]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Water Tap ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WaterTap.png|420px]][[Image:WaterTapUI.jpg|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water. The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
*Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
*Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
*Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xe31fgyg28q7netcezel Download Water Tap application] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:SampleLSC.png]][[Image:PhoneGUI.png|200px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project describes and implements a cell phone, including some common cell phone features, such as quick dial, lock and more. This project has been implemented using [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. Therefore, the example includes the controlled natural language to create each of the LSCs. &amp;lt;br&amp;gt; Details can be found [[Phone Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WristWatchGUI.jpg|230px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wristwatch application includes 20 LSCs, defining its behavior and demonstrating the use in [[PlayGo Feature List#Natural_Language_Play-in|NL play-in]].&amp;lt;br&amp;gt; Details about the specification and downloads can be found [[Wristwatch Example|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wall Painting ===&lt;br /&gt;
&lt;br /&gt;
[[Image:drone.jpg|230px]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(39,64,139);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall painting BP application is based on the [http://wiki.weizmann.ac.il/bp/index.php/Helicopter_flight_and_mission helicopter flight example], which uses the [https://code.google.com/p/javadrone/ ARDrone Java interface] and so it is prepared to be tested on a real ARDrone. The example also has a simulation mode with which one can run it without having an actual drone.&lt;br /&gt;
The example uploaded here demonstrates an S2A and BPJ integrated project; while the original example was written in BPJ, in this variant of the example, we have added LSCs to control the color supply.&lt;br /&gt;
&lt;br /&gt;
Details about the specification and downloads can be found [[Wall Painting Example|here]].&lt;br /&gt;
&lt;br /&gt;
== LSC Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== After '''A''' occurs, '''B''' must occur, unless exception '''C''' occurs  ===&lt;br /&gt;
&lt;br /&gt;
We want to specify the requirement: if event A occurs then event B must occur, unless event C occurs; meaning, if A occurs, either B or C must occur.&lt;br /&gt;
&lt;br /&gt;
LSC has a hot monitor idiom (so we can specify that if A occurred B must occur), but there is no idiom for hot monitoring one event from a list of events; e.g., hot monitor of either B or C.&lt;br /&gt;
&lt;br /&gt;
To specify hot monitor of event B or event C, we offer the following design pattern (see text explanation below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[Image:BMustOccurUnlessC.png]]&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
&lt;br /&gt;
#As long as A occurred and neither B not C occurred, LSC1 remains open in a cold cut, waiting for either C or B to occur and LSC2 remains open in a hot cut, indicating that the system as a whole is in hot global cut; i.e., the system must not stay in this state forever.&lt;br /&gt;
#If A occurred and then B occurred, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#If A occurred and then C occurred, similarly to the previous case, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#The LSCs below describe test cases / simulated environment behavior that we experimented with, and which highlight the overall behavior. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following LSCs describe valid behavior:&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC validBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The following LSC describes an invalid behavior, in which only A occurs and neither B not C occur (in which case, the system will remain in a hot cut):&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC invalidBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/l3a2rt13tec5ik2bauem Download this design pattern] &amp;lt;br&amp;gt; [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Instructions_for_creating_LSC_project_from_LSC_file Instructions for playing with this specification] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2015-12-20T11:33:46Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Memory game final application (runnable jar) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Game ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|420px]][[Image:MemoryGameUI.png|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game. The memory game UI is written in Java Swing.&amp;lt;br&amp;gt; The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Symbolic Instances: '''card''' and '''anotherCard''' lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 16 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''click''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''click''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''click''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Download the Memory Game Example ====&lt;br /&gt;
&lt;br /&gt;
Below is a download of the memory game final application, as well as instructions for creating the memory game example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===== Memory game final application (runnable jar) =====&lt;br /&gt;
&lt;br /&gt;
[[/playgo/images/playgo/MemoryGameSwingGUI.zip|Runnable Memory Game with Swing GUI]]&lt;br /&gt;
&lt;br /&gt;
To run the memory game, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===== Memory Game LSC project =====&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the File menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Memory Game&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The memory game example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]] and [[How_to_Play-In|how to play in]].&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor ===&lt;br /&gt;
&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg|frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language. &amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]], and others by [[Language &amp;amp; Concepts#Play-In|basic play-in]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Water Tap ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WaterTap.png|420px]][[Image:WaterTapUI.jpg|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water. The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
*Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
*Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
*Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xe31fgyg28q7netcezel Download Water Tap application] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:SampleLSC.png]][[Image:PhoneGUI.png|200px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project describes and implements a cell phone, including some common cell phone features, such as quick dial, lock and more. This project has been implemented using [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. Therefore, the example includes the controlled natural language to create each of the LSCs. &amp;lt;br&amp;gt; Details can be found [[Phone Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WristWatchGUI.jpg|230px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wristwatch application includes 20 LSCs, defining its behavior and demonstrating the use in [[PlayGo Feature List#Natural_Language_Play-in|NL play-in]].&amp;lt;br&amp;gt; Details about the specification and downloads can be found [[Wristwatch Example|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wall Painting ===&lt;br /&gt;
&lt;br /&gt;
[[Image:drone.jpg|230px]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(39,64,139);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall painting BP application is based on the [http://wiki.weizmann.ac.il/bp/index.php/Helicopter_flight_and_mission helicopter flight example], which uses the [https://code.google.com/p/javadrone/ ARDrone Java interface] and so it is prepared to be tested on a real ARDrone. The example also has a simulation mode with which one can run it without having an actual drone.&lt;br /&gt;
The example uploaded here demonstrates an S2A and BPJ integrated project; while the original example was written in BPJ, in this variant of the example, we have added LSCs to control the color supply.&lt;br /&gt;
&lt;br /&gt;
Details about the specification and downloads can be found [[Wall Painting Example|here]].&lt;br /&gt;
&lt;br /&gt;
== LSC Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== After '''A''' occurs, '''B''' must occur, unless exception '''C''' occurs  ===&lt;br /&gt;
&lt;br /&gt;
We want to specify the requirement: if event A occurs then event B must occur, unless event C occurs; meaning, if A occurs, either B or C must occur.&lt;br /&gt;
&lt;br /&gt;
LSC has a hot monitor idiom (so we can specify that if A occurred B must occur), but there is no idiom for hot monitoring one event from a list of events; e.g., hot monitor of either B or C.&lt;br /&gt;
&lt;br /&gt;
To specify hot monitor of event B or event C, we offer the following design pattern (see text explanation below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[Image:BMustOccurUnlessC.png]]&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
&lt;br /&gt;
#As long as A occurred and neither B not C occurred, LSC1 remains open in a cold cut, waiting for either C or B to occur and LSC2 remains open in a hot cut, indicating that the system as a whole is in hot global cut; i.e., the system must not stay in this state forever.&lt;br /&gt;
#If A occurred and then B occurred, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#If A occurred and then C occurred, similarly to the previous case, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#The LSCs below describe test cases / simulated environment behavior that we experimented with, and which highlight the overall behavior. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following LSCs describe valid behavior:&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC validBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The following LSC describes an invalid behavior, in which only A occurs and neither B not C occur (in which case, the system will remain in a hot cut):&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC invalidBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/l3a2rt13tec5ik2bauem Download this design pattern] &amp;lt;br&amp;gt; [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Instructions_for_creating_LSC_project_from_LSC_file Instructions for playing with this specification] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2015-12-20T11:33:15Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: /* Download the Memory Game Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Game ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|420px]][[Image:MemoryGameUI.png|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game. The memory game UI is written in Java Swing.&amp;lt;br&amp;gt; The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Symbolic Instances: '''card''' and '''anotherCard''' lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 16 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''click''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''click''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''click''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Download the Memory Game Example ====&lt;br /&gt;
&lt;br /&gt;
Below is a download of the memory game final application, as well as instructions for creating the memory game example in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===== Memory game final application (runnable jar) =====&lt;br /&gt;
&lt;br /&gt;
[[/harelgroup/images/harelgroup/MemoryGameSwingGUI.zip|Runnable Memory Game with Swing GUI]]&lt;br /&gt;
&lt;br /&gt;
To run the memory game, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===== Memory Game LSC project =====&lt;br /&gt;
&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#From the File menu choose New--&amp;gt;Example....--&amp;gt;PlayGo Examples--&amp;gt;Memory Game&lt;br /&gt;
#Click the 'Finish' button.&lt;br /&gt;
#The memory game example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]] and [[How_to_Play-In|how to play in]].&lt;br /&gt;
&lt;br /&gt;
=== Baby Monitor ===&lt;br /&gt;
&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg|frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language. &amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]], and others by [[Language &amp;amp; Concepts#Play-In|basic play-in]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Water Tap ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WaterTap.png|420px]][[Image:WaterTapUI.jpg|400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water. The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
*Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
*Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
*Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xe31fgyg28q7netcezel Download Water Tap application] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phone  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:SampleLSC.png]][[Image:PhoneGUI.png|200px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project describes and implements a cell phone, including some common cell phone features, such as quick dial, lock and more. This project has been implemented using [[PlayGo_Feature_List#Natural_language_play-in|NL play-in]]. Therefore, the example includes the controlled natural language to create each of the LSCs. &amp;lt;br&amp;gt; Details can be found [[Phone Specification|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wristwatch  ===&lt;br /&gt;
&lt;br /&gt;
[[Image:WristWatchGUI.jpg|230px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wristwatch application includes 20 LSCs, defining its behavior and demonstrating the use in [[PlayGo Feature List#Natural_Language_Play-in|NL play-in]].&amp;lt;br&amp;gt; Details about the specification and downloads can be found [[Wristwatch Example|here]].&lt;br /&gt;
&lt;br /&gt;
=== Wall Painting ===&lt;br /&gt;
&lt;br /&gt;
[[Image:drone.jpg|230px]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(39,64,139);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The wall painting BP application is based on the [http://wiki.weizmann.ac.il/bp/index.php/Helicopter_flight_and_mission helicopter flight example], which uses the [https://code.google.com/p/javadrone/ ARDrone Java interface] and so it is prepared to be tested on a real ARDrone. The example also has a simulation mode with which one can run it without having an actual drone.&lt;br /&gt;
The example uploaded here demonstrates an S2A and BPJ integrated project; while the original example was written in BPJ, in this variant of the example, we have added LSCs to control the color supply.&lt;br /&gt;
&lt;br /&gt;
Details about the specification and downloads can be found [[Wall Painting Example|here]].&lt;br /&gt;
&lt;br /&gt;
== LSC Design Patterns ==&lt;br /&gt;
&lt;br /&gt;
=== After '''A''' occurs, '''B''' must occur, unless exception '''C''' occurs  ===&lt;br /&gt;
&lt;br /&gt;
We want to specify the requirement: if event A occurs then event B must occur, unless event C occurs; meaning, if A occurs, either B or C must occur.&lt;br /&gt;
&lt;br /&gt;
LSC has a hot monitor idiom (so we can specify that if A occurred B must occur), but there is no idiom for hot monitoring one event from a list of events; e.g., hot monitor of either B or C.&lt;br /&gt;
&lt;br /&gt;
To specify hot monitor of event B or event C, we offer the following design pattern (see text explanation below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[Image:BMustOccurUnlessC.png]]&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
&lt;br /&gt;
#As long as A occurred and neither B not C occurred, LSC1 remains open in a cold cut, waiting for either C or B to occur and LSC2 remains open in a hot cut, indicating that the system as a whole is in hot global cut; i.e., the system must not stay in this state forever.&lt;br /&gt;
#If A occurred and then B occurred, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#If A occurred and then C occurred, similarly to the previous case, LSC1 reaches a cold false condition (named Exit) and therefore closes with a cold violation. This enables the LSC1Done event (no longer leads to the false violation in LSC1, since LSC1 closed), allowing LSC2 to complete.&lt;br /&gt;
#The LSCs below describe test cases / simulated environment behavior that we experimented with, and which highlight the overall behavior. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following LSCs describe valid behavior:&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC validBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; The following LSC describes an invalid behavior, in which only A occurs and neither B not C occur (in which case, the system will remain in a hot cut):&lt;br /&gt;
&lt;br /&gt;
[[Image:BMustOccurUnlessC invalidBehavior.png]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/l3a2rt13tec5ik2bauem Download this design pattern] &amp;lt;br&amp;gt; [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Instructions_for_creating_LSC_project_from_LSC_file Instructions for playing with this specification] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo</id>
		<title>Download PlayGo</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Download_PlayGo"/>
				<updated>2015-12-20T11:29:57Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PlayGo for Windows ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/9h9kw063qoyrqutnlgsvii4mqtjyvo8e PlayGo version 4.0 for Windows (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/0fxqa5zsg3f72gh33z0jhui36a6vd4mx PlayGo version 4.0 for Windows (no jre) ]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/vhumq2ca0vujy3idyu2ons3jtlzplitz PlayGo version 4.0 for Windows 32-bit (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
== PlayGo for Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/xto8szkafiv0w9c7ac0pts4mhtlnah21 PlayGo version 4.0 for linux (jre included)]&lt;br /&gt;
&lt;br /&gt;
[https://weizmann.box.com/s/ikcl08pqs56dydatzc4v1cbcxjamjnc5 PlayGo version 4.0 for linux (no jre)]&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started with PlayGo]] to start playing with PlayGo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PlayGo source code is available for download [https://weizmann.box.com/s/l4i4l4jeul0lnudvtj0nchxa8kmq3301 here].&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2015-07-08T12:28:42Z</updated>
		
		<summary type="html">&lt;p&gt;Smadar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br/&amp;gt;[[File:NL.play-in.start.png|800px|NL.play-in.start.png]]&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&amp;lt;br&amp;gt;&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br/&amp;gt;[[File:Playin.toolbar1.JPG|800px|Playin.toolbar1.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br/&amp;gt;[[File:Properties.view.rightClickMenu.png|800px|Properties.view.rightClickMenu.png]]&lt;br /&gt;
&lt;br /&gt;
== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in| natural language (NL) play-in]], you can write scenarios in controlled natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL Rules ===&lt;br /&gt;
The scenarios specified in controlled NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interactive NL-Play-In Interface ===&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter the LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Quick fix mechanism  ====&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity; i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Statistical NL-Play-In Interface ===&lt;br /&gt;
&lt;br /&gt;
In case you have a complete textual requirements document, the process of interactive NL play-in may be time consuming and tedious. Instead, PlayGo allows you to import a complete requirements document and transform it into LSCs in batch. Each sentence will be transform into a single LSC. Disambiguation decisions are made using a statistical model that is trained on previously analysed requirement documents. The statistical model is optimized based on two sources of information:&lt;br /&gt;
*content information, i.e., the grammatical structure and lexical items used in individual requirements.&lt;br /&gt;
*context information, i.e., the coherence of the model expressed in the complete document, as a whole.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The requirements document has to adhere to the following rules:&lt;br /&gt;
*Each line contains a single sentence.&lt;br /&gt;
*Each sentence expresses a single requirement / scenario.&lt;br /&gt;
*All sentences obey the same grammar restrictions as in the interactive NL play-in.&lt;br /&gt;
*The file should have the suffix '''.desc'''.&lt;br /&gt;
&lt;br /&gt;
==== Uploading a requirements document ====&lt;br /&gt;
&lt;br /&gt;
In order to upload a requirements document follow these steps:&lt;br /&gt;
&lt;br /&gt;
#Create a textual requirements document &amp;amp;lt;filename&amp;amp;gt;.desc that adheres to the format specified above. Locate the file in your [[Getting Started with PlayGo#Create your First LSC Project|LSC project]].&lt;br /&gt;
#Right-click the &amp;amp;lt;filename&amp;amp;gt;.desc file and select 'Import Description'.&amp;amp;nbsp;&lt;br /&gt;
#A &amp;amp;lt;filename&amp;amp;gt;.lsc files has been created under the same directory, containing a sequence of LSCs, each of which corresponds to one of the textual requirements. A system model for the entire system is created automatically.&lt;br /&gt;
##In case a &amp;lt;filename&amp;gt;.lsc file already exists in the same directory, you will be asked whether to override its contents.&lt;br /&gt;
&lt;br /&gt;
==== Tuning the statistical model ====&lt;br /&gt;
&lt;br /&gt;
The statistical model that is used for parsing requirements document may be tuned using the LSC project properties:&lt;br /&gt;
&lt;br /&gt;
#Right-click the LSC project, and select Properties-&amp;gt;PlayGo-&amp;gt;Play-in.&lt;br /&gt;
#Select the StatisticalNL tab and choose a statistical grammar file:&amp;lt;br/&amp;gt;[[File:Properties.playin.statisticalNL.png]]&amp;lt;br/&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Select one of the two parsing modes:&lt;br /&gt;
##Without context; i.e., applying the parser in a sentence-by-sentence mode.&lt;br /&gt;
##With context; i.e., applying the parser for parsing a complete requirements document.&lt;br /&gt;
###In case the &amp;quot;with context&amp;quot; option was selected, you can pre-define how many parse-candidates the model considers via the 'Number of candidates per requirements' box.&amp;lt;br/&amp;gt;NOTE: The number of candidates represents a tradeoff between system accuracy and parse time. The more candidates the model is allowed to consider, the higher the accuracy of the parser. However, if the number of candidates per sentence is too high, parsing performance may be negatively affected. A complete empirical investigation of this tradeoff may be found in &amp;lt;ref&amp;gt; R. Tsarfaty, E. Pogrebezky, G. Weiss, Y. Natan, S. Szekely and D. Harel, &amp;quot;Semantic Parsing Using Content and Context: A Case Study from Requirements Elicitation&amp;quot;, Proc. Int. Conf. on Empirical Methods in Natural Language Processing (EMNLP), to appear, 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
#Click 'OK'.&lt;br /&gt;
&lt;br /&gt;
The statistical parser uses a pre-trained grammar based on a set of manually annotated requirements. Accuracy of the statistical parser may improve if you add more training examples for the statistical model. If you have a set of LSC examples that you would like to use for re-training the statistical parser, you can do so using the 'Train' button.&lt;br /&gt;
&lt;br /&gt;
See also [[How to train a model for statistical play-in]].&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://wiki.weizmann.ac.il/playgo/index.php/Wristwatch_Example Wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://wiki.weizmann.ac.il/playgo/index.php/Phone_Specification Phone].&lt;br /&gt;
&lt;br /&gt;
- [http://wiki.weizmann.ac.il/playgo/index.php/Baby_Monitor_Specification Baby Monitor].&lt;br /&gt;
&lt;br /&gt;
== Show &amp;amp;amp; Tell play-in  ==&lt;br /&gt;
&lt;br /&gt;
To use [[PlayGo Feature List#Show_.26_tell_play-in|Show &amp;amp;amp; Tell play-in]], click the 'Show &amp;amp;amp; Tell Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched. &amp;lt;br&amp;gt; The 'NL Play-In' view is opened with the 'Interact Enable' button selected, in order to allow interaction with the GUI: &amp;lt;br&amp;gt; [[Image:Show&amp;amp;Tell.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; An interaction with the GUI (e.g., clicking a button) creates segment of NL text in the requirement text field of the 'NL Play-In' view.&amp;lt;br&amp;gt; If the interaction can be interpreted in more than one way, a squiggly line appears, indicating an error, and a quick fix dialog is displayed upon hovering. The error can be resolved using the quick fix dialog: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Show&amp;amp;tell.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; As in NL play-in, the LSC is created when pressing ENTER, or when clicking the [[Image:NL.plus.jpg]] button at the view toolbar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Smadar</name></author>	</entry>

	</feed>