Quality Attributes

The Frege IDE’s architecture should satisfy the following quality attributes, also known as non-functional requirements, listed from highest to lowest priority.

Interoperability

One Frege IDE version must be usable with multiple different text editor products, as shown in Figure 1. If each text editor requires its own Frege IDE, the interoperability attribute is not satisfied, which is shown in Figure 2.

Interoperability: Multiple text editors can use the same Frege IDE.
Figure 1. Interoperability: Multiple text editors can use the same Frege IDE.
No Interoperability: One Frege IDE for each text editor.
Figure 2. No Interoperability: One Frege IDE for each text editor.

Usability

The Frege IDE should follow a convention over configuration approach so that it works out of the box or with minimal configuration.

Besides, it should not only support single-file language smarts but also be cross-file workspace/project aware.

Maintainability

As mentioned in the Functional Overview page, there are many different language features. Therefore, the architecture should make it easy to add, remove, change and test a single language feature.

Maintainability Checklist

  • Analyzability: how easy or difficult is it to identify bugs and map them to the source code location?

  • Changeability: how easy or difficult is it to change the code?

  • Stability: how easy or difficult is it to keep the system stable when changing it?

  • Testability: how easy or difficult is it to test the system after a change?

Installability

The Frege IDE must be installable and runnable on Linux, MacOS and Windows.

Performance

All language feature requests should be answered on average within one second if both the text editor and the Frege IDE run on the same machine.

Fault Tolerance and Resilience

All errors should be logged.

Internationalization and Localization

All user interfaces will only be available in English.