Software Design, Test, and Validation


Owner: Dr Jonathan Graham-Harper-Cater
Number of students: 2
Formative Deadline: Friday W22

Learning Outcomes

Attaining this skill represents that you can:

  • Analyse complex engineering problems and decompose them into smaller, testable components and data structures.
  • Produce clear software designs, including flow diagrams and detailed function specifications with defined arguments and return values.
  • Plan and document a robust testing strategy that covers normal operation, boundary conditions, edge cases, and error handling.
  • Create structured test specifications with unique identifiers, defined inputs, expected results, and explicit pass/fail criteria.
  • Validate that implemented code meets the original design and functional requirements through systematic testing.
  • Communicate design decisions and test outcomes clearly so that another competent engineer can implement and verify the solution.

Knowledge Requirements

Complete the knowledge sections of P2.05 and P2.06 and then answer the software design, test and validation Moodle quiz.

Application Requirements

Complete the application sections of P2.05 and P2.06 and then create a page that contains the following elements for these labs:

  1. A brief definition of the problem being solved (50-100 words).
  2. Both flow diagrams and UML diagrams to describe the code flow and data structures needed to solve the problem. This should be suitably details for a competent engineer to come in and create your solution according to your design.
  3. A defined and Comprehensive test plan (and associated test table) to verify that the solution is working as expected - including edge cases, exceptional scenarios and nominal operation.
  4. A brief critical reflection on the solution, what worked well and how it might be improved in the future (50-100 words).

Synthesis Requirements

To claim this skill at Synthesis, you should design a program to solve a novel and suitably difficult problem or task. Then create a page section titled ‘Software Design and Validation’ that contains:

  1. A brief definition of the problem being solved (50-100 words).
  2. Both flow diagrams and UML diagrams to describe the code flow and data structures needed to solve the problem. This should be suitably details for a competent engineer to come in and create your solution according to your design.
  3. A defined and Comprehensive test plan (and associated test table) to verify that the solution is working as expected - including edge cases, exceptional scenarios and nominal operation.
  4. A brief critical reflection on the solution, what worked well and how it might be improved in the future (50-100 words).
  5. A justification for why the task required a program to be made - and why Python was a good choice for said solution (50-100 words).

Any synthesis claim for this skill must also include and claim use of the Python Programming skill to be considered. Both skills should be present on the same page and be consistent with one another.

Knowledge Opportunities

Lab P2.05 and P2.06 W21

Application Opportunities

Lab P2.05 and P2.06 W21


Labs Demonstrating This Skill

Labs Contributing Towards This Skill