ASML is a software specification language based on abstract state machine, asm. It developed and maintained by the Microsoft Institute's software engineering base team, the current version is ASML2 (ASML for Microsoft.net), which can be embedded in Microsoft Word and Microsoft Visual Studio.NET, and can compile execution in .NET Environment . You can find it in the following address: http://research.microsoft.com/foundations/ASML/
ASML creates a system-readable, a model of human-readable, a machine executable, a Machine-Executable, a model, which is aware of the Machine-Executable. This specifications written with ASML are called executable specifications.
The executable specifications have several extraordinary features:
First, the ASML model can run as analog programs they describe. This means that the development team can even check their design and expectations before you don't write any code. However, the ASML model is not just a primitive system or a reference implementation, as it completely describes details of the selected design level. In other words, an appropriately built ASML model can tell us that a correct implementation must be done (Must), what can be done (Must Not).
Second, the ASML model can perform parallel with the implementation of the system it described, to check if the implementation is consistent with the specification. This can not only check the implementation, but also ensure that the specifications are updated in time.
Third, ASML has strict requirements for algorithm test use cases and model inspections and certifications in most cases.
As traditional software specifications, executive specifications also describe how software components work. But unlike traditional specifications, the executable specifications have a single, clear meaning. This meaning is presented in the situation of the mathematical model of the abstract state machine, the system development.
For example, the ASML specification can operate as a program to simulate how a system is active, or check whether an implementation is consistent with a specification. However, unlike traditional procedures, the executive specifications are intentionally maintained minimal. In other words, although their description is detailed, it is not very long, all things are part of the selected level.
Therefore, unlike traditional procedures, executable specifications are used to define their own constraints and behaviors, which are common constraints and behaviors that have all correct implementations in the system. For example, executable specifications do not limit the order of operation, unless the order is important. The traditional program will make a key decision when the command sequence is implemented. You can view the following example:
IN-Place Sorting
Var a = [3, 10, 5, 7, 1]
INDices = {0, 1, 2, 3, 4}
Main ()
Step unsil fixpoint
Choose I in INDices, J in Indices
WHERE I
A (i): = a (j)
A (j): = a (i)
STEP
WriteLine (a) // Prints [1, 3, 5, 7, 10]
This executable specification implements in-place sorting through a Single-SWAP algorithm using an abstract state machine.
The machine performs a series of sequential steps to exchange values in A. The elements in A are represented by index I and j, so that i is less than j and A (i) is greater than A (J). The exchange continues until the conditions are not established, that is, the entire sequence is arranged in sequence. The last step prints the arrangement of a good sequence. Each step is determined by the value of the A sequence of the step. The size of the specification is the smallest. First, the Choose expression does not say how to choose two indexes, just limit the selection of two indexes, must meet i
In general, ASML specifications are an ideal way for team design decision-making. At the same time, procedural managers, developers, and testers can use ASML specifications to reach a single and unified understanding of design.
This article is intended to introduce ASML. Since the author has just contacted ASML shortly, the mistakes in the text are inevitable. In case of unknown, I believe it can be recruited from the relevant website of the Microsoft Research Institute. For more detailed understanding of ASML, you can refer to "ASML: The Abstract State Machine Language", which can also be found on the Microsoft Institute's website.