The first subject for my reverse modeling is Twitter.
Higher requirements
There are three major types of actors in Twitter: user (unregistered or registered), advertiser, and administrator. Thus I organized higher requirements of this system by the types of user.
To limit the number of subsequent works, I omitted several functions from the scope (strikethrough).
-
User
- All users can:
- create account if they meet the age restriction
- view specific user’s
- profile
- “Tweets” tab
- “Tweets & replies” tab
- view specific tweet page
“You might like” cardWhat’s happening card- use “Explore”
- search
- user by
- name
- username
- tweet by
- keyword
- hashtag
- user by
- search
- Registered user can log in
- Logged-in user can:
- visit “Home” to see Timeline
- post new tweet
- act on specific tweet:
- reply
- retweet
- send like
- report
- act on specific user:
- follow
- add to list
- mute
- block
- act on “Lists”
- create
- view
- edit
- delete
- act on hashtag
- create
- use the existing one
- view tweets that use the same one
- view “Notification”
- who mentioned them
- who liked their tweets
- who retweeted their tweets
- act on “Messages”:
- send messages to specific user
- view received messages
- act on “Profile”:
- view
- update
- Name
Bio- Birth date
- delete
- act on account info
- update
- username
- password
- update
- view specific user’s
“Media” tab- “Likes” tab
- All users can:
-
Advertisers serve ads to users based on attributes such as
- gender
- language
- geographic coverage
- keywords
- interests
-
Administrator can activate/inactivate a specific registered user
Using the requirements listed above, I’ll create the initial domain model.
Nouns used in the higher requirements
They are the candidates of classes:
- Actor
- User
- Unregistered
- Regestered
- Advertiser
- Administrator
- User
- User attributes
- gender
- language
- geographic coverage
- keyword
- interest
- Age restriction
- Profile
- Tweet
- Ads
- Timeline
- Like
- List
- Message
Domain model diagram created
After the initial domain modeling session, I’ve got a diagram below:
This diagram is incomplete, messed up, and may (must) even contain mistakes! But I will correct these problems during subsequent steps of ICONIX process.