Event Delivery Gateway Event Delivery Gateway by Xiaobo Deng, Xiaoqi Lei, Yujie Song Supervisor: Selo Sulistyo Project report for IKT419 in Spring 2010 University of Agder Faculty of Engineering and Science Grimstad, 15 March 2016 Status: Final Keywords: Gateway, Event, UPnP, P2P, Sun SPOT Abstract: The aim of this project is to design a gateway to deliver an event from one network to another. The system has to prove that it is possible that the gateway can resolve the problem that we are facing. We have to define several use cases of UPnP–based DEBS (Distributed Event-Based Systems) and implement one of them. An event was happened in one network, monitoring component finds it and try to sent it to the gateway, this gateway will transmit the event to a gateway which belongs to another network. And some reactive action would be taken corresponding to value of the specific field of the event. The gateway can resolve the problems in distributed event-based systems. Mainly for the communication problem between two networks. We also can compare differences between WebService and P2P technology which are both can be used in the implementation of the gateway. This work is licensed under the Creative Commons Attribution-ShareAlike License (http://creativecommons.org/licenses/by-sa/2.5/). 1.0 Page 1 of 24 Event Delivery Gateway Version Control Version1 0.5 0.6 0.7 Status2 DRAFT DRAFT DRAFT Date3 25 May 10 28 May 10 28 May 10 0.9 DRAFT 28 May 1 2 3 4 5 1.0 Change4 Introduction, theory, Implementation Use case, Sun SPOT Implementation Discussion, Conclusion, Abstract, Preface Modify Author5 Xiaobo Deng Xiaoqi Lei Xiaobo Deng Everyone Version indicates the version number starting at 0.1 for the first draft and 1.0 for the first review version. Status is DRAFT, REVIEW or FINAL Date is given in ISO format: yyyy-mm-dd Change describes the changes carried out since the previous version Author is the one who did the change Page 2 of 24 Event Delivery Gateway Preface The project “Event Delivery Gateway” is part of IKT-419 course. It was proposed by Selo Sulistyo and we built up the group. We had regular meetings with our supervisor to discuss about the project. We also had unofficial meeting with our supervisor when we encountered big problems. We would like to thank Selo Sulistyo who proposed this project for providing the equipments for us and for the support he provided during our project. We also want to thank Jan Pettersen Nytun who gave us good suggestions about the presentation. Grimstad May 2010 Xiaobo Deng, Xiaoqi Lei, Yujie Song 1.0 Page 3 of 24 Event Delivery Gateway Contents 1 Introduction ...................................................................................................................6 1.1 Problem statement ...................................................................................................6 1.2 Problem solution ......................................................................................................6 1.3 Report outline...........................................................................................................6 2 Theoretical background ................................................................................................7 2.1 Sun SPOT ................................................................................................................7 2.2 UPnP .......................................................................................................................8 2.3 CyberLinkForJava ....................................................................................................9 2.4 P2P and WebService .............................................................................................11 3 Solution ......................................................................................................................13 3.1 Requirements.........................................................................................................13 3.2 Design Specification...............................................................................................13 3.3 Implementation ......................................................................................................15 3.4 Validation and Testing ............................................................................................19 4 Discussion ..................................................................................................................21 5 Conclusion ..................................................................................................................22 Appendices ..........................................................................................................................24 1.0 Page 4 of 24 Event Delivery Gateway Figure List Figure 2.1-1 Sun SPOT devices .................................................................................................. 7 Figure 2.3-1 Device class diagram ............................................................................................... 9 Figure 2.3-2 Control point class diagram ....................................................................................10 Figure 2.4-1 Architecture of web service .....................................................................................11 Figure 3.2-1 function design specification ...................................................................................13 Figure 3.2-2 Intel UPnP device—Device Spy and Network Light ................................................15 Figure 3.3-1 Sun SPOT java code of user_setup ........................................................................15 Figure 3.3-2 Sun SPOT java code of sample ..............................................................................16 Figure 3.3-3 Sun SPOT java code of starting application ............................................................16 Figure 3.3-4 device type variable in control point ........................................................................17 Figure 3.3-5 java code of eventNotifyReceived method ..............................................................17 Figure 3.3-6 java code of transfer a SSDP packet into a string ...................................................17 Figure 3.3-7 java code for starting a P2P application ..................................................................18 Figure 3.3-8 java code for sending event ....................................................................................18 Figure 3.3-9 java code for receiving event ..................................................................................18 Figure 3.3-10 java code for invoking display() method ................................................................19 Figure 3.3-11 java code for sending event to UPnP devices .......................................................19 Figure 3.3-12 java code for receiving the event ..........................................................................19 Figure 3.4-1 test 1—gateway test ...............................................................................................20 Figure 3.4-2 information which received by gatesway .................................................................20 1.0 Page 5 of 24 Event Delivery Gateway 1 Introduction 1.1 Problem statement Event processing has become the paradigm of choice in many monitoring and reactive applications. An event based system is software in which event cause reaction. Mainly there are three important parts in these event-based systems which are monitoring component, transmitting component and reactive reacting component. These event based systems are developed in many domains. An event was defined by Chandy [9] as a significant change in the state of the universe. So any state change in our universe can become the event like temperature change, lighting intensity change and objects’ movement. WSN (Wireless Sensor Network) is a typical technology used in the system as monitoring component to collect these events. In most applications, the reaction part is not in the same network with the monitoring component. So it is necessary to connect them together. There are more and more devices appearing in modern life. In order to share the resources on different types of devices, UPnP technology is created. The basic idea of UPnP technology is to let the device coordinate with other devices which are in the same network. UPnP device will send different messages and events to other devices and control points. So an UPnP device can inform other UPnP devices about what it capable of, the control point also can send control action to device. When more and more devices join into the network, lots of messages and events will be transmitted on the network. It may cause the network overloaded. At the same time, it is possible that different UPnP networks have the needs of communicating with each other to exchange information. 1.2 Problem solution The situation mentioned above requests a gateway system to control the events. Through configuration, gateway determines the events which would be sent out. A gateway is an UPnP controller receives events from UPnP device and delivers events as well. The gateway also takes the responsibility to communicate with the gateway which belongs to another network. It shares the information with other networks. With the help of the gateway, UPnP network can send and receive specific events. 1.3 Report outline Chapter 1 is the introduction about problem statement and the solution for it. Then Chapter 2 illustrates the theories that would be used in this project. Chapter 3 is the implementation details of the system which includes requirements and design specification. Then Chapter 4 is the discussion about this system. The final chapter is the conclusion for this project. 1.0 Page 6 of 24 Event Delivery Gateway 2 Theoretical background 2.1 Sun SPOT Sun SPOT(Sun Small Programmable Object Technology) is a wireless sensor network mote development by Sun Microsystems.[ http://en.wikipedia.org/wiki/Sun_SPOT]. The basic unit includes some sensors and inputs and outputs. The development tool provides two spot device and base station. We can see the device in Figure 2.1-1. Figure 2.1-1 Sun SPOT devices There are three sensors on SUN SPOT device: temperature sensor, light sensor and accelerator sensor. Temperature sensor can detect the environment temperature value and return it back as Centigrade or as Fahrenheit. Light sensor return the light tense from 0 to ***[Need to be done to specification]. The accelerator detects movement of three dimensions. This information can be sent by wireless connection to base station. Developer can program on base station to get this data and sent it to the application on devices like computer with USB interface. Developer can program on Sun SPOT by using the Sun SPOT API. Sun SPOT API is based on Java and integrates virtual components corresponding to real device. The developer can implement their own systems by these resources. Sun Microsystems provides Sun SPOT Manager Tool to help developer to develop their own system based on Sun SPOT. Sun SPOT Manager Tool integrates mainly 5 tools. 1. Tutorial in the tools introduces the structure of the device and shows the functionalities of each part. You can find the detail explanations for typical sample code. It also gives the developer the steps of creating a application. 2. Sun SPOT upgrades the firmware of the Sun SPOT device. The device’s information can be check here. 3. You can install SDK in SDKs part. All the relevant documents can be found here including SolariumUserGuide and SunSPOT-Ownermanual. And you can find tutorials for all sample code. Before you install the manage tool, you have to install JDK/JRE on your computer first. So the program depends on Java can be executed. 1.0 Page 7 of 24 Event Delivery Gateway When you install the manager, it recommends you to install ANT. ANT is a build and deploy tool to help the developers to organize their work. And developer can use ant –var to deploy code to the Sun SPOT device. In addition, Sun SPOT Netbeans modules can enable programmer to program under Netbeans and deploy the program to Sun SPOT device directly. 2.2 UPnP UPnP™ technology defines architecture for pervasive peer-to-peer network connectivity of intelligent appliances, wireless devices, and PCs of all form factors. It is designed to bring easyto-use, flexible, standards-based connectivity to ad-hoc or unmanaged networks whether in the home, in a small business, public spaces, or attached to the Internet. UPnP technology provides a distributed, open networking architecture that leverages TCP/IP and Web technologies to enable seamless proximity networking in addition to control and data transfer among networked devices.[Specification] Unlike most devices these days that need installing driver before it can be used, an UPnP based device can join a network, get the IP address, discover other device and inform its capabilities, get and execute control action from control points. And this device can remove from the network dynamically. In order to make the dynamical plug and play, six important procedure of UPnP device have to be paid attention which are: addressing, discovery, description, control, event notification, presentation. Addressing IP addressing is the foundation of UPnP. Each device need to search and find out a DHCP server to request an IP address. If the DHCP server doesn’t exist, this network is unmanaged and the device must assigned itself an address. This procedure that the UPnP device assigns itself an IP address is known as AutoIP. Discovery When a new device joins to the network, it will advertise its device and service information to the control points on the network. Similarly, when a control points is add to network, discovery protocol enable the control point to search the interest device. The SSDP (Simple Service Discovery Protocol) is used in this procedure. The device (includes device and control points) could send SSDP packet to network. In the packet, there are many parameters to indicate the device information. USN is the unique identifier of the device and NTS indicate the state of SSDP service and so on. Description Discovery enables control points to find the device while there is not enough information in SSDP packet. So description makes control point learn more about the device and the service. The control point will find the device’s capabilities by the UUID which existed in SSDP packet. Control A control point get the service of UPnP device can provides by description step and it can invoke the actions and receive response from the device. Control point posts an action to the device, and waits for the executed result or error message. 1.0 Page 8 of 24 Event Delivery Gateway Event notification A description file is consisted of list of actions and list of service. The service publishes state updates when the value of states changes. This updates will be sent as event message and the subscriber receive and process it. The message contains one or more state variable and the new value of the state. Presentation Presentation exposes an HTML-based user interface for controlling and/or viewing device status [specification]. A control point can retrieve the device’s information and service and display them on the HTML page according to the URL which get by precious step. 2.3 CyberLinkForJava CyberLinkForJava is open source framework which is used to develop UPnP applications. It provides virtual device and control points as well as many listeners to help developer. CyberLinkForJava uses KXML and Xerces as its XML parser, so you have to import the library to your project before you implement you own system. It provides two kinds of device which are Control Point and Device. Divice Figure 2.3-1 Device class diagram When you want to create your own UPnP device you have to make description file. In the description file for device, the uuid should be assigned and URL for service description file has to be marked, the presentation URL is optional. And new device is create by this description file like this: String descriptionFile = “description/description.xml”; Device upnpDevice = new Device(descriptionFile); And you have to start the device by the code: upnpDevice.start(); The device begins to send notify packet to network. 1.0 Page 9 of 24 Event Delivery Gateway In the service description file, actions are seals in actions. The state variable in this file is used to post an event. You can get you service by the code: ServiceList serviceList = upnpDev.getServiceList; For(int index=0; index<serviceList.size(); index++){ Service service = serviceList.getService(index); ActionList actionList = service.getActionList(); //get action by interator …… } To receive the control point from control point, upnp device have to implement ActionListener interface as well as actionControlReceived() method. When device want to sent its state to the subscriber, it has to get the stateVariable first and set the value to it, then this event would be updated to the control point. Control Points Figure *** is the class diagram for cyberLink UPnP control point. Figure 2.3-2 Control point class diagram One of difference between control point and device is that there is no description file for control point, you can create control point like this: ControlPoint ctrlPoint = new ControlPoint(); And start it by ctrlPoint.start(); To receive notify event from device, control point implement NotifyListener interface and implement deviceNotifyReceived() method. So all information in the packet can be get by : String uuid = ssdpPacket.getUSN(); String target = ssdpPacket.getNT(); String location = ssdpPacket.getLocation(); 1.0 Page 10 of 24 Event Delivery Gateway Control point knows the new device and removed device by adding DeviceChangeListener. The method deviceAdded(Device dev) is for a new device notify and deviceRemoved() method is for the removed device sending byebye message. 2.4 P2P and WebService P2P techbology A peer-to-peer, commonly abbreviated to P2P, is any distributed network architecture composed of participants that make a portion of their resources (such as processing power, disk storage or network bandwidth) directly available to other network participants, without the need for central coordination instances (such as servers or stable hosts).[ http://en.wikipedia.org/wiki/Peer-topeer]. In the P2P network, there is no typical server and client but coordinate peer nodes. Each participant shares its resources. As a new node join in the network, the capacity of the network increase. While in the traditional server-client architecture, a new client means asking for more resources from the server. P2P technology is used to distribute calculating. The big task will split into small ones by distributed algorithm and hand out to the peer nodes. Each node take the task and return the result. P2P application can get through the firewall of the network and so it can be a communication tool between two networks. WebService WebSerivce is a technology that enables the client access the service from remote endpoint. Service provider publishes API (Application Program Interface). Basically there are 3 role sin WebService architecture which shown in Figure ***. Service provider creates some services and registers these services on register server. When service requester sent service request to the register server, server will return the WSDL (Web Service Description Language) to identify the location of the service. The WSDL are always shown as a HTTP link. Service requester can send parameters according to this URL. Service provider process the request and return result to this requester. Figure 2.4-1 Architecture of web service We can use JAX framework to implement webservice application with Eclipse. And we can create a webservice client to test the service. 1.0 Page 11 of 24 Event Delivery Gateway In our system, we need to transmit the event immediately when the event arrives. The problem is we have to start the web service separately. More importantly, there are many limits for the service which would be published, while P2P technology does have those limits. And that is the reason why we choose P2P technology rather than webservice. 1.0 Page 12 of 24 Event Delivery Gateway 3 Solution 3.1 Requirements Functional requirement: 1. Get environment information and sent it to UPnP device by Sun SPOT device. 2. Create UPnP device which can receive specific datas. 3. Create a gateway which can receive the event and transmit it to the other gateway. 4. Create a gateway which can receive the data and encapsulate the data to an packet. 5. Create a control device which can send control action. 6. Create an UPnP device which can receive control action. Non- functional requirement (assumptions) 1. There is only one gateway in a network and this gateway does not take the responsibility of managing this network. 2. There are only two gateways in this system and the data transmission is just between these two gateways. 3.2 Design Specification 3.2.1 Functionality Design As shown in Figure 3.2-1. There are mainly three parts: network 1, network 2 and transmission part. In network one, Sun SPOT collect information like temperature and sent it to the UPnP device that we create. The UPnP device will encapsulate this information into SSDP Packet and send it out. The event listener of gateway will get the relevant information. Gateway will sent them out by P2P technology. Gateway2 will get the packet and control UPnP device according to the packet. Figure 3.2-1 function design specification 3.2.2 Use cases Before we implement the gateway application, we define some event based use cases. Baby Take Care System The Baby Take Care System consists of a set of sensors, a control system, and some end point devices. It will be needed when the parents are not in the same room with the baby. 1.0 Page 13 of 24 Event Delivery Gateway There will be a sound sensors monitoring if the baby is crying and an accelerometer sensor monitoring if the baby is sleeping in peace. Once it monitored the baby doesn’t sleep very well, it generates events via the control system to notice parents in another room by alarming. And it could play some music and turn on the light in the baby's room as well. Auto Switching TV System The Auto Switching TV System will automatically switch the playing TV set to the room where the house owner stands. There should be some TV in different rooms, controlled by the controller. And there should be some radio receivers in each room receive the signal of the micro radio transmitter brought by the user to monitor the position of the user. Once the user moved from room A to room B, a switching event will be generated from the room A and send to the TV controller in room B to open the TV in the same channel. Once the TV in room B is opened successfully, another event will be generated in room B, and notice the TV in room A to shut down. Remote Burglar-Proof & Alarming System The Remote Burglar-Proof & Alarming System consists of some sensors, cameras, some terminal devices and an event based system, to protect your home from burglars. Once the user's house door is opened by others, an alarm will be to the user's mobile device wherever he is. And if he wants, he can watch the real-time video through the camera to judge if the door is opened by strangers. If it is, the user can choose to turn on the speakers in his home to persuade the strangers to leave, or he can report to the police. 3.2.3 Discuss the software tools that are to be used during the implementation Eclipse/Netbeans Eclipse and Netbeans both can be used. While Sun SPOT Manage tool provides corresponding develop modular which enable Netbeans to deploy the programme to the Sun SPOT device directly. So it seems better to choose Netbeans, but that’s not so critical in our project. Developer Tools for UPnP™ Technology The Developer Tools for UPnP™ Technologies is a set of development and reference tools for creating software that is compatible with the UPnP specifications. These tools includes generic devices and control points, stack generation tools and UPnP AV debug and reference tools.[ http://opentools.homeip.net/dev-tools-for-upnp] In this tool kit, there are many tools like AV Media Renderer, AV Media Server, Device Spy and Network Light. Device Spy can find UPnP devices which are in the same network. The devices services are displayed and can be invoke to control the device. As shown in Figure 3.2-2, the network light has been started, so the Network Light can be found in the Device Spy. There are two different services on this light: Dimming service and Switch Power service. Dimming service can be used to adjust the tense of the light while switch power service can be use to turn on the light or turn off it. 1.0 Page 14 of 24 Event Delivery Gateway Figure 3.2-2 Intel UPnP device—Device Spy and Network Light So when you click the invoke button and set the variable value, and control event will send out. The state of the light would be changed. 3.3 Implementation 3.3.1 Monitoring component The application to drive SunSPOT device consists of 2 parts: on SunSPOT and on host. There is an event based framework inside the SunSPOT sensor network. The SunSPOT device generates and sends events to the host through the base station by radio. And once the events are received by host, they are extracted and processed in advance. The application implemented on the SunSPOT has 2 important classes: Sensor and MIDlet. The MIDlet class is the entrance of the application running on SunSPOT, and it accesses the sensor through the class Sensor. In our case, the Sensor class is extended to EDemoBoard class, the user_setup() method is used to access the sensor and store the value. And the sample() method is used to encapsulate and send the data. Figure 3.3-1 Sun SPOT java code of user_setup 1.0 Page 15 of 24 Event Delivery Gateway Figure 3.3-2 Sun SPOT java code of sample And the MIDlet class is extended to StartApplication class. The startApp method will be automatically called by the VM to start the application. In the startApp method, we monitor the connection to the host and the command from the host, and routinely generate events with the information provided from the EDemoBoard class. Figure 3.3-3 Sun SPOT java code of starting application In the host application, we use SensorFramework.getInstance().registerNodeEventListener() method to register a class as the event listener, and then we can extract the information and process the data. 3.3.2 Transmit component We use P2P technology to transmit data from one gateway to another. The reason we choose P2P technology but not WebService is that P2P technology is more suitable for this application. When WSebService is developed by MyEclipse, the service has to be started running separately as a service. And there are some limits in WebService which are become the barrier we integrate the service. P2P technology is better to use and flexible. Step 1: Receive the event. In order to receive the event sent by UPnP device, gateway has to implement some Listeners such as NotifyListener, EventListener and SearchresponseListener. 1.0 Page 16 of 24 Event Delivery Gateway Figure 3.3-4 device type variable in control point Also we have to implement eventNotifyReceived() method to get the data. As shown in Figure ***, we can get uuid, sequence number, variable name and the value. The service can be got by uuid which is the Universal Unique Identification for the service. And we can get the device by the service. The SSDP Packet sent by the device can be got by the device. We need to transmit this packet to anther gateway. As P2P technology can sent string type and document type but not SSDP packet, so we have to find another way to transmit it. Figure 3.3-5 java code of eventNotifyReceived method Finally, we find that we can transfer the packet into a string and then repacked it. We know that the transferred string is the data part of the packet from the code below, which means we can put this string into the data part of new SSSP packet on the other side. Figure 3.3-6 java code of transfer a SSDP packet into a string Step 2: Establish service pipe First, we need to create network manager.//Get the details of P2P . 1.0 Page 17 of 24 Event Delivery Gateway Figure 3.3-7 java code for starting a P2P application Step 3 Send event Figure 3.3-8 java code for sending event Step 4 Receive the event Figure 3.3-9 java code for receiving event 1.0 Page 18 of 24 Event Delivery Gateway 3.3.3 Reactive component Reactive component is the third partial of the system. In the domain, the gateway will broadcast event to the UPnP network. All devices in this network will receive the event and only the display equipment will process the event. So first we need to get the event information. In order to extract the string out, we use commas to divide the message. Method sendEvent(String str) can make it happen and set each parameter into an array. Figure 3.3-10 java code for invoking display() method In the gateway we create new device called gatewayDev to send the state variable. Figure 3.3-11 java code for sending event to UPnP devices In DisplayDevice, the code shown in Figure ** implement the eventNotifyReceived() method. So the DisplayDevice can get the message which would be shown on the display. Figure 3.3-12 java code for receiving the event 3.4 Validation and Testing TEST 1: Test the gateway works At this step, we use Intel network device to send event. First we need to start the two gateways. When we run the light, a new device notify was sent out. In this message, UUID is unique identification of the service and the extra data “-5” is to identify the each message. And the status is the variable name and “0” is the value of the variable. 1.0 Page 19 of 24 Event Delivery Gateway We can find the network light in Device Spy, and invoke the Set Target method. The state of Network Light would be changed. Figure 3.4-1 test 1—gateway test The event will be receive by the gateway and sent it to another gateway. Figure *** shows the data of the SSDP Packet. The gateway receives this data as a string and will set it into a new SSDP packet. We also can see the uuid and value at the end of the message, and the value will be pick out from it. Figure 3.4-2 information which received by gatesway 1.0 Page 20 of 24 Event Delivery Gateway 4 Discussion Basically, there are two parts in our project which have to be implemented: 1. Design a gateway which can use to delivery event between two networks 2. Choose application to test the gateway. First we need to choose the technology for the gateway. We can choose P2P or Webservice. Sun Micorsystems create JXTA framework for P2P application, it has proved that JXTA is a welldesign and easy to use technology. And that is the reason why we choose it. The advantage of WebService is that client can access the service by HTTP link. So it is easy to implement the client while it increases the complexity on the server side. And we encountered an unknown error when we create a web service for this application. It is hard for us to integrate the webservice into our system. CyberLinkForJava is the framework we chose for UPnP network. This framework provides APIs to help us to create our own device. The only problem is the event cannot be sent out by the device even though we follow the instruction on the specification. After that, we check the source code about this function and find the service use a HTTP request to send the value. We cannot figure it out why the event send procedure doesn’t work. In order to continue our work, we choose Intel UPnP device an alternative. It proved that the gateway works. And the same thing happened on the other network, so we cannot finish the use case. In the final system, we can prove that the gateway is ready, but we cannot run the application completely because of the problem we cannot fix. 1.0 Page 21 of 24 Event Delivery Gateway 5 Conclusion In this project, we need the design and implement a gateway. This gateway will transmit an event from one network to another. In order to emulate the function of gateway, we create two UPnP networks. Because we encountered a problem that we cannot resolved so we choose Inter UPnP device as an alternative. And it is proved that the gateway works. This project is only a simple emulation of event delivery gateway. There are still a lot of problems that need to be resolved. 1. W kind of strategy to divide UPnP device into different network in a real application? 2. How to coordinate many gateways to let them work more efficient? 3. How to make the gateway more flexible and reliable? 1.0 Page 22 of 24 Event Delivery Gateway References Follow the IEEE guidelines for references see: http://www.ece.uiuc.edu/pubs/ref_guides/ieee.html [1] HiA, Bruk av kilder i skriftlige arbeider ved Høgskolen i Agder, August 2006, http://www.hia.no/stud/eksam/kilder.htm [2] Peter J. Denning, Douglas E. Comer, David Gries, Michael C. Mulder, Allen Tucker, A. Joe Turner, and Paul R. Young, Computing as a Discipline, Communications of the ACM, Volume 32, Number 1, 1989 [3] Check http://www.ntnu.no/viko/, which is very useful when writing reports. 1.0 Page 23 of 24 Event Delivery Gateway Appendices Appendix A Glossary and Abbreviations Appendix B (Detailed) Specifications (optional) You may want to include more (sets of) specifications than in the report body. You may have Functional requirements in the body and Non-functional (not directly related to the user interface) in the appendix. Appendix C Design Documentation (optional) This appendix may include documentation like program listings, schematic diagrams, drawings etc Appendix D Project Management (optional) Include here a description of the project and how you organised it. Answer the following questions: What is the project title, and who was the problem owner (external company)? Who were the project participants? How did you organize the project as a team, was there a project leader, did you have separate roles in the project? How did you distribute the work internally in the project: who did what? Did you cooperate with other teams? Which milestones did you have? What dates? If you have a cost budget, present it. Is your project part of a larger project? What is the relation between the two? Appendix E Another Appendix This is just to show you can have as many appendices as you like, but try to restrain yourself. Do not include more details than necessary. Finally, please note, that appendices are traditionally numbered by letters A, B, C and so on. Some newer templates use numericals, but academic tradition prefers letters. 1.0 Page 24 of 24