Identify, document and be responsible for the design drivers for the software solution e.g. real-time performance, safety, security, user experience, simplicity, reusability, flexibility.
Produce derived and emergent requirements capturing the assumptions and rationale.
Define the architecture to a point where the implementation decisions do not affect the integrity of the architecture.