Under general supervision, design, develop, troubleshoot, and analyze software programs for computer-based systems. Perform system modeling, simulation, and analysis. Design and develop compilers, assemblers, utility programs, and operating systems. Provide inputs for documentation of new or existing programs as required.