During project analysis the following requirements have been identified.

  1. Business Requirements
    1. AutoDev should reduce the manual effort required to set up dev envs for software projects.
    2. AutoDev should increase in the adoption of reproducible dev envs across development teams.
  2. Domain Requirements
    1. The flake.nix file generated by AutoDev should contain valid Nix language syntax.
    2. The flake.nix file generated by AutoDev should contain a development shell definition.
    3. The dev env generated by AutoDev should be reproducible across different machines.
  3. Functional Requirements
    1. User Functional Requirements
      1. Main usage
        1. Users should be able to run the command <autodev> /path/to/project to generate a development environment configuration, where <autodev> is a command or list of commands to run AutoDev.
        2. Users should be able to enter the generated environment running the command nix develop.
      2. Advanced usage
        1. Users should be able to list all available models on their machine.
        2. Users should be able to download an available model on their machine if it is not present.
        3. Users should be able to remove an available model on their machine if it is present.
        4. Users should be able to halt the dev env generation.
      3. Customization
        1. Users should be able to define the model to be used by AutoDev for a given run of the tool.
        2. Users should be able to define custom prompts to be used by AutoDev when prompting the LLM model.
      4. Error handling
        1. Users should be allerted when errors occur in execution.
        2. Users should be given tips when for fixing errors when they occur.
    2. System Functional Requirements
      1. AutoDev should use an LLM model to generate the flake.nix file.
      2. AutoDev should define a base prompt engeneering approach applicable to all LLMs.
  4. Non-Functional Requirements
    1. AutoDev should respond within 5 seconds for typical-sized projects.
    2. AutoDev should not alter any files in the user’s environment.
  5. Implementation Requirements
    1. AutoDev should be implemneted as a CLI tool that can be invoked from the terminal.

Placeholder for requirements

Back to index
Previous Chapter
Next Chapter