Concepts can be designed and understood entirely independently of one another, even if eventually they will be composed with other concepts in a larger application context. Designing and evaluating individual concepts is thus an important skill.
In this exercise, you’ll define concepts for some standard behaviors that you are likely to be familiar with. For each one, you should provide all the standard elements of a concept (name, purpose, operational principle, state and actions), along with some succinct notes describing any common variations, or pointing to subtleties in the concept. Also, for each concept you should list also some other concepts that are commonly found with it (giving each a name and a few words describing it, but not a full concept definition).
URL Shortener
Define a concept for the essential function of a URL shortening service such as tinyurl.com or bit.ly. Your concept should support both user-defined and autogenerated URL suffixes.
Billable Hours Tracking
Many companies that bill clients for work by the hour use tracking software to help automate record keeping. Define a concept that handles the core functionality. Assume that, in the application that uses this concept, an employee marks the beginning of a session by selecting a project and entering a string describing the work to be done, and then marks the end of the session with another interaction. Think about how to handle a case in which someone forgets to end a session.
Conference Room Booking
Define a concept for the essential function of a service for booking conference rooms in a company or university department, like CSAIL’s room booking system. Note: you do not need to include recurring bookings.
Electronic Boarding Pass
Define a concept for the essential function of the kind of electronic boarding pass that airlines typically provide, which can be inserted into a digital wallet on a phone, and which is updated in realtime to reflect new gate assignments and modified departure times. Here is an article about creating boarding passes using Apple’s Passkit API which might be helpful, but note that it does not cover the functionality in full and includes many user interface details that are not conceptual.
Address Verification
A variety of applications use address verification, in which the identity of a user is authenticated by asking them to provide some or all of their mailing address. For example, online credit card transactions typically require that the user enter a full address; gas station purchases with credit cards often ask users to enter their zipcode; the NextDoor social network obtains the billing address record associated with a user’s phone number to ensure that they are within the catchment area of a particular forum.
Define address verification as a concept, bearing in mind that the concept is inherently distributed: it involves actions performed at different locations by different stakeholders, and its state may not be stored at the location at which the action is performed.
Time-Based One-Time Password (TOTP)
Multifactor authentication schemes improve on simple password-only schemes. One common scheme uses an app that runs on the user’s phone (or computer) that generates time-based tokens that are then entered by the user as part of the authentication process. Define a concept for this that captures the essential behaviors. Note that you should not dwell on the actual cryptographic functions that are used to generate tokens, but should just assume them in your concept action definitions. Pay particular attention to the concept’s purpose, and include some additional explanation of the respects in which the concept actually improves security (and what kinds of attacks it still leaves open).