The Guppy Specification Language is an evolving specification language. GSL can describe aspects of a system, especially its API, in a way that can be automatically converted to tests as well as to documents. The documents generated have a formal structure for describing the formal aspects of the specification, complemented with descriptive text from the same source documents. A language that is similar in intent is the Assertion Definition Language .
Specifications written in GSL can be used for:
Documents are generated from a combination of formally described aspects and descriptive text. The formal aspects include specifications of attributes and methods and their parameters and return values. The descriptive text is written together with the formal specifications. It can include HTML tags and attributes, specified in the GSL dotted tree format. Output modules can convert from the GSL form to formats such as HTML or Latex.
The tests generated can check the formal aspects of the specification against an implementation. It can test whether objects have the promised attributes, and then if the kind of attribute is specified it is tested again and so on. Methods are checked to see if they can be called with the forms of parameters specified. The return value can then be checked up to some limit of recursion.
A specification can be compared to a previous specification, to tell according to formalized rules whether or not the new one is backwards compatible with the old one, and if not, in what way they differ. For example, according to such rules, an attribute or parameter type can be added to a specification, but it can not be removed. The idea is that all tests possibly generated from the old specification should still succeed with objects conforming to the new specification. -- A program could likely compare specifications for compatibility automatically, but this is not yet implemented.
GSL has been used to generate the documentation for this Guppy distribution. Some part of the specification has been checked against the implementation using the generated tests, which did reveal some discrepancies that were subsequently corrected.
The documents generated by GSL use a formal syntax to describe parameter modes.
In the next article, we're going to discuss about GSL Documentation and Test Example.
|Python AdaBoost Mathematics Behind AdaBoost||421||1|
|Python PyCaret How to optimize the probability threshold % in binary classification||2068||0|
|Python K-means Predicting Iris Flower Species||1321||2|
|Python PyCaret How to ignore certain columns for model building||2624||0|
|Python PyCaret Experiment Logging||679||0|
|Python PyWin32 Open a File in Excel||940||0|
|Python Guppy GSL Introduction||219||2|
|Python Usage of Guppy With Example||1100||2|
|Python Naive Bayes Tutorial||552||2|
|Python Guppy Recent Memory Usage of a Program||892||2|
|Introduction to AdaBoost||289||1|
|Python AdaBoost Implementation of AdaBoost||512||1|
|Python AdaBoost Advantages and Disadvantages of AdaBoost||3713||1|
|Python K-Means Clustering Applications||332||2|
|Python Random Forest Algorithm Decision Trees||439||0|
|Python K-means Clustering PREDICTING IRIS FLOWER SPECIES||456||1|
|Python Random Forest Algorithm Bootstrap||475||0|
|Python PyCaret Util Functions||441||0|
|Python K-means Music Genre Classification||1763||1|
|Python PyWin Attach an Excel file to Outlook||1540||0|
|Python Guppy GSL Document and Test Example||248||2|
|Python Random Forest Algorithm Bagging||386||0|
|Python AdaBoost An Example of How AdaBoost Works||279||1|
|Python PyWin32 Getting Started PyWin32||602||0|
|Python Naive Bayes in Machine Learning||374||2|
|Python PyCaret How to improve results from hyperparameter tuning by increasing "n_iter"||1723||0|
|Python PyCaret Getting Started with PyCaret 2.0||356||1|
|Python PyCaret Tune Model||1325||1|
|Python PyCaret Create your own AutoML software||320||0|
|Python PyCaret Intoduction to PyCaret||295||1|
|Python PyCaret Compare Models||2696||1|
|Python PyWin Copying Data into Excel||1152||0|
|Python Guppy Error: expected function body after function declarator||413||2|
|Python Coding Random forest classifier using xgBoost||246||0|
|Python PyCaret How to tune "n parameter" in unsupervised experiments||658||0|
|Python PyCaret How to programmatically define data types in the setup function||1402||0|
|Python PyCaret Ensemble Model||805||1|
|Python Random forest algorithm Introduction||227||0|
|Python k-means Clustering Example||337||1|
|Python PyCaret Plot Model||1243||1|
|Python Hamming Distance||714||0|
|Python Understanding Random forest algorithm||309||0|
|Python PyCaret Sort a Dictionary by Keys||243||0|
|Python Coding Random forest classifier using sklearn||340||0|
|Python Guppy Introduction||368||2|
|Python How to use Guppy/Heapy for tracking down Memory Usage||1068||2|
|Python AdaBoost Summary and Conclusion||231||1|
|Python PyCaret Create Model||365||1|
|Python k -means Clusturing Introduction||325||2|
|Python k-means Clustering With Example||348||2|