Locking and concurrency
Difficult topic due to many complex demands
Concurrency can be handled through
- individual versions, read and write protocols and version merging (optimistic concurrency)
- explicit locks (pessimistic concurrency)
- awareness indications (cursors, pointers) and information sharing of objects (concurrent editing)
strategies not exclusive but can be used also simultaneously
locking should be implicit and intuitively clear for the user
locking should anticipate users behavior and reflect his/ her typical task patterns