The ADD Document

advertisement
ADD
Authors:
Gilad Ivry
Mattan Margalith
Niv Saar
Alex Surguch
Table of Contents
1. Introduction
1.1 Vision
3
1.2 Problem Domain
4
1.3 Stakeholders
4
1.4 Software Context
5
1.5 System interfaces
7
2. Functional Requirments
8
3. Non Functional Requirments
10
4. Usage Scenarios
4.1 User profile
11
4.2 Use-Cases
12
4.3 Special usage considerations
18
5. Appendices
19
1. USE CASES:
Uses cases description
Use case ID: 1
Use case name: configure simulation properties
Primary actors: User
Description: The user will configure all the properties and input all the necessary
initial data that are needed in order to run the simulation.
Trigger: The user will ask to configure new simulation.
Pre-conditions: None
Post-conditions: The new system configuration has been saved in the DB and the
simulator is initialized with all the inserted data.
Flow of events:
1. The user chooses the amount of simulated entities that will participate in the
simulation.
2. The user chooses the general statistics for the simulated entities.
3. The user chooses how to arrange the simulated entities in the map.
4. The user chooses how the simulated entities will move on the map.
5. The user chooses the length of the simulation (number of ticks) and the
duration of each tick in hours.
6. The user configures the special events.
7. The user configures how to generate the requests.
8. The user chooses the algorithms that he wants the simulation to work with.
Alternative flows: User can return to the previous step in the wizard
Sequence Diagram:
Use case ID: 2
Use case name: run the simulation
Primary actors: User
Description: The user will activate the simulation
Trigger: User presses the run simulation button.
Pre-conditions: a configuration for the simulation has been loaded.
Post-conditions: all the data from the simulation is saved in the DB and displayed for
the user
Flow of events:
1. User presses the start simulation button.
Alternative flows: None.
Sequence Diagram:
Use case ID: 3
Use case name: pause/resume the simulation
Primary actors: User
Description: The user pause/resume the simulation
Trigger: User presses the pause/resume simulation button.
Pre-conditions: The simulation is running.
Post-conditions: The simulation stops/continues to run.
Flow of events:
1. User presses the pause simulation button.
Alternative flows: None.
Sequence Diagram:
Use case ID: 4
Use case name: end the simulation
Primary actors: User
Description: The user ask to end the simulation before the configured period of the
simulation ends
Trigger: User presses the end simulation button.
Pre-conditions: The simulation is running.
Post-conditions: The simulation moves to the summery page and displays all the
collected data
Flow of events:
1. User presses the end simulation button.
Alternative flows: None.
Sequence Diagram:
Use case ID: 5
Use case name: Show graph
Primary actors: User
Description: The user asks to show him a specific graph during the simulation or in
the summery stage.
Trigger: User presses on one of the tabs which represent a statistic expressed by
graphs.
Pre-conditions: The simulation is running.
Post-conditions: The system displays the requested graph.
Flow of events:
1. User chooses a display tab that contains some type of statistics.
2. User chooses one graph from the graphs available in this tab.
3. System displays the graph (meanwhile the simulation keeps running)
4. User closes the display of the graph.
Alternative flows: None.
Sequence Diagram:
Use case ID: 6
Use case name: select group of simulated entities.
Primary actors: User
Description: The user selects a group of simulated entities from the map.
Trigger: User marks the simulated entities with the mouse.
Pre-conditions: The simulation is running.
Post-conditions: The system displays statistical data on the selected group.
Flow of events:
1. User marks a group of simulated entities with the mouse.
2. System displays a panel with statistical data on the selected group
(meanwhile the simulation keeps running)
3. User closes the display of the panel.
Alternative flows: None.
Sequence Diagram:
Special usage considerations
The user should be familiar with the algorithms and have the knowledge of how to
configure and insert new ones according to the system constraints.
2. DATA MODEL
2.1 Description of Data Objects
Group – simulates a group of users, all of which have similar characteristics.
This class enables us to gather specific statistics over the class domain, this
object contains information about the number of the users in the group, and
the probability to request and respond to a request, etc. Each group has a
unique ID.
Event – The event data object defines a period of time, in which several
parameters are altered. The event has a time and a Location, and changes the
way that the users move and ask questions. The event is unified by a begintime and end-time with a consideration of the location.
Request – A request is a user-generated data object that is generated by a
RequestFactory in accordance to a unique statistical formula. The request is
handled by the system manager, which directs it to the appropriate users
(chosen by their location), with the aid of a selection algorithm. Each request
has a unique ID.
Reply – A reply is a user-generated data object that is generated by a the
system. Once a user is chosen by the selection algorithm and receives a
request, a probabilistic formula is applied to decide whether to reply. If so, a
reply is generated, and several parameters are updated accordingly. Each
reply is identified by the request idea and the replying user's ID.
Statistical Data – This data object contains dynamic data sets, which contains
all the data gathered during a simulation per user. This object contains the
initial statistical data for the users belonging to a specific group. This object is
initialized with X and Y parameters, which represents the probability to
request and reply to a request, and with satisfactory rate, and some other
client-defined parameters. The data is altered during the simulation run.
User – The main data object. Each user belongs to a specific group and has a
unique ID. During the simulation the user request, reply, move, and
manufacture that statistical data which we collect. The user's actions during a
specific time stamp, will affect the way that this user will act in the next time
stamp.
Map - This object is a large grid that represents the simulator's world domain,
over which the users act during the simulation.
2.2 Data Object Relationship
2.3 Data Bases:
2.3.1 ERD:
2.3.2 Relational Tables scheme
Simulation Configuration Tables:
1. Run Configuration: runID, numOfTicks, hoursPerTick,
numOfNotActiveUsers, selectionAlgo, incentivesAlgo, reqestType, spreadType,
moveType
2. Users Group: runID, groupID, numOfUsers, userPoicyType, maxTimeToReply
3. User Statistical Data: runID, groupID, satisfaction, probToAns (respondX),
probToSend (requestX), repliesLimit, requestDelta, replyDelta.
4. User Policy: runID, groupID, policyType, arg1 (L), arg2(alpha), arg3(beta
5. Request Modifier: runID, groupID, requestModifierType, arg1, arg2, arg3
6. Reply Modifier: runID, groupID, replyModifierType, arg1, arg2, arg3
7. Selection Algorithm: runID, selectionAlgoType, arg1, arg2, arg3
8. Incentives Algorithm: runID, incentivesAlgoType, arg1, arg2, arg3
9. Request Configuration: runID, requetType, arg1, arg2
10. Spread Configuration: runID, spreadType, arg1, arg2
11. Spread Locations: runID, locationID, numOfUsers, Coordinate
12. Movement Configuration: runID, moveType, arg1, arg2
13. Map Configuration: runID, topLeftCoordinate, downRightCoordinate
14. Events: runID, eventID, beginTime, endTime, coordinate, radios,
encourageRequest, encourageRequestLocation, encourageMovement
Simulation Run Tables:
1. User Locations : runID, stepNum, groupID, userID, oldCoordinate, newCoordinate
2. User Satisfaction: runID, stepNum, groupID, userID, oldSatisfaction,
newSatisfaction
3. User ProbToAns: runID, stepNum, groupID, userID, oldProbToAns, newProbToAns
4. User ProbToSend: runID, stepNum, groupID, userID, oldProbToSend,
newProbToSend
5. User Requests: runID, stepNum, requestID, requestUserID, Coordinate
6. User Replies: runID, stepNum, requestID, replyUserID, Coordinate
2.3.2 Relational Tables description
Run Configuration:
- runID: INT NOT NULL AUTO_INCREMENT – Unique primary key identifies the
simulation.
- numOfTicks: INT NOT NULL DEFAULT 1 – number of time stamps that the
simulation will run.
- hoursPerTick: INT NOT NULL DEFAULT 1 – the amount of hours each time
stamp represent.
- numOfUsers: INT NOT NULL DEFAULT 0 – total number of active users in the
simulation.
- numOfNotActiveUsers: INT NOT NULL DEFAULT 0 – total number of nonactive users in the simulation.
- selectionAlgo: VARCHAR(256) NOT NULL – the type of the selection
algorithm.
- incentivesAlgo: VARCHAR(256) NOT NULL – the type of the incentives
algorithm.
- reqestType: VARCHAR(256) NOT NULL – the type of the requests generator.
- spreadType: VARCHAR(256) NOT NULL – the type of the users spread
generator.
- moveType: VARCHAR(256) NOT NULL – the type of the users movement
generator.
Users Group:
- runID: INT NOT NULL – foreign key to the Run Configuration table.
- groupID: INT NOT NULL – primary key identifies the group.
- numOfUsers: INT NOT NULL DEFAULT 1 – number of users in the group.
- userPoicyType: VARCHAR(256) NOT NULL – type of user policy that the users
belonging to the group will use.
User Statistical Data:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- groupID: INT NOT NULL – foreign key to the Users Group table.
- satisfaction: DOUBLE NOT NULL – start satisfaction for the users in the group.
- probToAns: DOUBLE NOT NULL – start probability to answer a request for the
users in the group.
- probToSend: DOUBLE NOT NULL - start probability to send a request for the
users in the group.
- repliesLimit: INT NOT NULL – maximum number of replies for the users in the
group.
- requestDelta: INT NOT NULL – number of time stamps that the users
remembers the requests he sent.
- replyDelta: INT NOT NULL - number of time stamps that the users
remembers the replies he sent.
- maxTimeToReply: INT NOT NULL DEFAULT 1 – maximum time in hours that
the user has to replies a request.
User Policy:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- policyType: VARCHAR(256) NOT NULL - type of user policy that the users
belonging to the group will use.
- arg1: VARCHAR(256) – argument for the policy in use.
- arg2: VARCHAR(256) – argument for the policy in use.
- arg3: VARCHAR(256) – argument for the policy in use.
- arg4: VARCHAR(256) – argument for the policy in use.
Request Modifier:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- requestModifierType: VARCHAR(256) NOT NULL - type of user modifier for
outgoing requests that the users belonging to the group will use.
- arg1: VARCHAR(256) – argument for the modifier in use.
- arg2: VARCHAR(256) – argument for the modifier in use.
- arg3: VARCHAR(256) – argument for the modifier in use.
Reply Modifier:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- replyModifierType: VARCHAR(256) NOT NULL - type of user modifier for
incoming replies that the users belonging to the group will use.
- arg1: VARCHAR(256) – argument for the modifier in use.
- arg2: VARCHAR(256) – argument for the modifier in use.
- arg3: VARCHAR(256) – argument for the modifier in use.
Selection Algorithm:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- selectionAlgoType: VARCHAR(256) NOT NULL - type of the selection
algorithm that will be used in the simulation.
- arg1: VARCHAR(256) – argument for the algorithm in use.
- arg2: VARCHAR(256) – argument for the algorithm in use.
- arg3: VARCHAR(256) – argument for the algorithm in use.
Incentives Algorithm:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- IncentivesAlgoType: VARCHAR(256) NOT NULL - type of the incentives
algorithm that will be used in the simulation.
- arg1: VARCHAR(256) – argument for the algorithm in use.
- arg2: VARCHAR(256) – argument for the algorithm in use.
- arg3: VARCHAR(256) – argument for the algorithm in use.
Request Configuration:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- requetType: VARCHAR(256) NOT NULL - type of the users requests generator
that will be used in the simulation.
- arg1: VARCHAR(256) – argument for the generator in use.
- arg2: VARCHAR(256) – argument for the generator in use.
- arg3: VARCHAR(256) – argument for the generator in use.
Spread Configuration:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- spreadType: VARCHAR(256) NOT NULL - type of the users spread generator
that will be used in the simulation.
- arg1: VARCHAR(256) – argument for the generator in use.
- arg2: VARCHAR(256) – argument for the generator in use.
- arg3: VARCHAR(256) – argument for the generator in use.
Movement Configuration:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- moveType: VARCHAR(256) NOT NULL - type of the users movement
generator that will be used in the simulation.
- arg1: VARCHAR(256) – argument for the generator in use.
- arg2: VARCHAR(256) – argument for the generator in use.
- arg3: VARCHAR(256) – argument for the generator in use.
Map Configuration:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- downLeftCoordinate: VARCHAR(256) – down left coordinate of the map.
- topRightCoordinate: VARCHAR(256) – top right coordinate of the map.
Events:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- eventID: INT NOT NULL - primary key identifies the event.
- beginTime: INT NOT NULL – the beginning time of the event.
- endTime: INT NOT NULL – the ending time of the event.
- coordinate: VARCHAR(256) – the location of the event.
- radios: INT NOT NULL – the radios that the event will influence.
- encourageRequest: DOUBLE NOT NULL – the percent that will be added to
the probability to send a request.
- encourageRequestLocation: DOUBLE NOT NULL - the percent that will be
added to the probability to send a request to the location of the event.
- encourageMovement: DOUBLE NOT NULL - the percent that will be added to
the probability to move to the event location.
User Locations:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- stepNum: INT NOT NULL – primary key identifies the current time stamp.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- userID: INT NOT NULL – primary key identifies the user that changed
location.
- oldCoordinate: VARCHAR(256) – old location of the user.
- newCoordinate: VARCHAR(256) – new location of the user.
User Satisfaction:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- stepNum: INT NOT NULL – primary key identifies the current time stamp.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- userID: INT NOT NULL – primary key identifies the user that changed
satisfaction.
- oldSatisfaction: VARCHAR(256) – old satisfaction of the user.
- newSatisfaction: VARCHAR(256) – new satisfaction of the user.
User ProbToAns:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- stepNum: INT NOT NULL – primary key identifies the current time stamp.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- userID: INT NOT NULL – primary key identifies the user that changed
probability to answer a request.
- oldProbToAns: VARCHAR(256) – old probability to answer a request of the
user.
- newProbToAns: VARCHAR(256) – new probability to answer a request of the
user.
User ProbToSend:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- stepNum: INT NOT NULL – primary key identifies the current time stamp.
- groupID: INT NOT NULL - foreign key to the Users Group table.
- userID: INT NOT NULL – primary key identifies the user that changed
probability to send a request.
- oldProbToSend: VARCHAR(256) – old probability to send a request of the
user.
- newProbToSend: VARCHAR(256) – new probability to send a request of the
user.
User Requests:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- stepNum: INT NOT NULL - primary key identifies the current time stamp.
- requestID: INT NOT NULL - primary key identifies the request.
- requestUserID: INT NOT NULL – ID of the user that sent the request
- coordinate: VARCHAR(256) – location of the request.
User Replies:
- runID: INT NOT NULL - foreign key to the Run Configuration table.
- stepNum: INT NOT NULL - primary key identifies the current time stamp.
- requestID: INT NOT NULL - primary key identifies the request.
- replyUserID: INT NOT NULL - primary key identifies the user that replied the
request.
- requestUserID: INT NOT NULL – ID of the user that sent the request
- coordinate: VARCHAR(256) – location of the request.
2.3.4 Data Base main transaction
1. Save simulation configuration:
This transaction happens when the user chooses to initialize the simulation,
upon the initialization the system saves the main configuration into the 14
tables related to the system configuration as described in section 2.3.2.
Tables affected:
o Run Configuration: 1 row added.
o Users Group: the number of lines that are added equals to the
number of groups.
o User Statistical Data: the number of lines that are added equals to
the number of groups.
o User Policy: the number of lines that are added equals to the number
of groups.
o Request Modifier: the number of lines that are added equals to the
number of groups.
o Reply Modifier: the number of lines that are added equals to the
number of groups.
o Selection Algorithm: 1 row added.
o Incentives Algorithm: 1 row added.
o Request Configuration: 1 row added.
o Spread Configuration: 1 row added.
o Spread Locations: depends if the spread type is Locations, if so the
number of lines that are added equals to the number of locations.
o Movement Configuration: 1 row added.
o Map Configuration: 1 row added.
o Events: the number of lines that are added equals to the number of
events.
2. Save simulation step data:
This transaction happens at the end of every time stamp, the system saves all
the data it gathered on changes that happened to the users, all the requests
that were sent at this time stamp and all the replies that was sent this time
stamp. The data will be saved into the simulation run tables as described in
section 2.3.2.
Tables affected:
o User Locations: add rows depending on the number of users that
changed location in the current time stamp.
o User Satisfaction: add rows depending on the number of users that
changed satisfaction in the current time stamp.
o User ProbToAns: add rows depending on the number of users that
changed probability to answer a request in the current time stamp.
o User ProbToSend: add rows depending on the number of users that
changed probability to send a request in the current time stamp.
o User Requests: add rows depending on the number of requests
generated in the current time stamp.
o User Replies: add rows depending on the number of replies
generated in the current time stamp.
3. Behavioral Analysis
3.1 sequence diagrams:
use case 1: configure simulation properties.
use case 2: configure simulation properties.
use case 3: run/pause the simulation
use case 4: end the simulation.
use case 5: show graphs.
use case 6: select group of simulated entities.
3.2 Events
Because our software is a simulator, it's flow is defined prior to its
activation. Hence- there are no events to change the flow of the software.
No user input is received during the simulation, and no external event can
affect the run.
3.3 States
We have 3 states during the flow1. Configure the scenario- user inputs the properties of the simulation
(e.g. number of users, size of the map, configure groups behavior
etc.)
2. Run the simulation: in this state the simulation executes- data is
collected and stored.
3. When the simulation ends, the data is being analyzed and
manipulated to several graphs and reports, according to the user's
requests.
Configure scenario
Run simulation
Generate report
4. Object-Oriented Analysis
4.1 Class Diagrams
The classes: SelectionAlgorithmGenerator, IncentivesAlgorithmGenerator,
PathGenerator, SpreadGenerator, RequestGenerator are all abstract class that have
many implementation. Each abstract class is a main class in its own package and
more detailed explanation is given in section 4.3 (Packages).
The interface DBHandlerInt is part of the persistence layer and its implementation is
given in section 4.3 (Packages).
In this Diagram only the main classes are shown for the simplicity of it.
This diagram is showing the relations in the User class, all the users in the simulation
are held in 3 hash tables in the SystemManager class.
The classes: PolicyGenerator, RequestUserModifier, RepliyUserModifier are all
abstract class that have many implementation. Each abstract class is a main class in
its own package and more detailed explanation is given in section 4.3 (Packages).
In this Diagram only the main classes are shown for the simplicity of it.
4.2 Class Description
o SystemManager – This is the main class of the simulation that is
responsible to connect all the simulation's features into one. This class
is referred to as the main Engine and it process al the steps of the
simulation.
The main functions of this class are:
 createUsers() - Creates all the users in the simulation
according to the received user's groups. Each user assigned
the statistical and content information according to his group
and insert to the hash tables that hold all the users.
 nextStep() - The main function of the simulation, this function
is the Engine of the simulation and called on every new step in
order to run the simulation. When the function called it
evaluates all the users, applies the selection algorithm on all
the requests and saves all the gathered data to the DB. In the
evaluation part the function goes over all the users and for
each one of them determine if the user wants to send a
request in the current time stamp, answer requests from
previous time stamps (according to the user's reply delta),
receive replies from previous time stamps (according to the
user's request delta) and set new location for the user.
o SelectionAlgorithmGenerator - Abstract class that represents an
instance of selection Algorithm. The specific instance of the Selection
Algorithm is created dynamically by using class for name reflection.
The implementations of this class are responsible for selecting users
to whom the requests will be send to each one in its own way, all the
implementations classes must implement the select(...) method.
Implementations: NaiveSelection.
o PathGenerator - Abstract class that represents an instance of
movement type. The specific instance of the Movement type is
created dynamically by using class for name reflection. The
implementations of this class are responsible for moving the users to
new locations on the map each one in its own way, all the
implementations classes must implement the nextLocation(...)
method.
Implementations: StaticMovement, DBMovement,
StatisticalMovement, StatisticalPerHoursMovement.
o SpreadGenerator - Abstract class that represents an instance of
Spread type. The specific instance of the Spread type is created
dynamically by using class for name reflection. The implementations
of this class are responsible for the initial spread of the user on the
map each one in its own way, all the implementations classes must
implement the firstLocation(...) method.
Implementations: RandomSpread, UniformSpread, LocationsSpread.
o RequestGenerator - Abstract class that represent an instance of
specific Request type class generator. The specific instance of the
Request type is created dynamically by using class for name
reflection. The implementations of this class are responsible for
generating new requests for the users each one in its own way, all the
implementations classes must implement the getNextRequest(...)
method.
Implementations: RandomRequest.
o PolicyGenerator - Abstract class that represents an instance of User's
Policy. The specific instance of the User's Policy is created dynamically
by using class for name reflection. The Policy class holds the User's
requests modifier object and the User's replies modifier object for
modifying the users statistical data after he receive and answer
requests, each policy type has its own specific requests and replies
modifiers and they created automatically when the policy is created.
The implementations of this class are responsible for deciding
whether the user will send a request or answer and then change his
statistical data using the modifiers classes according to the action.
All the implementations classes must implement the antToRequest(...)
and wantToAnswer(...) methods.
Implementations: StaticPolicy, CurvePolicy.
ReplyUserModifier - Abstract class that represents an instance of
reply user modifier type. The specific instance of the reply user
modifier type is created dynamically by using class for name
reflection. This class is associated to a specific policy type and can be
used only with it. The implementations of this class are responsible
for changing the user's statistics for the replies that he provides, all
the implementations classes must implement the
modifyReplyUser(...) method.
Implementations: ReplyUserStaticReward, ReplyUserCurveReward
ReplyUserModifier - Abstract class that represents an instance of
request user modifier type. The specific instance of the request user
modifier type is created dynamically by using class for name
reflection. This class is associated to a specific policy type and can be
used only with it. The implementations of this class are responsible
for changing the user's statistics for the requests that he sends, all the
implementations classes must implement the modifyRequestUser(...)
method.
Implementations: RequestUserStaticReward,
RequestUserCurveReward.
4.3 Packages
The project is build using the layers model: GUI, Controller, Domain and
Persistence.
Packages in the Domain layer:
o Algorithms – under this package there are 2 sub-packages for 2
specific algorithm types:
 Selection – containing all the implementation of the selection
algorithm used by the simulation:

Incentives - containing all the implementation of the
incentives algorithm used by the simulation:
o Exceptions – package that holds all the exception that the Domain
classes throws.
o Infrastructure – package that holds all the data objects.
o Movement - containing all the implementation of the movement type
used by the simulation:
o Spread - containing all the implementation of the spread type used by
the simulation:
o Requests - containing all the implementation of the requests type
used by the simulation:
o User – under this package there are all the packages that responsible
for the user operation:
 Policy - containing all the implementation of the policy type
used by the simulation:

Behavior – under this package there are all the packages that
changes user behavior:
 Reply User - containing all the implementation of the
reply user modifier type used by the simulation:


Request User - containing all the implementation of the
request user modifier type used by the simulation:
Probability - containing all the implementation of the different
probability classes used by the user:
The packages in the Persistence layer:
o Exceptions – package that holds all the exception that the Persistence
classes throws.
o Infrastructure – package that holds all the data objects used by the
Persistence.
o SQL Queries – This package contains all the class that accesses the DB
using queries.
5. Software components:
We will use 3 machines- Dedicated DB server, A main server to hold the
backend and a client side computer (on which the UI will be displayed).
1. DB: We are using mySQL database to store and access the data collected.
The DB should be deployed on a designated machine that will provide
service to the core components.
2. JDBC: is used as a DAL in our persistence layer. This will be deployed on
the main server.
3. Core Domain components includes Movement Generator, Spread
Generator, Request Generator and different algorithms generators, which
are generic and loaded during the configuration wizard (or file). These
components are deployed on the main server.
4. UI Controller component: parse the data received from the domain and
generate a compact representation of the data to be displayed in the UI.
This component is also deployed on the main server.
5. UI components (includes the wizard, the simulation map and the data
charts) are written in Flex FWK, and are accessible through web access.
These are generated on the client's side, when the client access the
application.
6. User Interface draft:
Config wizard (on system startup) version 1.0
Menu panel
1. DB configuration
-user
-password
-
Next…
Config wizard (on system startup) version 1.0
Menu panel
2. Genearal
- num of non-active users
- num of ticks
- hours per tick
- expansion <to be inserted>
- revenue <to be inserted>
Next…
Config wizard (on system startup) version 1.0
Menu panel
3. Algorithms
-selection algorithm type.
- selection algorithm args.
- incentives algo. type
- incentives algo. args.
Next…
Config wizard (on system startup) version 1.0
Menu panel
4. General system config
- request generator type
- request generator params
- movement generator type
- movement generator params <optional- movement per hours>
- spread generator type
- spread generator params <optional- linked list of locations>
- map top-right coordinate
- map buttim- left coordinate
Next…
Config wizard (on system startup) version 1.0
Menu panel
5. Event configuration
- begin time <int- time stamp)
- end time
- location
- radius
- request encouragement<double>
- request location encoragement
- movement encouragement
Next…
Config wizard (on system startup) version 1.0
Menu panel
6. Event configuration
- begin time <int- time stamp)
- end time
- location
- radius
- request encouragement<double>
- request location encoragement
- movement encouragement
Next…
Config wizard (on system startup) version 1.0
Menu panel
7. User Group Configuration
- num of users
- policy type
-policy type args
-modify requester params <double>
-modify replier params <double>
- max time to reply
- group statistical data <dialog>
- satisfaction
- probability to answer(respond X)
- probability to send (Request X)
- replies limit
- request delta
- reply delta
Next…
Simulation view, version 1.0
Menu panel
Reports
center
Event
manager
Algorithm
loader
Button 4
- TBA
Button n
TBA
Information
pane
MAP
TimeLine
Charts view, version 1.0
Menu panel
After the simulation finished
This screen will display the statistics gathered and will generate reports
TimeLine
7. Non-functional requirements Testing:
Performance constraints:
-
Speed, Capacity & Throughput:
 The application must launch in less than 2 minutes.
o We intend to run a torture test with the highest level of detail
and data (1 million users, and a probability of 0.95 to send a
request per user each time stamp- high activity)
 Each transaction of the system (time stamp) should be processed
under 4 minutes (with the assumption that the system has no more
than 1,000,000 users), and the display of the GUI should refresh
during this period of time.
o We will test this manually.
-
Reliability:
 This system will remain online at all times. The system will be able to
recover from data crashes and restore the data of previous runs from
the DB.
o Torture tests are designed in order to bring the system to the
limit, and since data is stored every time-stamp, recovering
will be supported.
-
Safety & Security:
 The system's code will be protected by the server that it is loaded on.
o The simulator does not require any permissions or security
levels, thus it excuses us from testing that aspect.
-
Portability:
 The application will run on a Microsoft Windows operation system
and will be operable for Explorer and Firefox browsers only.
o We intend to use these browsers during the manual sanity
tests.
-
Usability:
 Extensive learning of the software use will be difficult and is suited to
expert users only (knowledge of the algorithms, probabilities and
etc.).
 For novice users, a setup wizard will be provided, which enables a
quick and simple definition of the simulation.
o We intend to ask the client to use the product first without
any tutoring, to receive feedbacks on it's usability.
-
Acceptance testing: our client will write and execute his acceptance tests
prior to the products submission.
-
Mid-process testing: so far, we embedded several tests to see that the
simulation behaves as anticipated, and the results were satisfying. (e.g.
the spread, and user's activity, satisfaction and movement, etc.)
8. Task List
1. Task ID: 1
Title: create DBRequest class.
Est Starting Date: 3/4
Actual Starting Date:
Est Finish Date: 10/4
Actual Finish Date:
Description: create implementation for the RequestGenerator that
will be able to get stored requests from the DB and generate them to
the users.
See sub-tasks:
Superceded by tasks:
2. Task ID: 2
Title: create DBMovement class.
Est Starting Date: 3/4
Actual Starting Date:
Est Finish Date: 10/4
Actual Finish Date:
Description: create implementation for the PathGenerator that will be
able to get stored locations from the DB and generate them to the
users.
See sub-tasks:
Superceded by tasks:
3. Task ID: 3
Title: MIT movement conversion
Est Starting Date: 10/4
Actual Starting Date:
Est Finish Date: 17/4
Actual Finish Date:
Description: convert the DB of movement from MIT to fit the DB of
the simulation.
See sub-tasks:
Superceded by tasks: 2
4. Task ID: 4
Title: store statistical data from GUI graphs
Est Starting Date: 1/5
Actual Starting Date:
Est Finish Date: 8/5
Actual Finish Date:
Description: create tables to store statistical data from the GUI graphs
and write functions to store it.
See sub-tasks:
Superceded by tasks: creation of the GUI
5. Task ID: 5
Title: run configuration file multiple times.
Est Starting Date: 17/4
Actual Starting Date:
Est Finish Date: 24/4
Actual Finish Date:
Description: enable the simulator to run the same configuration file
multiple times.
See sub-tasks:
Superceded by tasks:
6. Task ID: 6
Title: run batch of configuration files.
Est Starting Date: 17/4
Actual Starting Date:
Est Finish Date: 24/4
Actual Finish Date:
Description: enable the simulator to run a pre-configured batch of
configuration files multiple times.
See sub-tasks:
Superceded by tasks:
7. Task ID: 7
Title: add incomings calculations.
Est Starting Date: 24/4
Actual Starting Date:
Est Finish Date: 1/5
Actual Finish Date:
Description: add the simulator the ability to calculate profits from the
system.
See sub-tasks:
Superceded by tasks: depends if we will receive the proper
specification.
8. Task ID: 8
Title: add user's propagation.
Est Starting Date: 24/4
Actual Starting Date:
Est Finish Date: 1/5
Actual Finish Date:
Description: add the ability for users to propagate the system to other
non active users.
See sub-tasks:
Superceded by tasks: depends if we will receive the proper
specification.
Download