The main components of the software architecture are environment, infrastructure, and framework.  Each choice will depend on the business task the given software should solve, the target audience, and the legacy system (if any).