We propose a new practice for the instruction of problem-solving skills: the Analysis-Design-Justification (ADJ) framework. The ADJ framework consists of learning outcomes which represent problem-solving skills, a type of problems to assess those outcomes, and a three-step process for problem-solving. Problems are open-ended and ill-defined, like those in the real world. Although there are several approaches to instructing problem-solving, ADJ supports a course environment with four specific requirements: established syllabi (ADJ may be added to a class already covering many topics), scale (ADJ can handle large classes), modality (ADJ can be performed synchronously and asynchronously), and heterogeneity (ADJ helps to provide scaffolding for diverse student populations). This framework takes inspiration from Polya's problem-solving process and uses the theoretical foundations underlying Problem-based Learning (PBL). The ADJ framework was enacted in the fall 2019 section of a Software Engineering (SE) class on operating-systems at Arizona State University (ASU). In the class, students were introduced to the ADJ framework through a series of group activities, and then asked to solve three ADJ problem sets. Students responded positively to use of the ADJ framework as both an instructional tool for class material, and to mature their problem-solving skills. However, some students had issues carrying out the ADJ process due to its focus on justification as opposed to constructing designs.