Consider the following actions which might be performed by a developer when creating a new piece of software to solve a problem.
1. Thoroughly testing code with a variety of inputs
2. Designing an algorithm to tackle the central problem the program hopes to solve
3. Considering what outputs a program solving the problem might produce and what inputs it may require to do this
4. Writing code in a high-level programming language to implement an algorithm
In which order in the development cycle would these actions first appear?
A. 3, 2, 4, 1
B. 2, 4, 1, 3
C. 2, 3, 4, 1
D. 3, 4, 1, 2