1. A method comprising: receiving, by a processor, a template corresponding to a general system architecture for providing a desired functionality, specifications of hardware and software available to implement the general system architecture, and specifications of requirements of a particular system architecture for providing the desired functionality; generating, by the processor, the particular system architecture for providing the desired functionality, based on the template and the requirements, the particular system architecture implementable using the hardware and the software; and providing, by the processor, one or more of a logical diagram of the particular system architecture, a physical diagram of the particular system architecture, and a bill of materials of the hardware and the software selected to implement the particular system architecture.