Domain Specific Software Engineering (DSSE)
Domain Specific Software Engineering (DSSE) believes that creating every application from nothing is not advantageous when existing systems can be leveraged to create the same application in less time and with less cost. This belief is founded in the idea that forcing applications to recreate exiting functionality is unnecessary. Why would we build a better wheel when we already have four really good and proven wheels? DSSE suggest that we take an existing wheel and just modify it to fit an existing need of a system. This allows developers to leverage existing codebases so that more time and expense are focused on creating more usable functionality compared to just creating more functionality. As an example, how many functions do we need to create to send an email when one can be created and used by all other applications within the existing domain?
Key Factors of DSSE
Domain
Technology
Business
A Domain in DSSE is used to control the problem space for a project. This control allows for applications to be developed within specific constrains that focus development is to a specific direction.Technology in DSSE offers a variety of technological solutions to be applied within a domain.
Technology Examples:
Tools
Patterns
Architectures & Styles
Legacy Systems
Business is the motivator for any originations to use DSSE in there software development process.
Business reason to use DSSE:
Minimize Costs
Maximize market and Profits
When these factors are used in combination additional factors and benefits can be found.
Result of combining Key Factors of DSSE
Domain + Business = Corporate Core Competencies
Domain expertise improved by market and business expertise
Domain + Technology = Application Family Architectures
All possible technological solutions to problems in a domain without any business constraints.
Business + Technology = Domain independent infrastructure
Tools and techniques for building systems independent of all domains
Domain + Business + Technology = Domain-specific software engineering
Applies technology to domain related goals in the context of business and market expertise