Changes between Version 9 and Version 10 of BluePrint/Mobile/P2PSync


Ignore:
Timestamp:
05/29/17 15:23:08 (7 years ago)
Author:
MichaelRogers
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BluePrint/Mobile/P2PSync

    v9 v10  
    33
    44== Introduction ==
    5 Peer-to-peer sync will enable [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines/EdenMobile EdenMobile] users to synchronize data between their devices without connecting to a server. This will allow mobile users to operate and collaborate more easily in areas where internet access is unreliable or unavailable.
     5Peer-to-peer sync will enable [http://eden.sahanafoundation.org/wiki/DeveloperGuidelines/EdenMobile EdenMobile] users to synchronize data between mobile devices without connecting to a server. This will allow users to operate and collaborate more easily in areas where internet access is unreliable or unavailable.
    66
    7 Peer-to-peer sync capabilities exist in [http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmesh:main_page Serval Mesh] and a number of messaging apps including [https://briarproject.org/ Briar], [https://github.com/casific/murmur Murmur] and [http://whispercomm.org/shout/ Anonymouse].
     7Peer-to-peer sync capabilities exist in [http://developer.servalproject.org/dokuwiki/doku.php?id=content:servalmesh:main_page Serval Mesh] and several messaging apps including [https://briarproject.org/ Briar], [https://github.com/casific/murmur Murmur] and [http://whispercomm.org/shout/ Anonymouse].
     8
    89== Stakeholders ==
    9 !EdenMobile users are the primary stakeholders - they will be able to use P2P sync to share data with each other. The data subjects will also be stakeholders, and appropriate data handling controls to protect the confidentiality, integrity and authenticity of data must be built in. If the server needs to be aware of P2P sync, for example in order to deduplicate data received from mobile clients, then the people deploying and operating the server will also be stakeholders.
     10!EdenMobile users will be the primary stakeholders. The data subjects will also be stakeholders, and appropriate access controls to protect the confidentiality, integrity and authenticity of data must be built in. Trainers who teach !EdenMobile users how to use the application will need to be aware of the new functionality. If the data being synchronized is ultimately delivered to a server then the people deploying and operating the server will also be stakeholders.
     11
    1012== User Stories ==
    11 [https://code.briarproject.org/akwizgran/briar/uploads/655c21456bbc36a83193bdb5e0473f07/SahanaEDENBrambleProjectUseCases.odt User stories]
     13[https://code.briarproject.org/akwizgran/briar/uploads/655c21456bbc36a83193bdb5e0473f07/SahanaEDENBrambleProjectUseCases.odt User stories document]
     14
    1215== Requirements ==
    1316
     
    1720
    1821===== 1.1. Peer visibility =====
    19 
    2022The P2P sync component '''must''' be able to make the device it is running on visible to nearby devices in order to establish a peer relationship.
    2123
    2224===== 1.2. Peer discovery =====
    23 
    2425The P2P sync component '''must''' be able to discover nearby devices that have made themselves visible.
    2526
    2627===== 1.3. Peer selection =====
    27 
    2828When peers have been discovered, the P2P sync component '''must''' allow the user to choose a device to establish a peer relationship with.
    2929
    3030===== 1.4. Peer authentication =====
    31 
    32 When the user has chosen a device to peer with, the P2P sync component '''must''' allow the user to authenticate the peer before granting the peer access to any resources. The P2P sync component '''may''' allow the user to continue without authenticating the peer.
     31When the user has chosen a device to peer with, the P2P sync component '''must''' allow the user to authenticate the peer before granting the peer access to any data. The P2P sync component '''may''' allow the user to continue without authenticating the peer.
    3332
    3433===== 1.5. Peer persistence =====
    35 
    36 When a peer has been authenticated, the P2P sync component '''may''' allow the user to store information about the peer, including information that will allow the peer to be authenticated automatically during subsequent connections. If information about a peer has been stored, the P2P sync component '''must''' allow the user to revoke the peer's access to resources.
     34When a peer has been authenticated, the P2P sync component '''may''' allow the user to store information about the peer, including information that will allow the peer to be authenticated automatically during subsequent connections. If information about a peer has been stored, the P2P sync component '''must''' allow the user to revoke the peer's access to data.
    3735
    3836==== 2. Destination servers ====
    3937
    4038===== 2.1. Destination server configuration =====
    41 
    42 The P2P sync component '''may''' allow the user or an administrator to enter the details of a '''destination server''' for the data being synchronized.
     39The P2P sync component '''may''' allow the user or an administrator to enter the details of a '''destination server''' for the data being synchronized. If a destination server has been configured, the P2P sync component '''may''' deliver data to the server automatically when internet access is available.
    4340
    4441==== 3. Data synchronization ====
    4542
    4643===== 3.1. Data selection =====
    47 
    4844The P2P sync component '''may''' allow the user to choose which data to synchronize, either with peers in general or with each specific peer. When data is received from a peer, the P2P sync component '''may''' automatically choose it for synchronization with other peers.
    4945
    5046===== 3.2. Data deletion =====
    51 
    52 The P2P sync component '''may''' allow the user to delete data from the device, regardless of whether that data has been chosen for synchronization. The P2P sync component '''may''' automatically delete data that has been received from peers, for example on receiving confirmation that the data has been delivered to a destination server.
     47The P2P sync component '''must''' allow the user to delete data from the device, regardless of whether that data has been chosen for synchronization. The P2P sync component '''may''' automatically delete data that has been received from peers, for example on receiving confirmation that the data has been delivered to a destination server.
    5348
    5449==== 4. Managing conflicts ====
    5550
    5651===== 4.1. Conflict detection =====
    57 
    58 The P2P sync component '''must''' assign an identifier to each item of data chosen for synchronization, such that two peer devices performing synchronization can tell whether they are using the same identifier to refer to different data.
     52The P2P sync component '''must''' assign an identifier to each item of data chosen for synchronization, such that two peer devices performing synchronization can tell whether they are using the same identifier to refer to the same data.
    5953
    6054===== 4.2. Conflict resolution =====
     55If a conflict is detected during synchronization, the P2P sync component '''may''' resolve the conflict automatically, either by merging the conflicting items or by assigning them distinct identifiers. If a conflict cannot be resolved automatically, the P2P sync component '''must''' be able to continue synchronizing other items with the peer. The P2P sync component '''may''' inform the user of conflicts that cannot be resolved automatically.
    6156
    62 When a conflict is detected during synchronization, the P2P sync component '''may''' resolve the conflict automatically, either by merging the conflicting items or by assigning them distinct identifiers. If a conflict cannot be resolved automatically, the P2P sync component '''must''' be able to continue synchronizing other items with the peer. The P2P sync component '''may''' inform the user of conflicts that cannot be resolved automatically.
    63 === Non-functional ===
    64 http://en.wikipedia.org/wiki/Non-functional_requirements
     57=== Non-functional requirements ===
     58
     59==== 1. Security ====
     60
     61===== 1.1. Protection of data in transit =====
     62The P2P sync component '''must''' ensure the confidentiality, integrity and authenticity of data in transit between peers. If a destination server has been configured, the P2P sync component '''must''' ensure the confidentiality, integrity and authenticity of data in transit between mobile devices and the destination server.
     63
     64===== 1.2. Protection of data at rest =====
     65The P2P sync component '''must''' ensure the confidentiality, integrity and authenticity of data at rest on mobile devices, to at least the same level of protection as other components of the !EdenMobile application.
     66
     67===== 1.3. Access control =====
     68The P2P sync component '''must''' authenticate peers, or allow the user to authenticate them, before granting them access to data. If a destination server has been configured, the P2P sync component '''must''' authenticate the destination server before granting it access to data. If a delivery confirmation from a destination server is received, either directly from the server itself or from a peer, the P2P sync component '''must''' authenticate the delivery confirmation before acting on it or synchronizing it with peers.
     69
     70==== 2. Performance ====
     71
     72===== 2.1. Power efficiency =====
     73The P2P sync component '''must not''' significantly reduce the battery life of the device when P2P sync is not being used.
     74
     75===== 2.2. Network efficiency =====
     76The P2P sync component '''must not''' significantly increase the mobile data usage of the device, regardless of whether P2P sync is being used.
     77
    6578=== Interoperability ===
     79For each deployment, the same version of the !EdenMobile app will be used for all mobile devices, which should minimize interoperability issues. The protocols used between peers, and between mobile devices and the destination server, should use version negotiation so that any interoperability issues are detected as early as possible. Interoperability with other applications is not required.
     80
    6681=== Standards ===
     82Communication between mobile devices and the destination server should use HTTPS.
     83
    6784=== System Constraints ===
    6885
    6986== Design ==
    7087<Where relevant include alternative design options>
     88
    7189=== Data Model ===
    7290(e.g. EER or class diagrams)
     91
    7392=== Workflows ===
    7493<Diagrams or Pseudocode>
     94
    7595=== Site Map ===
    7696<for User Interface solutions>
     97
    7798=== Wireframes ===
    7899<for User Interface solutions>
     100
    79101=== Technologies ===
    80102