Create README.md

This commit is contained in:
Daniel
2024-04-02 23:19:16 +03:00
committed by GitHub
parent cab0263c81
commit d2680c0960

60
README.md Normal file
View File

@@ -0,0 +1,60 @@
# Winx: Software Specification Language
Welcome to Winx, a powerful language for defining software specifications in a clear and structured manner. This README provides an overview of Winx and its features.
## Overview
Winx is a domain-specific language (DSL) specifically designed for writing software specifications. It offers a concise syntax for describing both functional and non-functional requirements, interfaces, packages, and more.
## Key Features
### Clear Syntax
- Winx provides a clean and easy-to-understand syntax for defining various elements of software specifications.
### Hierarchical Structure
- Specifications can be organized hierarchically into packages, interfaces, and specifications, providing a clear structure for complex software systems.
### Non-Functional Requirements
- Winx allows you to define non-functional requirements such as performance, security, and reliability constraints using clear and concise syntax.
### Functional Requirements
- You can specify functional requirements, including input parameters, output types, and implementation details, using intuitive syntax.
### Importance Levels
- Winx supports specifying the importance level of requirements, allowing you to prioritize critical functionalities over optional ones.
### Access Modifiers
- Access modifiers such as `public`, `protected`, `private`, and `default` can be applied to interfaces and functions, enabling fine-grained control over visibility and accessibility.
### Comments
- Winx supports both single-line and block comments, helping you document your specifications effectively.
## Example
```winx
package Database {
interface Database {
public GetUserList(FLOAT[] x, STRING ag) {
@ExecTime: "10s";
@MaxReturnVals: "10s";
return INT x;
}
}
specification DatabaseAccess implements Database {
critical DatabaseAccessMember {
optional @UserHasAdminAccess;
critical @UserIsNotBanned;
result optional DatabaseAdminPanel;
result critical DatabaseVisualizerPanel;
result Clock;
}
public GetUserList(FLOAT[] x, STRING ag) implements DatabaseAccessImpl {
@ExecTime: "10s";
@MaxReturnVals: "10s";
return INT x;
}
}
}
```