Setting System Boundaries

One of the first major considerations you face when constructing a computer system is determining what the system boundaries are. In determining system boundaries you will be deciding what things fall within the scope of the system you are building and what things are outside that scope. In addition, if you identify functionality that lies outside the scope of your system, you should at least give some thought to the systems that will implement that functionality and how your system will interface with those external systems.

System boundaries for the TaskRabbit system

I am going to place two important aspects of your business outside the bounds of the system you are constructing to run the business.

The first of these is a customer invoicing/payment system. In the TaskRabbit business, when a job is successfully concluded to the satisfaction of the customer who posted it, the TaskRunner system will have to bill the customer for the job. In an actual business this would involve somehow presenting the customer with an invoice detailing the services rendered and the previously agreed-upon price for that service. After the customer receives the invoice, they will have to send in payment by some appropriate means (check by mail, PayPal, credit card details entered online, etc.) and their account will have to be properly credited. In the system you construct, all of these details will fall outside the scope of your system. The only thing your system will have to provide is something like a table of invoices in your database into which invoice data will be dropped at the conclusion of a task. Eventually, someone would have to come along and build an appropriate system for handling the invoices and the payments.

The second element I am going to declare beyond the scope of your system is a system to handle payroll for the runners. When a task is concluded successfully, the TaskRabbit system will deduct the business's cut from the payment and the remainder will go to the runner's account. Eventually, someone will have to come along and build a payroll system that delivers paychecks to the runners. That system would have to take care of details such as deducting payroll taxes and making sure that runners get paid on a regular schedule. That system would also have to somehow generate payroll checks or direct deposit transfers. All of this will be outside the bounds of your system. The only thing that your system will have to provide is some sort of table into which we can dump credits for tasks completed by the runners.