ReqSmith is a developer tool that enables users to:
- Model user requirements that describe the behavior and functionality of an application.
- Automatically generate source code based on the requirements.
- 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:
|
-
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.
- Installation
- Getting started with ReqSmith
- Documentation (on wiki pages)
- Release notes
- FAQ
- For developers
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.
If you find this project useful, please consider supporting it:
This project is licensed under the GNU GPL V3 License. See the license file for details.
If you have any questions, feel free to contact us at:
- Email: kovihome86@gmail.com
- GitHub Issues: Issues Page