Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INDUSTRIAL PROJECT
PROJECT PARTICIPANTS
LishanEticha
Sathyanarayanan Devendran
30May 2016
Declaration
This is to declare that the project work which is done under the supervision of Instructor Daniel
Mahetotand having the title University of Gondar Navigation System for AtseTewodros campus is
the sole contribution of:
Sathyanarayanan Devendran
LishanEticha
No part of the project work has been reproduced illegally (copy and paste) which can be considered
as Plagiarism. All referenced parts have been used to argue the idea and cited properly. We will be
responsible and liable for any consequence if violation of this declaration occurs.
Date: 15/01/2016
Group members:
We are highly indebted to Instructor Daniel Mahetotfor his guidance and constant supervision as
well as for providing necessary information regarding the project & also for his support in
completing this documentation.
We would like to express our special gratitude and thanks to Dr. AsefaGetaneh for giving such
attention and time.
Our thanks and appreciations also go to people who have willingly helped us out with their
abilities."
Contents
List of Figures
Figure 1 Time Schedule ....................................................................................................................... 8
Figure 2 Use case ............................................................................................................................... 26
Figure 3 Activity Diagram search Location....................................................................................... 52
Figure 4 Activity Diagram navigate to search result ......................................................................... 52
Figure 5 Activity Diagram switch search result view ........................................................................ 53
Figure 6 Activity Diagram change map view setting ........................................................................ 53
Figure 7 Activity Diagram change Navigation speed setting ............................................................ 53
Figure 8 Activity Diagram change volume setting ............................................................................ 54
Figure 9 Activity Diagram change voice guidance setting ................................................................ 54
Figure 10 Activity Diagram set way point ......................................................................................... 55
Figure 11 Activity Diagram navigate to destination way point ......................................................... 55
Figure 12 Activity Diagram detect current location .......................................................................... 56
Figure 13 Activity Diagram view dormitory information ................................................................. 56
Figure 14 Activity Diagram navigate to dormitory ........................................................................... 57
Figure 15 Activity Diagram view course schedule ............................................................................ 57
Figure 16 Activity Diagram navigate to class room .......................................................................... 58
Figure 17 Activity Diagram view exam schedule.............................................................................. 58
Figure 18 Activity Diagram navigate to exam room ......................................................................... 59
Figure 19 Activity Diagram view clearance information .................................................................. 59
Figure 20 Activity Diagram navigate to clearance room ................................................................... 60
Figure 21 Activity Diagram view registration information ............................................................... 60
Figure 22 Activity Diagram navigate to registration room ................................................................ 61
Figure 23 Activity Diagram view lounge information ...................................................................... 61
Figure 24 Activity Diagram navigate to lounge ................................................................................ 62
Figure 25 Activity Diagram user log in ............................................................................................. 62
Figure 26 Activity Diagram register user .......................................................................................... 63
Figure 27 Activity Diagram enter Location information ................................................................... 63
Figure 28 Activity Diagram edit Location information ..................................................................... 64
Figure 29 Activity Diagram delete user account ............................................................................... 65
Figure 30 Activity Diagram enter course schedule............................................................................ 65
Figure 31 Activity Diagram edit course schedule.............................................................................. 66
Figure 32 Activity Diagram enter registration information ............................................................... 66
Figure 33 Activity Diagram edit registration information ................................................................. 67
Figure 34 Activity Diagram enter exam schedule ............................................................................. 67
Figure 35 Activity Diagram edit exam schedule ............................................................................... 68
Figure 36 Activity Diagram enter dormitory information ................................................................. 68
Figure 37 Activity Diagram edit dormitory information ................................................................... 69
Figure 38 Activity Diagram delete dormitory information................................................................ 70
Figure 39 Activity Diagram Enter Lounge Information .................................................................... 71
Figure 40 Activity Diagram edit lounge information ........................................................................ 71
Figure 41 Class Diagram ................................................................................................................... 74
Figure 42 Sequence Diagram search Location .................................................................................. 75
Figure 43 Sequence Diagram Navigate to search Result ................................................................... 76
Figure 44 Sequence Diagram Switch Result View ............................................................................ 76
Figure 45 Sequence Diagram Set Way Point ..................................................................................... 77
Figure 46 Change Map View Setting................................................................................................. 78
Figure 47 Sequence Diagram Change Volume Setting ..................................................................... 78
Figure 48 Sequence Diagram change navigation Speed Setting ....................................................... 79
Figure 49 Sequence Diagram Change Voice Guidance Setting ........................................................ 79
Figure 50 Sequence Diagram Detect Current Location ..................................................................... 80
Figure 51 Sequence Diagram view Dormitory Information .............................................................. 81
Figure 52 Sequence Diagram course schedule Information .............................................................. 82
Figure 53 Sequence Diagram view Exam Schedule Information ...................................................... 83
Figure 54 Sequence Diagram view Registration Information ........................................................... 84
Figure 55 Sequence Diagram view Lounge Information ................................................................... 85
Figure 56 Sequence Diagram Navigate to Destination Way point .................................................... 86
Figure 57 Sequence Diagram Navigate To Class Room ................................................................... 86
Figure 58 Sequence Diagram Navigate To Dormitory ...................................................................... 87
Figure 59 Sequence Diagram Navigate To Clearance Room ............................................................ 87
Figure 60 Sequence Diagram Navigate To Lounge ........................................................................... 88
Figure 61 Sequence Diagram Navigate To Registration Room......................................................... 88
Figure 62 Sequence Diagram view Clearance Information ............................................................... 89
Figure 63 Sequence Diagram User Login .......................................................................................... 89
Figure 64 Sequence Diagram Register User ...................................................................................... 90
Figure 65 Sequence Diagram Delete User Account .......................................................................... 91
Figure 66 Sequence Diagram enter location Information .................................................................. 92
Figure 67 Sequence Diagram edit Location Information .................................................................. 93
Figure 68 Sequence Diagram enter Dormitory Information .............................................................. 94
Figure 69 Sequence Diagram edit Dormitory Information ................................................................ 95
Figure 70 Sequence Diagram delete Dormitory Information ............................................................ 96
Figure 71 Sequence Diagram enter Course Schedule ........................................................................ 97
Figure 72 Sequence Diagram enter exam schedule ........................................................................... 97
Figure 73 Sequence Diagram edit Course Schedule .......................................................................... 98
Figure 74 Sequence Diagram edit Exam Schedule ............................................................................ 99
Figure 75 Sequence Diagram enter registration information ........................................................... 100
Figure 76 Sequence Diagram edit registration information ............................................................. 100
Figure 77 Sequence Diagram enter lounge information .................................................................. 101
Figure 78 Sequence Diagram edit Lounge Information .................................................................. 101
Figure 79 User Interface Main Menu............................................................................................... 102
Figure 80 User Interface Navigation Menu ..................................................................................... 102
Figure 81 User Interface Set Starting Way Point Location Menu ................................................... 102
Figure 82 User Interface Setting Button .......................................................................................... 103
Figure 83 User Interface Setting Menu ............................................................................................ 103
Figure 84 User Interface Map View Setting .................................................................................... 103
Figure 85 User Interface Setting Menu ............................................................................................ 104
Figure 86 User Interface Volume control Slider.............................................................................. 104
Figure 87 User Interface Navigation Speed control slide ................................................................ 104
Figure 88 User Interface voice Guidance setting ............................................................................. 105
Figure 89 User Interface Login Form .............................................................................................. 105
Figure 90 User Interface Administrator Operation Menus .............................................................. 106
Figure 91 User Interface department Head operation menus .......................................................... 107
Figure 92 User Interface dormitory manager operation menus ....................................................... 108
Figure 93 User Interface Lounge owner operation menus............................................................... 109
Figure 94 User Interface student navigation menus ........................................................................ 110
Figure 95 component diagram system data management part ......................................................... 114
Figure 96 Component Diagram navigation part .............................................................................. 115
Figure 97 Deployment Diagram ...................................................................................................... 116
Figure 98 Normalized data Base Schema ........................................................................................ 117
Figure 99 Component Diagram Subsystem Service ........................................................................ 121
Figure 100 Detailed Class Diagram ................................................................................................. 122
Figure 101 Package Diagram ........................................................................................................... 127
List of Tables
Built environment is an important factor in people's daily life as they spend most of their
time moving from one place to another inside indoor and local environments. It is extremely
important for people to find their destination in large complex places holding to many buildings,
such as campuses, airports and other large organizations. 3D capabilities are becoming highly
demanded in most visualization-related applications. So far most navigation systems use 2D
maps to represent the environment. However, these maps do not provide adequate
information about object features, such as colors, textures and shapes. A 3D environment
provides users with more realistic spatial information. The goal of this project is to assist users in
navigating from one place to another by creating navigation software for AtseTewodros campus.
1. Background
Navigation system is a system that guides objects moving from one place to another place. The
history of navigation is old. Well known navigation tools that were intensively used in early
navigation are Maps. Maps have been used for centuries to transit users from one place to another.
In the last decade, navigation devices have used digital maps to locate the position of the user and
assist in providing navigational directions. Recently, maps have become more than just
visualization tool in navigation systems; they are now an aiding tool for enhancing the
reliability of the obtained navigation solutions. Now a day’s navigation system has evolved
froma paper map to an electronic map combined with route instructions, usually displayed on a
dashboard video screen[1]. So far most navigation systems use 2D maps to represent the real
world environment. However, these maps do not provide adequate information about object
features, such as colors, textures and shapes. But, a 3D map provides users with more realistic
spatial information and exact simulation of the real world.
In our project named ATCNS (AsteTewodros campus navigation System), we are going to
develop system that provides interactive 3D navigation for AtseTewodros campus.AtseTewodros
campus is the main campus in University of Gondar. The campus is located in the northern part of
Gondar with a huge coverage area of 2,323.02 by 6266.404 fit [2]. Currently the campus has no
automated navigation system developed for fresh and senior students, tourists, university
employees, car drivers or any other persons, which makes it harder to locate buildings, places or
parking slots in such a huge campus. The project feature includes displaying routs such as
drivable and pedestrian path in voice navigation and give the user to take run time decision in
the term of voice as well as text message. Services like Google maps, Google Latitude and GPS
system are playing a vital role in location based services and have become absolutely necessary in
recent year with vast amount of user Relying on them for direction but they are developed to
help users in outdoor location based services and their capability not yet been fully applied to
campuses or in most organizations [3]. For example, in our campus there are many buildings,
parking slots, new under developing buildings that no complete direction is provided by Google
map or GPS application. The problem address in this project is on using current advanced
technology to provide a mechanism to facilitate users with automated indoor navigation in
1
AtseTewodros campus. Our objective is to design and implement an easy to use system that
provides accurate location information based on the user’s current position.
As most of the data that is the map information like distance between two buildings already
available so the cost of gathering information is minimized. The work that needs to be done is
organizing the available information properly and gather the remaining information. This
application will clearly reduce the user’s frustration of finding Location information in
AtseTewodros campus as it allows mapping services to be used by user’s who don’t have
24x7 access to internet. The application will surely be of great use to fresh students and
people visiting AtseTewodros campus. To make the system universally accessible the working of
the system will not only be based on the English language which is not understandable by all
types of user or visitor of AtseTewodros campus in case of rural area visitor it is difficult to interact
with system so we are going to develop application that provide additional universal language
called Visual Lingua or UPL (Universal Picture Language) which is more user friendly for rural
area visitor or tourists.
2
2. Statement of the problem and Justification
In AtseTewodros campus there is no automated location indicator system. As a result, this problem
increases the student’s or campus visitor’s frustration and stress of finding and locating a location to
a great extent. Although there are advanced technologies in the area of navigation such as Google
map and GPS they do not work indoor (or in most local areas)meaning they are developed to help
users in outdoor location based services and their capability not yet been fully applied to
campuses like AtseTewodros or for indoor services the direction within the campuses are not
available using Google map application, therefore. Currently there is no well-defined, accurate,
quicker and automated way of navigating a user from one location to another inAtseTewodros
campus. Generally students, campus employees or campus visitors fail to locate their desired places
accurately and on time because of four basic reasons:
1. There are high populated number of buildings and many new under developing buildings
reside in the campus
2. Huge coverage area of the campus itself.
3. Most building in the campus have similar architectural design and colors.
4. Currently, while students or campus visitors searching for locations they only have two
inaccurate and time wastage choices.
4.1 The first one is asking somebody for direction.
4.2 The second one is follow the direction boards installed in some places and the building
labels written on each building.
As a result
3
Students especially fresh students may face theft or robbery by the person who they ask to
guide them to some location in the campus.
During clearance day students have the difficulty of knowing or locating clearance offices in
the campus and also have the difficulty of identifying which clearance office to go first and
which to go next.
Since each department have a separate registration room students face the difficulty of
finding their department registration room on registration day.
And generality there is some difficulty locating service providing places like lounges,
laundries, stationaries and shops.
To solve such kind of problems, AtseTewodros campus requires automated navigation systems that
confine location information in a single place and make it universally available.
3. Project Objective
The general objective of this project is to build a robust and flexible mobile based 3D navigation
system for AtseTewodros campus that could be used to navigate users to their desired location.
To achieve general objective of the system we used the following specific activities
Collect MAC Address or BSSID of access points by connecting our wireless devices to each
access points installed in AtseTewodros campus for the purpose of implementing the
localization method such as detecting current user position.
Prepare requirement gathering and analysis document to gather and analyze user
requirements this involves Use data collection methods: interview and observation to gather
system requirements..
Prepare system design document to identify system design goals, to specify system
decomposition as well as architecture of the system.
4
4. Scope of the Project
The scope of the project is determined by the allocated time, resources and the client’s
requirements. Thescope of the system is limited;currentlythe system covers only AtseTewodros
campusof University of Gondar. The scope of the project focuses on providing students, campus
employees and campus visitors a navigation system with their current location displayed in a 3D
map of AtseTewodros campus on their mobile device and the shortest route plan when searching
for a location or a building. Presently the project does not consider a navigation system for visually
impaired peoples.For the purpose of making the system universally accessible the working of the
system is not only based on the English language which is not understandable by all types of
user or visitor of AtseTewodros campus in case of rural area visitor it is difficult to interact with
system so the project considers using additional universal language called Visual Lingua or UPL
(Universal Picture Language) which is more user friendly for rural area visitor or tourists.
Generally the project considers both foot/pedestrian navigation and car navigation.
Software development begins with a certain human need which can be articulated as a problem. We
stated the statement of problem above then we develop complete understanding on the topic. Next
we had some idea to solve the problems and then we formalize and change our idea to reality by
producing software. This will be achieved by software development, which involves eliciting
system requirements specification, system design, system implementation and finally system
testing. In other words, we also had to follow methodologies used in software engineering. We
divide the project into phases, with a simple implementation of a small set of the software
requirements and iteratively enhance the evolving versions until the complete system is
implemented and ready to be deployed.This indicates that our software development methodology
isiterative model.
There are several fact finding techniques or methods involved in system analysis phase that we will
use them throughout the system development life cycle.
5
5.1.1. Interviewing
Help us to collect information about the current situation from the user face-to-face by asking
questions prepared by the team.
It allows as participating in or watching a person perform activities to learn about the current
situation or system. This is use full when the validity of date collection is in question or when the
complexity of certain aspect of the system prevents a clear explanation by the system.
5.1.3. Questionnaires
Involve attaining information from people who are concerned with the usage of the system. The
team prepares questions which are simple, clear and to the point. The questionnaire will be mailed
or given to peoples in hard copy then they will mail back or submit their answers letter.
Software Tools
Autodesk 3Ds Max is used for modeling the 3D models of AtseTewodros campus buildings,
road, parking slots and other 3d models.
Unity3D is one of the latest Game Engine with the Android Development Tool plug-in, will
be used as the development environment for Javascript, C#, PHP, Booscript and shader
codes.
WAMP SERVER is used for storing navigational, location and student information
permanently.
Edraw Max for drawing UML software diagrams.
Notepad++ for coding PHP web language.
Mono Developer Editor for coding C#, Javascript, Booscriptand shader languages
The proposed navigation system offers many advantages to the user; it reduces the student’s,
campus employee’s or campus visitor’s frustration and stress of finding a location to a great extent.
The main significance of the project includes:
6
The system allows users to retrieve information about their current location with the help of
their mobile devices without seeking any help.
The project helps fresh students or campus visitors to have a better perception of Tewodros
campus’s geographical locations.
The system provides accurate and quicker way of finding a location in Tewodros campus
this helps users:
o To reduces wastage of time on locating and searching places, buildings or car parking
slots.
o To be present on time in their exam room or to be punctual on their examination day.
o To find the shortest route plan when searching for a location or a building. Moreover, to
help the user to gain additional information on the locations and buildings of Tewodros
campus after his/her request.
The project solves the limitation of advanced technologies like Google map and GPS system
by providing an indoor navigation system for AtseTewodros campus.
7. Beneficiaries
1. Fresh and senior students: can easily locate their dormitory, class room as well as any
buildings in Tewodros campus without any wastage of time. Can also receive class and
examination schedule, dormitory information as well as lounge information through their
mobile phone and navigate there.
2. Department Head: can easily provide class as well as examination schedules to students
through their mobile phone without requiring him to print and post the schedule in the
announcement board.
3. Campus Employees, Tourists and campus visitors: can easily locate campus buildings,
receive location information, and navigate to some location through their mobile phone.
4. Car drivers: can easily locate parking slots in AtseTewodros campus and navigate their.
7
8. Time Schedule
8
Chapter 2 Requirement Gathering and Analysis
1. Introduction
Detailing System Requirements is the initial step of constructing the whole software system. It is a
description of the project requirements that we have been gather and analyze. Without
requirements, the goal is unclear and the construction may be off track. In this chapter,
requirements of the software system are defined through human natural language and use case. The
document is provided in order to ensure that the software we produce will be consistent with the
need of the system’s user. Stating these requirements explicitly helps insure that any potential
miscommunications are corrected at early stage.
The aim of this document is to gather and analyze and give an in-depth insight of the complete 3D
Indoor Navigation system by defining the current system problem statement in detail.
Nevertheless, it also concentrates on the functional and nonfunctional requirements of the system.
2. Current System
In AtseTewodrows campus currently there are direction boards installed in some places and
building labels (or numbers) written on each building to help users to navigate to their desired
location. The current system involves asking peoples for direction. Whenever a user wants to
navigate somewhere in AtseTewodros campus the user has to look for some direction board and
building number or just ask somebody for direction and navigate there. For example, most of the
times in AtseTewodros campus student’s course and examination schedules are posted on their
department wall. When the student wants to navigate to his/her class or examination room first the
student has to look for the course or examination schedule posted on his/her department, then look
for some direction board or building number or just ask somebody for direction to navigate there.
As explained above currently AtseTewodros campus has installed direction boards to assist users to
navigate in the campus.
9
It is usual that vast numbers of information and labels are shown on the directory boards. However,
humans have the cognitive limitations to process huge amount of information. Students or Visitors
often need to spend long time to filter out irrelevant labels and information, in order to focus on
their point of interests. They might also subject to disruption (problem) due to lost trace in the
direction board. At the same time, the direction board is subject to the limitation of maximum user
at a single point of time. Additionally, the main inefficiency of the direction board is its immobility.
Users need to memorize the place of interests, route to reach the place, and it is so difficult that
users need to memorize multiple places and routes. Visually challenged persons like people with
long sight problem often encounter tougher issues when they newly arrive at the campus. It is
almost impossible for them to use direction boards, as it does not provide the accessibility for those
visually challenged peoples. For instance, the fonts used in the directory are often small and
enriched with different colors and a style in order to make the directory has more attractive
appearance. Because of the inefficiency of direction boards students or campus visitors are forced to
ask somebody for direction which is also a time consuming and inefficient way of getting direction.
3. Requirement Gathering
This section describes the data collection methods that we use to solve the problem. How
information is gathered.
It allows as participating in or watching a person perform activities to learn about the current
situation or system. This is use full when the validity of date collection is in question or when the
complexity of certain aspect of the system prevents a clear explanation by the system.
3.1.2. Interviewing:
Help us to collect information about the current situation from the user face-to-face by asking
questions prepared by the team. The team prepares two types of questions:
10
The team prepares questions that require more than one word answers. The answers come in the form of a
list, a few sentences or something longer such as a speech, paragraph or essay.
Involve attaining information from peoples who are concerned with the usage of the system. The
team prepares questions which are simple, clear, to the point and can be answered as only a "yes" or
"no" response.
Results found while gathering requirements regarding the problem ofthe current navigation system
in AtseTewodros campus.
Eight campus employees say that “due to the huge coverage area of the campus as well as
the increasing number of new buildings the difficulty and time wastage of locating buildings
in the campus will be high than ever”.
Twelve students say that “because our department schedule different classes for different
course we face the difficulty of locating our class rooms”.
Fifteen students say that “because our dormitory buildings have similar architectural design
and color we enter to the wrong dormitory block and room”.
Ten students say that “due to the difficulty of locating their examination room on
examination day some of us failed to take the exam and some of us failed to be punctual”.
Thirteen fresh students say that “since both the senior and fresh student’s cafeteria are
located on the same place having almost similar architectural design we enter to senior
cafeteria”.
Two students say that “we face theft or robbery by the person who we ask to guide them to
some location in the campus”.
Seventeen students say that “due to the high number of populated buildings with some of
them having similar architectural design and color we are facing a huge difficulty of
locating buildings”.
These results used us as a starting point to identify the main functionalities of the new system.
11
4. Proposed System
Proposed system is an automated mobile navigation System. Through this mobile application a user
can navigate anywhere in AtseTewodros campus accurately and in quick time. The reason we pick
mobile application is that almost all users in AtseTewodros campus have a mobile phone.
Therefore, the user will have all the information he needs to navigate somewhere in the
campus on the palm of his hand all the time with him. Although there are advanced technologies
in the area of navigation such as Google map and GPS they do not work indoor meaning they are
developed to help users in outdoor location based services, and their capability not yet been
fully applied to campuses or for indoor services. Location directions within campuses or inside
most organizations are not available using Google map application.
Our proposed system is better from the existing system because of the following advantages.
High accuracy: The system guide users to their destinations within a reasonable distance
and accurate direction.
Quick Time:The system uses the shortest route plan to navigate the user from starting point
to the user’s destination point, so that the system helps the user to reach his desired
destination in quicker time.
Low-cost: The system does not require any simple or expensive infrastructural changes to
obtain accurate positioning data, that is our system uses an already installed wireless access
points in AtseTewodros campus without requiring even a single infrastructural change.
Intuitive (providing correct information) user interface (UI): The system will have an
easy-to-use UI that displays navigation hints correctly based on the user’s current state. The
system will also take into account the obstacles surrounding the user to avoid displaying any
incorrect hints. For instance, it will not tell users to go straight if there is an obstacle
immediately ahead of them.
4.1. Overview
This section of the document provides a general description including high level functionality of the
system and the systems non-functional requirements defined in terms of human natural language
and use cases.
12
4.2. Functional requirement
Search location
The user should be able to search for a location, according to several search options. A user should
be able to select multiple search options in one search. The search options are.
13
o Enter student Full Name and Id Number
o Enter Student’s Dormitory block and room number
Register User
In order to allow the Department Head, Dormitory manager and Lounge Owner to enter student
dormitory information, course and exam schedule, and lounge information, the Administrator
should be able to register the Head, the dormitory manager and the lounge owner with user-name,
Email, Department /Lounge name or Dormitory block, and password.
Furthermore
The system should get the destination data from the user and detect the user current location
using wireless access points,
The system should calculate the shortest path between the currentposition and the
destination taking the user's navigation preferences into account,
The system should provide an optimal route to the user by giving real-time instructions,
The system should update the position of the user when the mobile device enter the process
of handoff between access points,
The system should calculate wrong paths and give real-time instructions to the user to
correct his path.
14
The system should calculate the user’s approximate position using the Wi-Fi access points
installed in Tewodros campus.
The expert that is required from user is only knowledge of mobile phone usage, computer usage and
application interface access. The interface of the proposed system is very flexible for users. The
system uses English language as well as Visual Lingua or UPL (Universal Picture Language) so that
the user is not required to know English language to use the system.
4.3.2. Documentation
The documentation should only contain user manual to provide a small help guide and tool tips
The hardware required to use the system are a mobile device. The mobile device can be a laptop
computer, mobile phone or a tablet with capability of wireless communication. The system must
interact with indoor as well as outdoor access points installed in Tewodros campus for the purpose
of locating the current position of the user.
The proposed system must have 2 second response time and 4 second response time in the worst
case. The system can also support concurrent 400 users simultaneously this is with best response
time. The system must support parallel transactions involving different clients from different
location.
15
4.3.5. Error Handling and Extreme Conditions
If the user enters incorrect input like inserting empty string, inserting a duplicated username in to
the database or login with unregistered username and password the system should display an
appropriate message for each error.
Login error (unauthorized login): the system shall handle an attempt to login with
incorrect username and password and display appropriate message.
Submitting Empty String.
Attempt to insert duplicated username into the database while registering.
Inserting alphabetic value in integer text field.
If electric power goes off before committing transaction the transition should fire back.
The system should display navigation hints correctly based on the user’s current state. The system
should also take into account the obstacles surrounding the user to avoid displaying any incorrect
hints. For instance, it should not tell users to go straight if there is an obstacle immediately ahead of
them.
Reliability: The system should not fail more than once in a month.
Usability: The system that we develop should be easy to learn and operate. It should
need only two days of training to use the system.
Availability: The system should be available for all working hours (24 hours).
Portability: The system should work on both android and windows operating systems.
As the world is capable of change from time to time; there will be future change to the system as a
result of new technology invention. Therefore the system can be upgrade to the new technology by
maintainer or the system developers.
System is a summation of simple modules that focuses to specific task. So the updating or editing is
easy rather than studying the whole parts. It may not necessary to change the complete system in
16
the future, because most of the data are not directly depending on with the phone or mobile device
so the system can be easily modified.
User interface part of the system will be deployed on the user’s mobile phone and database part of
the system will be deployed on central server located in Tewodros campus. While users retrieving
data from the central server or getting positioning data (MAC ADDRESS) from wireless access
points, the system should with stand weather conditions such as high rain fall.
The system must give a maximum trial of 3 chances for user to enter their authentication
information for logging in to system after 3 chances the system must block the user from login to
the system for 5 minutes for first time and this should continue blocking the user for 24 hours.
Anonymous users should only have access information about locations only. User information like
password should be stored in the database in encrypted form.
17
5. System Model
5.1. Scenario
Search Location
User selects search location link. System displays Search Form. The user selects search option then
provides a keyword and submits the form. The system checks the availability of the Location and
display the search result for the location along with navigate to search result link.
18
Change Voice Guidance Setting
The user selects setting link then select voice guidance setting link. The system displays voice
guidance options (Enable and Disable), then the selects disable voice guidance link and system
disables voice guidance.
Navigate to Dormitory
After viewing dormitory information student presses navigate to dormitory link. System
automatically detected the current location of the student and displays 3D navigation route to the
student’s dormitory block.
19
View Course Schedule
Student selects view course schedule menu.System displays enter department name Form. The
students enters department name and submit the form.The system displays department course
schedule information with navigate to class room link.
20
Navigate to Registration Room
After viewing registration information student presses navigate to registration room link. System
automatically detects the current location of the student and display 3D navigation rout to the
registration room.
Administrator log-in
Administrator enters username and password. The system checks weather the entered username and
Password is valid. If it’s valid Administrator logs in to the system. The system displays all available
administration operations that the Administrator can perform.
Register User
Lounge owner request for create account. Administrator logs into the system with username and
password and select manage user account information link. Then the System displays create user
account link, edit user account link, and delete user account link. Admin selects create user account
link. System displays signup form and prompts the Admin to enter account information: (user
name, password, and lounge name). Admin prompt the lounge owner to enter the account
information. The Lounge owner fills all the information (user name, password, e-mail and lounge
name) and the Administrator submits the information to the system. The system validates the
information and creates Lounge owner Account and display message user created.
21
information form. Administrator enters Location information and submits the form. The system
validates and maintains the entered information.
22
link.Dormitory Manager select delete link. System prompts the Dormitory Manager if he/she is sure
to permanently remove the student dormitory information. Dormitory Manager confirms. The
system removes all the information that the student has and displays student dormitory information
Deleted Notification
23
Lounge Owner Log-In
Lounge Owner enters username and password. The system checks weather the entered username
and Password is valid. If it’s valid Lounge owner logs in to the system. The system displays all
available operations that the lounge owner can perform.
24
5.2. Use case Model
25
Figure 2 Use case
Note thatOther Users stands for campus visitors and campus employees
26
5.2.2. Description of Use Case Model
Use case name:Search Location
Actor: Student, campus visitors, car drivers, campus employees
Summary: the user search for location in Tewodros campus.
Precondition: system is idle displaying navigation operations.
Main sequence:
1 The user selects search location link.
2 The system displays search form.
3 The user selectssearch options like: Search by Department Head name, Search by building
number and name, Search by office number, Search by class room, search by
Department,Search by Dormitory block, search by parking slots, search by car garage or
select a combination of this options and enter a key word then submits the form.
4 The system checks the availability of the location.
5 If the location is available the system displays the search result for the location( building
name and number, distance from the current location in meter, Facility name, Department
name ,switch result view link and show navigation link).
Alternative flow of event
Step 5: If the location is not available the system displays amessage location is not available in
AtseTewodros campus.
Post condition: the user gets search result about the location.
27
Alternative flow of event
Step 3: If connection is not available, the system displays Enter current location Form and prompt
the user to enter his/her current location.
Post condition: system displayed the route of the search result location.
28
Use case name:Change Navigation speed Setting
Actor: Student, campus visitors, car drivers, campus employees
Summary: the user changes system navigation speed setting.
Precondition: system navigation speed is normal.
Main sequence:
1 The user select setting link.
2 The system displays map view setting, navigation speed setting, volume setting and voice
guidance setting.
3 The user select navigation speed setting.
4 System displays speed control slider: Slow, Normal and Fast.
5 The user adjusts the slider position.
6 System changes navigation speed setting.
Post condition: system changed the navigation speed setting.
29
Precondition: system voice guidance is enabled.
Main sequence:
1 The user select setting link.
2 The system displays map view setting, navigation speed setting, volume setting and voice
guidance setting.
3 The user selectsvoice guidance setting.
4 System displays voice guidance options: Enable voice guidance and Disable voice guidance.
5 The user selects disable voice guidance.
6 System disablesvoice guidance.
Post condition: system changed the voice guidance setting.
30
Precondition: system sets starting and destination way points.
Dependency: Includes Set Way Point use case
Main sequence:
1 Includes Set Way Point Use case.
2 The user selects navigate link.
3 System display Tewodros campus map and navigate the user from starting way point to
destination way point.
Post condition: user reached his/her destination.
31
1 Student select view dormitory information menu.
2 System displays enter ID number form.
3 Student enters ID number and submits the form.
4 System validates if the entered ID number exists and the value is not empty string.
5 If the entered value is valid, system displays the dormitory information: dormitory block,
dormitorynumber, dormitory status, and navigate to dormitory link.
Alternative Sequence:
Step 6: if the entered ID number does not exist system displays error message: ID number does not
exist
If the entered value is empty string system displays error message: empty text field
Post condition: system displayed dormitory information
Post condition: system displayed the student’s dormitory block and dormitory status.
32
1 Student select view course schedule link.
2 System displays enter Department name Form.
3 Student enter department name and submit the form.
4 System validates if the department name exists and if the entered value is not an empty
string
5 If the entered value is valid, System displays Department course schedule information:
Course name, Instructor name, credit hours, Class room, and navigate to class room link.
Alternative sequence:
Step 6: if the entered department name does not exist system displays error message: Department
name does not exist
If the entered value is empty string system displays error message: empty text field
Post condition: system displayed Department course schedule information
33
1 Student select view exam schedule menu.
2 System displays enter Department name Form.
3 Student enter department name and submit the form.
4 System validates if the department name exists and if the entered value is not an empty
string
5 If the entered value is valid, System displays Department exam schedule information:
Course name, Instructor name, credit hours, Class room, and navigate to exam room link.
Alternative sequence:
Step 6: if the entered department name does not exist system displays error message: Department
name does not exist
If the entered value is empty string system displays error message: empty text field
Post condition: system displayed Department course schedule information
34
Precondition: system maintains student’s Department clearance day information.
Main sequence:
1 Student presses view clearance day informationmenu.
2 System displays enter Department name Form.
3 Student enters Department name.
4 System validates if the entered Department name exists and if the entered value is not empty
string.
5 If the entered value is valid, System displays clearance day information: clearance building
number, clearance room name and number, clearance room sequence, show navigation link.
Alternative sequence:
Step 6: if the entered department name does not exist system displays error message: Department
name does not exist
If the entered value is empty string system displays error message: empty text field
Post condition: system displayed student’s clearance information
35
Summary: student views his/ her registration day information.
Precondition: system maintains student’s registration day information.
Main sequence:
1 Student presses view registration information menu.
2 System displays enter Department name Form.
3 Student enters department name.
4 System validates if the entered department name exists and if the entered value is not empty
string.
5 If the entered value is valid, System displays registration day information: registrar building
number, registration room name and number, and show navigation link.
Alternative sequence:
Step 6: if the entered department name does not exist system displays error message: Department
name does not exist
If the entered value is empty string system displays error message: empty text field
Post condition: system displayed registration day information
36
Use case name:View Lounge information
Actor: Student
Summary: student views lounge information like dish/food price, and soft/hot drink price.
Precondition: system maintains lounge information.
Main sequence:
1 Student presses view lounge information menu.
2 System displays enter lounge name Form.
3 Student enters lounge name.
4 System validates if the entered lounge name exists and if the entered value is not empty
string.
5 If the entered value is valid, system displays lounge information (lounge name, dish/food
price, hot and soft drink price) and show navigation link.
Alternative sequence:
Step 6: if the entered lounge name does not exist system displays error message: lounge
name does not exist
If the entered value is empty string system displays error message: empty text field
Post condition: system displayed lounge information
37
Post condition: system displayed the route to lounge.
38
7 Admin prompt the Department Head/Lounge Owner to enter account information: user
name, password and Email.
8 The Department Head/Lounge Owner fills all the information (user name, password,and e-
mail) and submits it to the system. .
9 The system validates if the entered username is not duplicated (or already exists), validate if
the entered password is at least four characters and validate if the entered values are not
empty string.
10 If the entered values are valid the system creates Department Head/Lounge Owner Account
and display the message user registered successfully.
Alternative sequences
Step 10: If the entered values are empty string the system display error message empty text field
: If the entered password is less than four characters, the system displays enter at least four
characters message.
: If the entered username already exists the system displays message that says lounge owner
with this username already exists.
Post condition:the Department Head/Lounge Owner has registered
39
7 System checks the availability of the user
8 If user exists, System displays User List Table and delete link.
9 Admin selects the user information that is about to be removed and selects delete link. .
10 System prompts the Admin if he/she is sure to permanently delete the user information.
11 If Admin confirms that he/she is sure to remove user information the system removes all the
information that the user has and displays user Deleted Notification.
Alternative sequence
Step 8: if the user does not exist the system displays no such user exists message.
Step 11: If the Admin cancels the delete transaction the user information remains maintain on the
system.
Post condition: The user information has been removed.
40
Use case name:Edit Location Information
Actor:Administrator
Summary: Administrator editsLocation information.
Dependency: Include Administrator Log-In
Precondition: system maintains Location information.
Main sequence
1 Include Administrator Log-In use case.
2 Administrator selects Manage Location information menu.
3 System displays Enter Location Information and Edit Location Information submenus.
4 Administrator selects Edit Location Information submenu.
5 System displays search location form and prompt the Administrator to enter Location
Building number.
6 Administrator type in Building Number and submit the form.
7 If location exists, System displays previous Location information (Building number,
Building name, Location Description) and Edit Location InformationForm.
8 Administrator type in the new Location information (Building number, Building name,
Location Description) to the edit location information form, and submit the form.
9 The system validates if the entered values are not empty string.
10 If the entered values are valid, system inserts/maintains the location information and
display location information has successfully edited message.
Alternative sequences
Step 7: If the location does not exist system displays location does not exist message.
Step 10: If the system determines that the entered values are invalid the system displays error
message empty text field.
Post condition: System has edited location information.
41
Main sequence
1 Department Head enters username and password.
2 System checks weather the entered username and password matches with the username and
password maintained in the system
3 If username and password matches Department Head logs in to the system.
4 System displays all available operations like manage account information, manage course
schedule, manage Exam schedule, manage registration information, and manage clearance
information.
Alternative sequences
Step 3: If the system determines that the entered username or password are invalid the system
displays error message and prompt the Department Head to enter valid username and password.
Post condition: The Department Head has successfully logged in.
42
Step 8: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System maintain/holdcourse schedule information.
43
Actor: Department Head
Summary: Department Head enters registration information.
Dependency: Include Department Head Log-In
Precondition: system is idle displaying all available Department Head’s operations.
Main sequence
1 Include Department Head Log-In use case.
2 Department Head selects Manage Registration information menu.
3 System displays enter registration information and edit registration information submenus
4 Department Head selects enter registration information submenu.
5 System displays add registration information form.
6 Department Head types registration information (faculty name, Department name,
registration building and registration room) to the add registration information form, and
submit the form.
7 The system validates if the entered values are not empty string.
8 If the entered values are valid, system inserts/maintains the registration information and
display registration information has successfully added message.
Alternative sequences
Step 8: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System maintain/hold registration information.
44
5 System display previous registration information (faculty name, Department name,
registration building and registration room) and edit registration information form.
6 Department Head types the new registration information (faculty name, Department name,
registration building and registration room) to the edit registration form, and submit the
form.
7 The system validates if the entered values are not empty string.
8 If the entered values are valid, system inserts/maintains the registration information and
display registration information has successfully edited message.
Alternative sequences
Step 8: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System has edited registration information.
45
Step 8: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System maintain/hold exam schedule information.
46
Actor: Lounge Owner
Summary: System validates Dormitory manager’s Identity
Precondition: system is idle displaying Login Form
Main sequence
1 Dormitory manager enters username and password.
2 System checks weather the entered username and password matches with the username and
password maintained in the system
3 If username and password matches Dormitory manager logs in to the system.
4 System displays all available operations like manage account information, and manage
dormitory information.
Alternative sequences
Step 3: If the system determines that the entered username or password are invalid the system
displays error message and prompt the Dormitory manager to enter valid username and password.
Post condition: The Dormitory manager has successfully logged in.
47
8 If the entered values are valid, system maintains the student dormitory information and
display dormitory information has successfully added message.
Alternative sequences
Step 8: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System maintain/hold student information.
48
Step 3: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System inserted the edited student dormitory information.
49
Use case name:Lounge Owner Log-In
Actor:Lounge Owner
Summary: System validates Lounge owner Identity
Precondition: system is idle displaying Login Form
Main sequence
5 Lounge Owner enters username and password.
6 System checks weather the entered username and password matches with the username and
password maintained in the system
7 If username and password matches Lounge Owner logs in to the system.
8 System displays all available operations like manage account information,and manage
lounge information.
Alternative sequences
Step 3: If the system determines that the entered username or password are invalid the system
displays error message and prompt the lounge owner to enter valid username and password.
Post condition: The lounge owner has successfully logged in.
50
8 If the entered values are valid, system inserts/maintains the lounge information and display
lounge information has successfully added message.
Alternative sequences
Step 8: If the system determines that the entered values are invalid the system displays error
message.
Post condition: System maintain/hold lounge information.
51
5.3. Activity Diagram
52
Figure 5 Activity Diagram switch search result view
53
Figure 8 Activity Diagram change volume setting
54
Figure 10 Activity Diagram set way point
55
Figure 12 Activity Diagram detect current location
56
Figure 14 Activity Diagram navigate to dormitory
57
Figure 16 Activity Diagram navigate to class room
58
Figure 18 Activity Diagram navigate to exam room
59
Figure 20 Activity Diagram navigate to clearance room
60
Figure 22 Activity Diagram navigate to registration room
61
Figure 24 Activity Diagram navigate to lounge
62
Figure 26 Activity Diagram register user
63
Figure 28 Activity Diagram edit Location information
64
Figure 29 Activity Diagram delete user account
65
Figure 31 Activity Diagram edit course schedule
66
Figure 33 Activity Diagram edit registration information
67
Figure 35 Activity Diagram edit exam schedule
68
Figure 37 Activity Diagram edit dormitory information
69
Figure 38 Activity Diagram delete dormitory information
70
Figure 39 Activity Diagram Enter Lounge Information
71
5.4. Object Model
We draw a class diagram depicting the inheritance relationships and associations that exist between
the entity objects that we identified earlier. The class diagram focuses mainly on the relationship
among application domain concepts.
72
Location Building name Refers to information of all available
Information Building number buildings, parking slots and roads located
Location Description inside Tewodros campus, which is
managed by the Administrator.
Start Way Point Building name Refers to the starting location of the user
Building number while navigating
Building Floor number
Building Room number
Access Point BSSID
Destination way Building name Refers to the ending location of the user
Point Building number while navigating
Floor number
Room number
Course schedule Department name Is a plan of courses to be given, the time
Year of batch when they will be given, and the place
Semester where they will be given to students. This
Course name plan will be managed by the department
Credit hour Head.
Time
Date
Class room
Building number
Exam schedule Department name Is a plan of exams to be given, the time
Year of batch when they will be given, and the place
Semester where they will be given to students. This
Course name plan will be managed by the department
Examiner name Head.
Examination room
Examination building Number
Registration Department name Is the information used by a student while
information Registration building registering at the start of the semester to
Registration office locate registrar building and office
73
Clearance Department name Is the information used by students on
Information Clearance building clearance day to locate clearance
Clearance office buildings and offices
Lounge Lounge name Refers to dish/food and drink price
Information Dish/Food information that a lounge had. This
Drink information will be managed by lounge
Price owner
Lounge Building Number
Table 1 Data Dictionary
5.4.2. Class Modeling
74
5.4.3. Dynamic Modeling
We have identified a number of entity, boundary and control objects, along the way we have also
identified some of their attributes and associations, we represent this objects in a sequence
diagrams, depicting the interaction that occur during the use case to identify additional associations
and attributes.
75
Figure 43 Sequence Diagram Navigate to search Result
76
Figure 45Sequence Diagram Set Way Point
77
Figure 46 Change Map View Setting
78
Figure 48Sequence Diagram change navigation Speed Setting
79
Figure 50 Sequence Diagram Detect Current Location
80
Figure 51Sequence Diagram view Dormitory Information
81
Figure 52 Sequence Diagram course schedule Information
82
Figure 53Sequence Diagram view Exam Schedule Information
83
Figure 54Sequence Diagram view Registration Information
84
Figure 55Sequence Diagram view Lounge Information
85
Figure 56Sequence Diagram Navigate to Destination Way point
86
Figure 58Sequence Diagram Navigate To Dormitory
87
Figure 60Sequence Diagram Navigate To Lounge
88
Figure 62Sequence Diagram view Clearance Information
89
Figure 64Sequence Diagram Register User
90
Figure 65Sequence Diagram Delete User Account
91
Figure 66Sequence Diagram enter location Information
92
Figure 67 Sequence Diagramedit Location Information
93
Figure 68Sequence Diagram enter Dormitory Information
94
Figure 69Sequence Diagram edit Dormitory Information
95
Figure 70Sequence Diagram delete Dormitory Information
96
Figure 71Sequence Diagram enter Course Schedule
97
Figure 73Sequence Diagram edit Course Schedule
98
Figure 74Sequence Diagram edit Exam Schedule
99
Figure 75Sequence Diagram enter registration information
100
Figure 77Sequence Diagram enter lounge information
101
5.5. User Interface
102
Figure 82 User Interface Setting Button
103
Figure 85User Interface Setting Menu
104
Figure 88User Interface voice Guidance setting
105
Figure 90User Interface Administrator Operation Menus
106
Figure 91User Interface department Head operation menus
107
Figure 92User Interfacedormitory manager operation menus
108
Figure 93User Interface Lounge owner operation menus
109
Figure 94User Interface student navigation menus
110
Chapter 3System Design
1. Introduction
The overall system design objective is to provide an efficient, modular design that will reduce the
system’s complexity, facilitate change, and result in an easy implementation. This will be
accomplished by designing a strongly cohesion system with minimal coupling.
The purpose of this Design Document is to present the system design at a level that can be directly
traced to the specific system objective along with providing more detailed data, functional, and
behavioral requirements. This Design Document will verify that the current design meets all of the
explicit requirements contained in the system model as well as the implicit requirements desired by
the user.
In this section we provide overview of the current and the proposed system software architecture
and we specify design goals to improve the quality of the system by reducing response time and
operating cost, and increasing usability of the system. We also describe system decomposition into
subsystems with their respective services by distinguishing two main parts of the system. We
specify the Hardware/software mapping by depicting deployment diagram, the persistent data
management, as well as the access privileges of each actors using Access control matrix.
In ATCNS (University of Gondar Navigation System) the main client is the Administrator, who
manages and keeps track of users and system persistent data consistently. Since there will be large
number of persistent objects to be managed by the Administrator the operating cost such as
hardware resource, network resource and Administration cost will be high. From this observation
and from ATCNS problem statements we identify the following design goals.
1.1.1. Documentation
The organization and documentation of the ATCNS framework should then make it easier for new
developers to contribute features to the code. This includes source code documentation that
supports low-level changes and improvements, a good architecture-level documentation that
supports the addition of new features, as well as a good user documentation for helping the user to
111
operate small tasks without the need Administrator help this minimizes operating expense. This
design goal originated from the developers and management of ATCNS (as opposed to the client).
Since there is manual direction indication system in Tewodros campus, there is no system software
architecture being used currently.
3.1. Overview
The proposed system use a three tire software architecture with Interface layer providing front end
user interface, application logic layer managing system operations, and storage layer storing
persistent objects like location, student, schedule, registration, clearance, lounge information. Users
can access the system remotely by login to the system and sending actions to the server.
The system is divided into subsystems having different functionality. The Administrator,
Department Head and lounge owner manage and organize persistent objects through
112
ATCNSManagementClient subsystem, which provide a front end interface for users to initiate all
data management related use cases (for example enter location information, enter student
information, enter exam schedule, register user, and enter lounge information). ATCNSServer
subsystem provides access control, concurrency control, and process and responds to user’s request.
ATCNSServer uses the UserManagement subsystem to authenticate and authorize the user and to
initiate user account related use cases (for example, register user, manage user account). It uses
NavigationToLocation subsystem to provide a navigation path between two locations, and it uses
other management related subsystems (for example LocationManagement, StudentManagement,
SheduleManagement, RegistrationManagement, ClearanceManagement) to enter, edit, delete and
retrieve persistent objects from ATCNSStorage subsystem, which is used to store persistent objects.
Students, campus visitors, and campus employees access Tewodros campus location information
through ATCNSNavigationClient subsystem, which provides a front end interface for users to
initiate all location navigation related use cases (for example set waypoints, search location,
navigate to destination, detect current location).
We identify subsystems from the functional requirements of the system and from the analysis
model. The purpose of this activity is to divide the system into self-contained components that can
be managed by individuals.
We first distinguish two main parts of the ATCNS subsystem: the system data management part of
the system, which is responsible for managing and organizing location, student dormitory, schedule,
user account and lounge information, and the location navigation part, in which the user set starting
and destination waypoint and navigate from the starting point to the destination.
For the system data management part we select a three tire architecture style in which a
ATCNSManagementClient subsystem provide a front end interface for users to initiate all data
management related use cases (for example enter location information, enter dormitory information,
enter exam schedule, register user, and enter lounge information). The ATCNSServer is responsible
for Access control and concurrency control, and delegates to nested subsystems for the application
logic. Different subsystems are dedicated for the management of location information, student
information, schedule information, user account information, and lounge information. The bottom
tire is taken by ATCNSStorage, responsible for storing any persistent objects.
113
Figure 95 component diagram system data management part
For the location navigation part we also use a three tire architecture style in which
ATCNSNavigationClient subsystem provides a front end interface for users to initiate all location
navigation related use cases (for example set waypoints, search location, navigate to destination,
detect current location). The ATCNSserver provide search results and it uses the
NavigateToLocation subsystem to provide a navigation path from the starting waypoint to the
destination waypoint. The ATCNSServer subsystem uses LocationManagment subsystem to
retrieve location information; it uses DormitoryManagement subsystem to retrieve student
dormitory information, it uses ScheduleManagement subsystem to retrieve course and exam
schedule information, and it uses LoungeManagement subsystem to retrieve lounge food/dish and
drink price information. The NavigateToLocation subsystem provides a navigation path from the
starting waypoint to the destination waypoint as well as information about Tewodros campus
locations. NavigateToLocation subsystem uses LocationManagment subsystem to retrieve location
information; it uses DormitoryManagement subsystem to retrieve student dormitory block and
room location, it uses ScheduleManagement subsystem to retrieve class room location, it uses
114
RegistrationManagem subsystem to retrieve registration building and room, it uses
ClearanceManagement subsystem to retrieve clearance building’s and office’s locations, and it uses
LoungeManagement subsystem to retrieve lounge location. All the application logic subsystems
usesATCNSStorage subsystem for storing and retrieving persistent objects.
ATCNS is inherently a distributed system as users use their mobile device to navigate in different
places. We distinguish between three types of nodes: the UserMachine (mobile device) to provide a
user interface, the ServerMachine to run the application logic and more generally to give response
for the requests made by ATCNSManagementClient and ATCNSNavigationClient subsystems
running on the UserMachine, and the StorageMachine for persistent data storage. All other
subsystems except ATCNSStorage can be collected in to a single ServerMachine holding the
ATCNSServer subsystem which includes the nested subsystems, UserManagement,
115
DormitoryManagement, LocationManagement, ScheduleManagement, RegistrationManagement,
LoungeManagement, ClearanceManagement, Notification, and NavigateToLocation subsystems.
ATCNSdeals with two sets of objects that must be stored. The first set includes the objects that are
created and accessed by the system data management part subsystems (example location, student,
schedule, registration information, clearance information, user account, lounge information) and the
second part includes objects that are created by the navigation part subsystems (example start way
point, destination way point). The first set of objects is well defined and will be probably not
change much during the lifetime of ATCNS. The second set of objects are specific to each
navigations made by the user and are defined during while the user navigates from one location to
another. We decide to manage the data management part subsystems of persistent objects with the
ATCNSStorage subsystem.
The storage subsystem will provide an abstract interface that enable relational database storage.
ATCNS will use a database-independent API (C# database connectivity through PHP) to store
persistent objects in a relational database. The reason we pick relational database is it can be easily
scaled to add thousands of persistent objects.
The normalization database schema below shows a description of encapsulation of database.
116
Figure 98 Normalized data Base Schema
117
3.5. Access control and security
As ATCNS is a multi-user system different actors are allowed to see different sets of objects and
invoke different types of operations on them. To precisely document access rights, we draw an
access control matrix depicting the allowed operations on the entity objects for each actor. In
summary, Administrator can create and remove/deactivate User, and can create and edit location.
Department Head can create, edit and remove dormitory information, can create and edit course and
exam schedule, and can create and edit registration and clearance information. Lounge owner can
create and edit lounge information. Student can search, navigate and view Dormitory information,
class and schedule information, registration and clearance information, and lounge information.
Student, campus visitor, campus employee can search, view and navigate to location information,
can create starting way point and can create and navigate to destination way point.
Students, campus visitors and campus employees are actors that are not authenticated to the system.
Administrator, Department Head and lounge owner must first authenticate before they can modify
any object in the system. We select a user name/ password mechanism for initiating authenticated
use cases. We then use access control lists on each object (example dormitory information, location
information, and course and exam schedule) to check the access privilege of the user. A Session
object per authenticated user tracks currently logged in users. The authentication password of each
actor will be encrypted for security purpose so that event the system Administrator can’t see other
user’s password in other word the password will be visible only for the account holder himself.
118
Exam Search
<<create>>
Schedule view
Edit
navigate
Registration Search
<<create>>
Information view
edit
navigate
Clearance Search
<<create>>
Information View
edit
navigate
Lounge Search
<<create>>
Information view
edit
navigate
Start
<<create>> <<create>> <<create>>
Way Point
Destination <<create>> <<create>> <<create>>
Way Point navigate navigate navigate
User <<create>>
remove
In this section we identify services provided by each subsystem. We first notice that in the system
data management part of the subsystem decomposition, all requests handled by ATCNSServer must
be authorized according to the access control policy defined in section [....]. This leads us to define
an Authentication service to check a user’s login. an Authorization service to check if the request is
allowed for the role of the requesting user. We assign both services to UserManagement subsystem.
In Dormitory information management related use cases (for example Enter Dormitory Information
and Edit Dormitory Information) the Department Head creates and edits student dormitory
information. DormitoryManagement subsystem therefore needs to provide services for creating and
getting information about dormitory.
119
In location management related use cases (for example Enter Location information and Edit
Location information) the Administrator creates and edits location information.
LocationManagement subsystem therefore needs to provide services for creating, editing and
getting location information.
In schedule management related use cases (for example Enter course schedule, Enter exam
schedule, and edit course schedule) the Department Head creates and edits course and examination
schedule information. ScheduleManagement subsystem therefore needs to provide services for
creating, editing and getting schedule information.
In Registration management related use cases (for example Enter registration and Edit registration
information) the Department Head creates and edits registration information.
RegistrationManagement subsystem therefore needs to provide services for creating, editing and
getting registration information.
In clearance management related use cases (for example Enter clearance and Edit clearance
information) the Department Head creates and edits clearance information. ClearanceManagement
subsystem therefore needs to provide services for creating, editing and getting clearance
information.
In Lounge management related use cases (for example Enter Lounge informtion and Edit Lounge
information) the Lounge owner creates and edits lounge information. LoungeManagement
subsystem therefore needs to provide services for creating, editing and getting Lounge information.
In all use cases the system display success or error notifications to the user. Notification subsystem
therefore needs to provide services for creating notifications.
In manage user related use cases (for example register user and delete user) the Administrator
creates and removes users. UserManagement subsystem therefore needs to provide services for
creating and removing user information.
In the navigation part subsystem decomposition, ATCNSServer subsystem provides response for
ATCNSNavigationClient and ATCNSManagementClient subsystems request using all the
subsystems in the application logic. For example, in Search Location use case a user searches
location. Therefore ATCNSServer accept user request and provide search result using
LocationManagement subsystem to retrieve location information from ATCNSStorage. The
NavigationToLocation subsystem uses all other subsystems to retrieve location information from
ATCNSStoragesubsystem to create a starting and destination way point as well as navigation path
from the starting to destination way point. For example, in the Navigate to Dormitory use case the
120
student navigates from his/her current location to his/her dormitory room. DormitoryManagement
subsystem provides service for retrieving dormitory block and room location information for
NavigateToLocation subsystem. So that, NavigationToLocation subsystem create destination way
point by using dormitory information and create starting way point by using the student current
location. Therefore the NavigateToLocation subsystem provides a path from student current
location to his/her dormitory room.
ATCNSStorage subsystem provides services for storing persistent objects.
ATCNSManagementClient subsystem provides a front end user interface for initiating all data
management related use cases (for example enter location information, enter dormitory information,
enter exam schedule, register user, and enter lounge information). And similarly
ATCNSNavigationClient provides a front end user interface for users to initiate navigation related
use cases (for example set waypoints, search location, navigate to destination, detect current
location).
121
4. Detailed Class Diagram
Class diagram with visibility and signature specified for each attributes and operations. In this class
diagram we define which attributes and operations are private to that class, which attributes and
operations can be accessed by the class decedents (protected), and which attributes and operations
are publicly accessible by the class user (public). We also define the return type of each operations
as well as the number and type of parameters of each operations.
122
Below we describe the behavior of each operations provided by each class in terms of constraints.
The variable L in the constraint (isLocationAvailable(L) = true) refers to the Location parameter L
passed to Search(L), setWaypoint(L), and Navigate(L) operations.As (isLocationAvailable (L) =
true) is a pre-condition, the constraint must be true before the execution of the Search (L),
setWaypoint(L), and Navigate(L) operations. Hence, the constraint reads in English as: “Search (L),
setWaypoint(L), and Navigate(L) assume that Location L exists”.
The variable U in the constraint (isUserRegistered(U) and !isUserRegistered (U)) refers to the
Usernameparameter U passed to CreateUser() andDeleteUser() operations. As (isUserRegistered
(U)) is a pre-condition, the constraint must be true before the execution of the DeleteUser ()
operation. Hence, the constraint reads in English as: “DeleteUser() assumes that userUis
registered”; and as (!isUserRegistered (U)) is a pre-condition, the constraint must be true before the
execution of the CreateUser () operation. Hence, the constraint reads in English as: “CreateUser ()
assumes that user U is not registered”.
The variable L in the constraint (isLocationAvailable (L) = true) refers to the Location parameter L
passed to InsertLocInfo (L) and EditLocInfo (L) operations. As (isLocationAvailable (L) = true) is
123
a pre-condition, the constraint must be true before the execution of the InsertLocInfo (L) and
EditLocInfo (L) operations. Hence, the constraint reads in English as: “InsertLocInfo (L) and
EditLocInfo (L) assume that Location L exists before inserting and editing location information”.
The variable S in the constraint (isStudentExist (S) = true) refers to the student id number parameter
S passed to ViewDormInfo (ID) operation. As (isStudentExist (S) = true) is a pre-condition, the
constraint must be true before the execution of the ViewDormInfo (ID) operation. Hence, the
constraint reads in English as: “ViewDormInfo (ID) assumes that student id number S exists before
searching and displaying student dormitory information”.
The variable D in the constraint (isDepartmentExist (D) = true) refers to the Department name
parameter D passed to ViewClassSch (D), ViewExamSch (D), ViewRegSch (D), and
ViewClearanceInfo (D) operations. As (isDepartmentExist (D) = true) is a pre-condition, the
constraint must be true before the execution of the operations. Hence, the constraint reads in
English as: “the operations assume that department name D exists before searching and displaying
student course schedule, exam schedule, registration information, and clearance information”.
124
The variablesBn and C in the constraint (isLocationAvailable (Bn, C) = true) refers to the Building
number parameter Bn andthe class room number parameter C passed to InsertSchedule () and
EditSchedule () operations. Hence, the constraint reads in English as: to insert course or exam
schedule the class room C must exist”.
The variables Bn and Rin the constraint (isLocationAvailable (Bn, R) = true) refers to the Building
number parameter Bnandthe registration room number parameter R passed to
InsertRegistrationInformation () and EditRegistrationInformation () operations. Hence, the
constraint reads in English as: to insert or edit registration information the registration room number
R must exist”.
The variablesBn and Drm in the constraint (isDormitoryAvailable (Bn, Drm) = true) refers to the
Building number parameter Bnand dormitory room number parameter Drm passed to
InsertDormitoryInformation () and EditDormitoryInformation () operations.
125
5. Packages
In this section we describe the decomposition of subsystems into packages.We first group the
subsystems into three packages. The first group is interface package; it includes the
ATCNSManagementClient and ATCNSNavigationClient subsystems. This package is responsible
for providing front end user interface for users to initiate use cases. The second group is
Application Logic package; this includes four sub packages which are Server package, Navigation
Package, Data Management package, and Notification package. Server package holds
ATCNSServer subsystem, which is responsible for accepting requests from Interface package,
process the request and respond back. Server package uses the Data Management package to
retrieve data from Storage package. For example, in the Admin-login use case the admin logs into
the system with username and password. The Server package accepts a login request from Interface
package and uses the Data Management Package to retrieve username and password from Storage
package and to authenticate and authorize the entered username and password. The Server package
uses the Navigation package to create a navigation path between the user’s current location and
destination point. The Navigation package holds NavigationToLocation subsystem. It uses the Data
Management package to retrieve location information from the Storage package to create a starting
and destination way point as well as navigation path from the starting to destination way point. For
example, in the Navigate to Dormitory use case the student navigates from his/her current location
to his/her dormitory room. Data Management package provides service for retrieving dormitory
block and room location information for Navigation Package. So that, Navigation package create
destination way point by using dormitory information and create starting way point by using the
student current location. Therefore the Navigation package provides a path from student current
location to his/her dormitory room. The Data Management package holds LocationManagement,
ScheduleManagement, DormitoryManagement, ClearanceManagement, RegistrationManagement,
and UserManagement subsystems. This package is responsible for retrieving data from Storage
Package. It uses the Notification package which holds the Notification subsystem to create a
warning and success notifications. And the third package is Storage which holds the
ATCNSStorage subsystem. It is responsible for storing persistent objects.
126
Figure 101 Package Diagram
127
Chapter 4 Implementation
1.1. Mapping Models to code
1.1.1. Mapping associations
The Student can view its corresponding Dormitory Information. In this case the student object has
one-to-one association with the DormitoryInfo class. Moreover the DormitoryInfo class can display
and use student information. In this case, a DormitoryInfo object needs to access its corresponding
Student object. So we decided this association as a bidirectional association.
One-to-many associations
The Navigation class can use several Locations information while navigating from one location to
another location. In this case the Navigation object has one-to-many association with the Location
class. Moreover we decided this association as a unidirectional association, and so add the
getLocationInfo() method to the Navigation class to get location information
128
public class Navigation { public class Location {
private Location Loc; private Location Loc;
public Navigation() { public Location() {
Loc = new Location(); }
} }
Public Location getLocationInfo(){
returnLoc;
}
The Admin class can manage several Locations information. In this case the Admin object has one-
to-many association with the Location class. Moreover the Location class can display the name of
the Administrator. In this case, a Location object needs to access its corresponding Admin object.
So we decided this association as a bidirectional association.
129
public class Admin { public class Location {
Locations.remove(L); }
L.setAdmin(null); }
} return Mgr;
}
}
A user can perform several navigations. A user can set his starting and destination point and
navigate to his/her desired location by invoking getStartLocation(), getDestinationLocation() and
Navigate() methods. Moreover, we decided this association as a unidirectional association
130
public class User { public class Navigation {
private Navigation Nav; public Navigation() {
public User() { }
Nav = new Navigation(); public Navigate() {
} }
Public void setStartLocation(Location L){ }
}
Public void setDestinationLocation(Location L){
}
public void Navigate() {
}
}
The Registration Information can be viewed by several students. In this case the RegistrationInfo
object has one-to-many association with the student class. Moreover the RegistrationInfo class can
display and use student’s department information. In this case, a RegistrationInfo object needs to
access its corresponding Student object department information. So we decided this association as
a bidirectional association.
131
public class Student { public class RegistrationInfo() {
} }
} }
} }
The Department Schedule can be viewed by several students. In this case the Schedule object has
one-to-many association with the student class. Moreover the Schedule class can display and use
student’s department information. In this case, a Schedule object needs to access its corresponding
Student object department information. So we decided this association as a bidirectional
association.
} }
} }
} }
132
The Lounge Information can be viewed by several students. In this case the LoungeInfo object has
one-to-many association with the student class. Moreover we decided this association as a
unidirectional association.
} this.LInfo = L;
Public LoungeInfogetLoungeInfo(Lounge L) { }
} }
} }
The Dormitory Manager can manage several Dormitory Information. In this case the DormitoryMgr
object has one-to-many association with the DormitoryInfo class. Moreover the DormitoryInfo
class can display the name of the Dormitory Manager. In this case, a DormitoryInfo object needs to
access its corresponding DormitoryMgr object. So we decided this association as a bidirectional
association.
The Department Head can manage several schedule information. In this case the DeptHead object
has one-to-many association with the Schedule class. Moreover the Schedule class can display the
name of the department head. In this case, a Schedule object needs to access its corresponding
DeptHead object. So we decided this association as a bidirectional association.
133
public class DeptHead { public class Schedule {
private Set scheduleInfos; privateDeptHeadMgr;
publicDeptHead() { public void setMgr (DeptHeadnewMgr) {
scheduleInfos = new HashSet(); if(Mgr != newMgr) {
} DeptHead old = Mgr;
public void addSchInfo(Schedule S) { Mgr = newMgr;
scheduleInfos.add(S); if(newMgr != null)
S.setMgr(this); newMgr.addSchInfo(this);
} if(old != null)
public void removeSchInfo(Schedule S) old.removeSchInfo(this);
{
}
scheduleInfos.remove(S);
}
S.setMgr(null);
}
}
}
The Lounge Owner can manage several lounges information. In this case the LoungeOwner object
has one-to-many association with the LoungeInfo class. Moreover the LoungeInfo class can display
the name of the Lounge Owner. In this case, a LoungeInfo object needs to access its corresponding
LoungeOwner object. So we decided this association as a bidirectional association.
134
public class LoungeOwner { public class LoungeInfo {
private Set loungeInfos; privateLoungeOwnerMgr;
publicLoungeOwner() { public void setMgr (LoungeOwnernewMgr) {
loungeInfos = new HashSet(); if(Mgr != newMgr) {
}
LoungeOwner old = Mgr;
public void addLoungeInfo(LoungeInfo L)
{
Mgr = newMgr;
S.setMgr(this); newMgr.addLoungeInfo(this);
} if(old != null)
UserName Password
135
Stud_ID Stud_Name Department
Department RegOffice
DeptHead_ID Department
136
DeptHead_ID Department
DormMgr_ID DormitoryBlock
137
import UnityEngine.UI;
138
var PathFromMGtoFBE : GameObject;
var PathFromMGtoCBE : GameObject;
var PathFromMGtoPGB : GameObject;
var PathFromMGtoFinance : GameObject;
var PathFromMGtoICT : GameObject;
//for path
private var numpoints : int=0;
private var curindex : int ; // current index
private var purpleArray = Array() ;
private var ppoint : float = 1.0 ; // purple point
private var ptimes : int = 0 ; // purple
139
//for button toggling
140
if(once == 0 && destination == "T26")
GoToTheFirstPoint ();
if(once == 0 && destination == "T27")
GoToTheFirstPoint ();
if(once == 0 && destination == "T28")
GoToTheFirstPoint ();
if(once == 0 && destination == "T29")
GoToTheFirstPoint ();
if(once == 0 && destination == "T30")
GoToTheFirstPoint ();
if(once == 0 && destination == "T31")
GoToTheFirstPoint ();
if(once == 0 && destination == "T32")
GoToTheFirstPoint ();
if(once == 0 && destination == "T33")
GoToTheFirstPoint ();
if(once == 0 && destination == "T34")
GoToTheFirstPoint ();
if(once == 0 && destination == "T35")
GoToTheFirstPoint ();
if(once == 0 && destination == "T38")
GoToTheFirstPoint ();
if(once == 0 && destination == "T39")
GoToTheFirstPoint ();
if(once == 0 && destination == "T40")
GoToTheFirstPoint ();
if(once == 0 && destination == "Teachers")
GoToTheFirstPoint ();
if(once == 0 && destination == "TLounge")
GoToTheFirstPoint ();
if(once == 0 && destination == "DsTv")
GoToTheFirstPoint ();
if(once == 0 && destination == "Addis Hiwot")
GoToTheFirstPoint ();
if(once == 0 && destination == "Mami Lounge")
GoToTheFirstPoint ();
if(once == 0 && destination == "Senior Cafe")
GoToTheFirstPoint ();
if(once == 0 && destination == "Fresh Cafe")
GoToTheFirstPoint ();
if(once == 0 && destination == "FBE")
GoToTheFirstPoint ();
if(once == 0 && destination == "PGB")
GoToTheFirstPoint ();
if(once == 0 && destination == "CBE")
GoToTheFirstPoint ();
if(once == 0 && destination == "Finance")
GoToTheFirstPoint ();
141
if(once == 0 && destination == "ICT")
GoToTheFirstPoint ();
MoveForward();
turnam=0.01; // for no slerping = almost at zero
if (useSlerp)turnam=slerpPoint;
if (distnormal<turnam)NextWayPoint();
}
}
function NextWayPoint(){
if((curindex+1) < numpoints){ // normal going forward
curindex+=1;
}else{
curindex=0;
}
// ========= if ping pong then reverse =========
if(usePingpong && curindex==0){ // then at the end
142
end=true;
start=false;
}
else
target=waypoints[curindex]; // else update target
}
function FindDistance(){
var tempindex = curindex;
if((tempindex-1) >-0.5){
tempindex-=1;
}else{
tempindex=numpoints-1;
}
distofline = Vector3.Distance(target,waypoints[tempindex]);
disttotarget= Vector3.Distance(target,other.transform.position);
distnormal= disttotarget/distofline; // make a percentage 0.0 to 1.0
}
// =========================================
function RebuildWaypointList () {
var allpoints = PathFolder.GetComponentsInChildren(Transform);
var startingBuilding = from_any.building;
143
if(startingBuilding == "maingate" && destination == "T9"){
allpoints = PathFromMGtoT9.GetComponentsInChildren(Transform);
}
144
if(startingBuilding == "maingate" && destination == "T23"){
allpoints = PathFromMGtoT23.GetComponentsInChildren(Transform);
}
145
if(startingBuilding == "maingate" && destination == "T35"){
allpoints = PathFromMGtoT35.GetComponentsInChildren(Transform);
}
146
if(startingBuilding == "maingate" && destination == "PGB"){
allpoints = PathFromMGtoPGB.GetComponentsInChildren(Transform);
}
147
allpoints = PathRegToLib.GetComponentsInChildren(Transform);
}
numpoints=allpoints.Length-1;
target=waypoints[curindex]; // starts at 0
}
SetStartingWayPoint.Js
import UnityEngine.UI;
148
var T16jump : GameObject;
var T17jump : GameObject;
var T18jump : GameObject;
var T23jump : GameObject;
var T24jump : GameObject;
var T25jump : GameObject;
var T26jump : GameObject;
var T27jump : GameObject;
var T28jump : GameObject;
var T29jump : GameObject;
var TLoungejump : GameObject;
var AHjump : GameObject;
var Mamijump : GameObject;
var SCafejump : GameObject;
var FCafejump : GameObject;
var T35jump : GameObject;
var T34jump : GameObject;
var T33jump : GameObject;
var T32jump : GameObject;
var T31jump : GameObject;
var T30jump : GameObject;
var T38jump : GameObject;
var T39jump : GameObject;
var T40jump : GameObject;
function RebuildWaypointList () {
var allpoints = PathFolder.GetComponentsInChildren(Transform);
if(building == "maingate")
allpoints = PathFolder.GetComponentsInChildren(Transform);
if(building == "Library")
allpoints = Libraryjump.GetComponentsInChildren(Transform);
if(building == "reg")
allpoints = Regjump.GetComponentsInChildren(Transform);
if(building == "QueensDT")
allpoints = QDTjump.GetComponentsInChildren(Transform);
if(building == "PrOffice")
allpoints = PrOfficejump.GetComponentsInChildren(Transform);
if(building == "ICT")
149
allpoints = ICTjump.GetComponentsInChildren(Transform);
if(building == "PGB")
allpoints = PGBjump.GetComponentsInChildren(Transform);
if(building == "Teachers")
allpoints = Teachersjump.GetComponentsInChildren(Transform);
if(building == "T9")
allpoints = T9jump.GetComponentsInChildren(Transform);
if(building == "T10")
allpoints = T10jump.GetComponentsInChildren(Transform);
if(building == "T11")
allpoints = T11jump.GetComponentsInChildren(Transform);
if(building == "T12")
allpoints = T12jump.GetComponentsInChildren(Transform);
if(building == "T13")
allpoints = T13jump.GetComponentsInChildren(Transform);
if(building == "T14")
allpoints = T14jump.GetComponentsInChildren(Transform);
if(building == "T19")
allpoints = T19jump.GetComponentsInChildren(Transform);
if(building == "T20")
allpoints = T19jump.GetComponentsInChildren(Transform);
if(building == "T21")
allpoints = T2122jump.GetComponentsInChildren(Transform);
if(building == "T22")
allpoints = T2122jump.GetComponentsInChildren(Transform);
if(building == "T16")
allpoints = T16jump.GetComponentsInChildren(Transform);
if(building == "T17")
allpoints = T17jump.GetComponentsInChildren(Transform);
if(building == "T18")
allpoints = T18jump.GetComponentsInChildren(Transform);
if(building == "T23")
allpoints = T23jump.GetComponentsInChildren(Transform);
if(building == "T24")
allpoints = T24jump.GetComponentsInChildren(Transform);
if(building == "T25")
allpoints = T25jump.GetComponentsInChildren(Transform);
if(building == "T26")
allpoints = T26jump.GetComponentsInChildren(Transform);
if(building == "T27")
allpoints = T27jump.GetComponentsInChildren(Transform);
if(building == "T28")
allpoints = T28jump.GetComponentsInChildren(Transform);
if(building == "T29")
allpoints = T29jump.GetComponentsInChildren(Transform);
if(building == "TLounge")
allpoints = TLoungejump.GetComponentsInChildren(Transform);
if(building == "AH")
150
allpoints = AHjump.GetComponentsInChildren(Transform);
if(building == "MamiLounge")
allpoints = Mamijump.GetComponentsInChildren(Transform);
if(building == "Senior Cafe")
allpoints = SCafejump.GetComponentsInChildren(Transform);
if(building == "Fresh Cafe")
allpoints = FCafejump.GetComponentsInChildren(Transform);
if(building == "T35")
allpoints = T35jump.GetComponentsInChildren(Transform);
if(building == "T34")
allpoints = T34jump.GetComponentsInChildren(Transform);
if(building == "T33")
allpoints = T33jump.GetComponentsInChildren(Transform);
if(building == "T32")
allpoints = T32jump.GetComponentsInChildren(Transform);
if(building == "T31")
allpoints = T31jump.GetComponentsInChildren(Transform);
if(building == "T30")
allpoints = T30jump.GetComponentsInChildren(Transform);
if(building == "T38")
allpoints = T38jump.GetComponentsInChildren(Transform);
if(building == "T39")
allpoints = T39jump.GetComponentsInChildren(Transform);
if(building == "T40")
allpoints = T40jump.GetComponentsInChildren(Transform);
//numpoints=allpoints.Length-1;
target=jumpingpoints[1]; // starts at 0
}
function GoToTheFirstPoint (){
curindex=0;
RebuildWaypointList ();
other.transform.position=jumpingpoints[0];
other.transform.LookAt(target);
}
function jumpToMainGate(){
LocationText.text = "Main Gate";
building = "maingate";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToLibrary(){
151
LocationText.text = "Library";
building = "Library";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToReg(){
LocationText.text = "Registrar";
building = "reg";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToQDT(){
LocationText.text = "Queens DT";
building = "QueensDT";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToPrOffice(){
LocationText.text = "Pr. Office";
building = "PrOffice";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToICT(){
LocationText.text = "ICT";
building = "ICT";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToPGB(){
LocationText.text = "PGB";
building = "PGB";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToTeachers(){
LocationText.text = "Teacher's";
building = "Teachers";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT9(){
LocationText.text = "T9";
building = "T9";
NavToDest.end = true;
GoToTheFirstPoint ();
}
152
function jumpToT10(){
LocationText.text = "T10";
building = "T10";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT11(){
LocationText.text = "T11";
building = "T11";
NavToDest.end = true;
GoToTheFirstPoint ();
}function jumpToT12(){
LocationText.text = "T12";
building = "T12";
NavToDest.end = true;
GoToTheFirstPoint ();
}function jumpToT13(){
LocationText.text = "T13";
building = "T13";
NavToDest.end = true;
GoToTheFirstPoint ();
}function jumpToT14(){
LocationText.text = "T14";
building = "T14";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT19(){
LocationText.text = "T19";
building = "T19";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT20(){
LocationText.text = "T20";
building = "T20";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT21(){
LocationText.text = "T21";
building = "T21";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT22(){
LocationText.text = "T22";
building = "T22";
153
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT16(){
LocationText.text = "T16";
building = "T16";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT17(){
LocationText.text = "T17";
building = "T17";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT18(){
LocationText.text = "T18";
building = "T18";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT23(){
LocationText.text = "T23";
building = "T23";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT24(){
LocationText.text = "T24";
building = "T24";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT25(){
LocationText.text = "T25";
building = "T25";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT26(){
LocationText.text = "T26";
building = "T26";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT27(){
LocationText.text = "T27";
building = "T27";
154
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT28(){
LocationText.text = "T28";
building = "T28";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT29(){
LocationText.text = "T29";
building = "T29";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToTLounge(){
LocationText.text = "TLounge";
building = "TLounge";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToAH(){
LocationText.text = "Addis Hiwot";
building = "AH";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToMamiLounge(){
LocationText.text = "Mami Lounge";
building = "MamiLounge";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToScafe(){
LocationText.text = "Senior Cafe";
building = "Senior Cafe";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToFcafe(){
LocationText.text = "Fresh Cafe";
building = "Fresh Cafe";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT35(){
LocationText.text = "T35";
building = "T35";
155
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT34(){
LocationText.text = "T34";
building = "T34";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT33(){
LocationText.text = "T33";
building = "T33";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT32(){
LocationText.text = "T32";
building = "T32";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT31(){
LocationText.text = "T31";
building = "T31";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT30(){
LocationText.text = "T30";
building = "T30";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT38(){
LocationText.text = "T38";
building = "T38";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT39(){
LocationText.text = "T39";
building = "T39";
NavToDest.end = true;
GoToTheFirstPoint ();
}
function jumpToT40(){
LocationText.text = "T40";
building = "T40";
156
NavToDest.end = true;
GoToTheFirstPoint ();
}
function SelectLocation2(){
building = SelectedLoc2.text;
from_any.building = SelectedLoc2.text;
LocationText.text = building;
NavToDest.end = true;
GoToTheFirstPoint ();
}
function SelectLocation3(){
building = SelectedLoc3.text;
from_any.building = SelectedLoc3.text;
LocationText.text = building;
NavToDest.end = true;
GoToTheFirstPoint ();
}
function SelectLocation4(){
building = SelectedLoc4.text;
from_any.building = SelectedLoc4.text;
LocationText.text = building;
NavToDest.end = true;
GoToTheFirstPoint ();
}
SetDestinationWayPoint.Js
import UnityEngine.UI;
function beginToReg(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "reg";
destText.text = "Registrar";
157
}
function beginToT9(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T9";
destText.text = "T9";
}
function beginToT10(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T10";
destText.text = "T10";
}
function beginToLibrary(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Library";
destText.text = "Library";
}
function beginToSuperMarket(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "supermarket";
destText.text = "Super Market";
}
function beginToPOffice(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "POffice";
destText.text = "Pr Office";
}
function beginToTeachers(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Teachers";
destText.text = "Teachers";
}
function beginToT11(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T11";
destText.text = "T11";
}
function beginToT12(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T12";
destText.text = "T12";
158
}
function beginToT13(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T13";
destText.text = "T13";
}
function beginToT14(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T14";
destText.text = "T14";
}
function beginToT16(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T16";
destText.text = "T16";
}
function beginToT17(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T17";
destText.text = "T17";
}
function beginToT18(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T18";
destText.text = "T18";
}
function beginToT19(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T19";
destText.text = "T19";
}
function beginToT20(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T20";
destText.text = "T20";
}
function beginToT21(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T21";
destText.text = "T21";
159
}
function beginToT22(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T22";
destText.text = "T22";
}
function beginToT23(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T23";
destText.text = "T23";
}
function beginToT24(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T24";
destText.text = "T24";
}
function beginToT25(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T25";
destText.text = "T25";
}
function beginToT26(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T26";
destText.text = "T26";
}
function beginToT27(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T27";
destText.text = "T27";
}
function beginToT28(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T28";
destText.text = "T28";
}
function beginToT29(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T29";
destText.text = "T29";
160
}
function beginToTLounge(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "TLounge";
destText.text = "TLounge";
}
function beginToDsTv(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "DsTv";
destText.text = "DsTv";
}
function beginToAH(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Addis Hiwot";
destText.text = "Addis Hiwot";
}
function beginToT30(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T30";
destText.text = "T30";
}
function beginToT31(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T31";
destText.text = "T31";
}
function beginToT32(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T32";
destText.text = "T32";
}
function beginToT33(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T33";
destText.text = "T33";
}
function beginToT34(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T34";
destText.text = "T34";
161
}
function beginToT35(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T35";
destText.text = "T35";
}
function beginToT38(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T38";
destText.text = "T38";
}
function beginToT39(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T39";
destText.text = "T39";
}
function beginToT40(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "T40";
destText.text = "T40";
}
function beginToMami(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Mami Lounge";
destText.text = "Mami Lounge";
}
function beginToSenior(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Senior Cafe";
destText.text = "Senior Cafe";
}
function beginToFresh(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Fresh Cafe";
destText.text = "Fresh Cafe";
}
function beginToCBE(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "CBE";
destText.text = "CBE";
162
}
function beginToFBE(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "FBE";
destText.text = "FBE";
}
function beginToPGB(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "PGB";
destText.text = "PGB";
}
function beginToFinance(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "Finance";
destText.text = "Finance";
}
function beginToICT(){
NavToDest.once = 0;
NavToDest.end = false;
NavToDest.destination = "ICT";
destText.text = "ICT";
}
function StartNavToExam(){
NavToDest.once = 0;
NavToDest.destination = examdestText.text;
destText.text = examdestText.text;
NavToDest.end = false;
NavToDest.start = true;
}
function StartNav(){
NavToDest.start = true;
}
AutoDetectLocation.CS
using UnityEngine;
using System;
using System.Collections;
using System.Diagnostics;
using UnityEngine.UI;
163
public Text Build2;
public Text Build3;
public Text Build4;
//Images
public Sprite LibrarySprint;
public Image LibraryImage;
public Sprite T10Sprint;
public Image T10Image;
public Sprite T11Sprint;
public Image T11Image;
public Sprite T12Sprint;
public Image T12Image;
proc.StartInfo.Arguments = @"/C ""netsh wlan show networks mode=bssid | findstr BSSID """;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
if (output == "")
{
AutoDetectTF.text = "connection not available";
}
Else
{
164
string[] result = output.Split('\n');
int lengthA = result.Length;
string macAddrs = "";
for(int i = 0; i < lengthA - 1; i++){
macAddrs = result[i].Substring(30, 17);
AutoDetectTF.text = "You Are Around T11, T10, T13 or Library \n To be accurate please select
from the result Images below";
StartLoc.text = "T11";
LibraryImage.sprite = LibrarySprint;
T10Image.sprite = T10Sprint;
T11Image.sprite = T11Sprint;
T12Image.sprite = T12Sprint;
Build1.text = "Library";
Build2.text = "T10";
Build3.text = "T11";
Build4.text = "T12";
break;
}
else if(macAddrs == "90:18:7c:7e:2c:36")
{
AutoDetectTF.text = "You Are Around T9";
StartLoc.text = "T9";
LibraryImage.sprite = LibrarySprint;
T10Image.sprite = T10Sprint;
T11Image.sprite = T11Sprint;
T12Image.sprite = T12Sprint;
Build1.text = "Library";
Build2.text = "T10";
Build3.text = "T11";
Build4.text = "T12";
break;
}
else{
AutoDetectTF.text = "You Are Out Of Range Check WiFi Availability";
break;
165
}
}
}
}
}
JumpToDetectedLocation.Js
import UnityEngine.UI;
//Jumping Point
var Maingate : GameObject;
var LibraryPt : GameObject;
var T9Pt : GameObject;
function RebuildWaypointList () {
var allpoints = Maingate.GetComponentsInChildren(Transform);
if(building == "T11"){
allpoints = LibraryPt.GetComponentsInChildren(Transform);
}
if(building == "T9"){
allpoints =T9Pt.GetComponentsInChildren(Transform);
}
//numpoints=allpoints.Length-1;
target=jumpingpoints[1]; // starts at 0
}
166
RebuildWaypointList ();
other.transform.position=jumpingpoints[0];
other.transform.LookAt(target);
}
function jumpToDetected(){
building = LocationText.text;
SetStartWP.building = LocationText.text;
NavToDest.end = true;
GoToTheFirstPoint ();
}
ViewExamSchedule.CS
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
void OnGUI() {
167
if(retrive)
{
WWWForm form = new WWWForm();
form.AddField("Department", Department);
form.AddField("Batch", Batch);
WWW w = new WWW("http://localhost/Admin/selectexamsch.php", form);
StartCoroutine(login(w));
retrive = false;
}
if(start)
{
string HeaderStr = " Date".PadRight(16) + "Time".PadRight(16) + "Course".PadRight(16) +
"Building".PadRight(15) + "Room";
string title = "".PadRight(29) + "Exam Schedule";
string DeptBatch = "".PadRight(14) + "Department : " + Department + " " +"Batch : " + Batch;
GUI.color = Color.blue;
GUILayout.BeginArea(new Rect(Screen.width / 2 -300, Screen.height / 2 -110, 600f, 200f),
GUI.skin.window);
scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, true);
GUILayout.BeginVertical(GUI.skin.box);
GUI.color = Color.white;
GUILayout.Label(title);
GUILayout.Label(DeptBatch);
GUILayout.Label(HeaderStr);
GUI.contentColor = Color.yellow;
GUI.skin.font = MSFont;
if (GUILayout.Button("Select"))
{
string Location = result[selGridInt];
string[] navigation = Location.Split('|');
string destinationLoc = navigation[3];
Destination.text = destinationLoc.Trim();
start = false;
}
GUILayout.EndVertical();
GUILayout.EndScrollView();
GUILayout.EndArea();
}
}
IEnumerator login(WWW w)
{
yield return w;
if (w.error == null)
168
{
string[] szSplited = w.text.Split(',');
string concatin = "";
int lengthA = szSplited.Length;
for(int i = 0; i < lengthA - 1; i++)
{
if(((i+1) % 5 == 0) && (i > 0)){
if(i == lengthA - 2)
concatin = concatin + szSplited[i] + "" ;
else
concatin = concatin + szSplited[i] + "." ;
}
else if(i == 0){
concatin = concatin + szSplited[i].PadRight(15) + "|";
}
else{
concatin = concatin + szSplited[i].PadRight(15) + "|";
}
}
result = concatin.Split('.');
start = true;
}
else
{
string message = "ERROR: " + w.error + "\n";
Debug.Log("data base " + message);
}
}
}
169
1.3 Screen Images
Main Menu
Loading Page
170
Set Starting Location Menu
171
Set Destination Location Menu and Press Nvigate
172
Location Information showing Blocked Road
If the user is not aware of his current location the app can detect the users current location in one
click
173
The app displaying automatically detected current location of the user
174
Sample Location President Office
Sample location Queens downtown hotel inside Aste Tewodros campus, University of Gondar
175
Sample location university Library
176
Quick tour menu and student operation sub menu
177
178
Student can view his dormitory information and click navigate to his dormitory. If a wifi connection
is available the app detects the current location of the student otherwise prompt the student to enter
manually. Then the student clicks navigate button the app displays a 3D environment of Atse
Tewodros campus and navigates the student to his dormitory. The same thing is done after the
student views his examination information/schedule and registration information.
179
After pressing view exam schedule the search Exam schedule Form is displayed
Full Tour Submenu is a manual tour taken by the user using keyboard arrow keys and mouse
movement on Laptop or desktop pcs and on android a user can use a joystick button.
180
181
182
s
183
Conclusion and Recommendation
The output of the project is a 3D navigation application for AsteTewodros campus which provides
the real time location of the user based on Wi-Fi technology and the route to a final destination in a
3D model visualized on the mobile device. In the process of achieving this ultimate goal, the
possibilities of navigation system on mobile devices were investigated. Separate objectives were
set for each one of the components constituting the system. Firstly, possible problems and
solutions were identified and selected; secondly Based on the objectives specified earlier in chapter
one, relevant information were gathered and analyzed with team members also desired data was
collected through interview & observation.And finally, we formalize and change the project into
reality by implementing 3D navigation system with three tire architecture for AtseTewodros
campus. Matching of the conclusions with the objectives framed and fulfillment of the objectives
are taking into consideration in this part. Further scope and further enhancement of the work done
also indicated here.
Glossary
Class Diagram: Is a type of static structure diagram that describe the structure of
a system by showing system classes, their attribute, operation
and the relationship among the class.
Component Diagram Is UML diagram depicts how components are wired together to
form larger components and or software system.
Functional requirement Is a requirement that specifies what the system should do or
what the system should perform
Hardware Is computer equipment including all the components use to
make the computer
Non-functional requirement are requirements which specify criteria that can be used to judge
the operation of a system, rather than specific behaviors
Software Computer programs, instructions that make hardware work
184
Scenario Is an instance of use case explaining concerned major set of
actions
Sequence Diagram Is a king of interaction diagram that show how process operate
with one another and in what order
Software design Is the transformation of an analysis model into a system design
model During system design, developers define the design goals
of the project and decompose the system into smaller
subsystems that can be realized by individual teams
System Any collection of component element that work together to
collect task
Use case diagram Graphical Representation of mark full of step wise activity and
action with support for choice, iteration and concurrency
User interface The combination of menus, screen design, keyboard command,
command language and help, which creates the way a user
interact with computers.
User Any user of the system including database administrator,
librarian, member, system administrator
Design Goal Describes the quality of the system that should be optimized
Software Architecture Provides a high level view of the system by decomposing it into
smaller and manageable pieces and study the relationship
among this pieces
Hardware/ Software Is activity of selecting Hardware and software configuration for
mapping the system
Persistent Data Data that exists from session to session. Persistent data are
stored in a database on disk or tape.
Are data that will be tracked and stored in the system
permanently
Access Control The management of admission to system and network
resources. It grants authenticated users access to specific
resources based on company policies and the permission level
assigned to the user or user group. Access control often includes
authentication, which proves the identity of the user or client
185
machine attempting to log in.
Control Flow Describes how the system sequences operations and whether the
system is event driven or procedure driven.
Boundary Condition Specifies how the system is initialized and shutdown.
Recommendation
The team that developed this 3D navigation system for AtseTewodros campus recommends the
following points for the use this project.
University of Gondar should take the purpose of this project seriously and must be willing
to apply thisautomated navigation system in order to solve main problems observed in the
current manual navigation system of AtseTewodros campus.
Students, campus employees and campus visitors should also take the advantage of this
project as it is of a great use in solving their navigation problems in AtseTewodros campus.
References
ANNEX
Questions asked while we are gathering information using Open-Ended Questions
186
Q 1. What are the challenges that you face while using the current navigation system in
AtseTewodros campus?
Q 2. How can you get the direction or location of places that you want?
Q 3. Do you think is it difficult finding a location in AtseTewodros campus using the
current navigation system, if yes how?
Q 4. Is there any position indicator system in the campus that is helpful to you, if yes how
it helps you?
Q 5. How is it difficult for you to locate class rooms using course and exam schedules
posted by your department?
187