Skip to content

ReqSmith generates source code from requirement model and predefined building blocks (design patters, generic use cases, etc.)

License

Notifications You must be signed in to change notification settings

kovihome/ReqSmith

Repository files navigation

ReqSmith

Release Java 17+ License

A development system to build applications from requirements

ReqSmith is a developer tool that enables users to:

  1. Model user requirements that describe the behavior and functionality of an application.
  2. Automatically generate source code based on the requirements.
  3. Leverage pre-built building blocks, which are modular components that include software design patterns, best practices and predefined solutions, along with requirements and generators.
ℹ️ Important Notice:
ReqSmith is in its proof-of-concept state.
While we've taken the first steps toward building a revolutionary application development tool, it’s not fully functional yet. This is just the beginning of a journey to create a platform that generates complete, high-quality source code based on user requirements for any programming language or framework.

To achieve the full potential of ReqSmith, we need your help! Here's how you can contribute:
  • Donate: Help support development and bring ReqSmith closer to a fully functional version. Every contribution, big or small, helps us move faster.
  • Contribute: Join the development effort by contributing code, plugins, modules, or documentation. Check out the Contributing Guide for details.

Features

  • Separating application planning and implementation:
    ReqSmith separates application planning and implementation by using a structured, model-driven approach. Instead of writing code directly, developers first define system requirements using the ReqM modeling language; then ReqSmith compose the requirement model with building blocks from the ReqSmith Repository into a complete the model.
    This model is still independent of any programming language or framework.

    Once the effective requirement model is created, ReqSmith’s Generator engine interprets the model and generates source code using generator plugins. These plugins handle the translation from abstract requirements into concrete implementations for different languages and frameworks. This approach ensures that planning remains technology-agnostic, while implementation is handled flexibly based on the chosen tech stack.

  • Convention over Configuration:
    In the context of ReqSmith, convention over configuration means that the system relies on well-defined defaults and standardized modeling practices to reduce the need for manual setup and customization. Instead of requiring developers to configure every detail explicitly, ReqSmith automates code generation based on conventional requirement structures.

  • Requirement modeling:
    ReqSmith provides an intuitive, easy-to-learn language (ReqM) that allows users to easily define and document application requirements in an abstract, consistent, verifiable and testable manner. Requirements can be incomplete or partially defined.

  • Requirement composing:
    To complete requirements ReqSmith gather missing information from its extended repository, and composes them into an effective requirement model, which is the basis of the code generation.

  • Modular Building Blocks:
    ReqSmith repository contains modular building blocks for fulfillment of the requirements. These building blocks represent software design patters, best practices or user experiences, and are defined in the requirement model too.

  • Source Code Generation:
    The tool automatically generates essential source code for applications based on the requirement model. The source code can be generated for any of popular programming language, platform and frameworks, using code generator plugins. Custom generators allow users to create their own functionalities.

  • Incremental development: In every stage of the requirement specification the application can be built and tested, so prototype application can be examined as early as You need. Requirements can be added to the ReqM model one by one, providing a better control of the development progress.

Useful information

Contribution

We welcome any type of community contributions, including:

  • Opinions, critics, useful comments
  • Testing ReqSmith capabilities
  • Create more realistic examples
  • Write application code, especially plugins

If you want to help ReqSmith development, please visit Contribution page for details.

Support This Project

If you find this project useful, please consider supporting it:

License

This project is licensed under the GNU GPL V3 License. See the license file for details.

Contact

If you have any questions, feel free to contact us at:

About

ReqSmith generates source code from requirement model and predefined building blocks (design patters, generic use cases, etc.)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages