1 |
An Arrow Metalanguage for Partially Invertible Computation / Ett Arrow-metaspråk för partiellt inverterbar beräkningÅgren Thuné, Anders January 2023 (has links)
Programming languages traditionally describe computations going one way: a program might compute a hash value from a string, or an encrypted message from a plaintext. However, sometimes it is also of interest to go the other way around: for encryption, we not only want to encrypt messages but also to decrypt them, and to be sure that the decryption correctly reproduces the original message. In an invertible programming language, a single program specifies two directions of a transformation, and the language guarantees that the two correspond as inverses. Invertible languages often require programs to be composed from atomic invertible fragments, a property known as local invertibility. This requirement has connections to applications such as low-energy and quantum computing. However, many invertible algorithms are more naturally expressed as depending unidirectionally on some inputs, e.g., the encryption key—this property is known as partial invertibility. Existing work largely lacks a systematic treatment of partial invertibility, and the connection to the locally invertible paradigm is not yet well-understood. In this thesis, we show that with the right design tradeoff, partial invertibility can be expressed within a locally invertible setting. We present KALPIS, a new functional language supporting expressive partial invertibility, yet maintaining a straightforward locally invertible semantics. This is made formal by a novel arrow combinator language RRARR, with primitives embodying functions, parameterized bijections, and interactions between the two. The formulation is based on recent work on effects in invertible computation, namely the irreversibility effect and the reversible reader. We substantiate the work with a prototype implementation of KALPIS, and demonstrate its utility through a number of nontrivial examples. Further, we give a complete formalization of the two systems, including the operational semantics and type system of KALPIS and a locally invertible interpretation and equational characterization of RRARR. Finally, we give a compositional translation from KALPIS into RRARR, motivating us to call it an arrow metalanguage. Most of the formalization is mechanized using the proof assistant Agda. / Programmeringsspråk beskriver traditionellt beräkningar som går åt ett håll: ett program kan till exempel beräkna ett hash-värde från en sträng eller ett krypterat meddelande från en klartext. Ibland är det dock även av intresse att gå åt andra hållet: vid kryptering vill vi inte bara kryptera meddelanden utan också avkryptera dem, och vara säkra på att avkrypteringen korrekt återskapar det ursprungliga meddelandet. I ett inverterbart programmeringsspråk beskriver ett enskilt program två riktningar av en transformation, och språket garanterar att de två motsvarar varandra som inverser. Inverterbara språk kräver ofta att program konstrueras från enskilt inverterbara komponenter, en egenskap som kallas lokal inverterbarhet. Denna egenskap har kopplingar till tillämpningar som lågenergioch kvantdatorer. Å andra sidan är det ofta naturligt att inverterbara algoritmer beror enkelriktat på vissa indata, till exempel krypteringsnyckeln—något som kallas partiell inverbarhet. Tidigare forskning saknar i stor utsträckning en systematisk behandling av partiell inverterbarhet, och kopplingen till lokal inverterbarhet är ännu inte välförstådd. I denna avhandling visar vi att med rätt designavvägning kan partiell inverterbarhet uttryckas ovanpå en lokalt inverterbar grund. Vi presenterar KALPIS, ett nytt funktionellt språk som stöder uttrycksfull partiell inverterbarhet, samtidigt som det bibehåller en enkel lokalt inverterbar semantik. Detta formaliseras genom ett nytt Arrow-kombinatorspråk RRARR, vars primitiver representerar funktioner, parameteriserade bijektioner och interaktioner mellan de två. Formuleringen baseras på ny forskning om sidoeffekter i inverterbar beräkning, nämligen irreversibilitetseffekten och reversible reader. Vi substantierar arbetet med en prototypimplementation av KALPIS och visar dess användbarhet genom ett antal icketriviala exempel. Dessutom ger vi en komplett formalisering av de två systemen, inklusive operativ semantik och typsystem för KALPIS och en lokalt inverterbar tolkning och ekvationskaraktärisering av RRARR. Slutligen ger vi en kompositionell översättning från KALPIS till RRARR, vilket motiverar oss att kalla det ett Arrow-metaspråk. Det mesta av formaliseringen är mekaniserad med hjälp av bevisassistenten Agda.
|
2 |
Introducing modified TypeScript in an existing framework to improve error handling / Införande av modifierad TypeScript i ett existerande ramverk för att förbättra felhanteringMinder, Patrik January 2016 (has links)
Error messages in compilers is a topic that is often overlooked. The quality of the messages can have a big impact on development time and ease oflearning. Another method used to speed up development is to build a domainspecific language (DSL). This thesis migrates an existing framework to use TypeScript in order to speed up development time with compile-time error handling. Alternative methods for implementing a DSL are evaluated based onhow they affect the ability to generate good error messages. This is done usinga proposed list of six usability heuristics for error messages. They are also usedto perform heuristic evaluation on the error messages in the TypeScript compiler. This showed that it struggled with syntax errors but had semantic errormessages with low amount of usability problems. Finally, a method for implementing a DSL and presenting its error messages is suggested. The evaluationof said method showed promise despite the existence of usability problems. / Felmeddelanden i kompilatorer är ett ämne som ofta förbises. Kvaliténpå felmeddelanden kan ha stor påverkan på utvecklingstid och lätthetatt lära. En annan metod för att sänka utvecklingstid är att bygga ettdomänspecifikt programmeringspråk. Detta examensarbete migrerar ettexisterande ramverk till TypeScript för att snabba på utvecklingstidmed felhantering i kompileringsstadiet. Alternativa metoder för attimplementera ett DSL evalueras baserat på hur de påverkar möjlighetenatt generera bra felmeddelanden. Detta görs med en föreslagen lista avsex heuristiker för felmeddelanden. De används också för att utföra enheuristik utvärdering på felmeddelandena i TypeScriptkompilatorn. Detta visade att den har svårt för syntaxfel men hademeddelanden för semantiska fel med låg mängdanvändbarhetsproblem. Till sist föreslås en metod för att implementeraett DSL och presentera dess felmeddelanden. Evalueringen av den nämndametoden visade lovande resultat trots förekomsten av användbarhetsproblem.
|
3 |
Prototyping a formal system modeling workbench in the java ecosystem : A Domain Specific Language in GroovySavegren, Joakim, Edling, Joar January 2022 (has links)
Modeling is a fundamental property in today’s development of embedded systems. Models of computation enable us to describe the functionality and characteristics of a system on a higher abstraction level which gives the designer great insight in the behavior of the final implemented system at a very early stage in the design process. The ForSyDe modeling framework is based on the Model-of-computation (MoC) theory. Synchronous data-flow (SDF) is one MoC that uses actors and tokens to describe the communication and behavior of a system. Currently, the ForSyDe input modeling language exists only as a Haskell implementation and a System C implementation. The main problem is that the ForSyDe tool ecosystem is implemented across different languages without proper connections between tools. However, a framework to make such connections exists, namely the ForSyDe IO Java supporting library. In addition, any language running on the JVM can already be connected to ForSyDe IO. Hence, the thesis explores how a modeling workbench can be designed as a domain specific language (DSL) in the JVM language Groovy using the Gradle environment. Since there are many modules in the ForSyDe modeling framework, one for each MoC, this thesis targets one module: SDF. This choice is enough to explore whether it is possible to achieve the same modeling that Haskell provides in a JVM language, without sacrificing the user experience while modeling. The resulting Groovy DSL can describe the Synchronous Data-Flow MoC with the purpose of modeling SDF graphs, often used in image processing applications. By using the produced DSL workbench, a designer can model SDF applications in an efficient way. There were some differences when comparing the Groovy DSL to the Haskell implementation, such as the methods for defining actors and connecting them. However, the core modeling concepts are the same. Combining Groovy and Gradle offered an easy way of designing a DSL using the concept of closures. The created Groovy DSL is the first member of a family of textual DSL’s for describing MoC’s and therefore acts as a foundation for future work within the ForSyDe modeling framework. It can be extended to support more modules and functions or to inspire others to develop new DSL’s. / Modellering av system är en grundsten i dagens utveckling av inbyggda system. Beräkningsmodeller möjliggör att beskriva systems egenskaper och funktioner på en hög abstraktionsnivå vilket underlättar den första tiden vid utvecklingen av ett nytt inbyggt system. ForSyDe är ett modelleringsspråk baserat på beräkbarhetsteori. Det synkrona dataflödet (SDF) är en beräkningsmodell som använder sig av aktörer och tokens för att beskriva ett systems kommunikation och bettend. ForSyDe är implementerat i programmeringsspråket Haskell och System C, men är i fortsatt utveckling och grenar ut till andra språk och miljöer. Det huvudsakliga Problemet med ForSyDe är att ramverket saknar bra kopplingar mellan verktygen som erbjuds. Ett ramverk som möjliggör kopplingen mellan verktygen är stöd biblioteket ForSyDe IO och dessutom kan ett språk som kör i Javas virtuella miljö redan kopplas med ForSyDe IO. Därför undersöker uppsatsen hur ett domänspecifikt språk kan skrivas i Groovy i utvecklingsmiljön gradle för att direkt extrahera en ForSyDe IO modell utan att behöva undersöka varje element i modellen. Det finns många moduler i ForSyDe ramverket, en för varje beräkningsmodell och därför menar uppsatsen att undersöka en modul: SDF. Att undersöka SDF modulen anses tillräckligt för att bestämma sig huruvida det är möjligt att uppnå liknande modellering som Haskell erbjuder fast i java miljön, utan att offra användarvänligheten då ett system modelleras. Resultatet blev en Groovy prototyp som kan beskriva SDF-modulen med syftet att modellera SDF-grafer vars funktion ofta används inom bildbehandling. En SDF-graf beskriver ett systems dataflöde och via det resulterande domänspecifika språket kan en utvecklare på ett tillfredsställande sätt beskriva dataflöden i javamiljön. Det visade sig att det resulterande domän specifika språket i Groovy skiljer sig en aning från Haskell i hur man specificerar aktörer och deras kopplingar, men det fundamentala konceptet är detsamma. Groovy i kombination med Gradle erbjöd ett smidigt sätt att programmera ett domänspecifikt språk med hjälp av closures vilket kan användas för framtida bruk inom utvecklingsområdet. Den skapade prototypen är den första medlemmen i en familj av framtida modelleringsspråk som beskriver beräkningsmodeller. Resultatet av projektet utgör en grund för ett fortsatt arbete med att bygga vidare på prototypen, men även för att kunna lägga till fler beräkningsmoduler som i sin tur bidrar med utbyggningen av ramverket ForSyDe.
|
4 |
StrideLang : Creation of a Domain-Specific Threat Modeling Language using STRIDE, DREAD and MAL / StrideLang : Skapandet av ett Domän-Specifikt Hotmodellerings-Språk med STRIDE, DREAD och MALCerovic, Lazar January 2022 (has links)
Cybersecurity is still one of the main challenges of the digital era for organizations and individuals alike. Threat modeling is an important tool for building systems that are reliable and secure. The research question for this study is to create a domain specific language (DSL) with the Meta Attack Language (MAL), STRIDE and DREAD. One of the main challenges is to choose a DSL that is suitable for threat modeling. The purpose of the study is to provide people with threat modeling with additional tools that can be used in attack simulations. MAL is a meta language used for creating DSL that can be used for attack simulations. An example of a MAL project that usually serves as a template for other DSL is coreLang, which models the general IT infrastructure. STRIDE is a model used in threat modeling to enumerate and categorization of cyberthreats. DREAD is a model used for risk assessment that scores each threat by a value between one and ten. The proposed method for answering the research question is the Design Research Science Method (DRSM), which is often used for creating artifacts. Evaluation of the results is done with tests written in Java using the Junit framework. The result of the study is the creation of strideLang that maps attack steps in coreLang (MAL implementation of the general IT infrastructure DSL) to STRIDE and DREAD models. The primary source of error in the investigation is the risk assessment with DREAD, which can be somewhat inaccurate depending on what specific DSL is used. It would have been valuable if the study incorporated feedback from domain experts specifically with risk assessment. The nature of the STRIDE and DREAD models is that the models are very subjective in practice. However, this study does provide insights in how a DSL can be created based on DREAD and STRIDE. Future work might investigate a different DSL, incorporate tools such as SecuriCAD and compare different threat models. / Cybersäkerhet är fortfarande en av de främsta utmaningarna i den digitala eran för såväl organisationer som individer. Hotmodellering är ett viktigt verktyg för att bygga tillförlitliga och säkra system. Huvudmålet för denna studie är att skapa ett domänspecifikt språk (DSL) med Meta Attack Language (MAL), STRIDE och DREAD. En av de främsta utmaningarna för att nå målet med studien är att hitta ett domänspecifikt språk som är lämpligt för denna typ av hotmodellering. Syftet med studien är att förse personer som arbetar med hotmodellering med ytterligare verktyg för att kunna använda i sina attacksimuleringar. MAL är ett metaspråk som används för att skapa domän-specifika språk och utföra attacksimuleringar. Ett exempel på ett MAL projekt som oftast används som en mall för att skapa nya domänspecifika och modellerar den generella IT infrastrukturen. STRIDE modellen används för att lista och kategorisera digitala hot. DREAD brukar användas tillsammans med STRIDE och används för att risk bedöma digitala hot genom att betygsätta hoten med ett värde mellan ett och tio. Den valda metoden för att lösa forskningsfrågan är Design Research Science Method (DSRM), som används oftast i samband med skapandet av artefakter. Evaluering av resultatet gjordes med tester skrivna i Java med ramverket JUnit. Studien resulterade med skapande av strideLang som mappar attack steg i coreLang till STRIDE och DREAD modellerna. Den främsta felkällan i denna studie är riskbedömningen med DREAD eftersom noggrannheten på riskbedömningen kan variera från specifika domän i IT infrastrukturen. Det hade varit värdefullt om studien integrera domänexperters bedömning i studien främst för DREAD bedömningen. STRIDE och DREAD modellerna är subjektiva vilket betyder att olika experter kan komma till olika slutsatser för samma hot. Däremot så kan studien förse med intressanta insikter om hur ett domän-specifikt språk kan skapas baserat på DREAD och STRIDE modellerna. Framtida studier kan undersöka en mer specifik domän inom IT infrastrukturen, integrera verktyg som SecuriCAD och jämföra olika modeller som används inom hotmodelleringen
|
Page generated in 0.0516 seconds