A Domain-Specific Language (DSL) for defining and validating quality attributes based on ISO 25010 standards, implemented in TypeScript.
This DSL allows you to define quality attributes for systems using ISO 25010 categories, specify stimulus-response scenarios for quality requirements, validate semantic correctness and ISO 25010 compliance, and generate structured representations of quality specifications.
The system is built with TypeScript and provides:
- Complete ISO 25010 Support: All 8 main categories with valid subcategories
- Semantic Validation: Ensures required fields and correct category usage
- Extensible Grammar: Clean, readable syntax for quality specifications
- Multiple Output Formats: Text and JSON output options
- Error Reporting: Detailed validation errors and warnings
- Visualization: Canvas-based visualization of quality attributes
No external dependencies required. Just clone and run with Node.js 12+:
git clone https://github.com/LePeanutButter/qify
cd qifyimport { DSLParser } from "./src/core/domain/dsl/services/DSLParser";
import { ErrorHandler } from "./src/core/shared/utils/error-handler";
// Parse DSL text
const dslText = `
system Ecommerce
attribute PerformanceCheckout {
artifact: "CheckoutService",
category: PerformanceEfficiency.TimeBehaviour,
source: "external user",
stimulus: "1000 concurrent users",
environment: "peak hours",
response: "response time < 2s",
measure: "latency percentile p95"
}
`;
const parser = new DSLParser();
const result = parser.parseDSL(dslText);
if (result.errors.length > 0) {
console.log("Parse errors:", result.errors);
} else {
console.log("Valid DSL!");
console.log("Program:", result.program);
}The main parser class for processing DSL text.
class DSLParser {
parseDSL(dslText: string): ParseResult;
validateProgram(program: DSLProgram): ValidationResult;
}Centralized error handling utility.
class ErrorHandler {
handleError(
error: Error | string,
context: ErrorContext,
options?: ErrorOptions,
): AppError;
getErrorStats(): ErrorStats;
}Structured logging utility.
class Logger {
debug(category: string, message: string, data?: unknown): void;
info(category: string, message: string, data?: unknown): void;
warn(category: string, message: string, data?: unknown): void;
error(category: string, message: string, error?: Error, data?: unknown): void;
fatal(category: string, message: string, error?: Error, data?: unknown): void;
}system Ecommerce
attribute PerformanceCheckout {
artifact: "CheckoutService",
category: PerformanceEfficiency.TimeBehaviour,
source: "external user",
stimulus: "1000 concurrent users",
environment: "peak hours",
response: "response time < 2s",
measure: "latency percentile p95"
}
system Ecommerce
attribute PerformanceCheckout {
artifact: "CheckoutService",
category: PerformanceEfficiency.TimeBehaviour,
source: "external user",
stimulus: "1000 concurrent users",
environment: "peak hours",
response: "response time < 2s",
measure: "latency percentile p95"
}
attribute AvailabilityPayments {
artifact: "PaymentGateway",
category: Reliability.Availability,
source: "system monitoring",
stimulus: "server failure",
environment: "production",
response: "failover in < 5s",
measure: "downtime < 1%"
}
FunctionalCompleteness- Degree to which the set of functions covers all specified tasksFunctionalCorrectness- Degree to which a product provides accurate resultsFunctionalAppropriateness- Degree to which functions facilitate task completion
TimeBehaviour- Degree to which response time and throughput meet requirementsResourceUtilization- Degree to which resource amounts and types meet requirementsCapacity- Degree to which maximum limits of parameters meet requirements
CoExistence- Degree to which product performs efficiently while sharing environmentInteroperability- Degree to which system can exchange and use information
AppropriatenessRecognizability- Degree to which users can recognize appropriatenessLearnability- Degree to which functions can be learned within specified timeOperability- Degree to which product has attributes that make it easy to operateUserErrorProtection- Degree to which system prevents operation errorsUserEngagement- Degree to which interface encourages continued interactionInclusivity- Degree to which product can be used by people of various backgroundsUserAssistance- Degree to which product can be used by widest range of usersSelfDescriptiveness- Degree to which product presents appropriate information
Faultlessness- Degree to which system performs functions without faultAvailability- Degree to which system is operational and accessible when requiredFaultTolerance- Degree to which system operates despite hardware/software faultsRecoverability- Degree to which system can recover data and re-establish desired state
Confidentiality- Degree to which data are accessible only to authorized usersIntegrity- Degree to which system and data are protected from unauthorized modificationNonRepudiation- Degree to which actions can be proven to have taken placeAccountability- Degree to which actions can be traced uniquely to the entityAuthenticity- Degree to which identity can be proved to be the one claimedResistance- Degree to which product sustains operations while under attack
Modularity- Degree to which system is composed of discrete componentsReusability- Degree to which product can be used in more than one systemAnalysability- Degree to which impact of changes can be assessed effectivelyModifiability- Degree to which product can be modified without introducing defectsTestability- Degree to which test criteria can be established and tests performed
Adaptability- Degree to which product can be adapted to different environmentsScalability- Degree to which product can handle growing/shrinking workloadsInstallability- Degree to which product can be successfully installed/uninstalledReplaceability- Degree to which product can replace another for same purpose
OperationalConstraint- Degree to which product constrains operation within safe parametersRiskIdentification- Degree to which product can identify unacceptable risksFailSafe- Degree to which product can place itself in safe operating modeHazardWarning- Degree to which product provides warnings of unacceptable risksSafeIntegration- Degree to which product maintains safety during integration
- Clone the repository
- Install dependencies:
npm install - Build the project:
npm run build - Run tests:
npm test - Start development:
npm run dev
├── src/
│ ├── core/
│ │ ├── domain/
│ │ │ ├── dsl/
│ │ │ │ ├── entities/ # DSL entities and interfaces
│ │ │ │ └── services/ # DSL parsing and validation services
│ │ │ └── visualization/
│ │ │ ├── entities/ # Visualization entities
│ │ │ └── services/ # Visualization services
│ │ └── shared/
│ │ ├── utils/ # Shared utilities (logger, error handler)
│ │ └── types/ # Shared type definitions
│ ├── main.ts # Main entry point
│ └── test/ # Test files
├── dist/ # Compiled JavaScript output
├── package.json # Node.js package configuration
└── README.md # This documentation
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
- Commercial Use: Yes
- Modification: Yes
- Distribution: Yes
- Private Use: Yes
- Liability: No
- Warranty: No
© 2026 LePeanutButter. All rights reserved.