A software architect develops and implements the structure of software systems, namely the software architecture. He is responsible for the requirement-compliant development and further development of individual architecture components and makes fundamental decisions regarding their interaction. He always considers the structure as a whole and a number of applications. He thus looks at the system from a more abstract perspective than a programmer does, paying attention to the non-functional characteristics of software quality such as the ability to be modified and maintained, security and performance. His function is significant because once it already exists, a software architecture requires a lot of effort and expense to change. The decision regarding its structure is thus one of the most critical and important points in the development process of any software. Due to the broadly defined nature of his tasks, the software architecture has many interfaces to the software developer and software test engineer.
Tools & methods for software architecture
UML, Rhapsody, AUTOSAR, ASPICE etc.