Responsibilities include ensuring technical coherence of application development life cycle, mitigating risk with chosen technical approaches and ensuring performance, scalability, and extensibility of design