Skip to content

Commit 91242b3

Browse files
ErikSchierboomglennj
authored andcommitted
Sync the bank-account exercise's docs with the latest data. (exercism#351)
1 parent ccb61d1 commit 91242b3

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
# Instructions
22

3-
Simulate a bank account supporting opening/closing, withdrawals, and deposits of money.
4-
Watch out for concurrent transactions!
3+
Your task is to implement bank accounts supporting opening/closing, withdrawals, and deposits of money.
54

6-
A bank account can be accessed in multiple ways.
7-
Clients can make deposits and withdrawals using the internet, mobile phones, etc.
8-
Shops can charge against the account.
9-
10-
Create an account that can be accessed from multiple threads/processes (terminology depends on your programming language).
5+
As bank accounts can be accessed in many different ways (internet, mobile phones, automatic charges), your bank software must allow accounts to be safely accessed from multiple threads/processes (terminology depends on your programming language) in parallel.
6+
For example, there may be many deposits and withdrawals occurring in parallel; you need to ensure there is no [race conditions][wikipedia] between when you read the account balance and set the new balance.
117

128
It should be possible to close an account; operations against a closed account must fail.
9+
10+
[wikipedia]: https://en.wikipedia.org/wiki/Race_condition#In_software
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Introduction
2+
3+
After years of filling out forms and waiting, you've finally acquired your banking license.
4+
This means you are now officially eligible to open your own bank, hurray!
5+
6+
Your first priority is to get the IT systems up and running.
7+
After a day of hard work, you can already open and close accounts, as well as handle withdrawals and deposits.
8+
9+
Since you couldn't be bothered writing tests, you invite some friends to help test the system.
10+
However, after just five minutes, one of your friends claims they've lost money!
11+
While you're confident your code is bug-free, you start looking through the logs to investigate.
12+
13+
Ah yes, just as you suspected, your friend is at fault!
14+
They shared their test credentials with another friend, and together they conspired to make deposits and withdrawals from the same account _in parallel_.
15+
Who would do such a thing?
16+
17+
While you argue that it's physically _impossible_ for someone to access their account in parallel, your friend smugly notifies you that the banking rules _require_ you to support this.
18+
Thus, no parallel banking support, no go-live signal.
19+
Sighing, you create a mental note to work on this tomorrow.
20+
This will set your launch date back at _least_ one more day, but well...

0 commit comments

Comments
 (0)