C++ · Advanced level

Advanced level · Module 6: C++ Capstone Project · Lesson 1 of 5

Capstone Requirements and Design

Define the input format, outputs and quality requirements, then design the library and command-line interface.

In this lesson you will

  • Specify inputs, outputs and non-functional requirements
  • Design the library API and the CLI

Key concepts

data format specificationnon-functional requirementlibrary APIcommand-line interface

The lesson

Write down the log format precisely — field order, types, units and what counts as invalid — and the reports the tool must produce. Ambiguities found now are cheap to resolve.

Non-functional requirements matter for this tool: it must run on old laptops with limited memory, finish a month of data within a stated time and never crash on a malformed line.

Design a small library API (parse, validate, summarise, report) and a CLI on top of it with clear options such as --input, --output and --threads.

Step by step

  1. Write the data format specification.
  2. List functional and non-functional requirements.
  3. Design the library functions and types.
  4. Design the CLI options and usage text.

Practice activity

Submit the specification and design for milestone 1.

Expected result: An approved specification with measurable non-functional requirements.

Check your understanding

  1. Give an example of a non-functional requirement for this tool.

    Show answer

    For example: process a month of data in under a stated time on a given laptop.

  2. Why build the CLI on top of a library?

    Show answer

    So the logic can be tested and reused independently of the command line.

Taught live by an instructor — online or in person. Free course lessons are for self-study and do not lead to a certificate — see registration options.