So I came across this post while researching about package structuring for MVC. I just need some clarifications on what a business domain and technical domain are. Examples would be helpful.
Business Domain refers to real-world aspects of your solution (e.g. Healthcare, Aviation, Finance, Military, Retail, etc). The business domain informs your requirements and acceptance criteria for the system; it can be suggestive of a very high-level form of segregation for different areas.
For example, if you happen to be building a solution for a Business' ERP, you might create high-level divisions in your overall system as follows:
- Stock Control
- Customer Support
- IT Helpdesk
I would expect these kinds of divisions to exist at the top level of software - i.e. there's probably not very much cross-over between IT Helpdesk or Stock Control, so it could make sense to keep those separate.
In the question you've linked to, Technical domain refers to technologies used, including patterns and frameworks (e.g. ASP.NET/Ruby on rails, MVC Pattern, etc). These tend to inform specific design choices and architectures for applications or related groups of applications.
Technologies are often suggestive or prescriptive of particular structures - usually used at an application-level rather than the top level.
For example, "MVC" might suggest a project structure for a particular application as follows:
That structure might happen to be mirrored across multiple different applications, or maybe other applications will use different technologies. Ultimately, the Business domain will have some bearing on the choice of technologies used (e.g. "We need a website" or "We're only willing to pay for X"), and may help inform a very high-level structure, but typically not to the degree of dictating technical decisions about design or architecture.