Especificaciones afiladas
Spec# es un lenguaje de programación con soporte para funciones de lenguaje de especificación que amplían las capacidades del lenguaje de programación C# con programación por contrato , como se hace en el lenguaje Eiffel , incluidas las invariantes de objetos , las condiciones previas y las posteriores. Al igual que ESC/Java , el lenguaje contiene un verificador estático de prueba de teoremas que permite que la mayoría de las invariantes se verifiquen estáticamente. También incluye muchas otras adiciones menores, como tipos de referencia no nulos.
Microsoft Research desarrolló los lenguajes Spec# y C# . Spec# también sirvió como base para la creación del lenguaje Sing# , también desarrollado por Microsoft Research.
Ejemplo
Este ejemplo demuestra dos estructuras básicas que se utilizan al agregar contratos a su código.
static void Main ( cadena ! [] argumentos )
requiere argumentos . Longitud > 0
{
foreach ( string arg en args )
{
Console . WriteLine ( arg );
}
}
- ! se utiliza para crear un tipo de referencia no nulo, lo que significa que no puede asignarle un valor nulo. Esto es diferente a los tipos nulos, que permiten asignarles valores nulos .
- requiere ("requiere") significa una condición que se cumple en el código dado. En este caso, la longitud de los argumentos no debe ser cero o menor.
Fuentes
- Barnett, M., KRM Leino, W. Schulte, "El sistema de programación Spec#: una descripción general". Actas de Construcción y Análisis de Dispositivos Inteligentes Seguros, Seguros e Interoperables (CASSIS) , Marsella. Springer Ciencia+Medios comerciales , 2004.
Véase también
Fuentes adicionales
Investigación de Microsoft (MSR) |
---|
Principales proyectos | |
---|
Laboratorios MSR | laboratorios | Actual |
- Pivote
- Dragón marino
- acercamiento profundo
- DeepZoomPix
|
---|
interrumpido |
- pez profundo
- listas
- Portapapeles en vivo
- fotosíntesis
- voltaje
|
---|
|
---|
laboratorios |
|
---|
Otras divisiones |
|
---|
|
---|
Categoría |