Hello,
Sometimes the ambiguities you are facing can be resolved by starting your analysis with use cases. I have given below an example. See whether it resolves your abiguity.
==============================================
Write uses cases:
1. user -> ( join group )
2. admin -> ( create group )
3. admin -> ( assign owner to group )
==============================================
Identify subsystems: << by grouping related use cases >>
UserAPP (1)
GroupApp (2, 3)
==============================================
Identify services that each app needs:
UserApp
- createPerson()
- getGroups()
- getGroupDetails()
- createMember() << assign person to group >>
GroupApp
- createGroup()
- getMembers()
- getMemberDetails()
- setGroupOwner()
Note: The services are typically identified by writing event flows for each use case.
See
http://www.theserverside.com/pattern...hread_id=17595 for an example.
==============================================
Identify components: << by grouping related services >>
PersonMgr
- createPerson()
GroupMgr
- getGroups()
- getGroupDetails()
- getGroupMembers()
- setGroupOwner()
MemberMgr
- createMember()
- getMembers()
- getMemberDetails()
==============================================
Identify database tables: << on a per-component basis >>
1. The PersonMgr needs a table like:
PERSON [ person_id, person_details ]
2. The GroupMgr component needs tables like:
GROUP [ group_id, group_desc, owner_member_id ]
PERSON_GROUP [ member_id, person_id, group_id ]
3. The MemberMgr component needs a table like:
PERSON_GROUP [ member_id, person_id, group_id ]
==============================================
Nalla